diff --git a/Makefile b/Makefile
index dcc90975..8b10c17d 100644
--- a/Makefile
+++ b/Makefile
@@ -12,6 +12,7 @@ WGET = /usr/bin/env wget --timestamping --no-verbose
.DEFAULT_GOAL := all
SHELL := bash
+RUN = poetry run
.PHONY: all
all: install format test clean
@@ -29,12 +30,12 @@ install-full:
.PHONY: test
test: install
- poetry run python -m pytest tests
+ $(RUN) python -m pytest tests
.PHONY: docs
docs: install-full
- poetry run typer src/monarch_ingest/main.py utils docs --name ingest --output docs/CLI.md
+ $(RUN) typer src/monarch_ingest/main.py utils docs --name ingest --output docs/CLI.md
.PHONY: clean
@@ -47,18 +48,11 @@ clean:
.PHONY: lint
lint: install-full
- poetry run flake8 --exit-zero --max-line-length 120 src/monarch_ingest/ tests/
- poetry run black --check --diff monarch_ingest tests
- poetry run isort --check-only --diff monarch_ingest tests
+ $(RUN) ruff check --diff --exit-zero src/ tests/
+ $(RUN) black --check --diff -l 120 src/ tests/
.PHONY: format
format: install-full
- poetry run autoflake \
- --recursive \
- --remove-all-unused-imports \
- --remove-unused-variables \
- --ignore-init-module-imports \
- --in-place monarch_ingest tests
- poetry run isort monarch_ingest tests
- poetry run black monarch_ingest tests
+ $(RUN) ruff check --fix --exit-zero src/ tests/
+ $(RUN) black -l 120 src/ tests/
diff --git a/docs/Create-an-Ingest/4. Implement.md b/docs/Create-an-Ingest/4. Implement.md
index d8ebe23e..1cb7a4b3 100644
--- a/docs/Create-an-Ingest/4. Implement.md
+++ b/docs/Create-an-Ingest/4. Implement.md
@@ -7,7 +7,7 @@ Most Koza scripts can run in flat mode, which means that the transform code itse
Start with the imports, and make sure to set the source_name, which will be used for communicating with the reader and writer.
```python
-from koza.cli_runner import koza_app
+from koza.cli_utils import koza_app
from biolink.pydanticmodel_v2 import Gene
# The source name is used for reading and writing
diff --git a/docs/Create-an-Ingest/5. Test.md b/docs/Create-an-Ingest/5. Test.md
index fc13f3e5..aef2be90 100644
--- a/docs/Create-an-Ingest/5. Test.md
+++ b/docs/Create-an-Ingest/5. Test.md
@@ -8,7 +8,7 @@ First, set up your basic fixtures, taking care to set the correct source name an
```python
import pytest
-from koza.cli_runner import get_translation_table
+from koza.cli_utils import get_translation_table
@pytest.fixture
def tt():
diff --git a/ingest_template/example_test.py b/ingest_template/example_test.py
index 0f7f109d..d11ab6a5 100644
--- a/ingest_template/example_test.py
+++ b/ingest_template/example_test.py
@@ -1,5 +1,5 @@
import pytest
-from koza.cli_runner import get_translation_table
+from koza.cli_utils import get_translation_table
@pytest.fixture
diff --git a/ingest_template/source-file-template-csv.py b/ingest_template/source-file-template-csv.py
index 9e6005da..8fd0127d 100644
--- a/ingest_template/source-file-template-csv.py
+++ b/ingest_template/source-file-template-csv.py
@@ -1,7 +1,7 @@
from typing import List
from biolink.pydanticmodel_v2 import Gene
-from koza.cli_runner import koza_app
+from koza.cli_utils import koza_app
# You've got 'NCBI_Gene:' and you want 'NCBIGene:'? clean it up.
curie_cleaner = koza_app.curie_cleaner
diff --git a/ingest_template/source-file-template-json.py b/ingest_template/source-file-template-json.py
index 7a16e05b..f95e170b 100644
--- a/ingest_template/source-file-template-json.py
+++ b/ingest_template/source-file-template-json.py
@@ -7,7 +7,7 @@
GeneToPhenotypicFeatureAssociation,
PhenotypicFeature,
)
-from koza.cli_runner import koza_app
+from koza.cli_utils import koza_app
# include logging if necessary
from loguru import logger
diff --git a/poetry.lock b/poetry.lock
index 2a0a3446..2d6e80f2 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
[[package]]
name = "alabaster"
@@ -72,13 +72,13 @@ tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "p
[[package]]
name = "babel"
-version = "2.14.0"
+version = "2.15.0"
description = "Internationalization utilities"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"},
- {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"},
+ {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"},
+ {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"},
]
[package.extras]
@@ -107,60 +107,53 @@ lxml = ["lxml"]
[[package]]
name = "biolink-model"
-version = "0.0.0"
+version = "4.2.1"
description = "The Biolink Model is a high-level data model designed to standardize types and relationships in biological knowledgebases."
optional = false
-python-versions = "^3.9"
-files = []
-develop = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "biolink_model-4.2.1-py3-none-any.whl", hash = "sha256:dae399cb8a81e9360300abcb1d6bf38c29efc790e8a0732dacb7d501aee84ab0"},
+ {file = "biolink_model-4.2.1.tar.gz", hash = "sha256:9defa7af163a64b98fa9dd026c3ce10523ea302ec5c2e035c4067134106915e1"},
+]
[package.dependencies]
beautifulsoup4 = ">=4.0.0"
-curies = "^0.7.4"
-prefixmaps = "^0.2.0"
-pytest = "^7.3.1"
-pyyaml = "^6.0.1"
-stringcase = "^1.2.0"
-yamllint = "^1.35.1"
-
-[package.extras]
-docs = []
-
-[package.source]
-type = "git"
-url = "https://github.com/biolink/biolink-model"
-reference = "master"
-resolved_reference = "d44c32ffef2c9141fd19d62a4a25b9ee945a5b8e"
+curies = ">=0.7.4,<0.8.0"
+prefixmaps = ">=0.2.3,<0.3.0"
+pytest = ">=8.1.1,<9.0.0"
+pyyaml = ">=6.0.1,<7.0.0"
+stringcase = ">=1.2.0,<2.0.0"
+yamllint = ">=1.35.1,<2.0.0"
[[package]]
name = "black"
-version = "24.3.0"
+version = "24.4.2"
description = "The uncompromising code formatter."
optional = false
python-versions = ">=3.8"
files = [
- {file = "black-24.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7d5e026f8da0322b5662fa7a8e752b3fa2dac1c1cbc213c3d7ff9bdd0ab12395"},
- {file = "black-24.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f50ea1132e2189d8dff0115ab75b65590a3e97de1e143795adb4ce317934995"},
- {file = "black-24.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2af80566f43c85f5797365077fb64a393861a3730bd110971ab7a0c94e873e7"},
- {file = "black-24.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:4be5bb28e090456adfc1255e03967fb67ca846a03be7aadf6249096100ee32d0"},
- {file = "black-24.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4f1373a7808a8f135b774039f61d59e4be7eb56b2513d3d2f02a8b9365b8a8a9"},
- {file = "black-24.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aadf7a02d947936ee418777e0247ea114f78aff0d0959461057cae8a04f20597"},
- {file = "black-24.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c02e4ea2ae09d16314d30912a58ada9a5c4fdfedf9512d23326128ac08ac3d"},
- {file = "black-24.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:bf21b7b230718a5f08bd32d5e4f1db7fc8788345c8aea1d155fc17852b3410f5"},
- {file = "black-24.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:2818cf72dfd5d289e48f37ccfa08b460bf469e67fb7c4abb07edc2e9f16fb63f"},
- {file = "black-24.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4acf672def7eb1725f41f38bf6bf425c8237248bb0804faa3965c036f7672d11"},
- {file = "black-24.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7ed6668cbbfcd231fa0dc1b137d3e40c04c7f786e626b405c62bcd5db5857e4"},
- {file = "black-24.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:56f52cfbd3dabe2798d76dbdd299faa046a901041faf2cf33288bc4e6dae57b5"},
- {file = "black-24.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:79dcf34b33e38ed1b17434693763301d7ccbd1c5860674a8f871bd15139e7837"},
- {file = "black-24.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e19cb1c6365fd6dc38a6eae2dcb691d7d83935c10215aef8e6c38edee3f77abd"},
- {file = "black-24.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65b76c275e4c1c5ce6e9870911384bff5ca31ab63d19c76811cb1fb162678213"},
- {file = "black-24.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b5991d523eee14756f3c8d5df5231550ae8993e2286b8014e2fdea7156ed0959"},
- {file = "black-24.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c45f8dff244b3c431b36e3224b6be4a127c6aca780853574c00faf99258041eb"},
- {file = "black-24.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6905238a754ceb7788a73f02b45637d820b2f5478b20fec82ea865e4f5d4d9f7"},
- {file = "black-24.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7de8d330763c66663661a1ffd432274a2f92f07feeddd89ffd085b5744f85e7"},
- {file = "black-24.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:7bb041dca0d784697af4646d3b62ba4a6b028276ae878e53f6b4f74ddd6db99f"},
- {file = "black-24.3.0-py3-none-any.whl", hash = "sha256:41622020d7120e01d377f74249e677039d20e6344ff5851de8a10f11f513bf93"},
- {file = "black-24.3.0.tar.gz", hash = "sha256:a0c9c4a0771afc6919578cec71ce82a3e31e054904e7197deacbc9382671c41f"},
+ {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"},
+ {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"},
+ {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"},
+ {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"},
+ {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"},
+ {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"},
+ {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"},
+ {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"},
+ {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"},
+ {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"},
+ {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"},
+ {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"},
+ {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"},
+ {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"},
+ {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"},
+ {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"},
+ {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"},
+ {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"},
+ {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"},
+ {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"},
+ {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"},
+ {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"},
]
[package.dependencies]
@@ -180,33 +173,33 @@ uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "bmt"
-version = "1.1.3"
+version = "1.4.1"
description = "Biolink Model Toolkit: A Python API for working with the Biolink Model"
optional = false
-python-versions = ">=3.9,<4.0"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "bmt-1.1.3-py3-none-any.whl", hash = "sha256:7818da7f8debc807e80bbe181af70edb525ac3c7115bee86021607dcbaa0c372"},
- {file = "bmt-1.1.3.tar.gz", hash = "sha256:605ebffaec269dbf335b2a3ac0da575cc5299e98cfecfac0d6eff514a317983b"},
+ {file = "bmt-1.4.1-py3-none-any.whl", hash = "sha256:94016f64cdca85a65a83c45667313ffc83da9af31a3dab7b14e868c4cb6ab0bb"},
+ {file = "bmt-1.4.1.tar.gz", hash = "sha256:deb6dd64c6a57a77e727af6629b880116858d7303ec88e90723a488fac775735"},
]
[package.dependencies]
deprecation = ">=2.1.0,<3.0.0"
-linkml-runtime = ">=1.5.0,<2.0.0"
+linkml-runtime = ">=1.6.3,<2.0.0"
stringcase = ">=1.2.0,<2.0.0"
[[package]]
name = "boto3"
-version = "1.34.71"
+version = "1.34.106"
description = "The AWS SDK for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "boto3-1.34.71-py3-none-any.whl", hash = "sha256:7ce8c9a50af2f8a159a0dd86b40011d8dfdaba35005a118e51cd3ac72dc630f1"},
- {file = "boto3-1.34.71.tar.gz", hash = "sha256:d786e7fbe3c4152866199786468a625dc77b9f27294cd7ad4f63cd2e0c927287"},
+ {file = "boto3-1.34.106-py3-none-any.whl", hash = "sha256:d3be4e1dd5d546a001cd4da805816934cbde9d395316546e9411fec341ade5cf"},
+ {file = "boto3-1.34.106.tar.gz", hash = "sha256:6165b8cf1c7e625628ab28b32f9027064c8f5e5fca1c38d7fc228cd22069a19f"},
]
[package.dependencies]
-botocore = ">=1.34.71,<1.35.0"
+botocore = ">=1.34.106,<1.35.0"
jmespath = ">=0.7.1,<2.0.0"
s3transfer = ">=0.10.0,<0.11.0"
@@ -215,13 +208,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
[[package]]
name = "botocore"
-version = "1.34.71"
+version = "1.34.106"
description = "Low-level, data-driven core of boto 3."
optional = false
python-versions = ">=3.8"
files = [
- {file = "botocore-1.34.71-py3-none-any.whl", hash = "sha256:3bc9e23aee73fe6f097823d61f79a8877790436038101a83fa96c7593e8109f8"},
- {file = "botocore-1.34.71.tar.gz", hash = "sha256:c58f9ed71af2ea53d24146187130541222d7de8c27eb87d23f15457e7b83d88b"},
+ {file = "botocore-1.34.106-py3-none-any.whl", hash = "sha256:4baf0e27c2dfc4f4d0dee7c217c716e0782f9b30e8e1fff983fce237d88f73ae"},
+ {file = "botocore-1.34.106.tar.gz", hash = "sha256:921fa5202f88c3e58fdcb4b3acffd56d65b24bca47092ee4b27aa988556c0be6"},
]
[package.dependencies]
@@ -230,7 +223,7 @@ python-dateutil = ">=2.1,<3.0.0"
urllib3 = {version = ">=1.25.4,<2.2.0 || >2.2.0,<3", markers = "python_version >= \"3.10\""}
[package.extras]
-crt = ["awscrt (==0.19.19)"]
+crt = ["awscrt (==0.20.9)"]
[[package]]
name = "cachetools"
@@ -464,13 +457,13 @@ test = ["codacy-coverage", "coveralls", "dict_hash", "pytest", "pytest-cov", "ra
[[package]]
name = "curies"
-version = "0.7.8"
+version = "0.7.9"
description = "Idiomatic conversion between URIs and compact URIs (CURIEs)."
optional = false
python-versions = ">=3.8"
files = [
- {file = "curies-0.7.8-py3-none-any.whl", hash = "sha256:a60b2559f08557176b0a3df1f7c47ec7cd8ae4e0695f23fc6574825d2ccd17eb"},
- {file = "curies-0.7.8.tar.gz", hash = "sha256:d208ad40b5e40b532285c917f116001f9e887a48dda54e6eedd10e514ea6aa1a"},
+ {file = "curies-0.7.9-py3-none-any.whl", hash = "sha256:e4c5beb91642376953c94db0ee2fb5d2b011c3b16749516436114ba61442f260"},
+ {file = "curies-0.7.9.tar.gz", hash = "sha256:3b63c5fea7b0e967629a3a384b1a8c59b56c503487c1dcbacddeab59e25db4d8"},
]
[package.dependencies]
@@ -619,16 +612,6 @@ files = [
{file = "duckdb-0.9.2.tar.gz", hash = "sha256:3843afeab7c3fc4a4c0b53686a4cc1d9cdbdadcbb468d60fef910355ecafd447"},
]
-[[package]]
-name = "editorconfig"
-version = "0.12.4"
-description = "EditorConfig File Locator and Interpreter for Python"
-optional = false
-python-versions = "*"
-files = [
- {file = "EditorConfig-0.12.4.tar.gz", hash = "sha256:24857fa1793917dd9ccf0c7810a07e05404ce9b823521c7dce22a4fb5d125f80"},
-]
-
[[package]]
name = "elastic-transport"
version = "8.13.0"
@@ -649,13 +632,13 @@ develop = ["aiohttp", "furo", "httpx", "mock", "opentelemetry-api", "opentelemet
[[package]]
name = "elasticsearch"
-version = "8.13.0"
+version = "8.13.1"
description = "Python client for Elasticsearch"
optional = false
python-versions = ">=3.7"
files = [
- {file = "elasticsearch-8.13.0-py3-none-any.whl", hash = "sha256:4aaf49253e974eb500f01136a487bdd0f09d3cafd37a0456eff6acfff0c9199b"},
- {file = "elasticsearch-8.13.0.tar.gz", hash = "sha256:e4ebebb22d09f0ef839c26b6aa98e19ccd636bcb77f08c12b562b02cacd5e744"},
+ {file = "elasticsearch-8.13.1-py3-none-any.whl", hash = "sha256:ba2b3f8b30a7a81beae690f1cede52fbcfd29baf3ef5bb028d4fa86972feebd8"},
+ {file = "elasticsearch-8.13.1.tar.gz", hash = "sha256:1594d2d1293672db62525bc4688d86cdaf118db0f901808db28dc90ad19b81e1"},
]
[package.dependencies]
@@ -665,6 +648,7 @@ elastic-transport = ">=8.13,<9"
async = ["aiohttp (>=3,<4)"]
orjson = ["orjson (>=3)"]
requests = ["requests (>=2.4.0,<3.0.0)"]
+vectorstore-mmr = ["numpy (>=1)", "simsimd (>=3)"]
[[package]]
name = "et-xmlfile"
@@ -679,13 +663,13 @@ files = [
[[package]]
name = "exceptiongroup"
-version = "1.2.0"
+version = "1.2.1"
description = "Backport of PEP 654 (exception groups)"
optional = false
python-versions = ">=3.7"
files = [
- {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
- {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
+ {file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"},
+ {file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"},
]
[package.extras]
@@ -693,13 +677,13 @@ test = ["pytest (>=6)"]
[[package]]
name = "filelock"
-version = "3.13.3"
+version = "3.14.0"
description = "A platform independent file lock."
optional = false
python-versions = ">=3.8"
files = [
- {file = "filelock-3.13.3-py3-none-any.whl", hash = "sha256:5ffa845303983e7a0b7ae17636509bc97997d58afeafa72fb141a17b152284cb"},
- {file = "filelock-3.13.3.tar.gz", hash = "sha256:a79895a25bbefdf55d1a2a0a80968f7dbb28edcd6d4234a0afb3f37ecde4b546"},
+ {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"},
+ {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"},
]
[package.extras]
@@ -720,13 +704,13 @@ files = [
[[package]]
name = "gdown"
-version = "5.1.0"
+version = "5.2.0"
description = "Google Drive Public File/Folder Downloader"
optional = false
python-versions = ">=3.8"
files = [
- {file = "gdown-5.1.0-py3-none-any.whl", hash = "sha256:421530fd238fa15d41ba43219a79fdc28efe8ac11022173abad333701b77de2c"},
- {file = "gdown-5.1.0.tar.gz", hash = "sha256:550a72dc5ca2819fe4bcc15d80d05d7c98c0b90e57256254b77d0256b9df4683"},
+ {file = "gdown-5.2.0-py3-none-any.whl", hash = "sha256:33083832d82b1101bdd0e9df3edd0fbc0e1c5f14c9d8c38d2a35bf1683b526d6"},
+ {file = "gdown-5.2.0.tar.gz", hash = "sha256:2145165062d85520a3cd98b356c9ed522c5e7984d408535409fd46f94defc787"},
]
[package.dependencies]
@@ -736,7 +720,7 @@ requests = {version = "*", extras = ["socks"]}
tqdm = "*"
[package.extras]
-test = ["build", "mypy", "pytest", "pytest-xdist", "ruff", "twine", "types-requests"]
+test = ["build", "mypy", "pytest", "pytest-xdist", "ruff", "twine", "types-requests", "types-setuptools"]
[[package]]
name = "ghp-import"
@@ -757,13 +741,13 @@ dev = ["flake8", "markdown", "twine", "wheel"]
[[package]]
name = "google-api-core"
-version = "2.18.0"
+version = "2.19.0"
description = "Google API client core library"
optional = false
python-versions = ">=3.7"
files = [
- {file = "google-api-core-2.18.0.tar.gz", hash = "sha256:62d97417bfc674d6cef251e5c4d639a9655e00c45528c4364fbfebb478ce72a9"},
- {file = "google_api_core-2.18.0-py3-none-any.whl", hash = "sha256:5a63aa102e0049abe85b5b88cb9409234c1f70afcda21ce1e40b285b9629c1d6"},
+ {file = "google-api-core-2.19.0.tar.gz", hash = "sha256:cf1b7c2694047886d2af1128a03ae99e391108a08804f87cfd35970e49c9cd10"},
+ {file = "google_api_core-2.19.0-py3-none-any.whl", hash = "sha256:8661eec4078c35428fd3f69a2c7ee29e342896b70f01d1a1cbcb334372dd6251"},
]
[package.dependencies]
@@ -1045,13 +1029,13 @@ test = ["objgraph", "psutil"]
[[package]]
name = "griffe"
-version = "0.42.1"
+version = "0.45.0"
description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API."
optional = false
python-versions = ">=3.8"
files = [
- {file = "griffe-0.42.1-py3-none-any.whl", hash = "sha256:7e805e35617601355edcac0d3511cedc1ed0cb1f7645e2d336ae4b05bbae7b3b"},
- {file = "griffe-0.42.1.tar.gz", hash = "sha256:57046131384043ed078692b85d86b76568a686266cc036b9b56b704466f803ce"},
+ {file = "griffe-0.45.0-py3-none-any.whl", hash = "sha256:90fe5c90e1b0ca7dd6fee78f9009f4e01b37dbc9ab484a9b2c1578915db1e571"},
+ {file = "griffe-0.45.0.tar.gz", hash = "sha256:85cb2868d026ea51c89bdd589ad3ccc94abc5bd8d5d948e3d4450778a2a05b4a"},
]
[package.dependencies]
@@ -1070,13 +1054,13 @@ files = [
[[package]]
name = "idna"
-version = "3.6"
+version = "3.7"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.5"
files = [
- {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"},
- {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"},
+ {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
+ {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
]
[[package]]
@@ -1108,6 +1092,17 @@ files = [
{file = "ijson-3.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4a3a6a2fbbe7550ffe52d151cf76065e6b89cfb3e9d0463e49a7e322a25d0426"},
{file = "ijson-3.2.3-cp311-cp311-win32.whl", hash = "sha256:6a4db2f7fb9acfb855c9ae1aae602e4648dd1f88804a0d5cfb78c3639bcf156c"},
{file = "ijson-3.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:ccd6be56335cbb845f3d3021b1766299c056c70c4c9165fb2fbe2d62258bae3f"},
+ {file = "ijson-3.2.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:055b71bbc37af5c3c5861afe789e15211d2d3d06ac51ee5a647adf4def19c0ea"},
+ {file = "ijson-3.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c075a547de32f265a5dd139ab2035900fef6653951628862e5cdce0d101af557"},
+ {file = "ijson-3.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:457f8a5fc559478ac6b06b6d37ebacb4811f8c5156e997f0d87d708b0d8ab2ae"},
+ {file = "ijson-3.2.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9788f0c915351f41f0e69ec2618b81ebfcf9f13d9d67c6d404c7f5afda3e4afb"},
+ {file = "ijson-3.2.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fa234ab7a6a33ed51494d9d2197fb96296f9217ecae57f5551a55589091e7853"},
+ {file = "ijson-3.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdd0dc5da4f9dc6d12ab6e8e0c57d8b41d3c8f9ceed31a99dae7b2baf9ea769a"},
+ {file = "ijson-3.2.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c6beb80df19713e39e68dc5c337b5c76d36ccf69c30b79034634e5e4c14d6904"},
+ {file = "ijson-3.2.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a2973ce57afb142d96f35a14e9cfec08308ef178a2c76b8b5e1e98f3960438bf"},
+ {file = "ijson-3.2.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:105c314fd624e81ed20f925271ec506523b8dd236589ab6c0208b8707d652a0e"},
+ {file = "ijson-3.2.3-cp312-cp312-win32.whl", hash = "sha256:ac44781de5e901ce8339352bb5594fcb3b94ced315a34dbe840b4cff3450e23b"},
+ {file = "ijson-3.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:0567e8c833825b119e74e10a7c29761dc65fcd155f5d4cb10f9d3b8916ef9912"},
{file = "ijson-3.2.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:eeb286639649fb6bed37997a5e30eefcacddac79476d24128348ec890b2a0ccb"},
{file = "ijson-3.2.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:396338a655fb9af4ac59dd09c189885b51fa0eefc84d35408662031023c110d1"},
{file = "ijson-3.2.3-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e0243d166d11a2a47c17c7e885debf3b19ed136be2af1f5d1c34212850236ac"},
@@ -1263,13 +1258,13 @@ arrow = ">=0.15.0"
[[package]]
name = "jinja2"
-version = "3.1.3"
+version = "3.1.4"
description = "A very fast and expressive template engine."
optional = false
python-versions = ">=3.7"
files = [
- {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"},
- {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"},
+ {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"},
+ {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"},
]
[package.dependencies]
@@ -1289,20 +1284,6 @@ files = [
{file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
]
-[[package]]
-name = "jsbeautifier"
-version = "1.15.1"
-description = "JavaScript unobfuscator and beautifier."
-optional = false
-python-versions = "*"
-files = [
- {file = "jsbeautifier-1.15.1.tar.gz", hash = "sha256:ebd733b560704c602d744eafc839db60a1ee9326e30a2a80c4adb8718adc1b24"},
-]
-
-[package.dependencies]
-editorconfig = ">=0.12.2"
-six = ">=1.13.0"
-
[[package]]
name = "json-flattener"
version = "0.1.9"
@@ -1398,13 +1379,13 @@ files = [
[[package]]
name = "jsonschema"
-version = "4.21.1"
+version = "4.22.0"
description = "An implementation of JSON Schema validation for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"},
- {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"},
+ {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"},
+ {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"},
]
[package.dependencies]
@@ -1459,13 +1440,13 @@ test = ["tox"]
[[package]]
name = "kghub-downloader"
-version = "0.3.7"
+version = "0.3.8"
description = "Downloads and caches files for knowledge graph ETL"
optional = false
python-versions = "<4.0,>=3.8"
files = [
- {file = "kghub_downloader-0.3.7-py3-none-any.whl", hash = "sha256:c06320e79812a48e9ee88a0fba738d974fb628ee9999eaf0554245caeec85e09"},
- {file = "kghub_downloader-0.3.7.tar.gz", hash = "sha256:36125e06bd96ebbffc3109c92c23568da55ecd9ec93f440c62ff1ed9739cd046"},
+ {file = "kghub_downloader-0.3.8-py3-none-any.whl", hash = "sha256:d8a2b6f9502d84caf700e8736f06cb82f0dfd0e06ab7ee1ee63f9e37acf90ed6"},
+ {file = "kghub_downloader-0.3.8.tar.gz", hash = "sha256:a77dd62b1a00ca0d5d6ea81dbe983c4293bb71e6a9c73c6174cb309a771fc9ce"},
]
[package.dependencies]
@@ -1474,92 +1455,89 @@ compress-json = ">1.0,<2.0"
elasticsearch = ">7.0,<9.0"
gdown = ">=4.7.1"
google-cloud-storage = ">=2.1.0,<3.0.0"
-mkdocs = ">=1.4.0,<2.0.0"
-mkdocs-material = ">=8.5.6,<9.0.0"
+mkdocs = ">=1.4"
+mkdocs-material = ">=9.5"
mkdocstrings = {version = ">=0.20.0,<0.21.0", extras = ["python"]}
PyYAML = ">5.0,<7.0"
tqdm = ">=4.62.3"
-typer = ">=0.7.0,<0.8.0"
+typer = ">=0.12.3,<0.13.0"
[[package]]
name = "kgx"
-version = "0.0.0"
+version = "2.4.0"
description = "A Python library and set of command line utilities for exchanging Knowledge Graphs (KGs) that conform to or are aligned to the Biolink Model."
optional = false
-python-versions = "^3.9"
-files = []
-develop = false
+python-versions = "<4.0,>=3.9"
+files = [
+ {file = "kgx-2.4.0-py3-none-any.whl", hash = "sha256:51f612cb25aa47ce9a702db3902bb689f5346e27af602ba556033ded99f4e543"},
+ {file = "kgx-2.4.0.tar.gz", hash = "sha256:6b15d59d4a3057fed39b3450e5ea02611099688fc9e355682c498ea97c5413e2"},
+]
[package.dependencies]
-bmt = "^1.1.0"
-cachetools = "^5.0.0"
+bmt = ">=1.4.0,<2.0.0"
+cachetools = ">=5.0.0,<6.0.0"
Click = "*"
-deprecation = "^2.1.0"
-docker = "^6.0.0"
-docutils = "^0.18.1"
-ijson = "^3.1.3"
-inflection = "^0.5.1"
-jsonlines = "^4.0.0"
-jsonstreams = "^0.6.0"
-linkml = "^1.5.0"
-linkml-runtime = "^1.5.0"
+deprecation = ">=2.1.0,<3.0.0"
+docker = ">=6.0.0,<7.0.0"
+docutils = ">=0.18.1,<0.19.0"
+ijson = ">=3.1.3,<4.0.0"
+inflection = ">=0.5.1,<0.6.0"
+jsonlines = ">=4.0.0,<5.0.0"
+jsonstreams = ">=0.6.0,<0.7.0"
+linkml = ">=1.7.7,<2.0.0"
+linkml-runtime = ">=1.7.5,<2.0.0"
mypy = "*"
-neo4j = "^4.4.10"
+neo4j = ">=4.4.10,<5.0.0"
networkx = "*"
-ordered-set = "^4.0.2"
+ordered-set = ">=4.0.2,<5.0.0"
pandas = ">1.0.3"
-prefixcommons = "^0.1.4"
-prologterms = "^0.0.6"
+prefixcommons = ">=0.1.4,<0.2.0"
+prologterms = ">=0.0.6,<0.0.7"
+pyarrow = ">=15.0.2,<16.0.0"
pytest = "*"
-python-dateutil = "^2.8.1"
+python-dateutil = ">=2.8.1,<3.0.0"
pyyaml = "*"
rdflib = ">=6.0.0"
recommonmark = "*"
shexjsg = "*"
SPARQLWrapper = ">=1.8.2"
Sphinx = "*"
-stringcase = "^1.2.0"
-terminaltables = "^3.1.0"
-tox = "^4.13.0"
-validators = "^0.20.0"
-
-[package.source]
-type = "git"
-url = "https://github.com/biolink/kgx"
-reference = "master"
-resolved_reference = "8e5981697b4549b0be36ff37bf8b9f0eea06a7fc"
+stringcase = ">=1.2.0,<2.0.0"
+terminaltables = ">=3.1.0,<4.0.0"
+tox = ">=4.13.0,<5.0.0"
+validators = ">=0.20.0,<0.21.0"
[[package]]
name = "koza"
-version = "0.5.3"
+version = "0.6.0"
description = "Data transformation framework for LinkML data models"
optional = false
-python-versions = ">=3.9,<4.0"
+python-versions = "<4.0,>=3.9"
files = [
- {file = "koza-0.5.3-py3-none-any.whl", hash = "sha256:e55f209c64f2c0c3c60212afd29507cc8701ee37ff11ecb0eb11318f6087eaa8"},
- {file = "koza-0.5.3.tar.gz", hash = "sha256:c04c64a9aa67f8b34f4cd45fdc28109b9db407653b6af5b07d9b15b5962a8867"},
+ {file = "koza-0.6.0-py3-none-any.whl", hash = "sha256:21be1eb8d8d6dd24901fe913bd3430aac472a3bc1460d84bf4e1936133a5f8a1"},
+ {file = "koza-0.6.0.tar.gz", hash = "sha256:6fbc2e693c9956df0c3fb8b8b4304baeec6bc9eb4377e85f7ec5e15228e47376"},
]
[package.dependencies]
-linkml = ">=1.6.3"
+duckdb = "*"
+linkml = ">=1.7.8"
loguru = "*"
ordered-set = ">=4.1.0"
pydantic = ">=2.4,<3.0"
pyyaml = ">=5.0.0"
requests = ">=2.24.0,<3.0.0"
sssom = ">=0.4"
-typer = ">=0.7.0,<0.8.0"
-typer-cli = ">=0.0.13,<0.0.14"
+typer = ">=0.12.3"
[[package]]
name = "linkml"
-version = "1.6.3"
+version = "1.7.10"
description = "Linked Open Data Modeling Language"
optional = false
-python-versions = ">=3.8.1,<4.0.0"
+python-versions = "<4.0.0,>=3.8.1"
files = [
- {file = "linkml-1.6.3-py3-none-any.whl", hash = "sha256:2bcfa9e35b3e0d868f396fa48ede1b9e3c6016df956dd5ca92d70ff621ffc77e"},
- {file = "linkml-1.6.3.tar.gz", hash = "sha256:2692243c9fb1c262ea83b725c70d6f537844ae7a9405101c94bccf65def6d952"},
+ {file = "linkml-1.7.10-py3-none-any.whl", hash = "sha256:bf21cce814e9d1509489f1e6e15a7e86e4f11d949490d9a7a5c3f6b5b412ec62"},
+ {file = "linkml-1.7.10.tar.gz", hash = "sha256:1c38601c3cd495e34490b8cf7277fd3674ec68dcbe9f5efcec2658093801ce91"},
]
[package.dependencies]
@@ -1572,11 +1550,11 @@ jinja2 = ">=3.1.0"
jsonasobj2 = ">=1.0.3,<2.0.0"
jsonschema = {version = ">=4.0.0", extras = ["format"]}
linkml-dataops = "*"
-linkml-runtime = ">=1.6.0"
+linkml-runtime = ">=1.7.4"
openpyxl = "*"
parse = "*"
prefixcommons = ">=0.1.7"
-prefixmaps = ">=0.1.3"
+prefixmaps = ">=0.2.2"
pydantic = ">=1.0.0,<3.0.0"
pyjsg = ">=0.11.6"
pyshex = ">=0.7.20"
@@ -1588,6 +1566,11 @@ requests = ">=2.22"
sqlalchemy = ">=1.4.31"
watchdog = ">=0.9.0"
+[package.extras]
+black = ["black (>=24.0.0)"]
+shacl = ["pyshacl (>=0.25.0,<0.26.0)"]
+tests = ["black (>=24.0.0)", "pyshacl (>=0.25.0,<0.26.0)"]
+
[[package]]
name = "linkml-dataops"
version = "0.1.0"
@@ -1608,13 +1591,13 @@ linkml-runtime = ">=1.1.6"
[[package]]
name = "linkml-runtime"
-version = "1.6.3"
+version = "1.7.5"
description = "Runtime environment for LinkML, the Linked open data modeling language"
optional = false
-python-versions = ">=3.7.6,<4.0.0"
+python-versions = "<4.0,>=3.8"
files = [
- {file = "linkml_runtime-1.6.3-py3-none-any.whl", hash = "sha256:08f616302ce493be775104c87bd5a2ec0eb2c67624e611a3f7e28c978d08a4d1"},
- {file = "linkml_runtime-1.6.3.tar.gz", hash = "sha256:88e3d0b776055723d187128c03527145dc1ffdc2d2a69e89f8aabce203d418a3"},
+ {file = "linkml_runtime-1.7.5-py3-none-any.whl", hash = "sha256:c58000c7c68fa97b7d76c50421a85a64e25f07eec5bcac464bc00c4cd79007a6"},
+ {file = "linkml_runtime-1.7.5.tar.gz", hash = "sha256:b31197a5398359441ae1ed43470c54377a1d08db961366dda670300dddcd71d7"},
]
[package.dependencies]
@@ -1683,6 +1666,30 @@ files = [
docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"]
testing = ["coverage", "pyyaml"]
+[[package]]
+name = "markdown-it-py"
+version = "3.0.0"
+description = "Python port of markdown-it. Markdown parsing, done right!"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"},
+ {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"},
+]
+
+[package.dependencies]
+mdurl = ">=0.1,<1.0"
+
+[package.extras]
+benchmarking = ["psutil", "pytest", "pytest-benchmark"]
+code-style = ["pre-commit (>=3.0,<4.0)"]
+compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"]
+linkify = ["linkify-it-py (>=1,<3)"]
+plugins = ["mdit-py-plugins"]
+profiling = ["gprof2dot"]
+rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"]
+testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
+
[[package]]
name = "markupsafe"
version = "2.1.5"
@@ -1752,6 +1759,17 @@ files = [
{file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"},
]
+[[package]]
+name = "mdurl"
+version = "0.1.2"
+description = "Markdown URL utilities"
+optional = false
+python-versions = ">=3.7"
+files = [
+ {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"},
+ {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"},
+]
+
[[package]]
name = "mergedeep"
version = "1.3.4"
@@ -1765,13 +1783,13 @@ files = [
[[package]]
name = "mkdocs"
-version = "1.5.3"
+version = "1.6.0"
description = "Project documentation with Markdown."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"},
- {file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"},
+ {file = "mkdocs-1.6.0-py3-none-any.whl", hash = "sha256:1eb5cb7676b7d89323e62b56235010216319217d4af5ddc543a91beb8d125ea7"},
+ {file = "mkdocs-1.6.0.tar.gz", hash = "sha256:a73f735824ef83a4f3bcb7a231dcab23f5a838f88b7efc54a0eef5fbdbc3c512"},
]
[package.dependencies]
@@ -1779,19 +1797,19 @@ click = ">=7.0"
colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""}
ghp-import = ">=1.0"
jinja2 = ">=2.11.1"
-markdown = ">=3.2.1"
+markdown = ">=3.3.6"
markupsafe = ">=2.0.1"
mergedeep = ">=1.3.4"
+mkdocs-get-deps = ">=0.2.0"
packaging = ">=20.5"
pathspec = ">=0.11.1"
-platformdirs = ">=2.2.0"
pyyaml = ">=5.1"
pyyaml-env-tag = ">=0.1"
watchdog = ">=2.0"
[package.extras]
i18n = ["babel (>=2.9.0)"]
-min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"]
+min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.4)", "jinja2 (==2.11.1)", "markdown (==3.3.6)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "mkdocs-get-deps (==0.2.0)", "packaging (==20.5)", "pathspec (==0.11.1)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "watchdog (==2.0)"]
[[package]]
name = "mkdocs-autorefs"
@@ -1809,25 +1827,50 @@ Markdown = ">=3.3"
markupsafe = ">=2.0.1"
mkdocs = ">=1.1"
+[[package]]
+name = "mkdocs-get-deps"
+version = "0.2.0"
+description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"},
+ {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"},
+]
+
+[package.dependencies]
+mergedeep = ">=1.3.4"
+platformdirs = ">=2.2.0"
+pyyaml = ">=5.1"
+
[[package]]
name = "mkdocs-material"
-version = "8.5.11"
+version = "9.5.23"
description = "Documentation that simply works"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "mkdocs_material-8.5.11-py3-none-any.whl", hash = "sha256:c907b4b052240a5778074a30a78f31a1f8ff82d7012356dc26898b97559f082e"},
- {file = "mkdocs_material-8.5.11.tar.gz", hash = "sha256:b0ea0513fd8cab323e8a825d6692ea07fa83e917bb5db042e523afecc7064ab7"},
+ {file = "mkdocs_material-9.5.23-py3-none-any.whl", hash = "sha256:ffd08a5beaef3cd135aceb58ded8b98bbbbf2b70e5b656f6a14a63c917d9b001"},
+ {file = "mkdocs_material-9.5.23.tar.gz", hash = "sha256:4627fc3f15de2cba2bde9debc2fd59b9888ef494beabfe67eb352e23d14bf288"},
]
[package.dependencies]
-jinja2 = ">=3.0.2"
-markdown = ">=3.2"
-mkdocs = ">=1.4.0"
-mkdocs-material-extensions = ">=1.1"
-pygments = ">=2.12"
-pymdown-extensions = ">=9.4"
-requests = ">=2.26"
+babel = ">=2.10,<3.0"
+colorama = ">=0.4,<1.0"
+jinja2 = ">=3.0,<4.0"
+markdown = ">=3.2,<4.0"
+mkdocs = ">=1.6,<2.0"
+mkdocs-material-extensions = ">=1.3,<2.0"
+paginate = ">=0.5,<1.0"
+pygments = ">=2.16,<3.0"
+pymdown-extensions = ">=10.2,<11.0"
+regex = ">=2022.4"
+requests = ">=2.26,<3.0"
+
+[package.extras]
+git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"]
+imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"]
+recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"]
[[package]]
name = "mkdocs-material-extensions"
@@ -1840,27 +1883,6 @@ files = [
{file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"},
]
-[[package]]
-name = "mkdocs-mermaid2-plugin"
-version = "0.6.0"
-description = "A MkDocs plugin for including mermaid graphs in markdown sources"
-optional = false
-python-versions = ">=3.5"
-files = [
- {file = "mkdocs-mermaid2-plugin-0.6.0.tar.gz", hash = "sha256:99cca6db7c6b4a954a701dcb6b507191bc32a7b0b47eacf2885c1bacf77d1af1"},
- {file = "mkdocs_mermaid2_plugin-0.6.0-py3-none-any.whl", hash = "sha256:ffbe8a7daa7ed718cb800c44c5ce4c0ff413caebf7b8b63d9c4a998dfd78a64d"},
-]
-
-[package.dependencies]
-beautifulsoup4 = ">=4.6.3"
-jsbeautifier = "*"
-mkdocs = ">=1.0.4"
-mkdocs-material = "*"
-pymdown-extensions = ">=8.0"
-pyyaml = "*"
-requests = "*"
-setuptools = ">=18.5"
-
[[package]]
name = "mkdocstrings"
version = "0.20.0"
@@ -1921,38 +1943,38 @@ test = ["codacy-coverage", "coveralls", "parameterized", "pytest", "pytest-cov",
[[package]]
name = "mypy"
-version = "1.9.0"
+version = "1.10.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"},
- {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"},
- {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"},
- {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"},
- {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"},
- {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"},
- {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"},
- {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"},
- {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"},
- {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"},
- {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"},
- {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"},
- {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"},
- {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"},
- {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"},
- {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"},
- {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"},
- {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"},
- {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"},
- {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"},
- {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"},
- {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"},
- {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"},
- {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"},
- {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"},
- {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"},
- {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"},
+ {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"},
+ {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"},
+ {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"},
+ {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"},
+ {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"},
+ {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"},
+ {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"},
+ {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"},
+ {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"},
+ {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"},
+ {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"},
+ {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"},
+ {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"},
+ {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"},
+ {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"},
+ {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"},
+ {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"},
+ {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"},
+ {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"},
+ {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"},
+ {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"},
+ {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"},
+ {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"},
+ {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"},
+ {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"},
+ {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"},
+ {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"},
]
[package.dependencies]
@@ -1979,12 +2001,12 @@ files = [
[[package]]
name = "neo4j"
-version = "4.4.11"
+version = "4.4.12"
description = "Neo4j Bolt driver for Python"
optional = false
python-versions = ">=3.6"
files = [
- {file = "neo4j-4.4.11.tar.gz", hash = "sha256:2fb4693d524e7661ed6b0ea5b4e3a6272dba2567809ecd1d63f1c896ebcfc241"},
+ {file = "neo4j-4.4.12.tar.gz", hash = "sha256:b138271400e1ef2b89738e90ae0beb96b005f7dfedd68b17c4b85ee732d54125"},
]
[package.dependencies]
@@ -1992,20 +2014,20 @@ pytz = "*"
[[package]]
name = "networkx"
-version = "3.2.1"
+version = "3.3"
description = "Python package for creating and manipulating graphs and networks"
optional = false
-python-versions = ">=3.9"
+python-versions = ">=3.10"
files = [
- {file = "networkx-3.2.1-py3-none-any.whl", hash = "sha256:f18c69adc97877c42332c170849c96cefa91881c99a7cb3e95b7c659ebdc1ec2"},
- {file = "networkx-3.2.1.tar.gz", hash = "sha256:9f1bb5cf3409bf324e0a722c20bdb4c20ee39bf1c30ce8ae499c8502b0b5e0c6"},
+ {file = "networkx-3.3-py3-none-any.whl", hash = "sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2"},
+ {file = "networkx-3.3.tar.gz", hash = "sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9"},
]
[package.extras]
-default = ["matplotlib (>=3.5)", "numpy (>=1.22)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"]
-developer = ["changelist (==0.4)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"]
-doc = ["nb2plots (>=0.7)", "nbconvert (<7.9)", "numpydoc (>=1.6)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"]
-extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.11)", "sympy (>=1.10)"]
+default = ["matplotlib (>=3.6)", "numpy (>=1.23)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"]
+developer = ["changelist (==0.5)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"]
+doc = ["myst-nb (>=1.0)", "numpydoc (>=1.7)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"]
+extra = ["lxml (>=4.6)", "pydot (>=2.0)", "pygraphviz (>=1.12)", "sympy (>=1.10)"]
test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"]
[[package]]
@@ -2092,6 +2114,16 @@ files = [
{file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"},
]
+[[package]]
+name = "paginate"
+version = "0.5.6"
+description = "Divides large result sets into pages for easier browsing"
+optional = false
+python-versions = "*"
+files = [
+ {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"},
+]
+
[[package]]
name = "pandas"
version = "2.0.3"
@@ -2198,28 +2230,29 @@ files = [
[[package]]
name = "platformdirs"
-version = "4.2.0"
-description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+version = "4.2.2"
+description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
optional = false
python-versions = ">=3.8"
files = [
- {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"},
- {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"},
+ {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"},
+ {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"},
]
[package.extras]
docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"]
test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"]
+type = ["mypy (>=1.8)"]
[[package]]
name = "pluggy"
-version = "1.4.0"
+version = "1.5.0"
description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"},
- {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"},
+ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"},
+ {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"},
]
[package.extras]
@@ -2256,13 +2289,13 @@ requests = ">=2.28.1,<3.0.0"
[[package]]
name = "prefixmaps"
-version = "0.2.2"
+version = "0.2.4"
description = "A python library for retrieving semantic prefix maps"
optional = false
-python-versions = ">=3.8,<4.0"
+python-versions = "<4.0,>=3.8"
files = [
- {file = "prefixmaps-0.2.2-py3-none-any.whl", hash = "sha256:4ac2bf3ddb9b27c40c978cf937e9bedb160050d24e8c679b94c9c885e1d73c72"},
- {file = "prefixmaps-0.2.2.tar.gz", hash = "sha256:a36b1554154ef465271bde82dc91cd671e2d31dc1f50c2fd08ccb0d7d5791c33"},
+ {file = "prefixmaps-0.2.4-py3-none-any.whl", hash = "sha256:89bf0e6fb08c276f754f9624c42adf2e87c64ee92a3dde1f7eff01f22d85b512"},
+ {file = "prefixmaps-0.2.4.tar.gz", hash = "sha256:ae86a1b31189d0516d199756d5808f75f44b39e86546c356cc78c0fe8d2078af"},
]
[package.dependencies]
@@ -2317,6 +2350,54 @@ files = [
{file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"},
]
+[[package]]
+name = "pyarrow"
+version = "15.0.2"
+description = "Python library for Apache Arrow"
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "pyarrow-15.0.2-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:88b340f0a1d05b5ccc3d2d986279045655b1fe8e41aba6ca44ea28da0d1455d8"},
+ {file = "pyarrow-15.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:eaa8f96cecf32da508e6c7f69bb8401f03745c050c1dd42ec2596f2e98deecac"},
+ {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23c6753ed4f6adb8461e7c383e418391b8d8453c5d67e17f416c3a5d5709afbd"},
+ {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f639c059035011db8c0497e541a8a45d98a58dbe34dc8fadd0ef128f2cee46e5"},
+ {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:290e36a59a0993e9a5224ed2fb3e53375770f07379a0ea03ee2fce2e6d30b423"},
+ {file = "pyarrow-15.0.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:06c2bb2a98bc792f040bef31ad3e9be6a63d0cb39189227c08a7d955db96816e"},
+ {file = "pyarrow-15.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:f7a197f3670606a960ddc12adbe8075cea5f707ad7bf0dffa09637fdbb89f76c"},
+ {file = "pyarrow-15.0.2-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:5f8bc839ea36b1f99984c78e06e7a06054693dc2af8920f6fb416b5bca9944e4"},
+ {file = "pyarrow-15.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f5e81dfb4e519baa6b4c80410421528c214427e77ca0ea9461eb4097c328fa33"},
+ {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4f240852b302a7af4646c8bfe9950c4691a419847001178662a98915fd7ee7"},
+ {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e7d9cfb5a1e648e172428c7a42b744610956f3b70f524aa3a6c02a448ba853e"},
+ {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2d4f905209de70c0eb5b2de6763104d5a9a37430f137678edfb9a675bac9cd98"},
+ {file = "pyarrow-15.0.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90adb99e8ce5f36fbecbbc422e7dcbcbed07d985eed6062e459e23f9e71fd197"},
+ {file = "pyarrow-15.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:b116e7fd7889294cbd24eb90cd9bdd3850be3738d61297855a71ac3b8124ee38"},
+ {file = "pyarrow-15.0.2-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:25335e6f1f07fdaa026a61c758ee7d19ce824a866b27bba744348fa73bb5a440"},
+ {file = "pyarrow-15.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:90f19e976d9c3d8e73c80be84ddbe2f830b6304e4c576349d9360e335cd627fc"},
+ {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a22366249bf5fd40ddacc4f03cd3160f2d7c247692945afb1899bab8a140ddfb"},
+ {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2a335198f886b07e4b5ea16d08ee06557e07db54a8400cc0d03c7f6a22f785f"},
+ {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e6d459c0c22f0b9c810a3917a1de3ee704b021a5fb8b3bacf968eece6df098f"},
+ {file = "pyarrow-15.0.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:033b7cad32198754d93465dcfb71d0ba7cb7cd5c9afd7052cab7214676eec38b"},
+ {file = "pyarrow-15.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:29850d050379d6e8b5a693098f4de7fd6a2bea4365bfd073d7c57c57b95041ee"},
+ {file = "pyarrow-15.0.2-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:7167107d7fb6dcadb375b4b691b7e316f4368f39f6f45405a05535d7ad5e5058"},
+ {file = "pyarrow-15.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e85241b44cc3d365ef950432a1b3bd44ac54626f37b2e3a0cc89c20e45dfd8bf"},
+ {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:248723e4ed3255fcd73edcecc209744d58a9ca852e4cf3d2577811b6d4b59818"},
+ {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ff3bdfe6f1b81ca5b73b70a8d482d37a766433823e0c21e22d1d7dde76ca33f"},
+ {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:f3d77463dee7e9f284ef42d341689b459a63ff2e75cee2b9302058d0d98fe142"},
+ {file = "pyarrow-15.0.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:8c1faf2482fb89766e79745670cbca04e7018497d85be9242d5350cba21357e1"},
+ {file = "pyarrow-15.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:28f3016958a8e45a1069303a4a4f6a7d4910643fc08adb1e2e4a7ff056272ad3"},
+ {file = "pyarrow-15.0.2-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:89722cb64286ab3d4daf168386f6968c126057b8c7ec3ef96302e81d8cdb8ae4"},
+ {file = "pyarrow-15.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd0ba387705044b3ac77b1b317165c0498299b08261d8122c96051024f953cd5"},
+ {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad2459bf1f22b6a5cdcc27ebfd99307d5526b62d217b984b9f5c974651398832"},
+ {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58922e4bfece8b02abf7159f1f53a8f4d9f8e08f2d988109126c17c3bb261f22"},
+ {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:adccc81d3dc0478ea0b498807b39a8d41628fa9210729b2f718b78cb997c7c91"},
+ {file = "pyarrow-15.0.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:8bd2baa5fe531571847983f36a30ddbf65261ef23e496862ece83bdceb70420d"},
+ {file = "pyarrow-15.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6669799a1d4ca9da9c7e06ef48368320f5856f36f9a4dd31a11839dda3f6cc8c"},
+ {file = "pyarrow-15.0.2.tar.gz", hash = "sha256:9c9bc803cb3b7bfacc1e96ffbfd923601065d9d3f911179d81e72d99fd74a3d9"},
+]
+
+[package.dependencies]
+numpy = ">=1.16.6,<2"
+
[[package]]
name = "pyasn1"
version = "0.6.0"
@@ -2344,18 +2425,18 @@ pyasn1 = ">=0.4.6,<0.7.0"
[[package]]
name = "pydantic"
-version = "2.6.4"
+version = "2.7.1"
description = "Data validation using Python type hints"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pydantic-2.6.4-py3-none-any.whl", hash = "sha256:cc46fce86607580867bdc3361ad462bab9c222ef042d3da86f2fb333e1d916c5"},
- {file = "pydantic-2.6.4.tar.gz", hash = "sha256:b1704e0847db01817624a6b86766967f552dd9dbf3afba4004409f908dcc84e6"},
+ {file = "pydantic-2.7.1-py3-none-any.whl", hash = "sha256:e029badca45266732a9a79898a15ae2e8b14840b1eabbb25844be28f0b33f3d5"},
+ {file = "pydantic-2.7.1.tar.gz", hash = "sha256:e9dbb5eada8abe4d9ae5f46b9939aead650cd2b68f249bb3a8139dbe125803cc"},
]
[package.dependencies]
annotated-types = ">=0.4.0"
-pydantic-core = "2.16.3"
+pydantic-core = "2.18.2"
typing-extensions = ">=4.6.1"
[package.extras]
@@ -2363,90 +2444,90 @@ email = ["email-validator (>=2.0.0)"]
[[package]]
name = "pydantic-core"
-version = "2.16.3"
-description = ""
+version = "2.18.2"
+description = "Core functionality for Pydantic validation and serialization"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pydantic_core-2.16.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:75b81e678d1c1ede0785c7f46690621e4c6e63ccd9192af1f0bd9d504bbb6bf4"},
- {file = "pydantic_core-2.16.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9c865a7ee6f93783bd5d781af5a4c43dadc37053a5b42f7d18dc019f8c9d2bd1"},
- {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:162e498303d2b1c036b957a1278fa0899d02b2842f1ff901b6395104c5554a45"},
- {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f583bd01bbfbff4eaee0868e6fc607efdfcc2b03c1c766b06a707abbc856187"},
- {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b926dd38db1519ed3043a4de50214e0d600d404099c3392f098a7f9d75029ff8"},
- {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:716b542728d4c742353448765aa7cdaa519a7b82f9564130e2b3f6766018c9ec"},
- {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc4ad7f7ee1a13d9cb49d8198cd7d7e3aa93e425f371a68235f784e99741561f"},
- {file = "pydantic_core-2.16.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bd87f48924f360e5d1c5f770d6155ce0e7d83f7b4e10c2f9ec001c73cf475c99"},
- {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0df446663464884297c793874573549229f9eca73b59360878f382a0fc085979"},
- {file = "pydantic_core-2.16.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4df8a199d9f6afc5ae9a65f8f95ee52cae389a8c6b20163762bde0426275b7db"},
- {file = "pydantic_core-2.16.3-cp310-none-win32.whl", hash = "sha256:456855f57b413f077dff513a5a28ed838dbbb15082ba00f80750377eed23d132"},
- {file = "pydantic_core-2.16.3-cp310-none-win_amd64.whl", hash = "sha256:732da3243e1b8d3eab8c6ae23ae6a58548849d2e4a4e03a1924c8ddf71a387cb"},
- {file = "pydantic_core-2.16.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:519ae0312616026bf4cedc0fe459e982734f3ca82ee8c7246c19b650b60a5ee4"},
- {file = "pydantic_core-2.16.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b3992a322a5617ded0a9f23fd06dbc1e4bd7cf39bc4ccf344b10f80af58beacd"},
- {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d62da299c6ecb04df729e4b5c52dc0d53f4f8430b4492b93aa8de1f541c4aac"},
- {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2acca2be4bb2f2147ada8cac612f8a98fc09f41c89f87add7256ad27332c2fda"},
- {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b662180108c55dfbf1280d865b2d116633d436cfc0bba82323554873967b340"},
- {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e7c6ed0dc9d8e65f24f5824291550139fe6f37fac03788d4580da0d33bc00c97"},
- {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1bb0827f56654b4437955555dc3aeeebeddc47c2d7ed575477f082622c49e"},
- {file = "pydantic_core-2.16.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e56f8186d6210ac7ece503193ec84104da7ceb98f68ce18c07282fcc2452e76f"},
- {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:936e5db01dd49476fa8f4383c259b8b1303d5dd5fb34c97de194560698cc2c5e"},
- {file = "pydantic_core-2.16.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33809aebac276089b78db106ee692bdc9044710e26f24a9a2eaa35a0f9fa70ba"},
- {file = "pydantic_core-2.16.3-cp311-none-win32.whl", hash = "sha256:ded1c35f15c9dea16ead9bffcde9bb5c7c031bff076355dc58dcb1cb436c4721"},
- {file = "pydantic_core-2.16.3-cp311-none-win_amd64.whl", hash = "sha256:d89ca19cdd0dd5f31606a9329e309d4fcbb3df860960acec32630297d61820df"},
- {file = "pydantic_core-2.16.3-cp311-none-win_arm64.whl", hash = "sha256:6162f8d2dc27ba21027f261e4fa26f8bcb3cf9784b7f9499466a311ac284b5b9"},
- {file = "pydantic_core-2.16.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f56ae86b60ea987ae8bcd6654a887238fd53d1384f9b222ac457070b7ac4cff"},
- {file = "pydantic_core-2.16.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9bd22a2a639e26171068f8ebb5400ce2c1bc7d17959f60a3b753ae13c632975"},
- {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4204e773b4b408062960e65468d5346bdfe139247ee5f1ca2a378983e11388a2"},
- {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f651dd19363c632f4abe3480a7c87a9773be27cfe1341aef06e8759599454120"},
- {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aaf09e615a0bf98d406657e0008e4a8701b11481840be7d31755dc9f97c44053"},
- {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8e47755d8152c1ab5b55928ab422a76e2e7b22b5ed8e90a7d584268dd49e9c6b"},
- {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:500960cb3a0543a724a81ba859da816e8cf01b0e6aaeedf2c3775d12ee49cade"},
- {file = "pydantic_core-2.16.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cf6204fe865da605285c34cf1172879d0314ff267b1c35ff59de7154f35fdc2e"},
- {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d33dd21f572545649f90c38c227cc8631268ba25c460b5569abebdd0ec5974ca"},
- {file = "pydantic_core-2.16.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49d5d58abd4b83fb8ce763be7794d09b2f50f10aa65c0f0c1696c677edeb7cbf"},
- {file = "pydantic_core-2.16.3-cp312-none-win32.whl", hash = "sha256:f53aace168a2a10582e570b7736cc5bef12cae9cf21775e3eafac597e8551fbe"},
- {file = "pydantic_core-2.16.3-cp312-none-win_amd64.whl", hash = "sha256:0d32576b1de5a30d9a97f300cc6a3f4694c428d956adbc7e6e2f9cad279e45ed"},
- {file = "pydantic_core-2.16.3-cp312-none-win_arm64.whl", hash = "sha256:ec08be75bb268473677edb83ba71e7e74b43c008e4a7b1907c6d57e940bf34b6"},
- {file = "pydantic_core-2.16.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:b1f6f5938d63c6139860f044e2538baeee6f0b251a1816e7adb6cbce106a1f01"},
- {file = "pydantic_core-2.16.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2a1ef6a36fdbf71538142ed604ad19b82f67b05749512e47f247a6ddd06afdc7"},
- {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704d35ecc7e9c31d48926150afada60401c55efa3b46cd1ded5a01bdffaf1d48"},
- {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d937653a696465677ed583124b94a4b2d79f5e30b2c46115a68e482c6a591c8a"},
- {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9803edf8e29bd825f43481f19c37f50d2b01899448273b3a7758441b512acf8"},
- {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72282ad4892a9fb2da25defeac8c2e84352c108705c972db82ab121d15f14e6d"},
- {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f752826b5b8361193df55afcdf8ca6a57d0232653494ba473630a83ba50d8c9"},
- {file = "pydantic_core-2.16.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4384a8f68ddb31a0b0c3deae88765f5868a1b9148939c3f4121233314ad5532c"},
- {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a4b2bf78342c40b3dc830880106f54328928ff03e357935ad26c7128bbd66ce8"},
- {file = "pydantic_core-2.16.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:13dcc4802961b5f843a9385fc821a0b0135e8c07fc3d9949fd49627c1a5e6ae5"},
- {file = "pydantic_core-2.16.3-cp38-none-win32.whl", hash = "sha256:e3e70c94a0c3841e6aa831edab1619ad5c511199be94d0c11ba75fe06efe107a"},
- {file = "pydantic_core-2.16.3-cp38-none-win_amd64.whl", hash = "sha256:ecdf6bf5f578615f2e985a5e1f6572e23aa632c4bd1dc67f8f406d445ac115ed"},
- {file = "pydantic_core-2.16.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:bda1ee3e08252b8d41fa5537413ffdddd58fa73107171a126d3b9ff001b9b820"},
- {file = "pydantic_core-2.16.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:21b888c973e4f26b7a96491c0965a8a312e13be108022ee510248fe379a5fa23"},
- {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be0ec334369316fa73448cc8c982c01e5d2a81c95969d58b8f6e272884df0074"},
- {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b5b6079cc452a7c53dd378c6f881ac528246b3ac9aae0f8eef98498a75657805"},
- {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ee8d5f878dccb6d499ba4d30d757111847b6849ae07acdd1205fffa1fc1253c"},
- {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7233d65d9d651242a68801159763d09e9ec96e8a158dbf118dc090cd77a104c9"},
- {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6119dc90483a5cb50a1306adb8d52c66e447da88ea44f323e0ae1a5fcb14256"},
- {file = "pydantic_core-2.16.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:578114bc803a4c1ff9946d977c221e4376620a46cf78da267d946397dc9514a8"},
- {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d8f99b147ff3fcf6b3cc60cb0c39ea443884d5559a30b1481e92495f2310ff2b"},
- {file = "pydantic_core-2.16.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4ac6b4ce1e7283d715c4b729d8f9dab9627586dafce81d9eaa009dd7f25dd972"},
- {file = "pydantic_core-2.16.3-cp39-none-win32.whl", hash = "sha256:e7774b570e61cb998490c5235740d475413a1f6de823169b4cf94e2fe9e9f6b2"},
- {file = "pydantic_core-2.16.3-cp39-none-win_amd64.whl", hash = "sha256:9091632a25b8b87b9a605ec0e61f241c456e9248bfdcf7abdf344fdb169c81cf"},
- {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:36fa178aacbc277bc6b62a2c3da95226520da4f4e9e206fdf076484363895d2c"},
- {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:dcca5d2bf65c6fb591fff92da03f94cd4f315972f97c21975398bd4bd046854a"},
- {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a72fb9963cba4cd5793854fd12f4cfee731e86df140f59ff52a49b3552db241"},
- {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60cc1a081f80a2105a59385b92d82278b15d80ebb3adb200542ae165cd7d183"},
- {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cbcc558401de90a746d02ef330c528f2e668c83350f045833543cd57ecead1ad"},
- {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fee427241c2d9fb7192b658190f9f5fd6dfe41e02f3c1489d2ec1e6a5ab1e04a"},
- {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f4cb85f693044e0f71f394ff76c98ddc1bc0953e48c061725e540396d5c8a2e1"},
- {file = "pydantic_core-2.16.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:b29eeb887aa931c2fcef5aa515d9d176d25006794610c264ddc114c053bf96fe"},
- {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a425479ee40ff021f8216c9d07a6a3b54b31c8267c6e17aa88b70d7ebd0e5e5b"},
- {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5c5cbc703168d1b7a838668998308018a2718c2130595e8e190220238addc96f"},
- {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99b6add4c0b39a513d323d3b93bc173dac663c27b99860dd5bf491b240d26137"},
- {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f76ee558751746d6a38f89d60b6228fa174e5172d143886af0f85aa306fd89"},
- {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:00ee1c97b5364b84cb0bd82e9bbf645d5e2871fb8c58059d158412fee2d33d8a"},
- {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:287073c66748f624be4cef893ef9174e3eb88fe0b8a78dc22e88eca4bc357ca6"},
- {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed25e1835c00a332cb10c683cd39da96a719ab1dfc08427d476bce41b92531fc"},
- {file = "pydantic_core-2.16.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:86b3d0033580bd6bbe07590152007275bd7af95f98eaa5bd36f3da219dcd93da"},
- {file = "pydantic_core-2.16.3.tar.gz", hash = "sha256:1cac689f80a3abab2d3c0048b29eea5751114054f032a941a32de4c852c59cad"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9e08e867b306f525802df7cd16c44ff5ebbe747ff0ca6cf3fde7f36c05a59a81"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f0a21cbaa69900cbe1a2e7cad2aa74ac3cf21b10c3efb0fa0b80305274c0e8a2"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0680b1f1f11fda801397de52c36ce38ef1c1dc841a0927a94f226dea29c3ae3d"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95b9d5e72481d3780ba3442eac863eae92ae43a5f3adb5b4d0a1de89d42bb250"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fcf5cd9c4b655ad666ca332b9a081112cd7a58a8b5a6ca7a3104bc950f2038"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b5155ff768083cb1d62f3e143b49a8a3432e6789a3abee8acd005c3c7af1c74"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:553ef617b6836fc7e4df130bb851e32fe357ce36336d897fd6646d6058d980af"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89ed9eb7d616ef5714e5590e6cf7f23b02d0d539767d33561e3675d6f9e3857"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:75f7e9488238e920ab6204399ded280dc4c307d034f3924cd7f90a38b1829563"},
+ {file = "pydantic_core-2.18.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ef26c9e94a8c04a1b2924149a9cb081836913818e55681722d7f29af88fe7b38"},
+ {file = "pydantic_core-2.18.2-cp310-none-win32.whl", hash = "sha256:182245ff6b0039e82b6bb585ed55a64d7c81c560715d1bad0cbad6dfa07b4027"},
+ {file = "pydantic_core-2.18.2-cp310-none-win_amd64.whl", hash = "sha256:e23ec367a948b6d812301afc1b13f8094ab7b2c280af66ef450efc357d2ae543"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:219da3f096d50a157f33645a1cf31c0ad1fe829a92181dd1311022f986e5fbe3"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cc1cfd88a64e012b74e94cd00bbe0f9c6df57049c97f02bb07d39e9c852e19a4"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05b7133a6e6aeb8df37d6f413f7705a37ab4031597f64ab56384c94d98fa0e90"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:224c421235f6102e8737032483f43c1a8cfb1d2f45740c44166219599358c2cd"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b14d82cdb934e99dda6d9d60dc84a24379820176cc4a0d123f88df319ae9c150"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2728b01246a3bba6de144f9e3115b532ee44bd6cf39795194fb75491824a1413"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:470b94480bb5ee929f5acba6995251ada5e059a5ef3e0dfc63cca287283ebfa6"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:997abc4df705d1295a42f95b4eec4950a37ad8ae46d913caeee117b6b198811c"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75250dbc5290e3f1a0f4618db35e51a165186f9034eff158f3d490b3fed9f8a0"},
+ {file = "pydantic_core-2.18.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4456f2dca97c425231d7315737d45239b2b51a50dc2b6f0c2bb181fce6207664"},
+ {file = "pydantic_core-2.18.2-cp311-none-win32.whl", hash = "sha256:269322dcc3d8bdb69f054681edff86276b2ff972447863cf34c8b860f5188e2e"},
+ {file = "pydantic_core-2.18.2-cp311-none-win_amd64.whl", hash = "sha256:800d60565aec896f25bc3cfa56d2277d52d5182af08162f7954f938c06dc4ee3"},
+ {file = "pydantic_core-2.18.2-cp311-none-win_arm64.whl", hash = "sha256:1404c69d6a676245199767ba4f633cce5f4ad4181f9d0ccb0577e1f66cf4c46d"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:fb2bd7be70c0fe4dfd32c951bc813d9fe6ebcbfdd15a07527796c8204bd36242"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6132dd3bd52838acddca05a72aafb6eab6536aa145e923bb50f45e78b7251043"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d904828195733c183d20a54230c0df0eb46ec746ea1a666730787353e87182"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9bd70772c720142be1020eac55f8143a34ec9f82d75a8e7a07852023e46617f"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b8ed04b3582771764538f7ee7001b02e1170223cf9b75dff0bc698fadb00cf3"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6dac87ddb34aaec85f873d737e9d06a3555a1cc1a8e0c44b7f8d5daeb89d86f"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca4ae5a27ad7a4ee5170aebce1574b375de390bc01284f87b18d43a3984df72"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:886eec03591b7cf058467a70a87733b35f44707bd86cf64a615584fd72488b7c"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca7b0c1f1c983e064caa85f3792dd2fe3526b3505378874afa84baf662e12241"},
+ {file = "pydantic_core-2.18.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b4356d3538c3649337df4074e81b85f0616b79731fe22dd11b99499b2ebbdf3"},
+ {file = "pydantic_core-2.18.2-cp312-none-win32.whl", hash = "sha256:8b172601454f2d7701121bbec3425dd71efcb787a027edf49724c9cefc14c038"},
+ {file = "pydantic_core-2.18.2-cp312-none-win_amd64.whl", hash = "sha256:b1bd7e47b1558ea872bd16c8502c414f9e90dcf12f1395129d7bb42a09a95438"},
+ {file = "pydantic_core-2.18.2-cp312-none-win_arm64.whl", hash = "sha256:98758d627ff397e752bc339272c14c98199c613f922d4a384ddc07526c86a2ec"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9fdad8e35f278b2c3eb77cbdc5c0a49dada440657bf738d6905ce106dc1de439"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1d90c3265ae107f91a4f279f4d6f6f1d4907ac76c6868b27dc7fb33688cfb347"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390193c770399861d8df9670fb0d1874f330c79caaca4642332df7c682bf6b91"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:82d5d4d78e4448683cb467897fe24e2b74bb7b973a541ea1dcfec1d3cbce39fb"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4774f3184d2ef3e14e8693194f661dea5a4d6ca4e3dc8e39786d33a94865cefd"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4d938ec0adf5167cb335acb25a4ee69a8107e4984f8fbd2e897021d9e4ca21b"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0e8b1be28239fc64a88a8189d1df7fad8be8c1ae47fcc33e43d4be15f99cc70"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:868649da93e5a3d5eacc2b5b3b9235c98ccdbfd443832f31e075f54419e1b96b"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:78363590ef93d5d226ba21a90a03ea89a20738ee5b7da83d771d283fd8a56761"},
+ {file = "pydantic_core-2.18.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:852e966fbd035a6468fc0a3496589b45e2208ec7ca95c26470a54daed82a0788"},
+ {file = "pydantic_core-2.18.2-cp38-none-win32.whl", hash = "sha256:6a46e22a707e7ad4484ac9ee9f290f9d501df45954184e23fc29408dfad61350"},
+ {file = "pydantic_core-2.18.2-cp38-none-win_amd64.whl", hash = "sha256:d91cb5ea8b11607cc757675051f61b3d93f15eca3cefb3e6c704a5d6e8440f4e"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:ae0a8a797a5e56c053610fa7be147993fe50960fa43609ff2a9552b0e07013e8"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:042473b6280246b1dbf530559246f6842b56119c2926d1e52b631bdc46075f2a"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a388a77e629b9ec814c1b1e6b3b595fe521d2cdc625fcca26fbc2d44c816804"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e25add29b8f3b233ae90ccef2d902d0ae0432eb0d45370fe315d1a5cf231004b"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f459a5ce8434614dfd39bbebf1041952ae01da6bed9855008cb33b875cb024c0"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eff2de745698eb46eeb51193a9f41d67d834d50e424aef27df2fcdee1b153845"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8309f67285bdfe65c372ea3722b7a5642680f3dba538566340a9d36e920b5f0"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f93a8a2e3938ff656a7c1bc57193b1319960ac015b6e87d76c76bf14fe0244b4"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:22057013c8c1e272eb8d0eebc796701167d8377441ec894a8fed1af64a0bf399"},
+ {file = "pydantic_core-2.18.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cfeecd1ac6cc1fb2692c3d5110781c965aabd4ec5d32799773ca7b1456ac636b"},
+ {file = "pydantic_core-2.18.2-cp39-none-win32.whl", hash = "sha256:0d69b4c2f6bb3e130dba60d34c0845ba31b69babdd3f78f7c0c8fae5021a253e"},
+ {file = "pydantic_core-2.18.2-cp39-none-win_amd64.whl", hash = "sha256:d9319e499827271b09b4e411905b24a426b8fb69464dfa1696258f53a3334641"},
+ {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a1874c6dd4113308bd0eb568418e6114b252afe44319ead2b4081e9b9521fe75"},
+ {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ccdd111c03bfd3666bd2472b674c6899550e09e9f298954cfc896ab92b5b0e6d"},
+ {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e18609ceaa6eed63753037fc06ebb16041d17d28199ae5aba0052c51449650a9"},
+ {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e5c584d357c4e2baf0ff7baf44f4994be121e16a2c88918a5817331fc7599d7"},
+ {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43f0f463cf89ace478de71a318b1b4f05ebc456a9b9300d027b4b57c1a2064fb"},
+ {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e1b395e58b10b73b07b7cf740d728dd4ff9365ac46c18751bf8b3d8cca8f625a"},
+ {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0098300eebb1c837271d3d1a2cd2911e7c11b396eac9661655ee524a7f10587b"},
+ {file = "pydantic_core-2.18.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:36789b70d613fbac0a25bb07ab3d9dba4d2e38af609c020cf4d888d165ee0bf3"},
+ {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3f9a801e7c8f1ef8718da265bba008fa121243dfe37c1cea17840b0944dfd72c"},
+ {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:3a6515ebc6e69d85502b4951d89131ca4e036078ea35533bb76327f8424531ce"},
+ {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20aca1e2298c56ececfd8ed159ae4dde2df0781988c97ef77d5c16ff4bd5b400"},
+ {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:223ee893d77a310a0391dca6df00f70bbc2f36a71a895cecd9a0e762dc37b349"},
+ {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2334ce8c673ee93a1d6a65bd90327588387ba073c17e61bf19b4fd97d688d63c"},
+ {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cbca948f2d14b09d20268cda7b0367723d79063f26c4ffc523af9042cad95592"},
+ {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b3ef08e20ec49e02d5c6717a91bb5af9b20f1805583cb0adfe9ba2c6b505b5ae"},
+ {file = "pydantic_core-2.18.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6fdc8627910eed0c01aed6a390a252fe3ea6d472ee70fdde56273f198938374"},
+ {file = "pydantic_core-2.18.2.tar.gz", hash = "sha256:2e29d20810dfc3043ee13ac7d9e25105799817683348823f305ab3f349b9386e"},
]
[package.dependencies]
@@ -2454,17 +2535,16 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0"
[[package]]
name = "pygments"
-version = "2.17.2"
+version = "2.18.0"
description = "Pygments is a syntax highlighting package written in Python."
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"},
- {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"},
+ {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"},
+ {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"},
]
[package.extras]
-plugins = ["importlib-metadata"]
windows-terminal = ["colorama (>=0.4.6)"]
[[package]]
@@ -2484,17 +2564,17 @@ jsonasobj = ">=1.2.1"
[[package]]
name = "pymdown-extensions"
-version = "10.7.1"
+version = "10.8.1"
description = "Extension pack for Python Markdown."
optional = false
python-versions = ">=3.8"
files = [
- {file = "pymdown_extensions-10.7.1-py3-none-any.whl", hash = "sha256:f5cc7000d7ff0d1ce9395d216017fa4df3dde800afb1fb72d1c7d3fd35e710f4"},
- {file = "pymdown_extensions-10.7.1.tar.gz", hash = "sha256:c70e146bdd83c744ffc766b4671999796aba18842b268510a329f7f64700d584"},
+ {file = "pymdown_extensions-10.8.1-py3-none-any.whl", hash = "sha256:f938326115884f48c6059c67377c46cf631c733ef3629b6eed1349989d1b30cb"},
+ {file = "pymdown_extensions-10.8.1.tar.gz", hash = "sha256:3ab1db5c9e21728dabf75192d71471f8e50f216627e9a1fa9535ecb0231b9940"},
]
[package.dependencies]
-markdown = ">=3.5"
+markdown = ">=3.6"
pyyaml = "*"
[package.extras]
@@ -2620,13 +2700,13 @@ test = ["pytest", "pytest-cov"]
[[package]]
name = "pytest"
-version = "7.4.4"
+version = "8.2.0"
description = "pytest: simple powerful testing with Python"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"},
- {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"},
+ {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"},
+ {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"},
]
[package.dependencies]
@@ -2634,11 +2714,11 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*"
packaging = "*"
-pluggy = ">=0.12,<2.0"
-tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
+pluggy = ">=1.5,<2.0"
+tomli = {version = ">=1", markers = "python_version < \"3.11\""}
[package.extras]
-testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
+dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
[[package]]
name = "pytest-logging"
@@ -2674,6 +2754,7 @@ description = "A pure Python implementation of the trie data structure."
optional = false
python-versions = "*"
files = [
+ {file = "PyTrie-0.4.0-py3-none-any.whl", hash = "sha256:f687c224ee8c66cda8e8628a903011b692635ffbb08d4b39c5f92b18eb78c950"},
{file = "PyTrie-0.4.0.tar.gz", hash = "sha256:8f4488f402d3465993fb6b6efa09866849ed8cda7903b50647b7d0342b805379"},
]
@@ -2726,6 +2807,7 @@ files = [
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
+ {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
{file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
{file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
{file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
@@ -2733,8 +2815,16 @@ files = [
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
+ {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
{file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
+ {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
+ {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
+ {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
+ {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
+ {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
+ {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
+ {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
{file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
@@ -2751,6 +2841,7 @@ files = [
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
+ {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
{file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
{file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
{file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
@@ -2758,6 +2849,7 @@ files = [
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
+ {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
{file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
@@ -2845,19 +2937,107 @@ sphinx = ">=1.3.1"
[[package]]
name = "referencing"
-version = "0.34.0"
+version = "0.35.1"
description = "JSON Referencing + Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "referencing-0.34.0-py3-none-any.whl", hash = "sha256:d53ae300ceddd3169f1ffa9caf2cb7b769e92657e4fafb23d34b93679116dfd4"},
- {file = "referencing-0.34.0.tar.gz", hash = "sha256:5773bd84ef41799a5a8ca72dc34590c041eb01bf9aa02632b4a973fb0181a844"},
+ {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"},
+ {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"},
]
[package.dependencies]
attrs = ">=22.2.0"
rpds-py = ">=0.7.0"
+[[package]]
+name = "regex"
+version = "2024.5.15"
+description = "Alternative regular expression module, to replace re."
+optional = false
+python-versions = ">=3.8"
+files = [
+ {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f"},
+ {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6"},
+ {file = "regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1"},
+ {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7"},
+ {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca"},
+ {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1"},
+ {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5"},
+ {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"},
+ {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62"},
+ {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0"},
+ {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143"},
+ {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f"},
+ {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f"},
+ {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53"},
+ {file = "regex-2024.5.15-cp310-cp310-win32.whl", hash = "sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3"},
+ {file = "regex-2024.5.15-cp310-cp310-win_amd64.whl", hash = "sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145"},
+ {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a"},
+ {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656"},
+ {file = "regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f"},
+ {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35"},
+ {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d"},
+ {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb"},
+ {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f"},
+ {file = "regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40"},
+ {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649"},
+ {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c"},
+ {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890"},
+ {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d"},
+ {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68"},
+ {file = "regex-2024.5.15-cp311-cp311-win32.whl", hash = "sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa"},
+ {file = "regex-2024.5.15-cp311-cp311-win_amd64.whl", hash = "sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201"},
+ {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014"},
+ {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e"},
+ {file = "regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49"},
+ {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a"},
+ {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b"},
+ {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a"},
+ {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf"},
+ {file = "regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2"},
+ {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5"},
+ {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5"},
+ {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e"},
+ {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d"},
+ {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80"},
+ {file = "regex-2024.5.15-cp312-cp312-win32.whl", hash = "sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe"},
+ {file = "regex-2024.5.15-cp312-cp312-win_amd64.whl", hash = "sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2"},
+ {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835"},
+ {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850"},
+ {file = "regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9"},
+ {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb"},
+ {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704"},
+ {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3"},
+ {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2"},
+ {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa"},
+ {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed"},
+ {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced"},
+ {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384"},
+ {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f"},
+ {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67"},
+ {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741"},
+ {file = "regex-2024.5.15-cp38-cp38-win32.whl", hash = "sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9"},
+ {file = "regex-2024.5.15-cp38-cp38-win_amd64.whl", hash = "sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569"},
+ {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133"},
+ {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1"},
+ {file = "regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435"},
+ {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5"},
+ {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600"},
+ {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da"},
+ {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4"},
+ {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c"},
+ {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294"},
+ {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629"},
+ {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16"},
+ {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa"},
+ {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d"},
+ {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456"},
+ {file = "regex-2024.5.15-cp39-cp39-win32.whl", hash = "sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694"},
+ {file = "regex-2024.5.15-cp39-cp39-win_amd64.whl", hash = "sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388"},
+ {file = "regex-2024.5.15.tar.gz", hash = "sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c"},
+]
+
[[package]]
name = "requests"
version = "2.31.0"
@@ -2905,112 +3085,130 @@ files = [
{file = "rfc3987-1.3.8.tar.gz", hash = "sha256:d3c4d257a560d544e9826b38bc81db676890c79ab9d7ac92b39c7a253d5ca733"},
]
+[[package]]
+name = "rich"
+version = "13.7.1"
+description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
+optional = false
+python-versions = ">=3.7.0"
+files = [
+ {file = "rich-13.7.1-py3-none-any.whl", hash = "sha256:4edbae314f59eb482f54e9e30bf00d33350aaa94f4bfcd4e9e3110e64d0d7222"},
+ {file = "rich-13.7.1.tar.gz", hash = "sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432"},
+]
+
+[package.dependencies]
+markdown-it-py = ">=2.2.0"
+pygments = ">=2.13.0,<3.0.0"
+
+[package.extras]
+jupyter = ["ipywidgets (>=7.5.1,<9)"]
+
[[package]]
name = "rpds-py"
-version = "0.18.0"
+version = "0.18.1"
description = "Python bindings to Rust's persistent data structures (rpds)"
optional = false
python-versions = ">=3.8"
files = [
- {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"},
- {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"},
- {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"},
- {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"},
- {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"},
- {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"},
- {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"},
- {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"},
- {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"},
- {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"},
- {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"},
- {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"},
- {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"},
- {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"},
- {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"},
- {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"},
- {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"},
- {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"},
- {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"},
- {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"},
- {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"},
- {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"},
- {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"},
- {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"},
- {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"},
- {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"},
- {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"},
- {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"},
- {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"},
- {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"},
- {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"},
- {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"},
- {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"},
- {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"},
- {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"},
- {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"},
- {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"},
- {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"},
- {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"},
- {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"},
- {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"},
- {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"},
- {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"},
- {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"},
- {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"},
- {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"},
- {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"},
- {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"},
- {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"},
- {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"},
- {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"},
- {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"},
- {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"},
- {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"},
- {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"},
- {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"},
- {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"},
- {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"},
- {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"},
- {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"},
- {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"},
- {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"},
- {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"},
- {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"},
- {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"},
- {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"},
- {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"},
- {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"},
- {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"},
+ {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"},
+ {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"},
+ {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"},
+ {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"},
+ {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"},
+ {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"},
+ {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"},
+ {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"},
+ {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"},
+ {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"},
+ {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"},
+ {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"},
+ {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"},
+ {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"},
+ {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"},
+ {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"},
+ {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"},
+ {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"},
+ {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"},
+ {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"},
+ {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"},
+ {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"},
+ {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"},
+ {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"},
+ {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"},
+ {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"},
+ {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"},
+ {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"},
+ {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"},
+ {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"},
+ {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"},
+ {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"},
+ {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"},
+ {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"},
+ {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"},
+ {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"},
+ {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"},
+ {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"},
+ {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"},
+ {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"},
+ {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"},
+ {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"},
+ {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"},
+ {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"},
+ {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"},
+ {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"},
+ {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"},
+ {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"},
+ {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"},
+ {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"},
+ {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"},
+ {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"},
+ {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"},
+ {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"},
+ {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"},
+ {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"},
+ {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"},
+ {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"},
+ {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"},
+ {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"},
+ {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"},
+ {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"},
+ {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"},
+ {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"},
+ {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"},
+ {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"},
+ {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"},
+ {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"},
+ {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"},
]
[[package]]
@@ -3054,24 +3252,24 @@ python-versions = ">=3.6"
files = [
{file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"},
{file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"},
- {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"},
{file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"},
+ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"},
{file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"},
{file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"},
{file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"},
{file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"},
{file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"},
{file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"},
- {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"},
{file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"},
+ {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"},
{file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"},
{file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"},
{file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"},
{file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"},
{file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"},
{file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"},
- {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"},
{file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"},
+ {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"},
{file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"},
{file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"},
{file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"},
@@ -3079,7 +3277,7 @@ files = [
{file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"},
{file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"},
{file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"},
- {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"},
+ {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"},
{file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"},
{file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"},
{file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"},
@@ -3087,7 +3285,7 @@ files = [
{file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"},
{file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"},
{file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"},
- {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"},
+ {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"},
{file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"},
{file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"},
{file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"},
@@ -3095,7 +3293,7 @@ files = [
{file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"},
{file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"},
{file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"},
- {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"},
+ {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"},
{file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"},
{file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"},
{file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"},
@@ -3106,28 +3304,28 @@ files = [
[[package]]
name = "ruff"
-version = "0.3.4"
+version = "0.4.4"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
files = [
- {file = "ruff-0.3.4-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:60c870a7d46efcbc8385d27ec07fe534ac32f3b251e4fc44b3cbfd9e09609ef4"},
- {file = "ruff-0.3.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6fc14fa742e1d8f24910e1fff0bd5e26d395b0e0e04cc1b15c7c5e5fe5b4af91"},
- {file = "ruff-0.3.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3ee7880f653cc03749a3bfea720cf2a192e4f884925b0cf7eecce82f0ce5854"},
- {file = "ruff-0.3.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf133dd744f2470b347f602452a88e70dadfbe0fcfb5fd46e093d55da65f82f7"},
- {file = "ruff-0.3.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3f3860057590e810c7ffea75669bdc6927bfd91e29b4baa9258fd48b540a4365"},
- {file = "ruff-0.3.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:986f2377f7cf12efac1f515fc1a5b753c000ed1e0a6de96747cdf2da20a1b369"},
- {file = "ruff-0.3.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fd98e85869603e65f554fdc5cddf0712e352fe6e61d29d5a6fe087ec82b76c"},
- {file = "ruff-0.3.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64abeed785dad51801b423fa51840b1764b35d6c461ea8caef9cf9e5e5ab34d9"},
- {file = "ruff-0.3.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df52972138318bc7546d92348a1ee58449bc3f9eaf0db278906eb511889c4b50"},
- {file = "ruff-0.3.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:98e98300056445ba2cc27d0b325fd044dc17fcc38e4e4d2c7711585bd0a958ed"},
- {file = "ruff-0.3.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:519cf6a0ebed244dce1dc8aecd3dc99add7a2ee15bb68cf19588bb5bf58e0488"},
- {file = "ruff-0.3.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:bb0acfb921030d00070539c038cd24bb1df73a2981e9f55942514af8b17be94e"},
- {file = "ruff-0.3.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cf187a7e7098233d0d0c71175375c5162f880126c4c716fa28a8ac418dcf3378"},
- {file = "ruff-0.3.4-py3-none-win32.whl", hash = "sha256:af27ac187c0a331e8ef91d84bf1c3c6a5dea97e912a7560ac0cef25c526a4102"},
- {file = "ruff-0.3.4-py3-none-win_amd64.whl", hash = "sha256:de0d5069b165e5a32b3c6ffbb81c350b1e3d3483347196ffdf86dc0ef9e37dd6"},
- {file = "ruff-0.3.4-py3-none-win_arm64.whl", hash = "sha256:6810563cc08ad0096b57c717bd78aeac888a1bfd38654d9113cb3dc4d3f74232"},
- {file = "ruff-0.3.4.tar.gz", hash = "sha256:f0f4484c6541a99862b693e13a151435a279b271cff20e37101116a21e2a1ad1"},
+ {file = "ruff-0.4.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:29d44ef5bb6a08e235c8249294fa8d431adc1426bfda99ed493119e6f9ea1bf6"},
+ {file = "ruff-0.4.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c4efe62b5bbb24178c950732ddd40712b878a9b96b1d02b0ff0b08a090cbd891"},
+ {file = "ruff-0.4.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c8e2f1e8fc12d07ab521a9005d68a969e167b589cbcaee354cb61e9d9de9c15"},
+ {file = "ruff-0.4.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:60ed88b636a463214905c002fa3eaab19795679ed55529f91e488db3fe8976ab"},
+ {file = "ruff-0.4.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b90fc5e170fc71c712cc4d9ab0e24ea505c6a9e4ebf346787a67e691dfb72e85"},
+ {file = "ruff-0.4.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8e7e6ebc10ef16dcdc77fd5557ee60647512b400e4a60bdc4849468f076f6eef"},
+ {file = "ruff-0.4.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9ddb2c494fb79fc208cd15ffe08f32b7682519e067413dbaf5f4b01a6087bcd"},
+ {file = "ruff-0.4.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c51c928a14f9f0a871082603e25a1588059b7e08a920f2f9fa7157b5bf08cfe9"},
+ {file = "ruff-0.4.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5eb0a4bfd6400b7d07c09a7725e1a98c3b838be557fee229ac0f84d9aa49c36"},
+ {file = "ruff-0.4.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b1867ee9bf3acc21778dcb293db504692eda5f7a11a6e6cc40890182a9f9e595"},
+ {file = "ruff-0.4.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1aecced1269481ef2894cc495647392a34b0bf3e28ff53ed95a385b13aa45768"},
+ {file = "ruff-0.4.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9da73eb616b3241a307b837f32756dc20a0b07e2bcb694fec73699c93d04a69e"},
+ {file = "ruff-0.4.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:958b4ea5589706a81065e2a776237de2ecc3e763342e5cc8e02a4a4d8a5e6f95"},
+ {file = "ruff-0.4.4-py3-none-win32.whl", hash = "sha256:cb53473849f011bca6e754f2cdf47cafc9c4f4ff4570003a0dad0b9b6890e876"},
+ {file = "ruff-0.4.4-py3-none-win_amd64.whl", hash = "sha256:424e5b72597482543b684c11def82669cc6b395aa8cc69acc1858b5ef3e5daae"},
+ {file = "ruff-0.4.4-py3-none-win_arm64.whl", hash = "sha256:39df0537b47d3b597293edbb95baf54ff5b49589eb7ff41926d8243caa995ea6"},
+ {file = "ruff-0.4.4.tar.gz", hash = "sha256:f87ea42d5cdebdc6a69761a9d0bc83ae9b3b30d0ad78952005ba6568d6c022af"},
]
[[package]]
@@ -3149,61 +3347,45 @@ crt = ["botocore[crt] (>=1.33.2,<2.0a.0)"]
[[package]]
name = "scipy"
-version = "1.12.0"
+version = "1.13.0"
description = "Fundamental algorithms for scientific computing in Python"
optional = false
python-versions = ">=3.9"
files = [
- {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"},
- {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"},
- {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"},
- {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"},
- {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"},
- {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"},
- {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"},
- {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"},
- {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"},
- {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"},
- {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"},
- {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"},
- {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"},
- {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"},
- {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"},
- {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"},
- {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"},
- {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"},
- {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"},
- {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"},
- {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"},
- {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"},
- {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"},
- {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"},
- {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"},
-]
-
-[package.dependencies]
-numpy = ">=1.22.4,<1.29.0"
-
-[package.extras]
-dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"]
-doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"]
-test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"]
-
-[[package]]
-name = "setuptools"
-version = "69.2.0"
-description = "Easily download, build, install, upgrade, and uninstall Python packages"
-optional = false
-python-versions = ">=3.8"
-files = [
- {file = "setuptools-69.2.0-py3-none-any.whl", hash = "sha256:c21c49fb1042386df081cb5d86759792ab89efca84cf114889191cd09aacc80c"},
- {file = "setuptools-69.2.0.tar.gz", hash = "sha256:0ff4183f8f42cd8fa3acea16c45205521a4ef28f73c6391d8a25e92893134f2e"},
+ {file = "scipy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d"},
+ {file = "scipy-1.13.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e"},
+ {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922"},
+ {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4"},
+ {file = "scipy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9"},
+ {file = "scipy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd"},
+ {file = "scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa"},
+ {file = "scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5"},
+ {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7"},
+ {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d"},
+ {file = "scipy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c"},
+ {file = "scipy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6"},
+ {file = "scipy-1.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b"},
+ {file = "scipy-1.13.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551"},
+ {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a"},
+ {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42"},
+ {file = "scipy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820"},
+ {file = "scipy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21"},
+ {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"},
+ {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"},
+ {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"},
+ {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"},
+ {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"},
+ {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"},
+ {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"},
]
+[package.dependencies]
+numpy = ">=1.22.4,<2.3"
+
[package.extras]
-docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
-testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
-testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
+dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"]
+doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.12.0)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"]
+test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"]
[[package]]
name = "sh"
@@ -3217,13 +3399,13 @@ files = [
[[package]]
name = "shellingham"
-version = "1.4.0"
+version = "1.5.4"
description = "Tool to Detect Surrounding Shell"
optional = false
-python-versions = "!=3.0,!=3.1,!=3.2,!=3.3,>=2.6"
+python-versions = ">=3.7"
files = [
- {file = "shellingham-1.4.0-py2.py3-none-any.whl", hash = "sha256:536b67a0697f2e4af32ab176c00a50ac2899c5a05e0d8e2dadac8e58888283f9"},
- {file = "shellingham-1.4.0.tar.gz", hash = "sha256:4855c2458d6904829bd34c299f11fdeed7cfefbf8a2c522e4caea6cd76b3171e"},
+ {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"},
+ {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"},
]
[[package]]
@@ -3322,20 +3504,20 @@ pandas = ["pandas (>=1.3.5)"]
[[package]]
name = "sphinx"
-version = "7.2.6"
+version = "7.3.7"
description = "Python documentation generator"
optional = false
python-versions = ">=3.9"
files = [
- {file = "sphinx-7.2.6-py3-none-any.whl", hash = "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560"},
- {file = "sphinx-7.2.6.tar.gz", hash = "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5"},
+ {file = "sphinx-7.3.7-py3-none-any.whl", hash = "sha256:413f75440be4cacf328f580b4274ada4565fb2187d696a84970c23f77b64d8c3"},
+ {file = "sphinx-7.3.7.tar.gz", hash = "sha256:a4a7db75ed37531c05002d56ed6948d4c42f473a36f46e1382b0bd76ca9627bc"},
]
[package.dependencies]
-alabaster = ">=0.7,<0.8"
+alabaster = ">=0.7.14,<0.8.0"
babel = ">=2.9"
colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
-docutils = ">=0.18.1,<0.21"
+docutils = ">=0.18.1,<0.22"
imagesize = ">=1.3"
Jinja2 = ">=3.0"
packaging = ">=21.0"
@@ -3348,11 +3530,12 @@ sphinxcontrib-htmlhelp = ">=2.0.0"
sphinxcontrib-jsmath = "*"
sphinxcontrib-qthelp = "*"
sphinxcontrib-serializinghtml = ">=1.1.9"
+tomli = {version = ">=2", markers = "python_version < \"3.11\""}
[package.extras]
docs = ["sphinxcontrib-websupport"]
-lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"]
-test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools (>=67.0)"]
+lint = ["flake8 (>=3.5.0)", "importlib_metadata", "mypy (==1.9.0)", "pytest (>=6.0)", "ruff (==0.3.7)", "sphinx-lint", "tomli", "types-docutils", "types-requests"]
+test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=6.0)", "setuptools (>=67.0)"]
[[package]]
name = "sphinxcontrib-applehelp"
@@ -3529,13 +3712,13 @@ sqlcipher = ["sqlcipher3_binary"]
[[package]]
name = "sssom"
-version = "0.4.5"
+version = "0.4.9"
description = "Operations on SSSOM mapping tables"
optional = false
python-versions = "<4.0,>=3.8"
files = [
- {file = "sssom-0.4.5-py3-none-any.whl", hash = "sha256:8fd582082b9b5e748f05d1831362f1af9f700837a01f1d5fca09361519657d54"},
- {file = "sssom-0.4.5.tar.gz", hash = "sha256:753b3481083a6a62d39f11d6dc18e6038fc0edaa27929e0881e1c7fee8f8bcbe"},
+ {file = "sssom-0.4.9-py3-none-any.whl", hash = "sha256:54af580957947175dfcc96e7ce2323ea3b476eb58b6e7a2e95d8c3e10c6393f4"},
+ {file = "sssom-0.4.9.tar.gz", hash = "sha256:16674d58aa37ab82c1f6f69d317c0bdc6eedd59e8d809fcbc87f5f1e1eefdbf1"},
]
[package.dependencies]
@@ -3543,7 +3726,7 @@ click = ">=8.1.6"
curies = ">=0.7.3"
deprecation = ">=2.1.0,<3.0.0"
importlib-resources = ">=6.1.1,<7.0.0"
-linkml-runtime = ">=1.5.5"
+linkml-runtime = ">=1.7.5,<2.0.0"
networkx = {version = ">=3.1", extras = ["networkx"]}
pandas = ">1.0.3"
pansql = {version = ">=0.0.1", extras = ["pansql"]}
@@ -3551,23 +3734,22 @@ pyyaml = ">=6.0.1,<7.0.0"
rdflib = ">=6.0.0"
scipy = {version = "*", extras = ["scipy"]}
sparqlwrapper = ">=2.0.0"
-sssom-schema = ">=0.14.0"
+sssom-schema = ">=0.15.2,<0.16.0"
validators = ">=0.20.0"
[[package]]
name = "sssom-schema"
-version = "0.15.0"
+version = "0.15.2"
description = "SSSOM is a Simple Standard for Sharing Ontology Mappings."
optional = false
-python-versions = ">=3.7.6,<4.0.0"
+python-versions = "<4.0,>=3.8"
files = [
- {file = "sssom_schema-0.15.0-py3-none-any.whl", hash = "sha256:0ba81a0fe76d28a2c65d65a99e0cd17d8dd08274f9735776a70c8d2f3734e901"},
- {file = "sssom_schema-0.15.0.tar.gz", hash = "sha256:35d56ba6d0350b1e07df2789aebac9c5c70b0888bf88ec3c0592c89e9c13d228"},
+ {file = "sssom_schema-0.15.2-py3-none-any.whl", hash = "sha256:41112586160d5e57a7cfedab22dfd0c21d1e3e1a86805f7fe31918a9b664ca15"},
+ {file = "sssom_schema-0.15.2.tar.gz", hash = "sha256:c759ee8f9e4a7e5e8249b58198189b2e48e297ff31a918d4af64a89ed30938da"},
]
[package.dependencies]
linkml-runtime = "*"
-mkdocs-mermaid2-plugin = ">=0.6.0,<0.7.0"
[[package]]
name = "stringcase"
@@ -3603,13 +3785,13 @@ files = [
[[package]]
name = "tox"
-version = "4.14.2"
+version = "4.15.0"
description = "tox is a generic virtualenv management and test command line tool"
optional = false
python-versions = ">=3.8"
files = [
- {file = "tox-4.14.2-py3-none-any.whl", hash = "sha256:2900c4eb7b716af4a928a7fdc2ed248ad6575294ed7cfae2ea41203937422847"},
- {file = "tox-4.14.2.tar.gz", hash = "sha256:0defb44f6dafd911b61788325741cc6b2e12ea71f987ac025ad4d649f1f1a104"},
+ {file = "tox-4.15.0-py3-none-any.whl", hash = "sha256:300055f335d855b2ab1b12c5802de7f62a36d4fd53f30bd2835f6a201dda46ea"},
+ {file = "tox-4.15.0.tar.gz", hash = "sha256:7a0beeef166fbe566f54f795b4906c31b428eddafc0102ac00d20998dd1933f6"},
]
[package.dependencies]
@@ -3630,13 +3812,13 @@ testing = ["build[virtualenv] (>=1.0.3)", "covdefaults (>=2.3)", "detect-test-po
[[package]]
name = "tqdm"
-version = "4.66.2"
+version = "4.66.4"
description = "Fast, Extensible Progress Meter"
optional = false
python-versions = ">=3.7"
files = [
- {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"},
- {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"},
+ {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"},
+ {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"},
]
[package.dependencies]
@@ -3650,39 +3832,20 @@ telegram = ["requests"]
[[package]]
name = "typer"
-version = "0.7.0"
+version = "0.12.3"
description = "Typer, build great CLIs. Easy to code. Based on Python type hints."
optional = false
-python-versions = ">=3.6"
-files = [
- {file = "typer-0.7.0-py3-none-any.whl", hash = "sha256:b5e704f4e48ec263de1c0b3a2387cd405a13767d2f907f44c1a08cbad96f606d"},
- {file = "typer-0.7.0.tar.gz", hash = "sha256:ff797846578a9f2a201b53442aedeb543319466870fbe1c701eab66dd7681165"},
-]
-
-[package.dependencies]
-click = ">=7.1.1,<9.0.0"
-
-[package.extras]
-all = ["colorama (>=0.4.3,<0.5.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"]
-dev = ["autoflake (>=1.3.1,<2.0.0)", "flake8 (>=3.8.3,<4.0.0)", "pre-commit (>=2.17.0,<3.0.0)"]
-doc = ["cairosvg (>=2.5.2,<3.0.0)", "mdx-include (>=1.4.1,<2.0.0)", "mkdocs (>=1.1.2,<2.0.0)", "mkdocs-material (>=8.1.4,<9.0.0)", "pillow (>=9.3.0,<10.0.0)"]
-test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6.0.0)", "mypy (==0.910)", "pytest (>=4.4.0,<8.0.0)", "pytest-cov (>=2.10.0,<5.0.0)", "pytest-sugar (>=0.9.4,<0.10.0)", "pytest-xdist (>=1.32.0,<4.0.0)", "rich (>=10.11.0,<13.0.0)", "shellingham (>=1.3.0,<2.0.0)"]
-
-[[package]]
-name = "typer-cli"
-version = "0.0.13"
-description = "Run Typer scripts with completion, without having to create a package, using Typer CLI."
-optional = false
python-versions = ">=3.7"
files = [
- {file = "typer_cli-0.0.13-py3-none-any.whl", hash = "sha256:5ae0f99dce8f8f9669137a2c98eb42485cd4412e0ec225c8eb29ce8ac3378731"},
- {file = "typer_cli-0.0.13.tar.gz", hash = "sha256:f5b85764e56fb3fe835ed008ad5bc7db4961f7bcce1f1c1698ac46b6c5d9b86f"},
+ {file = "typer-0.12.3-py3-none-any.whl", hash = "sha256:070d7ca53f785acbccba8e7d28b08dcd88f79f1fbda035ade0aecec71ca5c914"},
+ {file = "typer-0.12.3.tar.gz", hash = "sha256:49e73131481d804288ef62598d97a1ceef3058905aa536a1134f90891ba35482"},
]
[package.dependencies]
-colorama = ">=0.4.3,<=0.5.0"
-shellingham = ">=1.3.2,<=1.4.0"
-typer = ">=0.4.0,<=0.7.0"
+click = ">=8.0.0"
+rich = ">=10.11.0"
+shellingham = ">=1.3.0"
+typing-extensions = ">=3.7.4.3"
[[package]]
name = "types-python-dateutil"
@@ -3697,13 +3860,13 @@ files = [
[[package]]
name = "typing-extensions"
-version = "4.10.0"
+version = "4.11.0"
description = "Backported and Experimental Type Hints for Python 3.8+"
optional = false
python-versions = ">=3.8"
files = [
- {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"},
- {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"},
+ {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"},
+ {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"},
]
[[package]]
@@ -3766,13 +3929,13 @@ test = ["flake8 (>=2.4.0)", "isort (>=4.2.2)", "pytest (>=2.2.3)"]
[[package]]
name = "virtualenv"
-version = "20.25.1"
+version = "20.26.2"
description = "Virtual Python Environment builder"
optional = false
python-versions = ">=3.7"
files = [
- {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"},
- {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"},
+ {file = "virtualenv-20.26.2-py3-none-any.whl", hash = "sha256:a624db5e94f01ad993d476b9ee5346fdf7b9de43ccaee0e0197012dc838a0e9b"},
+ {file = "virtualenv-20.26.2.tar.gz", hash = "sha256:82bf0f4eebbb78d36ddaee0283d43fe5736b53880b8a8cdcd37390a07ac3741c"},
]
[package.dependencies]
@@ -3781,7 +3944,7 @@ filelock = ">=3.12.2,<4"
platformdirs = ">=3.9.1,<5"
[package.extras]
-docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
+docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"]
test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"]
[[package]]
@@ -3842,17 +4005,17 @@ tests = ["pytest", "pytest-cov"]
[[package]]
name = "websocket-client"
-version = "1.7.0"
+version = "1.8.0"
description = "WebSocket client for Python with low level API options"
optional = false
python-versions = ">=3.8"
files = [
- {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"},
- {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"},
+ {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"},
+ {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"},
]
[package.extras]
-docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"]
+docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"]
optional = ["python-socks", "wsaccel"]
test = ["websockets"]
@@ -3969,20 +4132,20 @@ dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"]
[[package]]
name = "zipp"
-version = "3.18.1"
+version = "3.18.2"
description = "Backport of pathlib-compatible object wrapper for zip files"
optional = false
python-versions = ">=3.8"
files = [
- {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"},
- {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"},
+ {file = "zipp-3.18.2-py3-none-any.whl", hash = "sha256:dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e"},
+ {file = "zipp-3.18.2.tar.gz", hash = "sha256:6278d9ddbcfb1f1089a88fde84481528b07b0e10474e09dcfe53dad4069fa059"},
]
[package.extras]
docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
-testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"]
+testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"]
[metadata]
lock-version = "2.0"
-python-versions = ">=3.10,<3.12"
-content-hash = "124411a2f853848695af9adf07d18c32ea666412954c689edf45894400daa226"
+python-versions = "^3.10"
+content-hash = "00afbdf0968eb1f108d7c3f61fb0c8509f5e4914e9d89893775d2c99e3baee96"
diff --git a/pyproject.toml b/pyproject.toml
index fccf2ab6..007ab6bb 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -15,18 +15,16 @@ packages = [
]
[tool.poetry.dependencies]
-python = ">=3.10,<3.12"
-# biolink-model = "^4.2.0"
-# When 4.2.0 (or any release after 4.1.6) is released, we can remove the git dependency
-biolink-model = { git = "https://github.com/biolink/biolink-model", branch = "master" }
+python = "^3.10"
+biolink-model = "^4.2.0"
bmt = "^1.0.15"
cat-merge = "0.2.1"
closurizer = "0.5.1"
kghub-downloader = "^0.3.2"
-kgx = { git = "https://github.com/biolink/kgx", branch = "master" } # ">=2.1"
-koza = ">=0.5.2"
-linkml = "1.6.3"
-linkml-solr = "0.1.5" # "^0.1.3"
+kgx = ">=2.4.0"
+koza = ">=0.6.0"
+linkml = "^1.7.8"
+linkml-solr = ">=0.1.5"
multi-indexer = "0.0.5"
# Other Dependencies
botocore = "^1.31"
@@ -34,18 +32,19 @@ importlib-metadata = ">=4.6.1"
loguru = "*"
pydantic = "^2.5"
sh = "^1.14.3"
-typer = "^0.7"
-typer-cli = "^0.0.13"
+typer = "^0.12"
yamllint = "^1.35.1"
-linkml-runtime = "1.6.3"
+linkml-runtime = "^1.7.5"
+# Remove this once cat-merge fixes its pandas dependency
+pandas = "2.0.3"
[tool.poetry.group.dev]
optional = true
[tool.poetry.group.dev.dependencies]
-pytest = "^7.1.1"
-mkdocs = "^1.3.0"
-mkdocs-material = "^8.2.9"
+pytest = "^8.1.1"
+mkdocs = "^1.4"
+mkdocs-material = ">=9.5"
black = "^24.3"
ruff = "*"
@@ -57,11 +56,14 @@ requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.black]
-line_length = 120
+line-length = 120
skip-string-normalization = true
[tool.ruff]
line-length = 120
ignore = [
"F541", # f-strings with no placeholders
-]
\ No newline at end of file
+
+]
+[tool.ruff.lint.per-file-ignores]
+"tests/**.py" = ["F811"] # redefinition of unused imports (mock_koza)
diff --git a/src/monarch_ingest/__init__.py b/src/monarch_ingest/__init__.py
index 32995380..a75eb4da 100644
--- a/src/monarch_ingest/__init__.py
+++ b/src/monarch_ingest/__init__.py
@@ -1,2 +1,3 @@
from importlib import metadata
-__version__ = metadata.version("monarch_ingest")
\ No newline at end of file
+
+__version__ = metadata.version("monarch_ingest")
diff --git a/src/monarch_ingest/cli_utils.py b/src/monarch_ingest/cli_utils.py
index eea60384..320722c4 100644
--- a/src/monarch_ingest/cli_utils.py
+++ b/src/monarch_ingest/cli_utils.py
@@ -1,7 +1,6 @@
import csv
import gc
import os
-import pkgutil
import sys
import tarfile
import yaml
@@ -18,7 +17,7 @@
from cat_merge.merge import merge
from closurizer.closurizer import add_closure
from kgx.cli.cli_utils import transform as kgx_transform
-from koza.cli_runner import transform_source
+from koza.cli_utils import transform_source
from koza.model.config.source_config import OutputFormat
from linkml_runtime.utils.formatutils import camelcase
@@ -192,7 +191,7 @@ def transform_phenio(
"primary_knowledge_source",
"aggregator_knowledge_source",
"knowledge_level",
- "agent_type"
+ "agent_type",
]
),
axis=1,
@@ -524,15 +523,9 @@ def do_release(dir: str = OUTPUT_DIR, kghub: bool = False):
)
# index files on s3 after upload
sh.multi_indexer(
- *f"-v --prefix https://kghub.io/kg-monarch/ -b kg-hub-public-data -r kg-monarch -x".split(
- " "
- )
- )
- sh.gsutil(
- *f"-q -m cp -a public-read ./index.html s3://kg-hub-public-data/kg-monarch".split(
- " "
- )
+ *f"-v --prefix https://kghub.io/kg-monarch/ -b kg-hub-public-data -r kg-monarch -x".split(" ")
)
+ sh.gsutil(*f"-q -m cp -a public-read ./index.html s3://kg-hub-public-data/kg-monarch".split(" "))
logger.debug("Cleaning up files...")
sh.rm(f"output/{release_ver}")
diff --git a/src/monarch_ingest/ingests/alliance/gene.py b/src/monarch_ingest/ingests/alliance/gene.py
index 62b9d107..2bab63fa 100644
--- a/src/monarch_ingest/ingests/alliance/gene.py
+++ b/src/monarch_ingest/ingests/alliance/gene.py
@@ -1,4 +1,4 @@
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from source_translation import source_map
from biolink_model.datamodel.pydanticmodel_v2 import Gene
@@ -48,21 +48,18 @@
id=gene_id,
symbol=row["symbol"],
name=row["symbol"],
- full_name=row["name"].replace("\r",""), # Replacement to remove stray carriage returns in XenBase files
+ full_name=row["name"].replace("\r", ""), # Replacement to remove stray carriage returns in XenBase files
# No place in the schema for gene type (SO term) right now
# type=row["soTermId"],
in_taxon=[in_taxon],
in_taxon_label=in_taxon_label,
- provided_by=[source]
+ provided_by=[source],
)
if row["basicGeneticEntity"]["crossReferences"]:
- gene.xref = [
- koza_app.curie_cleaner.clean(xref["id"])
- for xref in row["basicGeneticEntity"]["crossReferences"]
- ]
+ gene.xref = [koza_app.curie_cleaner.clean(xref["id"]) for xref in row["basicGeneticEntity"]["crossReferences"]]
if "synonyms" in row["basicGeneticEntity"].keys():
# more handling for errant carriage returns
- gene.synonym = [synonym.replace("\r","") for synonym in row["basicGeneticEntity"]["synonyms"] ]
+ gene.synonym = [synonym.replace("\r", "") for synonym in row["basicGeneticEntity"]["synonyms"]]
koza_app.write(gene)
diff --git a/src/monarch_ingest/ingests/alliance/gene_to_expression.py b/src/monarch_ingest/ingests/alliance/gene_to_expression.py
index cb6d0dd0..137f5ebf 100644
--- a/src/monarch_ingest/ingests/alliance/gene_to_expression.py
+++ b/src/monarch_ingest/ingests/alliance/gene_to_expression.py
@@ -1,7 +1,6 @@
-
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from source_translation import source_map
from biolink_model.datamodel.pydanticmodel_v2 import GeneToExpressionSiteAssociation, KnowledgeLevelEnum, AgentTypeEnum
@@ -33,22 +32,19 @@
# but may have an UBERON term that we can use
# stage_term_id = get_data(row, "whenExpressed.stageUberonSlimTerm.uberonTerm")
-
-
publication_ids = [get_data(row, "evidence.publicationId")]
xref = get_data(row, "crossReference.id")
if xref:
publication_ids.append(xref)
-
# Our current ingest policy is to first use a reported Anatomical structure term...
if anatomical_entity_id:
koza_app.write(
GeneToExpressionSiteAssociation(
id="uuid:" + str(uuid.uuid1()),
subject=gene_id,
- predicate='biolink:expressed_in',
+ predicate="biolink:expressed_in",
object=anatomical_entity_id,
stage_qualifier=stage_term_id,
qualifiers=([get_data(row, "assay")] if get_data(row, "assay") else None),
@@ -56,7 +52,7 @@
aggregator_knowledge_source=["infores:monarchinitiative", "infores:alliancegenome"],
primary_knowledge_source=source,
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
)
@@ -67,7 +63,7 @@
GeneToExpressionSiteAssociation(
id="uuid:" + str(uuid.uuid1()),
subject=gene_id,
- predicate='biolink:expressed_in',
+ predicate="biolink:expressed_in",
object=cellular_component_id,
stage_qualifier=stage_term_id,
qualifiers=([get_data(row, "assay")] if get_data(row, "assay") else None),
@@ -75,7 +71,7 @@
aggregator_knowledge_source=["infores:monarchinitiative", "infores:alliancegenome"],
primary_knowledge_source=source,
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
)
else:
@@ -85,6 +81,4 @@
)
except Exception as exc:
- logger.error(
- f"Alliance gene expression ingest parsing exception for data row:\n\t'{str(row)}'\n{str(exc)}"
- )
+ logger.error(f"Alliance gene expression ingest parsing exception for data row:\n\t'{str(row)}'\n{str(exc)}")
diff --git a/src/monarch_ingest/ingests/alliance/gene_to_phenotype.py b/src/monarch_ingest/ingests/alliance/gene_to_phenotype.py
index 5f69dba7..ee6a71c2 100644
--- a/src/monarch_ingest/ingests/alliance/gene_to_phenotype.py
+++ b/src/monarch_ingest/ingests/alliance/gene_to_phenotype.py
@@ -2,10 +2,14 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from source_translation import source_map
-from biolink_model.datamodel.pydanticmodel_v2 import GeneToPhenotypicFeatureAssociation, KnowledgeLevelEnum, AgentTypeEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ GeneToPhenotypicFeatureAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
from loguru import logger
@@ -42,9 +46,8 @@
publications=[row["evidence"]["publicationId"]],
aggregator_knowledge_source=["infores:monarchinitiative", "infores:alliancegenome"],
primary_knowledge_source=source,
- knowledge_level = KnowledgeLevelEnum.knowledge_assertion,
- agent_type = AgentTypeEnum.manual_agent
-
+ knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
+ agent_type=AgentTypeEnum.manual_agent,
)
if "conditionRelations" in row.keys() and row["conditionRelations"] is not None:
diff --git a/src/monarch_ingest/ingests/alliance/publication.py b/src/monarch_ingest/ingests/alliance/publication.py
index 15554230..eadadeae 100644
--- a/src/monarch_ingest/ingests/alliance/publication.py
+++ b/src/monarch_ingest/ingests/alliance/publication.py
@@ -1,4 +1,4 @@
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from dateutil.parser import parse, ParserError
from biolink_model.datamodel.pydanticmodel_v2 import Publication
@@ -9,9 +9,7 @@
while (row := koza_app.get_row()) is not None:
# TODO: remove DOI exclusion once curie regex can handle them
- xrefs = [
- xref["id"] for xref in row["crossReferences"] if not xref["id"].startswith("DOI:")
- ]
+ xrefs = [xref["id"] for xref in row["crossReferences"] if not xref["id"].startswith("DOI:")]
# Parse creation date for different time formats
creation_date = row["datePublished"]
@@ -21,10 +19,12 @@
creation_date = None
source: str
- if 'MODReferenceTypes' in row and \
- len(row['MODReferenceTypes']) > 0 and \
- 'source' in row['MODReferenceTypes'][0] and \
- row['MODReferenceTypes'][0]['source'] in source_map:
+ if (
+ 'MODReferenceTypes' in row
+ and len(row['MODReferenceTypes']) > 0
+ and 'source' in row['MODReferenceTypes'][0]
+ and row['MODReferenceTypes'][0]['source'] in source_map
+ ):
source = source_map[row['MODReferenceTypes'][0]['source']]
else: # default source
source = "infores:alliancegenome"
@@ -36,7 +36,7 @@
xref=xrefs,
type=[koza_app.translation_table.resolve_term("publication")],
creation_date=creation_date,
- provided_by=[source]
+ provided_by=[source],
)
if "authors" in row.keys():
diff --git a/src/monarch_ingest/ingests/bgee/gene_to_expression.py b/src/monarch_ingest/ingests/bgee/gene_to_expression.py
index e049a62f..913f5366 100644
--- a/src/monarch_ingest/ingests/bgee/gene_to_expression.py
+++ b/src/monarch_ingest/ingests/bgee/gene_to_expression.py
@@ -1,4 +1,4 @@
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from monarch_ingest.ingests.bgee.gene_to_expression_utils import process_koza_source
diff --git a/src/monarch_ingest/ingests/bgee/gene_to_expression_utils.py b/src/monarch_ingest/ingests/bgee/gene_to_expression_utils.py
index a864d78c..36a541a8 100644
--- a/src/monarch_ingest/ingests/bgee/gene_to_expression_utils.py
+++ b/src/monarch_ingest/ingests/bgee/gene_to_expression_utils.py
@@ -8,17 +8,17 @@
def filter_group_by_rank(rows: List, col: str, largest_n: int = 0, smallest_n: int = 0) -> List[Dict]:
"""Function to filter a group of Koza rows by values largest or smallest values in column:
- Get the top and/or bottom n rows ranked based on column:
+ Get the top and/or bottom n rows ranked based on column:
- Args:
- rows (List): The Koza object to read rows from.
- col (str): The column to perform ranking and filtering.
- largest_n (int): The number of rows to return from the largest ranking.
- smallest_n (int): The number of rows to return from the smallest ranking.
+ Args:
+ rows (List): The Koza object to read rows from.
+ col (str): The column to perform ranking and filtering.
+ largest_n (int): The number of rows to return from the largest ranking.
+ smallest_n (int): The number of rows to return from the smallest ranking.
- Returns:
- List[Dict]: Returns a list of n rows in Koza dict format sorted by rank in column.
+ Returns:
+ List[Dict]: Returns a list of n rows in Koza dict format sorted by rank in column.
"""
df = pd.DataFrame(rows)
largest_df = df.nlargest(largest_n, col, keep="first")
@@ -29,11 +29,11 @@ def filter_group_by_rank(rows: List, col: str, largest_n: int = 0, smallest_n: i
def write_group(rows: List, koza_app: KozaApp):
"""Function to write a group of Koza rows to KozaApp object output:
- Write list of rows in Koza format to KozaApp output:
+ Write list of rows in Koza format to KozaApp output:
- Args:
- rows (List): A list of rows to output to KozaApp.
- koza_app (KozaApp): The KozaApp to use for output of rows.
+ Args:
+ rows (List): A list of rows to output to KozaApp.
+ koza_app (KozaApp): The KozaApp to use for output of rows.
"""
for row in rows:
association = GeneToExpressionSiteAssociation(
@@ -44,7 +44,8 @@ def write_group(rows: List, koza_app: KozaApp):
primary_knowledge_source="infores:bgee",
aggregator_knowledge_source=["infores:monarchinitiative"],
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.not_provided)
+ agent_type=AgentTypeEnum.not_provided,
+ )
koza_app.write(association)
@@ -52,15 +53,15 @@ def write_group(rows: List, koza_app: KozaApp):
def get_row_group(koza_app: KozaApp, col: str = 'Gene ID') -> Union[List, None]:
"""Function to read a group of Koza rows from a KozaApp:
- Get a group of rows from KozaApp grouped on column:
+ Get a group of rows from KozaApp grouped on column:
- Args:
- koza_app (KozaApp): The Koza object to read rows from.
- col (str): The column to group rows based on.
+ Args:
+ koza_app (KozaApp): The Koza object to read rows from.
+ col (str): The column to group rows based on.
- Returns:
- List/None: Returns a list of rows in Koza dict format grouped by column.
+ Returns:
+ List/None: Returns a list of rows in Koza dict format grouped by column.
"""
if not hasattr(koza_app, 'previous_row'):
koza_app.previous_row = koza_app.get_row()
@@ -81,11 +82,11 @@ def get_row_group(koza_app: KozaApp, col: str = 'Gene ID') -> Union[List, None]:
def process_koza_source(koza_app: KozaApp):
"""Function to filter a group of Koza rows by values largest or smallest values in column:
- Get the top and/or bottom n rows ranked based on column:
+ Get the top and/or bottom n rows ranked based on column:
- Args:
- koza_app (KozaApp): The Koza object to process for ingest.
+ Args:
+ koza_app (KozaApp): The Koza object to process for ingest.
"""
- while(row_group := get_row_group(koza_app)) is not None:
+ while (row_group := get_row_group(koza_app)) is not None:
rank_filtered_rows = filter_group_by_rank(row_group, col='Expression rank', smallest_n=10)
write_group(rank_filtered_rows, koza_app)
diff --git a/src/monarch_ingest/ingests/biogrid/biogrid.py b/src/monarch_ingest/ingests/biogrid/biogrid.py
index 7137e9fa..914921ab 100644
--- a/src/monarch_ingest/ingests/biogrid/biogrid.py
+++ b/src/monarch_ingest/ingests/biogrid/biogrid.py
@@ -1,5 +1,5 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import PairwiseGeneToGeneInteraction, KnowledgeLevelEnum, AgentTypeEnum
from biogrid_util import get_gene_id, get_evidence, get_publication_ids
@@ -15,8 +15,12 @@
publications = get_publication_ids(row['Publication Identifiers'])
# Only keep interactions using NCBIGene or UniProtKB identifiers, could also filter on taxid
- if gid_a.startswith("NCBIGene:") or gid_a.startswith("UniProtKB:") \
- and gid_b.startswith("NCBIGene:") or gid_b.startswith("UniProtKB:"):
+ if (
+ gid_a.startswith("NCBIGene:")
+ or gid_a.startswith("UniProtKB:")
+ and gid_b.startswith("NCBIGene:")
+ or gid_b.startswith("UniProtKB:")
+ ):
association = PairwiseGeneToGeneInteraction(
id="uuid:" + str(uuid.uuid1()),
subject=gid_a,
@@ -27,7 +31,7 @@
primary_knowledge_source="infores:biogrid",
aggregator_knowledge_source=["infores:monarchinitiative"],
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.not_provided
+ agent_type=AgentTypeEnum.not_provided,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/biogrid/biogrid_util.py b/src/monarch_ingest/ingests/biogrid/biogrid_util.py
index 1c670cd2..34024482 100644
--- a/src/monarch_ingest/ingests/biogrid/biogrid_util.py
+++ b/src/monarch_ingest/ingests/biogrid/biogrid_util.py
@@ -1,7 +1,7 @@
"""
Some functions to assist parsing of BioGRID fields.
"""
-from sys import stderr
+
from typing import List, Optional
from loguru import logger
@@ -14,9 +14,7 @@ def get_gene_id(raw_id: str) -> str:
:param raw_id: str, raw BioGRID input string (a pseudo-CURIE)
:return:
"""
- gid = (raw_id
- .replace("entrez gene/locuslink:", "NCBIGene:")
- .replace("uniprot/swiss-prot:", "UniProtKB:"))
+ gid = raw_id.replace("entrez gene/locuslink:", "NCBIGene:").replace("uniprot/swiss-prot:", "UniProtKB:")
return gid
@@ -27,14 +25,14 @@ def get_gene_id(raw_id: str) -> str:
"two hybrid": "ECO:0000024",
"affinity chromatography technology": "ECO:0000079",
"genetic interference": "ECO:0000011",
- "pull down": "ECO:0000025", # not totally sure about this one
+ "pull down": "ECO:0000025", # not totally sure about this one
"enzymatic study": "ECO:0000005",
"x-ray crystallography": "ECO:0001823",
"far western blotting": "ECO:0000076",
"fluorescent resonance energy transfer": "ECO:0001048",
- "imaging technique": "ECO:0000324", # not totally sure about this one
+ "imaging technique": "ECO:0000324", # not totally sure about this one
"protein complementation assay": "ECO:0006256", # not totally sure about this one
- "biochemical": "ECO:0000172" # not totally sure about this one
+ "biochemical": "ECO:0000172", # not totally sure about this one
}
@@ -54,11 +52,13 @@ def get_evidence(methods: str) -> Optional[List[str]]:
# databaseName:identifier(methodName)
method = method.rstrip(")").split('(')[-1]
if method not in EVIDENCE_CODE_MAPPINGS.keys():
- err_msg = f"Unknown interaction detection method '{method}'. " +\
- "Assigning default code ECO:0000006 == 'experimental evidence', the ECO root."
+ err_msg = (
+ f"Unknown interaction detection method '{method}'. "
+ + "Assigning default code ECO:0000006 == 'experimental evidence', the ECO root."
+ )
logger.warning(err_msg)
EVIDENCE_CODE_MAPPINGS[method] = "ECO:0000006"
-
+
evidence_codes.append(EVIDENCE_CODE_MAPPINGS[method])
return evidence_codes if evidence_codes else None
diff --git a/src/monarch_ingest/ingests/ctd/chemical_to_disease.py b/src/monarch_ingest/ingests/ctd/chemical_to_disease.py
index ef4821a4..a053bd0a 100644
--- a/src/monarch_ingest/ingests/ctd/chemical_to_disease.py
+++ b/src/monarch_ingest/ingests/ctd/chemical_to_disease.py
@@ -1,9 +1,12 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import ChemicalToDiseaseOrPhenotypicFeatureAssociation, \
- KnowledgeLevelEnum, AgentTypeEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ ChemicalToDiseaseOrPhenotypicFeatureAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
from monarch_ingest.constants import BIOLINK_TREATS_OR_APPLIED_OR_STUDIED_TO_TREAT
koza_app = get_koza_app("ctd_chemical_to_disease")
@@ -28,7 +31,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:ctd",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/dictybase/gene.py b/src/monarch_ingest/ingests/dictybase/gene.py
index 16549bc7..a52b2bf9 100644
--- a/src/monarch_ingest/ingests/dictybase/gene.py
+++ b/src/monarch_ingest/ingests/dictybase/gene.py
@@ -1,4 +1,4 @@
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import Gene
@@ -9,12 +9,11 @@
in_taxon_label = taxon_labels[in_taxon]['label'] if in_taxon in taxon_labels else "Dictyostelium discoideum"
while (row := koza_app.get_row()) is not None:
-
+
synonyms = []
if row['Synonyms'] is not None:
synonyms = row['Synonyms'].split(", ")
-
gene = Gene(
id='dictyBase:' + row['GENE ID'],
symbol=row['Gene Name'],
@@ -23,7 +22,7 @@
synonym=synonyms,
in_taxon=[in_taxon],
in_taxon_label=in_taxon_label,
- provided_by=["infores:dictybase"]
+ provided_by=["infores:dictybase"],
)
koza_app.write(gene)
diff --git a/src/monarch_ingest/ingests/dictybase/gene_to_phenotype.py b/src/monarch_ingest/ingests/dictybase/gene_to_phenotype.py
index b4036947..6f0d7f05 100644
--- a/src/monarch_ingest/ingests/dictybase/gene_to_phenotype.py
+++ b/src/monarch_ingest/ingests/dictybase/gene_to_phenotype.py
@@ -1,11 +1,13 @@
import uuid
-from typing import Optional, Tuple
-from koza.cli_runner import get_koza_app
-from monarch_ingest.ingests.dictybase.utils import parse_gene_id, parse_phenotypes
+from koza.cli_utils import get_koza_app
+from monarch_ingest.ingests.dictybase.utils import parse_phenotypes
-from biolink_model.datamodel.pydanticmodel_v2 import GeneToPhenotypicFeatureAssociation, KnowledgeLevelEnum, \
- AgentTypeEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ GeneToPhenotypicFeatureAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
koza_app = get_koza_app("dictybase_gene_to_phenotype")
@@ -32,7 +34,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:dictybase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/dictybase/utils.py b/src/monarch_ingest/ingests/dictybase/utils.py
index 13f00b6c..89ca872c 100644
--- a/src/monarch_ingest/ingests/dictybase/utils.py
+++ b/src/monarch_ingest/ingests/dictybase/utils.py
@@ -1,6 +1,7 @@
"""
A few Dictybase parse utility functions
"""
+
from typing import Optional, Tuple, Dict, List
diff --git a/src/monarch_ingest/ingests/flybase/publication_to_gene.py b/src/monarch_ingest/ingests/flybase/publication_to_gene.py
index 932f81ee..35209c4b 100644
--- a/src/monarch_ingest/ingests/flybase/publication_to_gene.py
+++ b/src/monarch_ingest/ingests/flybase/publication_to_gene.py
@@ -1,9 +1,12 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import InformationContentEntityToNamedThingAssociation, AgentTypeEnum, \
- KnowledgeLevelEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ InformationContentEntityToNamedThingAssociation,
+ AgentTypeEnum,
+ KnowledgeLevelEnum,
+)
koza_app = get_koza_app("flybase_publication_to_gene")
@@ -26,7 +29,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:flybase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/go/annotation.py b/src/monarch_ingest/ingests/go/annotation.py
index 3c85ca91..b73bbb02 100644
--- a/src/monarch_ingest/ingests/go/annotation.py
+++ b/src/monarch_ingest/ingests/go/annotation.py
@@ -4,16 +4,17 @@
Gene to GO term Associations
(to MolecularActivity, BiologicalProcess and CellularComponent)
"""
+
import uuid
from biolink_model.datamodel.pydanticmodel_v2 import KnowledgeLevelEnum, AgentTypeEnum
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from monarch_ingest.ingests.go.annotation_utils import (
parse_identifiers,
get_biolink_classes,
lookup_predicate,
- get_infores
+ get_infores,
)
from loguru import logger
@@ -34,9 +35,7 @@
# 'C' == cellular_component - child of GO:0005575
go_aspect: str = row['Aspect']
if not (go_aspect and go_aspect.upper() in ["F", "P", "C"]):
- logger.warning(
- f"GAF Aspect '{str(go_aspect)}' is empty or unrecognized? Skipping record"
- )
+ logger.warning(f"GAF Aspect '{str(go_aspect)}' is empty or unrecognized? Skipping record")
else:
# Decipher the GO Evidence Code
@@ -47,9 +46,7 @@
eco_term = koza_app.translation_table.local_table[evidence_code]
if not eco_term:
- logger.warning(
- f"GAF Evidence Code '{str(evidence_code)}' is empty or unrecognized? Tagging as 'ND'"
- )
+ logger.warning(f"GAF Evidence Code '{str(evidence_code)}' is empty or unrecognized? Tagging as 'ND'")
eco_term = "ECO:0000307"
# Association predicate is normally NOT negated
@@ -85,9 +82,7 @@
else:
# If qualifier missing, assign a default predicate
# a.k.a. predicate based on specified GO Aspect type
- logger.error(
- "GAF record is missing its qualifier...assigning default qualifier as per GO term Aspect"
- )
+ logger.error("GAF record is missing its qualifier...assigning default qualifier as per GO term Aspect")
if go_aspect == "F":
predicate = "enables"
elif go_aspect == "P":
@@ -96,16 +91,12 @@
predicate = "located_in"
if not predicate:
- logger.error(
- f"GAF Qualifier '{str(qualifier)}' is unrecognized? Skipping the record..."
- )
+ logger.error(f"GAF Qualifier '{str(qualifier)}' is unrecognized? Skipping the record...")
else:
# Retrieve the GO aspect related NamedThing category-associated 'node' and Association 'edge' classes
- go_concept_node_class, gene_go_term_association_class = get_biolink_classes(
- go_aspect
- )
+ go_concept_node_class, gene_go_term_association_class = get_biolink_classes(go_aspect)
# actual primary knowledge source of the GOA knowledge statement
assigned_by = get_infores(row['Assigned_By'])
@@ -122,7 +113,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source=assigned_by,
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
# Write the captured Association out
diff --git a/src/monarch_ingest/ingests/go/annotation_utils.py b/src/monarch_ingest/ingests/go/annotation_utils.py
index f4b8a504..fd9d3c9e 100644
--- a/src/monarch_ingest/ingests/go/annotation_utils.py
+++ b/src/monarch_ingest/ingests/go/annotation_utils.py
@@ -1,6 +1,7 @@
"""
Some Gene Ontology Annotation ingest utility functions.
"""
+
from re import sub, IGNORECASE, compile, Pattern
from typing import Optional, Tuple, List, Dict
@@ -144,6 +145,7 @@ def get_biolink_classes(go_aspect: str) -> Tuple:
"""
return _biolink_class_by_go_aspect[go_aspect.upper()]
+
#
# See comment below
#
diff --git a/src/monarch_ingest/ingests/hgnc/gene.py b/src/monarch_ingest/ingests/hgnc/gene.py
index 9f656a56..1504ce98 100644
--- a/src/monarch_ingest/ingests/hgnc/gene.py
+++ b/src/monarch_ingest/ingests/hgnc/gene.py
@@ -1,4 +1,4 @@
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import Gene
@@ -6,7 +6,7 @@
taxon_labels = koza_app.get_map("taxon-labels")
while (row := koza_app.get_row()) is not None:
-
+
xref_list = []
if row['ensembl_gene_id']:
xref_list.append('ENSEMBL:' + row['ensembl_gene_id'])
@@ -17,7 +17,6 @@
else:
xref_list.append('OMIM:' + row['omim_id'])
-
synonyms_list = (
row["alias_symbol"].split("|")
+ row["alias_name"].split("|")
@@ -37,7 +36,7 @@
synonym=synonyms_list,
in_taxon=[in_taxon],
in_taxon_label=in_taxon_label,
- provided_by=["infores:hgnc"]
+ provided_by=["infores:hgnc"],
)
# Excluding pub to gene associations for now
diff --git a/src/monarch_ingest/ingests/hpoa/disease_mode_of_inheritance.py b/src/monarch_ingest/ingests/hpoa/disease_mode_of_inheritance.py
index b40b85a3..0b3d56ba 100644
--- a/src/monarch_ingest/ingests/hpoa/disease_mode_of_inheritance.py
+++ b/src/monarch_ingest/ingests/hpoa/disease_mode_of_inheritance.py
@@ -19,14 +19,18 @@
--source src/monarch_ingest/ingests/hpoa/disease_mode_of_inheritance.yaml \
--output-format tsv
"""
+
from typing import List
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import DiseaseOrPhenotypicFeatureToGeneticInheritanceAssociation, \
- KnowledgeLevelEnum, AgentTypeEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ DiseaseOrPhenotypicFeatureToGeneticInheritanceAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
from loguru import logger
@@ -34,48 +38,48 @@
while (row := koza_app.get_row()) is not None:
- # Object: Actually a Genetic Inheritance (as should be specified by a suitable HPO term)
- # TODO: perhaps load the proper (Genetic Inheritance) node concepts into the Monarch Graph (simply as Ontology terms?).
- hpo_id = row["hpo_id"]
+ # Object: Actually a Genetic Inheritance (as should be specified by a suitable HPO term)
+ # TODO: perhaps load the proper (Genetic Inheritance) node concepts into the Monarch Graph (simply as Ontology terms?).
+ hpo_id = row["hpo_id"]
- # We ignore records that don't map to a known HPO term for Genetic Inheritance
- # (as recorded in the locally bound 'hpoa-modes-of-inheritance' table)
- if hpo_id and hpo_id in koza_app.translation_table.local_table:
+ # We ignore records that don't map to a known HPO term for Genetic Inheritance
+ # (as recorded in the locally bound 'hpoa-modes-of-inheritance' table)
+ if hpo_id and hpo_id in koza_app.translation_table.local_table:
- # Nodes
+ # Nodes
- # Subject: Disease
- disease_id = row["database_id"]
+ # Subject: Disease
+ disease_id = row["database_id"]
- # Predicate (canonical direction)
- predicate = "biolink:has_mode_of_inheritance"
+ # Predicate (canonical direction)
+ predicate = "biolink:has_mode_of_inheritance"
- # Annotations
+ # Annotations
- # Three letter ECO code to ECO class based on HPO documentation
- evidence_curie = koza_app.translation_table.resolve_term(row["evidence"])
+ # Three letter ECO code to ECO class based on HPO documentation
+ evidence_curie = koza_app.translation_table.resolve_term(row["evidence"])
- # Publications
- publications_field: str = row["reference"]
- publications: List[str] = publications_field.split(";")
+ # Publications
+ publications_field: str = row["reference"]
+ publications: List[str] = publications_field.split(";")
- # Filter out some weird NCBI web endpoints
- publications = [p for p in publications if not p.startswith("http")]
+ # Filter out some weird NCBI web endpoints
+ publications = [p for p in publications if not p.startswith("http")]
- # Association/Edge
- association = DiseaseOrPhenotypicFeatureToGeneticInheritanceAssociation(
- id="uuid:" + str(uuid.uuid1()),
- subject=disease_id,
- predicate=predicate,
- object=hpo_id,
- publications=publications,
- has_evidence=[evidence_curie],
- aggregator_knowledge_source=["infores:monarchinitiative"],
- primary_knowledge_source="infores:hpo-annotations",
- knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
- )
- koza_app.write(association)
+ # Association/Edge
+ association = DiseaseOrPhenotypicFeatureToGeneticInheritanceAssociation(
+ id="uuid:" + str(uuid.uuid1()),
+ subject=disease_id,
+ predicate=predicate,
+ object=hpo_id,
+ publications=publications,
+ has_evidence=[evidence_curie],
+ aggregator_knowledge_source=["infores:monarchinitiative"],
+ primary_knowledge_source="infores:hpo-annotations",
+ knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
+ agent_type=AgentTypeEnum.manual_agent,
+ )
+ koza_app.write(association)
- else:
- logger.warning(f"HPOA ID field value '{str(hpo_id)}' is missing or an invalid disease mode of inheritance?")
+ else:
+ logger.warning(f"HPOA ID field value '{str(hpo_id)}' is missing or an invalid disease mode of inheritance?")
diff --git a/src/monarch_ingest/ingests/hpoa/disease_to_phenotype.py b/src/monarch_ingest/ingests/hpoa/disease_to_phenotype.py
index 974aefd3..f10acacf 100644
--- a/src/monarch_ingest/ingests/hpoa/disease_to_phenotype.py
+++ b/src/monarch_ingest/ingests/hpoa/disease_to_phenotype.py
@@ -23,17 +23,20 @@
--source src/monarch_ingest/ingests/hpoa/disease_phenotype.yaml \
--output-format tsv
"""
-from typing import Optional, List, Tuple
+
+from typing import Optional, List
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import DiseaseToPhenotypicFeatureAssociation, KnowledgeLevelEnum, \
- AgentTypeEnum
-from monarch_ingest.ingests.hpoa.hpoa_utils import phenotype_frequency_to_hpo_term, FrequencyHpoTerm, Frequency
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ DiseaseToPhenotypicFeatureAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
+from monarch_ingest.ingests.hpoa.hpoa_utils import phenotype_frequency_to_hpo_term, Frequency
-from loguru import logger
koza_app = get_koza_app("hpoa_disease_to_phenotype")
@@ -63,9 +66,7 @@
# female -> PATO:0000383
# male -> PATO:0000384
sex: Optional[str] = row["sex"] # may be translated by local table
- sex_qualifier = (
- koza_app.translation_table.resolve_term(sex) if sex else None
- )
+ sex_qualifier = koza_app.translation_table.resolve_term(sex) if sex else None
onset = row["onset"]
@@ -77,13 +78,12 @@
publications: List[str] = publications_field.split(";")
# don't populate the reference with the database_id / disease id
- publications = [p for p in publications
- if not p == row["database_id"]]
+ publications = [p for p in publications if not p == row["database_id"]]
# Association/Edge
association = DiseaseToPhenotypicFeatureAssociation(
id="uuid:" + str(uuid.uuid1()),
- subject=disease_id.replace("ORPHA:", "Orphanet:"), # match `Orphanet` as used in Mondo SSSOM
+ subject=disease_id.replace("ORPHA:", "Orphanet:"), # match `Orphanet` as used in Mondo SSSOM
predicate=predicate,
negated=negated,
object=hpo_id,
@@ -99,7 +99,6 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:hpo-annotations",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
-
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/hpoa/gene_to_disease.py b/src/monarch_ingest/ingests/hpoa/gene_to_disease.py
index 69a52826..54f8cc19 100644
--- a/src/monarch_ingest/ingests/hpoa/gene_to_disease.py
+++ b/src/monarch_ingest/ingests/hpoa/gene_to_disease.py
@@ -1,8 +1,12 @@
import uuid
-from biolink_model.datamodel.pydanticmodel_v2 import GeneToDiseaseAssociation, CausalGeneToDiseaseAssociation, \
- CorrelatedGeneToDiseaseAssociation, KnowledgeLevelEnum, AgentTypeEnum
-from koza.cli_runner import get_koza_app
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ CausalGeneToDiseaseAssociation,
+ CorrelatedGeneToDiseaseAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
+from koza.cli_utils import get_koza_app
from monarch_ingest.constants import INFORES_MONARCHINITIATIVE, BIOLINK_CAUSES
from monarch_ingest.ingests.hpoa.hpoa_utils import get_knowledge_sources, get_predicate
@@ -16,7 +20,9 @@
predicate = get_predicate(row["association_type"])
- primary_knowledge_source, aggregator_knowledge_source = get_knowledge_sources(row["source"], INFORES_MONARCHINITIATIVE)
+ primary_knowledge_source, aggregator_knowledge_source = get_knowledge_sources(
+ row["source"], INFORES_MONARCHINITIATIVE
+ )
if predicate == BIOLINK_CAUSES:
association_class = CausalGeneToDiseaseAssociation
@@ -31,7 +37,7 @@
primary_knowledge_source=primary_knowledge_source,
aggregator_knowledge_source=aggregator_knowledge_source,
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/hpoa/gene_to_phenotype.py b/src/monarch_ingest/ingests/hpoa/gene_to_phenotype.py
index ffa820c2..1ba53908 100644
--- a/src/monarch_ingest/ingests/hpoa/gene_to_phenotype.py
+++ b/src/monarch_ingest/ingests/hpoa/gene_to_phenotype.py
@@ -4,12 +4,16 @@
--source src/monarch_ingest/ingests/hpoa/gene_to_phenotype.yaml \
--output-format tsv
"""
+
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import GeneToPhenotypicFeatureAssociation, KnowledgeLevelEnum, \
- AgentTypeEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ GeneToPhenotypicFeatureAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
koza_app = get_koza_app("hpoa_gene_to_phenotype")
diff --git a/src/monarch_ingest/ingests/hpoa/hpoa_utils.py b/src/monarch_ingest/ingests/hpoa/hpoa_utils.py
index 7439f02d..6e2efbf7 100644
--- a/src/monarch_ingest/ingests/hpoa/hpoa_utils.py
+++ b/src/monarch_ingest/ingests/hpoa/hpoa_utils.py
@@ -1,14 +1,21 @@
"""
HPOA processing utility methods
"""
-from typing import Optional, List, Dict, Tuple, NamedTuple
+
+from typing import Optional, List, Dict
from loguru import logger
from pydantic import BaseModel
-from monarch_ingest.constants import INFORES_MEDGEN, INFORES_OMIM, INFORES_ORPHANET, BIOLINK_CAUSES, \
- BIOLINK_CONTRIBUTES_TO, BIOLINK_GENE_ASSOCIATED_WITH_CONDITION
+from monarch_ingest.constants import (
+ INFORES_MEDGEN,
+ INFORES_OMIM,
+ INFORES_ORPHANET,
+ BIOLINK_CAUSES,
+ BIOLINK_CONTRIBUTES_TO,
+ BIOLINK_GENE_ASSOCIATED_WITH_CONDITION,
+)
class FrequencyHpoTerm(BaseModel):
@@ -17,6 +24,7 @@ class FrequencyHpoTerm(BaseModel):
lower: float
upper: float
+
class Frequency(BaseModel):
frequency_qualifier: Optional[str] = None
has_percentage: Optional[float] = None
@@ -25,14 +33,27 @@ class Frequency(BaseModel):
has_total: Optional[int] = None
# convert the fields above to pydantic field declarations
+
# HPO "HP:0040279": representing the frequency of phenotypic abnormalities within a patient cohort.
hpo_term_to_frequency: Dict = {
- "HP:0040280": FrequencyHpoTerm(curie="HP:0040280", name="Obligate", lower=100.0, upper=100.0), # Always present,i.e. in 100% of the cases.
- "HP:0040281": FrequencyHpoTerm(curie="HP:0040281", name="Very frequent", lower=80.0, upper=99.0), # Present in 80% to 99% of the cases.
- "HP:0040282": FrequencyHpoTerm(curie="HP:0040282", name="Frequent", lower=30.0, upper=79.0), # Present in 30% to 79% of the cases.
- "HP:0040283": FrequencyHpoTerm(curie="HP:0040283", name="Occasional", lower=5.0, upper=29.0), # Present in 5% to 29% of the cases.
- "HP:0040284": FrequencyHpoTerm(curie="HP:0040284", name="Very rare", lower=1.0, upper=4.0), # Present in 1% to 4% of the cases.
- "HP:0040285": FrequencyHpoTerm(curie="HP:0040285", name="Excluded", lower=0.0, upper=0.0) # Present in 0% of the cases.
+ "HP:0040280": FrequencyHpoTerm(
+ curie="HP:0040280", name="Obligate", lower=100.0, upper=100.0
+ ), # Always present,i.e. in 100% of the cases.
+ "HP:0040281": FrequencyHpoTerm(
+ curie="HP:0040281", name="Very frequent", lower=80.0, upper=99.0
+ ), # Present in 80% to 99% of the cases.
+ "HP:0040282": FrequencyHpoTerm(
+ curie="HP:0040282", name="Frequent", lower=30.0, upper=79.0
+ ), # Present in 30% to 79% of the cases.
+ "HP:0040283": FrequencyHpoTerm(
+ curie="HP:0040283", name="Occasional", lower=5.0, upper=29.0
+ ), # Present in 5% to 29% of the cases.
+ "HP:0040284": FrequencyHpoTerm(
+ curie="HP:0040284", name="Very rare", lower=1.0, upper=4.0
+ ), # Present in 1% to 4% of the cases.
+ "HP:0040285": FrequencyHpoTerm(
+ curie="HP:0040285", name="Excluded", lower=0.0, upper=0.0
+ ), # Present in 0% of the cases.
}
@@ -57,21 +78,19 @@ def map_percentage_frequency_to_hpo_term(percentage_or_quotient: float) -> Optio
return None
-def phenotype_frequency_to_hpo_term(
- frequency_field: Optional[str]
-) -> Frequency:
+def phenotype_frequency_to_hpo_term(frequency_field: Optional[str]) -> Frequency:
"""
-Maps a raw frequency field onto HPO, for consistency. This is needed since the **phenotypes.hpoa**
-file field #8 which tracks phenotypic frequency, has a variable values. There are three allowed options for this field:
+ Maps a raw frequency field onto HPO, for consistency. This is needed since the **phenotypes.hpoa**
+ file field #8 which tracks phenotypic frequency, has a variable values. There are three allowed options for this field:
-1. A term-id from the HPO-sub-ontology below the term “Frequency” (HP:0040279). (since December 2016 ; before was a mixture of values). The terms for frequency are in alignment with Orphanet;
-2. A percentage value such as 17%.
-3. A count of patients affected within a cohort. For instance, 7/13 would indicate that 7 of the 13 patients with the specified disease were found to have the phenotypic abnormality referred to by the HPO term in question in the study referred to by the DB_Reference;
+ 1. A term-id from the HPO-sub-ontology below the term “Frequency” (HP:0040279). (since December 2016 ; before was a mixture of values). The terms for frequency are in alignment with Orphanet;
+ 2. A percentage value such as 17%.
+ 3. A count of patients affected within a cohort. For instance, 7/13 would indicate that 7 of the 13 patients with the specified disease were found to have the phenotypic abnormality referred to by the HPO term in question in the study referred to by the DB_Reference;
- :param frequency_field: str, raw frequency value in one of the three above forms
- :return: Optional[FrequencyHpoTerm, float, float], raw frequency mapped to its HPO term, quotient or percentage
- respectively (as applicable); return None if unmappable;
- percentage and/or quotient returned are also None, if not applicable
+ :param frequency_field: str, raw frequency value in one of the three above forms
+ :return: Optional[FrequencyHpoTerm, float, float], raw frequency mapped to its HPO term, quotient or percentage
+ respectively (as applicable); return None if unmappable;
+ percentage and/or quotient returned are also None, if not applicable
"""
hpo_term: Optional[FrequencyHpoTerm] = None
quotient: Optional[float] = None
@@ -104,11 +123,13 @@ def phenotype_frequency_to_hpo_term(
# may be None, if original field was empty or has an invalid value
return Frequency()
- return Frequency(frequency_qualifier=hpo_term.curie if hpo_term else None,
- has_percentage=percentage,
- has_quotient=quotient,
- has_count=has_count,
- has_total=has_total)
+ return Frequency(
+ frequency_qualifier=hpo_term.curie if hpo_term else None,
+ has_percentage=percentage,
+ has_quotient=quotient,
+ has_count=has_count,
+ has_total=has_total,
+ )
def get_knowledge_sources(original_source: str, additional_source: str) -> (str, List[str]):
diff --git a/src/monarch_ingest/ingests/mgi/publication_to_gene.py b/src/monarch_ingest/ingests/mgi/publication_to_gene.py
index fce8228c..75d52311 100644
--- a/src/monarch_ingest/ingests/mgi/publication_to_gene.py
+++ b/src/monarch_ingest/ingests/mgi/publication_to_gene.py
@@ -1,15 +1,18 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import InformationContentEntityToNamedThingAssociation, AgentTypeEnum, \
- KnowledgeLevelEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ InformationContentEntityToNamedThingAssociation,
+ AgentTypeEnum,
+ KnowledgeLevelEnum,
+)
koza_app = get_koza_app("mgi_publication_to_gene")
while (row := koza_app.get_row()) is not None:
- gene_id=row["MGI Marker Accession ID"]
+ gene_id = row["MGI Marker Accession ID"]
relation = koza_app.translation_table.resolve_term("mentions")
@@ -27,7 +30,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:mgi",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/ncbi/gene.py b/src/monarch_ingest/ingests/ncbi/gene.py
index 9810c9b7..0b7f42c4 100644
--- a/src/monarch_ingest/ingests/ncbi/gene.py
+++ b/src/monarch_ingest/ingests/ncbi/gene.py
@@ -1,4 +1,4 @@
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import Gene
@@ -6,15 +6,12 @@
taxon_labels = koza_app.get_map("taxon-labels")
# If a taxon label we need isn't in phenio's NCBITaxon subset, we can add it here
-extra_taxon_labels = {
- 'NCBITaxon:227321': 'Dictyostelium discoideum'
-}
+extra_taxon_labels = {'NCBITaxon:227321': 'Dictyostelium discoideum'}
while (row := koza_app.get_row()) is not None:
in_taxon = 'NCBITaxon:' + row["tax_id"]
-
if in_taxon in taxon_labels:
in_taxon_label = taxon_labels[in_taxon]['label']
elif in_taxon in extra_taxon_labels:
@@ -30,7 +27,7 @@
description=row["description"],
in_taxon=[in_taxon],
in_taxon_label=in_taxon_label,
- provided_by=["infores:ncbi-gene"]
+ provided_by=["infores:ncbi-gene"],
)
koza_app.write(gene)
diff --git a/src/monarch_ingest/ingests/panther/genome_orthologs.py b/src/monarch_ingest/ingests/panther/genome_orthologs.py
index c3990906..7dccdca7 100644
--- a/src/monarch_ingest/ingests/panther/genome_orthologs.py
+++ b/src/monarch_ingest/ingests/panther/genome_orthologs.py
@@ -4,20 +4,18 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import GeneToGeneHomologyAssociation, KnowledgeLevelEnum, AgentTypeEnum
from monarch_ingest.ingests.panther.orthology_utils import parse_gene, ncbitaxon_catalog
-from loguru import logger
koza_app = get_koza_app("panther_genome_orthologs")
while (row := koza_app.get_row()) is not None:
- if row['Gene'].split("|")[0] in ncbitaxon_catalog \
- and row['Ortholog'].split("|")[0] in ncbitaxon_catalog:
+ if row['Gene'].split("|")[0] in ncbitaxon_catalog and row['Ortholog'].split("|")[0] in ncbitaxon_catalog:
try:
# TODO: we don't current capture the taxon of the subject gene
# nor the object ortholog. Maybe as a qualifier in Biolink 3.0?
@@ -54,13 +52,13 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:panther",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.not_provided
+ agent_type=AgentTypeEnum.not_provided,
)
# Write the captured Association out
koza_app.write(association)
-
- except RuntimeError as rte:
+
+ except RuntimeError:
# Skip the row - not of interest or error
# logger.debug(f"{str(rte)} in data row:\n\t'{str(row)}'")
pass
diff --git a/src/monarch_ingest/ingests/panther/orthology_utils.py b/src/monarch_ingest/ingests/panther/orthology_utils.py
index e78818da..9b13d11c 100644
--- a/src/monarch_ingest/ingests/panther/orthology_utils.py
+++ b/src/monarch_ingest/ingests/panther/orthology_utils.py
@@ -1,12 +1,14 @@
"""
Utility functions for Panther Orthology data processing
"""
+
# from sys import stderr
# from os import sep, remove
# from tarfile import (open as tar_open, ReadError, CompressionError, TarInfo)
# from datetime import datetime
-from typing import Optional, Tuple#, List
+from typing import Optional, Tuple # , List
+
# from io import TextIOWrapper
# from loguru import logger
@@ -16,13 +18,13 @@
# of species - just starting with the STRING DB list + Dictyostelium
"HUMAN": "9606",
"MOUSE": "10090",
- "CANLF": "9615", # Canis lupus familiaris - domestic dog
+ "CANLF": "9615", # Canis lupus familiaris - domestic dog
# "FELCA": "9685", # Felis catus - domestic cat
- "BOVIN": "9913", # Bos taurus - cow
- "PIG": "9823", # Sus scrofa - pig
+ "BOVIN": "9913", # Bos taurus - cow
+ "PIG": "9823", # Sus scrofa - pig
"RAT": "10116",
"CHICK": "9031",
- "XENTR": "8364", # Xenopus tropicalis - tropical clawed frog
+ "XENTR": "8364", # Xenopus tropicalis - tropical clawed frog
"DANRE": "7955",
"DROME": "7227",
"CAEEL": "6239",
@@ -32,6 +34,7 @@
"YEAST": "4932",
}
+
def ncbitaxon_by_name(species_tag: str) -> Optional[str]:
"""
Retrieves the NCBI Taxon ID of a given species, only if we are interested in it...
@@ -52,10 +55,10 @@ def ncbitaxon_by_name(species_tag: str) -> Optional[str]:
"EnsemblGenome": "ENSEMBL", # TODO: review and fix this later?
"PomBase": "PomBase",
"WormBase": "WB", # Wormbase supports 'WormBase:' but alliancegenome.org and identifiers.org supports 'WB:'
- "GeneID": "NCBIGene", # seems to be Entrez Gene ID => map onto the NCBIGene: namespace
- "Gene": None, # seems to be the gene symbol - we ignore it for now?
- "Gene_ORFName": None, # is the gene orf name from a transcript in Uniprot - we ignore it for now?
- "Gene_OrderedLocusName": None # is a gene ordered locus name - we ignore it for now?
+ "GeneID": "NCBIGene", # seems to be Entrez Gene ID => map onto the NCBIGene: namespace
+ "Gene": None, # seems to be the gene symbol - we ignore it for now?
+ "Gene_ORFName": None, # is the gene orf name from a transcript in Uniprot - we ignore it for now?
+ "Gene_OrderedLocusName": None, # is a gene ordered locus name - we ignore it for now?
}
@@ -96,9 +99,7 @@ def parse_gene_id(gene_id_spec: str) -> Optional[str]:
# trapped by the RuntimeError below should answer this...)
return f"{spec_part[1]}:{spec_part[2]}"
else:
- raise RuntimeError(
- f"parse_gene_id(): Error parsing '{str(gene_id_spec)}'? Ignoring..."
- )
+ raise RuntimeError(f"parse_gene_id(): Error parsing '{str(gene_id_spec)}'? Ignoring...")
def parse_gene(gene_entry: str) -> Optional[Tuple[str, str]]:
@@ -114,9 +115,7 @@ def parse_gene(gene_entry: str) -> Optional[Tuple[str, str]]:
try:
species, gene_spec, _ = gene_entry.split("|")
except ValueError:
- raise RuntimeError(
- f"parse_gene(): Gene entry field '{str(gene_entry)}' has incorrect format. Ignoring..."
- )
+ raise RuntimeError(f"parse_gene(): Gene entry field '{str(gene_entry)}' has incorrect format. Ignoring...")
# get the NCBI Taxonomic identifier
ncbitaxon_id = ncbitaxon_by_name(species)
diff --git a/src/monarch_ingest/ingests/pombase/gene.py b/src/monarch_ingest/ingests/pombase/gene.py
index 7d107854..6761c71f 100644
--- a/src/monarch_ingest/ingests/pombase/gene.py
+++ b/src/monarch_ingest/ingests/pombase/gene.py
@@ -1,5 +1,6 @@
from biolink_model.datamodel.pydanticmodel_v2 import Gene
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
+
# from loguru import logger
diff --git a/src/monarch_ingest/ingests/pombase/gene_to_phenotype.py b/src/monarch_ingest/ingests/pombase/gene_to_phenotype.py
index 6cb87185..ace62407 100644
--- a/src/monarch_ingest/ingests/pombase/gene_to_phenotype.py
+++ b/src/monarch_ingest/ingests/pombase/gene_to_phenotype.py
@@ -1,9 +1,12 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import GeneToPhenotypicFeatureAssociation, KnowledgeLevelEnum, \
- AgentTypeEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ GeneToPhenotypicFeatureAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
koza_app = get_koza_app("pombase_gene_to_phenotype")
@@ -22,7 +25,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:pombase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
if row["Condition"]:
diff --git a/src/monarch_ingest/ingests/reactome/chemical_to_pathway.py b/src/monarch_ingest/ingests/reactome/chemical_to_pathway.py
index eb1714af..6e08a782 100644
--- a/src/monarch_ingest/ingests/reactome/chemical_to_pathway.py
+++ b/src/monarch_ingest/ingests/reactome/chemical_to_pathway.py
@@ -1,5 +1,5 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import ChemicalToPathwayAssociation, AgentTypeEnum, KnowledgeLevelEnum
koza_app = get_koza_app("reactome_chemical_to_pathway")
@@ -31,7 +31,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:reactome",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.not_provided
+ agent_type=AgentTypeEnum.not_provided,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/reactome/gene_to_pathway.py b/src/monarch_ingest/ingests/reactome/gene_to_pathway.py
index 00e9e80a..825c32f4 100644
--- a/src/monarch_ingest/ingests/reactome/gene_to_pathway.py
+++ b/src/monarch_ingest/ingests/reactome/gene_to_pathway.py
@@ -1,5 +1,5 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import GeneToPathwayAssociation, AgentTypeEnum, KnowledgeLevelEnum
@@ -32,7 +32,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:reactome",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.not_provided
+ agent_type=AgentTypeEnum.not_provided,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/reactome/pathway.py b/src/monarch_ingest/ingests/reactome/pathway.py
index 2950b867..efc25842 100644
--- a/src/monarch_ingest/ingests/reactome/pathway.py
+++ b/src/monarch_ingest/ingests/reactome/pathway.py
@@ -1,5 +1,5 @@
from biolink_model.datamodel.pydanticmodel_v2 import Pathway
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
koza_app = get_koza_app('reactome_pathway')
@@ -21,10 +21,9 @@
name=row["Name"],
in_taxon=[taxon_id],
provided_by=["infores:reactome"],
-
# the identifier is duplicated here as a xref to become visible as
# an external link in the entity display page of the Monarch App
- xref=[pathway_id]
+ xref=[pathway_id],
)
koza_app.write(pathway)
diff --git a/src/monarch_ingest/ingests/rgd/publication_to_gene.py b/src/monarch_ingest/ingests/rgd/publication_to_gene.py
index cea56e2d..3825f6ce 100644
--- a/src/monarch_ingest/ingests/rgd/publication_to_gene.py
+++ b/src/monarch_ingest/ingests/rgd/publication_to_gene.py
@@ -1,9 +1,12 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import InformationContentEntityToNamedThingAssociation, AgentTypeEnum, \
- KnowledgeLevelEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ InformationContentEntityToNamedThingAssociation,
+ AgentTypeEnum,
+ KnowledgeLevelEnum,
+)
koza_app = get_koza_app("rgd_publication_to_gene")
@@ -12,7 +15,7 @@
if not row["CURATED_REF_PUBMED_ID"]:
koza_app.next_row()
- gene_id='RGD:' + row["GENE_RGD_ID"]
+ gene_id = 'RGD:' + row["GENE_RGD_ID"]
id_list = row["CURATED_REF_PUBMED_ID"].split(';')
for each_id in id_list:
@@ -27,7 +30,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:rgd",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/sgd/publication_to_gene.py b/src/monarch_ingest/ingests/sgd/publication_to_gene.py
index 1ad07211..a5c2face 100644
--- a/src/monarch_ingest/ingests/sgd/publication_to_gene.py
+++ b/src/monarch_ingest/ingests/sgd/publication_to_gene.py
@@ -1,9 +1,12 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import InformationContentEntityToNamedThingAssociation, AgentTypeEnum, \
- KnowledgeLevelEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ InformationContentEntityToNamedThingAssociation,
+ AgentTypeEnum,
+ KnowledgeLevelEnum,
+)
koza_app = get_koza_app("sgd_publication_to_gene")
@@ -21,7 +24,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:sgd",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/string/protein_links.py b/src/monarch_ingest/ingests/string/protein_links.py
index e65671e2..762b482f 100644
--- a/src/monarch_ingest/ingests/string/protein_links.py
+++ b/src/monarch_ingest/ingests/string/protein_links.py
@@ -1,7 +1,7 @@
import uuid
-from typing import Optional, List
+from typing import List
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import PairwiseGeneToGeneInteraction, KnowledgeLevelEnum, AgentTypeEnum
@@ -13,11 +13,13 @@
seen_rows = set([])
+
def sorted_id_pair(row) -> str:
sorted([row['protein1'], row['protein2']])
+
while (row := koza_app.get_row()) is not None and sorted_id_pair(row) not in seen_rows:
-
+
entrez_2_string = koza_app.get_map('entrez_2_string')
pid_a = row['protein1']
@@ -51,14 +53,12 @@ def sorted_id_pair(row) -> str:
subject=gene_id_a,
object=gene_id_b,
predicate="biolink:interacts_with",
-
# sanity check: set to 'None' if empty list
has_evidence=has_evidence if has_evidence else None,
-
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:string",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.not_provided
+ agent_type=AgentTypeEnum.not_provided,
)
seen_rows.add(sorted_id_pair(row))
entities.append(association)
diff --git a/src/monarch_ingest/ingests/string/string_utils.py b/src/monarch_ingest/ingests/string/string_utils.py
index 5bbc7b94..88ecd1e6 100644
--- a/src/monarch_ingest/ingests/string/string_utils.py
+++ b/src/monarch_ingest/ingests/string/string_utils.py
@@ -46,7 +46,7 @@
"coexpression": "ECO:0000075",
"experimental": "ECO:0000006",
"database": "ECO:0007636",
- "textmining": "ECO:0007833"
+ "textmining": "ECO:0007833",
}
@@ -57,4 +57,3 @@ def map_evidence_codes(row: Dict) -> List[str]:
eco_mappings.append(EVIDENCE_CODE_MAPPINGS[evidence_type])
return eco_mappings
-
diff --git a/src/monarch_ingest/ingests/xenbase/gene_to_phenotype.py b/src/monarch_ingest/ingests/xenbase/gene_to_phenotype.py
index 6bbf74ca..f7c86c50 100644
--- a/src/monarch_ingest/ingests/xenbase/gene_to_phenotype.py
+++ b/src/monarch_ingest/ingests/xenbase/gene_to_phenotype.py
@@ -1,11 +1,13 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import (
Gene,
GeneToPhenotypicFeatureAssociation,
- PhenotypicFeature, KnowledgeLevelEnum, AgentTypeEnum
+ PhenotypicFeature,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
)
koza_app = get_koza_app("xenbase_gene_to_phenotype")
@@ -31,7 +33,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:xenbase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
if row["SOURCE"]:
diff --git a/src/monarch_ingest/ingests/xenbase/non_entrez_orthologs.py b/src/monarch_ingest/ingests/xenbase/non_entrez_orthologs.py
index 61066207..930d5b36 100644
--- a/src/monarch_ingest/ingests/xenbase/non_entrez_orthologs.py
+++ b/src/monarch_ingest/ingests/xenbase/non_entrez_orthologs.py
@@ -4,7 +4,7 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import GeneToGeneHomologyAssociation, AgentTypeEnum, KnowledgeLevelEnum
@@ -33,7 +33,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:xenbase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
# Write the captured Association out
@@ -48,7 +48,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:xenbase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
# Write the captured Association out
@@ -63,7 +63,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:xenbase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
# Write the captured Association out
diff --git a/src/monarch_ingest/ingests/xenbase/orthologs.py b/src/monarch_ingest/ingests/xenbase/orthologs.py
index 1999447b..609a27ef 100644
--- a/src/monarch_ingest/ingests/xenbase/orthologs.py
+++ b/src/monarch_ingest/ingests/xenbase/orthologs.py
@@ -4,7 +4,7 @@
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
from biolink_model.datamodel.pydanticmodel_v2 import GeneToGeneHomologyAssociation, AgentTypeEnum, KnowledgeLevelEnum
@@ -32,7 +32,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:xenbase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
# Write the captured Association out
diff --git a/src/monarch_ingest/ingests/xenbase/publication_to_gene.py b/src/monarch_ingest/ingests/xenbase/publication_to_gene.py
index 8ce3baae..95ee84b9 100644
--- a/src/monarch_ingest/ingests/xenbase/publication_to_gene.py
+++ b/src/monarch_ingest/ingests/xenbase/publication_to_gene.py
@@ -1,10 +1,12 @@
-
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import InformationContentEntityToNamedThingAssociation, AgentTypeEnum, \
- KnowledgeLevelEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ InformationContentEntityToNamedThingAssociation,
+ AgentTypeEnum,
+ KnowledgeLevelEnum,
+)
from loguru import logger
@@ -23,9 +25,7 @@
gene_page_id = gene_page.split(" ")[0]
try:
- gene_ids = map(
- lambda id: f"Xenbase:{id}", list(genepage2gene[gene_page_id].values())
- )
+ gene_ids = map(lambda id: f"Xenbase:{id}", list(genepage2gene[gene_page_id].values()))
except KeyError:
logger.debug(f"Could not locate genepage_id: {gene_page_id} in row {row}")
continue
@@ -40,7 +40,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:xenbase",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
entities.append(association)
diff --git a/src/monarch_ingest/ingests/zfin/gene_to_phenotype.py b/src/monarch_ingest/ingests/zfin/gene_to_phenotype.py
index bde87fae..506c5ee4 100644
--- a/src/monarch_ingest/ingests/zfin/gene_to_phenotype.py
+++ b/src/monarch_ingest/ingests/zfin/gene_to_phenotype.py
@@ -1,10 +1,12 @@
-
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import GeneToPhenotypicFeatureAssociation, KnowledgeLevelEnum, \
- AgentTypeEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ GeneToPhenotypicFeatureAssociation,
+ KnowledgeLevelEnum,
+ AgentTypeEnum,
+)
from loguru import logger
@@ -43,7 +45,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:zfin",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/ingests/zfin/publication_to_gene.py b/src/monarch_ingest/ingests/zfin/publication_to_gene.py
index 65246f24..1f1bf6e6 100644
--- a/src/monarch_ingest/ingests/zfin/publication_to_gene.py
+++ b/src/monarch_ingest/ingests/zfin/publication_to_gene.py
@@ -1,12 +1,13 @@
-
import uuid
-from koza.cli_runner import get_koza_app
+from koza.cli_utils import get_koza_app
-from biolink_model.datamodel.pydanticmodel_v2 import InformationContentEntityToNamedThingAssociation, AgentTypeEnum, \
- KnowledgeLevelEnum
+from biolink_model.datamodel.pydanticmodel_v2 import (
+ InformationContentEntityToNamedThingAssociation,
+ AgentTypeEnum,
+ KnowledgeLevelEnum,
+)
-from loguru import logger
koza_app = get_koza_app("zfin_publication_to_gene")
@@ -24,7 +25,7 @@
aggregator_knowledge_source=["infores:monarchinitiative"],
primary_knowledge_source="infores:zfin",
knowledge_level=KnowledgeLevelEnum.knowledge_assertion,
- agent_type=AgentTypeEnum.manual_agent
+ agent_type=AgentTypeEnum.manual_agent,
)
koza_app.write(association)
diff --git a/src/monarch_ingest/main.py b/src/monarch_ingest/main.py
index 481eeaad..fdbb4c84 100644
--- a/src/monarch_ingest/main.py
+++ b/src/monarch_ingest/main.py
@@ -117,7 +117,7 @@ def merge(
# load qc_report.yaml from output_dir
qc_report = yaml.safe_load(open(f"{output_dir}/qc_report.yaml"))
- edge_counts = {item["name"]: item["total_number"] for item in qc_report["edges"]}
+ # edge_counts = {item["name"]: item["total_number"] for item in qc_report["edges"]}
# load expected count yaml
expected_counts = yaml.safe_load(open(f"src/monarch_ingest/qc_expect.yaml"))
error = False
@@ -138,6 +138,7 @@ def merge(
if error:
sys.exit(1)
+
@typer_app.command()
def closure():
apply_closure()
diff --git a/src/monarch_ingest/maps/mimtitles.py b/src/monarch_ingest/maps/mimtitles.py
index fe41256f..1407ec69 100644
--- a/src/monarch_ingest/maps/mimtitles.py
+++ b/src/monarch_ingest/maps/mimtitles.py
@@ -1,6 +1,4 @@
-
-
-from koza.cli_runner import koza_app
+from koza.cli_utils import koza_app
from loguru import logger
diff --git a/src/monarch_ingest/utils/export_utils.py b/src/monarch_ingest/utils/export_utils.py
index da201e0c..252fedd0 100755
--- a/src/monarch_ingest/utils/export_utils.py
+++ b/src/monarch_ingest/utils/export_utils.py
@@ -1,4 +1,3 @@
-
""" Monarch Data Dump
This script is used to dump tsv files from the
@@ -11,6 +10,7 @@
- solr_filter_1
- solr_filter_2
"""
+
import json
from json import decoder
from enum import Enum
@@ -36,10 +36,12 @@ class OutputType(str, Enum):
OUTPUT_TYPES = set(OutputType._member_names_)
-def export(config_file: str = "./src/monarch_ingest/data-dump-config.yaml",
- output_dir: str = "./output/tsv/",
- output_format: OutputType = OutputType.tsv,
- solr_url: str = "http://localhost:8983/solr/association/select"):
+def export(
+ config_file: str = "./src/monarch_ingest/data-dump-config.yaml",
+ output_dir: str = "./output/tsv/",
+ output_format: OutputType = OutputType.tsv,
+ solr_url: str = "http://localhost:8983/solr/association/select",
+):
if output_format not in OUTPUT_TYPES:
raise ValueError(f"output format not supported, supported formats are {OUTPUT_TYPES}")
@@ -58,7 +60,7 @@ def export(config_file: str = "./src/monarch_ingest/data-dump-config.yaml",
'json.nl': 'arrarr',
'rows': 0,
'facet': 'true',
- 'facet.field': 'category'
+ 'facet.field': 'category',
}
solr_request = requests.get(solr_url, params=assoc_params)
@@ -103,7 +105,8 @@ def export(config_file: str = "./src/monarch_ingest/data-dump-config.yaml",
def generate_tsv(tsv_fh, solr, filters):
- default_fields = ','.join([
+ default_fields = ','.join(
+ [
'subject',
'subject_label',
'subject_taxon',
@@ -112,19 +115,22 @@ def generate_tsv(tsv_fh, solr, filters):
'predicate',
'object',
'object_label',
- 'qualifier'
- 'publications',
+ 'qualifier' 'publications',
'has_evidence',
'primary_knowledge_source',
'aggregator_knowledge_source',
- ])
- disease_to_phenotype_extra_fields = ','.join([
- 'onset_qualifier',
- 'onset_qualifier_label',
- 'frequency_qualifier',
- 'frequency_qualifier_label',
- 'sex_qualifier',
- 'sex_qualifier_label'])
+ ]
+ )
+ disease_to_phenotype_extra_fields = ','.join(
+ [
+ 'onset_qualifier',
+ 'onset_qualifier_label',
+ 'frequency_qualifier',
+ 'frequency_qualifier_label',
+ 'sex_qualifier',
+ 'sex_qualifier_label',
+ ]
+ )
gene_to_gene_extra_fields = ','.join(['object_taxon', 'object_taxon_label'])
golr_params = {
@@ -134,7 +140,7 @@ def generate_tsv(tsv_fh, solr, filters):
'csv.separator': '\t',
'csv.header': 'true',
'csv.mv.separator': '|',
- 'fl': default_fields
+ 'fl': default_fields,
}
for filter in filters:
@@ -168,11 +174,9 @@ def generate_tsv(tsv_fh, solr, filters):
resultCount = facet_response['response']['numFound']
if resultCount == 0:
- logger.warning("No results found for {}"
- " with filters {}".format(tsv_fh.name, filters))
+ logger.warning("No results found for {}" " with filters {}".format(tsv_fh.name, filters))
except decoder.JSONDecodeError:
- logger.warning("JSONDecodeError for {}"
- " with filters {}".format(tsv_fh.name, filters))
+ logger.warning("JSONDecodeError for {}" " with filters {}".format(tsv_fh.name, filters))
logger.warning("solr content: {}".format(solr_request.text))
time.sleep(500)
@@ -203,16 +207,9 @@ def generate_tsv(tsv_fh, solr, filters):
def generate_jsonl(fh, solr, filters):
- #jsonl_writer = jsonlines.open(fh)
+ # jsonl_writer = jsonlines.open(fh)
- golr_params = {
- 'q': '*:*',
- 'wt': 'json',
- 'fl': '*',
- 'fq': filters,
- 'start': 0,
- 'rows': 5000
- }
+ golr_params = {'q': '*:*', 'wt': 'json', 'fl': '*', 'fq': filters, 'start': 0, 'rows': 5000}
count_params = {
'wt': 'json',
@@ -239,11 +236,9 @@ def generate_jsonl(fh, solr, filters):
resultCount = facet_response['response']['numFound']
if resultCount == 0:
- logger.warning("No results found for {}"
- " with filters {}".format(fh.name, filters))
+ logger.warning("No results found for {}" " with filters {}".format(fh.name, filters))
except decoder.JSONDecodeError:
- logger.warning("JSONDecodeError for {}"
- " with filters {}".format(fh.name, filters))
+ logger.warning("JSONDecodeError for {}" " with filters {}".format(fh.name, filters))
logger.warning("solr content: {}".format(solr_request.text))
time.sleep(500)
@@ -284,4 +279,3 @@ def fetch_solr_doc(session, solr, params, retries=10):
def camel_to_snake(name):
name = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
return re.sub('([a-z0-9])([A-Z])', r'\1_\2', name).lower()
-
diff --git a/src/monarch_ingest/utils/ingest_utils.py b/src/monarch_ingest/utils/ingest_utils.py
index a8a06fa7..7b1c16c6 100644
--- a/src/monarch_ingest/utils/ingest_utils.py
+++ b/src/monarch_ingest/utils/ingest_utils.py
@@ -23,7 +23,7 @@ def ingest_output_exists(source, output_dir):
ingests = get_ingests()
ingest_config = yaml.load(pkgutil.get_data("monarch_ingest", ingests[source]["config"]), UniqueIncludeLoader)
-
+
has_node_properties = "node_properties" in ingest_config
has_edge_properties = "edge_properties" in ingest_config
diff --git a/src/monarch_ingest/utils/log_utils.py b/src/monarch_ingest/utils/log_utils.py
index 82fcd325..5ce0023c 100644
--- a/src/monarch_ingest/utils/log_utils.py
+++ b/src/monarch_ingest/utils/log_utils.py
@@ -6,21 +6,22 @@
LOGURU_FORMAT = "{time:YYYY-MM-DD_HH:mm:ss} | {level: <8} | {name: <16} | {message}"
LOGURU_FORMAT_SIMPLE = "{time:YYYY-MM-DD_HH:mm:ss} | {level: <8} | {name: <16} | {message}"
+
def get_logger(name: Optional[str] = None, verbose: Optional[bool] = None):
logger = loguru.logger
logger.remove()
logger.add(
- sink = sys.stderr,
- level = "INFO" if (verbose is None) else "DEBUG" if (verbose is True) else "WARNING",
- format = LOGURU_FORMAT,
- colorize = True,
+ sink=sys.stderr,
+ level="INFO" if (verbose is None) else "DEBUG" if (verbose is True) else "WARNING",
+ format=LOGURU_FORMAT,
+ colorize=True,
)
if name:
fp = f"logs/{name}"
logger.add(
- sink = fp + "_{time:YYYY-MM-DD_HH-mm-ss}.log",
- level = "DEBUG",
- format = LOGURU_FORMAT_SIMPLE,
- colorize = True,
+ sink=fp + "_{time:YYYY-MM-DD_HH-mm-ss}.log",
+ level="DEBUG",
+ format=LOGURU_FORMAT_SIMPLE,
+ colorize=True,
)
- return logger
\ No newline at end of file
+ return logger
diff --git a/tests/conftest.py b/tests/conftest.py
index 2508a212..5377e12a 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,11 +1,4 @@
-import types
-from typing import Iterable
-
import pytest
-from koza.cli_runner import get_koza_app, get_translation_table, _set_koza_app, test_koza
-from koza.model.config.source_config import PrimaryFileConfig
-from koza.model.source import Source
-from loguru import logger
@pytest.fixture(scope="package")
@@ -13,81 +6,18 @@ def global_table():
return "src/monarch_ingest/translation_table.yaml"
-@pytest.fixture(scope="package")
-def mock_koza():
- # This should be extracted out but for quick prototyping
- def _mock_write(self, *entities):
- if hasattr(self, '_entities'):
- self._entities.extend(list(entities))
- else:
- self._entities = list(entities)
-
- def _make_mock_koza_app(
- name: str,
- data: Iterable,
- transform_code: str,
- map_cache=None,
- filters=None,
- global_table=None,
- local_table=None,
- ):
- mock_source_file_config = PrimaryFileConfig(
- name=name,
- files=[],
- transform_code=transform_code,
- )
- mock_source_file = Source(mock_source_file_config)
- mock_source_file._reader = data
-
- _set_koza_app(
- source=mock_source_file,
- translation_table=get_translation_table(global_table, local_table, logger),
- logger=logger,
- )
- koza = get_koza_app(name)
-
- # TODO filter mocks
- koza._map_cache = map_cache
- koza.write = types.MethodType(_mock_write, koza)
-
- return koza
-
- def _transform(
- name: str,
- data: Iterable,
- transform_code: str,
- map_cache=None,
- filters=None,
- global_table=None,
- local_table=None,
- ):
- koza_app = _make_mock_koza_app(
- name,
- data,
- transform_code,
- map_cache=map_cache,
- filters=filters,
- global_table=global_table,
- local_table=local_table,
- )
- test_koza(koza_app)
- koza_app.process_sources()
- if not hasattr(koza_app, '_entities'):
- koza_app._entities = []
- return koza_app._entities
-
- return _transform
-
@pytest.fixture
def taxon_label_map_cache():
- return {"taxon-labels": {
- "NCBITaxon:7955": {"label": "Danio rerio"},
- "NCBITaxon:6239": {"label": "Caenorhabditis elegans"},
- "NCBITaxon:44689": {"label": "Dictyostelium discoideum"},
- "NCBITaxon:9606" : {"label": "Homo sapiens"},
- "NCBITaxon:4896" : {"label": "Schizosaccharomyces pombe"},
- "NCBITaxon:9615" : {"label": "Canis lupus familiaris"},
- "NCBITaxon:9913" : {"label": "Bos taurus"},
- "NCBITaxon:9823" : {"label": "Sus scrofa"},
- "NCBITaxon:9031" : {"label": "Gallus gallus"},
- }}
+ return {
+ "taxon-labels": {
+ "NCBITaxon:7955": {"label": "Danio rerio"},
+ "NCBITaxon:6239": {"label": "Caenorhabditis elegans"},
+ "NCBITaxon:44689": {"label": "Dictyostelium discoideum"},
+ "NCBITaxon:9606": {"label": "Homo sapiens"},
+ "NCBITaxon:4896": {"label": "Schizosaccharomyces pombe"},
+ "NCBITaxon:9615": {"label": "Canis lupus familiaris"},
+ "NCBITaxon:9913": {"label": "Bos taurus"},
+ "NCBITaxon:9823": {"label": "Sus scrofa"},
+ "NCBITaxon:9031": {"label": "Gallus gallus"},
+ }
+ }
diff --git a/tests/unit/alliance/test_alliance_gene.py b/tests/unit/alliance/test_alliance_gene.py
index 1ca221c2..267c5b0f 100644
--- a/tests/unit/alliance/test_alliance_gene.py
+++ b/tests/unit/alliance/test_alliance_gene.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -149,10 +150,9 @@ def no_name_row():
@pytest.fixture
def pax2a(mock_koza, source_name, pax2a_row, taxon_label_map_cache, script, global_table):
- row = iter([pax2a_row])
return mock_koza(
source_name,
- row,
+ pax2a_row,
script,
map_cache=taxon_label_map_cache,
global_table=global_table,
@@ -161,10 +161,9 @@ def pax2a(mock_koza, source_name, pax2a_row, taxon_label_map_cache, script, glob
@pytest.fixture
def no_synonym_gene(mock_koza, source_name, no_synonym_row, taxon_label_map_cache, script, global_table):
- row = iter([no_synonym_row])
return mock_koza(
source_name,
- row,
+ no_synonym_row,
script,
map_cache=taxon_label_map_cache,
global_table=global_table,
@@ -173,10 +172,9 @@ def no_synonym_gene(mock_koza, source_name, no_synonym_row, taxon_label_map_cach
@pytest.fixture
def no_name_gene(mock_koza, source_name, no_name_row, taxon_label_map_cache, script, global_table):
- row = iter([no_name_row])
return mock_koza(
source_name,
- row,
+ no_name_row,
script,
map_cache=taxon_label_map_cache,
global_table=global_table,
@@ -188,10 +186,12 @@ def test_gene_information_gene(pax2a):
gene = pax2a[0]
assert gene
+
def test_gene_taxon(pax2a):
gene = pax2a[0]
- assert 'NCBITaxon:7955' in gene.in_taxon
- assert gene.in_taxon_label == 'Danio rerio'
+ assert "NCBITaxon:7955" in gene.in_taxon
+ assert gene.in_taxon_label == "Danio rerio"
+
def test_gene_information_synonym(pax2a):
gene = pax2a[0]
@@ -203,6 +203,7 @@ def test_gene_information_id(pax2a):
gene = pax2a[0]
assert gene.id == "ZFIN:ZDB-GENE-990415-8"
+
def test_gene_information_no_synonyms(no_synonym_gene):
gene = no_synonym_gene[0]
assert gene.synonym is None or len(gene.synonym) == 0
diff --git a/tests/unit/alliance/test_alliance_gene_to_expression.py b/tests/unit/alliance/test_alliance_gene_to_expression.py
index 198209b2..a9a8e9d8 100644
--- a/tests/unit/alliance/test_alliance_gene_to_expression.py
+++ b/tests/unit/alliance/test_alliance_gene_to_expression.py
@@ -1,5 +1,7 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import GeneToExpressionSiteAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
+
@pytest.fixture
def source_name():
@@ -42,10 +44,9 @@ def rat_row():
@pytest.fixture
def rattus(rat_row, mock_koza, source_name, script, global_table):
- rows = iter([rat_row])
return mock_koza(
source_name,
- rows,
+ rat_row,
script,
global_table=global_table,
)
@@ -94,10 +95,9 @@ def mgi_row():
@pytest.fixture
def mouse(mgi_row, mock_koza, source_name, script, global_table):
- rows = iter([mgi_row])
return mock_koza(
source_name,
- rows,
+ mgi_row,
script,
global_table=global_table,
)
@@ -148,10 +148,9 @@ def zfin_row():
@pytest.fixture
def zebrafish(zfin_row, mock_koza, source_name, script, global_table):
- rows = iter([zfin_row])
return mock_koza(
source_name,
- rows,
+ zfin_row,
script,
global_table=global_table,
)
@@ -197,10 +196,9 @@ def fly_row():
@pytest.fixture
def drosophila(fly_row, mock_koza, source_name, script, global_table):
- rows = iter([fly_row])
return mock_koza(
source_name,
- rows,
+ fly_row,
script,
global_table=global_table,
)
@@ -250,10 +248,9 @@ def worm_row():
@pytest.fixture
def worm(worm_row, mock_koza, source_name, script, global_table):
- rows = iter([worm_row])
return mock_koza(
source_name,
- rows,
+ worm_row,
script,
global_table=global_table,
)
@@ -294,10 +291,9 @@ def sgd_row():
@pytest.fixture
def yeast(sgd_row, mock_koza, source_name, script, global_table):
- rows = iter([sgd_row])
return mock_koza(
source_name,
- rows,
+ sgd_row,
script,
global_table=global_table,
)
diff --git a/tests/unit/alliance/test_alliance_gene_to_phenotype.py b/tests/unit/alliance/test_alliance_gene_to_phenotype.py
index 49383c2d..4164f690 100644
--- a/tests/unit/alliance/test_alliance_gene_to_phenotype.py
+++ b/tests/unit/alliance/test_alliance_gene_to_phenotype.py
@@ -1,5 +1,6 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import Gene, GeneToPhenotypicFeatureAssociation, PhenotypicFeature
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -34,11 +35,9 @@ def rat_row():
@pytest.fixture
def rat(rat_row, mock_koza, source_name, script, map_cache, global_table):
# First row is a gene, second is a feature and should get ignored
- rows = iter([rat_row])
-
return mock_koza(
source_name,
- rows,
+ rat_row,
script,
map_cache=map_cache,
global_table=global_table,
@@ -70,11 +69,9 @@ def conditions_row(rat_row):
@pytest.fixture
def conditions_entities(conditions_row, mock_koza, source_name, script, map_cache, global_table):
- rows = iter([conditions_row])
-
return mock_koza(
source_name,
- rows,
+ conditions_row,
script,
map_cache=map_cache,
global_table=global_table,
diff --git a/tests/unit/alliance/test_alliance_publication.py b/tests/unit/alliance/test_alliance_publication.py
index f9b4658e..9cff2a4f 100644
--- a/tests/unit/alliance/test_alliance_publication.py
+++ b/tests/unit/alliance/test_alliance_publication.py
@@ -1,6 +1,7 @@
import datetime
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -47,7 +48,7 @@ def row():
@pytest.mark.skip(reason="Will need to be updated for recent Biolink if used")
def test_research_article(mock_koza, source_name, row, script, global_table):
- entities = mock_koza(source_name, iter([row]), script, global_table=global_table)
+ entities = mock_koza(source_name, row, script, global_table=global_table)
pub = entities[0]
assert pub
assert pub.id == "PMID:27653487"
@@ -75,7 +76,7 @@ def test_mesh_terms(mock_koza, source_name, row, script, global_table, mesh_term
"referenceId": "PMID:23576957",
},
]
- entities = mock_koza(source_name, iter([row]), script, global_table=global_table)
+ entities = mock_koza(source_name, row, script, global_table=global_table)
pub = entities[0]
assert pub
assert mesh_term in pub.mesh_terms
@@ -84,7 +85,7 @@ def test_mesh_terms(mock_koza, source_name, row, script, global_table, mesh_term
@pytest.mark.skip(reason="Will need to be updated for recent Biolink if used")
@pytest.mark.parametrize("author", ["Hong W", "Takshak A", "Osunbayo O", "Kunwar A", "Vershinin M"])
def test_research_authors(mock_koza, source_name, row, script, global_table, author):
- entities = mock_koza(source_name, iter([row]), script, global_table=global_table)
+ entities = mock_koza(source_name, row, script, global_table=global_table)
pub = entities[0]
assert author in pub.authors
@@ -92,7 +93,7 @@ def test_research_authors(mock_koza, source_name, row, script, global_table, aut
@pytest.mark.skip(reason="Will need to be updated for recent Biolink if used")
def test_single_xref(mock_koza, source_name, row, script, global_table):
row["crossReferences"] = [row["crossReferences"][0]]
- entities = mock_koza(source_name, iter([row]), script, global_table=global_table)
+ entities = mock_koza(source_name, row, script, global_table=global_table)
pub = entities[0]
assert pub.xref == ["SGD:S000185012"]
@@ -103,7 +104,7 @@ def test_single_xref(mock_koza, source_name, row, script, global_table):
)
def test_time_parser(mock_koza, source_name, row, script, global_table, creation_date):
row["datePublished"] = creation_date
- entities = mock_koza(source_name, iter([row]), script, global_table=global_table)
+ entities = mock_koza(source_name, row, script, global_table=global_table)
pub = entities[0]
d = pub.creation_date
assert isinstance(d, datetime.date) or isinstance(d, datetime.datetime)
@@ -113,7 +114,7 @@ def test_time_parser(mock_koza, source_name, row, script, global_table, creation
@pytest.mark.parametrize("creation_date", ["Unknown", "2016 Jul-Aug", "2003 ?%p?\b\bhP\u0007 19", "2000 Dec 14-28"])
def test_notatime_parser(mock_koza, source_name, row, script, global_table, creation_date):
row["datePublished"] = creation_date
- entities = mock_koza(source_name, iter([row]), script, global_table=global_table)
+ entities = mock_koza(source_name, row, script, global_table=global_table)
pub = entities[0]
# assert pub.creation_date == None or isinstance(pub.creation_date, datetime.datetime)
d = pub.creation_date
diff --git a/tests/unit/bgee/test_bgee_gene_to_expression.py b/tests/unit/bgee/test_bgee_gene_to_expression.py
index 9a5f0b0c..3946b6cb 100644
--- a/tests/unit/bgee/test_bgee_gene_to_expression.py
+++ b/tests/unit/bgee/test_bgee_gene_to_expression.py
@@ -120,10 +120,10 @@ def smallest_n() -> int:
def test_filter_group_by_rank_short(row_group_1, filter_col, smallest_n):
filtered_group = filter_group_by_rank(row_group_1, filter_col, smallest_n=smallest_n)
- assert type(filtered_group) is list
+ assert isinstance(filtered_group, list)
assert len(filtered_group) == 5
for i in filtered_group:
- assert type(i) is dict
+ assert isinstance(i, dict)
assert i['Gene ID'] == 'ENSSSCG00000000002'
filtered_group_df = pd.DataFrame(filtered_group)
@@ -134,10 +134,10 @@ def test_filter_group_by_rank_short(row_group_1, filter_col, smallest_n):
def test_filter_group_by_rank_long(row_group_2, filter_col, smallest_n):
filtered_group = filter_group_by_rank(row_group_2, filter_col, smallest_n=smallest_n)
- assert type(filtered_group) is list
+ assert isinstance(filtered_group, list)
assert len(filtered_group) == 10
for i in filtered_group:
- assert type(i) is dict
+ assert isinstance(i, dict)
assert i['Gene ID'] == 'ENSSSCG00000000003'
filtered_group_df = pd.DataFrame(filtered_group)
@@ -157,7 +157,7 @@ def test_write_group(row_group_1, bgee_mock_koza):
prev_uuid = 0
object_list = ['CL:0000023', 'CL:0000501', 'UBERON:0000948', 'UBERON:0005417', 'UBERON:0005418']
for index, item in enumerate(write_result):
- assert type(item) == GeneToExpressionSiteAssociation
+ assert isinstance(item, GeneToExpressionSiteAssociation)
assert item.id != prev_uuid
prev_uuid = item.id
assert item.category == ['biolink:GeneToExpressionSiteAssociation']
@@ -169,10 +169,10 @@ def test_write_group(row_group_1, bgee_mock_koza):
def test_get_row_group(bgee_mock_koza, row_group_1, filter_col) -> List:
row_group = get_row_group(bgee_mock_koza)
- assert type(row_group) is list
+ assert isinstance(row_group, list)
assert len(row_group) == 5
for i in row_group:
- assert type(i) is dict
+ assert isinstance(i, dict)
assert row_group == row_group_1
diff --git a/tests/unit/biogrid/test_biogrid.py b/tests/unit/biogrid/test_biogrid.py
index 474a3363..c092cfbb 100644
--- a/tests/unit/biogrid/test_biogrid.py
+++ b/tests/unit/biogrid/test_biogrid.py
@@ -1,9 +1,9 @@
"""
Unit tests for BioGRID protein links ingest
"""
-import pytest
-from biolink_model.datamodel.pydanticmodel_v2 import PairwiseGeneToGeneInteraction
+import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -30,26 +30,26 @@ def basic_row():
return {
"ID Interactor A": "entrez gene/locuslink:6416",
"ID Interactor B": "entrez gene/locuslink:2318",
- "Alt IDs Interactor A": "biogrid:112315|entrez gene/locuslink:MAP2K4|uniprot/swiss-prot:P45985|" +
- "refseq:NP_003001|refseq:NP_001268364",
- "Alt IDs Interactor B": "biogrid:108607|entrez gene/locuslink:FLNC|uniprot/swiss-prot:Q14315|" +
- "refseq:NP_001120959|refseq:NP_001449",
- "Aliases Interactor A": "entrez gene/locuslink:JNKK1(gene name synonym)|" +
- "entrez gene/locuslink:MAPKK4(gene name synonym)|" +
- "entrez gene/locuslink:MEK4(gene name synonym)",
- "Aliases Interactor B": "entrez gene/locuslink:ABP280A(gene name synonym)|" +
- "entrez gene/locuslink:FLN2(gene name synonym)|" +
- "entrez gene/locuslink:MFM5(gene name synonym)|" +
- "entrez gene/locuslink:MPD4(gene name synonym)",
+ "Alt IDs Interactor A": "biogrid:112315|entrez gene/locuslink:MAP2K4|uniprot/swiss-prot:P45985|"
+ + "refseq:NP_003001|refseq:NP_001268364",
+ "Alt IDs Interactor B": "biogrid:108607|entrez gene/locuslink:FLNC|uniprot/swiss-prot:Q14315|"
+ + "refseq:NP_001120959|refseq:NP_001449",
+ "Aliases Interactor A": "entrez gene/locuslink:JNKK1(gene name synonym)|"
+ + "entrez gene/locuslink:MAPKK4(gene name synonym)|"
+ + "entrez gene/locuslink:MEK4(gene name synonym)",
+ "Aliases Interactor B": "entrez gene/locuslink:ABP280A(gene name synonym)|"
+ + "entrez gene/locuslink:FLN2(gene name synonym)|"
+ + "entrez gene/locuslink:MFM5(gene name synonym)|"
+ + "entrez gene/locuslink:MPD4(gene name synonym)",
"Interaction Detection Method": 'psi-mi:"MI:0018"(two hybrid)',
"Publication 1st Author": "Marti A (1997)",
- "Publication Identifiers": "pubmed:9006895|pubmed:10727406",
+ "Publication Identifiers": "pubmed:9006895|pubmed:10727406",
"Taxid Interactor A": "taxid:9606",
"Taxid Interactor B": "taxid:9606",
"Interaction Types": 'psi-mi:"MI:0407"(direct interaction)',
"Source Database": 'psi-mi:"MI:0463"(biogrid)',
"Interaction Identifiers": "biogrid:103",
- "Confidence Values": ""
+ "Confidence Values": "",
}
@@ -65,12 +65,7 @@ def basic_pl(mock_koza, source_name, basic_row, script, global_table):
:param global_table:
:return:
"""
- return mock_koza(
- name=source_name,
- data=iter([basic_row]),
- transform_code=script,
- global_table=global_table
- )
+ return mock_koza(name=source_name, data=basic_row, transform_code=script, global_table=global_table)
def test_association(basic_pl):
diff --git a/tests/unit/ctd/test_ctd_chemical_to_disease.py b/tests/unit/ctd/test_ctd_chemical_to_disease.py
index d259569e..6a685806 100644
--- a/tests/unit/ctd/test_ctd_chemical_to_disease.py
+++ b/tests/unit/ctd/test_ctd_chemical_to_disease.py
@@ -1,7 +1,10 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import ChemicalToDiseaseOrPhenotypicFeatureAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
+
from monarch_ingest.constants import BIOLINK_TREATS_OR_APPLIED_OR_STUDIED_TO_TREAT
+
@pytest.fixture
def source_name():
return "ctd_chemical_to_disease"
@@ -15,20 +18,20 @@ def script():
@pytest.fixture
def no_direct_evidence(mock_koza, source_name, script, global_table):
row = {
- 'ChemicalName': '10074-G5',
- 'ChemicalID': 'C534883',
- 'CasRN': '',
- 'DiseaseName': 'Adenocarcinoma',
- 'DiseaseID': 'MESH:D000230',
- 'DirectEvidence': '',
- 'InferenceGeneSymbol': 'MYC',
- 'InferenceScore': '4.08',
- 'OmimIDs': '',
- 'PubMedIDs': '26432044',
+ "ChemicalName": "10074-G5",
+ "ChemicalID": "C534883",
+ "CasRN": "",
+ "DiseaseName": "Adenocarcinoma",
+ "DiseaseID": "MESH:D000230",
+ "DirectEvidence": "",
+ "InferenceGeneSymbol": "MYC",
+ "InferenceScore": "4.08",
+ "OmimIDs": "",
+ "PubMedIDs": "26432044",
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -37,20 +40,20 @@ def no_direct_evidence(mock_koza, source_name, script, global_table):
@pytest.fixture
def marker_mechanism(mock_koza, source_name, script, global_table):
row = {
- 'ChemicalName': '10,10-bis(4-pyridinylmethyl)-9(10H)-anthracenone',
- 'ChemicalID': 'C112297',
- 'CasRN': '',
- 'DiseaseName': 'Hyperkinesis',
- 'DiseaseID': 'MESH:D006948',
- 'DirectEvidence': 'marker/mechanism',
- 'InferenceGeneSymbol': '',
- 'InferenceScore': '',
- 'OmimIDs': '',
- 'PubMedIDs': '19098162',
+ "ChemicalName": "10,10-bis(4-pyridinylmethyl)-9(10H)-anthracenone",
+ "ChemicalID": "C112297",
+ "CasRN": "",
+ "DiseaseName": "Hyperkinesis",
+ "DiseaseID": "MESH:D006948",
+ "DirectEvidence": "marker/mechanism",
+ "InferenceGeneSymbol": "",
+ "InferenceScore": "",
+ "OmimIDs": "",
+ "PubMedIDs": "19098162",
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -59,20 +62,20 @@ def marker_mechanism(mock_koza, source_name, script, global_table):
@pytest.fixture
def therapeutic(mock_koza, source_name, script, global_table):
row = {
- 'ChemicalName': '10,11-dihydro-10-hydroxycarbamazepine',
- 'ChemicalID': 'C039775',
- 'CasRN': '',
- 'DiseaseName': 'Epilepsy',
- 'DiseaseID': 'MESH:D004827',
- 'DirectEvidence': 'therapeutic',
- 'InferenceGeneSymbol': '',
- 'InferenceScore': '',
- 'OmimIDs': '',
- 'PubMedIDs': '17516704|123',
+ "ChemicalName": "10,11-dihydro-10-hydroxycarbamazepine",
+ "ChemicalID": "C039775",
+ "CasRN": "",
+ "DiseaseName": "Epilepsy",
+ "DiseaseID": "MESH:D004827",
+ "DirectEvidence": "therapeutic",
+ "InferenceGeneSymbol": "",
+ "InferenceScore": "",
+ "OmimIDs": "",
+ "PubMedIDs": "17516704|123",
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -95,7 +98,7 @@ def test_therapeutic_entities(therapeutic):
association = [e for e in entities if isinstance(e, ChemicalToDiseaseOrPhenotypicFeatureAssociation)][0]
assert association
assert association.predicate == BIOLINK_TREATS_OR_APPLIED_OR_STUDIED_TO_TREAT
- assert 'PMID:17516704' in association.publications
- assert 'PMID:123' in association.publications
+ assert "PMID:17516704" in association.publications
+ assert "PMID:123" in association.publications
assert association.primary_knowledge_source == "infores:ctd"
assert "infores:monarchinitiative" in association.aggregator_knowledge_source
diff --git a/tests/unit/dictybase/test_dictybase_gene.py b/tests/unit/dictybase/test_dictybase_gene.py
index 675ce4d4..2de2c344 100644
--- a/tests/unit/dictybase/test_dictybase_gene.py
+++ b/tests/unit/dictybase/test_dictybase_gene.py
@@ -2,6 +2,7 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import Gene
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -25,7 +26,7 @@ def test_row_1():
"""
:return: Test Dictybase Gene input data row.
"""
- return {'GENE ID': 'DDB_G0269222', 'Gene Name': 'gefB', 'Synonyms': 'RasGEFB, RasGEF'}
+ return {"GENE ID": "DDB_G0269222", "Gene Name": "gefB", "Synonyms": "RasGEFB, RasGEF"}
@pytest.fixture
@@ -44,7 +45,7 @@ def basic_dictybase_1(mock_koza, source_name, script, taxon_label_map_cache, tes
"""
return mock_koza(
name=source_name,
- data=iter([test_row_1]),
+ data=test_row_1,
transform_code=script,
map_cache=taxon_label_map_cache,
global_table=global_table,
@@ -59,7 +60,7 @@ def test_dictybase_ncbi_mapped_gene_ingest(basic_dictybase_1):
assert entity[0].id == "dictyBase:DDB_G0269222"
assert entity[0].symbol == "gefB"
assert entity[0].name == "gefB"
- assert 'RasGEFB' in entity[0].synonym
- assert 'RasGEF' in entity[0].synonym
+ assert "RasGEFB" in entity[0].synonym
+ assert "RasGEF" in entity[0].synonym
assert "NCBITaxon:44689" in entity[0].in_taxon
assert "infores:dictybase" in entity[0].provided_by
diff --git a/tests/unit/dictybase/test_dictybase_gene_to_phenotype.py b/tests/unit/dictybase/test_dictybase_gene_to_phenotype.py
index e5431c35..d85e1db9 100644
--- a/tests/unit/dictybase/test_dictybase_gene_to_phenotype.py
+++ b/tests/unit/dictybase/test_dictybase_gene_to_phenotype.py
@@ -2,6 +2,7 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import GeneToPhenotypicFeatureAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
from monarch_ingest.ingests.dictybase.utils import parse_phenotypes
@@ -108,7 +109,7 @@ def basic_dictybase_1(mock_koza, source_name, script, test_row_1, global_table,
:return: mock_koza application
"""
return mock_koza(
- name=source_name, data=iter([test_row_1]), transform_code=script, global_table=global_table, map_cache=map_cache
+ name=source_name, data=test_row_1, transform_code=script, global_table=global_table, map_cache=map_cache
)
@@ -164,7 +165,7 @@ def basic_dictybase_2(mock_koza, source_name, script, test_row_2, global_table,
:return: mock_koza application
"""
return mock_koza(
- name=source_name, data=iter([test_row_2]), transform_code=script, global_table=global_table, map_cache=map_cache
+ name=source_name, data=test_row_2, transform_code=script, global_table=global_table, map_cache=map_cache
)
diff --git a/tests/unit/flybase/test_flybase_publication_to_gene.py b/tests/unit/flybase/test_flybase_publication_to_gene.py
index b9524d4f..80f2f24c 100644
--- a/tests/unit/flybase/test_flybase_publication_to_gene.py
+++ b/tests/unit/flybase/test_flybase_publication_to_gene.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
# This name must match the ingest name in the transform code
@@ -29,7 +30,7 @@ def basic_row():
def basic_g2p(mock_koza, source_name, basic_row, script, global_table):
return mock_koza(
source_name,
- iter([basic_row]),
+ basic_row,
script,
global_table=global_table,
)
@@ -46,10 +47,10 @@ def test_association(basic_g2p):
@pytest.fixture
def basic_g2p_without_pmid(mock_koza, source_name, basic_row, script, global_table):
- basic_row['PubMed_id'] = None
+ basic_row["PubMed_id"] = None
return mock_koza(
source_name,
- iter([basic_row]),
+ basic_row,
script,
global_table=global_table,
)
diff --git a/tests/unit/go/test_go_annotation.py b/tests/unit/go/test_go_annotation.py
index 59449d2e..376e7019 100644
--- a/tests/unit/go/test_go_annotation.py
+++ b/tests/unit/go/test_go_annotation.py
@@ -6,6 +6,7 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import Association
+from koza.utils.testing_utils import mock_koza # noqa: F401 # noqa: F401
from loguru import logger
from monarch_ingest.ingests.go.annotation_utils import parse_identifiers
@@ -97,23 +98,23 @@ def test_rows():
},
# Multiple taxa
{
- 'DB': 'WB',
- 'DB_Object_ID': 'WBGene00000013',
- 'DB_Object_Symbol': 'abf-2',
- 'Qualifier': 'involved_in',
- 'GO_ID': 'GO:0050830',
- 'DB_Reference': 'WB_REF:WBPaper00045314|PMID:24882217',
- 'Evidence_Code': 'IEP',
- 'With_or_From': '',
- 'Aspect': 'P',
- 'DB_Object_Name': '',
- 'DB_Object_Synonym': 'C50F2.10|C50F2.e',
- 'DB_Object_Type': 'gene',
- 'Taxon': 'taxon:6239|taxon:46170',
- 'Date': '20140827',
- 'Assigned_By': 'WB',
- 'Annotation_Extension': '',
- 'Gene_Product_Form_ID': '',
+ "DB": "WB",
+ "DB_Object_ID": "WBGene00000013",
+ "DB_Object_Symbol": "abf-2",
+ "Qualifier": "involved_in",
+ "GO_ID": "GO:0050830",
+ "DB_Reference": "WB_REF:WBPaper00045314|PMID:24882217",
+ "Evidence_Code": "IEP",
+ "With_or_From": "",
+ "Aspect": "P",
+ "DB_Object_Name": "",
+ "DB_Object_Synonym": "C50F2.10|C50F2.e",
+ "DB_Object_Type": "gene",
+ "Taxon": "taxon:6239|taxon:46170",
+ "Date": "20140827",
+ "Assigned_By": "WB",
+ "Annotation_Extension": "",
+ "Gene_Product_Form_ID": "",
},
# Test default qualifier override for molecular function
{
@@ -316,7 +317,7 @@ def basic_go(mock_koza, source_name, test_rows, script, global_table, local_tabl
"""
return mock_koza(
name=source_name,
- data=iter(test_rows),
+ data=test_rows,
transform_code=script,
global_table=global_table,
local_table=local_table,
@@ -470,28 +471,28 @@ def test_association(basic_go):
@pytest.fixture
def mgi_entities(mock_koza, source_name, script, global_table, local_table):
row = {
- 'DB': 'MGI',
- 'DB_Object_ID': 'MGI:1918911',
- 'DB_Object_Symbol': '0610005C13Rik',
- 'Qualifier': 'enables',
- 'GO_ID': 'GO:0003674',
- 'DB_Reference': 'MGI:MGI:2156816|GO_REF:0000015',
- 'Evidence_Code': 'ND',
- 'With_or_From': '',
- 'Aspect': 'F',
- 'DB_Object_Name': 'RIKEN cDNA 0610005C13 gene',
- 'DB_Object_Synonym': '',
- 'DB_Object_Type': 'gene',
- 'Taxon': 'taxon:10090',
- 'Date': '20200917',
- 'Assigned_By': 'MGI',
- 'Annotation_Extension': '',
- 'Gene_Product_Form_ID': '',
+ "DB": "MGI",
+ "DB_Object_ID": "MGI:1918911",
+ "DB_Object_Symbol": "0610005C13Rik",
+ "Qualifier": "enables",
+ "GO_ID": "GO:0003674",
+ "DB_Reference": "MGI:MGI:2156816|GO_REF:0000015",
+ "Evidence_Code": "ND",
+ "With_or_From": "",
+ "Aspect": "F",
+ "DB_Object_Name": "RIKEN cDNA 0610005C13 gene",
+ "DB_Object_Synonym": "",
+ "DB_Object_Type": "gene",
+ "Taxon": "taxon:10090",
+ "Date": "20200917",
+ "Assigned_By": "MGI",
+ "Annotation_Extension": "",
+ "Gene_Product_Form_ID": "",
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
local_table=local_table,
diff --git a/tests/unit/hgnc/test_hgnc_gene.py b/tests/unit/hgnc/test_hgnc_gene.py
index 84fe02a6..70629d8c 100644
--- a/tests/unit/hgnc/test_hgnc_gene.py
+++ b/tests/unit/hgnc/test_hgnc_gene.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -29,7 +30,7 @@ def gene_row():
@pytest.fixture
def pax2a(mock_koza, source_name, gene_row, script, taxon_label_map_cache, global_table):
- row = iter([gene_row])
+ row = gene_row
return mock_koza(
source_name,
row,
@@ -48,13 +49,13 @@ def test_gene(pax2a):
def test_gene_information_synonym(pax2a):
gene = pax2a[0]
assert gene.synonym
- assert gene.synonym == ['ACF', 'ASP', 'ACF64', 'ACF65', 'APOBEC1CF', '', '', '']
+ assert gene.synonym == ["ACF", "ASP", "ACF64", "ACF65", "APOBEC1CF", "", "", ""]
def test_gene_information_xref(pax2a):
gene = pax2a[0]
assert gene.xref
- assert gene.xref == ['ENSEMBL:ENSG00000148584', 'OMIM:618199']
+ assert gene.xref == ["ENSEMBL:ENSG00000148584", "OMIM:618199"]
# Commenting out publication ingests at least temporarily
diff --git a/tests/unit/hpoa/test_hpoa_disease_mode_of_inheritance.py b/tests/unit/hpoa/test_hpoa_disease_mode_of_inheritance.py
index f0682519..476afaa1 100644
--- a/tests/unit/hpoa/test_hpoa_disease_mode_of_inheritance.py
+++ b/tests/unit/hpoa/test_hpoa_disease_mode_of_inheritance.py
@@ -1,27 +1,25 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import DiseaseOrPhenotypicFeatureToGeneticInheritanceAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
def d2moi_entities(mock_koza, global_table):
- row = iter(
- [
- {
- "database_id": "OMIM:300425",
- "disease_name": "Autism susceptibility, X-linked 1",
- "qualifier": "",
- "hpo_id": "HP:0001417",
- "reference": "OMIM:300425",
- "evidence": "IEA",
- "onset": "",
- "frequency": "",
- "sex": "",
- "modifier": "",
- "aspect": "I", # assert 'Inheritance' test record
- "biocuration": "HPO:iea[2009-02-17]",
- }
- ]
- )
+ row = {
+ "database_id": "OMIM:300425",
+ "disease_name": "Autism susceptibility, X-linked 1",
+ "qualifier": "",
+ "hpo_id": "HP:0001417",
+ "reference": "OMIM:300425",
+ "evidence": "IEA",
+ "onset": "",
+ "frequency": "",
+ "sex": "",
+ "modifier": "",
+ "aspect": "I", # assert 'Inheritance' test record
+ "biocuration": "HPO:iea[2009-02-17]",
+ }
+
return mock_koza(
name="hpoa_disease_mode_of_inheritance",
data=row,
diff --git a/tests/unit/hpoa/test_hpoa_disease_phenotype.py b/tests/unit/hpoa/test_hpoa_disease_phenotype.py
index 6aa88401..acf984d5 100644
--- a/tests/unit/hpoa/test_hpoa_disease_phenotype.py
+++ b/tests/unit/hpoa/test_hpoa_disease_phenotype.py
@@ -1,27 +1,24 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import DiseaseToPhenotypicFeatureAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
def d2pf_entities_1(mock_koza, global_table):
- row = iter(
- [
- {
- "database_id": "OMIM:614856",
- "disease_name": "Osteogenesis imperfecta, type XIII",
- "qualifier": "NOT",
- "hpo_id": "HP:0000343",
- "reference": "OMIM:614856",
- "evidence": "TAS",
- "onset": "HP:0003593",
- "frequency": "1/1",
- "sex": "FEMALE",
- "modifier": "",
- "aspect": "C", # assert 'Clinical' test record
- "biocuration": "HPO:skoehler[2012-11-16]",
- }
- ]
- )
+ row = {
+ "database_id": "OMIM:614856",
+ "disease_name": "Osteogenesis imperfecta, type XIII",
+ "qualifier": "NOT",
+ "hpo_id": "HP:0000343",
+ "reference": "OMIM:614856",
+ "evidence": "TAS",
+ "onset": "HP:0003593",
+ "frequency": "1/1",
+ "sex": "FEMALE",
+ "modifier": "",
+ "aspect": "C", # assert 'Clinical' test record
+ "biocuration": "HPO:skoehler[2012-11-16]",
+ }
return mock_koza(
name="hpoa_disease_to_phenotype",
data=row,
@@ -47,31 +44,27 @@ def test_disease_to_phenotype_transform_1(d2pf_entities_1):
assert association.has_total == 1
assert association.has_quotient == 1.0 # '1/1' implies Always present, i.e. in 100% of the cases.
assert association.has_percentage == 100.0
- assert association.frequency_qualifier is None # No implied frequency qualifier based on the '1/1' ratio.
+ assert association.frequency_qualifier is None # No implied frequency qualifier based on the '1/1' ratio.
assert association.primary_knowledge_source == "infores:hpo-annotations"
assert "infores:monarchinitiative" in association.aggregator_knowledge_source
@pytest.fixture
def d2pf_entities_2(mock_koza, global_table):
- row = iter(
- [
- {
- "database_id": "OMIM:117650",
- "disease_name": "Cerebrocostomandibular syndrome",
- "qualifier": "",
- "hpo_id": "HP:0001249",
- "reference": "OMIM:117650",
- "evidence": "TAS",
- "onset": "",
- "frequency": "50%",
- "sex": "",
- "modifier": "",
- "aspect": "P",
- "biocuration": "HPO:probinson[2009-02-17]",
- }
- ]
- )
+ row = {
+ "database_id": "OMIM:117650",
+ "disease_name": "Cerebrocostomandibular syndrome",
+ "qualifier": "",
+ "hpo_id": "HP:0001249",
+ "reference": "OMIM:117650",
+ "evidence": "TAS",
+ "onset": "",
+ "frequency": "50%",
+ "sex": "",
+ "modifier": "",
+ "aspect": "P",
+ "biocuration": "HPO:probinson[2009-02-17]",
+ }
return mock_koza(
name="hpoa_disease_to_phenotype",
data=row,
@@ -95,31 +88,27 @@ def test_disease_to_phenotype_transform_2(d2pf_entities_2):
assert not association.onset_qualifier
assert association.has_percentage == 50.0 # '50%' implies Present in 30% to 79% of the cases.
assert association.has_quotient == 0.5
- assert association.frequency_qualifier is None # No implied frequency qualifier based on the '50%' ratio.
+ assert association.frequency_qualifier is None # No implied frequency qualifier based on the '50%' ratio.
assert association.primary_knowledge_source == "infores:hpo-annotations"
assert "infores:monarchinitiative" in association.aggregator_knowledge_source
@pytest.fixture
def d2pf_entities_3(mock_koza, global_table):
- row = iter(
- [
- {
- "database_id": "OMIM:117650",
- "disease_name": "Cerebrocostomandibular syndrome",
- "qualifier": "",
- "hpo_id": "HP:0001545",
- "reference": "OMIM:117650;PMID:12345",
- "evidence": "TAS",
- "onset": "",
- "frequency": "HP:0040283",
- "sex": "",
- "modifier": "",
- "aspect": "P",
- "biocuration": "HPO:skoehler[2017-07-13]",
- }
- ]
- )
+ row = {
+ "database_id": "OMIM:117650",
+ "disease_name": "Cerebrocostomandibular syndrome",
+ "qualifier": "",
+ "hpo_id": "HP:0001545",
+ "reference": "OMIM:117650;PMID:12345",
+ "evidence": "TAS",
+ "onset": "",
+ "frequency": "HP:0040283",
+ "sex": "",
+ "modifier": "",
+ "aspect": "P",
+ "biocuration": "HPO:skoehler[2017-07-13]",
+ }
return mock_koza(
name="hpoa_disease_to_phenotype",
data=row,
@@ -153,24 +142,20 @@ def test_disease_to_phenotype_transform_3(d2pf_entities_3):
@pytest.fixture
def d2pf_frequency_fraction_entities(mock_koza, global_table, d2pf_entities_1):
- row = iter(
- [
- {
- "database_id": "OMIM:117650",
- "disease_name": "Cerebrocostomandibular syndrome",
- "qualifier": "",
- "hpo_id": "HP:0001545",
- "reference": "OMIM:117650",
- "evidence": "TAS",
- "onset": "",
- "frequency": "3/20",
- "sex": "",
- "modifier": "",
- "aspect": "P",
- "biocuration": "HPO:skoehler[2017-07-13]",
- }
- ]
- )
+ row = {
+ "database_id": "OMIM:117650",
+ "disease_name": "Cerebrocostomandibular syndrome",
+ "qualifier": "",
+ "hpo_id": "HP:0001545",
+ "reference": "OMIM:117650",
+ "evidence": "TAS",
+ "onset": "",
+ "frequency": "3/20",
+ "sex": "",
+ "modifier": "",
+ "aspect": "P",
+ "biocuration": "HPO:skoehler[2017-07-13]",
+ }
return mock_koza(
name="hpoa_disease_to_phenotype",
data=row,
@@ -179,12 +164,16 @@ def d2pf_frequency_fraction_entities(mock_koza, global_table, d2pf_entities_1):
local_table="./src/monarch_ingest/ingests/hpoa/hpoa-translation.yaml",
)
+
def test_disease_to_phenotype_transform_frequency_fraction(d2pf_frequency_fraction_entities):
assert d2pf_frequency_fraction_entities
assert len(d2pf_frequency_fraction_entities) == 1
- association = [entity for entity in d2pf_frequency_fraction_entities if isinstance(entity, DiseaseToPhenotypicFeatureAssociation)][0]
+ association = [
+ entity
+ for entity in d2pf_frequency_fraction_entities
+ if isinstance(entity, DiseaseToPhenotypicFeatureAssociation)
+ ][0]
assert association.has_count == 3
assert association.has_total == 20
assert association.has_quotient == 0.15
assert association.has_percentage == 15.0
-
diff --git a/tests/unit/hpoa/test_hpoa_gene_to_disease.py b/tests/unit/hpoa/test_hpoa_gene_to_disease.py
index 587f2ea8..8f209ef8 100644
--- a/tests/unit/hpoa/test_hpoa_gene_to_disease.py
+++ b/tests/unit/hpoa/test_hpoa_gene_to_disease.py
@@ -1,7 +1,8 @@
from typing import List
import pytest
-from biolink_model.datamodel.pydanticmodel_v2 import GeneToDiseaseAssociation, CausalGeneToDiseaseAssociation
+from biolink_model.datamodel.pydanticmodel_v2 import CausalGeneToDiseaseAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
from monarch_ingest.constants import (
BIOLINK_CAUSES,
@@ -66,7 +67,7 @@ def row():
def basic_g2d_entities(mock_koza, row):
return mock_koza(
name="hpoa_gene_to_disease",
- data=iter([row]),
+ data=row,
transform_code="./src/monarch_ingest/ingests/hpoa/gene_to_disease.py",
)
diff --git a/tests/unit/hpoa/test_hpoa_gene_to_phenotype.py b/tests/unit/hpoa/test_hpoa_gene_to_phenotype.py
index 3420f789..ab2fdd0b 100644
--- a/tests/unit/hpoa/test_hpoa_gene_to_phenotype.py
+++ b/tests/unit/hpoa/test_hpoa_gene_to_phenotype.py
@@ -1,5 +1,6 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import GeneToPhenotypicFeatureAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -43,7 +44,7 @@ def basic_hpoa(mock_koza, source_name, script, test_row):
:return: mock_koza application
"""
- return mock_koza(name=source_name, data=iter([test_row]), transform_code=script)
+ return mock_koza(name=source_name, data=test_row, transform_code=script)
@pytest.mark.parametrize("cls", [GeneToPhenotypicFeatureAssociation])
diff --git a/tests/unit/hpoa/test_hpoa_utils.py b/tests/unit/hpoa/test_hpoa_utils.py
index da25e347..aa510e26 100644
--- a/tests/unit/hpoa/test_hpoa_utils.py
+++ b/tests/unit/hpoa/test_hpoa_utils.py
@@ -1,15 +1,13 @@
"""
Tests of HPOA Utils methods
"""
-from typing import Optional, Tuple
import pytest
from monarch_ingest.ingests.hpoa.hpoa_utils import (
FrequencyHpoTerm,
get_hpo_term,
- map_percentage_frequency_to_hpo_term,
- phenotype_frequency_to_hpo_term, Frequency,
+ phenotype_frequency_to_hpo_term,
)
@@ -44,7 +42,7 @@ def test_get_hpo_term():
("HP:0040282", "HP:0040282", None, None, None, None),
("HP:0040281", "HP:0040281", None, None, None, None),
("HP:0040280", "HP:0040280", None, None, None, None),
- ]
+ ],
)
def test_frequency_result(raw_value, frequency_qualifier, percentage, quotient, count, total):
frequency = phenotype_frequency_to_hpo_term(raw_value)
diff --git a/tests/unit/mgi/test_mgi_publication_to_gene.py b/tests/unit/mgi/test_mgi_publication_to_gene.py
index e1a6a7fe..dc92d00a 100644
--- a/tests/unit/mgi/test_mgi_publication_to_gene.py
+++ b/tests/unit/mgi/test_mgi_publication_to_gene.py
@@ -1,5 +1,6 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import InformationContentEntityToNamedThingAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
pubmed_ids = "11217851|12466851|18163442|21267068|19213785|27357688|27914912|21873635|31504408"
markers = "Cbe1|Smrp1"
@@ -30,7 +31,7 @@ def basic_row():
def basic_entities(mock_koza, source_name, basic_row, script, global_table):
return mock_koza(
source_name,
- iter([basic_row]),
+ basic_row,
script,
global_table=global_table,
)
diff --git a/tests/unit/ncbi/test_ncbi_gene.py b/tests/unit/ncbi/test_ncbi_gene.py
index 99b356f6..2f31ff75 100644
--- a/tests/unit/ncbi/test_ncbi_gene.py
+++ b/tests/unit/ncbi/test_ncbi_gene.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -24,7 +25,7 @@ def gene_row():
@pytest.fixture
def gene_entities(mock_koza, source_name, gene_row, script, taxon_label_map_cache, global_table):
- row = iter([gene_row])
+ row = gene_row
return mock_koza(
source_name,
row,
diff --git a/tests/unit/panther/test_genome_orthologs.py b/tests/unit/panther/test_genome_orthologs.py
index cebf0cd6..01937ffd 100644
--- a/tests/unit/panther/test_genome_orthologs.py
+++ b/tests/unit/panther/test_genome_orthologs.py
@@ -1,7 +1,9 @@
"""
Unit tests for Panther Gene Orthology relationships ingest
"""
+
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -140,7 +142,7 @@ def well_behaved_record_1(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -162,7 +164,7 @@ def well_behaved_record_2(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -185,7 +187,7 @@ def well_behaved_record_3(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -207,7 +209,7 @@ def well_behaved_flybase_record(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -230,7 +232,7 @@ def well_behaved_wormbase_record(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -253,7 +255,7 @@ def well_behaved_pombase_record(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -275,7 +277,7 @@ def odd_mgi_gene_id_record(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -297,7 +299,7 @@ def pig_gene_id_record(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -319,7 +321,7 @@ def aspergillus_gene_id_record(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -342,7 +344,7 @@ def aardvark_is_not_a_species_record(mock_koza, source_name, script, global_tabl
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -364,7 +366,7 @@ def empty_gene_record(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -386,7 +388,7 @@ def ill_formed_gene_spec_string(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -409,7 +411,7 @@ def gene_prefix_gene_spec_string(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -431,7 +433,7 @@ def geneid_prefix_gene_spec_string(mock_koza, source_name, script, global_table)
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -455,7 +457,7 @@ def gene_orfname_prefix_gene_spec_string(mock_koza, source_name, script, global_
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -479,7 +481,7 @@ def gene_orderedlocusname_prefix_gene_spec_string(mock_koza, source_name, script
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
@@ -506,7 +508,7 @@ def test_gene_orderedlocusname_gene_spec_string(gene_orderedlocusname_prefix_gen
# }
# return mock_koza(
# name=source_name,
-# data=iter([row]),
+# data=row,
# transform_code=script,
# global_table=global_table,
# )
diff --git a/tests/unit/pombase/test_pombase_gene.py b/tests/unit/pombase/test_pombase_gene.py
index e5fa3750..c500be9a 100644
--- a/tests/unit/pombase/test_pombase_gene.py
+++ b/tests/unit/pombase/test_pombase_gene.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -16,12 +17,13 @@ def gene_information_entities(mock_koza, taxon_label_map_cache, global_table):
return mock_koza(
"pombase_gene",
- iter([row]),
+ row,
"./src/monarch_ingest/ingests/pombase/gene.py",
map_cache=taxon_label_map_cache,
global_table=global_table,
)
+
@pytest.fixture
def gene_entity_no_name(mock_koza, taxon_label_map_cache, global_table):
row = {
@@ -37,7 +39,7 @@ def gene_entity_no_name(mock_koza, taxon_label_map_cache, global_table):
return mock_koza(
"pombase_gene",
- iter([row]),
+ row,
"./src/monarch_ingest/ingests/pombase/gene.py",
map_cache=taxon_label_map_cache,
global_table=global_table,
@@ -65,8 +67,9 @@ def test_gene_xref(gene_information_entities):
gene = gene_information_entities[0]
assert "UniProtKB:Q9US52" in gene.xref
+
def test_gene_systematic_id_as_name(gene_entity_no_name):
gene = gene_entity_no_name[0]
assert gene.name == "SPAC1002.06c"
assert gene.full_name == "SPAC1002.06c"
- assert gene.symbol == "SPAC1002.06c"
\ No newline at end of file
+ assert gene.symbol == "SPAC1002.06c"
diff --git a/tests/unit/pombase/test_pombase_gene_to_phenotype.py b/tests/unit/pombase/test_pombase_gene_to_phenotype.py
index 8096b666..6d956017 100644
--- a/tests/unit/pombase/test_pombase_gene_to_phenotype.py
+++ b/tests/unit/pombase/test_pombase_gene_to_phenotype.py
@@ -1,35 +1,32 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import Gene, GeneToPhenotypicFeatureAssociation, PhenotypicFeature
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
def entities(mock_koza, global_table):
- row = iter(
- [
- {
- "Database name": "PomBase",
- "Gene systematic ID": "SPAC24B11.06c",
- "FYPO ID": "FYPO:0004058",
- "Allele description": "",
- "Expression": "",
- "Parental strain": "972 h-",
- "Strain name (background)": "",
- "Genotype description": "",
- "Gene name": "sty1",
- "Allele name": "sty1delta",
- "Allele synonym": "",
- "Allele type": "deletion",
- "Evidence": "cell growth assay evidence",
- "Condition": "",
- "Penetrance": "",
- "Severity": "FYPO_EXT:0000001",
- "Extension": "",
- "Reference": "PMID:19436749",
- "Taxon": "4896",
- "Date": "2014-11-21",
- }
- ]
- )
+ row = {
+ "Database name": "PomBase",
+ "Gene systematic ID": "SPAC24B11.06c",
+ "FYPO ID": "FYPO:0004058",
+ "Allele description": "",
+ "Expression": "",
+ "Parental strain": "972 h-",
+ "Strain name (background)": "",
+ "Genotype description": "",
+ "Gene name": "sty1",
+ "Allele name": "sty1delta",
+ "Allele synonym": "",
+ "Allele type": "deletion",
+ "Evidence": "cell growth assay evidence",
+ "Condition": "",
+ "Penetrance": "",
+ "Severity": "FYPO_EXT:0000001",
+ "Extension": "",
+ "Reference": "PMID:19436749",
+ "Taxon": "4896",
+ "Date": "2014-11-21",
+ }
return mock_koza(
name="pombase_gene_to_phenotype",
diff --git a/tests/unit/reactome/test_reactome_chemical_to_pathway.py b/tests/unit/reactome/test_reactome_chemical_to_pathway.py
index e0ace31b..1b941de4 100644
--- a/tests/unit/reactome/test_reactome_chemical_to_pathway.py
+++ b/tests/unit/reactome/test_reactome_chemical_to_pathway.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -26,7 +27,7 @@ def basic_row():
@pytest.fixture
def basic_g2p(mock_koza, source_name, basic_row, script, global_table, local_table):
- return mock_koza(source_name, iter([basic_row]), script, global_table=global_table, local_table=local_table)
+ return mock_koza(source_name, basic_row, script, global_table=global_table, local_table=local_table)
def test_association(basic_g2p):
diff --git a/tests/unit/reactome/test_reactome_gene_to_pathway.py b/tests/unit/reactome/test_reactome_gene_to_pathway.py
index ca398d42..bd0dd5b8 100644
--- a/tests/unit/reactome/test_reactome_gene_to_pathway.py
+++ b/tests/unit/reactome/test_reactome_gene_to_pathway.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -31,7 +32,7 @@ def basic_row():
@pytest.fixture
def basic_g2p(mock_koza, source_name, basic_row, script, global_table, local_table):
- return mock_koza(source_name, iter([basic_row]), script, global_table=global_table, local_table=local_table)
+ return mock_koza(source_name, basic_row, script, global_table=global_table, local_table=local_table)
def test_association(basic_g2p):
diff --git a/tests/unit/reactome/test_reactome_pathway.py b/tests/unit/reactome/test_reactome_pathway.py
index d71add40..23428e2b 100644
--- a/tests/unit/reactome/test_reactome_pathway.py
+++ b/tests/unit/reactome/test_reactome_pathway.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -26,7 +27,7 @@ def basic_row():
@pytest.fixture
def basic_g2p(mock_koza, source_name, basic_row, script, global_table, local_table):
- return mock_koza(source_name, iter([basic_row]), script, global_table=global_table, local_table=local_table)
+ return mock_koza(source_name, basic_row, script, global_table=global_table, local_table=local_table)
def test_pathway_id(basic_g2p):
diff --git a/tests/unit/rgd/test_rgd_publication_to_gene.py b/tests/unit/rgd/test_rgd_publication_to_gene.py
index fd99bf07..f68a9f10 100644
--- a/tests/unit/rgd/test_rgd_publication_to_gene.py
+++ b/tests/unit/rgd/test_rgd_publication_to_gene.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
# This name must match the ingest name in the transform code
@@ -27,7 +28,7 @@ def basic_row():
def basic_g2p(mock_koza, source_name, basic_row, script, global_table):
return mock_koza(
source_name,
- iter([basic_row]),
+ basic_row,
script,
global_table=global_table,
)
diff --git a/tests/unit/sgd/test_sgd_publication_to_gene.py b/tests/unit/sgd/test_sgd_publication_to_gene.py
index 41cb8ab3..b1ea23cf 100644
--- a/tests/unit/sgd/test_sgd_publication_to_gene.py
+++ b/tests/unit/sgd/test_sgd_publication_to_gene.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -23,7 +24,7 @@ def basic_row():
def basic_g2p(mock_koza, source_name, basic_row, script, global_table):
return mock_koza(
source_name,
- iter([basic_row]),
+ basic_row,
script,
global_table=global_table,
)
diff --git a/tests/unit/string/test_string_protein_links.py b/tests/unit/string/test_string_protein_links.py
index 60400bfa..88b6d2af 100644
--- a/tests/unit/string/test_string_protein_links.py
+++ b/tests/unit/string/test_string_protein_links.py
@@ -1,8 +1,10 @@
"""
Unit tests for STRING protein links ingest
"""
+
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import PairwiseGeneToGeneInteraction
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -29,8 +31,8 @@ def map_cache():
entrez_2_string = {
"10090.ENSMUSP00000000001": {"entrez": "14679"},
"10090.ENSMUSP00000020316": {"entrez": "56480"},
- "9606.ENSP00000349467": {'entrez': '801|805|808'},
- "9606.ENSP00000000233": {'entrez': '123|381'},
+ "9606.ENSP00000349467": {"entrez": "801|805|808"},
+ "9606.ENSP00000000233": {"entrez": "123|381"},
}
return {"entrez_2_string": entrez_2_string}
@@ -53,6 +55,7 @@ def basic_row():
"combined_score": "183",
}
+
@pytest.fixture
def inverse_duplicate_rows():
return [
@@ -79,9 +82,10 @@ def inverse_duplicate_rows():
"database": "0",
"textmining": "67",
"combined_score": "183",
- }
+ },
]
+
@pytest.fixture
def basic_pl(mock_koza, source_name, basic_row, script, global_table, map_cache):
"""
@@ -97,12 +101,13 @@ def basic_pl(mock_koza, source_name, basic_row, script, global_table, map_cache)
"""
return mock_koza(
name=source_name,
- data=iter([basic_row]),
+ data=basic_row,
transform_code=script,
global_table=global_table,
map_cache=map_cache,
)
+
@pytest.fixture
def duplicate_row_entities(mock_koza, source_name, inverse_duplicate_rows, script, global_table, map_cache):
"""
@@ -118,12 +123,13 @@ def duplicate_row_entities(mock_koza, source_name, inverse_duplicate_rows, scrip
"""
return mock_koza(
name=source_name,
- data=iter(inverse_duplicate_rows),
+ data=inverse_duplicate_rows,
transform_code=script,
global_table=global_table,
map_cache=map_cache,
)
+
# def test_proteins(basic_pl):
# gene_a = basic_pl[0]
# assert gene_a
@@ -154,8 +160,8 @@ def duplicate_row_entities(mock_koza, source_name, inverse_duplicate_rows, scrip
# assert "NCBITaxon:10090" in gene_b.in_taxon
# assert gene_b.source == "infores:entrez"
-INCLUDED_ECO_CODES = ['ECO:0000075', 'ECO:0000006', 'ECO:0007833']
-EXCLUDED_ECO_CODES = ['ECO:0000044', 'ECO:0000124', 'ECO:0000080', 'ECO:0007636']
+INCLUDED_ECO_CODES = ["ECO:0000075", "ECO:0000006", "ECO:0007833"]
+EXCLUDED_ECO_CODES = ["ECO:0000044", "ECO:0000124", "ECO:0000080", "ECO:0007636"]
def test_association(basic_pl):
@@ -174,16 +180,16 @@ def test_association(basic_pl):
@pytest.fixture
def multigene_row():
return {
- 'protein1': '9606.ENSP00000000233',
- 'protein2': '9606.ENSP00000349467',
- 'neighborhood': '0',
- 'fusion': '0',
- 'cooccurence': '332',
- 'coexpression': '62',
- 'experimental': '77',
- 'database': '0',
- 'textmining': '101',
- 'combined_score': 410,
+ "protein1": "9606.ENSP00000000233",
+ "protein2": "9606.ENSP00000349467",
+ "neighborhood": "0",
+ "fusion": "0",
+ "cooccurence": "332",
+ "coexpression": "62",
+ "experimental": "77",
+ "database": "0",
+ "textmining": "101",
+ "combined_score": 410,
}
@@ -191,7 +197,7 @@ def multigene_row():
def multigene_entities(mock_koza, source_name, multigene_row, script, global_table, map_cache):
return mock_koza(
name=source_name,
- data=iter([multigene_row]),
+ data=multigene_row,
transform_code=script,
map_cache=map_cache,
global_table=global_table,
@@ -204,8 +210,9 @@ def test_multigene_associations(multigene_entities):
]
assert len(associations) == 6
+
def test_duplicates_are_removed(duplicate_row_entities):
associations = [
association for association in duplicate_row_entities if isinstance(association, PairwiseGeneToGeneInteraction)
]
- assert len(associations) == 1
\ No newline at end of file
+ assert len(associations) == 1
diff --git a/tests/unit/xenbase/test_xenbase_gene_to_phenotype.py b/tests/unit/xenbase/test_xenbase_gene_to_phenotype.py
index dfaa54ec..dcbee63a 100644
--- a/tests/unit/xenbase/test_xenbase_gene_to_phenotype.py
+++ b/tests/unit/xenbase/test_xenbase_gene_to_phenotype.py
@@ -1,30 +1,27 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import Gene, GeneToPhenotypicFeatureAssociation, PhenotypicFeature
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
def entities(
mock_koza,
):
- row = iter(
- [
- {
- "SUBJECT": "Xenbase:XB-GENE-1000632",
- "SUBJECT_LABEL": "dctn2",
- "SUBJECT_TAXON": "NCBITaxon:8364",
- "SUBJECT_TAXON_LABEL": "Xla",
- "OBJECT": "XPO:0102358",
- "OBJECT_LABEL": "abnormal tail morphology",
- "RELATION": "RO_0002200",
- "RELATION_LABEL": "has_phenotype",
- "EVIDENCE": "",
- "EVIDENCE_LABEL": "",
- "SOURCE": "PMID:17112317",
- "IS_DEFINED_BY": "",
- "QUALIFIER": "",
- }
- ]
- )
+ row = {
+ "SUBJECT": "Xenbase:XB-GENE-1000632",
+ "SUBJECT_LABEL": "dctn2",
+ "SUBJECT_TAXON": "NCBITaxon:8364",
+ "SUBJECT_TAXON_LABEL": "Xla",
+ "OBJECT": "XPO:0102358",
+ "OBJECT_LABEL": "abnormal tail morphology",
+ "RELATION": "RO_0002200",
+ "RELATION_LABEL": "has_phenotype",
+ "EVIDENCE": "",
+ "EVIDENCE_LABEL": "",
+ "SOURCE": "PMID:17112317",
+ "IS_DEFINED_BY": "",
+ "QUALIFIER": "",
+ }
return mock_koza("xenbase_gene_to_phenotype", row, "./src/monarch_ingest/ingests/xenbase/gene_to_phenotype.py")
diff --git a/tests/unit/xenbase/test_xenbase_non_entrez_orthologs.py b/tests/unit/xenbase/test_xenbase_non_entrez_orthologs.py
index 728313db..b6c55b8f 100644
--- a/tests/unit/xenbase/test_xenbase_non_entrez_orthologs.py
+++ b/tests/unit/xenbase/test_xenbase_non_entrez_orthologs.py
@@ -1,8 +1,10 @@
"""
Unit tests for Xenbase Gene Orthology relationships ingest
"""
+
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import GeneToGeneHomologyAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -24,12 +26,12 @@ def script():
@pytest.fixture
def ne_orthology_records(mock_koza, source_name, script):
row = {
- 'Xenbase': "XB-GENE-6485390",
- 'OMIM': "614812",
- 'MGI': "1891834",
- 'ZFIN': "ZDB-GENE-070705-255",
+ "Xenbase": "XB-GENE-6485390",
+ "OMIM": "614812",
+ "MGI": "1891834",
+ "ZFIN": "ZDB-GENE-070705-255",
}
- return mock_koza(name=source_name, data=iter([row]), transform_code=script)
+ return mock_koza(name=source_name, data=row, transform_code=script)
def test_ne_orthology_records(ne_orthology_records):
diff --git a/tests/unit/xenbase/test_xenbase_orthologs.py b/tests/unit/xenbase/test_xenbase_orthologs.py
index 6ecd8157..71cecced 100644
--- a/tests/unit/xenbase/test_xenbase_orthologs.py
+++ b/tests/unit/xenbase/test_xenbase_orthologs.py
@@ -1,8 +1,10 @@
"""
Unit tests for Xenbase Gene Orthology relationships ingest
"""
+
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import GeneToGeneHomologyAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -31,7 +33,7 @@ def orthology_record(mock_koza, source_name, script, global_table):
}
return mock_koza(
name=source_name,
- data=iter([row]),
+ data=row,
transform_code=script,
global_table=global_table,
)
diff --git a/tests/unit/xenbase/test_xenbase_publication_to_gene.py b/tests/unit/xenbase/test_xenbase_publication_to_gene.py
index d66430d2..84479138 100644
--- a/tests/unit/xenbase/test_xenbase_publication_to_gene.py
+++ b/tests/unit/xenbase/test_xenbase_publication_to_gene.py
@@ -1,20 +1,18 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import Gene, InformationContentEntityToNamedThingAssociation, Publication
-from koza.cli_runner import get_translation_table
+from koza.cli_utils import get_translation_table
+from koza.utils.testing_utils import mock_koza # noqa: F401
from loguru import logger
@pytest.fixture
def gene_literature_entities(mock_koza, global_table):
- row = iter(
- [
- {
- "xb_article": "XB-ART-1",
- "pmid": "16938438",
- "gene_pages": "XB-GENEPAGE-487723 nog,XB-GENEPAGE-490377 msx1,XB-GENEPAGE-481828 bmp2,XB-GENEPAGE-483057 bmp4,XB-GENEPAGE-480982 fgf8,XB-GENEPAGE-6045068 hspa1l,XB-GENEPAGE-485625 hsp70",
- }
- ]
- )
+ row = {
+ "xb_article": "XB-ART-1",
+ "pmid": "16938438",
+ "gene_pages": "XB-GENEPAGE-487723 nog,XB-GENEPAGE-490377 msx1,XB-GENEPAGE-481828 bmp2,XB-GENEPAGE-483057 bmp4,XB-GENEPAGE-480982 fgf8,XB-GENEPAGE-6045068 hspa1l,XB-GENEPAGE-485625 hsp70",
+ }
+
map_cache = {
"genepage-2-gene": {
"XB-GENEPAGE-487723": {
@@ -54,7 +52,7 @@ def gene_literature_entities(mock_koza, global_table):
},
}
}
- get_translation_table("src/monarch_ingest/translation_table.yaml", None, logger),
+ (get_translation_table("src/monarch_ingest/translation_table.yaml", None, logger),)
return mock_koza(
name="xenbase_publication_to_gene",
diff --git a/tests/unit/zfin/test_zfin_gene_to_phenotype.py b/tests/unit/zfin/test_zfin_gene_to_phenotype.py
index fb6881b4..c7354830 100644
--- a/tests/unit/zfin/test_zfin_gene_to_phenotype.py
+++ b/tests/unit/zfin/test_zfin_gene_to_phenotype.py
@@ -1,4 +1,5 @@
import pytest
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -56,7 +57,7 @@ def basic_row():
def basic_g2p(mock_koza, source_name, basic_row, script, map_cache, global_table):
return mock_koza(
source_name,
- iter([basic_row]),
+ basic_row,
script,
map_cache=map_cache,
global_table=global_table,
@@ -96,7 +97,7 @@ def test_association(basic_g2p):
# return mock_koza(
# source_name,
-# iter([basic_row]),
+# basic_row,
# script,
# map_cache=map_cache,
# global_table=global_table,
@@ -123,7 +124,7 @@ def test_association(basic_g2p):
# return mock_koza(
# source_name,
-# iter([basic_row]),
+# basic_row,
# script,
# map_cache=map_cache,
# global_table=global_table,
@@ -140,7 +141,7 @@ def test_excluded_tags(mock_koza, source_name, basic_row, script, map_cache, tag
basic_row["Phenotype Tag"] = tag
entities = mock_koza(
source_name,
- iter([basic_row]),
+ basic_row,
script,
map_cache=map_cache,
global_table=global_table,
@@ -153,7 +154,7 @@ def test_included_tags(mock_koza, source_name, basic_row, script, map_cache, tag
basic_row["Phenotype Tag"] = tag
entities = mock_koza(
source_name,
- iter([basic_row]),
+ basic_row,
script,
map_cache=map_cache,
global_table=global_table,
diff --git a/tests/unit/zfin/test_zfin_publication_to_gene.py b/tests/unit/zfin/test_zfin_publication_to_gene.py
index b99711b8..0d3e96f3 100644
--- a/tests/unit/zfin/test_zfin_publication_to_gene.py
+++ b/tests/unit/zfin/test_zfin_publication_to_gene.py
@@ -1,5 +1,6 @@
import pytest
from biolink_model.datamodel.pydanticmodel_v2 import InformationContentEntityToNamedThingAssociation
+from koza.utils.testing_utils import mock_koza # noqa: F401
@pytest.fixture
@@ -17,7 +18,7 @@ def basic_row():
def basic_entities(mock_koza, basic_row, global_table):
return mock_koza(
"zfin_publication_to_gene",
- iter([basic_row]),
+ basic_row,
"./src/monarch_ingest/ingests/zfin/publication_to_gene.py",
global_table=global_table,
)