Command line interface from dataclasses-avroschema to work with avsc resources
python 3.10+
https://marcosschroh.github.io/dc-avro/
You can validate one avro schema either from a local file or url:
Assuming that we have a local file schema.avsc that contains an avro schema, we can check whether it is valid
dc-avro validate-schema --path schema.avsc
Valid schema!! 👍
{
'type': 'record',
'name': 'UserAdvance',
'fields': [
{'name': 'name', 'type': 'string'},
{'name': 'age', 'type': 'long'},
{'name': 'pets', 'type': {'type': 'array', 'items': 'string', 'name': 'pet'}},
{'name': 'accounts', 'type': {'type': 'map', 'values': 'long', 'name': 'account'}},
{'name': 'favorite_colors', 'type': {'type': 'enum', 'name': 'FavoriteColor', 'symbols': ['BLUE', 'YELLOW', 'GREEN']}},
{'name': 'has_car', 'type': 'boolean', 'default': False},
{'name': 'country', 'type': 'string', 'default': 'Argentina'},
{'name': 'address', 'type': ['null', 'string'], 'default': None},
{'name': 'md5', 'type': {'type': 'fixed', 'name': 'md5', 'size': 16}}
]
}You can validate several .avsc files with lint command
dc-avro lint tests/schemas/example.avsc tests/schemas/example_v2.avsc
👍 Total valid schemas: 2
tests/schemas/example.avsc
tests/schemas/example_v2.avscTo see all the commands execute dc-avro --help
Add the following lines to your .pre-commit-config.yaml file to enable avro schemas linting
- repo: https://github.com/marcosschroh/dc-avro.git
rev: 0.7.0
hooks:
- id: lint-avsc
additional_dependencies: [typing_extensions]- Validate
schema - Lint
schemas - Generate
modelsfromschemas - Data deserialization with
schema - Data serialization with
schema - View diff between
schemas - Generate fake data from
schema
- Install requirements:
poetry install - Code linting:
./scripts/format - Run tests:
./scripts/test