diff --git a/pyproject.toml b/pyproject.toml index 6aff0df..76db441 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "pydantic_to_pyarrow" -version = "0.1" +version = "0.1.1" description = "Conversion from pydantic models to pyarrow schemas" authors = ["Simon Wicks "] readme = "README.md" diff --git a/src/pydantic_to_pyarrow/__init__.py b/src/pydantic_to_pyarrow/__init__.py index 86b899f..4fcf37e 100644 --- a/src/pydantic_to_pyarrow/__init__.py +++ b/src/pydantic_to_pyarrow/__init__.py @@ -1,6 +1,6 @@ from .schema import SchemaCreationError, get_pyarrow_schema -__version__ = "0.1" +__version__ = "0.1.1" __all__ = [ "__version__", diff --git a/src/pydantic_to_pyarrow/py.typed b/src/pydantic_to_pyarrow/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/src/pydantic_to_pyarrow/schema.py b/src/pydantic_to_pyarrow/schema.py index d3d5b34..d5bb101 100644 --- a/src/pydantic_to_pyarrow/schema.py +++ b/src/pydantic_to_pyarrow/schema.py @@ -17,6 +17,7 @@ class SchemaCreationError(Exception): FIELD_MAP = { str: pa.string(), + bytes: pa.binary(), bool: pa.bool_(), float: pa.float64(), datetime.date: pa.date32(), diff --git a/tests/test_schema.py b/tests/test_schema.py index d126cb9..e37caae 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -14,6 +14,7 @@ NaiveDatetime, PositiveInt, StrictBool, + StrictBytes, StrictFloat, StrictInt, StrictStr, @@ -51,6 +52,7 @@ class SimpleModel(BaseModel): b: bool c: int d: float + e: bytes expected = pa.schema( [ @@ -58,13 +60,14 @@ class SimpleModel(BaseModel): pa.field("b", pa.bool_(), nullable=False), pa.field("c", pa.int64(), nullable=False), pa.field("d", pa.float64(), nullable=False), + pa.field("e", pa.binary(), nullable=False), ] ) actual = get_pyarrow_schema(SimpleModel) assert actual == expected - objs = [{"a": "a", "b": True, "c": 1, "d": 1.01}] + objs = [{"a": "a", "b": True, "c": 1, "d": 1.01, "e": b"e"}] new_schema, new_objs = _write_pq_and_read(objs, expected) assert new_schema == expected assert new_objs == objs @@ -76,6 +79,7 @@ class SimpleModel(BaseModel): b: StrictBool c: StrictInt d: StrictFloat + e: StrictBytes expected = pa.schema( [ @@ -83,13 +87,14 @@ class SimpleModel(BaseModel): pa.field("b", pa.bool_(), nullable=False), pa.field("c", pa.int64(), nullable=False), pa.field("d", pa.float64(), nullable=False), + pa.field("e", pa.binary(), nullable=False), ] ) actual = get_pyarrow_schema(SimpleModel) assert actual == expected - objs = [{"a": "a", "b": True, "c": 1, "d": 1.01}] + objs = [{"a": "a", "b": True, "c": 1, "d": 1.01, "e": b"e"}] new_schema, new_objs = _write_pq_and_read(objs, expected) assert new_schema == expected assert new_objs == objs