Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dapplion/pyspec2openapi
Convert ethereum/consensus-specs types into an OpenAPI types schema
https://github.com/dapplion/pyspec2openapi
Last synced: about 19 hours ago
JSON representation
Convert ethereum/consensus-specs types into an OpenAPI types schema
- Host: GitHub
- URL: https://github.com/dapplion/pyspec2openapi
- Owner: dapplion
- Created: 2024-01-05T06:18:38.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-08T04:34:08.000Z (12 months ago)
- Last Synced: 2024-12-28T06:47:56.839Z (10 days ago)
- Language: Python
- Homepage:
- Size: 62.5 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# pyspec2openapi
Tool to convert the types defined in the Ethereum python specs https://github.com/ethereum/consensus-specs to an OpenAPI definition, for https://github.com/ethereum/beacon-APIs. This tool facilitates manteinance of the OpenAPI spec and follows the canonical JSON mapping from https://github.com/ethereum/consensus-specs/pull/3506
## Usage
Install from PyPI
```
pip install pyspec2openapi
```Create a `config.yml` file
```yaml
spec_version: v1.4.0-beta.5
sources:
phase0:
- {spec: beacon-chain.md}
- {spec: validator.md}
- {file: extra_types/phase0.md}
altair:
- {spec: beacon-chain.md}
- {spec: validator.md}
- {spec: light-client/sync-protocol.md}
- {file: extra_types/altair.md}
bellatrix:
- {spec: beacon-chain.md}
- {spec: validator.md}
- {file: extra_types/bellatrix.md}
capella:
- {spec: beacon-chain.md}
- {spec: validator.md}
- {spec: light-client/sync-protocol.md}
deneb:
- {spec: polynomial-commitments.md}
- {spec: beacon-chain.md}
- {spec: validator.md}
- {spec: p2p-interface.md}
- {spec: light-client/sync-protocol.md}
- {file: extra_types/deneb.md}
generate_blinded_types: [bellatrix, capella, deneb]
ignore_classnames:
- LightClientStore
exclude_comments:
- '\[New [^\]]*\]'
- '\[Modified [^\]]*\]'
```- `spec_version`: Specific Github tag from the `ethereum/consensus-specs` repo to fetch sources from
- `sources`: Topologically sorted list of fork and files to fetch types from. This tool can topologically sort types within the same markdown file, but not across them.
- `generate_blinded_types`: Auto-generate the types `BlindedBeaconBlockBody`, `BlindedBeaconBlock`, and `SignedBlindedBeaconBlock` for a specific set of forks.
- `ignore_classnames`: Ignore container code blocks with this list of names
- `exclude_comments`: Ignore comments for container properties that match any of this regexGenerate types spec
```
pyspec2openapi config.yml out.yml
```Review an example output with an [example config](./pyspec2openapi/tests/example_config.yml) in [./pyspec2openapi/tests/example_specs_out.yml](./pyspec2openapi/tests/example_specs_out.yml)