From 1eccad345608c1ef9f28e9d1fd728d9605784d00 Mon Sep 17 00:00:00 2001 From: tokoko Date: Tue, 3 Sep 2024 11:15:53 +0000 Subject: [PATCH 1/6] chore: migrate to pyproject.toml Signed-off-by: tokoko --- environment-setup.md | 22 -- pyproject.toml | 186 ++++++++++++ .../materialization/aws_lambda/__init__.py | 0 .../materialization/contrib/spark/__init__.py | 0 .../singlestore_online_store/__init__.py | 0 .../feature_repos/repo_configuration.py | 4 +- .../universal/data_source_creator.py | 1 + .../universal/data_sources/file.py | 7 +- .../tests/utils/auth_permissions_util.py | 2 +- setup.py | 265 +----------------- 10 files changed, 195 insertions(+), 292 deletions(-) delete mode 100644 environment-setup.md create mode 100644 sdk/python/feast/infra/materialization/aws_lambda/__init__.py create mode 100644 sdk/python/feast/infra/materialization/contrib/spark/__init__.py create mode 100644 sdk/python/feast/infra/online_stores/contrib/singlestore_online_store/__init__.py diff --git a/environment-setup.md b/environment-setup.md deleted file mode 100644 index 581dc35f778..00000000000 --- a/environment-setup.md +++ /dev/null @@ -1,22 +0,0 @@ -1. install anaconda, install docker -2. create an environment for feast, selecting python 3.9. Activate the environment: -```bash -conda create --name feast python=3.9 -conda activate feast -``` -3. install dependencies: -```bash -pip install pip-tools -brew install mysql -brew install xz protobuf openssl zlib -pip install cryptography -U -conda install protobuf -conda install pymssql -pip install -e ".[dev]" -make install-python-ci-dependencies PYTHON=3.9 -``` -4. start the docker daemon -5. run unit tests: -```bash -make test-python-unit -``` diff --git a/pyproject.toml b/pyproject.toml index 15921e633cd..87854075bbd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,189 @@ +[project] +name = "feast" +description = "Python SDK for Feast" +readme = "README.md" +requires-python = ">=3.9.0" + +authors = [ + {name = "Feast"} +] +classifiers = [ + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", +] +license = {text = "Apache"} + +dependencies = [ + "click>=7.0.0,<9.0.0", + "colorama>=0.3.9,<1", + "dill~=0.3.0", + "mypy-protobuf>=3.1", + "Jinja2>=2,<4", + "jsonschema", + "mmh3", + "numpy>=1.22,<2", + "pandas>=1.4.3,<3", + "protobuf>=4.24.0,<5.0.0", + "pyarrow>=4", + "pydantic>=2.0.0", + "pygments>=2.12.0,<3", + "PyYAML>=5.4.0,<7", + "requests", + "SQLAlchemy[mypy]>1", + "tabulate>=0.8.0,<1", + "tenacity>=7,<9", + "toml>=0.10.0,<1", + "tqdm>=4,<5", + "typeguard>=4.0.0", + "fastapi>=0.68.0", + "uvicorn[standard]>=0.14.0,<1", + "gunicorn; platform_system != 'Windows'", + "dask[dataframe]>=2024.2.1", + "prometheus_client", + "psutil", + "bigtree>=0.19.2", + "pyjwt", + "kubernetes<=20.13.0", +] + +dynamic = ["version"] + +[project.urls] +Homepage = "https://github.com/feast-dev/feast" + +[project.scripts] +feast = "feast.cli:cli" + +[project.optional-dependencies] +gcp = [ + "google-api-core>=1.23.0,<3", + "googleapis-common-protos>=1.52.0,<2", + "google-cloud-bigquery[pandas]>=2,<4", + "google-cloud-bigquery-storage >= 2.0.0,<3", + "google-cloud-datastore>=2.16.0,<3", + "google-cloud-storage>=1.34.0,<3", + "google-cloud-bigtable>=2.11.0,<3", + "fsspec<=2024.1.0", +] + +aws = ["boto3>=1.17.0,<2", "fsspec<=2024.1.0", "aiobotocore>2,<3"] + +k8s = ["kubernetes<=20.13.0"] + +redis = [ + "redis>=4.2.2,<5", + "hiredis>=2.0.0,<3", +] + +snowflake = [ + "snowflake-connector-python[pandas]>=3.7,<4", +] + +spark = ["pyspark>=3.0.0,<4"] + +trino = ["trino>=0.305.0,<0.400.0", "regex"] + +postgres = ["psycopg[binary,pool]>=3.0.0,<4"] + +azure = [ + "azure-storage-blob>=0.37.0", + "azure-identity>=1.6.1", + "SQLAlchemy>=1.4.19", + "pyodbc>=4.0.30", + "pymssql", +] + +mysql = ["pymysql", "types-PyMySQL"] + +mssql = ["ibis-framework[mssql]>=9.0.0,<10"] + +ge = ["great_expectations>=0.15.41"] + +hbase = ["happybase>=1.2.0,<3"] + +cassandra = ["cassandra-driver>=3.24.0,<4"] + +hazelcast = ["hazelcast-python-client>=5.1"] + +ibis = [ + "ibis-framework>=9.0.0,<10", + "ibis-substrait>=4.0.0", +] + +grpcio = [ + "grpcio>=1.56.2,<2", + "grpcio-tools>=1.56.2,<2", + "grpcio-reflection>=1.56.2,<2", + "grpcio-health-checking>=1.56.2,<2", +] + +duckdb = ["ibis-framework[duckdb]>=9.0.0,<10"] + +ikv = ["ikvpy>=0.0.36"] + +delta = ["deltalake"] + +elasticsearch = ["elasticsearch>=8.13.0"] + +sqlite_vec = ["sqlite-vec==v0.1.1"] + +singlestore = ["singlestoredb"] + +opentelemetry = ["prometheus_client","psutil"] + +ci = [ + "build", + "virtualenv==20.23.0", + "cryptography>=35.0,<43", + "ruff>=0.3.3", + "grpcio-testing>=1.56.2,<2", + # FastAPI does not correctly pull starlette dependency on httpx see thread(https://github.com/tiangolo/fastapi/issues/5656). + "httpx>=0.23.3", + "minio==7.1.0", + "mock==2.0.0", + "moto<5", + "mypy>=1.4.1", + "urllib3>=1.25.4,<3", + "psutil==5.9.0", + "py>=1.11.0", # https://github.com/pytest-dev/pytest/issues/10420 + "pytest>=6.0.0,<8", + "pytest-cov", + "pytest-xdist", + "pytest-benchmark>=3.4.1,<4", + "pytest-lazy-fixture==0.6.3", + "pytest-timeout==1.4.2", + "pytest-ordering~=0.6.0", + "pytest-mock==1.10.4", + "pytest-env", + "Sphinx>4.0.0,<7", + "testcontainers==4.4.0", + "python-keycloak==4.2.2", + "pre-commit<3.3.2", + "assertpy==1.1", + "pip-tools", + "pybindgen", + "types-protobuf~=3.19.22", + "types-python-dateutil", + "types-pytz", + "types-PyYAML", + "types-redis", + "types-requests<2.31.0", + "types-setuptools", + "types-tabulate", + "virtualenv<20.24.2", + "feast[aws, gcp, redis, k8s, snowflake, spark, postgres, mysql, trino, ge, hbase, cassandra, azure, hazelcast, ibis, grpcio, duckdb, delta, elasticsearch, sqlite_vec, singlestore, opentelemetry]" +] + +dev = [ + "feast[ci]" +] + +dosc = [ + "feast[ci]" +] + [build-system] requires = [ "grpcio-tools>=1.56.2,<2", diff --git a/sdk/python/feast/infra/materialization/aws_lambda/__init__.py b/sdk/python/feast/infra/materialization/aws_lambda/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/infra/materialization/contrib/spark/__init__.py b/sdk/python/feast/infra/materialization/contrib/spark/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/infra/online_stores/contrib/singlestore_online_store/__init__.py b/sdk/python/feast/infra/online_stores/contrib/singlestore_online_store/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/tests/integration/feature_repos/repo_configuration.py b/sdk/python/tests/integration/feature_repos/repo_configuration.py index 660a937f5af..e78864477d5 100644 --- a/sdk/python/tests/integration/feature_repos/repo_configuration.py +++ b/sdk/python/tests/integration/feature_repos/repo_configuration.py @@ -576,9 +576,9 @@ def construct_test_environment( } if not isinstance(offline_creator, RemoteOfflineOidcAuthStoreDataSourceCreator): - environment = Environment(**environment_params) + environment = Environment(**environment_params) # type: ignore[arg-type] else: - environment = OfflineServerPermissionsEnvironment(**environment_params) + environment = OfflineServerPermissionsEnvironment(**environment_params) # type: ignore[arg-type] return environment diff --git a/sdk/python/tests/integration/feature_repos/universal/data_source_creator.py b/sdk/python/tests/integration/feature_repos/universal/data_source_creator.py index aa46160358f..513a94ee210 100644 --- a/sdk/python/tests/integration/feature_repos/universal/data_source_creator.py +++ b/sdk/python/tests/integration/feature_repos/universal/data_source_creator.py @@ -61,5 +61,6 @@ def create_logged_features_destination(self) -> LoggingDestination: def teardown(self): raise NotImplementedError + @staticmethod def xdist_groups() -> list[str]: return [] diff --git a/sdk/python/tests/integration/feature_repos/universal/data_sources/file.py b/sdk/python/tests/integration/feature_repos/universal/data_sources/file.py index 10d348c0564..477e1d09ef0 100644 --- a/sdk/python/tests/integration/feature_repos/universal/data_sources/file.py +++ b/sdk/python/tests/integration/feature_repos/universal/data_sources/file.py @@ -455,6 +455,7 @@ def __init__(self, project_name: str, *args, **kwargs): self.server_port: int = 0 self.proc = None + @staticmethod def xdist_groups() -> list[str]: return ["keycloak"] @@ -471,7 +472,7 @@ def setup(self, registry: RegistryConfig): repo_path = Path(tempfile.mkdtemp()) with open(repo_path / "feature_store.yaml", "w") as outfile: yaml.dump(config.model_dump(by_alias=True), outfile) - repo_path = str(repo_path.resolve()) + repo_path = str(repo_path.resolve()) # type: ignore[assignment] include_auth_config( file_path=f"{repo_path}/feature_store.yaml", auth_config=self.auth_config @@ -481,14 +482,14 @@ def setup(self, registry: RegistryConfig): host = "0.0.0.0" cmd = [ "feast", - "-c" + repo_path, + "-c" + repo_path, # type: ignore[operator] "serve_offline", "--host", host, "--port", str(self.server_port), ] - self.proc = subprocess.Popen( + self.proc = subprocess.Popen( # type: ignore[assignment] cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL ) diff --git a/sdk/python/tests/utils/auth_permissions_util.py b/sdk/python/tests/utils/auth_permissions_util.py index 3b5e589812a..2b825a80704 100644 --- a/sdk/python/tests/utils/auth_permissions_util.py +++ b/sdk/python/tests/utils/auth_permissions_util.py @@ -49,7 +49,7 @@ def default_store( fs = FeatureStore(repo_path=repo_path) - fs.apply(permissions) + fs.apply(permissions) # type: ignore[arg-type] return fs diff --git a/setup.py b/setup.py index 6da5e8226af..b599876b6f3 100644 --- a/setup.py +++ b/setup.py @@ -22,216 +22,12 @@ from pathlib import Path from setuptools import find_packages, setup, Command -from setuptools.command.build_ext import build_ext as _build_ext from setuptools.command.build_py import build_py from setuptools.command.develop import develop -from setuptools.command.install import install - -NAME = "feast" -DESCRIPTION = "Python SDK for Feast" -URL = "https://github.com/feast-dev/feast" -AUTHOR = "Feast" -REQUIRES_PYTHON = ">=3.9.0" - -REQUIRED = [ - "click>=7.0.0,<9.0.0", - "colorama>=0.3.9,<1", - "dill~=0.3.0", - "mypy-protobuf>=3.1", - "Jinja2>=2,<4", - "jsonschema", - "mmh3", - "numpy>=1.22,<2", - "pandas>=1.4.3,<3", - "protobuf>=4.24.0,<5.0.0", - "pyarrow>=4", - "pydantic>=2.0.0", - "pygments>=2.12.0,<3", - "PyYAML>=5.4.0,<7", - "requests", - "SQLAlchemy[mypy]>1", - "tabulate>=0.8.0,<1", - "tenacity>=7,<9", - "toml>=0.10.0,<1", - "tqdm>=4,<5", - "typeguard>=4.0.0", - "fastapi>=0.68.0", - "uvicorn[standard]>=0.14.0,<1", - "gunicorn; platform_system != 'Windows'", - "dask[dataframe]>=2024.2.1", - "prometheus_client", - "psutil", - "bigtree>=0.19.2", - "pyjwt", - "kubernetes<=20.13.0", -] - -GCP_REQUIRED = [ - "google-api-core>=1.23.0,<3", - "googleapis-common-protos>=1.52.0,<2", - "google-cloud-bigquery[pandas]>=2,<4", - "google-cloud-bigquery-storage >= 2.0.0,<3", - "google-cloud-datastore>=2.16.0,<3", - "google-cloud-storage>=1.34.0,<3", - "google-cloud-bigtable>=2.11.0,<3", - "fsspec<=2024.1.0", -] - -REDIS_REQUIRED = [ - "redis>=4.2.2,<5", - "hiredis>=2.0.0,<3", -] - -AWS_REQUIRED = ["boto3>=1.17.0,<2", "fsspec<=2024.1.0", "aiobotocore>2,<3"] - -KUBERNETES_REQUIRED = ["kubernetes<=20.13.0"] - -SNOWFLAKE_REQUIRED = [ - "snowflake-connector-python[pandas]>=3.7,<4", -] - -SPARK_REQUIRED = [ - "pyspark>=3.0.0,<4", -] - -SQLITE_VEC_REQUIRED = [ - "sqlite-vec==v0.1.1", -] -TRINO_REQUIRED = ["trino>=0.305.0,<0.400.0", "regex"] - -POSTGRES_REQUIRED = [ - "psycopg[binary,pool]>=3.0.0,<4", -] - -OPENTELEMETRY = ["prometheus_client","psutil"] - -MYSQL_REQUIRED = ["pymysql", "types-PyMySQL"] - -HBASE_REQUIRED = [ - "happybase>=1.2.0,<3", -] - -CASSANDRA_REQUIRED = [ - "cassandra-driver>=3.24.0,<4", -] - -GE_REQUIRED = ["great_expectations>=0.15.41"] - -AZURE_REQUIRED = [ - "azure-storage-blob>=0.37.0", - "azure-identity>=1.6.1", - "SQLAlchemy>=1.4.19", - "pyodbc>=4.0.30", - "pymssql", -] - -IKV_REQUIRED = [ - "ikvpy>=0.0.36", -] - -HAZELCAST_REQUIRED = [ - "hazelcast-python-client>=5.1", -] - -IBIS_REQUIRED = [ - "ibis-framework>=9.0.0,<10", - "ibis-substrait>=4.0.0", -] - -GRPCIO_REQUIRED = [ - "grpcio>=1.56.2,<2", - "grpcio-tools>=1.56.2,<2", - "grpcio-reflection>=1.56.2,<2", - "grpcio-health-checking>=1.56.2,<2", -] - -DUCKDB_REQUIRED = ["ibis-framework[duckdb]>=9.0.0,<10"] - -DELTA_REQUIRED = ["deltalake"] - -ELASTICSEARCH_REQUIRED = ["elasticsearch>=8.13.0"] - -SINGLESTORE_REQUIRED = ["singlestoredb"] - -MSSQL_REQUIRED = ["ibis-framework[mssql]>=9.0.0,<10"] - -CI_REQUIRED = ( - [ - "build", - "virtualenv==20.23.0", - "cryptography>=35.0,<43", - "ruff>=0.3.3", - "grpcio-testing>=1.56.2,<2", - # FastAPI does not correctly pull starlette dependency on httpx see thread(https://github.com/tiangolo/fastapi/issues/5656). - "httpx>=0.23.3", - "minio==7.1.0", - "mock==2.0.0", - "moto<5", - "mypy>=1.4.1", - "urllib3>=1.25.4,<3", - "psutil==5.9.0", - "py>=1.11.0", # https://github.com/pytest-dev/pytest/issues/10420 - "pytest>=6.0.0,<8", - "pytest-cov", - "pytest-xdist", - "pytest-benchmark>=3.4.1,<4", - "pytest-lazy-fixture==0.6.3", - "pytest-timeout==1.4.2", - "pytest-ordering~=0.6.0", - "pytest-mock==1.10.4", - "pytest-env", - "Sphinx>4.0.0,<7", - "testcontainers==4.4.0", - "python-keycloak==4.2.2", - "pre-commit<3.3.2", - "assertpy==1.1", - "pip-tools", - "pybindgen", - "types-protobuf~=3.19.22", - "types-python-dateutil", - "types-pytz", - "types-PyYAML", - "types-redis", - "types-requests<2.31.0", - "types-setuptools", - "types-tabulate", - "virtualenv<20.24.2", - ] - + GCP_REQUIRED - + REDIS_REQUIRED - + AWS_REQUIRED - + KUBERNETES_REQUIRED - + SNOWFLAKE_REQUIRED - + SPARK_REQUIRED - + POSTGRES_REQUIRED - + MYSQL_REQUIRED - + TRINO_REQUIRED - + GE_REQUIRED - + HBASE_REQUIRED - + CASSANDRA_REQUIRED - + AZURE_REQUIRED - + HAZELCAST_REQUIRED - + IBIS_REQUIRED - + GRPCIO_REQUIRED - + DUCKDB_REQUIRED - + DELTA_REQUIRED - + ELASTICSEARCH_REQUIRED - + SQLITE_VEC_REQUIRED - + SINGLESTORE_REQUIRED - + OPENTELEMETRY -) - -DOCS_REQUIRED = CI_REQUIRED -DEV_REQUIRED = CI_REQUIRED # Get git repo root directory repo_root = str(pathlib.Path(__file__).resolve().parent) -# README file from Feast repo root directory -README_FILE = os.path.join(repo_root, "README.md") -with open(README_FILE, "r", encoding="utf8") as f: - LONG_DESCRIPTION = f.read() - # Add Support for parsing tags that have a prefix containing '/' (ie 'sdk/go') to setuptools_scm. # Regex modified from default tag regex in: # https://github.com/pypa/setuptools_scm/blob/2a1b46d38fb2b8aeac09853e660bcd0d7c1bc7be/src/setuptools_scm/config.py#L9 @@ -239,7 +35,6 @@ r"^(?:[\/\w-]+)?(?P[vV]?\d+(?:\.\d+){0,2}[^\+]*)(?:\+.*)?$" ) -# Only set use_scm_version if git executable exists (setting this variable causes pip to use git under the hood) if shutil.which("git"): use_scm_version = {"root": ".", "relative_to": __file__, "tag_regex": TAG_REGEX} else: @@ -345,71 +140,13 @@ def run(self): develop.run(self) - setup( - name=NAME, - author=AUTHOR, - description=DESCRIPTION, - long_description=LONG_DESCRIPTION, - long_description_content_type="text/markdown", - python_requires=REQUIRES_PYTHON, - url=URL, packages=find_packages( where=PYTHON_CODE_PREFIX, exclude=("java", "infra", "sdk/python/tests", "ui") ), package_dir={"": PYTHON_CODE_PREFIX}, - install_requires=REQUIRED, - # https://stackoverflow.com/questions/28509965/setuptools-development-requirements - # Install dev requirements with: pip install -e .[dev] - extras_require={ - "dev": DEV_REQUIRED, - "ci": CI_REQUIRED, - "gcp": GCP_REQUIRED, - "aws": AWS_REQUIRED, - "k8s": KUBERNETES_REQUIRED, - "redis": REDIS_REQUIRED, - "snowflake": SNOWFLAKE_REQUIRED, - "spark": SPARK_REQUIRED, - "trino": TRINO_REQUIRED, - "postgres": POSTGRES_REQUIRED, - "azure": AZURE_REQUIRED, - "mysql": MYSQL_REQUIRED, - "mssql": MSSQL_REQUIRED, - "ge": GE_REQUIRED, - "hbase": HBASE_REQUIRED, - "docs": DOCS_REQUIRED, - "cassandra": CASSANDRA_REQUIRED, - "hazelcast": HAZELCAST_REQUIRED, - "grpcio": GRPCIO_REQUIRED, - "ibis": IBIS_REQUIRED, - "duckdb": DUCKDB_REQUIRED, - "ikv": IKV_REQUIRED, - "delta": DELTA_REQUIRED, - "elasticsearch": ELASTICSEARCH_REQUIRED, - "sqlite_vec": SQLITE_VEC_REQUIRED, - "singlestore": SINGLESTORE_REQUIRED, - "opentelemetry": OPENTELEMETRY, - }, - include_package_data=True, - license="Apache", - classifiers=[ - # Trove classifiers - # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers - "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", - ], - entry_points={"console_scripts": ["feast=feast.cli:cli"]}, use_scm_version=use_scm_version, - setup_requires=[ - "grpcio-tools>=1.56.2,<2", - "grpcio>=1.56.2,<2", - "mypy-protobuf==3.1", - "protobuf==4.24.0", - "pybindgen==0.22.0", - "setuptools_scm>=6.2", - ], + include_package_data=True, cmdclass={ "build_python_protos": BuildPythonProtosCommand, "build_py": BuildCommand, From cea6be8859aa3895facdc1ee7c17923b13dcfd86 Mon Sep 17 00:00:00 2001 From: tokoko Date: Tue, 3 Sep 2024 12:02:47 +0000 Subject: [PATCH 2/6] fix: remove env setup reference from development guide Signed-off-by: tokoko --- docs/project/development-guide.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/project/development-guide.md b/docs/project/development-guide.md index b6137741906..410ad4a907a 100644 --- a/docs/project/development-guide.md +++ b/docs/project/development-guide.md @@ -15,7 +15,6 @@ - [Signing off commits](#signing-off-commits) - [Incorporating upstream changes from master](#incorporating-upstream-changes-from-master) - [Feast Python SDK and CLI](#feast-python-sdk-and-cli) - - [Environment Setup](#environment-setup) - [Code Style and Linting](#code-style-and-linting) - [Unit Tests](#unit-tests) - [Integration Tests](#integration-tests) From 95c1f6152b2f7d2fbaa072de6e69b0307b898eec Mon Sep 17 00:00:00 2001 From: tokoko Date: Tue, 10 Sep 2024 07:32:12 +0000 Subject: [PATCH 3/6] add cli import test with pixi Signed-off-by: tokoko --- .devcontainer/devcontainer.json | 4 +- .github/workflows/smoke_tests.yml | 27 + .gitignore | 4 +- pixi.lock | 2845 +++++++++++++++++++++++++++++ pyproject.toml | 11 + sdk/python/feast/errors.py | 12 +- 6 files changed, 2895 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/smoke_tests.yml create mode 100644 pixi.lock diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 04fcbb00aab..1b15dcf882a 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -17,13 +17,13 @@ "ghcr.io/devcontainers-contrib/features/maven-sdkman:2": { "jdkVersion": "11.0.24-amzn" } - }, + } // Use 'forwardPorts' to make a list of ports inside the container available locally. // "forwardPorts": [], // Uncomment the next line to run commands after the container is created. - "postCreateCommand": "make install-python-ci-dependencies-uv-venv" + // "postCreateCommand": "make install-python-ci-dependencies-uv-venv" // Configure tool-specific properties. // "customizations": {}, diff --git a/.github/workflows/smoke_tests.yml b/.github/workflows/smoke_tests.yml new file mode 100644 index 00000000000..e9f17b8c2e4 --- /dev/null +++ b/.github/workflows/smoke_tests.yml @@ -0,0 +1,27 @@ +name: smoke-tests + +on: [pull_request] +jobs: + unit-test-python: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + python-version: [ "3.9", "3.10", "3.11"] + os: [ ubuntu-latest ] + env: + OS: ${{ matrix.os }} + PYTHON: ${{ matrix.python-version }} + steps: + - uses: actions/checkout@v4 + - name: Setup Python + id: setup-python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + architecture: x64 + - name: Install pixi + run: | + curl -fsSL https://pixi.sh/install.sh | bash + - name: Test Imports + run: pixi run python -c "from feast import cli" diff --git a/.gitignore b/.gitignore index e4e82bfce46..23a2aa0b5dd 100644 --- a/.gitignore +++ b/.gitignore @@ -223,4 +223,6 @@ ui/.vercel **/yarn-error.log* # Go subprocess binaries (built during feast pip package building) -sdk/python/feast/binaries/ \ No newline at end of file +sdk/python/feast/binaries/ + +.pixi/ \ No newline at end of file diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 00000000000..4fec1b86ab0 --- /dev/null +++ b/pixi.lock @@ -0,0 +1,2845 @@ +version: 5 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.1.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.1-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/a2/10639a79341f6c019dedc95bd48a4928eed9f1d1197f4c04f546fc7ae0ff/anyio-4.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/56/84dd54762c8baa741571a756b7384e62fa82a176536cc608688d8dbbc1fd/bigtree-0.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/07/14f8ad37f2d12a5ce41206c21820d8cb6561b728e51fad4530dff0552a67/cachetools-5.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/43/dae06432d0c4b1dc9e9149ad37b4ca8384cf6eb7700cd9215b177b914f0a/cloudpickle-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/8f/65830f3db64bd8a9a67e6e19c209e236689ea46c5871a536cb187fe53ab1/dask-2024.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/61/1b8380ece60b69e081863eaad58acf05833f2e52e3d834334567c4bb49bc/dask_expr-1.1.13-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/80/17037f322c280efbc623e341358d38d0299c6ee899d619a879b3593aa6da/fastapi-0.114.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1d/a0/6aaea0c2fbea2f89bfd5db25fb1e3481896a423002ebe4e55288907a97a3/fsspec-2024.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bb/fb/9af9e3f2996677bdda72734482934fe85a3abde174e5f0783ac2f817ba98/google_auth-2.34.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bd/37/56b0da468a85e7704f3b2bc045015301bdf4be2184a44868c71f6dca6fe2/greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a2/9a/aa406864f3108e06f7320425a528ff8267124dead1fd72a3e9da2067f893/httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/22/7e/d71db821f177828df9dea8c42ac46473366f191be53080e552e628aad991/idna-3.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a8/b771d543156d8fee42876f7bc57023194fc2627efb6049e1ec8b87860bab/kubernetes-20.13.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4c/7b/bfeb68bee5bddc8baf7ef630b93edc0a533202d84eb076dbb6c77e7e5fd5/mmh3-4.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f3/3c/350a9da895f8a7e87ade0028b962be0252d152e0c2fbaafa6f0658b4d0d4/mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d3/7b/b00434b3f508eb4bc637b83c2238cacaf1ce3cc5e540a2b76f5f99302446/mypy_protobuf-3.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/10/79e52ef01dfeb1c1ca47a109a01a248754ebe990e159a844ece12914de83/pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/98/745b810d822103adca2df8decd4c0bbe839ba7ad3511af3f0d09692fc0f0/prometheus_client-0.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/6c/cc7ab2fb3a4a7f07f211d8a7bbb76bba633eb09b148296dbd4281e217f95/protobuf-4.25.4-cp37-abi3-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/47/b6/ea8a7728f096a597f0032564e8013b705aa992a0990becd773dcc4d7b4a7/psutil-5.9.0.tar.gz + - pypi: https://files.pythonhosted.org/packages/f1/c4/9625418a1413005e486c006e56675334929fad864347c5ae7c1b2e7fe639/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/23/7e/5f50d07d5e70a2addbccd90ac2950f81d1edd0783630651d9268d7f1db49/pyasn1-0.6.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/68/8906226b15ef38e71dc926c321d2fe99de8048e9098b5dfd38343011c886/pyasn1_modules-0.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e4/28/fff23284071bc1ba419635c7e86561c8b9b8cf62a5bcb459b92d7625fd38/pydantic-2.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/1b/1d689c53d15ab67cb0df1c3a2b1df873b50409581e93e4848289dce57e2f/pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/79/84/0fdf9b18ba31d69877bd39c9cd6052b47f3761e9910c15de788e519f079f/PyJWT-2.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9c/3d/a121f284241f08268b21359bd425f7d4825cffc5ac5cd0e1b3d82ffd2b10/pytz-2024.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/f7/a59a673594e6c2ff2dbc44b00fd4ecdec2fc399bb6a7bd82d612699a0121/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/9c/9ad11ac06b97e55ada655f8a6bea9d1d3f06e120b178cd578d80e558191d/setuptools-74.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/2e/e6129761dd5588a5623c6051c31e45935b72a5b17ed87b209e39a0b2a25c/SQLAlchemy-2.0.34-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/90/1a/8853ba4cea1ec99535ac9be5795a50ca92cddd04d57bbaa56e866cb7548c/starlette-0.38.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/8a/d82202c9f89eab30f9fc05380daae87d617e2ad11571ab23d7c13a29bb54/toolz-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/de/be0ba39ee73760bf33329b7c6f95bc67e96593c69c881671e312538e24bb/typeguard-4.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/00/0e/0dc8a4b0ce16bb585a8333e8b3a3d6bb15d22cc203e98ed9fa950276b8fd/types_protobuf-3.19.22-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/58/f9c9e6be752e9fcb8b6a0ee9fb87e6e7a1f6bcab2cdc73f02bb7ba91ada0/tzdata-2024.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f5/8e/cdc7d6263db313030e4c257dd5ba3909ebc4e4fb53ad62d5f09b1a2f5458/uvicorn-0.30.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/f8/5ceea6876154d926604f10c1dd896adf9bce6d55a55911364337b8a5ed8d/uvloop-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/69/e1da9d34da7fc59db358424f5d89a56aaafe09f6961b64e36457a80a7194/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/6e/eaf95894042ba8a05a125fe8bcf9ee3572fef6edbcbf49478f4991c027cc/websockets-13.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: . + dev: + channels: + - url: https://conda.anaconda.org/conda-forge/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.1.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.1-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - pypi: https://files.pythonhosted.org/packages/32/34/d4e1c02d3bee589efb5dfa17f88ea08bdb3e3eac12bc475462aec52ed223/alabaster-0.7.16-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/a2/10639a79341f6c019dedc95bd48a4928eed9f1d1197f4c04f546fc7ae0ff/anyio-4.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4f/39/720b5d4463612a40a166d00999cbb715fce3edaf08a9a7588ba5985699ec/assertpy-1.1.tar.gz + - pypi: https://files.pythonhosted.org/packages/c7/80/9f608d13b4b3afcebd1dd13baf9551c95fc424d6390e4b1cfd7b1810cd06/async_property-0.2.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/56/84dd54762c8baa741571a756b7384e62fa82a176536cc608688d8dbbc1fd/bigtree-0.21.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4f/3f/dc04c5031581cb55e178e7305ad32fe1ecfa8691fa1092c09f772c44f81c/boto3-1.35.15-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f2/d0/4f70a85bf4d939b4231a6bc305736f4a78ab724b35fde824ce219331c748/botocore-1.35.15-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/91/fd/e4bda6228637ecae5732162b5ac2a5a822e2ba8e546eb4997cde51b231a3/build-1.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a4/07/14f8ad37f2d12a5ce41206c21820d8cb6561b728e51fad4530dff0552a67/cachetools-5.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/43/dae06432d0c4b1dc9e9149ad37b4ca8384cf6eb7700cd9215b177b914f0a/cloudpickle-3.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/0f/c890339dd605f3ebc269543247bdd43b703cce6825b5ed42ff5f2d6122c7/coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/fa/e2/b7e6e8c261536c489d9cf908769880d94bd5d9a187e166b0dc838d2e6a56/cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ad/8f/65830f3db64bd8a9a67e6e19c209e236689ea46c5871a536cb187fe53ab1/dask-2024.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1f/61/1b8380ece60b69e081863eaad58acf05833f2e52e3d834334567c4bb49bc/dask_expr-1.1.13-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/41/9307e4f5f9976bc8b7fea0b66367734e8faf3ec84bc0d412d8cfabbb66cd/distlib-0.3.8-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/93/69/e391bd51bc08ed9141ecd899a0ddb61ab6465309f1eb470905c0c8868081/docutils-0.19-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d0/80/17037f322c280efbc623e341358d38d0299c6ee899d619a879b3593aa6da/fastapi-0.114.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2f/95/f9310f35376024e1086c59cbb438d319fc9a4ef853289ce7c661539edbd4/filelock-3.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1d/a0/6aaea0c2fbea2f89bfd5db25fb1e3481896a423002ebe4e55288907a97a3/fsspec-2024.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bb/fb/9af9e3f2996677bdda72734482934fe85a3abde174e5f0783ac2f817ba98/google_auth-2.34.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bd/37/56b0da468a85e7704f3b2bc045015301bdf4be2184a44868c71f6dca6fe2/greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1d/6c/a813a5b6d716cbc5cc3e496b186b6878816bf5f32aa7f7ae5f9d8dc5e669/grpcio-1.66.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b2/23/55d40e1bf54c141f541ab31b4b4b0f58610440c8837b1406f3467c2b4853/grpcio_testing-1.62.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/d4/e5d7e4f2174f8a4d63c8897d79eb8fe2503f7ecc03282fee1fa2719c2704/httpcore-1.0.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a2/9a/aa406864f3108e06f7320425a528ff8267124dead1fd72a3e9da2067f893/httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/6c/a4f39abe7f19600b74528d0c717b52fff0b300bb0161081510d39c53cb00/identify-2.6.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/22/7e/d71db821f177828df9dea8c42ac46473366f191be53080e552e628aad991/idna-3.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cd/58/4a1880ea64032185e9ae9f63940c9327c6952d5584ea544a8f66972f2fda/jwcrypto-1.5.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/a8/b771d543156d8fee42876f7bc57023194fc2627efb6049e1ec8b87860bab/kubernetes-20.13.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b3/b4/4281ab6be6c7bae210b86956fc2d71e0848f2a37e95f102401fc1317529f/minio-7.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4c/7b/bfeb68bee5bddc8baf7ef630b93edc0a533202d84eb076dbb6c77e7e5fd5/mmh3-4.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/51/0f/ef410e6660d381e04cb6f33065d03b3aefd3444d558fcdd41ef235a1802c/moto-4.2.14-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f3/3c/350a9da895f8a7e87ade0028b962be0252d152e0c2fbaafa6f0658b4d0d4/mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d3/7b/b00434b3f508eb4bc637b83c2238cacaf1ce3cc5e540a2b76f5f99302446/mypy_protobuf-3.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/10/79e52ef01dfeb1c1ca47a109a01a248754ebe990e159a844ece12914de83/pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1d/44/6a65ecd630393d47ad3e7d5354768cb7f9a10b3a0eb2cd8c6f52b28211ee/pbr-6.1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d4/55/90db48d85f7689ec6f81c0db0622d704306c5284850383c090e6c7195a5c/pip-24.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0d/dc/38f4ce065e92c66f058ea7a368a9c5de4e702272b479c0992059f7693941/pip_tools-7.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/56/29/3ec311dc18804409ecf0d2b09caa976f3ae6215559306b5b530004e11156/platformdirs-3.11.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/77/39/86e07f4e9671ee9311fa4bafc41c66d6a907192707160e3f45272e78be38/pre_commit-3.3.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/98/745b810d822103adca2df8decd4c0bbe839ba7ad3511af3f0d09692fc0f0/prometheus_client-0.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/6c/cc7ab2fb3a4a7f07f211d8a7bbb76bba633eb09b148296dbd4281e217f95/protobuf-4.25.4-cp37-abi3-manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/47/b6/ea8a7728f096a597f0032564e8013b705aa992a0990becd773dcc4d7b4a7/psutil-5.9.0.tar.gz + - pypi: https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/c4/9625418a1413005e486c006e56675334929fad864347c5ae7c1b2e7fe639/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/23/7e/5f50d07d5e70a2addbccd90ac2950f81d1edd0783630651d9268d7f1db49/pyasn1-0.6.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/68/8906226b15ef38e71dc926c321d2fe99de8048e9098b5dfd38343011c886/pyasn1_modules-0.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/f4/5fa8144cd33bb1f02b7e3ca9fdd98abe5a92885a793330e866c08a83db19/PyBindGen-0.22.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e4/28/fff23284071bc1ba419635c7e86561c8b9b8cf62a5bcb459b92d7625fd38/pydantic-2.9.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/1b/1d689c53d15ab67cb0df1c3a2b1df873b50409581e93e4848289dce57e2f/pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/79/84/0fdf9b18ba31d69877bd39c9cd6052b47f3761e9910c15de788e519f079f/PyJWT-2.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/f3/431b9d5fe7d14af7a32340792ef43b8a714e7726f1d7b69cc4e8e7a3f1d7/pyproject_hooks-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/60/423a63fb190a0483d049786a121bd3dfd7d93bb5ff1bb5b5cd13e5df99a7/pytest_benchmark-3.4.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/3a/af5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf/pytest_cov-5.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/25/b2/bdc663a5647ce2034f7e8420122af340df87c01ba97745fc753b8c917acb/pytest_env-1.1.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2d/a1/2f2c1c2353350d66c4d110d283e422e4943eb5ad10effa9357ba66f7b5b9/pytest_lazy_fixture-0.6.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/30/43/8deecb4c123bbc16d25666f1a6d241109c97aeb2e50806b952661c8e4b95/pytest_mock-1.10.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/98/adc368fe369465f291ab24e18b9900473786ed1afdf861ba90467eb0767e/pytest_ordering-0.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/df/97cc0b5b8b53da0e265acd0aeecfc0c279e950a029acd2d7b4e54b00b25f/pytest_timeout-1.4.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6d/82/1d96bf03ee4c0fdc3c0cbe61470070e659ca78dc0086fb88b66c185e2449/pytest_xdist-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2e/2e/dfbd2c9b3edf6a5a8cd9e66090221046839b488ea27824970426bf06b242/python_keycloak-4.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9c/3d/a121f284241f08268b21359bd425f7d4825cffc5ac5cd0e1b3d82ffd2b10/pytz-2024.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/12/24/93293d0be0db9da1ed8dfc5e6af700fdd40e8f10a928704dd179db9f03c1/responses-0.25.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0f/f7/a59a673594e6c2ff2dbc44b00fd4ecdec2fc399bb6a7bd82d612699a0121/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c5/70/899b03cbb3eb48ed0507d4b32b6f7aee562bc618ef9ffda855ec98c0461a/ruff-0.6.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/3c/4a/b221409913760d26cf4498b7b1741d510c82d3ad38381984a3ddc135ec66/s3transfer-0.10.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/9c/9ad11ac06b97e55ada655f8a6bea9d1d3f06e120b178cd578d80e558191d/setuptools-74.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/d8/45ba6097c39ba44d9f0e1462fb232e13ca4ddb5aea93a385dcfa964687da/sphinx-6.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/2e/e6129761dd5588a5623c6051c31e45935b72a5b17ed87b209e39a0b2a25c/SQLAlchemy-2.0.34-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/90/1a/8853ba4cea1ec99535ac9be5795a50ca92cddd04d57bbaa56e866cb7548c/starlette-0.38.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7d/84/f666d43653ff81e5f3fba622867cb6dcd463a9d626a050dbda9bd7a6afff/testcontainers-4.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b7/8a/d82202c9f89eab30f9fc05380daae87d617e2ad11571ab23d7c13a29bb54/toolz-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/de/be0ba39ee73760bf33329b7c6f95bc67e96593c69c881671e312538e24bb/typeguard-4.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/69/7a/98f5d2493a652cec05d3b09be59202d202004a41fca9c70d224782611365/types_cffi-1.16.0.20240331-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/00/0e/0dc8a4b0ce16bb585a8333e8b3a3d6bb15d22cc203e98ed9fa950276b8fd/types_protobuf-3.19.22-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/98/05/c868a850b6fbb79c26f5f299b768ee0adc1f9816d3461dcf4287916f655b/types_pyOpenSSL-24.1.0.20240722-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/aa/4c/5c684b333135a6fb085bb5a5bdfd962937f80bec06745a88fd551e29f4d9/types_python_dateutil-2.9.0.20240906-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e8/8d/f5dc5239d59bb4a7b58e2b6d0dc6f2c2ba797b110f83cdda8479508c63dd/types_pytz-2024.1.0.20240417-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f3/ad/ffbad24e2bc8f20bf047ec22af0c0a92f6ce2071eb21c9103df600cda6de/types_PyYAML-6.0.12.20240808-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e5/51/c65f5729c1adb5f5a3f19fce0f500c19196cd1f91c00815fc573ceadc7f5/types_redis-4.6.0.20240903-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/c7/024171d587afe75934a6f779922d24fcc6dd468e947c74598eb17840e229/types_requests-2.30.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f6/5a/636fbcd7baf3d4d9f971581587bafba37d8b3dff498233be43f394e0eb9f/types_setuptools-74.1.0.20240907-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f0/17/d53c0bb370100313df6800e9096bdfc27b32b8e4a9390bfb35bc4b17db78/types_tabulate-0.9.0.20240106-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/11/7b/3fc711b2efea5e85a7a0bbfe269ea944aa767bbba5ec52f9ee45d362ccf3/types_urllib3-1.26.25.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/58/f9c9e6be752e9fcb8b6a0ee9fb87e6e7a1f6bcab2cdc73f02bb7ba91ada0/tzdata-2024.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f5/8e/cdc7d6263db313030e4c257dd5ba3909ebc4e4fb53ad62d5f09b1a2f5458/uvicorn-0.30.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/f8/5ceea6876154d926604f10c1dd896adf9bce6d55a55911364337b8a5ed8d/uvloop-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/dd/af/4a7f56bb73ede17f6195aaf03353a1c1dd1381ba0aa2e3b786f7ec9fe8aa/virtualenv-20.24.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/69/e1da9d34da7fc59db358424f5d89a56aaafe09f6961b64e36457a80a7194/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/6e/eaf95894042ba8a05a125fe8bcf9ee3572fef6edbcbf49478f4991c027cc/websockets-13.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4b/84/997bbf7c2bf2dc3f09565c6d0b4959fefe5355c18c4096cfd26d83e0785b/werkzeug-3.0.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1b/d1/9babe2ccaecff775992753d8686970b1e2755d21c8a63be73aba7a4e7d77/wheel-0.44.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/94/db/fd0326e331726f07ff7f40675cd86aa804bfd2e5016c727fa761c934990e/xmltodict-0.13.0-py2.py3-none-any.whl + - pypi: . +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23621 + timestamp: 1650670423406 +- kind: pypi + name: alabaster + version: 0.7.16 + url: https://files.pythonhosted.org/packages/32/34/d4e1c02d3bee589efb5dfa17f88ea08bdb3e3eac12bc475462aec52ed223/alabaster-0.7.16-py3-none-any.whl + sha256: b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92 + requires_python: '>=3.9' +- kind: pypi + name: annotated-types + version: 0.7.0 + url: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + sha256: 1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 + requires_dist: + - typing-extensions>=4.0.0 ; python_version < '3.9' + requires_python: '>=3.8' +- kind: pypi + name: anyio + version: 4.4.0 + url: https://files.pythonhosted.org/packages/7b/a2/10639a79341f6c019dedc95bd48a4928eed9f1d1197f4c04f546fc7ae0ff/anyio-4.4.0-py3-none-any.whl + sha256: c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7 + requires_dist: + - idna>=2.8 + - sniffio>=1.1 + - exceptiongroup>=1.0.2 ; python_version < '3.11' + - typing-extensions>=4.1 ; python_version < '3.11' + - packaging ; extra == 'doc' + - sphinx>=7 ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - sphinx-autodoc-typehints>=1.2.0 ; extra == 'doc' + - anyio[trio] ; extra == 'test' + - coverage[toml]>=7 ; extra == 'test' + - exceptiongroup>=1.2.0 ; extra == 'test' + - hypothesis>=4.0 ; extra == 'test' + - psutil>=5.9 ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - pytest-mock>=3.6.1 ; extra == 'test' + - trustme ; extra == 'test' + - uvloop>=0.17 ; (platform_python_implementation == 'CPython' and platform_system != 'Windows') and extra == 'test' + - trio>=0.23 ; extra == 'trio' + requires_python: '>=3.8' +- kind: pypi + name: assertpy + version: '1.1' + url: https://files.pythonhosted.org/packages/4f/39/720b5d4463612a40a166d00999cbb715fce3edaf08a9a7588ba5985699ec/assertpy-1.1.tar.gz + sha256: acc64329934ad71a3221de185517a43af33e373bb44dc05b5a9b174394ef4833 +- kind: pypi + name: async-property + version: 0.2.2 + url: https://files.pythonhosted.org/packages/c7/80/9f608d13b4b3afcebd1dd13baf9551c95fc424d6390e4b1cfd7b1810cd06/async_property-0.2.2-py2.py3-none-any.whl + sha256: 8924d792b5843994537f8ed411165700b27b2bd966cefc4daeefc1253442a9d7 +- kind: pypi + name: attrs + version: 24.2.0 + url: https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl + sha256: 81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 + requires_dist: + - importlib-metadata ; python_version < '3.8' + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'benchmark' + - hypothesis ; extra == 'benchmark' + - mypy>=1.11.1 ; (platform_python_implementation == 'CPython' and python_version >= '3.9') and extra == 'benchmark' + - pympler ; extra == 'benchmark' + - pytest-codspeed ; extra == 'benchmark' + - pytest-mypy-plugins ; (platform_python_implementation == 'CPython' and python_version >= '3.9' and python_version < '3.13') and extra == 'benchmark' + - pytest-xdist[psutil] ; extra == 'benchmark' + - pytest>=4.3.0 ; extra == 'benchmark' + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'cov' + - coverage[toml]>=5.3 ; extra == 'cov' + - hypothesis ; extra == 'cov' + - mypy>=1.11.1 ; (platform_python_implementation == 'CPython' and python_version >= '3.9') and extra == 'cov' + - pympler ; extra == 'cov' + - pytest-mypy-plugins ; (platform_python_implementation == 'CPython' and python_version >= '3.9' and python_version < '3.13') and extra == 'cov' + - pytest-xdist[psutil] ; extra == 'cov' + - pytest>=4.3.0 ; extra == 'cov' + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'dev' + - hypothesis ; extra == 'dev' + - mypy>=1.11.1 ; (platform_python_implementation == 'CPython' and python_version >= '3.9') and extra == 'dev' + - pre-commit ; extra == 'dev' + - pympler ; extra == 'dev' + - pytest-mypy-plugins ; (platform_python_implementation == 'CPython' and python_version >= '3.9' and python_version < '3.13') and extra == 'dev' + - pytest-xdist[psutil] ; extra == 'dev' + - pytest>=4.3.0 ; extra == 'dev' + - cogapp ; extra == 'docs' + - furo ; extra == 'docs' + - myst-parser ; extra == 'docs' + - sphinx ; extra == 'docs' + - sphinx-notfound-page ; extra == 'docs' + - sphinxcontrib-towncrier ; extra == 'docs' + - towncrier<24.7 ; extra == 'docs' + - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'tests' + - hypothesis ; extra == 'tests' + - mypy>=1.11.1 ; (platform_python_implementation == 'CPython' and python_version >= '3.9') and extra == 'tests' + - pympler ; extra == 'tests' + - pytest-mypy-plugins ; (platform_python_implementation == 'CPython' and python_version >= '3.9' and python_version < '3.13') and extra == 'tests' + - pytest-xdist[psutil] ; extra == 'tests' + - pytest>=4.3.0 ; extra == 'tests' + - mypy>=1.11.1 ; (platform_python_implementation == 'CPython' and python_version >= '3.9') and extra == 'tests-mypy' + - pytest-mypy-plugins ; (platform_python_implementation == 'CPython' and python_version >= '3.9' and python_version < '3.13') and extra == 'tests-mypy' + requires_python: '>=3.7' +- kind: pypi + name: babel + version: 2.16.0 + url: https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl + sha256: 368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b + requires_dist: + - pytz>=2015.7 ; python_version < '3.9' + - pytest>=6.0 ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - freezegun~=1.0 ; extra == 'dev' + requires_python: '>=3.8' +- kind: pypi + name: bigtree + version: 0.21.1 + url: https://files.pythonhosted.org/packages/54/56/84dd54762c8baa741571a756b7384e62fa82a176536cc608688d8dbbc1fd/bigtree-0.21.1-py3-none-any.whl + sha256: 838c1764356d28dfb5e1d7533affa0f4b144ecbee2f64add0d83c17a36a36e92 + requires_dist: + - matplotlib ; extra == 'all' + - pandas ; extra == 'all' + - pillow ; extra == 'all' + - polars ; extra == 'all' + - pydot ; extra == 'all' + - pillow ; extra == 'image' + - pydot ; extra == 'image' + - matplotlib ; extra == 'matplotlib' + - pandas ; extra == 'pandas' + - polars ; extra == 'polars' + requires_python: '>=3.8' +- kind: pypi + name: boto3 + version: 1.35.15 + url: https://files.pythonhosted.org/packages/4f/3f/dc04c5031581cb55e178e7305ad32fe1ecfa8691fa1092c09f772c44f81c/boto3-1.35.15-py3-none-any.whl + sha256: c8e3567a843bee89b826b71916748088386ccd48014f0f55f56288215a686048 + requires_dist: + - botocore<1.36.0,>=1.35.15 + - jmespath<2.0.0,>=0.7.1 + - s3transfer<0.11.0,>=0.10.0 + - botocore[crt]<2.0a0,>=1.21.0 ; extra == 'crt' + requires_python: '>=3.8' +- kind: pypi + name: botocore + version: 1.35.15 + url: https://files.pythonhosted.org/packages/f2/d0/4f70a85bf4d939b4231a6bc305736f4a78ab724b35fde824ce219331c748/botocore-1.35.15-py3-none-any.whl + sha256: a01a7668941c9276ca7697fb0b09a47ab1f13e585c5ca6551270528f4e086de8 + requires_dist: + - jmespath<2.0.0,>=0.7.1 + - python-dateutil<3.0.0,>=2.1 + - urllib3<1.27,>=1.25.4 ; python_version < '3.10' + - urllib3!=2.2.0,<3,>=1.25.4 ; python_version >= '3.10' + - awscrt==0.21.2 ; extra == 'crt' + requires_python: '>=3.8' +- kind: pypi + name: build + version: 1.2.2 + url: https://files.pythonhosted.org/packages/91/fd/e4bda6228637ecae5732162b5ac2a5a822e2ba8e546eb4997cde51b231a3/build-1.2.2-py3-none-any.whl + sha256: 277ccc71619d98afdd841a0e96ac9fe1593b823af481d3b0cea748e8894e0613 + requires_dist: + - packaging>=19.1 + - pyproject-hooks + - colorama ; os_name == 'nt' + - importlib-metadata>=4.6 ; python_full_version < '3.10.2' + - tomli>=1.1.0 ; python_version < '3.11' + - furo>=2023.8.17 ; extra == 'docs' + - sphinx~=7.0 ; extra == 'docs' + - sphinx-argparse-cli>=1.5 ; extra == 'docs' + - sphinx-autodoc-typehints>=1.10 ; extra == 'docs' + - sphinx-issues>=3.0.0 ; extra == 'docs' + - build[uv,virtualenv] ; extra == 'test' + - filelock>=3 ; extra == 'test' + - pytest>=6.2.4 ; extra == 'test' + - pytest-cov>=2.12 ; extra == 'test' + - pytest-mock>=2 ; extra == 'test' + - pytest-rerunfailures>=9.1 ; extra == 'test' + - pytest-xdist>=1.34 ; extra == 'test' + - wheel>=0.36.0 ; extra == 'test' + - setuptools>=42.0.0 ; extra == 'test' and python_version < '3.10' + - setuptools>=56.0.0 ; extra == 'test' and python_version == '3.10' + - setuptools>=56.0.0 ; extra == 'test' and python_version == '3.11' + - setuptools>=67.8.0 ; extra == 'test' and python_version >= '3.12' + - build[uv] ; extra == 'typing' + - importlib-metadata>=5.1 ; extra == 'typing' + - mypy~=1.9.0 ; extra == 'typing' + - tomli ; extra == 'typing' + - typing-extensions>=3.7.4.3 ; extra == 'typing' + - uv>=0.1.18 ; extra == 'uv' + - virtualenv>=20.0.35 ; extra == 'virtualenv' + requires_python: '>=3.8' +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea + md5: c27d1c142233b5bc9ca570c6e2e0c244 + license: ISC + purls: [] + size: 159003 + timestamp: 1725018903918 +- kind: pypi + name: cachetools + version: 5.5.0 + url: https://files.pythonhosted.org/packages/a4/07/14f8ad37f2d12a5ce41206c21820d8cb6561b728e51fad4530dff0552a67/cachetools-5.5.0-py3-none-any.whl + sha256: 02134e8439cdc2ffb62023ce1debca2944c3f289d66bb17ead3ab3dede74b292 + requires_python: '>=3.7' +- kind: pypi + name: certifi + version: 2024.8.30 + url: https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl + sha256: 922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8 + requires_python: '>=3.6' +- kind: pypi + name: cffi + version: 1.17.1 + url: https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93 + requires_dist: + - pycparser + requires_python: '>=3.8' +- kind: pypi + name: cfgv + version: 3.4.0 + url: https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl + sha256: b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9 + requires_python: '>=3.8' +- kind: pypi + name: charset-normalizer + version: 3.3.2 + url: https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b + requires_python: '>=3.7.0' +- kind: pypi + name: click + version: 8.1.7 + url: https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl + sha256: ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 + requires_dist: + - colorama ; platform_system == 'Windows' + - importlib-metadata ; python_version < '3.8' + requires_python: '>=3.7' +- kind: pypi + name: cloudpickle + version: 3.0.0 + url: https://files.pythonhosted.org/packages/96/43/dae06432d0c4b1dc9e9149ad37b4ca8384cf6eb7700cd9215b177b914f0a/cloudpickle-3.0.0-py3-none-any.whl + sha256: 246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7 + requires_python: '>=3.8' +- kind: pypi + name: colorama + version: 0.4.6 + url: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl + sha256: 4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 + requires_python: '!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7' +- kind: pypi + name: coverage + version: 7.6.1 + url: https://files.pythonhosted.org/packages/1f/0f/c890339dd605f3ebc269543247bdd43b703cce6825b5ed42ff5f2d6122c7/coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca + requires_dist: + - tomli ; python_full_version <= '3.11.0a6' and extra == 'toml' + requires_python: '>=3.8' +- kind: pypi + name: cryptography + version: 42.0.8 + url: https://files.pythonhosted.org/packages/fa/e2/b7e6e8c261536c489d9cf908769880d94bd5d9a187e166b0dc838d2e6a56/cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl + sha256: 9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7 + requires_dist: + - cffi>=1.12 ; platform_python_implementation != 'PyPy' + - sphinx>=5.3.0 ; extra == 'docs' + - sphinx-rtd-theme>=1.1.1 ; extra == 'docs' + - pyenchant>=1.6.11 ; extra == 'docstest' + - readme-renderer ; extra == 'docstest' + - sphinxcontrib-spelling>=4.0.1 ; extra == 'docstest' + - nox ; extra == 'nox' + - ruff ; extra == 'pep8test' + - mypy ; extra == 'pep8test' + - check-sdist ; extra == 'pep8test' + - click ; extra == 'pep8test' + - build ; extra == 'sdist' + - bcrypt>=3.1.5 ; extra == 'ssh' + - pytest>=6.2.0 ; extra == 'test' + - pytest-benchmark ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-xdist ; extra == 'test' + - pretend ; extra == 'test' + - certifi ; extra == 'test' + - pytest-randomly ; extra == 'test-randomorder' + requires_python: '>=3.7' +- kind: pypi + name: dask + version: 2024.8.2 + url: https://files.pythonhosted.org/packages/ad/8f/65830f3db64bd8a9a67e6e19c209e236689ea46c5871a536cb187fe53ab1/dask-2024.8.2-py3-none-any.whl + sha256: 484c317ee870140dbeccc759a91fd98821bba98d71a43eda7856fc9e859b03a1 + requires_dist: + - click>=8.1 + - cloudpickle>=3.0.0 + - fsspec>=2021.9.0 + - packaging>=20.0 + - partd>=1.4.0 + - pyyaml>=5.3.1 + - toolz>=0.10.0 + - importlib-metadata>=4.13.0 ; python_version < '3.12' + - numpy>=1.24 ; extra == 'array' + - dask[array,dataframe,diagnostics,distributed] ; extra == 'complete' + - pyarrow>=14.0.1 ; extra == 'complete' + - lz4>=4.3.2 ; extra == 'complete' + - dask[array] ; extra == 'dataframe' + - pandas>=2.0 ; extra == 'dataframe' + - dask-expr<1.2,>=1.1 ; extra == 'dataframe' + - bokeh>=2.4.2 ; extra == 'diagnostics' + - jinja2>=2.10.3 ; extra == 'diagnostics' + - distributed==2024.8.2 ; extra == 'distributed' + - pandas[test] ; extra == 'test' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-rerunfailures ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - pre-commit ; extra == 'test' + requires_python: '>=3.10' +- kind: pypi + name: dask-expr + version: 1.1.13 + url: https://files.pythonhosted.org/packages/1f/61/1b8380ece60b69e081863eaad58acf05833f2e52e3d834334567c4bb49bc/dask_expr-1.1.13-py3-none-any.whl + sha256: 0a68a8d18cae72b172ee3afc3f33253f065becbf8fbf9f3ee43e665ec5499112 + requires_dist: + - dask==2024.8.2 + - pyarrow>=14.0.1 + - pandas>=2 + - crick ; extra == 'analyze' + - distributed ; extra == 'analyze' + requires_python: '>=3.10' +- kind: pypi + name: deprecation + version: 2.1.0 + url: https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl + sha256: a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a + requires_dist: + - packaging +- kind: pypi + name: dill + version: 0.3.8 + url: https://files.pythonhosted.org/packages/c9/7a/cef76fd8438a42f96db64ddaa85280485a9c395e7df3db8158cfec1eee34/dill-0.3.8-py3-none-any.whl + sha256: c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7 + requires_dist: + - objgraph>=1.7.2 ; extra == 'graph' + - gprof2dot>=2022.7.29 ; extra == 'profile' + requires_python: '>=3.8' +- kind: pypi + name: distlib + version: 0.3.8 + url: https://files.pythonhosted.org/packages/8e/41/9307e4f5f9976bc8b7fea0b66367734e8faf3ec84bc0d412d8cfabbb66cd/distlib-0.3.8-py2.py3-none-any.whl + sha256: 034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784 +- kind: pypi + name: docker + version: 7.1.0 + url: https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl + sha256: c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0 + requires_dist: + - pywin32>=304 ; sys_platform == 'win32' + - requests>=2.26.0 + - urllib3>=1.26.0 + - coverage==7.2.7 ; extra == 'dev' + - pytest-cov==4.1.0 ; extra == 'dev' + - pytest-timeout==2.1.0 ; extra == 'dev' + - pytest==7.4.2 ; extra == 'dev' + - ruff==0.1.8 ; extra == 'dev' + - myst-parser==0.18.0 ; extra == 'docs' + - sphinx==5.1.1 ; extra == 'docs' + - paramiko>=2.4.3 ; extra == 'ssh' + - websocket-client>=1.3.0 ; extra == 'websockets' + requires_python: '>=3.8' +- kind: pypi + name: docutils + version: '0.19' + url: https://files.pythonhosted.org/packages/93/69/e391bd51bc08ed9141ecd899a0ddb61ab6465309f1eb470905c0c8868081/docutils-0.19-py3-none-any.whl + sha256: 5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc + requires_python: '>=3.7' +- kind: pypi + name: execnet + version: 2.1.1 + url: https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl + sha256: 26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc + requires_dist: + - hatch ; extra == 'testing' + - pre-commit ; extra == 'testing' + - pytest ; extra == 'testing' + - tox ; extra == 'testing' + requires_python: '>=3.8' +- kind: pypi + name: fastapi + version: 0.114.0 + url: https://files.pythonhosted.org/packages/d0/80/17037f322c280efbc623e341358d38d0299c6ee899d619a879b3593aa6da/fastapi-0.114.0-py3-none-any.whl + sha256: fee75aa1b1d3d73f79851c432497e4394e413e1dece6234f68d3ce250d12760a + requires_dist: + - starlette<0.39.0,>=0.37.2 + - pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4 + - typing-extensions>=4.8.0 + - fastapi-cli[standard]>=0.0.5 ; extra == 'standard' + - httpx>=0.23.0 ; extra == 'standard' + - jinja2>=2.11.2 ; extra == 'standard' + - python-multipart>=0.0.7 ; extra == 'standard' + - email-validator>=2.0.0 ; extra == 'standard' + - uvicorn[standard]>=0.12.0 ; extra == 'standard' + - fastapi-cli[standard]>=0.0.5 ; extra == 'all' + - httpx>=0.23.0 ; extra == 'all' + - jinja2>=2.11.2 ; extra == 'all' + - python-multipart>=0.0.7 ; extra == 'all' + - itsdangerous>=1.1.0 ; extra == 'all' + - pyyaml>=5.3.1 ; extra == 'all' + - ujson!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,>=4.0.1 ; extra == 'all' + - orjson>=3.2.1 ; extra == 'all' + - email-validator>=2.0.0 ; extra == 'all' + - uvicorn[standard]>=0.12.0 ; extra == 'all' + - pydantic-settings>=2.0.0 ; extra == 'all' + - pydantic-extra-types>=2.0.0 ; extra == 'all' + requires_python: '>=3.8' +- kind: pypi + name: feast + version: 0.1.dev3435+gcea6be8.d20240910 + path: . + sha256: d22858c636c4826e8a54e557ffd49e1824049970b63b4ce92d8c738112240836 + requires_dist: + - click<9.0.0,>=7.0.0 + - colorama<1,>=0.3.9 + - dill~=0.3.0 + - mypy-protobuf>=3.1 + - jinja2<4,>=2 + - jsonschema + - mmh3 + - numpy<2,>=1.22 + - pandas<3,>=1.4.3 + - protobuf<5.0.0,>=4.24.0 + - pyarrow>=4 + - pydantic>=2.0.0 + - pygments<3,>=2.12.0 + - pyyaml<7,>=5.4.0 + - requests + - sqlalchemy[mypy]>1 + - tabulate<1,>=0.8.0 + - tenacity<9,>=7 + - toml<1,>=0.10.0 + - tqdm<5,>=4 + - typeguard>=4.0.0 + - fastapi>=0.68.0 + - uvicorn[standard]<1,>=0.14.0 + - dask[dataframe]>=2024.2.1 + - prometheus-client + - psutil + - bigtree>=0.19.2 + - pyjwt + - kubernetes<=20.13.0 + - gunicorn ; platform_system != 'Windows' + - boto3<2,>=1.17.0 ; extra == 'aws' + - fsspec<=2024.1.0 ; extra == 'aws' + - aiobotocore<3,>2 ; extra == 'aws' + - azure-storage-blob>=0.37.0 ; extra == 'azure' + - azure-identity>=1.6.1 ; extra == 'azure' + - sqlalchemy>=1.4.19 ; extra == 'azure' + - pyodbc>=4.0.30 ; extra == 'azure' + - pymssql ; extra == 'azure' + - cassandra-driver<4,>=3.24.0 ; extra == 'cassandra' + - build ; extra == 'ci' + - virtualenv==20.23.0 ; extra == 'ci' + - cryptography<43,>=35.0 ; extra == 'ci' + - ruff>=0.3.3 ; extra == 'ci' + - grpcio-testing<2,>=1.56.2 ; extra == 'ci' + - httpx>=0.23.3 ; extra == 'ci' + - minio==7.1.0 ; extra == 'ci' + - mock==2.0.0 ; extra == 'ci' + - moto<5 ; extra == 'ci' + - mypy>=1.4.1 ; extra == 'ci' + - urllib3<3,>=1.25.4 ; extra == 'ci' + - psutil==5.9.0 ; extra == 'ci' + - py>=1.11.0 ; extra == 'ci' + - pytest<8,>=6.0.0 ; extra == 'ci' + - pytest-cov ; extra == 'ci' + - pytest-xdist ; extra == 'ci' + - pytest-benchmark<4,>=3.4.1 ; extra == 'ci' + - pytest-lazy-fixture==0.6.3 ; extra == 'ci' + - pytest-timeout==1.4.2 ; extra == 'ci' + - pytest-ordering~=0.6.0 ; extra == 'ci' + - pytest-mock==1.10.4 ; extra == 'ci' + - pytest-env ; extra == 'ci' + - sphinx<7,>4.0.0 ; extra == 'ci' + - testcontainers==4.4.0 ; extra == 'ci' + - python-keycloak==4.2.2 ; extra == 'ci' + - pre-commit<3.3.2 ; extra == 'ci' + - assertpy==1.1 ; extra == 'ci' + - pip-tools ; extra == 'ci' + - pybindgen ; extra == 'ci' + - types-protobuf~=3.19.22 ; extra == 'ci' + - types-python-dateutil ; extra == 'ci' + - types-pytz ; extra == 'ci' + - types-pyyaml ; extra == 'ci' + - types-redis ; extra == 'ci' + - types-requests<2.31.0 ; extra == 'ci' + - types-setuptools ; extra == 'ci' + - types-tabulate ; extra == 'ci' + - virtualenv<20.24.2 ; extra == 'ci' + - feast[aws,azure,cassandra,delta,duckdb,elasticsearch,gcp,ge,grpcio,hazelcast,hbase,ibis,k8s,mysql,opentelemetry,postgres,redis,singlestore,snowflake,spark,sqlite-vec,trino] ; extra == 'ci' + - deltalake ; extra == 'delta' + - feast[ci] ; extra == 'dev' + - feast[ci] ; extra == 'dosc' + - ibis-framework[duckdb]<10,>=9.0.0 ; extra == 'duckdb' + - elasticsearch>=8.13.0 ; extra == 'elasticsearch' + - google-api-core<3,>=1.23.0 ; extra == 'gcp' + - googleapis-common-protos<2,>=1.52.0 ; extra == 'gcp' + - google-cloud-bigquery[pandas]<4,>=2 ; extra == 'gcp' + - google-cloud-bigquery-storage<3,>=2.0.0 ; extra == 'gcp' + - google-cloud-datastore<3,>=2.16.0 ; extra == 'gcp' + - google-cloud-storage<3,>=1.34.0 ; extra == 'gcp' + - google-cloud-bigtable<3,>=2.11.0 ; extra == 'gcp' + - fsspec<=2024.1.0 ; extra == 'gcp' + - great-expectations>=0.15.41 ; extra == 'ge' + - grpcio<2,>=1.56.2 ; extra == 'grpcio' + - grpcio-tools<2,>=1.56.2 ; extra == 'grpcio' + - grpcio-reflection<2,>=1.56.2 ; extra == 'grpcio' + - grpcio-health-checking<2,>=1.56.2 ; extra == 'grpcio' + - hazelcast-python-client>=5.1 ; extra == 'hazelcast' + - happybase<3,>=1.2.0 ; extra == 'hbase' + - ibis-framework<10,>=9.0.0 ; extra == 'ibis' + - ibis-substrait>=4.0.0 ; extra == 'ibis' + - ikvpy>=0.0.36 ; extra == 'ikv' + - kubernetes<=20.13.0 ; extra == 'k8s' + - ibis-framework[mssql]<10,>=9.0.0 ; extra == 'mssql' + - pymysql ; extra == 'mysql' + - types-pymysql ; extra == 'mysql' + - prometheus-client ; extra == 'opentelemetry' + - psutil ; extra == 'opentelemetry' + - psycopg[binary,pool]<4,>=3.0.0 ; extra == 'postgres' + - redis<5,>=4.2.2 ; extra == 'redis' + - hiredis<3,>=2.0.0 ; extra == 'redis' + - singlestoredb ; extra == 'singlestore' + - snowflake-connector-python[pandas]<4,>=3.7 ; extra == 'snowflake' + - pyspark<4,>=3.0.0 ; extra == 'spark' + - sqlite-vec==0.1.1 ; extra == 'sqlite-vec' + - trino<0.400.0,>=0.305.0 ; extra == 'trino' + - regex ; extra == 'trino' + requires_python: '>=3.9.0' + editable: true +- kind: pypi + name: filelock + version: 3.16.0 + url: https://files.pythonhosted.org/packages/2f/95/f9310f35376024e1086c59cbb438d319fc9a4ef853289ce7c661539edbd4/filelock-3.16.0-py3-none-any.whl + sha256: f6ed4c963184f4c84dd5557ce8fece759a3724b37b80c6c4f20a2f63a4dc6609 + requires_dist: + - furo>=2024.8.6 ; extra == 'docs' + - sphinx-autodoc-typehints!=1.23.4,>=2.4 ; extra == 'docs' + - sphinx>=8.0.2 ; extra == 'docs' + - covdefaults>=2.3 ; extra == 'testing' + - coverage>=7.6.1 ; extra == 'testing' + - diff-cover>=9.1.1 ; extra == 'testing' + - pytest-asyncio>=0.24 ; extra == 'testing' + - pytest-cov>=5 ; extra == 'testing' + - pytest-mock>=3.14 ; extra == 'testing' + - pytest-timeout>=2.3.1 ; extra == 'testing' + - pytest>=8.3.2 ; extra == 'testing' + - virtualenv>=20.26.3 ; extra == 'testing' + - typing-extensions>=4.12.2 ; python_version < '3.11' and extra == 'typing' + requires_python: '>=3.8' +- kind: pypi + name: fsspec + version: 2024.9.0 + url: https://files.pythonhosted.org/packages/1d/a0/6aaea0c2fbea2f89bfd5db25fb1e3481896a423002ebe4e55288907a97a3/fsspec-2024.9.0-py3-none-any.whl + sha256: a0947d552d8a6efa72cc2c730b12c41d043509156966cca4fb157b0f2a0c574b + requires_dist: + - adlfs ; extra == 'abfs' + - adlfs ; extra == 'adl' + - pyarrow>=1 ; extra == 'arrow' + - dask ; extra == 'dask' + - distributed ; extra == 'dask' + - pre-commit ; extra == 'dev' + - ruff ; extra == 'dev' + - numpydoc ; extra == 'doc' + - sphinx ; extra == 'doc' + - sphinx-design ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - yarl ; extra == 'doc' + - dropbox ; extra == 'dropbox' + - dropboxdrivefs ; extra == 'dropbox' + - requests ; extra == 'dropbox' + - adlfs ; extra == 'full' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'full' + - dask ; extra == 'full' + - distributed ; extra == 'full' + - dropbox ; extra == 'full' + - dropboxdrivefs ; extra == 'full' + - fusepy ; extra == 'full' + - gcsfs ; extra == 'full' + - libarchive-c ; extra == 'full' + - ocifs ; extra == 'full' + - panel ; extra == 'full' + - paramiko ; extra == 'full' + - pyarrow>=1 ; extra == 'full' + - pygit2 ; extra == 'full' + - requests ; extra == 'full' + - s3fs ; extra == 'full' + - smbprotocol ; extra == 'full' + - tqdm ; extra == 'full' + - fusepy ; extra == 'fuse' + - gcsfs ; extra == 'gcs' + - pygit2 ; extra == 'git' + - requests ; extra == 'github' + - gcsfs ; extra == 'gs' + - panel ; extra == 'gui' + - pyarrow>=1 ; extra == 'hdfs' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'http' + - libarchive-c ; extra == 'libarchive' + - ocifs ; extra == 'oci' + - s3fs ; extra == 's3' + - paramiko ; extra == 'sftp' + - smbprotocol ; extra == 'smb' + - paramiko ; extra == 'ssh' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'test' + - numpy ; extra == 'test' + - pytest ; extra == 'test' + - pytest-asyncio!=0.22.0 ; extra == 'test' + - pytest-benchmark ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mock ; extra == 'test' + - pytest-recording ; extra == 'test' + - pytest-rerunfailures ; extra == 'test' + - requests ; extra == 'test' + - aiobotocore<3.0.0,>=2.5.4 ; extra == 'test-downstream' + - dask-expr ; extra == 'test-downstream' + - dask[dataframe,test] ; extra == 'test-downstream' + - moto[server]<5,>4 ; extra == 'test-downstream' + - pytest-timeout ; extra == 'test-downstream' + - xarray ; extra == 'test-downstream' + - adlfs ; extra == 'test-full' + - aiohttp!=4.0.0a0,!=4.0.0a1 ; extra == 'test-full' + - cloudpickle ; extra == 'test-full' + - dask ; extra == 'test-full' + - distributed ; extra == 'test-full' + - dropbox ; extra == 'test-full' + - dropboxdrivefs ; extra == 'test-full' + - fastparquet ; extra == 'test-full' + - fusepy ; extra == 'test-full' + - gcsfs ; extra == 'test-full' + - jinja2 ; extra == 'test-full' + - kerchunk ; extra == 'test-full' + - libarchive-c ; extra == 'test-full' + - lz4 ; extra == 'test-full' + - notebook ; extra == 'test-full' + - numpy ; extra == 'test-full' + - ocifs ; extra == 'test-full' + - pandas ; extra == 'test-full' + - panel ; extra == 'test-full' + - paramiko ; extra == 'test-full' + - pyarrow ; extra == 'test-full' + - pyarrow>=1 ; extra == 'test-full' + - pyftpdlib ; extra == 'test-full' + - pygit2 ; extra == 'test-full' + - pytest ; extra == 'test-full' + - pytest-asyncio!=0.22.0 ; extra == 'test-full' + - pytest-benchmark ; extra == 'test-full' + - pytest-cov ; extra == 'test-full' + - pytest-mock ; extra == 'test-full' + - pytest-recording ; extra == 'test-full' + - pytest-rerunfailures ; extra == 'test-full' + - python-snappy ; extra == 'test-full' + - requests ; extra == 'test-full' + - smbprotocol ; extra == 'test-full' + - tqdm ; extra == 'test-full' + - urllib3 ; extra == 'test-full' + - zarr ; extra == 'test-full' + - zstandard ; extra == 'test-full' + - tqdm ; extra == 'tqdm' + requires_python: '>=3.8' +- kind: pypi + name: google-auth + version: 2.34.0 + url: https://files.pythonhosted.org/packages/bb/fb/9af9e3f2996677bdda72734482934fe85a3abde174e5f0783ac2f817ba98/google_auth-2.34.0-py2.py3-none-any.whl + sha256: 72fd4733b80b6d777dcde515628a9eb4a577339437012874ea286bca7261ee65 + requires_dist: + - cachetools<6.0,>=2.0.0 + - pyasn1-modules>=0.2.1 + - rsa<5,>=3.1.4 + - aiohttp<4.0.0.dev0,>=3.6.2 ; extra == 'aiohttp' + - requests<3.0.0.dev0,>=2.20.0 ; extra == 'aiohttp' + - cryptography ; extra == 'enterprise-cert' + - pyopenssl ; extra == 'enterprise-cert' + - pyopenssl>=20.0.0 ; extra == 'pyopenssl' + - cryptography>=38.0.3 ; extra == 'pyopenssl' + - pyu2f>=0.1.5 ; extra == 'reauth' + - requests<3.0.0.dev0,>=2.20.0 ; extra == 'requests' + requires_python: '>=3.7' +- kind: pypi + name: greenlet + version: 3.0.3 + url: https://files.pythonhosted.org/packages/bd/37/56b0da468a85e7704f3b2bc045015301bdf4be2184a44868c71f6dca6fe2/greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + sha256: fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf + requires_dist: + - sphinx ; extra == 'docs' + - furo ; extra == 'docs' + - objgraph ; extra == 'test' + - psutil ; extra == 'test' + requires_python: '>=3.7' +- kind: pypi + name: grpcio + version: 1.66.1 + url: https://files.pythonhosted.org/packages/1d/6c/a813a5b6d716cbc5cc3e496b186b6878816bf5f32aa7f7ae5f9d8dc5e669/grpcio-1.66.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 84ca1be089fb4446490dd1135828bd42a7c7f8421e74fa581611f7afdf7ab761 + requires_dist: + - grpcio-tools>=1.66.1 ; extra == 'protobuf' + requires_python: '>=3.8' +- kind: pypi + name: grpcio-testing + version: 1.62.3 + url: https://files.pythonhosted.org/packages/b2/23/55d40e1bf54c141f541ab31b4b4b0f58610440c8837b1406f3467c2b4853/grpcio_testing-1.62.3-py3-none-any.whl + sha256: 06a4d7eb30d22f91368aa7f48bfc33563da13b9d951314455ca8c9c987fb75bb + requires_dist: + - protobuf>=4.21.6 + - grpcio>=1.62.3 +- kind: pypi + name: gunicorn + version: 23.0.0 + url: https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl + sha256: ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d + requires_dist: + - packaging + - importlib-metadata ; python_version < '3.8' + - eventlet!=0.36.0,>=0.24.1 ; extra == 'eventlet' + - gevent>=1.4.0 ; extra == 'gevent' + - setproctitle ; extra == 'setproctitle' + - gevent ; extra == 'testing' + - eventlet ; extra == 'testing' + - coverage ; extra == 'testing' + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - tornado>=0.2 ; extra == 'tornado' + requires_python: '>=3.7' +- kind: pypi + name: h11 + version: 0.14.0 + url: https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl + sha256: e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 + requires_dist: + - typing-extensions ; python_version < '3.8' + requires_python: '>=3.7' +- kind: pypi + name: httpcore + version: 1.0.5 + url: https://files.pythonhosted.org/packages/78/d4/e5d7e4f2174f8a4d63c8897d79eb8fe2503f7ecc03282fee1fa2719c2704/httpcore-1.0.5-py3-none-any.whl + sha256: 421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5 + requires_dist: + - certifi + - h11<0.15,>=0.13 + - anyio<5.0,>=4.0 ; extra == 'asyncio' + - h2<5,>=3 ; extra == 'http2' + - socksio==1.* ; extra == 'socks' + - trio<0.26.0,>=0.22.0 ; extra == 'trio' + requires_python: '>=3.8' +- kind: pypi + name: httptools + version: 0.6.1 + url: https://files.pythonhosted.org/packages/a2/9a/aa406864f3108e06f7320425a528ff8267124dead1fd72a3e9da2067f893/httptools-0.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 93ad80d7176aa5788902f207a4e79885f0576134695dfb0fefc15b7a4648d503 + requires_dist: + - cython<0.30.0,>=0.29.24 ; extra == 'test' + requires_python: '>=3.8.0' +- kind: pypi + name: httpx + version: 0.27.2 + url: https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl + sha256: 7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0 + requires_dist: + - anyio + - certifi + - httpcore==1.* + - idna + - sniffio + - brotli ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi ; platform_python_implementation != 'CPython' and extra == 'brotli' + - click==8.* ; extra == 'cli' + - pygments==2.* ; extra == 'cli' + - rich<14,>=10 ; extra == 'cli' + - h2<5,>=3 ; extra == 'http2' + - socksio==1.* ; extra == 'socks' + - zstandard>=0.18.0 ; extra == 'zstd' + requires_python: '>=3.8' +- kind: pypi + name: identify + version: 2.6.0 + url: https://files.pythonhosted.org/packages/24/6c/a4f39abe7f19600b74528d0c717b52fff0b300bb0161081510d39c53cb00/identify-2.6.0-py2.py3-none-any.whl + sha256: e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0 + requires_dist: + - ukkonen ; extra == 'license' + requires_python: '>=3.8' +- kind: pypi + name: idna + version: '3.8' + url: https://files.pythonhosted.org/packages/22/7e/d71db821f177828df9dea8c42ac46473366f191be53080e552e628aad991/idna-3.8-py3-none-any.whl + sha256: 050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac + requires_python: '>=3.6' +- kind: pypi + name: imagesize + version: 1.4.1 + url: https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl + sha256: 0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- kind: pypi + name: iniconfig + version: 2.0.0 + url: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + sha256: b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 + requires_python: '>=3.7' +- kind: pypi + name: jinja2 + version: 3.1.4 + url: https://files.pythonhosted.org/packages/31/80/3a54838c3fb461f6fec263ebf3a3a41771bd05190238de3486aae8540c36/jinja2-3.1.4-py3-none-any.whl + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- kind: pypi + name: jmespath + version: 1.0.1 + url: https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl + sha256: 02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980 + requires_python: '>=3.7' +- kind: pypi + name: jsonschema + version: 4.23.0 + url: https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl + sha256: fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566 + requires_dist: + - attrs>=22.2.0 + - importlib-resources>=1.4.0 ; python_version < '3.9' + - jsonschema-specifications>=2023.3.6 + - pkgutil-resolve-name>=1.3.10 ; python_version < '3.9' + - referencing>=0.28.4 + - rpds-py>=0.7.1 + - fqdn ; extra == 'format' + - idna ; extra == 'format' + - isoduration ; extra == 'format' + - jsonpointer>1.13 ; extra == 'format' + - rfc3339-validator ; extra == 'format' + - rfc3987 ; extra == 'format' + - uri-template ; extra == 'format' + - webcolors>=1.11 ; extra == 'format' + - fqdn ; extra == 'format-nongpl' + - idna ; extra == 'format-nongpl' + - isoduration ; extra == 'format-nongpl' + - jsonpointer>1.13 ; extra == 'format-nongpl' + - rfc3339-validator ; extra == 'format-nongpl' + - rfc3986-validator>0.1.0 ; extra == 'format-nongpl' + - uri-template ; extra == 'format-nongpl' + - webcolors>=24.6.0 ; extra == 'format-nongpl' + requires_python: '>=3.8' +- kind: pypi + name: jsonschema-specifications + version: 2023.12.1 + url: https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl + sha256: 87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c + requires_dist: + - importlib-resources>=1.4.0 ; python_version < '3.9' + - referencing>=0.31.0 + requires_python: '>=3.8' +- kind: pypi + name: jwcrypto + version: 1.5.6 + url: https://files.pythonhosted.org/packages/cd/58/4a1880ea64032185e9ae9f63940c9327c6952d5584ea544a8f66972f2fda/jwcrypto-1.5.6-py3-none-any.whl + sha256: 150d2b0ebbdb8f40b77f543fb44ffd2baeff48788be71f67f03566692fd55789 + requires_dist: + - cryptography>=3.4 + - typing-extensions>=4.5.0 + requires_python: '>=3.8' +- kind: pypi + name: kubernetes + version: 20.13.0 + url: https://files.pythonhosted.org/packages/32/a8/b771d543156d8fee42876f7bc57023194fc2627efb6049e1ec8b87860bab/kubernetes-20.13.0-py2.py3-none-any.whl + sha256: 7d32ea7f555813a141a0e912e7695d88f7213bb632a860ba79a963b43f7a6b18 + requires_dist: + - certifi>=14.5.14 + - six>=1.9.0 + - python-dateutil>=2.5.3 + - setuptools>=21.0.0 + - pyyaml>=5.4.1 + - google-auth>=1.0.1 + - websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 + - requests + - requests-oauthlib + - urllib3>=1.24.2 + - ipaddress>=1.0.17 ; python_version == '2.7' + - adal>=1.0.2 ; extra == 'adal' + requires_python: '>=3.6' +- kind: conda + name: ld_impl_linux-64 + version: '2.40' + build: hf3520f5_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda + sha256: 764b6950aceaaad0c67ef925417594dd14cd2e22fff864aeef455ac259263d15 + md5: b80f2f396ca2c28b8c14c437a4ed1e74 + constrains: + - binutils_impl_linux-64 2.40 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 707602 + timestamp: 1718625640445 +- kind: conda + name: libexpat + version: 2.6.3 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.3-h5888daf_0.conda + sha256: 4bb47bb2cd09898737a5211e2992d63c555d63715a07ba56eae0aff31fb89c22 + md5: 59f4c43bb1b5ef1c71946ff2cbf59524 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.3.* + license: MIT + license_family: MIT + purls: [] + size: 73616 + timestamp: 1725568742634 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + purls: [] + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libgcc + version: 14.1.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.1.0-h77fa898_1.conda + sha256: 10fa74b69266a2be7b96db881e18fa62cfa03082b65231e8d652e897c4b335a3 + md5: 002ef4463dd1e2b44a94a4ace468f5d2 + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.1.0 h77fa898_1 + - libgcc-ng ==14.1.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 846380 + timestamp: 1724801836552 +- kind: conda + name: libgcc-ng + version: 14.1.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h69a702a_1.conda + sha256: b91f7021e14c3d5c840fbf0dc75370d6e1f7c7ff4482220940eaafb9c64613b7 + md5: 1efc0ad219877a73ef977af7dbb51f17 + depends: + - libgcc 14.1.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 52170 + timestamp: 1724801842101 +- kind: conda + name: libgomp + version: 14.1.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_1.conda + sha256: c96724c8ae4ee61af7674c5d9e5a3fbcf6cd887a40ad5a52c99aa36f1d4f9680 + md5: 23c255b008c4f2ae008f81edcabaca89 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 460218 + timestamp: 1724801743478 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libsqlite + version: 3.46.1 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.1-hadc24fc_0.conda + sha256: 9851c049abafed3ee329d6c7c2033407e2fc269d33a75c071110ab52300002b0 + md5: 36f79405ab16bf271edb55b213836dac + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + purls: [] + size: 865214 + timestamp: 1725353659783 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libzlib + version: 1.3.1 + build: h4ab18f5_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda + sha256: adf6096f98b537a11ae3729eaa642b0811478f0ea0402ca67b5108fe2cb0010d + md5: 57d7dc60e9325e3de37ff8dffd18e814 + depends: + - libgcc-ng >=12 + constrains: + - zlib 1.3.1 *_1 + license: Zlib + license_family: Other + purls: [] + size: 61574 + timestamp: 1716874187109 +- kind: pypi + name: locket + version: 1.0.0 + url: https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl + sha256: b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- kind: pypi + name: markupsafe + version: 2.1.5 + url: https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 + requires_python: '>=3.7' +- kind: pypi + name: minio + version: 7.1.0 + url: https://files.pythonhosted.org/packages/b3/b4/4281ab6be6c7bae210b86956fc2d71e0848f2a37e95f102401fc1317529f/minio-7.1.0-py3-none-any.whl + sha256: c78d5559b3c37b0b3a09983aade272d6ec2a437e02335a44949f30000e5e46a4 + requires_dist: + - certifi + - urllib3 +- kind: pypi + name: mmh3 + version: 4.1.0 + url: https://files.pythonhosted.org/packages/4c/7b/bfeb68bee5bddc8baf7ef630b93edc0a533202d84eb076dbb6c77e7e5fd5/mmh3-4.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 3b02268be6e0a8eeb8a924d7db85f28e47344f35c438c1e149878bb1c47b1cd3 + requires_dist: + - mypy>=1.0 ; extra == 'test' + - pytest>=7.0.0 ; extra == 'test' +- kind: pypi + name: mock + version: 2.0.0 + url: https://files.pythonhosted.org/packages/e6/35/f187bdf23be87092bd0f1200d43d23076cee4d0dec109f195173fd3ebc79/mock-2.0.0-py2.py3-none-any.whl + sha256: 5ce3c71c5545b472da17b72268978914d0252980348636840bd34a00b5cc96c1 + requires_dist: + - pbr>=0.11 + - six>=1.9 + - funcsigs>=1 ; python_version < '3.3' + - sphinx ; (python_version < '3' or python_version >= '3.3') and extra == 'docs' + - pygments<2 ; (python_version < '3.3' and python_version >= '3') and extra == 'docs' + - jinja2<2.7 ; (python_version < '3.3' and python_version >= '3') and extra == 'docs' + - sphinx<1.3 ; (python_version < '3.3' and python_version >= '3') and extra == 'docs' + - unittest2>=1.1.0 ; extra == 'test' +- kind: pypi + name: moto + version: 4.2.14 + url: https://files.pythonhosted.org/packages/51/0f/ef410e6660d381e04cb6f33065d03b3aefd3444d558fcdd41ef235a1802c/moto-4.2.14-py2.py3-none-any.whl + sha256: 6d242dbbabe925bb385ddb6958449e5c827670b13b8e153ed63f91dbdb50372c + requires_dist: + - boto3>=1.9.201 + - botocore>=1.12.201 + - cryptography>=3.3.1 + - requests>=2.5 + - xmltodict + - werkzeug!=2.2.0,!=2.2.1,>=0.5 + - python-dateutil<3.0.0,>=2.1 + - responses>=0.13.0 + - jinja2>=2.10.1 + - importlib-metadata ; python_version < '3.8' + - python-jose[cryptography]<4.0.0,>=3.1.0 ; extra == 'all' + - ecdsa!=0.15 ; extra == 'all' + - docker>=3.0.0 ; extra == 'all' + - graphql-core ; extra == 'all' + - pyyaml>=5.1 ; extra == 'all' + - cfn-lint>=0.40.0 ; extra == 'all' + - sshpubkeys>=3.1.0 ; extra == 'all' + - openapi-spec-validator>=0.5.0 ; extra == 'all' + - pyparsing>=3.0.7 ; extra == 'all' + - jsondiff>=1.1.2 ; extra == 'all' + - py-partiql-parser==0.5.0 ; extra == 'all' + - aws-xray-sdk!=0.96,>=0.93 ; extra == 'all' + - setuptools ; extra == 'all' + - multipart ; extra == 'all' + - pyyaml>=5.1 ; extra == 'apigateway' + - python-jose[cryptography]<4.0.0,>=3.1.0 ; extra == 'apigateway' + - ecdsa!=0.15 ; extra == 'apigateway' + - openapi-spec-validator>=0.5.0 ; extra == 'apigateway' + - pyyaml>=5.1 ; extra == 'apigatewayv2' + - graphql-core ; extra == 'appsync' + - docker>=3.0.0 ; extra == 'awslambda' + - docker>=3.0.0 ; extra == 'batch' + - python-jose[cryptography]<4.0.0,>=3.1.0 ; extra == 'cloudformation' + - ecdsa!=0.15 ; extra == 'cloudformation' + - docker>=3.0.0 ; extra == 'cloudformation' + - graphql-core ; extra == 'cloudformation' + - pyyaml>=5.1 ; extra == 'cloudformation' + - cfn-lint>=0.40.0 ; extra == 'cloudformation' + - sshpubkeys>=3.1.0 ; extra == 'cloudformation' + - openapi-spec-validator>=0.5.0 ; extra == 'cloudformation' + - pyparsing>=3.0.7 ; extra == 'cloudformation' + - jsondiff>=1.1.2 ; extra == 'cloudformation' + - py-partiql-parser==0.5.0 ; extra == 'cloudformation' + - aws-xray-sdk!=0.96,>=0.93 ; extra == 'cloudformation' + - setuptools ; extra == 'cloudformation' + - python-jose[cryptography]<4.0.0,>=3.1.0 ; extra == 'cognitoidp' + - ecdsa!=0.15 ; extra == 'cognitoidp' + - docker>=3.0.0 ; extra == 'dynamodb' + - py-partiql-parser==0.5.0 ; extra == 'dynamodb' + - docker>=3.0.0 ; extra == 'dynamodbstreams' + - py-partiql-parser==0.5.0 ; extra == 'dynamodbstreams' + - sshpubkeys>=3.1.0 ; extra == 'ec2' + - pyparsing>=3.0.7 ; extra == 'glue' + - jsondiff>=1.1.2 ; extra == 'iotdata' + - python-jose[cryptography]<4.0.0,>=3.1.0 ; extra == 'proxy' + - ecdsa!=0.15 ; extra == 'proxy' + - docker>=2.5.1 ; extra == 'proxy' + - graphql-core ; extra == 'proxy' + - pyyaml>=5.1 ; extra == 'proxy' + - cfn-lint>=0.40.0 ; extra == 'proxy' + - sshpubkeys>=3.1.0 ; extra == 'proxy' + - openapi-spec-validator>=0.5.0 ; extra == 'proxy' + - pyparsing>=3.0.7 ; extra == 'proxy' + - jsondiff>=1.1.2 ; extra == 'proxy' + - py-partiql-parser==0.5.0 ; extra == 'proxy' + - aws-xray-sdk!=0.96,>=0.93 ; extra == 'proxy' + - setuptools ; extra == 'proxy' + - multipart ; extra == 'proxy' + - python-jose[cryptography]<4.0.0,>=3.1.0 ; extra == 'resourcegroupstaggingapi' + - ecdsa!=0.15 ; extra == 'resourcegroupstaggingapi' + - docker>=3.0.0 ; extra == 'resourcegroupstaggingapi' + - graphql-core ; extra == 'resourcegroupstaggingapi' + - pyyaml>=5.1 ; extra == 'resourcegroupstaggingapi' + - cfn-lint>=0.40.0 ; extra == 'resourcegroupstaggingapi' + - openapi-spec-validator>=0.5.0 ; extra == 'resourcegroupstaggingapi' + - pyparsing>=3.0.7 ; extra == 'resourcegroupstaggingapi' + - jsondiff>=1.1.2 ; extra == 'resourcegroupstaggingapi' + - py-partiql-parser==0.5.0 ; extra == 'resourcegroupstaggingapi' + - pyyaml>=5.1 ; extra == 's3' + - py-partiql-parser==0.5.0 ; extra == 's3' + - pyyaml>=5.1 ; extra == 's3crc32c' + - py-partiql-parser==0.5.0 ; extra == 's3crc32c' + - crc32c ; extra == 's3crc32c' + - python-jose[cryptography]<4.0.0,>=3.1.0 ; extra == 'server' + - ecdsa!=0.15 ; extra == 'server' + - docker>=3.0.0 ; extra == 'server' + - graphql-core ; extra == 'server' + - pyyaml>=5.1 ; extra == 'server' + - cfn-lint>=0.40.0 ; extra == 'server' + - sshpubkeys>=3.1.0 ; extra == 'server' + - openapi-spec-validator>=0.5.0 ; extra == 'server' + - pyparsing>=3.0.7 ; extra == 'server' + - jsondiff>=1.1.2 ; extra == 'server' + - py-partiql-parser==0.5.0 ; extra == 'server' + - aws-xray-sdk!=0.96,>=0.93 ; extra == 'server' + - setuptools ; extra == 'server' + - flask!=2.2.0,!=2.2.1 ; extra == 'server' + - flask-cors ; extra == 'server' + - pyyaml>=5.1 ; extra == 'ssm' + - aws-xray-sdk!=0.96,>=0.93 ; extra == 'xray' + - setuptools ; extra == 'xray' + requires_python: '>=3.7' +- kind: pypi + name: mypy + version: 1.11.2 + url: https://files.pythonhosted.org/packages/f3/3c/350a9da895f8a7e87ade0028b962be0252d152e0c2fbaafa6f0658b4d0d4/mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl + sha256: 6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987 + requires_dist: + - typing-extensions>=4.6.0 + - mypy-extensions>=1.0.0 + - tomli>=1.1.0 ; python_version < '3.11' + - psutil>=4.0 ; extra == 'dmypy' + - pip ; extra == 'install-types' + - setuptools>=50 ; extra == 'mypyc' + - lxml ; extra == 'reports' + requires_python: '>=3.8' +- kind: pypi + name: mypy-extensions + version: 1.0.0 + url: https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl + sha256: 4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d + requires_python: '>=3.5' +- kind: pypi + name: mypy-protobuf + version: 3.3.0 + url: https://files.pythonhosted.org/packages/d3/7b/b00434b3f508eb4bc637b83c2238cacaf1ce3cc5e540a2b76f5f99302446/mypy_protobuf-3.3.0-py3-none-any.whl + sha256: 15604f6943b16c05db646903261e3b3e775cf7f7990b7c37b03d043a907b650d + requires_dist: + - protobuf>=3.19.4 + - types-protobuf>=3.19.12 + requires_python: '>=3.7' +- kind: conda + name: ncurses + version: '6.5' + build: he02047a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + purls: [] + size: 889086 + timestamp: 1724658547447 +- kind: pypi + name: nodeenv + version: 1.9.1 + url: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl + sha256: ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*' +- kind: pypi + name: numpy + version: 1.26.4 + url: https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed + requires_python: '>=3.9' +- kind: pypi + name: oauthlib + version: 3.2.2 + url: https://files.pythonhosted.org/packages/7e/80/cab10959dc1faead58dc8384a781dfbf93cb4d33d50988f7a69f1b7c9bbe/oauthlib-3.2.2-py3-none-any.whl + sha256: 8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca + requires_dist: + - cryptography>=3.0.0 ; extra == 'rsa' + - blinker>=1.4.0 ; extra == 'signals' + - cryptography>=3.0.0 ; extra == 'signedtoken' + - pyjwt<3,>=2.0.0 ; extra == 'signedtoken' + requires_python: '>=3.6' +- kind: conda + name: openssl + version: 3.3.2 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.2-hb9d3cd8_0.conda + sha256: cee91036686419f6dd6086902acf7142b4916e1c4ba042e9ca23e151da012b6d + md5: 4d638782050ab6faa27275bed57e9b4e + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2891789 + timestamp: 1725410790053 +- kind: pypi + name: packaging + version: '24.1' + url: https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl + sha256: 5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124 + requires_python: '>=3.8' +- kind: pypi + name: pandas + version: 2.2.2 + url: https://files.pythonhosted.org/packages/40/10/79e52ef01dfeb1c1ca47a109a01a248754ebe990e159a844ece12914de83/pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad + requires_dist: + - numpy>=1.22.4 ; python_version < '3.11' + - numpy>=1.23.2 ; python_version == '3.11' + - numpy>=1.26.0 ; python_version >= '3.12' + - python-dateutil>=2.8.2 + - pytz>=2020.1 + - tzdata>=2022.7 + - hypothesis>=6.46.1 ; extra == 'test' + - pytest>=7.3.2 ; extra == 'test' + - pytest-xdist>=2.2.0 ; extra == 'test' + - pyarrow>=10.0.1 ; extra == 'pyarrow' + - bottleneck>=1.3.6 ; extra == 'performance' + - numba>=0.56.4 ; extra == 'performance' + - numexpr>=2.8.4 ; extra == 'performance' + - scipy>=1.10.0 ; extra == 'computation' + - xarray>=2022.12.0 ; extra == 'computation' + - fsspec>=2022.11.0 ; extra == 'fss' + - s3fs>=2022.11.0 ; extra == 'aws' + - gcsfs>=2022.11.0 ; extra == 'gcp' + - pandas-gbq>=0.19.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.0 ; extra == 'excel' + - python-calamine>=0.1.7 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.0.5 ; extra == 'excel' + - pyarrow>=10.0.1 ; extra == 'parquet' + - pyarrow>=10.0.1 ; extra == 'feather' + - tables>=3.8.0 ; extra == 'hdf5' + - pyreadstat>=1.2.0 ; extra == 'spss' + - sqlalchemy>=2.0.0 ; extra == 'postgresql' + - psycopg2>=2.9.6 ; extra == 'postgresql' + - adbc-driver-postgresql>=0.8.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.0 ; extra == 'mysql' + - pymysql>=1.0.2 ; extra == 'mysql' + - sqlalchemy>=2.0.0 ; extra == 'sql-other' + - adbc-driver-postgresql>=0.8.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=0.8.0 ; extra == 'sql-other' + - beautifulsoup4>=4.11.2 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'html' + - lxml>=4.9.2 ; extra == 'xml' + - matplotlib>=3.6.3 ; extra == 'plot' + - jinja2>=3.1.2 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.3.0 ; extra == 'clipboard' + - zstandard>=0.19.0 ; extra == 'compression' + - dataframe-api-compat>=0.1.7 ; extra == 'consortium-standard' + - adbc-driver-postgresql>=0.8.0 ; extra == 'all' + - adbc-driver-sqlite>=0.8.0 ; extra == 'all' + - beautifulsoup4>=4.11.2 ; extra == 'all' + - bottleneck>=1.3.6 ; extra == 'all' + - dataframe-api-compat>=0.1.7 ; extra == 'all' + - fastparquet>=2022.12.0 ; extra == 'all' + - fsspec>=2022.11.0 ; extra == 'all' + - gcsfs>=2022.11.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.46.1 ; extra == 'all' + - jinja2>=3.1.2 ; extra == 'all' + - lxml>=4.9.2 ; extra == 'all' + - matplotlib>=3.6.3 ; extra == 'all' + - numba>=0.56.4 ; extra == 'all' + - numexpr>=2.8.4 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.0 ; extra == 'all' + - pandas-gbq>=0.19.0 ; extra == 'all' + - psycopg2>=2.9.6 ; extra == 'all' + - pyarrow>=10.0.1 ; extra == 'all' + - pymysql>=1.0.2 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.0 ; extra == 'all' + - pytest>=7.3.2 ; extra == 'all' + - pytest-xdist>=2.2.0 ; extra == 'all' + - python-calamine>=0.1.7 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.3.0 ; extra == 'all' + - scipy>=1.10.0 ; extra == 'all' + - s3fs>=2022.11.0 ; extra == 'all' + - sqlalchemy>=2.0.0 ; extra == 'all' + - tables>=3.8.0 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2022.12.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.0.5 ; extra == 'all' + - zstandard>=0.19.0 ; extra == 'all' + requires_python: '>=3.9' +- kind: pypi + name: partd + version: 1.4.2 + url: https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl + sha256: 978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f + requires_dist: + - locket + - toolz + - numpy>=1.20.0 ; extra == 'complete' + - pandas>=1.3 ; extra == 'complete' + - pyzmq ; extra == 'complete' + - blosc ; extra == 'complete' + requires_python: '>=3.9' +- kind: pypi + name: pbr + version: 6.1.0 + url: https://files.pythonhosted.org/packages/1d/44/6a65ecd630393d47ad3e7d5354768cb7f9a10b3a0eb2cd8c6f52b28211ee/pbr-6.1.0-py2.py3-none-any.whl + sha256: a776ae228892d8013649c0aeccbb3d5f99ee15e005a4cbb7e61d55a067b28a2a + requires_python: '>=2.6' +- kind: pypi + name: pip + version: '24.2' + url: https://files.pythonhosted.org/packages/d4/55/90db48d85f7689ec6f81c0db0622d704306c5284850383c090e6c7195a5c/pip-24.2-py3-none-any.whl + sha256: 2cd581cf58ab7fcfca4ce8efa6dcacd0de5bf8d0a3eb9ec927e07405f4d9e2a2 + requires_python: '>=3.8' +- kind: pypi + name: pip-tools + version: 7.4.1 + url: https://files.pythonhosted.org/packages/0d/dc/38f4ce065e92c66f058ea7a368a9c5de4e702272b479c0992059f7693941/pip_tools-7.4.1-py3-none-any.whl + sha256: 4c690e5fbae2f21e87843e89c26191f0d9454f362d8acdbd695716493ec8b3a9 + requires_dist: + - build>=1.0.0 + - click>=8 + - pip>=22.2 + - pyproject-hooks + - setuptools + - wheel + - tomli ; python_version < '3.11' + - covdefaults ; extra == 'coverage' + - pytest-cov ; extra == 'coverage' + - pytest>=7.2.0 ; extra == 'testing' + - pytest-rerunfailures ; extra == 'testing' + - pytest-xdist ; extra == 'testing' + - tomli-w ; extra == 'testing' + - flit-core<4,>=2 ; extra == 'testing' + - poetry-core>=1.0.0 ; extra == 'testing' + requires_python: '>=3.8' +- kind: pypi + name: platformdirs + version: 3.11.0 + url: https://files.pythonhosted.org/packages/56/29/3ec311dc18804409ecf0d2b09caa976f3ae6215559306b5b530004e11156/platformdirs-3.11.0-py3-none-any.whl + sha256: e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e + requires_dist: + - typing-extensions>=4.7.1 ; python_version < '3.8' + - furo>=2023.7.26 ; extra == 'docs' + - proselint>=0.13 ; extra == 'docs' + - sphinx-autodoc-typehints>=1.24 ; extra == 'docs' + - sphinx>=7.1.1 ; extra == 'docs' + - appdirs==1.4.4 ; extra == 'test' + - covdefaults>=2.3 ; extra == 'test' + - pytest-cov>=4.1 ; extra == 'test' + - pytest-mock>=3.11.1 ; extra == 'test' + - pytest>=7.4 ; extra == 'test' + requires_python: '>=3.7' +- kind: pypi + name: pluggy + version: 1.5.0 + url: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + sha256: 44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 + requires_dist: + - pre-commit ; extra == 'dev' + - tox ; extra == 'dev' + - pytest ; extra == 'testing' + - pytest-benchmark ; extra == 'testing' + requires_python: '>=3.8' +- kind: pypi + name: pre-commit + version: 3.3.1 + url: https://files.pythonhosted.org/packages/77/39/86e07f4e9671ee9311fa4bafc41c66d6a907192707160e3f45272e78be38/pre_commit-3.3.1-py2.py3-none-any.whl + sha256: 218e9e3f7f7f3271ebc355a15598a4d3893ad9fc7b57fe446db75644543323b9 + requires_dist: + - cfgv>=2.0.0 + - identify>=1.0.0 + - nodeenv>=0.11.1 + - pyyaml>=5.1 + - virtualenv>=20.10.0 + requires_python: '>=3.8' +- kind: pypi + name: prometheus-client + version: 0.20.0 + url: https://files.pythonhosted.org/packages/c7/98/745b810d822103adca2df8decd4c0bbe839ba7ad3511af3f0d09692fc0f0/prometheus_client-0.20.0-py3-none-any.whl + sha256: cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7 + requires_dist: + - twisted ; extra == 'twisted' + requires_python: '>=3.8' +- kind: pypi + name: protobuf + version: 4.25.4 + url: https://files.pythonhosted.org/packages/ca/6c/cc7ab2fb3a4a7f07f211d8a7bbb76bba633eb09b148296dbd4281e217f95/protobuf-4.25.4-cp37-abi3-manylinux2014_x86_64.whl + sha256: 3319e073562e2515c6ddc643eb92ce20809f5d8f10fead3332f71c63be6a7040 + requires_python: '>=3.8' +- kind: pypi + name: psutil + version: 5.9.0 + url: https://files.pythonhosted.org/packages/47/b6/ea8a7728f096a597f0032564e8013b705aa992a0990becd773dcc4d7b4a7/psutil-5.9.0.tar.gz + sha256: 869842dbd66bb80c3217158e629d6fceaecc3a3166d3d1faee515b05dd26ca25 + requires_dist: + - ipaddress ; python_version < '3.0' and extra == 'test' + - mock ; python_version < '3.0' and extra == 'test' + - unittest2 ; python_version < '3.0' and extra == 'test' + - enum34 ; python_version <= '3.4' and extra == 'test' + - pywin32 ; sys_platform == 'win32' and extra == 'test' + - wmi ; sys_platform == 'win32' and extra == 'test' + requires_python: '>=2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- kind: pypi + name: py + version: 1.11.0 + url: https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl + sha256: 607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- kind: pypi + name: py-cpuinfo + version: 9.0.0 + url: https://files.pythonhosted.org/packages/e0/a9/023730ba63db1e494a271cb018dcd361bd2c917ba7004c3e49d5daf795a2/py_cpuinfo-9.0.0-py3-none-any.whl + sha256: 859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5 +- kind: pypi + name: pyarrow + version: 17.0.0 + url: https://files.pythonhosted.org/packages/f1/c4/9625418a1413005e486c006e56675334929fad864347c5ae7c1b2e7fe639/pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl + sha256: b0c6ac301093b42d34410b187bba560b17c0330f64907bfa4f7f7f2444b0cf9b + requires_dist: + - numpy>=1.16.6 + - pytest ; extra == 'test' + - hypothesis ; extra == 'test' + - cffi ; extra == 'test' + - pytz ; extra == 'test' + - pandas ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: pyasn1 + version: 0.6.0 + url: https://files.pythonhosted.org/packages/23/7e/5f50d07d5e70a2addbccd90ac2950f81d1edd0783630651d9268d7f1db49/pyasn1-0.6.0-py2.py3-none-any.whl + sha256: cca4bb0f2df5504f02f6f8a775b6e416ff9b0b3b16f7ee80b5a3153d9b804473 + requires_python: '>=3.8' +- kind: pypi + name: pyasn1-modules + version: 0.4.0 + url: https://files.pythonhosted.org/packages/13/68/8906226b15ef38e71dc926c321d2fe99de8048e9098b5dfd38343011c886/pyasn1_modules-0.4.0-py3-none-any.whl + sha256: be04f15b66c206eed667e0bb5ab27e2b1855ea54a842e5037738099e8ca4ae0b + requires_dist: + - pyasn1<0.7.0,>=0.4.6 + requires_python: '>=3.8' +- kind: pypi + name: pybindgen + version: 0.22.1 + url: https://files.pythonhosted.org/packages/74/f4/5fa8144cd33bb1f02b7e3ca9fdd98abe5a92885a793330e866c08a83db19/PyBindGen-0.22.1-py2.py3-none-any.whl + sha256: e9c2dad3c3e9da7811c271b5d6dcbb59ee59a2fe7877b4277556f95a9aea296e +- kind: pypi + name: pycparser + version: '2.22' + url: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl + sha256: c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc + requires_python: '>=3.8' +- kind: pypi + name: pydantic + version: 2.9.1 + url: https://files.pythonhosted.org/packages/e4/28/fff23284071bc1ba419635c7e86561c8b9b8cf62a5bcb459b92d7625fd38/pydantic-2.9.1-py3-none-any.whl + sha256: 7aff4db5fdf3cf573d4b3c30926a510a10e19a0774d38fc4967f78beb6deb612 + requires_dist: + - annotated-types>=0.6.0 + - pydantic-core==2.23.3 + - typing-extensions>=4.12.2 ; python_version >= '3.13' + - typing-extensions>=4.6.1 ; python_version < '3.13' + - email-validator>=2.0.0 ; extra == 'email' + - tzdata ; (python_version >= '3.9' and sys_platform == 'win32') and extra == 'timezone' + requires_python: '>=3.8' +- kind: pypi + name: pydantic-core + version: 2.23.3 + url: https://files.pythonhosted.org/packages/fa/1b/1d689c53d15ab67cb0df1c3a2b1df873b50409581e93e4848289dce57e2f/pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 7200fd561fb3be06827340da066df4311d0b6b8eb0c2116a110be5245dceb326 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- kind: pypi + name: pygments + version: 2.18.0 + url: https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl + sha256: b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a + requires_dist: + - colorama>=0.4.6 ; extra == 'windows-terminal' + requires_python: '>=3.8' +- kind: pypi + name: pyjwt + version: 2.9.0 + url: https://files.pythonhosted.org/packages/79/84/0fdf9b18ba31d69877bd39c9cd6052b47f3761e9910c15de788e519f079f/PyJWT-2.9.0-py3-none-any.whl + sha256: 3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850 + requires_dist: + - cryptography>=3.4.0 ; extra == 'crypto' + - sphinx ; extra == 'dev' + - sphinx-rtd-theme ; extra == 'dev' + - zope-interface ; extra == 'dev' + - cryptography>=3.4.0 ; extra == 'dev' + - pytest<7.0.0,>=6.0.0 ; extra == 'dev' + - coverage[toml]==5.0.4 ; extra == 'dev' + - pre-commit ; extra == 'dev' + - sphinx ; extra == 'docs' + - sphinx-rtd-theme ; extra == 'docs' + - zope-interface ; extra == 'docs' + - pytest<7.0.0,>=6.0.0 ; extra == 'tests' + - coverage[toml]==5.0.4 ; extra == 'tests' + requires_python: '>=3.8' +- kind: pypi + name: pyproject-hooks + version: 1.1.0 + url: https://files.pythonhosted.org/packages/ae/f3/431b9d5fe7d14af7a32340792ef43b8a714e7726f1d7b69cc4e8e7a3f1d7/pyproject_hooks-1.1.0-py3-none-any.whl + sha256: 7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2 + requires_python: '>=3.7' +- kind: pypi + name: pytest + version: 7.4.4 + url: https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl + sha256: b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 + requires_dist: + - iniconfig + - packaging + - pluggy<2.0,>=0.12 + - exceptiongroup>=1.0.0rc8 ; python_version < '3.11' + - tomli>=1.0.0 ; python_version < '3.11' + - importlib-metadata>=0.12 ; python_version < '3.8' + - colorama ; sys_platform == 'win32' + - argcomplete ; extra == 'testing' + - attrs>=19.2.0 ; extra == 'testing' + - hypothesis>=3.56 ; extra == 'testing' + - mock ; extra == 'testing' + - nose ; extra == 'testing' + - pygments>=2.7.2 ; extra == 'testing' + - requests ; extra == 'testing' + - setuptools ; extra == 'testing' + - xmlschema ; extra == 'testing' + requires_python: '>=3.7' +- kind: pypi + name: pytest-benchmark + version: 3.4.1 + url: https://files.pythonhosted.org/packages/2c/60/423a63fb190a0483d049786a121bd3dfd7d93bb5ff1bb5b5cd13e5df99a7/pytest_benchmark-3.4.1-py2.py3-none-any.whl + sha256: 36d2b08c4882f6f997fd3126a3d6dfd70f3249cde178ed8bbc0b73db7c20f809 + requires_dist: + - pytest>=3.8 + - py-cpuinfo + - statistics ; python_version < '3.4' + - pathlib2 ; python_version < '3.4' + - aspectlib ; extra == 'aspect' + - elasticsearch ; extra == 'elasticsearch' + - pygal ; extra == 'histogram' + - pygaljs ; extra == 'histogram' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- kind: pypi + name: pytest-cov + version: 5.0.0 + url: https://files.pythonhosted.org/packages/78/3a/af5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf/pytest_cov-5.0.0-py3-none-any.whl + sha256: 4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652 + requires_dist: + - pytest>=4.6 + - coverage[toml]>=5.2.1 + - fields ; extra == 'testing' + - hunter ; extra == 'testing' + - process-tests ; extra == 'testing' + - pytest-xdist ; extra == 'testing' + - virtualenv ; extra == 'testing' + requires_python: '>=3.8' +- kind: pypi + name: pytest-env + version: 1.1.3 + url: https://files.pythonhosted.org/packages/25/b2/bdc663a5647ce2034f7e8420122af340df87c01ba97745fc753b8c917acb/pytest_env-1.1.3-py3-none-any.whl + sha256: aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc + requires_dist: + - pytest>=7.4.3 + - tomli>=2.0.1 ; python_version < '3.11' + - covdefaults>=2.3 ; extra == 'test' + - coverage>=7.3.2 ; extra == 'test' + - pytest-mock>=3.12 ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: pytest-lazy-fixture + version: 0.6.3 + url: https://files.pythonhosted.org/packages/2d/a1/2f2c1c2353350d66c4d110d283e422e4943eb5ad10effa9357ba66f7b5b9/pytest_lazy_fixture-0.6.3-py3-none-any.whl + sha256: e0b379f38299ff27a653f03eaa69b08a6fd4484e46fd1c9907d984b9f9daeda6 + requires_dist: + - pytest>=3.2.5 +- kind: pypi + name: pytest-mock + version: 1.10.4 + url: https://files.pythonhosted.org/packages/30/43/8deecb4c123bbc16d25666f1a6d241109c97aeb2e50806b952661c8e4b95/pytest_mock-1.10.4-py2.py3-none-any.whl + sha256: 43ce4e9dd5074993e7c021bb1c22cbb5363e612a2b5a76bc6d956775b10758b7 + requires_dist: + - pytest>=2.7 + - mock ; python_version < '3.0' + - pre-commit ; extra == 'dev' + - tox ; extra == 'dev' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- kind: pypi + name: pytest-ordering + version: '0.6' + url: https://files.pythonhosted.org/packages/ec/98/adc368fe369465f291ab24e18b9900473786ed1afdf861ba90467eb0767e/pytest_ordering-0.6-py3-none-any.whl + sha256: 3f314a178dbeb6777509548727dc69edf22d6d9a2867bf2d310ab85c403380b6 + requires_dist: + - pytest +- kind: pypi + name: pytest-timeout + version: 1.4.2 + url: https://files.pythonhosted.org/packages/46/df/97cc0b5b8b53da0e265acd0aeecfc0c279e950a029acd2d7b4e54b00b25f/pytest_timeout-1.4.2-py2.py3-none-any.whl + sha256: 541d7aa19b9a6b4e475c759fd6073ef43d7cdc9a92d95644c260076eb257a063 + requires_dist: + - pytest>=3.6.0 +- kind: pypi + name: pytest-xdist + version: 3.6.1 + url: https://files.pythonhosted.org/packages/6d/82/1d96bf03ee4c0fdc3c0cbe61470070e659ca78dc0086fb88b66c185e2449/pytest_xdist-3.6.1-py3-none-any.whl + sha256: 9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7 + requires_dist: + - execnet>=2.1 + - pytest>=7.0.0 + - psutil>=3.0 ; extra == 'psutil' + - setproctitle ; extra == 'setproctitle' + - filelock ; extra == 'testing' + requires_python: '>=3.8' +- kind: conda + name: python + version: 3.12.5 + build: h2ad013b_0_cpython + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda + sha256: e2aad83838988725d4ffba4e9717b9328054fd18a668cff3377e0c50f109e8bd + md5: 9c56c4df45f6571b13111d8df2448692 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.46.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 31663253 + timestamp: 1723143721353 +- kind: pypi + name: python-dateutil + version: 2.9.0.post0 + url: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + sha256: a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + requires_dist: + - six>=1.5 + requires_python: '!=3.0.*,!=3.1.*,!=3.2.*,>=2.7' +- kind: pypi + name: python-dotenv + version: 1.0.1 + url: https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl + sha256: f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a + requires_dist: + - click>=5.0 ; extra == 'cli' + requires_python: '>=3.8' +- kind: pypi + name: python-keycloak + version: 4.2.2 + url: https://files.pythonhosted.org/packages/2e/2e/dfbd2c9b3edf6a5a8cd9e66090221046839b488ea27824970426bf06b242/python_keycloak-4.2.2-py3-none-any.whl + sha256: 5137fd87c69031a372a578df96bae96b9aead2c9dad976613bc978e9e0246a1e + requires_dist: + - async-property>=0.2.2 + - deprecation>=2.1.0 + - httpx>=0.23.2 + - jwcrypto>=1.5.4 + - requests>=2.20.0 + - requests-toolbelt>=0.6.0 + requires_python: '>=3.8,<4.0' +- kind: pypi + name: pytz + version: '2024.1' + url: https://files.pythonhosted.org/packages/9c/3d/a121f284241f08268b21359bd425f7d4825cffc5ac5cd0e1b3d82ffd2b10/pytz-2024.1-py2.py3-none-any.whl + sha256: 328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 +- kind: pypi + name: pyyaml + version: 6.0.2 + url: https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 + requires_python: '>=3.8' +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 281456 + timestamp: 1679532220005 +- kind: pypi + name: referencing + version: 0.35.1 + url: https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl + sha256: eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de + requires_dist: + - attrs>=22.2.0 + - rpds-py>=0.7.0 + requires_python: '>=3.8' +- kind: pypi + name: requests + version: 2.32.3 + url: https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl + sha256: 70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 + requires_dist: + - charset-normalizer<4,>=2 + - idna<4,>=2.5 + - urllib3<3,>=1.21.1 + - certifi>=2017.4.17 + - pysocks!=1.5.7,>=1.5.6 ; extra == 'socks' + - chardet<6,>=3.0.2 ; extra == 'use-chardet-on-py3' + requires_python: '>=3.8' +- kind: pypi + name: requests-oauthlib + version: 2.0.0 + url: https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl + sha256: 7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36 + requires_dist: + - oauthlib>=3.0.0 + - requests>=2.0.0 + - oauthlib[signedtoken]>=3.0.0 ; extra == 'rsa' + requires_python: '>=3.4' +- kind: pypi + name: requests-toolbelt + version: 1.0.0 + url: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + sha256: cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06 + requires_dist: + - requests<3.0.0,>=2.0.1 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- kind: pypi + name: responses + version: 0.25.3 + url: https://files.pythonhosted.org/packages/12/24/93293d0be0db9da1ed8dfc5e6af700fdd40e8f10a928704dd179db9f03c1/responses-0.25.3-py3-none-any.whl + sha256: 521efcbc82081ab8daa588e08f7e8a64ce79b91c39f6e62199b19159bea7dbcb + requires_dist: + - requests<3.0,>=2.30.0 + - urllib3<3.0,>=1.25.10 + - pyyaml + - pytest>=7.0.0 ; extra == 'tests' + - coverage>=6.0.0 ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-asyncio ; extra == 'tests' + - pytest-httpserver ; extra == 'tests' + - flake8 ; extra == 'tests' + - types-pyyaml ; extra == 'tests' + - types-requests ; extra == 'tests' + - mypy ; extra == 'tests' + - tomli-w ; extra == 'tests' + - tomli ; python_version < '3.11' and extra == 'tests' + requires_python: '>=3.8' +- kind: pypi + name: rpds-py + version: 0.20.0 + url: https://files.pythonhosted.org/packages/0f/f7/a59a673594e6c2ff2dbc44b00fd4ecdec2fc399bb6a7bd82d612699a0121/rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4 + requires_python: '>=3.8' +- kind: pypi + name: rsa + version: '4.9' + url: https://files.pythonhosted.org/packages/49/97/fa78e3d2f65c02c8e1268b9aba606569fe97f6c8f7c2d74394553347c145/rsa-4.9-py3-none-any.whl + sha256: 90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 + requires_dist: + - pyasn1>=0.1.3 + requires_python: '>=3.6,<4' +- kind: pypi + name: ruff + version: 0.6.4 + url: https://files.pythonhosted.org/packages/c5/70/899b03cbb3eb48ed0507d4b32b6f7aee562bc618ef9ffda855ec98c0461a/ruff-0.6.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 0b52387d3289ccd227b62102c24714ed75fbba0b16ecc69a923a37e3b5e0aaaa + requires_python: '>=3.7' +- kind: pypi + name: s3transfer + version: 0.10.2 + url: https://files.pythonhosted.org/packages/3c/4a/b221409913760d26cf4498b7b1741d510c82d3ad38381984a3ddc135ec66/s3transfer-0.10.2-py3-none-any.whl + sha256: eca1c20de70a39daee580aef4986996620f365c4e0fda6a86100231d62f1bf69 + requires_dist: + - botocore<2.0a0,>=1.33.2 + - botocore[crt]<2.0a0,>=1.33.2 ; extra == 'crt' + requires_python: '>=3.8' +- kind: pypi + name: setuptools + version: 74.1.2 + url: https://files.pythonhosted.org/packages/cb/9c/9ad11ac06b97e55ada655f8a6bea9d1d3f06e120b178cd578d80e558191d/setuptools-74.1.2-py3-none-any.whl + sha256: 5f4c08aa4d3ebcb57a50c33b1b07e94315d7fc7230f7115e47fc99776c8ce308 + requires_dist: + - pytest-checkdocs>=2.4 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - ruff>=0.5.2 ; sys_platform != 'cygwin' and extra == 'check' + - packaging>=24 ; extra == 'core' + - more-itertools>=8.8 ; extra == 'core' + - jaraco-text>=3.7 ; extra == 'core' + - wheel>=0.43.0 ; extra == 'core' + - platformdirs>=2.6.2 ; extra == 'core' + - importlib-metadata>=6 ; python_version < '3.10' and extra == 'core' + - tomli>=2.0.1 ; python_version < '3.11' and extra == 'core' + - importlib-resources>=5.10.2 ; python_version < '3.9' and extra == 'core' + - pytest-cov ; extra == 'cover' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page<2,>=1 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - towncrier<24.7 ; extra == 'doc' + - pytest-enabler>=2.2 ; extra == 'enabler' + - pytest!=8.1.*,>=6 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel>=0.44.0 ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; (python_version >= '3.9' and sys_platform != 'cygwin') and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + - pytest-mypy ; extra == 'type' + - mypy==1.11.* ; extra == 'type' + - importlib-metadata>=7.0.2 ; python_version < '3.10' and extra == 'type' + - jaraco-develop>=7.21 ; sys_platform != 'cygwin' and extra == 'type' + requires_python: '>=3.8' +- kind: pypi + name: six + version: 1.16.0 + url: https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl + sha256: 8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- kind: pypi + name: sniffio + version: 1.3.1 + url: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + sha256: 2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 + requires_python: '>=3.7' +- kind: pypi + name: snowballstemmer + version: 2.2.0 + url: https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl + sha256: c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a +- kind: pypi + name: sphinx + version: 6.2.1 + url: https://files.pythonhosted.org/packages/5f/d8/45ba6097c39ba44d9f0e1462fb232e13ca4ddb5aea93a385dcfa964687da/sphinx-6.2.1-py3-none-any.whl + sha256: 97787ff1fa3256a3eef9eda523a63dbf299f7b47e053cfcf684a1c2a8380c912 + requires_dist: + - sphinxcontrib-applehelp + - sphinxcontrib-devhelp + - sphinxcontrib-jsmath + - sphinxcontrib-htmlhelp>=2.0.0 + - sphinxcontrib-serializinghtml>=1.1.5 + - sphinxcontrib-qthelp + - jinja2>=3.0 + - pygments>=2.13 + - docutils>=0.18.1,<0.20 + - snowballstemmer>=2.0 + - babel>=2.9 + - alabaster>=0.7,<0.8 + - imagesize>=1.3 + - requests>=2.25.0 + - packaging>=21.0 + - importlib-metadata>=4.8 ; python_version < '3.10' + - colorama>=0.4.5 ; sys_platform == 'win32' + - sphinxcontrib-websupport ; extra == 'docs' + - flake8>=3.5.0 ; extra == 'lint' + - flake8-simplify ; extra == 'lint' + - isort ; extra == 'lint' + - ruff ; extra == 'lint' + - mypy>=0.990 ; extra == 'lint' + - sphinx-lint ; extra == 'lint' + - docutils-stubs ; extra == 'lint' + - types-requests ; extra == 'lint' + - pytest>=4.6 ; extra == 'test' + - html5lib ; extra == 'test' + - cython ; extra == 'test' + - filelock ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: sphinxcontrib-applehelp + version: 2.0.0 + url: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + sha256: 4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- kind: pypi + name: sphinxcontrib-devhelp + version: 2.0.0 + url: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + sha256: aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- kind: pypi + name: sphinxcontrib-htmlhelp + version: 2.1.0 + url: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + sha256: 166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + - html5lib ; extra == 'test' + requires_python: '>=3.9' +- kind: pypi + name: sphinxcontrib-jsmath + version: 1.0.1 + url: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + sha256: 2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178 + requires_dist: + - pytest ; extra == 'test' + - flake8 ; extra == 'test' + - mypy ; extra == 'test' + requires_python: '>=3.5' +- kind: pypi + name: sphinxcontrib-qthelp + version: 2.0.0 + url: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + sha256: b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + - defusedxml>=0.7.1 ; extra == 'test' + requires_python: '>=3.9' +- kind: pypi + name: sphinxcontrib-serializinghtml + version: 2.0.0 + url: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + sha256: 6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- kind: pypi + name: sqlalchemy + version: 2.0.34 + url: https://files.pythonhosted.org/packages/fd/2e/e6129761dd5588a5623c6051c31e45935b72a5b17ed87b209e39a0b2a25c/SQLAlchemy-2.0.34-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: c3330415cd387d2b88600e8e26b510d0370db9b7eaf984354a43e19c40df2e2b + requires_dist: + - typing-extensions>=4.6.0 + - greenlet!=0.4.17 ; python_version < '3.13' and (platform_machine == 'aarch64' or (platform_machine == 'ppc64le' or (platform_machine == 'x86_64' or (platform_machine == 'amd64' or (platform_machine == 'AMD64' or (platform_machine == 'win32' or platform_machine == 'WIN32')))))) + - importlib-metadata ; python_version < '3.8' + - greenlet!=0.4.17 ; extra == 'aiomysql' + - aiomysql>=0.2.0 ; extra == 'aiomysql' + - greenlet!=0.4.17 ; extra == 'aioodbc' + - aioodbc ; extra == 'aioodbc' + - greenlet!=0.4.17 ; extra == 'aiosqlite' + - aiosqlite ; extra == 'aiosqlite' + - typing-extensions!=3.10.0.1 ; extra == 'aiosqlite' + - greenlet!=0.4.17 ; extra == 'asyncio' + - greenlet!=0.4.17 ; extra == 'asyncmy' + - asyncmy!=0.2.4,!=0.2.6,>=0.2.3 ; extra == 'asyncmy' + - mariadb!=1.1.2,!=1.1.5,>=1.0.1 ; extra == 'mariadb-connector' + - pyodbc ; extra == 'mssql' + - pymssql ; extra == 'mssql-pymssql' + - pyodbc ; extra == 'mssql-pyodbc' + - mypy>=0.910 ; extra == 'mypy' + - mysqlclient>=1.4.0 ; extra == 'mysql' + - mysql-connector-python ; extra == 'mysql-connector' + - cx-oracle>=8 ; extra == 'oracle' + - oracledb>=1.0.1 ; extra == 'oracle-oracledb' + - psycopg2>=2.7 ; extra == 'postgresql' + - greenlet!=0.4.17 ; extra == 'postgresql-asyncpg' + - asyncpg ; extra == 'postgresql-asyncpg' + - pg8000>=1.29.1 ; extra == 'postgresql-pg8000' + - psycopg>=3.0.7 ; extra == 'postgresql-psycopg' + - psycopg2-binary ; extra == 'postgresql-psycopg2binary' + - psycopg2cffi ; extra == 'postgresql-psycopg2cffi' + - psycopg[binary]>=3.0.7 ; extra == 'postgresql-psycopgbinary' + - pymysql ; extra == 'pymysql' + - sqlcipher3-binary ; extra == 'sqlcipher' + requires_python: '>=3.7' +- kind: pypi + name: starlette + version: 0.38.5 + url: https://files.pythonhosted.org/packages/90/1a/8853ba4cea1ec99535ac9be5795a50ca92cddd04d57bbaa56e866cb7548c/starlette-0.38.5-py3-none-any.whl + sha256: 632f420a9d13e3ee2a6f18f437b0a9f1faecb0bc42e1942aa2ea0e379a4c4206 + requires_dist: + - anyio<5,>=3.4.0 + - typing-extensions>=3.10.0 ; python_version < '3.10' + - httpx>=0.22.0 ; extra == 'full' + - itsdangerous ; extra == 'full' + - jinja2 ; extra == 'full' + - python-multipart>=0.0.7 ; extra == 'full' + - pyyaml ; extra == 'full' + requires_python: '>=3.8' +- kind: pypi + name: tabulate + version: 0.9.0 + url: https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl + sha256: 024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f + requires_dist: + - wcwidth ; extra == 'widechars' + requires_python: '>=3.7' +- kind: pypi + name: tenacity + version: 8.5.0 + url: https://files.pythonhosted.org/packages/d2/3f/8ba87d9e287b9d385a02a7114ddcef61b26f86411e121c9003eb509a1773/tenacity-8.5.0-py3-none-any.whl + sha256: b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687 + requires_dist: + - reno ; extra == 'doc' + - sphinx ; extra == 'doc' + - pytest ; extra == 'test' + - tornado>=4.5 ; extra == 'test' + - typeguard ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: testcontainers + version: 4.4.0 + url: https://files.pythonhosted.org/packages/7d/84/f666d43653ff81e5f3fba622867cb6dcd463a9d626a050dbda9bd7a6afff/testcontainers-4.4.0-py3-none-any.whl + sha256: 455e0e28bbf9dcf2d66a342e3103b0d8889db3295a490c009a98848e08791837 + requires_dist: + - azure-storage-blob>=12.19,<13.0 ; extra == 'azurite' + - bcrypt ; extra == 'registry' + - boto3 ; extra == 'localstack' + - chromadb-client ; extra == 'chroma' + - clickhouse-driver ; extra == 'clickhouse' + - docker + - google-cloud-datastore>=2 ; extra == 'google' + - google-cloud-pubsub>=2 ; extra == 'google' + - influxdb ; extra == 'influxdb' + - influxdb-client ; extra == 'influxdb' + - kubernetes ; extra == 'k3s' + - minio ; extra == 'minio' + - nats-py ; extra == 'nats' + - neo4j ; extra == 'neo4j' + - opensearch-py ; extra == 'opensearch' + - oracledb ; extra == 'oracle' or extra == 'oracle-free' + - pika ; extra == 'rabbitmq' + - pymongo ; extra == 'mongodb' + - pymssql ; extra == 'mssql' + - pymysql[rsa] ; extra == 'mysql' + - python-arango>=7.8,<8.0 ; extra == 'arangodb' + - python-keycloak ; extra == 'keycloak' + - pyyaml ; extra == 'k3s' + - qdrant-client ; extra == 'qdrant' + - redis ; extra == 'redis' + - selenium ; extra == 'selenium' + - sqlalchemy ; extra == 'mssql' or extra == 'mysql' or extra == 'oracle' or extra == 'oracle-free' + - typing-extensions + - urllib3 + - weaviate-client>=4.5.4,<5.0.0 ; extra == 'weaviate' + - wrapt + requires_python: '>=3.9,<4.0' +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- kind: pypi + name: toml + version: 0.10.2 + url: https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl + sha256: 806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b + requires_python: '>=2.6,!=3.0.*,!=3.1.*,!=3.2.*' +- kind: pypi + name: toolz + version: 0.12.1 + url: https://files.pythonhosted.org/packages/b7/8a/d82202c9f89eab30f9fc05380daae87d617e2ad11571ab23d7c13a29bb54/toolz-0.12.1-py3-none-any.whl + sha256: d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85 + requires_python: '>=3.7' +- kind: pypi + name: tqdm + version: 4.66.5 + url: https://files.pythonhosted.org/packages/48/5d/acf5905c36149bbaec41ccf7f2b68814647347b72075ac0b1fe3022fdc73/tqdm-4.66.5-py3-none-any.whl + sha256: 90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd + requires_dist: + - colorama ; platform_system == 'Windows' + - pytest>=6 ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - pytest-timeout ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - ipywidgets>=6 ; extra == 'notebook' + - slack-sdk ; extra == 'slack' + - requests ; extra == 'telegram' + requires_python: '>=3.7' +- kind: pypi + name: typeguard + version: 4.3.0 + url: https://files.pythonhosted.org/packages/eb/de/be0ba39ee73760bf33329b7c6f95bc67e96593c69c881671e312538e24bb/typeguard-4.3.0-py3-none-any.whl + sha256: 4d24c5b39a117f8a895b9da7a9b3114f04eb63bade45a4492de49b175b6f7dfa + requires_dist: + - typing-extensions>=4.10.0 + - importlib-metadata>=3.6 ; python_version < '3.10' + - packaging ; extra == 'doc' + - sphinx>=7 ; extra == 'doc' + - sphinx-autodoc-typehints>=1.2.0 ; extra == 'doc' + - sphinx-rtd-theme>=1.3.0 ; extra == 'doc' + - coverage[toml]>=7 ; extra == 'test' + - pytest>=7 ; extra == 'test' + - mypy>=1.2.0 ; platform_python_implementation != 'PyPy' and extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: types-cffi + version: 1.16.0.20240331 + url: https://files.pythonhosted.org/packages/69/7a/98f5d2493a652cec05d3b09be59202d202004a41fca9c70d224782611365/types_cffi-1.16.0.20240331-py3-none-any.whl + sha256: a363e5ea54a4eb6a4a105d800685fde596bc318089b025b27dee09849fe41ff0 + requires_dist: + - types-setuptools + requires_python: '>=3.8' +- kind: pypi + name: types-protobuf + version: 3.19.22 + url: https://files.pythonhosted.org/packages/00/0e/0dc8a4b0ce16bb585a8333e8b3a3d6bb15d22cc203e98ed9fa950276b8fd/types_protobuf-3.19.22-py3-none-any.whl + sha256: d291388678af91bb045fafa864f142dc4ac22f5d4cdca097c7d8d8a32fa9b3ab +- kind: pypi + name: types-pyopenssl + version: 24.1.0.20240722 + url: https://files.pythonhosted.org/packages/98/05/c868a850b6fbb79c26f5f299b768ee0adc1f9816d3461dcf4287916f655b/types_pyOpenSSL-24.1.0.20240722-py3-none-any.whl + sha256: 6a7a5d2ec042537934cfb4c9d4deb0e16c4c6250b09358df1f083682fe6fda54 + requires_dist: + - types-cffi + - cryptography>=35.0.0 + requires_python: '>=3.8' +- kind: pypi + name: types-python-dateutil + version: 2.9.0.20240906 + url: https://files.pythonhosted.org/packages/aa/4c/5c684b333135a6fb085bb5a5bdfd962937f80bec06745a88fd551e29f4d9/types_python_dateutil-2.9.0.20240906-py3-none-any.whl + sha256: 27c8cc2d058ccb14946eebcaaa503088f4f6dbc4fb6093d3d456a49aef2753f6 + requires_python: '>=3.8' +- kind: pypi + name: types-pytz + version: 2024.1.0.20240417 + url: https://files.pythonhosted.org/packages/e8/8d/f5dc5239d59bb4a7b58e2b6d0dc6f2c2ba797b110f83cdda8479508c63dd/types_pytz-2024.1.0.20240417-py3-none-any.whl + sha256: 8335d443310e2db7b74e007414e74c4f53b67452c0cb0d228ca359ccfba59659 + requires_python: '>=3.8' +- kind: pypi + name: types-pyyaml + version: 6.0.12.20240808 + url: https://files.pythonhosted.org/packages/f3/ad/ffbad24e2bc8f20bf047ec22af0c0a92f6ce2071eb21c9103df600cda6de/types_PyYAML-6.0.12.20240808-py3-none-any.whl + sha256: deda34c5c655265fc517b546c902aa6eed2ef8d3e921e4765fe606fe2afe8d35 + requires_python: '>=3.8' +- kind: pypi + name: types-redis + version: 4.6.0.20240903 + url: https://files.pythonhosted.org/packages/e5/51/c65f5729c1adb5f5a3f19fce0f500c19196cd1f91c00815fc573ceadc7f5/types_redis-4.6.0.20240903-py3-none-any.whl + sha256: 0e7537e5c085fe96b7d468d5edae0cf667b4ba4b62c6e4a5dfc340bd3b868c23 + requires_dist: + - types-pyopenssl + - cryptography>=35.0.0 + requires_python: '>=3.8' +- kind: pypi + name: types-requests + version: 2.30.0.0 + url: https://files.pythonhosted.org/packages/fa/c7/024171d587afe75934a6f779922d24fcc6dd468e947c74598eb17840e229/types_requests-2.30.0.0-py3-none-any.whl + sha256: c6cf08e120ca9f0dc4fa4e32c3f953c3fba222bcc1db6b97695bce8da1ba9864 + requires_dist: + - types-urllib3 +- kind: pypi + name: types-setuptools + version: 74.1.0.20240907 + url: https://files.pythonhosted.org/packages/f6/5a/636fbcd7baf3d4d9f971581587bafba37d8b3dff498233be43f394e0eb9f/types_setuptools-74.1.0.20240907-py3-none-any.whl + sha256: 15b38c8e63ca34f42f6063ff4b1dd662ea20086166d5ad6a102e670a52574120 + requires_python: '>=3.8' +- kind: pypi + name: types-tabulate + version: 0.9.0.20240106 + url: https://files.pythonhosted.org/packages/f0/17/d53c0bb370100313df6800e9096bdfc27b32b8e4a9390bfb35bc4b17db78/types_tabulate-0.9.0.20240106-py3-none-any.whl + sha256: 0378b7b6fe0ccb4986299496d027a6d4c218298ecad67199bbd0e2d7e9d335a1 + requires_python: '>=3.8' +- kind: pypi + name: types-urllib3 + version: 1.26.25.14 + url: https://files.pythonhosted.org/packages/11/7b/3fc711b2efea5e85a7a0bbfe269ea944aa767bbba5ec52f9ee45d362ccf3/types_urllib3-1.26.25.14-py3-none-any.whl + sha256: 9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e +- kind: pypi + name: typing-extensions + version: 4.12.2 + url: https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl + sha256: 04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d + requires_python: '>=3.8' +- kind: pypi + name: tzdata + version: '2024.1' + url: https://files.pythonhosted.org/packages/65/58/f9c9e6be752e9fcb8b6a0ee9fb87e6e7a1f6bcab2cdc73f02bb7ba91ada0/tzdata-2024.1-py2.py3-none-any.whl + sha256: 9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 + requires_python: '>=2' +- kind: conda + name: tzdata + version: 2024a + build: h8827d51_1 + build_number: 1 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h8827d51_1.conda + sha256: 7d21c95f61319dba9209ca17d1935e6128af4235a67ee4e57a00908a1450081e + md5: 8bfdead4e0fff0383ae4c9c50d0531bd + license: LicenseRef-Public-Domain + purls: [] + size: 124164 + timestamp: 1724736371498 +- kind: pypi + name: urllib3 + version: 2.2.2 + url: https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl + sha256: a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 + requires_dist: + - brotli>=1.0.9 ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' + - h2<5,>=4 ; extra == 'h2' + - pysocks!=1.5.7,<2.0,>=1.5.6 ; extra == 'socks' + - zstandard>=0.18.0 ; extra == 'zstd' + requires_python: '>=3.8' +- kind: pypi + name: uvicorn + version: 0.30.6 + url: https://files.pythonhosted.org/packages/f5/8e/cdc7d6263db313030e4c257dd5ba3909ebc4e4fb53ad62d5f09b1a2f5458/uvicorn-0.30.6-py3-none-any.whl + sha256: 65fd46fe3fda5bdc1b03b94eb634923ff18cd35b2f084813ea79d1f103f711b5 + requires_dist: + - click>=7.0 + - h11>=0.8 + - typing-extensions>=4.0 ; python_version < '3.11' + - colorama>=0.4 ; sys_platform == 'win32' and extra == 'standard' + - httptools>=0.5.0 ; extra == 'standard' + - python-dotenv>=0.13 ; extra == 'standard' + - pyyaml>=5.1 ; extra == 'standard' + - uvloop!=0.15.0,!=0.15.1,>=0.14.0 ; (sys_platform != 'win32' and (sys_platform != 'cygwin' and platform_python_implementation != 'PyPy')) and extra == 'standard' + - watchfiles>=0.13 ; extra == 'standard' + - websockets>=10.4 ; extra == 'standard' + requires_python: '>=3.8' +- kind: pypi + name: uvloop + version: 0.20.0 + url: https://files.pythonhosted.org/packages/0a/f8/5ceea6876154d926604f10c1dd896adf9bce6d55a55911364337b8a5ed8d/uvloop-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 649c33034979273fa71aa25d0fe120ad1777c551d8c4cd2c0c9851d88fcb13ab + requires_dist: + - sphinx~=4.1.2 ; extra == 'docs' + - sphinxcontrib-asyncio~=0.3.0 ; extra == 'docs' + - sphinx-rtd-theme~=0.5.2 ; extra == 'docs' + - flake8~=5.0 ; extra == 'test' + - psutil ; extra == 'test' + - pycodestyle~=2.9.0 ; extra == 'test' + - pyopenssl~=23.0.0 ; extra == 'test' + - mypy>=0.800 ; extra == 'test' + - cython<0.30.0,>=0.29.36 ; extra == 'test' + - aiohttp>=3.8.1 ; python_version < '3.12' and extra == 'test' + - aiohttp==3.9.0b0 ; python_version >= '3.12' and extra == 'test' + requires_python: '>=3.8.0' +- kind: pypi + name: virtualenv + version: 20.24.1 + url: https://files.pythonhosted.org/packages/dd/af/4a7f56bb73ede17f6195aaf03353a1c1dd1381ba0aa2e3b786f7ec9fe8aa/virtualenv-20.24.1-py3-none-any.whl + sha256: 01aacf8decd346cf9a865ae85c0cdc7f64c8caa07ff0d8b1dfc1733d10677442 + requires_dist: + - distlib<1,>=0.3.6 + - filelock<4,>=3.12 + - importlib-metadata>=6.6 ; python_version < '3.8' + - platformdirs<4,>=3.5.1 + - furo>=2023.5.20 ; extra == 'docs' + - proselint>=0.13 ; extra == 'docs' + - sphinx-argparse>=0.4 ; extra == 'docs' + - sphinx>=7.0.1 ; extra == 'docs' + - sphinxcontrib-towncrier>=0.2.1a0 ; extra == 'docs' + - towncrier>=23.6 ; extra == 'docs' + - covdefaults>=2.3 ; extra == 'test' + - coverage-enable-subprocess>=1 ; extra == 'test' + - coverage>=7.2.7 ; extra == 'test' + - flaky>=3.7 ; extra == 'test' + - packaging>=23.1 ; extra == 'test' + - pytest-env>=0.8.1 ; extra == 'test' + - pytest-freezer>=0.4.6 ; platform_python_implementation == 'PyPy' and extra == 'test' + - pytest-mock>=3.10 ; extra == 'test' + - pytest-randomly>=3.12 ; extra == 'test' + - pytest-timeout>=2.1 ; extra == 'test' + - pytest>=7.3.1 ; extra == 'test' + - setuptools>=67.8 ; extra == 'test' + - time-machine>=2.9 ; platform_python_implementation == 'CPython' and extra == 'test' + requires_python: '>=3.7' +- kind: pypi + name: watchfiles + version: 0.24.0 + url: https://files.pythonhosted.org/packages/27/69/e1da9d34da7fc59db358424f5d89a56aaafe09f6961b64e36457a80a7194/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: c79d7719d027b7a42817c5d96461a99b6a49979c143839fc37aa5748c322f234 + requires_dist: + - anyio>=3.0.0 + requires_python: '>=3.8' +- kind: pypi + name: websocket-client + version: 1.8.0 + url: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl + sha256: 17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 + requires_dist: + - sphinx>=6.0 ; extra == 'docs' + - sphinx-rtd-theme>=1.1.0 ; extra == 'docs' + - myst-parser>=2.0.0 ; extra == 'docs' + - python-socks ; extra == 'optional' + - wsaccel ; extra == 'optional' + - websockets ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: websockets + version: 13.0.1 + url: https://files.pythonhosted.org/packages/94/6e/eaf95894042ba8a05a125fe8bcf9ee3572fef6edbcbf49478f4991c027cc/websockets-13.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 139add0f98206cb74109faf3611b7783ceafc928529c62b389917a037d4cfdf4 + requires_python: '>=3.8' +- kind: pypi + name: werkzeug + version: 3.0.4 + url: https://files.pythonhosted.org/packages/4b/84/997bbf7c2bf2dc3f09565c6d0b4959fefe5355c18c4096cfd26d83e0785b/werkzeug-3.0.4-py3-none-any.whl + sha256: 02c9eb92b7d6c06f31a782811505d2157837cea66aaede3e217c7c27c039476c + requires_dist: + - markupsafe>=2.1.1 + - watchdog>=2.3 ; extra == 'watchdog' + requires_python: '>=3.8' +- kind: pypi + name: wheel + version: 0.44.0 + url: https://files.pythonhosted.org/packages/1b/d1/9babe2ccaecff775992753d8686970b1e2755d21c8a63be73aba7a4e7d77/wheel-0.44.0-py3-none-any.whl + sha256: 2376a90c98cc337d18623527a97c31797bd02bad0033d41547043a1cbfbe448f + requires_dist: + - pytest>=6.0.0 ; extra == 'test' + - setuptools>=65 ; extra == 'test' + requires_python: '>=3.8' +- kind: pypi + name: wrapt + version: 1.16.0 + url: https://files.pythonhosted.org/packages/62/62/30ca2405de6a20448ee557ab2cd61ab9c5900be7cbd18a2639db595f0b98/wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + sha256: 98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b + requires_python: '>=3.6' +- kind: pypi + name: xmltodict + version: 0.13.0 + url: https://files.pythonhosted.org/packages/94/db/fd0326e331726f07ff7f40675cd86aa804bfd2e5016c727fa761c934990e/xmltodict-0.13.0-py2.py3-none-any.whl + sha256: aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852 + requires_python: '>=3.4' +- kind: conda + name: xz + version: 5.2.6 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + md5: 2161070d867d1b1204ea749c8eec4ef0 + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + purls: [] + size: 418368 + timestamp: 1660346797927 diff --git a/pyproject.toml b/pyproject.toml index 87854075bbd..b8f993042b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -223,3 +223,14 @@ exclude = [ ".pyi", "protos", "sdk/python/feast/embedded_go/lib"] + +[tool.pixi.project] +channels = ["conda-forge"] +platforms = ["linux-64"] + +[tool.pixi.pypi-dependencies] +feast = { path = ".", editable = true } + +[tool.pixi.environments] +default = {features = [], solve-group = "default"} +dev = {features = ["ci"], solve-group = "default"} diff --git a/sdk/python/feast/errors.py b/sdk/python/feast/errors.py index d39009ae7a1..5d92a20c495 100644 --- a/sdk/python/feast/errors.py +++ b/sdk/python/feast/errors.py @@ -1,11 +1,13 @@ import importlib import json import logging -from typing import Any, List, Optional, Set +from typing import TYPE_CHECKING, Any, List, Optional, Set from colorama import Fore, Style from fastapi import status as HttpStatusCode -from grpc import StatusCode as GrpcStatusCode + +if TYPE_CHECKING: + from grpc import StatusCode as GrpcStatusCode from feast.field import Field @@ -15,7 +17,7 @@ class FeastError(Exception): pass - def grpc_status_code(self) -> GrpcStatusCode: + def grpc_status_code(self) -> "GrpcStatusCode": return GrpcStatusCode.INTERNAL def http_status_code(self) -> int: @@ -89,7 +91,7 @@ def __init__(self, ds_name: str): class FeastObjectNotFoundException(FeastError): pass - def grpc_status_code(self) -> GrpcStatusCode: + def grpc_status_code(self) -> "GrpcStatusCode": return GrpcStatusCode.NOT_FOUND def http_status_code(self) -> int: @@ -491,7 +493,7 @@ class FeastPermissionError(FeastError, PermissionError): def __init__(self, details: str): super().__init__(f"Permission error:\n{details}") - def grpc_status_code(self) -> GrpcStatusCode: + def grpc_status_code(self) -> "GrpcStatusCode": return GrpcStatusCode.PERMISSION_DENIED def http_status_code(self) -> int: From 50d370ba007d810d6c097e11e23affa104dcc7f3 Mon Sep 17 00:00:00 2001 From: tokoko Date: Tue, 10 Sep 2024 07:36:56 +0000 Subject: [PATCH 4/6] fix pixi install in gh actions Signed-off-by: tokoko --- .github/workflows/smoke_tests.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/smoke_tests.yml b/.github/workflows/smoke_tests.yml index e9f17b8c2e4..71a81f70315 100644 --- a/.github/workflows/smoke_tests.yml +++ b/.github/workflows/smoke_tests.yml @@ -20,8 +20,6 @@ jobs: with: python-version: ${{ matrix.python-version }} architecture: x64 - - name: Install pixi - run: | - curl -fsSL https://pixi.sh/install.sh | bash + - uses: prefix-dev/setup-pixi@v0.6.0 - name: Test Imports run: pixi run python -c "from feast import cli" From c334e442a7b9b4598facdf29e5be8b634de28d6e Mon Sep 17 00:00:00 2001 From: tokoko Date: Tue, 10 Sep 2024 07:39:05 +0000 Subject: [PATCH 5/6] fix pixi install in gh actions Signed-off-by: tokoko --- .github/workflows/smoke_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/smoke_tests.yml b/.github/workflows/smoke_tests.yml index 71a81f70315..2c1b390b23c 100644 --- a/.github/workflows/smoke_tests.yml +++ b/.github/workflows/smoke_tests.yml @@ -20,6 +20,6 @@ jobs: with: python-version: ${{ matrix.python-version }} architecture: x64 - - uses: prefix-dev/setup-pixi@v0.6.0 + - uses: prefix-dev/setup-pixi@v0.8.1 - name: Test Imports run: pixi run python -c "from feast import cli" From a46f9c357a8c187678c10500ae11f00e6c3df486 Mon Sep 17 00:00:00 2001 From: tokoko Date: Tue, 10 Sep 2024 07:43:36 +0000 Subject: [PATCH 6/6] remove duplicate virtualenv dependency Signed-off-by: tokoko --- pixi.lock | 31 +++++++++++++++---------------- pyproject.toml | 1 - 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/pixi.lock b/pixi.lock index 4fec1b86ab0..0fca9aeb283 100644 --- a/pixi.lock +++ b/pixi.lock @@ -280,7 +280,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/ca/1c/89ffc63a9605b583d5df2be791a27bc1a42b7c32bab68d3c8f2f73a98cd4/urllib3-2.2.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f5/8e/cdc7d6263db313030e4c257dd5ba3909ebc4e4fb53ad62d5f09b1a2f5458/uvicorn-0.30.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/f8/5ceea6876154d926604f10c1dd896adf9bce6d55a55911364337b8a5ed8d/uvloop-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/dd/af/4a7f56bb73ede17f6195aaf03353a1c1dd1381ba0aa2e3b786f7ec9fe8aa/virtualenv-20.24.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/0a/18755fa6aec794fd539b050beeaa905fa5c77c64356aa8bdecb62c01581a/virtualenv-20.23.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/69/e1da9d34da7fc59db358424f5d89a56aaafe09f6961b64e36457a80a7194/watchfiles-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/94/6e/eaf95894042ba8a05a125fe8bcf9ee3572fef6edbcbf49478f4991c027cc/websockets-13.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -753,9 +753,9 @@ packages: requires_python: '>=3.8' - kind: pypi name: feast - version: 0.1.dev3435+gcea6be8.d20240910 + version: 0.1.dev3438+gc334e44.d20240910 path: . - sha256: d22858c636c4826e8a54e557ffd49e1824049970b63b4ce92d8c738112240836 + sha256: 8f7cac4060425df279c7eeaa77802d1776eed530c7934fc809e2cf333af07a14 requires_dist: - click<9.0.0,>=7.0.0 - colorama<1,>=0.3.9 @@ -833,7 +833,6 @@ packages: - types-requests<2.31.0 ; extra == 'ci' - types-setuptools ; extra == 'ci' - types-tabulate ; extra == 'ci' - - virtualenv<20.24.2 ; extra == 'ci' - feast[aws,azure,cassandra,delta,duckdb,elasticsearch,gcp,ge,grpcio,hazelcast,hbase,ibis,k8s,mysql,opentelemetry,postgres,redis,singlestore,snowflake,spark,sqlite-vec,trino] ; extra == 'ci' - deltalake ; extra == 'delta' - feast[ci] ; extra == 'dev' @@ -2744,32 +2743,32 @@ packages: requires_python: '>=3.8.0' - kind: pypi name: virtualenv - version: 20.24.1 - url: https://files.pythonhosted.org/packages/dd/af/4a7f56bb73ede17f6195aaf03353a1c1dd1381ba0aa2e3b786f7ec9fe8aa/virtualenv-20.24.1-py3-none-any.whl - sha256: 01aacf8decd346cf9a865ae85c0cdc7f64c8caa07ff0d8b1dfc1733d10677442 + version: 20.23.0 + url: https://files.pythonhosted.org/packages/f1/0a/18755fa6aec794fd539b050beeaa905fa5c77c64356aa8bdecb62c01581a/virtualenv-20.23.0-py3-none-any.whl + sha256: 6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e requires_dist: - distlib<1,>=0.3.6 - - filelock<4,>=3.12 - - importlib-metadata>=6.6 ; python_version < '3.8' - - platformdirs<4,>=3.5.1 - - furo>=2023.5.20 ; extra == 'docs' + - filelock<4,>=3.11 + - importlib-metadata>=6.4.1 ; python_version < '3.8' + - platformdirs<4,>=3.2 + - furo>=2023.3.27 ; extra == 'docs' - proselint>=0.13 ; extra == 'docs' - sphinx-argparse>=0.4 ; extra == 'docs' - - sphinx>=7.0.1 ; extra == 'docs' + - sphinx>=6.1.3 ; extra == 'docs' - sphinxcontrib-towncrier>=0.2.1a0 ; extra == 'docs' - - towncrier>=23.6 ; extra == 'docs' + - towncrier>=22.12 ; extra == 'docs' - covdefaults>=2.3 ; extra == 'test' - coverage-enable-subprocess>=1 ; extra == 'test' - - coverage>=7.2.7 ; extra == 'test' + - coverage>=7.2.3 ; extra == 'test' - flaky>=3.7 ; extra == 'test' - packaging>=23.1 ; extra == 'test' - pytest-env>=0.8.1 ; extra == 'test' - - pytest-freezer>=0.4.6 ; platform_python_implementation == 'PyPy' and extra == 'test' + - pytest-freezegun>=0.4.2 ; platform_python_implementation == 'PyPy' and extra == 'test' - pytest-mock>=3.10 ; extra == 'test' - pytest-randomly>=3.12 ; extra == 'test' - pytest-timeout>=2.1 ; extra == 'test' - pytest>=7.3.1 ; extra == 'test' - - setuptools>=67.8 ; extra == 'test' + - setuptools>=67.7.1 ; extra == 'test' - time-machine>=2.9 ; platform_python_implementation == 'CPython' and extra == 'test' requires_python: '>=3.7' - kind: pypi diff --git a/pyproject.toml b/pyproject.toml index b8f993042b7..230f2da4d2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -172,7 +172,6 @@ ci = [ "types-requests<2.31.0", "types-setuptools", "types-tabulate", - "virtualenv<20.24.2", "feast[aws, gcp, redis, k8s, snowflake, spark, postgres, mysql, trino, ge, hbase, cassandra, azure, hazelcast, ibis, grpcio, duckdb, delta, elasticsearch, sqlite_vec, singlestore, opentelemetry]" ]