diff --git a/.github/workflows/build-binary.yml b/.github/workflows/build-binary.yml index 8a257da1d..ff97480e9 100644 --- a/.github/workflows/build-binary.yml +++ b/.github/workflows/build-binary.yml @@ -21,9 +21,9 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel twine - pip install --no-deps -r requirements.txt - pip install -r requirements.txt --no-cache-dir + pip install uv + uv pip sync --system --no-build pylock.toml + uv pip install --system -e . - name: Build Binary (Linux) if: runner.os == 'Linux' diff --git a/.github/workflows/build-version.yml b/.github/workflows/build-version.yml index f23872f85..f1cd1cbe2 100644 --- a/.github/workflows/build-version.yml +++ b/.github/workflows/build-version.yml @@ -19,9 +19,9 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install setuptools wheel twine - pip install --no-deps -r requirements.txt - pip install -r requirements.txt --no-cache-dir + pip install uv + uv pip sync --system --no-build pylock.toml + uv pip install --system -e . - name: Update CDISC standards cache env: CDISC_LIBRARY_API_KEY: ${{ secrets.CDISC_LIBRARY_API_KEY }} @@ -73,9 +73,9 @@ jobs: # - name: Install dependencies # run: | # python -m pip install --upgrade pip -# pip install setuptools wheel twine -# pip install --no-deps -r requirements.txt -# pip install -r requirements.txt --no-cache-dir +# pip install uv +# uv pip sync --system pylock.toml +# uv pip install --system -e . # - name: Update CDISC standards cache # env: # CDISC_LIBRARY_API_KEY: ${{ secrets.CDISC_LIBRARY_API_KEY }} @@ -117,9 +117,9 @@ jobs: # - name: Install dependencies # run: | # python -m pip install --upgrade pip -# pip install setuptools wheel twine -# pip install --no-deps -r requirements.txt -# pip install -r requirements.txt --no-cache-dir +# pip install uv +# uv pip sync --system pylock.toml +# uv pip install --system -e . # - name: Update CDISC standards cache # env: # CDISC_LIBRARY_API_KEY: ${{ secrets.CDISC_LIBRARY_API_KEY }} diff --git a/.github/workflows/lint-format.yml b/.github/workflows/lint-format.yml index 4c7f70fe0..f455d0b78 100644 --- a/.github/workflows/lint-format.yml +++ b/.github/workflows/lint-format.yml @@ -49,7 +49,7 @@ jobs: python-version: "3.12" - name: Install linters run: | - pip install black flake8 -c requirements-dev.txt + pip install black flake8 - name: Run flake8 run: | flake8 ${{needs.get_changed_files.outputs.py}} --count --select=E9,F63,F7,F82 --show-source --statistics diff --git a/.github/workflows/prerelease-update-cache.yml b/.github/workflows/prerelease-update-cache.yml index ba225f5d1..4012e0c7a 100644 --- a/.github/workflows/prerelease-update-cache.yml +++ b/.github/workflows/prerelease-update-cache.yml @@ -23,7 +23,10 @@ jobs: python-version: "3.12" - name: Install requirements - run: pip install -r requirements.txt + run: | + pip install uv + uv pip sync --system --no-build pylock.toml + pip install -e . - name: Run Update Cache Script run: python core.py update-cache diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f3b8258e2..aaa027692 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -102,8 +102,9 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install build setuptools wheel twine - pip install -r requirements.txt + pip install uv build twine + uv pip sync --system --no-build pylock.toml + uv pip install --system -e . - name: Build package run: | python -m build diff --git a/.github/workflows/test-release.yml b/.github/workflows/test-release.yml index bd3a60802..2441c2fcb 100644 --- a/.github/workflows/test-release.yml +++ b/.github/workflows/test-release.yml @@ -81,8 +81,10 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install build setuptools wheel twine - pip install -r requirements.txt + pip install uv build twine + uv pip sync --system --no-build pylock.toml + uv pip install --system -e . + - name: Build package run: | diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index 0e33d67bd..2d32d1577 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -28,7 +28,9 @@ jobs: python-version: "3.12" - name: Install dependencies run: | - pip install -r requirements.txt + pip install uv + uv pip sync --system --no-build pylock.toml + uv pip install --system -e . - name: Update rules cache env: CDISC_LIBRARY_API_KEY: ${{ secrets.CDISC_LIBRARY_API_KEY }} diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml index 38a9e55ae..507a6d70e 100644 --- a/.github/workflows/test-unit.yml +++ b/.github/workflows/test-unit.yml @@ -16,8 +16,9 @@ jobs: python-version: "3.12" - name: Install requirements run: | - pip install -r requirements-dev.txt - pip install -e . + pip install uv + uv pip sync --system --no-build pylock.dev.toml + uv pip install --system -e . - name: Running Tests env: CDISC_LIBRARY_API_KEY: fakekey12341234 diff --git a/.github/workflows/validate-published-rules.yml b/.github/workflows/validate-published-rules.yml index 1c68f210c..814c57820 100644 --- a/.github/workflows/validate-published-rules.yml +++ b/.github/workflows/validate-published-rules.yml @@ -80,9 +80,9 @@ jobs: - name: Install engine dependencies run: | python -m venv venv - ./venv/bin/pip install --upgrade pip - ./venv/bin/pip install -r engine/requirements.txt - + venv/bin/pip install uv + venv/bin/uv pip sync --no-build pylock.dev.toml + venv/bin/uv pip install -e . # ----------------------------------------------------------------------- # 5. Run validation for every Published rule # ----------------------------------------------------------------------- diff --git a/cdisc_rules_engine/dataset_builders/contents_define_vlm_dataset_builder.py b/cdisc_rules_engine/dataset_builders/contents_define_vlm_dataset_builder.py index fb2374b9c..328a90e48 100644 --- a/cdisc_rules_engine/dataset_builders/contents_define_vlm_dataset_builder.py +++ b/cdisc_rules_engine/dataset_builders/contents_define_vlm_dataset_builder.py @@ -66,7 +66,7 @@ def build(self): data_contents_with_vlm["variable_value_length"] = data_contents_with_vlm.data[ ["variable_value", "define_vlm_data_type"] ].apply( - lambda row: self.calculate_variable_value_length( + lambda row: ValuesDatasetBuilder.calculate_variable_value_length( row["variable_value"], row["define_vlm_data_type"] ), axis=1, diff --git a/cdisc_rules_engine/operations/codelist_extensible.py b/cdisc_rules_engine/operations/codelist_extensible.py index 62cd7b56f..f5e24cf41 100644 --- a/cdisc_rules_engine/operations/codelist_extensible.py +++ b/cdisc_rules_engine/operations/codelist_extensible.py @@ -32,6 +32,10 @@ def _handle_multiple_versions(self) -> pd.Series: "codelist_code": "string", } ) + cast_cols = {self.params.ct_version: str} + if self.params.codelist_code in self.evaluation_dataset.columns: + cast_cols[self.params.codelist_code] = str + self.evaluation_dataset = self.evaluation_dataset.astype(cast_cols) if self.params.codelist_code in self.evaluation_dataset.columns: is_extensible = self.evaluation_dataset.merge( ct_df.data, diff --git a/cdisc_rules_engine/operations/codelist_terms.py b/cdisc_rules_engine/operations/codelist_terms.py index 90a0a6d18..e2fbba0b6 100644 --- a/cdisc_rules_engine/operations/codelist_terms.py +++ b/cdisc_rules_engine/operations/codelist_terms.py @@ -60,10 +60,14 @@ def _handle_multiple_versions(self) -> pd.Series: ct_df = self.evaluation_dataset.__class__.from_dict(ct_data) ct_df = ct_df.astype( { - "version": "string", - "codelist_code": "string", + "version": str, + "codelist_code": str, } ) + cast_cols = {self.params.ct_version: "string"} + if self.params.codelist_code in self.evaluation_dataset.columns: + cast_cols[self.params.codelist_code] = "string" + self.evaluation_dataset = self.evaluation_dataset.astype(cast_cols) if self.params.codelist_code in self.evaluation_dataset.columns: result = self.evaluation_dataset.merge( ct_df.data, diff --git a/cdisc_rules_engine/services/data_readers/csv_reader.py b/cdisc_rules_engine/services/data_readers/csv_reader.py index ae8aa90d0..901e6d695 100644 --- a/cdisc_rules_engine/services/data_readers/csv_reader.py +++ b/cdisc_rules_engine/services/data_readers/csv_reader.py @@ -1,6 +1,6 @@ import tempfile -from dask.dataframe import dd +import dask.dataframe as dd from cdisc_rules_engine.exceptions.custom_exceptions import InvalidCSVFile from cdisc_rules_engine.interfaces import DataReaderInterface diff --git a/cdisc_rules_engine/services/data_services/usdm_data_service.py b/cdisc_rules_engine/services/data_services/usdm_data_service.py index 34ebe2285..e7950eed7 100644 --- a/cdisc_rules_engine/services/data_services/usdm_data_service.py +++ b/cdisc_rules_engine/services/data_services/usdm_data_service.py @@ -399,8 +399,8 @@ def __read_node_metadata( } @staticmethod - def __get_full_path(node: DatumInContext): - return f"{node.full_path}".replace(".[", "[") + def __get_full_path(node: DatumInContext) -> str: + return str(node.full_path).replace(".[", "[") def __get_datasets_content_index(self) -> List[dict]: """ diff --git a/cdisc_rules_engine/services/datasetxpt_metadata_reader.py b/cdisc_rules_engine/services/datasetxpt_metadata_reader.py index f20506c91..b96dc4540 100644 --- a/cdisc_rules_engine/services/datasetxpt_metadata_reader.py +++ b/cdisc_rules_engine/services/datasetxpt_metadata_reader.py @@ -61,7 +61,7 @@ def read(self) -> dict: "variable_labels": list(metadata.column_labels), "variable_names": list(metadata.column_names), "variable_formats": [ - "" if data_type == "NULL" else data_type + "" if (data_type == "NULL" or data_type is None) else data_type for data_type in metadata.original_variable_types.values() ], "variable_name_to_label_map": metadata.column_names_to_labels, diff --git a/core.py b/core.py index 98f0a5a70..ea660b867 100644 --- a/core.py +++ b/core.py @@ -357,7 +357,6 @@ def load_custom_dotenv_from_data_options(_ctx, _param, value): "-s", "--standard", required=True, - default=None, help="CDISC standard to validate against", envvar="PRODUCT", ) @@ -365,7 +364,6 @@ def load_custom_dotenv_from_data_options(_ctx, _param, value): "-v", "--version", required=True, - default=None, help="Standard version to validate against", envvar="VERSION", ) diff --git a/docs/contributing.md b/docs/contributing.md index d53a3315e..f087b60b9 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -34,7 +34,7 @@ This project enforces consistent formatting and linting via pre-commit hooks. - [`flake8`](https://flake8.pycqa.org/) — Python linter - [`prettier`](https://prettier.io/) — JSON, YAML, and Markdown formatter -Both `black` and `flake8` are included in `requirements-dev.txt`. After installing dependencies, install the pre-commit hooks: +Both `black` and `flake8` are included in the `dev` dependency group in `pyproject.toml`. After installing dependencies, install the pre-commit hooks: ```bash pre-commit install diff --git a/docs/development.md b/docs/development.md index bb4c27427..fb920f0d8 100644 --- a/docs/development.md +++ b/docs/development.md @@ -46,10 +46,21 @@ source venv/bin/activate # Activate (Windows) .\venv\Scripts\Activate -# Install dependencies -python -m pip install -r requirements-dev.txt +# Install uv (if not already installed) +pip install uv + +# Install pinned dependencies from the primary & dev lockfiles +uv pip sync pylock.dev.toml + +# Install the package itself in editable mode +pip install -e. ``` +> **Note:** `pylock.toml` and `pylock.dev.toml` are standard lockfiles (PEP 751) and can be used +> with any compatible tool. If you prefer not to use uv, you can install core dependencies via +> standard pip (`pip install .`), though dev dependencies will need to be installed separately +> and exact version pinning is only guaranteed when using a tool that supports `pylock.toml`. + --- ## Running Tests diff --git a/docs/quick-start.md b/docs/quick-start.md index 0b810ae20..0fcd6cc50 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -125,9 +125,15 @@ python -m venv venv ### 3. Install Dependencies ```bash -python -m pip install -r requirements-dev.txt +pip install uv +uv pip sync pylock.toml ``` +> **Note:** `pylock.toml` is a standard format (PEP 751) and can be used with any compatible tool. +> If you prefer not to use uv, you can install directly from `pyproject.toml` using standard pip +> (`pip install .`) or any other PEP 517-compatible tool such as pip-tools or Poetry. Note that +> exact version pinning is only guaranteed when using a tool that supports `pylock.toml`. + ### 4. Populate the Cache ```bash diff --git a/pylock.dev.toml b/pylock.dev.toml new file mode 100644 index 000000000..7cbaea02c --- /dev/null +++ b/pylock.dev.toml @@ -0,0 +1,518 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile pyproject.toml --group dev -o pylock.dev.toml +lock-version = "1.0" +created-by = "uv" +requires-python = ">=3.12.10" + +[[packages]] +name = "altgraph" +version = "0.17.5" +sdist = { url = "https://files.pythonhosted.org/packages/7e/f8/97fdf103f38fed6792a1601dbc16cc8aac56e7459a9fff08c812d8ae177a/altgraph-0.17.5.tar.gz", upload-time = 2025-11-21T20:35:50Z, size = 48428, hashes = { sha256 = "c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/a9/ba/000a1996d4308bc65120167c21241a3b205464a2e0b58deda26ae8ac21d1/altgraph-0.17.5-py2.py3-none-any.whl", upload-time = 2025-11-21T20:35:49Z, size = 21228, hashes = { sha256 = "f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597" } }] + +[[packages]] +name = "attrs" +version = "26.1.0" +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", upload-time = 2026-03-19T14:22:25Z, size = 952055, hashes = { sha256 = "d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", upload-time = 2026-03-19T14:22:23Z, size = 67548, hashes = { sha256 = "c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309" } }] + +[[packages]] +name = "black" +version = "26.5.1" +sdist = { url = "https://files.pythonhosted.org/packages/c0/37/5628dd55bf2b34257fc7603f0fe97c40e3aaf24265f416a9c85c95ca1436/black-26.5.1.tar.gz", upload-time = 2026-05-18T16:53:36Z, size = 679439, hashes = { sha256 = "dd321f668053961824bcc1be1cc1df748b2d7e4fa28086b08331e577b0100a73" } } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/33/dafc5808c2af43672912111d7c3354af1615f7e2be3bed7a878461abbe4d/black-26.5.1-cp312-cp312-win_amd64.whl", upload-time = 2026-05-18T17:05:25Z, size = 1486825, hashes = { sha256 = "a1dca32d9f1784af512a13410ec204c6f7f0aa9797a111c42e1c03449821c264" } }, + { url = "https://files.pythonhosted.org/packages/94/51/f975cae76d44274cc2868dc9040ac5d58d464784610234455b4e7b19c6ef/black-26.5.1-py3-none-any.whl", upload-time = 2026-05-18T16:53:33Z, size = 213693, hashes = { sha256 = "4ed7f7da04046d2e488437170797d3b4a4ad83906683bcb7dfc68b673bbce5e2" } }, +] + +[[packages]] +name = "business-rules-enhanced" +version = "1.4.8" +sdist = { url = "https://files.pythonhosted.org/packages/ad/d8/c77f91155c19822ca31f7bd273234485c46263631721a6dae9717543514a/business_rules_enhanced-1.4.8.tar.gz", upload-time = 2025-07-17T20:33:49Z, size = 14119, hashes = { sha256 = "9a5d37ad34efea59f725f33e6c4a983d5f90a7d845864223ce4a50b7c8c36254" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/6d/ac/faa00bef5f6f2e4c0b9e6a0cb821e30f3b1854184070313975ee38ed6999/business_rules_enhanced-1.4.8-py3-none-any.whl", upload-time = 2025-07-17T20:33:48Z, size = 12547, hashes = { sha256 = "b02c8cf919b40dcb6b8da22d5f4f499da635a96546ae01dac55d663325aa90f8" } }] + +[[packages]] +name = "cachetools" +version = "7.1.4" +sdist = { url = "https://files.pythonhosted.org/packages/f4/8b/0d3945a13955303b81272f759a0331e54c5c793da455e6f5706b89d2639c/cachetools-7.1.4.tar.gz", upload-time = 2026-05-21T22:40:43Z, size = 40085, hashes = { sha256 = "437f55a4e0c1b01a4f3077cc470e6991d47430970e36fbcb77e2be0df4fc1cd6" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/8c/7b/1fc1c09cc0756cf25861a3be10565915953876da48bb228fb9a672b20a42/cachetools-7.1.4-py3-none-any.whl", upload-time = 2026-05-21T22:40:41Z, size = 16761, hashes = { sha256 = "323dc4127934744db5b54eb4924482d7edafbf9554e820d1531c2e08c0e4ef54" } }] + +[[packages]] +name = "cdisc-library-client" +version = "0.1.6" +sdist = { url = "https://files.pythonhosted.org/packages/0c/17/d426b962cbe1d955922db868fea873b03109b46f80585e06660dd6a07d05/cdisc_library_client-0.1.6.tar.gz", upload-time = 2024-12-09T19:57:05Z, size = 4133, hashes = { sha256 = "d3e112d68f406a3d02d9e53c2981fd7cbceec4976ec41d0c5634c24ddf2558d4" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/1f/d3/1e1dfccb4c3fcf4ccbfcd566b9b71c060fba4ba06d33ea9742aa1e2440fb/cdisc_library_client-0.1.6-py3-none-any.whl", upload-time = 2024-12-09T19:57:04Z, size = 4847, hashes = { sha256 = "701fd27c29b3255ccadf3db717b2e68ec2d8edc9992782b7eeb130fe09175e09" } }] + +[[packages]] +name = "cerberus" +version = "1.3.8" +sdist = { url = "https://files.pythonhosted.org/packages/7a/cf/845d32e330e49e34f1a22dc44868750e75485d7c08c07d37795bcf0a780e/cerberus-1.3.8.tar.gz", upload-time = 2025-11-06T18:29:40Z, size = 29660, hashes = { sha256 = "579554887ffd189226774b87570f4a76db75cf0efcbaffcacd5e98b8ee877f61" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/a1/00/ff53f3a4d51e64e9137ce2408a43edf18fec96eebb61f87a6598578fa563/cerberus-1.3.8-py3-none-any.whl", upload-time = 2025-11-06T18:29:38Z, size = 30567, hashes = { sha256 = "46c029e3e2a4735408ed36bec14ef2cbf3e50d8ebe47fb34ee1e54b2da814df2" } }] + +[[packages]] +name = "certifi" +version = "2026.5.20" +sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", upload-time = 2026-05-20T11:46:50Z, size = 135422, hashes = { sha256 = "69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", upload-time = 2026-05-20T11:46:48Z, size = 134134, hashes = { sha256 = "3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897" } }] + +[[packages]] +name = "cfgv" +version = "3.5.0" +sdist = { url = "https://files.pythonhosted.org/packages/4e/b5/721b8799b04bf9afe054a3899c6cf4e880fcf8563cc71c15610242490a0c/cfgv-3.5.0.tar.gz", upload-time = 2025-11-19T20:55:51Z, size = 7334, hashes = { sha256 = "d5b1034354820651caa73ede66a6294d6e95c1b00acc5e9b098e917404669132" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl", upload-time = 2025-11-19T20:55:50Z, size = 7445, hashes = { sha256 = "a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0" } }] + +[[packages]] +name = "charset-normalizer" +version = "3.4.7" +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", upload-time = 2026-04-02T09:28:39Z, size = 144271, hashes = { sha256 = "ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5" } } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", upload-time = 2026-04-02T09:26:42Z, size = 159330, hashes = { sha256 = "5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6" } }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", upload-time = 2026-04-02T09:28:37Z, size = 61958, hashes = { sha256 = "3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d" } }, +] + +[[packages]] +name = "click" +version = "8.4.1" +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", upload-time = 2026-05-22T04:08:37Z, size = 353007, hashes = { sha256 = "918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", upload-time = 2026-05-22T04:08:35Z, size = 116639, hashes = { sha256 = "482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2" } }] + +[[packages]] +name = "cloudpickle" +version = "3.1.2" +sdist = { url = "https://files.pythonhosted.org/packages/27/fb/576f067976d320f5f0114a8d9fa1215425441bb35627b1993e5afd8111e5/cloudpickle-3.1.2.tar.gz", upload-time = 2025-11-03T09:25:26Z, size = 22330, hashes = { sha256 = "7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl", upload-time = 2025-11-03T09:25:25Z, size = 22228, hashes = { sha256 = "9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a" } }] + +[[packages]] +name = "colorama" +version = "0.4.6" +marker = "sys_platform == 'win32'" +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", upload-time = 2022-10-25T02:36:22Z, size = 27697, hashes = { sha256 = "08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", upload-time = 2022-10-25T02:36:20Z, size = 25335, hashes = { sha256 = "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" } }] + +[[packages]] +name = "coverage" +version = "7.14.1" +sdist = { url = "https://files.pythonhosted.org/packages/54/fd/0ab2772530e946e1be1abd0bc09e647ec9b02e88f0867857601fefca8953/coverage-7.14.1.tar.gz", upload-time = 2026-05-26T20:41:36Z, size = 920132, hashes = { sha256 = "30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be" } } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/81/8b7cd386839b039ebe1855733b9f9449a8dec5d79564018234f185a7fa70/coverage-7.14.1-cp312-cp312-win_amd64.whl", upload-time = 2026-05-26T20:39:26Z, size = 223372, hashes = { sha256 = "54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e" } }, + { url = "https://files.pythonhosted.org/packages/8a/3c/1a983b9a745d7f83d53f057bcc5bf79ba6a2bbc08266b3f0c7d6fe630c9b/coverage-7.14.1-py3-none-any.whl", upload-time = 2026-05-26T20:41:34Z, size = 211815, hashes = { sha256 = "a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2" } }, +] + +[[packages]] +name = "cramjam" +version = "2.11.0" +sdist = { url = "https://files.pythonhosted.org/packages/14/12/34bf6e840a79130dfd0da7badfb6f7810b8fcfd60e75b0539372667b41b6/cramjam-2.11.0.tar.gz", upload-time = 2025-07-27T21:25:07Z, size = 99100, hashes = { sha256 = "5c82500ed91605c2d9781380b378397012e25127e89d64f460fea6aeac4389b4" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/75/b1/d53002729cfd94c5844ddfaf1233c86d29f2dbfc1b764a6562c41c044199/cramjam-2.11.0-cp312-cp312-win_amd64.whl", upload-time = 2025-07-27T21:22:51Z, size = 1709287, hashes = { sha256 = "53fed080476d5f6ad7505883ec5d1ec28ba36c2273db3b3e92d7224fe5e463db" } }] + +[[packages]] +name = "dask" +version = "2026.3.0" +sdist = { url = "https://files.pythonhosted.org/packages/d7/2a/5d8cc1579590af86576dde890254440e478c7174b93a02095ecfc2e6ba38/dask-2026.3.0.tar.gz", upload-time = 2026-03-18T07:10:14Z, size = 11000710, hashes = { sha256 = "f7d96c8274e8a900d217c1ff6ea8d1bbf0b4c2c21e74a409644498d925eb8f85" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/4a/f3/00bb1e867fba351e2d784170955713bee200c43ea306c59f30bd7e748192/dask-2026.3.0-py3-none-any.whl", upload-time = 2026-03-18T07:10:12Z, size = 1485630, hashes = { sha256 = "be614b9242b0b38288060fb2d7696125946469c98a1c30e174883fd199e0428d" } }] + +[[packages]] +name = "distlib" +version = "0.4.2" +sdist = { url = "https://files.pythonhosted.org/packages/46/8d/873e9252ea2c0e0c857884e0a2899ec43ade132345df1925ef24cbe64f18/distlib-0.4.2.tar.gz", upload-time = 2026-06-08T16:24:15Z, size = 614914, hashes = { sha256 = "baeb401c90f27acd15c4861ae0847d1e731c27ac3dbf4210643ba61fa1e813db" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c1/60/aa891c893821d4d127292ed66c6940d1d715894bd5a0ce048056bc641773/distlib-0.4.2-py2.py3-none-any.whl", upload-time = 2026-06-08T16:24:13Z, size = 470510, hashes = { sha256 = "ca4cb11e5d746b5ec13c199cbf19ae27a241f89702b54e153a74332955446067" } }] + +[[packages]] +name = "elementpath" +version = "5.1.1" +sdist = { url = "https://files.pythonhosted.org/packages/94/95/eeb61a2a917bf506d1402748e71c62399d8dcdd8cdccd64c81962832c260/elementpath-5.1.1.tar.gz", upload-time = 2026-01-20T21:42:27Z, size = 375378, hashes = { sha256 = "c4d1bd6aed987258354d0ea004d965eb0a6818213326bd4fd9bde5dacdb20277" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/14/5a/4ddfd9aeecdc75a78b5d85d882abc2b822115caae2c00a4d0eb23cc101fc/elementpath-5.1.1-py3-none-any.whl", upload-time = 2026-01-20T21:42:24Z, size = 259962, hashes = { sha256 = "57637359065e60654422d8474c1749b09bb21348012b7197f868027e3c09c9b9" } }] + +[[packages]] +name = "et-xmlfile" +version = "2.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", upload-time = 2024-10-25T17:25:40Z, size = 17234, hashes = { sha256 = "dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", upload-time = 2024-10-25T17:25:39Z, size = 18059, hashes = { sha256 = "7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa" } }] + +[[packages]] +name = "fastparquet" +version = "2026.5.0" +sdist = { url = "https://files.pythonhosted.org/packages/1e/82/2de205357ce01bd86b9955910b7bf2bbcc29f7aa5cfbc1f0fadc299fc2b3/fastparquet-2026.5.0.tar.gz", upload-time = 2026-05-15T13:16:46Z, size = 498405, hashes = { sha256 = "12a813d1c91b9d316a8d43860074daf4566849f776f9cd549742aa71d907e4f6" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/08/fe/ba47bfa67868c42f3203e6738b90b80e25f3ecdf1f85e253b27ef2135cf2/fastparquet-2026.5.0-cp312-cp312-win_amd64.whl", upload-time = 2026-05-15T13:19:39Z, size = 695697, hashes = { sha256 = "76f5e7df0fbeb50c694023bf0d77afeb0a33982d30e827d473abd7caf5462a9d" } }] + +[[packages]] +name = "filelock" +version = "3.29.1" +sdist = { url = "https://files.pythonhosted.org/packages/1f/f9/f38573ed5844586db374d085911740a501ccfa373b455fc9413f09f85237/filelock-3.29.1.tar.gz", upload-time = 2026-06-03T15:19:04Z, size = 59335, hashes = { sha256 = "d97e6b1b9757569626c58caa07dc4beb1613f4a2938b1e8cc81afca398906c9e" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/4c/a0/614c5fe402fd88951df45f4dda2fa3b4e17a99ecd92340771929169b3b95/filelock-3.29.1-py3-none-any.whl", upload-time = 2026-06-03T15:19:02Z, size = 40750, hashes = { sha256 = "85199dfd706869641b72b2e8955d5416a4b2b7dc4b0e8e6d97b4cc1299a6983b" } }] + +[[packages]] +name = "flake8" +version = "7.3.0" +sdist = { url = "https://files.pythonhosted.org/packages/9b/af/fbfe3c4b5a657d79e5c47a2827a362f9e1b763336a52f926126aa6dc7123/flake8-7.3.0.tar.gz", upload-time = 2025-06-20T19:31:35Z, size = 48326, hashes = { sha256 = "fe044858146b9fc69b551a4b490d69cf960fcb78ad1edcb84e7fbb1b4a8e3872" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl", upload-time = 2025-06-20T19:31:34Z, size = 57922, hashes = { sha256 = "b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e" } }] + +[[packages]] +name = "fsspec" +version = "2026.4.0" +sdist = { url = "https://files.pythonhosted.org/packages/d5/8d/1c51c094345df128ca4a990d633fe1a0ff28726c9e6b3c41ba65087bba1d/fsspec-2026.4.0.tar.gz", upload-time = 2026-04-29T20:42:38Z, size = 312760, hashes = { sha256 = "301d8ac70ae90ef3ad05dcf94d6c3754a097f9b5fe4667d2787aa359ec7df7e4" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl", upload-time = 2026-04-29T20:42:36Z, size = 203402, hashes = { sha256 = "11ef7bb35dab8a394fde6e608221d5cf3e8499401c249bebaeaad760a1a8dec2" } }] + +[[packages]] +name = "identify" +version = "2.6.19" +sdist = { url = "https://files.pythonhosted.org/packages/52/63/51723b5f116cc04b061cb6f5a561790abf249d25931d515cd375e063e0f4/identify-2.6.19.tar.gz", upload-time = 2026-04-17T18:39:50Z, size = 99567, hashes = { sha256 = "6be5020c38fcb07da56c53733538a3081ea5aa70d36a156f83044bfbf9173842" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl", upload-time = 2026-04-17T18:39:49Z, size = 99397, hashes = { sha256 = "20e6a87f786f768c092a721ad107fc9df0eb89347be9396cadf3f4abbd1fb78a" } }] + +[[packages]] +name = "idna" +version = "3.18" +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", upload-time = 2026-06-02T14:34:07Z, size = 196711, hashes = { sha256 = "ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", upload-time = 2026-06-02T14:34:06Z, size = 65455, hashes = { sha256 = "7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2" } }] + +[[packages]] +name = "importlib-metadata" +version = "9.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz", upload-time = 2026-03-20T06:42:56Z, size = 56405, hashes = { sha256 = "a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl", upload-time = 2026-03-20T06:42:55Z, size = 27789, hashes = { sha256 = "2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7" } }] + +[[packages]] +name = "iniconfig" +version = "2.3.0" +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", upload-time = 2025-10-18T21:55:43Z, size = 20503, hashes = { sha256 = "c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", upload-time = 2025-10-18T21:55:41Z, size = 7484, hashes = { sha256 = "f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12" } }] + +[[packages]] +name = "jsonata-python" +version = "0.6.2" +sdist = { url = "https://files.pythonhosted.org/packages/f4/cc/16f20b1e9466a9904601df339a6b2b31d82eeba6ae97610076ffc9fec9a2/jsonata_python-0.6.2.tar.gz", upload-time = 2026-03-21T07:02:20Z, size = 363452, hashes = { sha256 = "6d553563f0d2cbfd64842d6b35fcec18615acbcf0859061be04bacce3a83b418" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/b6/fb/8ba2f1354718839087cb83b138d710026a05a05e3780c9afa8e43d0a9b86/jsonata_python-0.6.2-py3-none-any.whl", upload-time = 2026-03-21T07:02:19Z, size = 83798, hashes = { sha256 = "86c61632f23587d945cf1693fe966f023593c7ebfe2615814db8756c67e7c776" } }] + +[[packages]] +name = "jsonpath-ng" +version = "1.8.0" +sdist = { url = "https://files.pythonhosted.org/packages/32/58/250751940d75c8019659e15482d548a4aa3b6ce122c515102a4bfdac50e3/jsonpath_ng-1.8.0.tar.gz", upload-time = 2026-02-24T14:42:06Z, size = 74513, hashes = { sha256 = "54252968134b5e549ea5b872f1df1168bd7defe1a52fed5a358c194e1943ddc3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/03/99/33c7d78a3fb70d545fd5411ac67a651c81602cc09c9cf0df383733f068c5/jsonpath_ng-1.8.0-py3-none-any.whl", upload-time = 2026-02-28T00:53:19Z, size = 67844, hashes = { sha256 = "b8dde192f8af58d646fc031fac9c99fe4d00326afc4148f1f043c601a8cfe138" } }] + +[[packages]] +name = "jsonschema" +version = "4.26.0" +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", upload-time = 2026-01-07T13:41:07Z, size = 366583, hashes = { sha256 = "0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", upload-time = 2026-01-07T13:41:05Z, size = 90630, hashes = { sha256 = "d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce" } }] + +[[packages]] +name = "jsonschema-specifications" +version = "2025.9.1" +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", upload-time = 2025-09-08T01:34:59Z, size = 32855, hashes = { sha256 = "b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", upload-time = 2025-09-08T01:34:57Z, size = 18437, hashes = { sha256 = "98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe" } }] + +[[packages]] +name = "locket" +version = "1.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", upload-time = 2022-04-20T22:04:44Z, size = 4350, hashes = { sha256 = "5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", upload-time = 2022-04-20T22:04:42Z, size = 4398, hashes = { sha256 = "b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3" } }] + +[[packages]] +name = "lxml" +version = "6.1.1" +sdist = { url = "https://files.pythonhosted.org/packages/05/3b/aab6728cae887456f409b4d75e8a01856e4f04bd510de38052a47768b680/lxml-6.1.1.tar.gz", upload-time = 2026-05-18T19:19:06Z, size = 4197430, hashes = { sha256 = "ba96ae44888e0185281e937633a743ea90d5a196c6000f82565ebb0580012d40" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/1b/89/45198e9624762af2dfd2cb8782598477ceb29f6e59caab560388ae1f4ec1/lxml-6.1.1-cp312-cp312-win_amd64.whl", upload-time = 2026-05-18T19:17:56Z, size = 3997255, hashes = { sha256 = "26e6eda8d38c1fcab1090dd196ee87cbd13788e531937610e2589085de074e77" } }] + +[[packages]] +name = "mccabe" +version = "0.7.0" +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", upload-time = 2022-01-24T01:14:51Z, size = 9658, hashes = { sha256 = "348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", upload-time = 2022-01-24T01:14:49Z, size = 7350, hashes = { sha256 = "6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e" } }] + +[[packages]] +name = "mypy-extensions" +version = "1.1.0" +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", upload-time = 2025-04-22T14:54:24Z, size = 6343, hashes = { sha256 = "52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", upload-time = 2025-04-22T14:54:22Z, size = 4963, hashes = { sha256 = "1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505" } }] + +[[packages]] +name = "narwhals" +version = "2.22.1" +sdist = { url = "https://files.pythonhosted.org/packages/62/3c/c4ef2164a71c1a63d7f1ae411c4082c5fa872405106db60a4b7114989ad7/narwhals-2.22.1.tar.gz", upload-time = 2026-06-05T12:34:34Z, size = 647493, hashes = { sha256 = "d62920805a0a43b7ff8b54b0c0d3142d796f8a9301836ada37e573d6a33cbcd9" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl", upload-time = 2026-06-05T12:34:32Z, size = 454815, hashes = { sha256 = "60567d774edf77db53906f89d9fbd164e66e56d66d388e1e6990f17ac33cfb53" } }] + +[[packages]] +name = "nodeenv" +version = "1.10.0" +sdist = { url = "https://files.pythonhosted.org/packages/24/bf/d1bda4f6168e0b2e9e5958945e01910052158313224ada5ce1fb2e1113b8/nodeenv-1.10.0.tar.gz", upload-time = 2025-12-20T14:08:54Z, size = 55611, hashes = { sha256 = "996c191ad80897d076bdfba80a41994c2b47c68e224c542b48feba42ba00f8bb" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl", upload-time = 2025-12-20T14:08:52Z, size = 23438, hashes = { sha256 = "5bb13e3eed2923615535339b3c620e76779af4cb4c6a90deccc9e36b274d3827" } }] + +[[packages]] +name = "numpy" +version = "2.4.6" +sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", upload-time = 2026-05-18T23:37:14Z, size = 20735807, hashes = { sha256 = "f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ab/ca/feab00bd44aa5fe1ad2c18f08b4d3bb92e26484b0b1d1443897809ed528c/numpy-2.4.6-cp312-cp312-win_amd64.whl", upload-time = 2026-05-18T23:34:23Z, size = 12321687, hashes = { sha256 = "d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751" } }] + +[[packages]] +name = "odmlib" +version = "0.1.4" +sdist = { url = "https://files.pythonhosted.org/packages/25/7b/60a82f027eaf462e3da3b7daa31f903cee93aaf1a0e26c4a747d5303fe6f/odmlib-0.1.4.tar.gz", upload-time = 2022-03-20T17:21:22Z, size = 257481, hashes = { sha256 = "3b4c31ccf4b68a2c5f1cbe0265a44fe40556f9b3e650efe5846662ae31b96a51" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/f0/ce/15da461c1b996144b459882a6affd097a21737b19077a3a5f064b40bd4e1/odmlib-0.1.4-py3-none-any.whl", upload-time = 2022-03-20T17:21:20Z, size = 311107, hashes = { sha256 = "712e9204013a80923607f453ec5266fd05a0b7cae2a3b96ba35d2e1bcb57624d" } }] + +[[packages]] +name = "openpyxl" +version = "3.1.5" +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", upload-time = 2024-06-28T14:03:44Z, size = 186464, hashes = { sha256 = "cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", upload-time = 2024-06-28T14:03:41Z, size = 250910, hashes = { sha256 = "5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2" } }] + +[[packages]] +name = "packaging" +version = "26.2" +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", upload-time = 2026-04-24T20:15:23Z, size = 228134, hashes = { sha256 = "ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", upload-time = 2026-04-24T20:15:22Z, size = 100195, hashes = { sha256 = "5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e" } }] + +[[packages]] +name = "pandas" +version = "2.3.3" +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", upload-time = 2025-09-29T23:34:51Z, size = 4495223, hashes = { sha256 = "e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", upload-time = 2025-09-29T23:20:54Z, size = 10992722, hashes = { sha256 = "a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b" } }] + +[[packages]] +name = "partd" +version = "1.4.2" +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", upload-time = 2024-05-06T19:51:41Z, size = 21029, hashes = { sha256 = "d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", upload-time = 2024-05-06T19:51:39Z, size = 18905, hashes = { sha256 = "978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f" } }] + +[[packages]] +name = "pathspec" +version = "1.1.1" +sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", upload-time = 2026-04-27T01:46:08Z, size = 135180, hashes = { sha256 = "17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", upload-time = 2026-04-27T01:46:07Z, size = 57328, hashes = { sha256 = "a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189" } }] + +[[packages]] +name = "pathvalidate" +version = "3.3.1" +sdist = { url = "https://files.pythonhosted.org/packages/fa/2a/52a8da6fe965dea6192eb716b357558e103aea0a1e9a8352ad575a8406ca/pathvalidate-3.3.1.tar.gz", upload-time = 2025-06-15T09:07:20Z, size = 63262, hashes = { sha256 = "b18c07212bfead624345bb8e1d6141cdcf15a39736994ea0b94035ad2b1ba177" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl", upload-time = 2025-06-15T09:07:19Z, size = 24305, hashes = { sha256 = "5263baab691f8e1af96092fa5137ee17df5bdfbd6cff1fcac4d6ef4bc2e1735f" } }] + +[[packages]] +name = "pefile" +version = "2024.8.26" +marker = "sys_platform == 'win32'" +sdist = { url = "https://files.pythonhosted.org/packages/03/4f/2750f7f6f025a1507cd3b7218691671eecfd0bbebebe8b39aa0fe1d360b8/pefile-2024.8.26.tar.gz", upload-time = 2024-08-26T20:58:38Z, size = 76008, hashes = { sha256 = "3ff6c5d8b43e8c37bb6e6dd5085658d658a7a0bdcd20b6a07b1fcfc1c4e9d632" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/54/16/12b82f791c7f50ddec566873d5bdd245baa1491bac11d15ffb98aecc8f8b/pefile-2024.8.26-py3-none-any.whl", upload-time = 2024-08-26T21:01:02Z, size = 74766, hashes = { sha256 = "76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b957c6f" } }] + +[[packages]] +name = "platformdirs" +version = "4.10.0" +sdist = { url = "https://files.pythonhosted.org/packages/d7/47/e4501f49c178ae1d9f4a75073fda4204f52647993f075a9db4d14930e0c5/platformdirs-4.10.0.tar.gz", upload-time = 2026-05-28T03:32:53Z, size = 31224, hashes = { sha256 = "31e761a6a0ca04faf7353ea759bdba55652be214725111e5aac52dfa29d4bef7" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl", upload-time = 2026-05-28T03:32:52Z, size = 22743, hashes = { sha256 = "fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a" } }] + +[[packages]] +name = "pluggy" +version = "1.6.0" +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", upload-time = 2025-05-15T12:30:07Z, size = 69412, hashes = { sha256 = "7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", upload-time = 2025-05-15T12:30:06Z, size = 20538, hashes = { sha256 = "e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746" } }] + +[[packages]] +name = "pre-commit" +version = "4.6.0" +sdist = { url = "https://files.pythonhosted.org/packages/8e/22/2de9408ac81acbb8a7d05d4cc064a152ccf33b3d480ebe0cd292153db239/pre_commit-4.6.0.tar.gz", upload-time = 2026-04-21T20:31:41Z, size = 198525, hashes = { sha256 = "718d2208cef53fdc38206e40524a6d4d9576d103eb16f0fec11c875e7716e9d9" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/80/6e/4b28b62ecb6aae56769c34a8ff1d661473ec1e9519e2d5f8b2c150086b26/pre_commit-4.6.0-py2.py3-none-any.whl", upload-time = 2026-04-21T20:31:40Z, size = 226472, hashes = { sha256 = "e2cf246f7299edcabcf15f9b0571fdce06058527f0a06535068a86d38089f29b" } }] + +[[packages]] +name = "psutil" +version = "7.2.2" +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", upload-time = 2026-01-28T18:14:54Z, size = 493740, hashes = { sha256 = "0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", upload-time = 2026-01-28T18:15:33Z, size = 137737, hashes = { sha256 = "eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988" } }] + +[[packages]] +name = "pyarrow" +version = "24.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/91/13/13e1069b351bdc3881266e11147ffccf687505dbb0ea74036237f5d454a5/pyarrow-24.0.0.tar.gz", upload-time = 2026-04-21T10:51:25Z, size = 1180261, hashes = { sha256 = "85fe721a14dd823aca09127acbb06c3ca723efbd436c004f16bca601b04dcc83" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/66/1c/e3e72c8014ad2743ca64a701652c733cc5cbcee15c0463a32a8c55518d9e/pyarrow-24.0.0-cp312-cp312-win_amd64.whl", upload-time = 2026-04-21T10:48:01Z, size = 27355660, hashes = { sha256 = "295f0a7f2e242dabd513737cf076007dc5b2d59237e3eca37b05c0c6446f3826" } }] + +[[packages]] +name = "pycodestyle" +version = "2.14.0" +sdist = { url = "https://files.pythonhosted.org/packages/11/e0/abfd2a0d2efe47670df87f3e3a0e2edda42f055053c85361f19c0e2c1ca8/pycodestyle-2.14.0.tar.gz", upload-time = 2025-06-20T18:49:48Z, size = 39472, hashes = { sha256 = "c4b5b517d278089ff9d0abdec919cd97262a3367449ea1c8b49b91529167b783" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl", upload-time = 2025-06-20T18:49:47Z, size = 31594, hashes = { sha256 = "dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d" } }] + +[[packages]] +name = "pyflakes" +version = "3.4.0" +sdist = { url = "https://files.pythonhosted.org/packages/45/dc/fd034dc20b4b264b3d015808458391acbf9df40b1e54750ef175d39180b1/pyflakes-3.4.0.tar.gz", upload-time = 2025-06-20T18:45:27Z, size = 64669, hashes = { sha256 = "b24f96fafb7d2ab0ec5075b7350b3d2d2218eab42003821c06344973d3ea2f58" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl", upload-time = 2025-06-20T18:45:26Z, size = 63551, hashes = { sha256 = "f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f" } }] + +[[packages]] +name = "pyinstaller" +version = "6.20.0" +sdist = { url = "https://files.pythonhosted.org/packages/46/60/d03d52e6690d4e9caf333dcd14550cde634ce6c118b3bc8fa3112c3186fd/pyinstaller-6.20.0.tar.gz", upload-time = 2026-04-22T20:59:36Z, size = 4048728, hashes = { sha256 = "95c5c7e03d5d61e9dfb8ef259c699cf492bb1041beb6dbe83696608cec07347a" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/76/8c/300f57578882cce259bfb5ae56fda3b69caa3fe9df40a176c719920ea6e2/pyinstaller-6.20.0-py3-none-win_amd64.whl", upload-time = 2026-04-22T20:59:14Z, size = 1391851, hashes = { sha256 = "d588844e890ee80c4365867f98146636e1849bbca8e4284bbf0c809aff0f161a" } }] + +[[packages]] +name = "pyinstaller-hooks-contrib" +version = "2026.5" +sdist = { url = "https://files.pythonhosted.org/packages/1a/67/f4452d68793fb15beba4f19ef39a38a8822f0da7452b503c400d5a21f5c1/pyinstaller_hooks_contrib-2026.5.tar.gz", upload-time = 2026-05-04T22:36:55Z, size = 173689, hashes = { sha256 = "f066dfca8f7c45ff6336c9cf9fe25b4e48bfeb322a1aa24faaedfb8a8d1b0b08" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/f6/5c/fd465d11da4d12b50d7eb5d2ee2ceb780d8d049dbb489f3828d131e387af/pyinstaller_hooks_contrib-2026.5-py3-none-any.whl", upload-time = 2026-05-04T22:36:53Z, size = 457314, hashes = { sha256 = "ea1535783fbdac4626351709e83f3ea80b681d3a4745763ebb407b5e27342eb9" } }] + +[[packages]] +name = "pympler" +version = "1.1" +sdist = { url = "https://files.pythonhosted.org/packages/dd/37/c384631908029676d8e7213dd956bb686af303a80db7afbc9be36bc49495/pympler-1.1.tar.gz", upload-time = 2024-06-28T19:56:06Z, size = 179954, hashes = { sha256 = "1eaa867cb8992c218430f1708fdaccda53df064144d1c5656b1e6f1ee6000424" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/79/4f/a6a2e2b202d7fd97eadfe90979845b8706676b41cbd3b42ba75adf329d1f/Pympler-1.1-py3-none-any.whl", upload-time = 2024-06-28T19:56:05Z, size = 165766, hashes = { sha256 = "5b223d6027d0619584116a0cbc28e8d2e378f7a79c1e5e024f9ff3b673c58506" } }] + +[[packages]] +name = "pyreadstat" +version = "1.3.5" +sdist = { url = "https://files.pythonhosted.org/packages/4a/5d/0dce5f7c8570afd3a2595f95c5fa8f814adfcdcd5b248470e3b6f132eb33/pyreadstat-1.3.5.tar.gz", upload-time = 2026-05-19T12:22:09Z, size = 514802, hashes = { sha256 = "c7332a764b221193522cbf942ed07898aac48180fe1a4435a5dc9a2fdd81c1e1" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/e2/1c/21ce077750fdeadad800289f0a8c648b4a8165b6da6908b287994ce1e3d6/pyreadstat-1.3.5-cp312-cp312-win_amd64.whl", upload-time = 2026-05-19T12:21:47Z, size = 2024486, hashes = { sha256 = "a7a32414c93dcfac36b3d525c3d16f91b8f86bc4ed7cac13ad29ab05a9204e34" } }] + +[[packages]] +name = "pytest" +version = "7.4.4" +sdist = { url = "https://files.pythonhosted.org/packages/80/1f/9d8e98e4133ffb16c90f3b405c43e38d3abb715bb5d7a63a5a684f7e46a3/pytest-7.4.4.tar.gz", upload-time = 2023-12-31T12:00:18Z, size = 1357116, hashes = { sha256 = "2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/51/ff/f6e8b8f39e08547faece4bd80f89d5a8de68a38b2d179cc1c4490ffa3286/pytest-7.4.4-py3-none-any.whl", upload-time = 2023-12-31T12:00:13Z, size = 325287, hashes = { sha256 = "b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8" } }] + +[[packages]] +name = "pytest-asyncio" +version = "0.23.8" +sdist = { url = "https://files.pythonhosted.org/packages/de/b4/0b378b7bf26a8ae161c3890c0b48a91a04106c5713ce81b4b080ea2f4f18/pytest_asyncio-0.23.8.tar.gz", upload-time = 2024-07-17T17:39:34Z, size = 46920, hashes = { sha256 = "759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ee/82/62e2d63639ecb0fbe8a7ee59ef0bc69a4669ec50f6d3459f74ad4e4189a2/pytest_asyncio-0.23.8-py3-none-any.whl", upload-time = 2024-07-17T17:39:32Z, size = 17663, hashes = { sha256 = "50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2" } }] + +[[packages]] +name = "pytest-cov" +version = "7.1.0" +sdist = { url = "https://files.pythonhosted.org/packages/b1/51/a849f96e117386044471c8ec2bd6cfebacda285da9525c9106aeb28da671/pytest_cov-7.1.0.tar.gz", upload-time = 2026-03-21T20:11:16Z, size = 55592, hashes = { sha256 = "30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/9d/7a/d968e294073affff457b041c2be9868a40c1c71f4a35fcc1e45e5493067b/pytest_cov-7.1.0-py3-none-any.whl", upload-time = 2026-03-21T20:11:14Z, size = 22876, hashes = { sha256 = "a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678" } }] + +[[packages]] +name = "python-dateutil" +version = "2.9.0.post0" +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", upload-time = 2024-03-01T18:36:20Z, size = 342432, hashes = { sha256 = "37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", upload-time = 2024-03-01T18:36:18Z, size = 229892, hashes = { sha256 = "a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" } }] + +[[packages]] +name = "python-discovery" +version = "1.4.0" +sdist = { url = "https://files.pythonhosted.org/packages/a6/12/38c1a0b1e64806780c9563e3fc9f6e472251839662587cfbe9bfaf2ae10a/python_discovery-1.4.0.tar.gz", upload-time = 2026-05-28T01:15:37Z, size = 68455, hashes = { sha256 = "eb8bc7daad3c226c147e45bb4e970a1feb1bf4048ee178e6db59e197b8010ce3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c8/8d/3d316429f65029532bb1e28ff77b797d86b5ac3915bb44ca4e19aa283d43/python_discovery-1.4.0-py3-none-any.whl", upload-time = 2026-05-28T01:15:36Z, size = 33217, hashes = { sha256 = "26ed78d703e234879a66244c7d4114563fb13ec5cd30a2d1357e5fb4850782da" } }] + +[[packages]] +name = "python-dotenv" +version = "1.2.2" +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", upload-time = 2026-03-01T16:00:26Z, size = 50135, hashes = { sha256 = "2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", upload-time = 2026-03-01T16:00:25Z, size = 22101, hashes = { sha256 = "1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a" } }] + +[[packages]] +name = "pytokens" +version = "0.4.1" +sdist = { url = "https://files.pythonhosted.org/packages/b6/34/b4e015b99031667a7b960f888889c5bd34ef585c85e1cb56a594b92836ac/pytokens-0.4.1.tar.gz", upload-time = 2026-01-30T01:03:45Z, size = 23015, hashes = { sha256 = "292052fe80923aae2260c073f822ceba21f3872ced9a68bb7953b348e561179a" } } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/df/533c82a3c752ba13ae7ef238b7f8cdd272cf1475f03c63ac6cf3fcfb00b6/pytokens-0.4.1-cp312-cp312-win_amd64.whl", upload-time = 2026-01-30T01:03:12Z, size = 103552, hashes = { sha256 = "3f901fe783e06e48e8cbdc82d631fca8f118333798193e026a50ce1b3757ea68" } }, + { url = "https://files.pythonhosted.org/packages/c6/78/397db326746f0a342855b81216ae1f0a32965deccfd7c830a2dbc66d2483/pytokens-0.4.1-py3-none-any.whl", upload-time = 2026-01-30T01:03:45Z, size = 13729, hashes = { sha256 = "26cef14744a8385f35d0e095dc8b3a7583f6c953c2e3d269c7f82484bf5ad2de" } }, +] + +[[packages]] +name = "pytz" +version = "2026.2" +sdist = { url = "https://files.pythonhosted.org/packages/ff/46/dd499ec9038423421951e4fad73051febaa13d2df82b4064f87af8b8c0c3/pytz-2026.2.tar.gz", upload-time = 2026-05-04T01:35:29Z, size = 320861, hashes = { sha256 = "0e60b47b29f21574376f218fe21abc009894a2321ea16c6754f3cad6eb7cdd6a" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl", upload-time = 2026-05-04T01:35:27Z, size = 510141, hashes = { sha256 = "04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126" } }] + +[[packages]] +name = "pywin32" +version = "312" +marker = "sys_platform == 'win32'" +wheels = [{ url = "https://files.pythonhosted.org/packages/03/d9/77040d3b43df3f3be32ea289433d660d2727f5ba327bc73be835127d9d60/pywin32-312-cp312-cp312-win_amd64.whl", upload-time = 2026-06-04T07:49:31Z, size = 6914841, hashes = { sha256 = "b457f6d628a47e8a7346ce22acb7e1a46a4a78b52e1d17e1af56871bd19a93bc" } }] + +[[packages]] +name = "pywin32-ctypes" +version = "0.2.3" +marker = "sys_platform == 'win32'" +sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", upload-time = 2024-08-14T10:15:34Z, size = 29471, hashes = { sha256 = "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", upload-time = 2024-08-14T10:15:33Z, size = 30756, hashes = { sha256 = "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8" } }] + +[[packages]] +name = "pyyaml" +version = "6.0.3" +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", upload-time = 2025-09-25T21:33:16Z, size = 130960, hashes = { sha256 = "d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", upload-time = 2025-09-25T21:32:21Z, size = 154003, hashes = { sha256 = "5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b" } }] + +[[packages]] +name = "redis" +version = "8.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/53/ae/ed461cca5780b5fc8b9fe8ca0ed98d89508645fb9d880c24cc42c087678f/redis-8.0.0.tar.gz", upload-time = 2026-05-28T12:45:13Z, size = 5101591, hashes = { sha256 = "a00c5355432051ac14e593b8b197fc76c887ee12d55a0984f69328a1115fdc49" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/27/e3/b519734372d305bd547534a9f32e4ce9f98552af753dce72cf3483a0ff0b/redis-8.0.0-py3-none-any.whl", upload-time = 2026-05-28T12:45:11Z, size = 499870, hashes = { sha256 = "c938c18338585009f0bc310f4c7e4e4b4d37639356c4ac072cedf3af570c8dc7" } }] + +[[packages]] +name = "referencing" +version = "0.37.0" +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", upload-time = 2025-10-13T15:30:48Z, size = 78036, hashes = { sha256 = "44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", upload-time = 2025-10-13T15:30:47Z, size = 26766, hashes = { sha256 = "381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231" } }] + +[[packages]] +name = "requests" +version = "2.34.2" +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", upload-time = 2026-05-14T19:25:27Z, size = 142856, hashes = { sha256 = "f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", upload-time = 2026-05-14T19:25:26Z, size = 73075, hashes = { sha256 = "2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0" } }] + +[[packages]] +name = "rpds-py" +version = "2026.5.1" +sdist = { url = "https://files.pythonhosted.org/packages/2e/43/25a8dcd3feedd735039a8f0b5b7e3b118232b5eae288c4fd9ab200d41094/rpds_py-2026.5.1.tar.gz", upload-time = 2026-05-28T12:02:13Z, size = 64459, hashes = { sha256 = "07b24fea40541e28570e5b795a4a38fbdcd12550c06bd0748005ecc8116ca256" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c5/93/e4116f2de7f56bc7406a76033dc501811ddeb22b7f056b92d632871ebb0c/rpds_py-2026.5.1-cp312-cp312-win_amd64.whl", upload-time = 2026-05-28T11:59:31Z, size = 229045, hashes = { sha256 = "0a7d1eec967df0e9b22614a5e177622e0c89611d03727fa0cb48e45028907870" } }] + +[[packages]] +name = "setuptools" +version = "82.0.1" +sdist = { url = "https://files.pythonhosted.org/packages/4f/db/cfac1baf10650ab4d1c111714410d2fbb77ac5a616db26775db562c8fab2/setuptools-82.0.1.tar.gz", upload-time = 2026-03-09T12:47:17Z, size = 1152316, hashes = { sha256 = "7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl", upload-time = 2026-03-09T12:47:15Z, size = 1006223, hashes = { sha256 = "a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb" } }] + +[[packages]] +name = "six" +version = "1.17.0" +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", upload-time = 2024-12-04T17:35:28Z, size = 34031, hashes = { sha256 = "ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", upload-time = 2024-12-04T17:35:26Z, size = 11050, hashes = { sha256 = "4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" } }] + +[[packages]] +name = "titlecase" +version = "2.4.1" +sdist = { url = "https://files.pythonhosted.org/packages/63/17/04d2d3e30e2bc5a3eefa1060b08e3fb628510440f938eaecabbe08976a26/titlecase-2.4.1.tar.gz", upload-time = 2023-09-23T05:03:46Z, size = 14434, hashes = { sha256 = "7d83a277ccbbda11a2944e78a63e5ccaf3d32f828c594312e4862f9a07f635f5" } } + +[[packages]] +name = "toolz" +version = "1.1.0" +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", upload-time = 2025-10-17T04:03:21Z, size = 52613, hashes = { sha256 = "27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", upload-time = 2025-10-17T04:03:20Z, size = 58093, hashes = { sha256 = "15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8" } }] + +[[packages]] +name = "typing-extensions" +version = "4.15.0" +marker = "python_full_version < '3.13'" +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", upload-time = 2025-08-25T13:49:26Z, size = 109391, hashes = { sha256 = "0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", upload-time = 2025-08-25T13:49:24Z, size = 44614, hashes = { sha256 = "f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" } }] + +[[packages]] +name = "tzdata" +version = "2026.2" +sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", upload-time = 2026-04-24T15:22:08Z, size = 198254, hashes = { sha256 = "9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", upload-time = 2026-04-24T15:22:05Z, size = 349321, hashes = { sha256 = "bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7" } }] + +[[packages]] +name = "urllib3" +version = "2.7.0" +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", upload-time = 2026-05-07T16:13:18Z, size = 433602, hashes = { sha256 = "231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", upload-time = 2026-05-07T16:13:17Z, size = 131087, hashes = { sha256 = "9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897" } }] + +[[packages]] +name = "validators" +version = "0.35.0" +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", upload-time = 2025-05-01T05:42:06Z, size = 73399, hashes = { sha256 = "992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", upload-time = 2025-05-01T05:42:04Z, size = 44712, hashes = { sha256 = "e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd" } }] + +[[packages]] +name = "virtualenv" +version = "21.4.2" +sdist = { url = "https://files.pythonhosted.org/packages/e1/0d/4e93c8e6d1001a75763f87d8f5ecda8ebc7f4aa2153dddfaf4ae8892821a/virtualenv-21.4.2.tar.gz", upload-time = 2026-05-31T17:01:22Z, size = 7613326, hashes = { sha256 = "38e6ee0a555615c0ea9da2ac7e9998fe8dc3b911dd33ad8eaad2020957653b0c" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/bf/c4/557dc082be035381b85fdb2b74e21d3d21b57750b74f2b47a32f3a639ff9/virtualenv-21.4.2-py3-none-any.whl", upload-time = 2026-05-31T17:01:20Z, size = 7594079, hashes = { sha256 = "854210ca524a1a4d0d744734f4acbc721c3ffe163b85bbf5d56d14d5ae2f0fae" } }] + +[[packages]] +name = "xmlschema" +version = "4.3.1" +sdist = { url = "https://files.pythonhosted.org/packages/da/c4/ef78a231be72349fd6677b989ff80e276ef62e28054c36c4fea3b4db9611/xmlschema-4.3.1.tar.gz", upload-time = 2026-01-17T23:01:04Z, size = 646611, hashes = { sha256 = "853effdfaf127849d4724368c17bd669e7f1486e15a0376404ad7954ec31a338" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/dd/7b/3471405875d0b5fac642e9a879b2c7db63642370799b2e9eea8297ffbad0/xmlschema-4.3.1-py3-none-any.whl", upload-time = 2026-01-17T23:01:00Z, size = 469891, hashes = { sha256 = "9560314d70ae87be0aecb8712cfebed636f867707ccf9758d4b0645d607f64b9" } }] + +[[packages]] +name = "zipp" +version = "4.1.0" +sdist = { url = "https://files.pythonhosted.org/packages/b9/d8/eab98a517c14134c0b2eb4e2387bc5f457334293ec5d2dd3857ec2966802/zipp-4.1.0.tar.gz", upload-time = 2026-05-18T20:08:57Z, size = 26214, hashes = { sha256 = "4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl", upload-time = 2026-05-18T20:08:57Z, size = 10238, hashes = { sha256 = "25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f" } }] diff --git a/pylock.toml b/pylock.toml new file mode 100644 index 000000000..280a8a578 --- /dev/null +++ b/pylock.toml @@ -0,0 +1,371 @@ +# This file was autogenerated by uv via the following command: +# uv pip compile pyproject.toml -o pylock.toml +lock-version = "1.0" +created-by = "uv" +requires-python = ">=3.12.10" + +[[packages]] +name = "altgraph" +version = "0.17.5" +sdist = { url = "https://files.pythonhosted.org/packages/7e/f8/97fdf103f38fed6792a1601dbc16cc8aac56e7459a9fff08c812d8ae177a/altgraph-0.17.5.tar.gz", upload-time = 2025-11-21T20:35:50Z, size = 48428, hashes = { sha256 = "c87b395dd12fabde9c99573a9749d67da8d29ef9de0125c7f536699b4a9bc9e7" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/a9/ba/000a1996d4308bc65120167c21241a3b205464a2e0b58deda26ae8ac21d1/altgraph-0.17.5-py2.py3-none-any.whl", upload-time = 2025-11-21T20:35:49Z, size = 21228, hashes = { sha256 = "f3a22400bce1b0c701683820ac4f3b159cd301acab067c51c653e06961600597" } }] + +[[packages]] +name = "attrs" +version = "26.1.0" +sdist = { url = "https://files.pythonhosted.org/packages/9a/8e/82a0fe20a541c03148528be8cac2408564a6c9a0cc7e9171802bc1d26985/attrs-26.1.0.tar.gz", upload-time = 2026-03-19T14:22:25Z, size = 952055, hashes = { sha256 = "d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", upload-time = 2026-03-19T14:22:23Z, size = 67548, hashes = { sha256 = "c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309" } }] + +[[packages]] +name = "business-rules-enhanced" +version = "1.4.8" +sdist = { url = "https://files.pythonhosted.org/packages/ad/d8/c77f91155c19822ca31f7bd273234485c46263631721a6dae9717543514a/business_rules_enhanced-1.4.8.tar.gz", upload-time = 2025-07-17T20:33:49Z, size = 14119, hashes = { sha256 = "9a5d37ad34efea59f725f33e6c4a983d5f90a7d845864223ce4a50b7c8c36254" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/6d/ac/faa00bef5f6f2e4c0b9e6a0cb821e30f3b1854184070313975ee38ed6999/business_rules_enhanced-1.4.8-py3-none-any.whl", upload-time = 2025-07-17T20:33:48Z, size = 12547, hashes = { sha256 = "b02c8cf919b40dcb6b8da22d5f4f499da635a96546ae01dac55d663325aa90f8" } }] + +[[packages]] +name = "cachetools" +version = "7.1.4" +sdist = { url = "https://files.pythonhosted.org/packages/f4/8b/0d3945a13955303b81272f759a0331e54c5c793da455e6f5706b89d2639c/cachetools-7.1.4.tar.gz", upload-time = 2026-05-21T22:40:43Z, size = 40085, hashes = { sha256 = "437f55a4e0c1b01a4f3077cc470e6991d47430970e36fbcb77e2be0df4fc1cd6" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/8c/7b/1fc1c09cc0756cf25861a3be10565915953876da48bb228fb9a672b20a42/cachetools-7.1.4-py3-none-any.whl", upload-time = 2026-05-21T22:40:41Z, size = 16761, hashes = { sha256 = "323dc4127934744db5b54eb4924482d7edafbf9554e820d1531c2e08c0e4ef54" } }] + +[[packages]] +name = "cdisc-library-client" +version = "0.1.6" +sdist = { url = "https://files.pythonhosted.org/packages/0c/17/d426b962cbe1d955922db868fea873b03109b46f80585e06660dd6a07d05/cdisc_library_client-0.1.6.tar.gz", upload-time = 2024-12-09T19:57:05Z, size = 4133, hashes = { sha256 = "d3e112d68f406a3d02d9e53c2981fd7cbceec4976ec41d0c5634c24ddf2558d4" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/1f/d3/1e1dfccb4c3fcf4ccbfcd566b9b71c060fba4ba06d33ea9742aa1e2440fb/cdisc_library_client-0.1.6-py3-none-any.whl", upload-time = 2024-12-09T19:57:04Z, size = 4847, hashes = { sha256 = "701fd27c29b3255ccadf3db717b2e68ec2d8edc9992782b7eeb130fe09175e09" } }] + +[[packages]] +name = "cerberus" +version = "1.3.8" +sdist = { url = "https://files.pythonhosted.org/packages/7a/cf/845d32e330e49e34f1a22dc44868750e75485d7c08c07d37795bcf0a780e/cerberus-1.3.8.tar.gz", upload-time = 2025-11-06T18:29:40Z, size = 29660, hashes = { sha256 = "579554887ffd189226774b87570f4a76db75cf0efcbaffcacd5e98b8ee877f61" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/a1/00/ff53f3a4d51e64e9137ce2408a43edf18fec96eebb61f87a6598578fa563/cerberus-1.3.8-py3-none-any.whl", upload-time = 2025-11-06T18:29:38Z, size = 30567, hashes = { sha256 = "46c029e3e2a4735408ed36bec14ef2cbf3e50d8ebe47fb34ee1e54b2da814df2" } }] + +[[packages]] +name = "certifi" +version = "2026.5.20" +sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", upload-time = 2026-05-20T11:46:50Z, size = 135422, hashes = { sha256 = "69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", upload-time = 2026-05-20T11:46:48Z, size = 134134, hashes = { sha256 = "3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897" } }] + +[[packages]] +name = "charset-normalizer" +version = "3.4.7" +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", upload-time = 2026-04-02T09:28:39Z, size = 144271, hashes = { sha256 = "ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5" } } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", upload-time = 2026-04-02T09:26:42Z, size = 159330, hashes = { sha256 = "5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6" } }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", upload-time = 2026-04-02T09:28:37Z, size = 61958, hashes = { sha256 = "3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d" } }, +] + +[[packages]] +name = "click" +version = "8.4.1" +sdist = { url = "https://files.pythonhosted.org/packages/9b/98/518d8e5081007684232226f475082b30087d0f585e8457db087298259f49/click-8.4.1.tar.gz", upload-time = 2026-05-22T04:08:37Z, size = 353007, hashes = { sha256 = "918b5633eddf6b41c32d4f454bf0de810065c74e3f7dbf8ee5452f8be88d3e96" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", upload-time = 2026-05-22T04:08:35Z, size = 116639, hashes = { sha256 = "482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2" } }] + +[[packages]] +name = "cloudpickle" +version = "3.1.2" +sdist = { url = "https://files.pythonhosted.org/packages/27/fb/576f067976d320f5f0114a8d9fa1215425441bb35627b1993e5afd8111e5/cloudpickle-3.1.2.tar.gz", upload-time = 2025-11-03T09:25:26Z, size = 22330, hashes = { sha256 = "7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl", upload-time = 2025-11-03T09:25:25Z, size = 22228, hashes = { sha256 = "9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a" } }] + +[[packages]] +name = "colorama" +version = "0.4.6" +marker = "sys_platform == 'win32'" +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", upload-time = 2022-10-25T02:36:22Z, size = 27697, hashes = { sha256 = "08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", upload-time = 2022-10-25T02:36:20Z, size = 25335, hashes = { sha256 = "4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6" } }] + +[[packages]] +name = "cramjam" +version = "2.11.0" +sdist = { url = "https://files.pythonhosted.org/packages/14/12/34bf6e840a79130dfd0da7badfb6f7810b8fcfd60e75b0539372667b41b6/cramjam-2.11.0.tar.gz", upload-time = 2025-07-27T21:25:07Z, size = 99100, hashes = { sha256 = "5c82500ed91605c2d9781380b378397012e25127e89d64f460fea6aeac4389b4" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/75/b1/d53002729cfd94c5844ddfaf1233c86d29f2dbfc1b764a6562c41c044199/cramjam-2.11.0-cp312-cp312-win_amd64.whl", upload-time = 2025-07-27T21:22:51Z, size = 1709287, hashes = { sha256 = "53fed080476d5f6ad7505883ec5d1ec28ba36c2273db3b3e92d7224fe5e463db" } }] + +[[packages]] +name = "dask" +version = "2026.3.0" +sdist = { url = "https://files.pythonhosted.org/packages/d7/2a/5d8cc1579590af86576dde890254440e478c7174b93a02095ecfc2e6ba38/dask-2026.3.0.tar.gz", upload-time = 2026-03-18T07:10:14Z, size = 11000710, hashes = { sha256 = "f7d96c8274e8a900d217c1ff6ea8d1bbf0b4c2c21e74a409644498d925eb8f85" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/4a/f3/00bb1e867fba351e2d784170955713bee200c43ea306c59f30bd7e748192/dask-2026.3.0-py3-none-any.whl", upload-time = 2026-03-18T07:10:12Z, size = 1485630, hashes = { sha256 = "be614b9242b0b38288060fb2d7696125946469c98a1c30e174883fd199e0428d" } }] + +[[packages]] +name = "elementpath" +version = "5.1.1" +sdist = { url = "https://files.pythonhosted.org/packages/94/95/eeb61a2a917bf506d1402748e71c62399d8dcdd8cdccd64c81962832c260/elementpath-5.1.1.tar.gz", upload-time = 2026-01-20T21:42:27Z, size = 375378, hashes = { sha256 = "c4d1bd6aed987258354d0ea004d965eb0a6818213326bd4fd9bde5dacdb20277" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/14/5a/4ddfd9aeecdc75a78b5d85d882abc2b822115caae2c00a4d0eb23cc101fc/elementpath-5.1.1-py3-none-any.whl", upload-time = 2026-01-20T21:42:24Z, size = 259962, hashes = { sha256 = "57637359065e60654422d8474c1749b09bb21348012b7197f868027e3c09c9b9" } }] + +[[packages]] +name = "et-xmlfile" +version = "2.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", upload-time = 2024-10-25T17:25:40Z, size = 17234, hashes = { sha256 = "dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", upload-time = 2024-10-25T17:25:39Z, size = 18059, hashes = { sha256 = "7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa" } }] + +[[packages]] +name = "fastparquet" +version = "2026.5.0" +sdist = { url = "https://files.pythonhosted.org/packages/1e/82/2de205357ce01bd86b9955910b7bf2bbcc29f7aa5cfbc1f0fadc299fc2b3/fastparquet-2026.5.0.tar.gz", upload-time = 2026-05-15T13:16:46Z, size = 498405, hashes = { sha256 = "12a813d1c91b9d316a8d43860074daf4566849f776f9cd549742aa71d907e4f6" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/08/fe/ba47bfa67868c42f3203e6738b90b80e25f3ecdf1f85e253b27ef2135cf2/fastparquet-2026.5.0-cp312-cp312-win_amd64.whl", upload-time = 2026-05-15T13:19:39Z, size = 695697, hashes = { sha256 = "76f5e7df0fbeb50c694023bf0d77afeb0a33982d30e827d473abd7caf5462a9d" } }] + +[[packages]] +name = "fsspec" +version = "2026.4.0" +sdist = { url = "https://files.pythonhosted.org/packages/d5/8d/1c51c094345df128ca4a990d633fe1a0ff28726c9e6b3c41ba65087bba1d/fsspec-2026.4.0.tar.gz", upload-time = 2026-04-29T20:42:38Z, size = 312760, hashes = { sha256 = "301d8ac70ae90ef3ad05dcf94d6c3754a097f9b5fe4667d2787aa359ec7df7e4" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/d5/0c/043d5e551459da400957a1395e0febbf771446ff34291afcbe3d8be2a279/fsspec-2026.4.0-py3-none-any.whl", upload-time = 2026-04-29T20:42:36Z, size = 203402, hashes = { sha256 = "11ef7bb35dab8a394fde6e608221d5cf3e8499401c249bebaeaad760a1a8dec2" } }] + +[[packages]] +name = "idna" +version = "3.18" +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", upload-time = 2026-06-02T14:34:07Z, size = 196711, hashes = { sha256 = "ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", upload-time = 2026-06-02T14:34:06Z, size = 65455, hashes = { sha256 = "7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2" } }] + +[[packages]] +name = "importlib-metadata" +version = "9.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz", upload-time = 2026-03-20T06:42:56Z, size = 56405, hashes = { sha256 = "a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl", upload-time = 2026-03-20T06:42:55Z, size = 27789, hashes = { sha256 = "2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7" } }] + +[[packages]] +name = "jsonata-python" +version = "0.6.2" +sdist = { url = "https://files.pythonhosted.org/packages/f4/cc/16f20b1e9466a9904601df339a6b2b31d82eeba6ae97610076ffc9fec9a2/jsonata_python-0.6.2.tar.gz", upload-time = 2026-03-21T07:02:20Z, size = 363452, hashes = { sha256 = "6d553563f0d2cbfd64842d6b35fcec18615acbcf0859061be04bacce3a83b418" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/b6/fb/8ba2f1354718839087cb83b138d710026a05a05e3780c9afa8e43d0a9b86/jsonata_python-0.6.2-py3-none-any.whl", upload-time = 2026-03-21T07:02:19Z, size = 83798, hashes = { sha256 = "86c61632f23587d945cf1693fe966f023593c7ebfe2615814db8756c67e7c776" } }] + +[[packages]] +name = "jsonpath-ng" +version = "1.8.0" +sdist = { url = "https://files.pythonhosted.org/packages/32/58/250751940d75c8019659e15482d548a4aa3b6ce122c515102a4bfdac50e3/jsonpath_ng-1.8.0.tar.gz", upload-time = 2026-02-24T14:42:06Z, size = 74513, hashes = { sha256 = "54252968134b5e549ea5b872f1df1168bd7defe1a52fed5a358c194e1943ddc3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/03/99/33c7d78a3fb70d545fd5411ac67a651c81602cc09c9cf0df383733f068c5/jsonpath_ng-1.8.0-py3-none-any.whl", upload-time = 2026-02-28T00:53:19Z, size = 67844, hashes = { sha256 = "b8dde192f8af58d646fc031fac9c99fe4d00326afc4148f1f043c601a8cfe138" } }] + +[[packages]] +name = "jsonschema" +version = "4.26.0" +sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", upload-time = 2026-01-07T13:41:07Z, size = 366583, hashes = { sha256 = "0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/69/90/f63fb5873511e014207a475e2bb4e8b2e570d655b00ac19a9a0ca0a385ee/jsonschema-4.26.0-py3-none-any.whl", upload-time = 2026-01-07T13:41:05Z, size = 90630, hashes = { sha256 = "d489f15263b8d200f8387e64b4c3a75f06629559fb73deb8fdfb525f2dab50ce" } }] + +[[packages]] +name = "jsonschema-specifications" +version = "2025.9.1" +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", upload-time = 2025-09-08T01:34:59Z, size = 32855, hashes = { sha256 = "b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", upload-time = 2025-09-08T01:34:57Z, size = 18437, hashes = { sha256 = "98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe" } }] + +[[packages]] +name = "locket" +version = "1.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", upload-time = 2022-04-20T22:04:44Z, size = 4350, hashes = { sha256 = "5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", upload-time = 2022-04-20T22:04:42Z, size = 4398, hashes = { sha256 = "b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3" } }] + +[[packages]] +name = "lxml" +version = "6.1.1" +sdist = { url = "https://files.pythonhosted.org/packages/05/3b/aab6728cae887456f409b4d75e8a01856e4f04bd510de38052a47768b680/lxml-6.1.1.tar.gz", upload-time = 2026-05-18T19:19:06Z, size = 4197430, hashes = { sha256 = "ba96ae44888e0185281e937633a743ea90d5a196c6000f82565ebb0580012d40" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/1b/89/45198e9624762af2dfd2cb8782598477ceb29f6e59caab560388ae1f4ec1/lxml-6.1.1-cp312-cp312-win_amd64.whl", upload-time = 2026-05-18T19:17:56Z, size = 3997255, hashes = { sha256 = "26e6eda8d38c1fcab1090dd196ee87cbd13788e531937610e2589085de074e77" } }] + +[[packages]] +name = "narwhals" +version = "2.22.1" +sdist = { url = "https://files.pythonhosted.org/packages/62/3c/c4ef2164a71c1a63d7f1ae411c4082c5fa872405106db60a4b7114989ad7/narwhals-2.22.1.tar.gz", upload-time = 2026-06-05T12:34:34Z, size = 647493, hashes = { sha256 = "d62920805a0a43b7ff8b54b0c0d3142d796f8a9301836ada37e573d6a33cbcd9" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl", upload-time = 2026-06-05T12:34:32Z, size = 454815, hashes = { sha256 = "60567d774edf77db53906f89d9fbd164e66e56d66d388e1e6990f17ac33cfb53" } }] + +[[packages]] +name = "numpy" +version = "2.4.6" +sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", upload-time = 2026-05-18T23:37:14Z, size = 20735807, hashes = { sha256 = "f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ab/ca/feab00bd44aa5fe1ad2c18f08b4d3bb92e26484b0b1d1443897809ed528c/numpy-2.4.6-cp312-cp312-win_amd64.whl", upload-time = 2026-05-18T23:34:23Z, size = 12321687, hashes = { sha256 = "d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751" } }] + +[[packages]] +name = "odmlib" +version = "0.1.4" +sdist = { url = "https://files.pythonhosted.org/packages/25/7b/60a82f027eaf462e3da3b7daa31f903cee93aaf1a0e26c4a747d5303fe6f/odmlib-0.1.4.tar.gz", upload-time = 2022-03-20T17:21:22Z, size = 257481, hashes = { sha256 = "3b4c31ccf4b68a2c5f1cbe0265a44fe40556f9b3e650efe5846662ae31b96a51" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/f0/ce/15da461c1b996144b459882a6affd097a21737b19077a3a5f064b40bd4e1/odmlib-0.1.4-py3-none-any.whl", upload-time = 2022-03-20T17:21:20Z, size = 311107, hashes = { sha256 = "712e9204013a80923607f453ec5266fd05a0b7cae2a3b96ba35d2e1bcb57624d" } }] + +[[packages]] +name = "openpyxl" +version = "3.1.5" +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", upload-time = 2024-06-28T14:03:44Z, size = 186464, hashes = { sha256 = "cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", upload-time = 2024-06-28T14:03:41Z, size = 250910, hashes = { sha256 = "5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2" } }] + +[[packages]] +name = "packaging" +version = "26.2" +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", upload-time = 2026-04-24T20:15:23Z, size = 228134, hashes = { sha256 = "ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", upload-time = 2026-04-24T20:15:22Z, size = 100195, hashes = { sha256 = "5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e" } }] + +[[packages]] +name = "pandas" +version = "2.3.3" +sdist = { url = "https://files.pythonhosted.org/packages/33/01/d40b85317f86cf08d853a4f495195c73815fdf205eef3993821720274518/pandas-2.3.3.tar.gz", upload-time = 2025-09-29T23:34:51Z, size = 4495223, hashes = { sha256 = "e05e1af93b977f7eafa636d043f9f94c7ee3ac81af99c13508215942e64c993b" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/86/41/585a168330ff063014880a80d744219dbf1dd7a1c706e75ab3425a987384/pandas-2.3.3-cp312-cp312-win_amd64.whl", upload-time = 2025-09-29T23:20:54Z, size = 10992722, hashes = { sha256 = "a16dcec078a01eeef8ee61bf64074b4e524a2a3f4b3be9326420cabe59c4778b" } }] + +[[packages]] +name = "partd" +version = "1.4.2" +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", upload-time = 2024-05-06T19:51:41Z, size = 21029, hashes = { sha256 = "d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", upload-time = 2024-05-06T19:51:39Z, size = 18905, hashes = { sha256 = "978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f" } }] + +[[packages]] +name = "pathvalidate" +version = "3.3.1" +sdist = { url = "https://files.pythonhosted.org/packages/fa/2a/52a8da6fe965dea6192eb716b357558e103aea0a1e9a8352ad575a8406ca/pathvalidate-3.3.1.tar.gz", upload-time = 2025-06-15T09:07:20Z, size = 63262, hashes = { sha256 = "b18c07212bfead624345bb8e1d6141cdcf15a39736994ea0b94035ad2b1ba177" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl", upload-time = 2025-06-15T09:07:19Z, size = 24305, hashes = { sha256 = "5263baab691f8e1af96092fa5137ee17df5bdfbd6cff1fcac4d6ef4bc2e1735f" } }] + +[[packages]] +name = "pefile" +version = "2024.8.26" +marker = "sys_platform == 'win32'" +sdist = { url = "https://files.pythonhosted.org/packages/03/4f/2750f7f6f025a1507cd3b7218691671eecfd0bbebebe8b39aa0fe1d360b8/pefile-2024.8.26.tar.gz", upload-time = 2024-08-26T20:58:38Z, size = 76008, hashes = { sha256 = "3ff6c5d8b43e8c37bb6e6dd5085658d658a7a0bdcd20b6a07b1fcfc1c4e9d632" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/54/16/12b82f791c7f50ddec566873d5bdd245baa1491bac11d15ffb98aecc8f8b/pefile-2024.8.26-py3-none-any.whl", upload-time = 2024-08-26T21:01:02Z, size = 74766, hashes = { sha256 = "76f8b485dcd3b1bb8166f1128d395fa3d87af26360c2358fb75b80019b957c6f" } }] + +[[packages]] +name = "psutil" +version = "7.2.2" +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", upload-time = 2026-01-28T18:14:54Z, size = 493740, hashes = { sha256 = "0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", upload-time = 2026-01-28T18:15:33Z, size = 137737, hashes = { sha256 = "eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988" } }] + +[[packages]] +name = "pyarrow" +version = "24.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/91/13/13e1069b351bdc3881266e11147ffccf687505dbb0ea74036237f5d454a5/pyarrow-24.0.0.tar.gz", upload-time = 2026-04-21T10:51:25Z, size = 1180261, hashes = { sha256 = "85fe721a14dd823aca09127acbb06c3ca723efbd436c004f16bca601b04dcc83" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/66/1c/e3e72c8014ad2743ca64a701652c733cc5cbcee15c0463a32a8c55518d9e/pyarrow-24.0.0-cp312-cp312-win_amd64.whl", upload-time = 2026-04-21T10:48:01Z, size = 27355660, hashes = { sha256 = "295f0a7f2e242dabd513737cf076007dc5b2d59237e3eca37b05c0c6446f3826" } }] + +[[packages]] +name = "pyinstaller" +version = "6.20.0" +sdist = { url = "https://files.pythonhosted.org/packages/46/60/d03d52e6690d4e9caf333dcd14550cde634ce6c118b3bc8fa3112c3186fd/pyinstaller-6.20.0.tar.gz", upload-time = 2026-04-22T20:59:36Z, size = 4048728, hashes = { sha256 = "95c5c7e03d5d61e9dfb8ef259c699cf492bb1041beb6dbe83696608cec07347a" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/76/8c/300f57578882cce259bfb5ae56fda3b69caa3fe9df40a176c719920ea6e2/pyinstaller-6.20.0-py3-none-win_amd64.whl", upload-time = 2026-04-22T20:59:14Z, size = 1391851, hashes = { sha256 = "d588844e890ee80c4365867f98146636e1849bbca8e4284bbf0c809aff0f161a" } }] + +[[packages]] +name = "pyinstaller-hooks-contrib" +version = "2026.5" +sdist = { url = "https://files.pythonhosted.org/packages/1a/67/f4452d68793fb15beba4f19ef39a38a8822f0da7452b503c400d5a21f5c1/pyinstaller_hooks_contrib-2026.5.tar.gz", upload-time = 2026-05-04T22:36:55Z, size = 173689, hashes = { sha256 = "f066dfca8f7c45ff6336c9cf9fe25b4e48bfeb322a1aa24faaedfb8a8d1b0b08" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/f6/5c/fd465d11da4d12b50d7eb5d2ee2ceb780d8d049dbb489f3828d131e387af/pyinstaller_hooks_contrib-2026.5-py3-none-any.whl", upload-time = 2026-05-04T22:36:53Z, size = 457314, hashes = { sha256 = "ea1535783fbdac4626351709e83f3ea80b681d3a4745763ebb407b5e27342eb9" } }] + +[[packages]] +name = "pympler" +version = "1.1" +sdist = { url = "https://files.pythonhosted.org/packages/dd/37/c384631908029676d8e7213dd956bb686af303a80db7afbc9be36bc49495/pympler-1.1.tar.gz", upload-time = 2024-06-28T19:56:06Z, size = 179954, hashes = { sha256 = "1eaa867cb8992c218430f1708fdaccda53df064144d1c5656b1e6f1ee6000424" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/79/4f/a6a2e2b202d7fd97eadfe90979845b8706676b41cbd3b42ba75adf329d1f/Pympler-1.1-py3-none-any.whl", upload-time = 2024-06-28T19:56:05Z, size = 165766, hashes = { sha256 = "5b223d6027d0619584116a0cbc28e8d2e378f7a79c1e5e024f9ff3b673c58506" } }] + +[[packages]] +name = "pyreadstat" +version = "1.3.5" +sdist = { url = "https://files.pythonhosted.org/packages/4a/5d/0dce5f7c8570afd3a2595f95c5fa8f814adfcdcd5b248470e3b6f132eb33/pyreadstat-1.3.5.tar.gz", upload-time = 2026-05-19T12:22:09Z, size = 514802, hashes = { sha256 = "c7332a764b221193522cbf942ed07898aac48180fe1a4435a5dc9a2fdd81c1e1" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/e2/1c/21ce077750fdeadad800289f0a8c648b4a8165b6da6908b287994ce1e3d6/pyreadstat-1.3.5-cp312-cp312-win_amd64.whl", upload-time = 2026-05-19T12:21:47Z, size = 2024486, hashes = { sha256 = "a7a32414c93dcfac36b3d525c3d16f91b8f86bc4ed7cac13ad29ab05a9204e34" } }] + +[[packages]] +name = "python-dateutil" +version = "2.9.0.post0" +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", upload-time = 2024-03-01T18:36:20Z, size = 342432, hashes = { sha256 = "37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", upload-time = 2024-03-01T18:36:18Z, size = 229892, hashes = { sha256 = "a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427" } }] + +[[packages]] +name = "python-dotenv" +version = "1.2.2" +sdist = { url = "https://files.pythonhosted.org/packages/82/ed/0301aeeac3e5353ef3d94b6ec08bbcabd04a72018415dcb29e588514bba8/python_dotenv-1.2.2.tar.gz", upload-time = 2026-03-01T16:00:26Z, size = 50135, hashes = { sha256 = "2c371a91fbd7ba082c2c1dc1f8bf89ca22564a087c2c287cd9b662adde799cf3" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/0b/d7/1959b9648791274998a9c3526f6d0ec8fd2233e4d4acce81bbae76b44b2a/python_dotenv-1.2.2-py3-none-any.whl", upload-time = 2026-03-01T16:00:25Z, size = 22101, hashes = { sha256 = "1d8214789a24de455a8b8bd8ae6fe3c6b69a5e3d64aa8a8e5d68e694bbcb285a" } }] + +[[packages]] +name = "pytz" +version = "2026.2" +sdist = { url = "https://files.pythonhosted.org/packages/ff/46/dd499ec9038423421951e4fad73051febaa13d2df82b4064f87af8b8c0c3/pytz-2026.2.tar.gz", upload-time = 2026-05-04T01:35:29Z, size = 320861, hashes = { sha256 = "0e60b47b29f21574376f218fe21abc009894a2321ea16c6754f3cad6eb7cdd6a" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ec/dd/96da98f892250475bdf2328112d7468abdd4acc7b902b6af23f4ed958ea0/pytz-2026.2-py2.py3-none-any.whl", upload-time = 2026-05-04T01:35:27Z, size = 510141, hashes = { sha256 = "04156e608bee23d3792fd45c94ae47fae1036688e75032eea2e3bf0323d1f126" } }] + +[[packages]] +name = "pywin32" +version = "312" +marker = "sys_platform == 'win32'" +wheels = [{ url = "https://files.pythonhosted.org/packages/03/d9/77040d3b43df3f3be32ea289433d660d2727f5ba327bc73be835127d9d60/pywin32-312-cp312-cp312-win_amd64.whl", upload-time = 2026-06-04T07:49:31Z, size = 6914841, hashes = { sha256 = "b457f6d628a47e8a7346ce22acb7e1a46a4a78b52e1d17e1af56871bd19a93bc" } }] + +[[packages]] +name = "pywin32-ctypes" +version = "0.2.3" +marker = "sys_platform == 'win32'" +sdist = { url = "https://files.pythonhosted.org/packages/85/9f/01a1a99704853cb63f253eea009390c88e7131c67e66a0a02099a8c917cb/pywin32-ctypes-0.2.3.tar.gz", upload-time = 2024-08-14T10:15:34Z, size = 29471, hashes = { sha256 = "d162dc04946d704503b2edc4d55f3dba5c1d539ead017afa00142c38b9885755" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/de/3d/8161f7711c017e01ac9f008dfddd9410dff3674334c233bde66e7ba65bbf/pywin32_ctypes-0.2.3-py3-none-any.whl", upload-time = 2024-08-14T10:15:33Z, size = 30756, hashes = { sha256 = "8a1513379d709975552d202d942d9837758905c8d01eb82b8bcc30918929e7b8" } }] + +[[packages]] +name = "pyyaml" +version = "6.0.3" +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", upload-time = 2025-09-25T21:33:16Z, size = 130960, hashes = { sha256 = "d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", upload-time = 2025-09-25T21:32:21Z, size = 154003, hashes = { sha256 = "5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b" } }] + +[[packages]] +name = "redis" +version = "8.0.0" +sdist = { url = "https://files.pythonhosted.org/packages/53/ae/ed461cca5780b5fc8b9fe8ca0ed98d89508645fb9d880c24cc42c087678f/redis-8.0.0.tar.gz", upload-time = 2026-05-28T12:45:13Z, size = 5101591, hashes = { sha256 = "a00c5355432051ac14e593b8b197fc76c887ee12d55a0984f69328a1115fdc49" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/27/e3/b519734372d305bd547534a9f32e4ce9f98552af753dce72cf3483a0ff0b/redis-8.0.0-py3-none-any.whl", upload-time = 2026-05-28T12:45:11Z, size = 499870, hashes = { sha256 = "c938c18338585009f0bc310f4c7e4e4b4d37639356c4ac072cedf3af570c8dc7" } }] + +[[packages]] +name = "referencing" +version = "0.37.0" +sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", upload-time = 2025-10-13T15:30:48Z, size = 78036, hashes = { sha256 = "44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl", upload-time = 2025-10-13T15:30:47Z, size = 26766, hashes = { sha256 = "381329a9f99628c9069361716891d34ad94af76e461dcb0335825aecc7692231" } }] + +[[packages]] +name = "requests" +version = "2.34.2" +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", upload-time = 2026-05-14T19:25:27Z, size = 142856, hashes = { sha256 = "f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", upload-time = 2026-05-14T19:25:26Z, size = 73075, hashes = { sha256 = "2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0" } }] + +[[packages]] +name = "rpds-py" +version = "2026.5.1" +sdist = { url = "https://files.pythonhosted.org/packages/2e/43/25a8dcd3feedd735039a8f0b5b7e3b118232b5eae288c4fd9ab200d41094/rpds_py-2026.5.1.tar.gz", upload-time = 2026-05-28T12:02:13Z, size = 64459, hashes = { sha256 = "07b24fea40541e28570e5b795a4a38fbdcd12550c06bd0748005ecc8116ca256" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/c5/93/e4116f2de7f56bc7406a76033dc501811ddeb22b7f056b92d632871ebb0c/rpds_py-2026.5.1-cp312-cp312-win_amd64.whl", upload-time = 2026-05-28T11:59:31Z, size = 229045, hashes = { sha256 = "0a7d1eec967df0e9b22614a5e177622e0c89611d03727fa0cb48e45028907870" } }] + +[[packages]] +name = "setuptools" +version = "82.0.1" +sdist = { url = "https://files.pythonhosted.org/packages/4f/db/cfac1baf10650ab4d1c111714410d2fbb77ac5a616db26775db562c8fab2/setuptools-82.0.1.tar.gz", upload-time = 2026-03-09T12:47:17Z, size = 1152316, hashes = { sha256 = "7d872682c5d01cfde07da7bccc7b65469d3dca203318515ada1de5eda35efbf9" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl", upload-time = 2026-03-09T12:47:15Z, size = 1006223, hashes = { sha256 = "a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb" } }] + +[[packages]] +name = "six" +version = "1.17.0" +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", upload-time = 2024-12-04T17:35:28Z, size = 34031, hashes = { sha256 = "ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", upload-time = 2024-12-04T17:35:26Z, size = 11050, hashes = { sha256 = "4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274" } }] + +[[packages]] +name = "titlecase" +version = "2.4.1" +sdist = { url = "https://files.pythonhosted.org/packages/63/17/04d2d3e30e2bc5a3eefa1060b08e3fb628510440f938eaecabbe08976a26/titlecase-2.4.1.tar.gz", upload-time = 2023-09-23T05:03:46Z, size = 14434, hashes = { sha256 = "7d83a277ccbbda11a2944e78a63e5ccaf3d32f828c594312e4862f9a07f635f5" } } + +[[packages]] +name = "toolz" +version = "1.1.0" +sdist = { url = "https://files.pythonhosted.org/packages/11/d6/114b492226588d6ff54579d95847662fc69196bdeec318eb45393b24c192/toolz-1.1.0.tar.gz", upload-time = 2025-10-17T04:03:21Z, size = 52613, hashes = { sha256 = "27a5c770d068c110d9ed9323f24f1543e83b2f300a687b7891c1a6d56b697b5b" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/fb/12/5911ae3eeec47800503a238d971e51722ccea5feb8569b735184d5fcdbc0/toolz-1.1.0-py3-none-any.whl", upload-time = 2025-10-17T04:03:20Z, size = 58093, hashes = { sha256 = "15ccc861ac51c53696de0a5d6d4607f99c210739caf987b5d2054f3efed429d8" } }] + +[[packages]] +name = "typing-extensions" +version = "4.15.0" +marker = "python_full_version < '3.13'" +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", upload-time = 2025-08-25T13:49:26Z, size = 109391, hashes = { sha256 = "0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", upload-time = 2025-08-25T13:49:24Z, size = 44614, hashes = { sha256 = "f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" } }] + +[[packages]] +name = "tzdata" +version = "2026.2" +sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", upload-time = 2026-04-24T15:22:08Z, size = 198254, hashes = { sha256 = "9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", upload-time = 2026-04-24T15:22:05Z, size = 349321, hashes = { sha256 = "bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7" } }] + +[[packages]] +name = "urllib3" +version = "2.7.0" +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", upload-time = 2026-05-07T16:13:18Z, size = 433602, hashes = { sha256 = "231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", upload-time = 2026-05-07T16:13:17Z, size = 131087, hashes = { sha256 = "9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897" } }] + +[[packages]] +name = "validators" +version = "0.35.0" +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", upload-time = 2025-05-01T05:42:06Z, size = 73399, hashes = { sha256 = "992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", upload-time = 2025-05-01T05:42:04Z, size = 44712, hashes = { sha256 = "e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd" } }] + +[[packages]] +name = "xmlschema" +version = "4.3.1" +sdist = { url = "https://files.pythonhosted.org/packages/da/c4/ef78a231be72349fd6677b989ff80e276ef62e28054c36c4fea3b4db9611/xmlschema-4.3.1.tar.gz", upload-time = 2026-01-17T23:01:04Z, size = 646611, hashes = { sha256 = "853effdfaf127849d4724368c17bd669e7f1486e15a0376404ad7954ec31a338" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/dd/7b/3471405875d0b5fac642e9a879b2c7db63642370799b2e9eea8297ffbad0/xmlschema-4.3.1-py3-none-any.whl", upload-time = 2026-01-17T23:01:00Z, size = 469891, hashes = { sha256 = "9560314d70ae87be0aecb8712cfebed636f867707ccf9758d4b0645d607f64b9" } }] + +[[packages]] +name = "zipp" +version = "4.1.0" +sdist = { url = "https://files.pythonhosted.org/packages/b9/d8/eab98a517c14134c0b2eb4e2387bc5f457334293ec5d2dd3857ec2966802/zipp-4.1.0.tar.gz", upload-time = 2026-05-18T20:08:57Z, size = 26214, hashes = { sha256 = "4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602" } } +wheels = [{ url = "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl", upload-time = 2026-05-18T20:08:57Z, size = 10238, hashes = { sha256 = "25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f" } }] diff --git a/pyproject.toml b/pyproject.toml index bb4d69066..7418ff68c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,12 +4,49 @@ build-backend = "setuptools.build_meta" [project] name = "cdisc-rules-engine" -dynamic = ["version", "dependencies"] +dynamic = ["version"] description = "Open source offering of the cdisc rules engine" readme = "docs/PYPI.md" requires-python = ">=3.12, <3.13" license = { text = "MIT" } authors = [{ name = "cdisc-org", email = "info@cdisc.org" }] +dependencies = [ + "business_rules_enhanced >=1.4.8", + "cachetools >=6.1.0", + "cdisc-library-client >=0.1.6", + "click >=8.1.7", + "dask[dataframe,array] >=2024.6.0", + "fastparquet >=2024.2.0", + "importlib-metadata >=8.5.0", + "jsonata-python >=0.6.0", + "jsonpath-ng >=1.6.1", + "jsonschema >=4.18.5", + "lxml >=5.2.1", + "numpy >=1.26.0", + "odmlib >=0.1.4", + "openpyxl >=3.1.5", + "pandas >=2.1.4, <3.0.0", + "psutil >=6.1.1", + "pyinstaller >=6.11.0", + "pympler >=1.1", + "pyreadstat >=1.2.7", + "python-dotenv >=1.0.0", + "pyyaml >=6.0.2", + "redis >=4.5.0", + "requests >=2.32.3", + "setuptools >=75.6.0", + "titlecase >=2.4.1", +] + +[dependency-groups] +dev = [ + "black >=24.10.0", + "flake8 >=6.1.0", + "pre-commit >=2.20.0", + "pytest >=7.4.0, <8.0.0", + "pytest-asyncio >=0.21.0", + "pytest-cov >=6.0.0", +] [project.urls] "Homepage" = "https://github.com/cdisc-org/cdisc-rules-engine" @@ -26,5 +63,4 @@ include-package-data = true py-modules = ["version"] [tool.setuptools.dynamic] -version = { attr = "version.__version__" } -dependencies = {file = ["requirements.txt"]} \ No newline at end of file +version = { attr = "version.__version__" } \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index ac709f651..000000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,7 +0,0 @@ --r requirements.txt -black==24.10.0 -flake8==6.1.0 -pre-commit==2.20.0 -pytest==7.4.0 -pytest-asyncio==0.21.0 -pytest-cov==6.0.0 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 4481051f6..000000000 --- a/requirements.txt +++ /dev/null @@ -1,26 +0,0 @@ -business_rules_enhanced==1.4.8 -cachetools==6.1.0 -cdisc-library-client==0.1.6 -click==8.1.7 -dask[dataframe]==2024.6.0 -dask[array]==2024.6.0 -fastparquet==2024.2.0 -importlib-metadata==8.5.0 -jsonata-python==0.6.0 -jsonpath-ng==1.6.1 -jsonschema==4.18.5 -lxml==5.2.1 -numpy~=1.26.0 -odmlib==0.1.4 -openpyxl==3.1.5 -pandas==2.1.4 -psutil==6.1.1 -pyinstaller==6.11.0 -Pympler==1.1 -pyreadstat==1.2.7 -python-dotenv==1.0.0 -pyyaml==6.0.2 -redis==4.5.0 -requests~=2.32.3 -setuptools~=75.6.0 -titlecase==2.4.1 \ No newline at end of file diff --git a/tests/unit/test_dataset_builders/test_dataset_metadata_define_dataset_builder.py b/tests/unit/test_dataset_builders/test_dataset_metadata_define_dataset_builder.py index aff6c25e8..dad459b54 100644 --- a/tests/unit/test_dataset_builders/test_dataset_metadata_define_dataset_builder.py +++ b/tests/unit/test_dataset_builders/test_dataset_metadata_define_dataset_builder.py @@ -11,7 +11,6 @@ ) from cdisc_rules_engine.models.dataset.pandas_dataset import PandasDataset - define_metadata = [ { "define_dataset_name": "TS", @@ -143,15 +142,24 @@ def test_dataset_metadata_define_dataset_builder(dataset_path): result = builder.build() - expected_df = pd.DataFrame( - [ - expected_results["ts.xpt"], - expected_results["dm.xpt"], - expected_results["ae.xpt"], - ] - ).astype(object) + expected_df = ( + pd.DataFrame( + [ + expected_results["ts.xpt"], + expected_results["dm.xpt"], + expected_results["ae.xpt"], + ] + ) + .astype(object) + .sort_values("dataset_location") + .reset_index(drop=True) + ) - result_df = result.data[expected_df.columns].reset_index(drop=True) + result_df = ( + result.data[expected_df.columns] + .sort_values("dataset_location") + .reset_index(drop=True) + ) # Check that columns are the same assert list(result_df.columns) == list(expected_df.columns), "Columns do not match"