This release is a pre-release and may not be stable for production use.
Genie
Genie (geniespec on PyPI) generates API code from an api.yaml spec. Install it like any other tool and run it from your build scripts; the generated code is gitignored, not committed.
geniespec build --spec api.yaml --target python-server [--output .]
geniespec watch --spec api.yaml --target python-server [--output .] [-- <command>]
buildwrites the target's package into the output directory, e.g../<service>_api/v<major>/(api,endpoints,resources,internal,exceptions) forpython-server. Only files in that package are touched: changed files are rewritten and files it no longer generates are removed.watchbuilds, then rebuilds whenever the spec changes. If the spec is invalid it logs the error and keeps the previous output. Given a command after--, it runs it once the first build is done, keeps rebuilding while it runs, exits with its exit code and stops it when watch itself is stopped, e.g.geniespec watch --spec api.yaml --target python-server -- uvicorn app:app --reload.- Code run from the output directory imports the package directly, e.g.
from my_service_api.v1 import api. Generatedpython-servercode needskiba-core(core.api,core.util.typing_util),pydanticandstarlette. - The bundled templates are examples of a kibalabs-style target.
Development
make install
make lint-check type-check test
Merges to main publish a dev version to PyPI. To release, bump version in pyproject.toml in a PR, then run the Release workflow on main (Actions → Release → Run workflow). It tags vX.Y.Z and the Publish workflow publishes it. Only the release workflow can push version tags.
Things that need work
Typing of params and fields in general
Enum and OneOf not supported yet
I think we need to create an object for Type. what would it look like?
class BaseFieldType:
isNullable: bool
class RawFieldType(BaseFieldType):
name: str
class ClassFieldType(BaseFieldType):
fieldType: RawFieldType
class ListFieldType:(BaseFieldType)
fieldType: RawFieldType
isNullable: bool
class MappingFieldType(BaseFieldType):
keyFieldType: RawFieldType
valueFieldType: RawFieldType
class OneOfFieldType(BaseFieldType):
fieldTypes: list[RawFieldType]
class EnumFieldType(BaseFieldType):
values: list[str]
Metadata
Release files for geniespec 0.1.1.dev3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| geniespec-0.1.1.dev3.tar.gz | 18.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| geniespec-0.1.1.dev3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.3 kB
Release files / geniespec-0.1.1.dev3.tar.gz
| Download URL | geniespec-0.1.1.dev3.tar.gz |
|---|---|
| Size | 18.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f400d7ad0f6c7e3fa2649747d8db9e08f49460e3938866084129cb854d0b6ad8
|
|
BLAKE2b-256 checksum How to use checksums |
aac37fbacb1ddb62435b81c0480483a1050fd6d8a8a87dbd8baa5742375d39aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / geniespec-0.1.1.dev3-py3-none-any.whl
| Download URL | geniespec-0.1.1.dev3-py3-none-any.whl |
|---|---|
| Size | 25.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
30cfce7ecef371ef58ddd2debdd3ec90b878a1d17c59c6a49bbaf338ce207143
|
|
BLAKE2b-256 checksum How to use checksums |
bd15ae6baba6284dc9f2e2b2ae790ed92de37c3d2d994303893219eb24d93c6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for geniespec 0.1.1.dev3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.