From 50949b0b8d00c4ec614fa2f908a06367bc0acd06 Mon Sep 17 00:00:00 2001 From: Niels Bantilan Date: Tue, 16 Jul 2024 08:41:47 -0400 Subject: [PATCH] Update docs: setup deps for algolia, modify pandera banner, fix API ref (#1741) * fix typing docs Signed-off-by: cosmicBboy * add algolia docsearch to docs Signed-off-by: cosmicBboy * clean up docs, dont use algolia yet Signed-off-by: cosmicBboy --------- Signed-off-by: cosmicBboy --- README.md | 2 +- ...nts-py3.10-pandas1.5.3-pydantic1.10.11.txt | 34 ++-- ...ments-py3.10-pandas1.5.3-pydantic2.3.0.txt | 34 ++-- ...nts-py3.10-pandas2.2.2-pydantic1.10.11.txt | 155 +++++++++--------- ...ments-py3.10-pandas2.2.2-pydantic2.3.0.txt | 155 +++++++++--------- ...nts-py3.11-pandas1.5.3-pydantic1.10.11.txt | 32 ++-- ...ments-py3.11-pandas1.5.3-pydantic2.3.0.txt | 32 ++-- ...nts-py3.11-pandas2.2.2-pydantic1.10.11.txt | 153 ++++++++--------- ...ments-py3.11-pandas2.2.2-pydantic2.3.0.txt | 153 ++++++++--------- ...ents-py3.8-pandas1.5.3-pydantic1.10.11.txt | 30 ++-- ...ements-py3.8-pandas1.5.3-pydantic2.3.0.txt | 30 ++-- ...ents-py3.9-pandas1.5.3-pydantic1.10.11.txt | 34 ++-- ...ements-py3.9-pandas1.5.3-pydantic2.3.0.txt | 34 ++-- ...ents-py3.9-pandas2.2.2-pydantic1.10.11.txt | 155 +++++++++--------- ...ements-py3.9-pandas2.2.2-pydantic2.3.0.txt | 155 +++++++++--------- dev/requirements-3.10.txt | 44 ++--- dev/requirements-3.11.txt | 42 ++--- dev/requirements-3.8.txt | 34 ++-- dev/requirements-3.9.txt | 44 ++--- docs/source/_static/default.css | 30 +++- docs/source/_static/pandera-banner.png | Bin 37810 -> 64448 bytes docs/source/_templates/class.rst | 9 +- docs/source/conf.py | 56 ++++++- docs/source/dataframe_models.md | 2 +- docs/source/dataframe_schemas.md | 14 +- docs/source/index.md | 2 +- docs/source/reference/core.rst | 2 + environment.yml | 1 + pandera/api/dataframe/components.py | 2 +- pandera/api/dataframe/container.py | 53 +++--- requirements.in | 1 + 31 files changed, 828 insertions(+), 696 deletions(-) diff --git a/README.md b/README.md index 38afc860c..3e31275c7 100644 --- a/README.md +++ b/README.md @@ -274,4 +274,4 @@ consider citing the **paper** and/or **software package**. ## License and Credits `pandera` is licensed under the [MIT license](license.txt) and is written and -maintained by Niels Bantilan (niels@pandera.ci) +maintained by Niels Bantilan (niels@union.ai) diff --git a/ci/requirements-py3.10-pandas1.5.3-pydantic1.10.11.txt b/ci/requirements-py3.10-pandas1.5.3-pydantic1.10.11.txt index 49f0d5a19..00702949a 100644 --- a/ci/requirements-py3.10-pandas1.5.3-pydantic1.10.11.txt +++ b/ci/requirements-py3.10-pandas1.5.3-pydantic1.10.11.txt @@ -33,7 +33,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -65,7 +65,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2024.2.1 # via distributed @@ -88,7 +88,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -131,8 +131,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -180,7 +180,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -256,7 +256,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -304,7 +304,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -315,7 +315,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -389,8 +389,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -414,12 +414,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -452,11 +452,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -497,7 +499,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -530,7 +532,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # anyio @@ -559,7 +561,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/ci/requirements-py3.10-pandas1.5.3-pydantic2.3.0.txt b/ci/requirements-py3.10-pandas1.5.3-pydantic2.3.0.txt index 2b17eff08..e5c5fb0d3 100644 --- a/ci/requirements-py3.10-pandas1.5.3-pydantic2.3.0.txt +++ b/ci/requirements-py3.10-pandas1.5.3-pydantic2.3.0.txt @@ -35,7 +35,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,7 +67,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2024.2.1 # via distributed @@ -90,7 +90,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -133,8 +133,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -182,7 +182,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -258,7 +258,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -306,7 +306,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -317,7 +317,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -393,8 +393,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -418,12 +418,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -456,11 +456,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -501,7 +503,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -534,7 +536,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # anyio @@ -564,7 +566,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/ci/requirements-py3.10-pandas2.2.2-pydantic1.10.11.txt b/ci/requirements-py3.10-pandas2.2.2-pydantic1.10.11.txt index 07c5dd86e..14e9610e6 100644 --- a/ci/requirements-py3.10-pandas2.2.2-pydantic1.10.11.txt +++ b/ci/requirements-py3.10-pandas2.2.2-pydantic1.10.11.txt @@ -16,7 +16,7 @@ astroid==2.15.8 asttokens==2.4.1 # via stack-data asv==0.6.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i asv-runner==0.2.1 # via asv attrs==23.2.0 @@ -32,10 +32,10 @@ backports-tarfile==1.2.0 beautifulsoup4==4.12.3 # via furo black==24.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,14 +67,14 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -84,8 +84,8 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf +distributed==2024.7.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -96,7 +96,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -107,7 +107,7 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -117,7 +117,7 @@ filelock==3.15.4 # ray # virtualenv frictionless==4.40.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i frozenlist==1.4.1 # via # aiosignal @@ -127,13 +127,13 @@ fsspec==2024.6.1 # dask # modin furo==2024.5.6 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i geopandas==1.0.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i greenlet==3.0.3 # via sqlalchemy grpcio==1.64.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i h11==0.14.0 # via # httpcore @@ -144,9 +144,9 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf -identify==2.5.36 +hypothesis==6.108.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -158,7 +158,7 @@ imagesize==1.4.1 # via sphinx importlib-metadata==8.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # asv-runner # dask # jupyter-cache @@ -177,7 +177,7 @@ isodate==0.6.1 # via frictionless isort==5.13.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # pylint jaraco-classes==3.4.0 # via keyring @@ -195,10 +195,10 @@ jinja2==3.1.4 # myst-parser # sphinx joblib==1.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -245,7 +245,7 @@ mdit-py-plugins==0.4.1 mdurl==0.1.2 # via markdown-it-py modin==0.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i more-itertools==10.3.0 # via # jaraco-classes @@ -255,16 +255,16 @@ msgpack==1.0.8 # distributed # ray multimethod==1.10 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i mypy==1.10.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i mypy-extensions==1.0.0 # via # black # mypy # typing-inspect myst-nb==1.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i myst-parser==3.0.1 # via myst-nb nbclient==0.10.0 @@ -278,15 +278,15 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit nox==2024.4.15 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i numpy==2.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # dask # geopandas # modin @@ -300,7 +300,7 @@ orjson==3.10.6 # via fastapi packaging==24.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # black # build # dask @@ -315,13 +315,13 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # dask # dask-expr # geopandas # modin pandas-stubs==2.2.2.240603 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i parso==0.8.4 # via jedi partd==1.4.2 @@ -332,8 +332,8 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf +pip==24.1.2 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -344,15 +344,15 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf +polars==1.1.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i pre-commit==3.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i prompt-toolkit==3.0.47 # via ipython protobuf==5.27.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # ray psutil==6.0.0 # via @@ -367,11 +367,11 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # dask-expr pydantic==1.10.11 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # fastapi pygments==2.18.0 # via @@ -381,7 +381,7 @@ pygments==2.18.0 # rich # sphinx pylint==2.17.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i pympler==1.1 # via asv pyogrio==0.9.0 @@ -391,19 +391,19 @@ pyproj==3.6.1 pyproject-hooks==1.1.0 # via build pyspark==3.5.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i pytest==8.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # pytest-asyncio # pytest-cov # pytest-xdist pytest-asyncio==0.23.7 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i pytest-cov==5.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i pytest-xdist==3.6.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i python-dateutil==2.9.0.post0 # via # frictionless @@ -413,17 +413,17 @@ python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # fastapi python-slugify==8.0.4 # via frictionless pytz==2024.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # pandas pyyaml==6.0.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # asv # dask # distributed @@ -438,12 +438,12 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf -readme-renderer==43.0 +ray==2.32.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i +readme-renderer==44.0 # via twine recommonmark==0.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i referencing==0.35.1 # via # jsonschema @@ -465,15 +465,15 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf -shapely==2.0.4 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i +shapely==2.0.5 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # geopandas shellingham==1.5.4 # via typer @@ -498,7 +498,7 @@ soupsieve==2.5 # via beautifulsoup4 sphinx==7.3.7 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # furo # myst-nb # myst-parser @@ -507,14 +507,17 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i sphinx-design==0.6.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i +sphinx-docsearch==0.0.7 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -555,7 +558,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -578,28 +581,28 @@ traitlets==5.14.3 # nbclient # nbformat twine==5.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i typeguard==4.3.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i typer==0.12.3 # via # fastapi-cli # frictionless types-click==7.1.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i types-pkg-resources==0.1.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i types-pytz==2024.1.0.20240417 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # pandas-stubs types-pyyaml==6.0.12.20240311 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf -types-requests==2.32.0.20240622 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i +types-requests==2.32.0.20240712 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i typing-extensions==4.12.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # anyio # astroid # black @@ -614,7 +617,7 @@ typing-extensions==4.12.2 # typing-inspect # uvicorn typing-inspect==0.9.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i tzdata==2024.1 # via pandas ujson==5.10.0 @@ -627,11 +630,11 @@ urllib3==2.2.2 # types-requests uvicorn==0.30.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via @@ -646,10 +649,10 @@ websockets==12.0 # via uvicorn wrapt==1.16.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i # astroid xdoctest==1.1.5 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpim00memf + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpz1de_6_i zict==3.0.0 # via distributed zipp==3.19.2 diff --git a/ci/requirements-py3.10-pandas2.2.2-pydantic2.3.0.txt b/ci/requirements-py3.10-pandas2.2.2-pydantic2.3.0.txt index 13cebd1f9..7c24d7438 100644 --- a/ci/requirements-py3.10-pandas2.2.2-pydantic2.3.0.txt +++ b/ci/requirements-py3.10-pandas2.2.2-pydantic2.3.0.txt @@ -18,7 +18,7 @@ astroid==2.15.8 asttokens==2.4.1 # via stack-data asv==0.6.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 asv-runner==0.2.1 # via asv attrs==23.2.0 @@ -34,10 +34,10 @@ backports-tarfile==1.2.0 beautifulsoup4==4.12.3 # via furo black==24.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -69,14 +69,14 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -86,8 +86,8 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj +distributed==2024.7.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -98,7 +98,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -109,7 +109,7 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -119,7 +119,7 @@ filelock==3.15.4 # ray # virtualenv frictionless==4.40.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 frozenlist==1.4.1 # via # aiosignal @@ -129,13 +129,13 @@ fsspec==2024.6.1 # dask # modin furo==2024.5.6 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 geopandas==1.0.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 greenlet==3.0.3 # via sqlalchemy grpcio==1.64.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 h11==0.14.0 # via # httpcore @@ -146,9 +146,9 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj -identify==2.5.36 +hypothesis==6.108.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -160,7 +160,7 @@ imagesize==1.4.1 # via sphinx importlib-metadata==8.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # asv-runner # dask # jupyter-cache @@ -179,7 +179,7 @@ isodate==0.6.1 # via frictionless isort==5.13.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # pylint jaraco-classes==3.4.0 # via keyring @@ -197,10 +197,10 @@ jinja2==3.1.4 # myst-parser # sphinx joblib==1.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -247,7 +247,7 @@ mdit-py-plugins==0.4.1 mdurl==0.1.2 # via markdown-it-py modin==0.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 more-itertools==10.3.0 # via # jaraco-classes @@ -257,16 +257,16 @@ msgpack==1.0.8 # distributed # ray multimethod==1.10 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 mypy==1.10.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 mypy-extensions==1.0.0 # via # black # mypy # typing-inspect myst-nb==1.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 myst-parser==3.0.1 # via myst-nb nbclient==0.10.0 @@ -280,15 +280,15 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit nox==2024.4.15 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 numpy==2.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # dask # geopandas # modin @@ -302,7 +302,7 @@ orjson==3.10.6 # via fastapi packaging==24.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # black # build # dask @@ -317,13 +317,13 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # dask # dask-expr # geopandas # modin pandas-stubs==2.2.2.240603 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 parso==0.8.4 # via jedi partd==1.4.2 @@ -334,8 +334,8 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj +pip==24.1.2 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -346,15 +346,15 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj +polars==1.1.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 pre-commit==3.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 prompt-toolkit==3.0.47 # via ipython protobuf==5.27.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # ray psutil==6.0.0 # via @@ -369,11 +369,11 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # dask-expr pydantic==2.3.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # fastapi pydantic-core==2.6.3 # via pydantic @@ -385,7 +385,7 @@ pygments==2.18.0 # rich # sphinx pylint==2.17.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 pympler==1.1 # via asv pyogrio==0.9.0 @@ -395,19 +395,19 @@ pyproj==3.6.1 pyproject-hooks==1.1.0 # via build pyspark==3.5.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 pytest==8.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # pytest-asyncio # pytest-cov # pytest-xdist pytest-asyncio==0.23.7 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 pytest-cov==5.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 pytest-xdist==3.6.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 python-dateutil==2.9.0.post0 # via # frictionless @@ -417,17 +417,17 @@ python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # fastapi python-slugify==8.0.4 # via frictionless pytz==2024.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # pandas pyyaml==6.0.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # asv # dask # distributed @@ -442,12 +442,12 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj -readme-renderer==43.0 +ray==2.32.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 +readme-renderer==44.0 # via twine recommonmark==0.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 referencing==0.35.1 # via # jsonschema @@ -469,15 +469,15 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj -shapely==2.0.4 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 +shapely==2.0.5 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # geopandas shellingham==1.5.4 # via typer @@ -502,7 +502,7 @@ soupsieve==2.5 # via beautifulsoup4 sphinx==7.3.7 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # furo # myst-nb # myst-parser @@ -511,14 +511,17 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 sphinx-design==0.6.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 +sphinx-docsearch==0.0.7 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -559,7 +562,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -582,28 +585,28 @@ traitlets==5.14.3 # nbclient # nbformat twine==5.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 typeguard==4.3.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 typer==0.12.3 # via # fastapi-cli # frictionless types-click==7.1.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 types-pkg-resources==0.1.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 types-pytz==2024.1.0.20240417 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # pandas-stubs types-pyyaml==6.0.12.20240311 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj -types-requests==2.32.0.20240622 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 +types-requests==2.32.0.20240712 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 typing-extensions==4.12.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # anyio # astroid # black @@ -619,7 +622,7 @@ typing-extensions==4.12.2 # typing-inspect # uvicorn typing-inspect==0.9.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 tzdata==2024.1 # via pandas ujson==5.10.0 @@ -632,11 +635,11 @@ urllib3==2.2.2 # types-requests uvicorn==0.30.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via @@ -651,10 +654,10 @@ websockets==12.0 # via uvicorn wrapt==1.16.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 # astroid xdoctest==1.1.5 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpevjj4qwj + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpr3k_cks4 zict==3.0.0 # via distributed zipp==3.19.2 diff --git a/ci/requirements-py3.11-pandas1.5.3-pydantic1.10.11.txt b/ci/requirements-py3.11-pandas1.5.3-pydantic1.10.11.txt index a657402d5..3ba935bf8 100644 --- a/ci/requirements-py3.11-pandas1.5.3-pydantic1.10.11.txt +++ b/ci/requirements-py3.11-pandas1.5.3-pydantic1.10.11.txt @@ -33,7 +33,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -65,7 +65,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2024.2.1 # via distributed @@ -125,8 +125,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -174,7 +174,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -250,7 +250,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -298,7 +298,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -309,7 +309,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -383,8 +383,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -408,12 +408,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -446,11 +446,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -482,7 +484,7 @@ text-unidecode==1.3 # via python-slugify tomli==2.0.1 # via asv -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -515,7 +517,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # fastapi @@ -540,7 +542,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/ci/requirements-py3.11-pandas1.5.3-pydantic2.3.0.txt b/ci/requirements-py3.11-pandas1.5.3-pydantic2.3.0.txt index 4c7a7b4c3..451428801 100644 --- a/ci/requirements-py3.11-pandas1.5.3-pydantic2.3.0.txt +++ b/ci/requirements-py3.11-pandas1.5.3-pydantic2.3.0.txt @@ -35,7 +35,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,7 +67,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2024.2.1 # via distributed @@ -127,8 +127,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -176,7 +176,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -252,7 +252,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -300,7 +300,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -311,7 +311,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -387,8 +387,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -412,12 +412,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -450,11 +450,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -486,7 +488,7 @@ text-unidecode==1.3 # via python-slugify tomli==2.0.1 # via asv -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -519,7 +521,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # fastapi @@ -545,7 +547,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/ci/requirements-py3.11-pandas2.2.2-pydantic1.10.11.txt b/ci/requirements-py3.11-pandas2.2.2-pydantic1.10.11.txt index 8a0c70998..e88cd59f0 100644 --- a/ci/requirements-py3.11-pandas2.2.2-pydantic1.10.11.txt +++ b/ci/requirements-py3.11-pandas2.2.2-pydantic1.10.11.txt @@ -16,7 +16,7 @@ astroid==2.15.8 asttokens==2.4.1 # via stack-data asv==0.6.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 asv-runner==0.2.1 # via asv attrs==23.2.0 @@ -32,10 +32,10 @@ backports-tarfile==1.2.0 beautifulsoup4==4.12.3 # via furo black==24.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,14 +67,14 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -84,8 +84,8 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z +distributed==2024.7.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -101,7 +101,7 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -111,7 +111,7 @@ filelock==3.15.4 # ray # virtualenv frictionless==4.40.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 frozenlist==1.4.1 # via # aiosignal @@ -121,13 +121,13 @@ fsspec==2024.6.1 # dask # modin furo==2024.5.6 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 geopandas==1.0.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 greenlet==3.0.3 # via sqlalchemy grpcio==1.64.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 h11==0.14.0 # via # httpcore @@ -138,9 +138,9 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z -identify==2.5.36 +hypothesis==6.108.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -152,7 +152,7 @@ imagesize==1.4.1 # via sphinx importlib-metadata==8.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # asv-runner # dask # jupyter-cache @@ -171,7 +171,7 @@ isodate==0.6.1 # via frictionless isort==5.13.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # pylint jaraco-classes==3.4.0 # via keyring @@ -189,10 +189,10 @@ jinja2==3.1.4 # myst-parser # sphinx joblib==1.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -239,7 +239,7 @@ mdit-py-plugins==0.4.1 mdurl==0.1.2 # via markdown-it-py modin==0.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 more-itertools==10.3.0 # via # jaraco-classes @@ -249,16 +249,16 @@ msgpack==1.0.8 # distributed # ray multimethod==1.10 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 mypy==1.10.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 mypy-extensions==1.0.0 # via # black # mypy # typing-inspect myst-nb==1.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 myst-parser==3.0.1 # via myst-nb nbclient==0.10.0 @@ -272,15 +272,15 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit nox==2024.4.15 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 numpy==2.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # dask # geopandas # modin @@ -294,7 +294,7 @@ orjson==3.10.6 # via fastapi packaging==24.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # black # build # dask @@ -309,13 +309,13 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # dask # dask-expr # geopandas # modin pandas-stubs==2.2.2.240603 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 parso==0.8.4 # via jedi partd==1.4.2 @@ -326,8 +326,8 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z +pip==24.1.2 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -338,15 +338,15 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z +polars==1.1.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 pre-commit==3.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 prompt-toolkit==3.0.47 # via ipython protobuf==5.27.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # ray psutil==6.0.0 # via @@ -361,11 +361,11 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # dask-expr pydantic==1.10.11 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # fastapi pygments==2.18.0 # via @@ -375,7 +375,7 @@ pygments==2.18.0 # rich # sphinx pylint==2.17.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 pympler==1.1 # via asv pyogrio==0.9.0 @@ -385,19 +385,19 @@ pyproj==3.6.1 pyproject-hooks==1.1.0 # via build pyspark==3.5.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 pytest==8.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # pytest-asyncio # pytest-cov # pytest-xdist pytest-asyncio==0.23.7 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 pytest-cov==5.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 pytest-xdist==3.6.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 python-dateutil==2.9.0.post0 # via # frictionless @@ -407,17 +407,17 @@ python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # fastapi python-slugify==8.0.4 # via frictionless pytz==2024.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # pandas pyyaml==6.0.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # asv # dask # distributed @@ -432,12 +432,12 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z -readme-renderer==43.0 +ray==2.32.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 +readme-renderer==44.0 # via twine recommonmark==0.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 referencing==0.35.1 # via # jsonschema @@ -459,15 +459,15 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z -shapely==2.0.4 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 +shapely==2.0.5 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # geopandas shellingham==1.5.4 # via typer @@ -492,7 +492,7 @@ soupsieve==2.5 # via beautifulsoup4 sphinx==7.3.7 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # furo # myst-nb # myst-parser @@ -501,14 +501,17 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 sphinx-design==0.6.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 +sphinx-docsearch==0.0.7 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -540,7 +543,7 @@ text-unidecode==1.3 # via python-slugify tomli==2.0.1 # via asv -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -563,28 +566,28 @@ traitlets==5.14.3 # nbclient # nbformat twine==5.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 typeguard==4.3.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 typer==0.12.3 # via # fastapi-cli # frictionless types-click==7.1.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 types-pkg-resources==0.1.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 types-pytz==2024.1.0.20240417 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # pandas-stubs types-pyyaml==6.0.12.20240311 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z -types-requests==2.32.0.20240622 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 +types-requests==2.32.0.20240712 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 typing-extensions==4.12.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # fastapi # ipython # mypy @@ -595,7 +598,7 @@ typing-extensions==4.12.2 # typer # typing-inspect typing-inspect==0.9.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 tzdata==2024.1 # via pandas ujson==5.10.0 @@ -608,11 +611,11 @@ urllib3==2.2.2 # types-requests uvicorn==0.30.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via @@ -627,10 +630,10 @@ websockets==12.0 # via uvicorn wrapt==1.16.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 # astroid xdoctest==1.1.5 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp6tvswy8z + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp9qfe95c9 zict==3.0.0 # via distributed zipp==3.19.2 diff --git a/ci/requirements-py3.11-pandas2.2.2-pydantic2.3.0.txt b/ci/requirements-py3.11-pandas2.2.2-pydantic2.3.0.txt index df109e93c..7db3d6440 100644 --- a/ci/requirements-py3.11-pandas2.2.2-pydantic2.3.0.txt +++ b/ci/requirements-py3.11-pandas2.2.2-pydantic2.3.0.txt @@ -18,7 +18,7 @@ astroid==2.15.8 asttokens==2.4.1 # via stack-data asv==0.6.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq asv-runner==0.2.1 # via asv attrs==23.2.0 @@ -34,10 +34,10 @@ backports-tarfile==1.2.0 beautifulsoup4==4.12.3 # via furo black==24.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -69,14 +69,14 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -86,8 +86,8 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p +distributed==2024.7.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -103,7 +103,7 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -113,7 +113,7 @@ filelock==3.15.4 # ray # virtualenv frictionless==4.40.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq frozenlist==1.4.1 # via # aiosignal @@ -123,13 +123,13 @@ fsspec==2024.6.1 # dask # modin furo==2024.5.6 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq geopandas==1.0.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq greenlet==3.0.3 # via sqlalchemy grpcio==1.64.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq h11==0.14.0 # via # httpcore @@ -140,9 +140,9 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p -identify==2.5.36 +hypothesis==6.108.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -154,7 +154,7 @@ imagesize==1.4.1 # via sphinx importlib-metadata==8.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # asv-runner # dask # jupyter-cache @@ -173,7 +173,7 @@ isodate==0.6.1 # via frictionless isort==5.13.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # pylint jaraco-classes==3.4.0 # via keyring @@ -191,10 +191,10 @@ jinja2==3.1.4 # myst-parser # sphinx joblib==1.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -241,7 +241,7 @@ mdit-py-plugins==0.4.1 mdurl==0.1.2 # via markdown-it-py modin==0.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq more-itertools==10.3.0 # via # jaraco-classes @@ -251,16 +251,16 @@ msgpack==1.0.8 # distributed # ray multimethod==1.10 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq mypy==1.10.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq mypy-extensions==1.0.0 # via # black # mypy # typing-inspect myst-nb==1.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq myst-parser==3.0.1 # via myst-nb nbclient==0.10.0 @@ -274,15 +274,15 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit nox==2024.4.15 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq numpy==2.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # dask # geopandas # modin @@ -296,7 +296,7 @@ orjson==3.10.6 # via fastapi packaging==24.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # black # build # dask @@ -311,13 +311,13 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # dask # dask-expr # geopandas # modin pandas-stubs==2.2.2.240603 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq parso==0.8.4 # via jedi partd==1.4.2 @@ -328,8 +328,8 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p +pip==24.1.2 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -340,15 +340,15 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p +polars==1.1.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq pre-commit==3.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq prompt-toolkit==3.0.47 # via ipython protobuf==5.27.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # ray psutil==6.0.0 # via @@ -363,11 +363,11 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # dask-expr pydantic==2.3.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # fastapi pydantic-core==2.6.3 # via pydantic @@ -379,7 +379,7 @@ pygments==2.18.0 # rich # sphinx pylint==2.17.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq pympler==1.1 # via asv pyogrio==0.9.0 @@ -389,19 +389,19 @@ pyproj==3.6.1 pyproject-hooks==1.1.0 # via build pyspark==3.5.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq pytest==8.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # pytest-asyncio # pytest-cov # pytest-xdist pytest-asyncio==0.23.7 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq pytest-cov==5.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq pytest-xdist==3.6.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq python-dateutil==2.9.0.post0 # via # frictionless @@ -411,17 +411,17 @@ python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # fastapi python-slugify==8.0.4 # via frictionless pytz==2024.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # pandas pyyaml==6.0.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # asv # dask # distributed @@ -436,12 +436,12 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p -readme-renderer==43.0 +ray==2.32.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq +readme-renderer==44.0 # via twine recommonmark==0.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq referencing==0.35.1 # via # jsonschema @@ -463,15 +463,15 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p -shapely==2.0.4 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq +shapely==2.0.5 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # geopandas shellingham==1.5.4 # via typer @@ -496,7 +496,7 @@ soupsieve==2.5 # via beautifulsoup4 sphinx==7.3.7 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # furo # myst-nb # myst-parser @@ -505,14 +505,17 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq sphinx-design==0.6.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq +sphinx-docsearch==0.0.7 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -544,7 +547,7 @@ text-unidecode==1.3 # via python-slugify tomli==2.0.1 # via asv -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -567,28 +570,28 @@ traitlets==5.14.3 # nbclient # nbformat twine==5.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq typeguard==4.3.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq typer==0.12.3 # via # fastapi-cli # frictionless types-click==7.1.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq types-pkg-resources==0.1.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq types-pytz==2024.1.0.20240417 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # pandas-stubs types-pyyaml==6.0.12.20240311 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p -types-requests==2.32.0.20240622 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq +types-requests==2.32.0.20240712 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq typing-extensions==4.12.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # fastapi # ipython # mypy @@ -600,7 +603,7 @@ typing-extensions==4.12.2 # typer # typing-inspect typing-inspect==0.9.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq tzdata==2024.1 # via pandas ujson==5.10.0 @@ -613,11 +616,11 @@ urllib3==2.2.2 # types-requests uvicorn==0.30.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via @@ -632,10 +635,10 @@ websockets==12.0 # via uvicorn wrapt==1.16.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq # astroid xdoctest==1.1.5 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp7jzfto3p + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp43zj_dvq zict==3.0.0 # via distributed zipp==3.19.2 diff --git a/ci/requirements-py3.8-pandas1.5.3-pydantic1.10.11.txt b/ci/requirements-py3.8-pandas1.5.3-pydantic1.10.11.txt index 6476469ec..d906998dd 100644 --- a/ci/requirements-py3.8-pandas1.5.3-pydantic1.10.11.txt +++ b/ci/requirements-py3.8-pandas1.5.3-pydantic1.10.11.txt @@ -38,7 +38,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # fiona # httpcore @@ -77,7 +77,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2023.5.0 # via distributed @@ -100,7 +100,7 @@ docutils==0.19 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -144,8 +144,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -203,7 +203,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -279,7 +279,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -325,7 +325,7 @@ pexpect==4.9.0 # via ipython pickleshare==0.7.5 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine pkgutil-resolve-name==1.3.10 @@ -338,7 +338,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.5.0 prompt-toolkit==3.0.47 # via ipython @@ -437,12 +437,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.10.1 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -476,11 +476,13 @@ sphinx==5.3.0 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.5.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.4 # via sphinx sphinxcontrib-devhelp==1.0.2 @@ -520,7 +522,7 @@ tomli==2.0.1 # nox # pylint # pytest -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -553,7 +555,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # anyio @@ -586,7 +588,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/ci/requirements-py3.8-pandas1.5.3-pydantic2.3.0.txt b/ci/requirements-py3.8-pandas1.5.3-pydantic2.3.0.txt index ddd009c21..a324362f0 100644 --- a/ci/requirements-py3.8-pandas1.5.3-pydantic2.3.0.txt +++ b/ci/requirements-py3.8-pandas1.5.3-pydantic2.3.0.txt @@ -40,7 +40,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # fiona # httpcore @@ -79,7 +79,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2023.5.0 # via distributed @@ -102,7 +102,7 @@ docutils==0.19 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -146,8 +146,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -205,7 +205,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -281,7 +281,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -327,7 +327,7 @@ pexpect==4.9.0 # via ipython pickleshare==0.7.5 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine pkgutil-resolve-name==1.3.10 @@ -340,7 +340,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.5.0 prompt-toolkit==3.0.47 # via ipython @@ -441,12 +441,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.10.1 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -480,11 +480,13 @@ sphinx==5.3.0 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.5.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.4 # via sphinx sphinxcontrib-devhelp==1.0.2 @@ -524,7 +526,7 @@ tomli==2.0.1 # nox # pylint # pytest -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -557,7 +559,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # annotated-types @@ -592,7 +594,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/ci/requirements-py3.9-pandas1.5.3-pydantic1.10.11.txt b/ci/requirements-py3.9-pandas1.5.3-pydantic1.10.11.txt index 4e67d51e1..8eade3be1 100644 --- a/ci/requirements-py3.9-pandas1.5.3-pydantic1.10.11.txt +++ b/ci/requirements-py3.9-pandas1.5.3-pydantic1.10.11.txt @@ -33,7 +33,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -65,7 +65,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2024.2.1 # via distributed @@ -88,7 +88,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -131,8 +131,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -184,7 +184,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -260,7 +260,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -308,7 +308,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -319,7 +319,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -393,8 +393,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -418,12 +418,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.13.1 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -456,11 +456,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -501,7 +503,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -534,7 +536,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # anyio @@ -565,7 +567,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/ci/requirements-py3.9-pandas1.5.3-pydantic2.3.0.txt b/ci/requirements-py3.9-pandas1.5.3-pydantic2.3.0.txt index 58bfd4652..a6b8ac0b1 100644 --- a/ci/requirements-py3.9-pandas1.5.3-pydantic2.3.0.txt +++ b/ci/requirements-py3.9-pandas1.5.3-pydantic2.3.0.txt @@ -35,7 +35,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,7 +67,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2024.2.1 # via distributed @@ -90,7 +90,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -133,8 +133,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -186,7 +186,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -262,7 +262,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -310,7 +310,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -321,7 +321,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -397,8 +397,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -422,12 +422,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.13.1 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -460,11 +460,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -505,7 +507,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -538,7 +540,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # anyio @@ -570,7 +572,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/ci/requirements-py3.9-pandas2.2.2-pydantic1.10.11.txt b/ci/requirements-py3.9-pandas2.2.2-pydantic1.10.11.txt index 12acdafba..dbcaea02e 100644 --- a/ci/requirements-py3.9-pandas2.2.2-pydantic1.10.11.txt +++ b/ci/requirements-py3.9-pandas2.2.2-pydantic1.10.11.txt @@ -16,7 +16,7 @@ astroid==2.15.8 asttokens==2.4.1 # via stack-data asv==0.6.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py asv-runner==0.2.1 # via asv attrs==23.2.0 @@ -32,10 +32,10 @@ backports-tarfile==1.2.0 beautifulsoup4==4.12.3 # via furo black==24.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,14 +67,14 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -84,8 +84,8 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa +distributed==2024.7.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -96,7 +96,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -107,7 +107,7 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -117,7 +117,7 @@ filelock==3.15.4 # ray # virtualenv frictionless==4.40.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py frozenlist==1.4.1 # via # aiosignal @@ -127,13 +127,13 @@ fsspec==2024.6.1 # dask # modin furo==2024.5.6 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py geopandas==1.0.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py greenlet==3.0.3 # via sqlalchemy grpcio==1.64.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py h11==0.14.0 # via # httpcore @@ -144,9 +144,9 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa -identify==2.5.36 +hypothesis==6.108.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -158,7 +158,7 @@ imagesize==1.4.1 # via sphinx importlib-metadata==8.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # asv-runner # build # dask @@ -181,7 +181,7 @@ isodate==0.6.1 # via frictionless isort==5.13.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # pylint jaraco-classes==3.4.0 # via keyring @@ -199,10 +199,10 @@ jinja2==3.1.4 # myst-parser # sphinx joblib==1.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -249,7 +249,7 @@ mdit-py-plugins==0.4.1 mdurl==0.1.2 # via markdown-it-py modin==0.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py more-itertools==10.3.0 # via # jaraco-classes @@ -259,16 +259,16 @@ msgpack==1.0.8 # distributed # ray multimethod==1.10 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py mypy==1.10.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py mypy-extensions==1.0.0 # via # black # mypy # typing-inspect myst-nb==1.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py myst-parser==3.0.1 # via myst-nb nbclient==0.10.0 @@ -282,15 +282,15 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit nox==2024.4.15 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py numpy==2.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # dask # geopandas # modin @@ -304,7 +304,7 @@ orjson==3.10.6 # via fastapi packaging==24.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # black # build # dask @@ -319,13 +319,13 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # dask # dask-expr # geopandas # modin pandas-stubs==2.2.2.240603 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py parso==0.8.4 # via jedi partd==1.4.2 @@ -336,8 +336,8 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa +pip==24.1.2 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -348,15 +348,15 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa +polars==1.1.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py pre-commit==3.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py prompt-toolkit==3.0.47 # via ipython protobuf==5.27.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # ray psutil==6.0.0 # via @@ -371,11 +371,11 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # dask-expr pydantic==1.10.11 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # fastapi pygments==2.18.0 # via @@ -385,7 +385,7 @@ pygments==2.18.0 # rich # sphinx pylint==2.17.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py pympler==1.1 # via asv pyogrio==0.9.0 @@ -395,19 +395,19 @@ pyproj==3.6.1 pyproject-hooks==1.1.0 # via build pyspark==3.5.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py pytest==8.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # pytest-asyncio # pytest-cov # pytest-xdist pytest-asyncio==0.23.7 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py pytest-cov==5.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py pytest-xdist==3.6.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py python-dateutil==2.9.0.post0 # via # frictionless @@ -417,17 +417,17 @@ python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # fastapi python-slugify==8.0.4 # via frictionless pytz==2024.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # pandas pyyaml==6.0.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # asv # dask # distributed @@ -442,12 +442,12 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa -readme-renderer==43.0 +ray==2.32.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py +readme-renderer==44.0 # via twine recommonmark==0.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py referencing==0.35.1 # via # jsonschema @@ -469,15 +469,15 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.13.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa -shapely==2.0.4 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py +shapely==2.0.5 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # geopandas shellingham==1.5.4 # via typer @@ -502,7 +502,7 @@ soupsieve==2.5 # via beautifulsoup4 sphinx==7.3.7 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # furo # myst-nb # myst-parser @@ -511,14 +511,17 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py sphinx-design==0.6.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py +sphinx-docsearch==0.0.7 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -559,7 +562,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -582,28 +585,28 @@ traitlets==5.14.3 # nbclient # nbformat twine==5.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py typeguard==4.3.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py typer==0.12.3 # via # fastapi-cli # frictionless types-click==7.1.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py types-pkg-resources==0.1.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py types-pytz==2024.1.0.20240417 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # pandas-stubs types-pyyaml==6.0.12.20240311 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa -types-requests==2.32.0.20240622 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py +types-requests==2.32.0.20240712 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py typing-extensions==4.12.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # anyio # astroid # black @@ -620,7 +623,7 @@ typing-extensions==4.12.2 # typing-inspect # uvicorn typing-inspect==0.9.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py tzdata==2024.1 # via pandas ujson==5.10.0 @@ -633,11 +636,11 @@ urllib3==2.2.2 # types-requests uvicorn==0.30.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via @@ -652,10 +655,10 @@ websockets==12.0 # via uvicorn wrapt==1.16.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py # astroid xdoctest==1.1.5 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpen1j1fpa + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmp0n6jx2py zict==3.0.0 # via distributed zipp==3.19.2 diff --git a/ci/requirements-py3.9-pandas2.2.2-pydantic2.3.0.txt b/ci/requirements-py3.9-pandas2.2.2-pydantic2.3.0.txt index 7ad5ed229..d9e35ccdd 100644 --- a/ci/requirements-py3.9-pandas2.2.2-pydantic2.3.0.txt +++ b/ci/requirements-py3.9-pandas2.2.2-pydantic2.3.0.txt @@ -18,7 +18,7 @@ astroid==2.15.8 asttokens==2.4.1 # via stack-data asv==0.6.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh asv-runner==0.2.1 # via asv attrs==23.2.0 @@ -34,10 +34,10 @@ backports-tarfile==1.2.0 beautifulsoup4==4.12.3 # via furo black==24.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -69,14 +69,14 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -86,8 +86,8 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 +distributed==2024.7.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -98,7 +98,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -109,7 +109,7 @@ execnet==2.1.1 executing==2.0.1 # via stack-data fastapi==0.111.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh fastapi-cli==0.0.4 # via fastapi fastjsonschema==2.20.0 @@ -119,7 +119,7 @@ filelock==3.15.4 # ray # virtualenv frictionless==4.40.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh frozenlist==1.4.1 # via # aiosignal @@ -129,13 +129,13 @@ fsspec==2024.6.1 # dask # modin furo==2024.5.6 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh geopandas==1.0.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh greenlet==3.0.3 # via sqlalchemy grpcio==1.64.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh h11==0.14.0 # via # httpcore @@ -146,9 +146,9 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 -identify==2.5.36 +hypothesis==6.108.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -160,7 +160,7 @@ imagesize==1.4.1 # via sphinx importlib-metadata==8.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # asv-runner # build # dask @@ -183,7 +183,7 @@ isodate==0.6.1 # via frictionless isort==5.13.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # pylint jaraco-classes==3.4.0 # via keyring @@ -201,10 +201,10 @@ jinja2==3.1.4 # myst-parser # sphinx joblib==1.4.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -251,7 +251,7 @@ mdit-py-plugins==0.4.1 mdurl==0.1.2 # via markdown-it-py modin==0.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh more-itertools==10.3.0 # via # jaraco-classes @@ -261,16 +261,16 @@ msgpack==1.0.8 # distributed # ray multimethod==1.10 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh mypy==1.10.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh mypy-extensions==1.0.0 # via # black # mypy # typing-inspect myst-nb==1.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh myst-parser==3.0.1 # via myst-nb nbclient==0.10.0 @@ -284,15 +284,15 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit nox==2024.4.15 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh numpy==2.0.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # dask # geopandas # modin @@ -306,7 +306,7 @@ orjson==3.10.6 # via fastapi packaging==24.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # black # build # dask @@ -321,13 +321,13 @@ packaging==24.1 # sphinx pandas==2.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # dask # dask-expr # geopandas # modin pandas-stubs==2.2.2.240603 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh parso==0.8.4 # via jedi partd==1.4.2 @@ -338,8 +338,8 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 +pip==24.1.2 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -350,15 +350,15 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 +polars==1.1.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh pre-commit==3.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh prompt-toolkit==3.0.47 # via ipython protobuf==5.27.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # ray psutil==6.0.0 # via @@ -373,11 +373,11 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # dask-expr pydantic==2.3.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # fastapi pydantic-core==2.6.3 # via pydantic @@ -389,7 +389,7 @@ pygments==2.18.0 # rich # sphinx pylint==2.17.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh pympler==1.1 # via asv pyogrio==0.9.0 @@ -399,19 +399,19 @@ pyproj==3.6.1 pyproject-hooks==1.1.0 # via build pyspark==3.5.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh pytest==8.2.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # pytest-asyncio # pytest-cov # pytest-xdist pytest-asyncio==0.23.7 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh pytest-cov==5.0.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh pytest-xdist==3.6.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh python-dateutil==2.9.0.post0 # via # frictionless @@ -421,17 +421,17 @@ python-dotenv==1.0.1 # via uvicorn python-multipart==0.0.9 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # fastapi python-slugify==8.0.4 # via frictionless pytz==2024.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # pandas pyyaml==6.0.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # asv # dask # distributed @@ -446,12 +446,12 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 -readme-renderer==43.0 +ray==2.32.0 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh +readme-renderer==44.0 # via twine recommonmark==0.7.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh referencing==0.35.1 # via # jsonschema @@ -473,15 +473,15 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.13.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 -shapely==2.0.4 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh +shapely==2.0.5 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # geopandas shellingham==1.5.4 # via typer @@ -506,7 +506,7 @@ soupsieve==2.5 # via beautifulsoup4 sphinx==7.3.7 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # furo # myst-nb # myst-parser @@ -515,14 +515,17 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh sphinx-design==0.6.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh +sphinx-docsearch==0.0.7 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -563,7 +566,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -586,28 +589,28 @@ traitlets==5.14.3 # nbclient # nbformat twine==5.1.1 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh typeguard==4.3.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh typer==0.12.3 # via # fastapi-cli # frictionless types-click==7.1.8 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh types-pkg-resources==0.1.3 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh types-pytz==2024.1.0.20240417 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # pandas-stubs types-pyyaml==6.0.12.20240311 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 -types-requests==2.32.0.20240622 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh +types-requests==2.32.0.20240712 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh typing-extensions==4.12.2 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # anyio # astroid # black @@ -625,7 +628,7 @@ typing-extensions==4.12.2 # typing-inspect # uvicorn typing-inspect==0.9.0 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh tzdata==2024.1 # via pandas ujson==5.10.0 @@ -638,11 +641,11 @@ urllib3==2.2.2 # types-requests uvicorn==0.30.1 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via @@ -657,10 +660,10 @@ websockets==12.0 # via uvicorn wrapt==1.16.0 # via - # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh # astroid xdoctest==1.1.5 - # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpgqbbitg1 + # via -r /var/folders/5r/4t87zv7x32s7xv9fmnmbd8z80000gn/T/tmpt1t78zeh zict==3.0.0 # via distributed zipp==3.19.2 diff --git a/dev/requirements-3.10.txt b/dev/requirements-3.10.txt index b385351bd..556afa75a 100644 --- a/dev/requirements-3.10.txt +++ b/dev/requirements-3.10.txt @@ -35,7 +35,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,13 +67,13 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -83,7 +83,7 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 +distributed==2024.7.0 dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -94,7 +94,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -137,8 +137,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -186,7 +186,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -262,7 +262,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -311,7 +311,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -322,7 +322,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -341,9 +341,9 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via dask-expr -pydantic==2.8.0 +pydantic==2.8.2 # via fastapi -pydantic-core==2.20.0 +pydantic-core==2.20.1 # via pydantic pygments==2.18.0 # via @@ -399,8 +399,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -424,12 +424,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -462,11 +462,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -507,7 +509,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -540,7 +542,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # anyio @@ -572,7 +574,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/dev/requirements-3.11.txt b/dev/requirements-3.11.txt index df877347d..d07faa156 100644 --- a/dev/requirements-3.11.txt +++ b/dev/requirements-3.11.txt @@ -35,7 +35,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,13 +67,13 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -83,7 +83,7 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 +distributed==2024.7.0 dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -131,8 +131,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -180,7 +180,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -256,7 +256,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -305,7 +305,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -316,7 +316,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -335,9 +335,9 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via dask-expr -pydantic==2.8.0 +pydantic==2.8.2 # via fastapi -pydantic-core==2.20.0 +pydantic-core==2.20.1 # via pydantic pygments==2.18.0 # via @@ -393,8 +393,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -418,12 +418,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.14.0 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -456,11 +456,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -492,7 +494,7 @@ text-unidecode==1.3 # via python-slugify tomli==2.0.1 # via asv -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -525,7 +527,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # fastapi @@ -553,7 +555,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/dev/requirements-3.8.txt b/dev/requirements-3.8.txt index f5eceef9a..80ec1b0d8 100644 --- a/dev/requirements-3.8.txt +++ b/dev/requirements-3.8.txt @@ -40,7 +40,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # fiona # httpcore @@ -79,7 +79,7 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov dask==2023.5.0 # via distributed @@ -102,7 +102,7 @@ docutils==0.19 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -146,8 +146,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -205,7 +205,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -281,7 +281,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -327,7 +327,7 @@ pexpect==4.9.0 # via ipython pickleshare==0.7.5 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine pkgutil-resolve-name==1.3.10 @@ -340,7 +340,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.5.0 prompt-toolkit==3.0.47 # via ipython @@ -358,9 +358,9 @@ pure-eval==0.2.2 py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 -pydantic==2.8.0 +pydantic==2.8.2 # via fastapi -pydantic-core==2.20.0 +pydantic-core==2.20.1 # via pydantic pygments==2.18.0 # via @@ -441,12 +441,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.10.1 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -480,11 +480,13 @@ sphinx==5.3.0 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.5.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.4 # via sphinx sphinxcontrib-devhelp==1.0.2 @@ -524,7 +526,7 @@ tomli==2.0.1 # nox # pylint # pytest -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -557,7 +559,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # annotated-types @@ -594,7 +596,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/dev/requirements-3.9.txt b/dev/requirements-3.9.txt index 39eef1a61..b4e406816 100644 --- a/dev/requirements-3.9.txt +++ b/dev/requirements-3.9.txt @@ -35,7 +35,7 @@ beautifulsoup4==4.12.3 black==24.4.2 build==1.2.1 # via asv -certifi==2024.6.2 +certifi==2024.7.4 # via # httpcore # httpx @@ -67,13 +67,13 @@ comm==0.2.2 # via ipykernel commonmark==0.9.1 # via recommonmark -coverage==7.5.4 +coverage==7.6.0 # via pytest-cov -dask==2024.6.2 +dask==2024.7.0 # via # dask-expr # distributed -dask-expr==1.1.6 +dask-expr==1.1.7 # via dask debugpy==1.8.2 # via ipykernel @@ -83,7 +83,7 @@ dill==0.3.8 # via pylint distlib==0.3.8 # via virtualenv -distributed==2024.6.2 +distributed==2024.7.0 dnspython==2.6.1 # via email-validator docutils==0.21.2 @@ -94,7 +94,7 @@ docutils==0.21.2 # sphinx email-validator==2.2.0 # via fastapi -exceptiongroup==1.2.1 +exceptiongroup==1.2.2 # via # anyio # hypothesis @@ -137,8 +137,8 @@ httptools==0.6.1 # via uvicorn httpx==0.27.0 # via fastapi -hypothesis==6.104.2 -identify==2.5.36 +hypothesis==6.108.0 +identify==2.6.0 # via pre-commit idna==3.7 # via @@ -190,7 +190,7 @@ jinja2==3.1.4 joblib==1.4.2 json5==0.9.25 # via asv -jsonschema==4.22.0 +jsonschema==4.23.0 # via # frictionless # nbformat @@ -266,7 +266,7 @@ nbformat==5.10.4 # nbclient nest-asyncio==1.6.0 # via ipykernel -nh3==0.2.17 +nh3==0.2.18 # via readme-renderer nodeenv==1.9.1 # via pre-commit @@ -315,7 +315,7 @@ petl==1.7.15 # via frictionless pexpect==4.9.0 # via ipython -pip==24.1.1 +pip==24.1.2 pkginfo==1.10.0 # via twine platformdirs==4.2.2 @@ -326,7 +326,7 @@ platformdirs==4.2.2 # virtualenv pluggy==1.5.0 # via pytest -polars==1.0.0 +polars==1.1.0 pre-commit==3.7.1 prompt-toolkit==3.0.47 # via ipython @@ -345,9 +345,9 @@ py4j==0.10.9.7 # via pyspark pyarrow==16.1.0 # via dask-expr -pydantic==2.8.0 +pydantic==2.8.2 # via fastapi -pydantic-core==2.20.0 +pydantic-core==2.20.1 # via pydantic pygments==2.18.0 # via @@ -403,8 +403,8 @@ pyzmq==26.0.3 # via # ipykernel # jupyter-client -ray==2.31.0 -readme-renderer==43.0 +ray==2.32.0 +readme-renderer==44.0 # via twine recommonmark==0.7.1 referencing==0.35.1 @@ -428,12 +428,12 @@ rich==13.7.1 # via # twine # typer -rpds-py==0.18.1 +rpds-py==0.19.0 # via # jsonschema # referencing scipy==1.13.1 -shapely==2.0.4 +shapely==2.0.5 # via geopandas shellingham==1.5.4 # via typer @@ -466,11 +466,13 @@ sphinx==7.3.7 # sphinx-basic-ng # sphinx-copybutton # sphinx-design + # sphinx-docsearch sphinx-autodoc-typehints==1.14.1 sphinx-basic-ng==1.0.0b2 # via furo sphinx-copybutton==0.5.2 sphinx-design==0.6.0 +sphinx-docsearch==0.0.7 sphinxcontrib-applehelp==1.0.8 # via sphinx sphinxcontrib-devhelp==1.0.6 @@ -511,7 +513,7 @@ tomli==2.0.1 # pylint # pytest # sphinx -tomlkit==0.12.5 +tomlkit==0.13.0 # via pylint toolz==0.12.1 # via @@ -544,7 +546,7 @@ types-pkg-resources==0.1.3 types-pytz==2024.1.0.20240417 # via pandas-stubs types-pyyaml==6.0.12.20240311 -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 typing-extensions==4.12.2 # via # anyio @@ -578,7 +580,7 @@ uvicorn==0.30.1 # via fastapi uvloop==0.19.0 # via uvicorn -validators==0.29.0 +validators==0.32.0 # via frictionless virtualenv==20.26.3 # via diff --git a/docs/source/_static/default.css b/docs/source/_static/default.css index 0096f0e1e..115b6139b 100644 --- a/docs/source/_static/default.css +++ b/docs/source/_static/default.css @@ -16,6 +16,8 @@ div.content { .sidebar-brand-text, .sidebar-logo-container { margin: var(--sidebar-item-spacing-vertical) auto; + margin-top: 25px; + margin-bottom: 25px; } .sidebar-brand-text { @@ -28,7 +30,7 @@ div.content { } .sidebar-drawer .sidebar-container { - width: 23em; + width: 100%; } li.toctree-l2 { @@ -136,3 +138,29 @@ div.cell_output tbody tr:nth-child(odd) { div.cell details.below-input>summary { background-color: var(--color-background-secondary); } + +/* algolia docsearch search bar */ +:root { + --docsearch-primary-color: #82B427; + --docsearch-searchbox-shadow: #82B427; +} + +/* mute docsearch logo color */ +div.DocSearch-Logo .cls-1, +div.DocSearch-Logo .cls-2 { + fill: #414c70 !important; +} + +.DocSearch-Button { + height: 50px; +} + +@media (prefers-color-scheme: dark) { + body:not([data-theme="light"]) .DocSearch-Button:active, + body:not([data-theme="light"]) .DocSearch-Button:focus, + body:not([data-theme="light"]) .DocSearch-Button:hover, + body:not([data-theme="light"]) .DocSearch-Button .DocSearch-Search-Icon { + background: #666; + color: rgb(245, 246, 247); + } +} diff --git a/docs/source/_static/pandera-banner.png b/docs/source/_static/pandera-banner.png index 8dc5285c2030016fd9e6a589dce8e3af50430248..d4a1f091f2967d86a894e18b32d475c9393a1cf2 100644 GIT binary patch literal 64448 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]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 cqJRZydgLur*Sy)&cQ)^ bool: # correctly record.getMessage().startswith( ( + "Cannot resolve forward reference in type annotations", "Cannot resolve forward reference in type annotations of " '"pandera.typing.DataFrame"', "Cannot resolve forward reference in type annotations of " @@ -312,3 +317,52 @@ def linkcode_resolve(domain, info): nb_execution_mode = "auto" nb_execution_timeout = 60 nb_execution_excludepatterns = ["_contents/try_pandera.ipynb"] + +# # docsearch configuration +# docsearch_app_id = "GA9NROLUXR" +# docsearch_api_key = os.getenv("DOCSEARCH_SEARCH_API_KEY") +# docsearch_index_name = "pandera" + + +class CustomWarningSuppressor(pylogging.Filter): + """Filter logs by `suppress_warnings`.""" + + def __init__(self, app: sphinx.application.Sphinx) -> None: + self.app = app + super().__init__() + + def filter(self, record: pylogging.LogRecord) -> bool: + msg = record.getMessage() + + # TODO: These are all warnings that should be fixed as follow-ups to the + # monodocs build project. + filter_out = ( + "Definition list ends without a blank line; unexpected unindent", + "Unexpected indentation", + "Block quote ends without a blank line; unexpected unindent", + ) + + if msg.strip().startswith(filter_out): + return False + + if ( + msg.strip().startswith("document isn't included in any toctree") + and record.location == "_tags/tagsindex" + ): + # ignore this warning, since we don't want the side nav to be + # cluttered with the tags index page. + return False + + return True + + +def setup(app: sphinx.application.Sphinx) -> None: + """Setup root logger for Sphinx""" + logger = pylogging.getLogger("sphinx") + + warning_handler, *_ = [ + h + for h in logger.handlers + if isinstance(h, logging.WarningStreamHandler) + ] + warning_handler.filters.insert(0, CustomWarningSuppressor(app)) diff --git a/docs/source/dataframe_models.md b/docs/source/dataframe_models.md index a87dec367..4c4d67b31 100644 --- a/docs/source/dataframe_models.md +++ b/docs/source/dataframe_models.md @@ -118,7 +118,7 @@ from pandera import DataFrameModel, Field NormalizedField = partial(Field, ge=0, le=1) -class InputSchema(DataFrameModel): +class SchemaWithReusedFields(DataFrameModel): xnorm: float = NormalizedField() ynorm: float = NormalizedField() ``` diff --git a/docs/source/dataframe_schemas.md b/docs/source/dataframe_schemas.md index 74fb30b5f..c6d95ddcf 100644 --- a/docs/source/dataframe_schemas.md +++ b/docs/source/dataframe_schemas.md @@ -669,7 +669,7 @@ schema.remove_columns(["col2", "col3"]) If during the course of a data pipeline one of your columns is moved into the index, you can simply update the initial input schema using the -{func}`~pandera.api.pandas.container.DataFrameSchema.set_index` method to create a schema for +{func}`~pandera.api.dataframe.container.DataFrameSchema.set_index` method to create a schema for the pipeline output. ```{code-cell} python @@ -691,9 +691,9 @@ schema.set_index(["column1"], append = True) The available methods for altering the schema are: -- {func}`~pandera.api.pandas.container.DataFrameSchema.add_columns` -- {func}`~pandera.api.pandas.container.DataFrameSchema.remove_columns` -- {func}`~pandera.api.pandas.container.DataFrameSchema.update_columns` -- {func}`~pandera.api.pandas.container.DataFrameSchema.rename_columns` -- {func}`~pandera.api.pandas.container.DataFrameSchema.set_index` -- {func}`~pandera.api.pandas.container.DataFrameSchema.reset_index` +- {func}`~pandera.api.dataframe.container.DataFrameSchema.add_columns` +- {func}`~pandera.api.dataframe.container.DataFrameSchema.remove_columns` +- {func}`~pandera.api.dataframe.container.DataFrameSchema.update_columns` +- {func}`~pandera.api.dataframe.container.DataFrameSchema.rename_columns` +- {func}`~pandera.api.dataframe.container.DataFrameSchema.set_index` +- {func}`~pandera.api.dataframe.container.DataFrameSchema.reset_index` diff --git a/docs/source/index.md b/docs/source/index.md index d49ffe202..516033fc8 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -482,7 +482,7 @@ consider citing the paper and/or software package. ## License and Credits `pandera` is licensed under the [MIT license](https://github.com/pandera-dev/pandera/blob/main/LICENSE.txt). -and is written and maintained by Niels Bantilan () +and is written and maintained by Niels Bantilan (niels@union.ai) # Indices and tables diff --git a/docs/source/reference/core.rst b/docs/source/reference/core.rst index 13b2e3e13..feaca4cb6 100644 --- a/docs/source/reference/core.rst +++ b/docs/source/reference/core.rst @@ -11,6 +11,7 @@ Schemas :template: class.rst :nosignatures: + pandera.api.dataframe.container.DataFrameSchema pandera.api.pandas.container.DataFrameSchema pandera.api.pandas.array.SeriesSchema pandera.api.polars.container.DataFrameSchema @@ -24,6 +25,7 @@ Schema Components :template: class.rst :nosignatures: + pandera.api.dataframe.components.ComponentSchema pandera.api.pandas.components.Column pandera.api.pandas.components.Index pandera.api.pandas.components.MultiIndex diff --git a/environment.yml b/environment.yml index 304ac6376..f1ff0aef1 100644 --- a/environment.yml +++ b/environment.yml @@ -86,6 +86,7 @@ dependencies: # docs - furo + - sphinx-docsearch - grpcio - ray - typeguard diff --git a/pandera/api/dataframe/components.py b/pandera/api/dataframe/components.py index a79b4935d..c0b1bf691 100644 --- a/pandera/api/dataframe/components.py +++ b/pandera/api/dataframe/components.py @@ -21,7 +21,7 @@ class ComponentSchema(Generic[TDataObject], BaseSchema): - """Base array validator object.""" + """Base class for data container component, e.g. columns.""" def __init__( self, diff --git a/pandera/api/dataframe/container.py b/pandera/api/dataframe/container.py index 89ab6e994..b249af17f 100644 --- a/pandera/api/dataframe/container.py +++ b/pandera/api/dataframe/container.py @@ -68,7 +68,7 @@ def __init__( metadata: Optional[dict] = None, drop_invalid_rows: bool = False, ) -> None: - """Initialize DataFrameSchema validator. + """Library-agnostic base class for DataFrameSchema definitions. :param columns: a dict where keys are column names and values are Column objects specifying the datatypes and properties of a @@ -466,12 +466,14 @@ def _pydantic_validate(cls, schema: Any) -> Self: @inferred_schema_guard def add_columns(self, extra_schema_cols: Dict[str, Any]) -> Self: - """Create a copy of the :class:`DataFrameSchema` with extra columns. + """ + Create a copy of the :class:`~pandera.api.dataframe.container.DataFrameSchema` + with extra columns. :param extra_schema_cols: Additional columns of the format :type extra_schema_cols: DataFrameSchema - :returns: a new :class:`DataFrameSchema` with the extra_schema_cols - added. + :returns: a new :class:`~pandera.api.dataframe.container.DataFrameSchema` + with the extra_schema_cols added. :example: @@ -520,13 +522,14 @@ def add_columns(self, extra_schema_cols: Dict[str, Any]) -> Self: @inferred_schema_guard def remove_columns(self, cols_to_remove: List[str]) -> Self: - """Removes columns from a :class:`DataFrameSchema` and returns a new - copy. + """ + Removes columns from a :class:`~pandera.api.dataframe.container.DataFrameSchema` + and returns a new copy. :param cols_to_remove: Columns to be removed from the ``DataFrameSchema`` :type cols_to_remove: List - :returns: a new :class:`DataFrameSchema` without the cols_to_remove + :returns: a new :class:`~pandera.api.dataframe.container.DataFrameSchema` without the cols_to_remove :raises: :class:`~pandera.errors.SchemaInitError`: if column not in schema. @@ -583,19 +586,20 @@ def remove_columns(self, cols_to_remove: List[str]) -> Self: @inferred_schema_guard def update_column(self, column_name: str, **kwargs) -> Self: - """Create copy of a :class:`DataFrameSchema` with updated column - properties. + """ + Create copy of a :class:`~pandera.api.dataframe.container.DataFrameSchema` + with updated column properties. :param column_name: :param kwargs: key-word arguments supplied to :class:`~pandera.api.pandas.components.Column` - :returns: a new :class:`DataFrameSchema` with updated column + :returns: a new :class:`~pandera.api.dataframe.container.DataFrameSchema` with updated column :raises: :class:`~pandera.errors.SchemaInitError`: if column not in schema or you try to change the name. :example: - Calling ``schema.1`` returns the :class:`DataFrameSchema` + Calling ``schema.1`` returns the :class:`~pandera.api.dataframe.container.DataFrameSchema` with the updated column. >>> import pandera as pa @@ -650,17 +654,18 @@ def update_columns( update_dict: Dict[str, Dict[str, Any]], ) -> Self: """ - Create copy of a :class:`DataFrameSchema` with updated column - properties. + Create copy of a :class:`~pandera.api.dataframe.container.DataFrameSchema` + with updated column properties. :param update_dict: - :return: a new :class:`DataFrameSchema` with updated columns + :return: a new :class:`~pandera.api.dataframe.container.DataFrameSchema` with updated columns :raises: :class:`~pandera.errors.SchemaInitError`: if column not in schema or you try to change the name. :example: - Calling ``schema.update_columns`` returns the :class:`DataFrameSchema` + Calling ``schema.update_columns`` returns the + :class:`~pandera.api.dataframe.container.DataFrameSchema` with the updated columns. >>> import pandera as pa @@ -738,7 +743,7 @@ def rename_columns(self, rename_dict: Dict[str, str]) -> Self: :param rename_dict: dictionary of 'old_name': 'new_name' key-value pairs. - :returns: :class:`DataFrameSchema` (copy of original) + :returns: :class:`~pandera.api.dataframe.container.DataFrameSchema` (copy of original) :raises: :class:`~pandera.errors.SchemaInitError` if column not in the schema. @@ -825,8 +830,8 @@ def select_columns(self, columns: List[Any]) -> Self: *New in version 0.4.5* :param columns: list of column names to select. - :returns: :class:`DataFrameSchema` (copy of original) with only - the selected columns. + :returns: :class:`~pandera.api.dataframe.container.DataFrameSchema` + (copy of original) with only the selected columns. :raises: :class:`~pandera.errors.SchemaInitError` if column not in the schema. @@ -887,13 +892,14 @@ def set_index( self, keys: List[str], drop: bool = True, append: bool = False ) -> Self: """ - A method for setting the :class:`Index` of a :class:`DataFrameSchema`, + A method for setting the :class:`Index` of a + :class:`~pandera.api.dataframe.container.DataFrameSchema`, via an existing :class:`Column` or list of columns. :param keys: list of labels :param drop: bool, default True :param append: bool, default False - :return: a new :class:`DataFrameSchema` with specified column(s) in the + :return: a new :class:`~pandera.api.dataframe.container.DataFrameSchema` with specified column(s) in the index. :raises: :class:`~pandera.errors.SchemaInitError` if column not in the schema. @@ -1026,12 +1032,13 @@ def reset_index( self, level: Optional[List[str]] = None, drop: bool = False ) -> Self: """ - A method for resetting the :class:`Index` of a :class:`DataFrameSchema` + A method for resetting the :class:`Index` of a + :class:`~pandera.api.dataframe.container.DataFrameSchema` :param level: list of labels :param drop: bool, default True - :return: a new :class:`DataFrameSchema` with specified column(s) in the - index. + :return: a new :class:`~pandera.api.dataframe.container.DataFrameSchema` + with specified column(s) in the index. :raises: :class:`~pandera.errors.SchemaInitError` if no index set in schema. :examples: diff --git a/requirements.in b/requirements.in index 8a9e86d7d..3c656e351 100644 --- a/requirements.in +++ b/requirements.in @@ -50,6 +50,7 @@ pre_commit dask[dataframe] distributed furo +sphinx-docsearch grpcio ray typeguard