Command line interface from dataclasses-avroschema to work with avsc
resources
python 3.9+
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.avsc
To 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
models
fromschemas
- 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