Skip to content

Pandera v0.23+ compatibility #2120

@visr

Description

@visr

Two new releases of dependencies break the latest release of Ribasim Python.

New error on string literal syntax in sqlite 3.49. Fixed in 951ff5d.
For now users must pixi add sqlite=3.48, which is done in Ribasim-NL.

Pydantic 0.23 breaks Ribasim Python, some error related to to_schema. For now users must pixi add pandera=0.22, which is done in Ribasim-NL, and Ribasim, until we can fix this. For this we need to allow pandera upgrades in our pixi.toml again.

We could modify our upper bounds in the conda-feedstock, but since we'll probably make a release soon let's just document, fix and release. The pandera fix might require at least 0.23.

I see it is caused by unionai-oss/pandera#1904

python\ribasim\tests\conftest.py:2: in <module>
    import ribasim
python\ribasim\ribasim\__init__.py:9: in <module>
    from ribasim.config import Allocation, Logging, Node, Solver  # noqa: E402
python\ribasim\ribasim\config.py:13: in <module>
    from ribasim.geometry import BasinAreaSchema, NodeTable
python\ribasim\ribasim\geometry\__init__.py:2: in <module>
    from ribasim.geometry.link import LinkTable
python\ribasim\ribasim\geometry\link.py:18: in <module>
    from ribasim.input_base import SpatialTableModel
python\ribasim\ribasim\input_base.py:264: in <module>
    class TableModel(FileModel, Generic[TableT]):
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_model_construction.py:224: in __new__
    complete_model_class(
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_model_construction.py:602: in complete_model_class
    schema = cls.__get_pydantic_core_schema__(cls, handler)
.pixi\envs\default\Lib\site-packages\pydantic\main.py:702: in __get_pydantic_core_schema__
    return handler(source)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_schema_generation_shared.py:84: in __call__
    schema = self._handler(source_type)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:610: in generate_schema
    schema = self._generate_schema_inner(obj)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:879: in _generate_schema_inner
    return self._model_schema(obj)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:691: in _model_schema
    {k: self._generate_md_field_schema(k, v, decorators) for k, v in fields.items()},
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:1071: in _generate_md_field_schema
    common_field = self._common_field_schema(name, field_info, decorators)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:1263: in _common_field_schema
    schema = self._apply_annotations(
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:2056: in _apply_annotations
    schema = get_inner_schema(source_type)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_schema_generation_shared.py:84: in __call__
    schema = self._handler(source_type)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:2131: in new_handler
    schema = metadata_get_schema(source, get_inner_schema)
.pixi\envs\default\Lib\site-packages\pydantic\functional_validators.py:124: in __get_pydantic_core_schema__
    schema = handler(source_type)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_schema_generation_shared.py:84: in __call__
    schema = self._handler(source_type)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:2037: in inner_handler
    schema = self._generate_schema_inner(obj)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:884: in _generate_schema_inner
    return self.match_type(obj)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:986: in match_type
    return self._match_generic_type(obj, origin)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:1014: in _match_generic_type
    return self._union_schema(obj)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:1325: in _union_schema
    choices.append(self.generate_schema(arg))
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:610: in generate_schema
    schema = self._generate_schema_inner(obj)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:884: in _generate_schema_inner
    return self.match_type(obj)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:986: in match_type
    return self._match_generic_type(obj, origin)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:1007: in _match_generic_type
    from_property = self._generate_schema_from_property(origin, obj)
.pixi\envs\default\Lib\site-packages\pydantic\_internal\_generate_schema.py:759: in _generate_schema_from_property
    schema = get_schema(
.pixi\envs\default\Lib\site-packages\pandera\typing\pandas.py:192: in __get_pydantic_core_schema__
    schema = schema_model.to_schema()
E   AttributeError: 'typing.TypeVar' object has no attribute 'to_schema'

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency filepythonRelates to one of the Ribasim python packages

    Type

    Projects

    Status

    ✅ Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions