Metadata-Version: 2.4
Name: okf-engine
Version: 0.1.0
Summary: Unofficial validator for OKF bundles
Project-URL: Homepage, https://okf.guide
Project-URL: Source, https://github.com/okfguide/okf-engine
Project-URL: Issues, https://github.com/okfguide/okf-engine/issues
Author-email: okfguide <hello@okf.guide>
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: knowledge-catalog,okf,validator
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# okf-engine

Unofficial validator for OKF bundles.

> ### ⚠ This is an independent, unofficial project
>
> **It is not affiliated with, endorsed by, or sponsored by Google.**
>
> "OKF" is the designation of a specification published by Google. It is used
> here descriptively only, to say what this tool works with. We claim no rights
> in that name, no trademark, and no authority over the specification. We do not
> speak for its authors.
>
> The specification lives here, published independently of us:
> <https://github.com/GoogleCloudPlatform/knowledge-catalog>
>
> Where this tool and the specification disagree, **the specification is right
> and this tool is wrong.** Please report it.

## Install

```bash
pip install okf-engine
```

## Use

```bash
okf-engine bundle.json
okf-engine bundle.json --json
```

Exit codes: `0` the bundle passes, `1` a rule is violated, `2` the file
could not be read. A gate that reports success on a file it failed to read
is worse than no gate at all.

```python
from okf_engine import check

check({"x-op:class": "public", "x-op:lang": "es-CL", "x-op:overlay": "language"})
# []
```

## Rules in 0.1.0

| Id | Checks |
|---|---|
| `R001` | required fields `x-op:class`, `x-op:lang`, `x-op:overlay` are present |
| `R002` | `x-op:lang` looks like a language code, not free text |
| `R003` | `x-op:class` is one of `public`, `internal`, `restricted` |

Rule ids are permanent. A retired rule keeps its number so that references
to it stay honest.

A JavaScript implementation with identical behaviour is published as
`okf-engine` on npm. Both are driven by the same fixtures and checked
against each other on every change.

## License

Apache-2.0. See `LICENSE` and `NOTICE`.
