Skip to main content

Generate Apache Avro schemas for Pydantic data models.

Project description

pydantic2avro

Generate Apache Avro schemas from Pydantic data models.

Install

pip install pydantic2avro

Example

  • Create a file main.py with:
from pprint import pprint
from uuid import UUID

from pydantic import BaseModel
from pydantic2avro import PydanticToAvroSchemaMaker


class User(BaseModel):
    id: UUID
    name: str
    age: int

schema = PydanticToAvroSchemaMaker(User).get_schema()
pprint(schema)
  • Run it
$ python main.py 
{'fields': [{'name': 'id', 'type': {'logicalType': 'uuid', 'type': 'string'}},
            {'name': 'name', 'type': 'string'},
            {'name': 'age', 'type': 'long'}],
 'name': 'User',
 'type': 'record'}
$

Developing

Install package
  • Requirement: Poetry 1.*
$ git clone https://github.com/Happy-Kunal/pydantic2avro
$ cd pydantic2avro/
$ poetry install
Run unit tests
$ pytest
$ coverage run -m pytest  # with coverage

# or (depends on your local env) 
$ poetry run pytest
$ poetry run coverage run -m pytest  # with coverage

Features

  • Primitive types: int, long, double, float, boolean, string and null support
  • Complex types: enum, array, map, fixed, unions and records support
  • Logical Types: date, duration, time (millis and micro), datetime (millis and micro), uuid support
  • Recursive Schemas
  • Generate json from pydantic class instance

TODO:

  • write better tests.
  • increase test coverage from 92% to atleast 99%.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic2avro-0.4.1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

pydantic2avro-0.4.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file pydantic2avro-0.4.1.tar.gz.

File metadata

  • Download URL: pydantic2avro-0.4.1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.1 CPython/3.12.4 Linux/6.10.3-200.fc40.x86_64

File hashes

Hashes for pydantic2avro-0.4.1.tar.gz
Algorithm Hash digest
SHA256 fe719b153645e642903d5e9cf7dd9eb9c54ca951baa11d9a9b2e7e7fb4e915cb
MD5 0ada556ee62eadb98f143b70693dfabe
BLAKE2b-256 d68457e01a9dc1316f7389eb05e32a1d113da4891a841be5efdecf70f0decd77

See more details on using hashes here.

File details

Details for the file pydantic2avro-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: pydantic2avro-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.1 CPython/3.12.4 Linux/6.10.3-200.fc40.x86_64

File hashes

Hashes for pydantic2avro-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 10266d50f86a9daac66b4d5c7730c57b713a0291f8fe0b23511cfe650c485c8b
MD5 355f5f6d7b3c337a6e423d2371dc0dde
BLAKE2b-256 6b37b95c82264b77c09afaaf05a4cd020026df6aca4eea733f5e025da4abbbf6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page