From 54f48d6f2a34470ef539c5e0a149b34a4f5066a0 Mon Sep 17 00:00:00 2001 From: Kartik Chopra Date: Wed, 24 Jul 2024 07:46:49 -0400 Subject: [PATCH 1/9] chore: fixes typo in introduction document (#637) chore: fixes typo Co-authored-by: Josh Bradley --- docsite/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docsite/index.md b/docsite/index.md index 1f230c395e..36cee4b310 100644 --- a/docsite/index.md +++ b/docsite/index.md @@ -44,7 +44,7 @@ GraphRAG builds upon our prior [research](https://www.microsoft.com/en-us/workla ### Index -- Slice up an input corpus into a series of TextUnits, which act as analyzable units for the rest of the process, and provide fine-grained references into our outputs. +- Slice up an input corpus into a series of TextUnits, which act as analyzable units for the rest of the process, and provide fine-grained references in our outputs. - Extract all entities, relationships, and key claims from the TextUnits using an LLM. - Perform a hierarchical clustering of the graph using the [Leiden technique](https://arxiv.org/pdf/1810.08473.pdf). To see this visually, check out Figure 1 above. Each circle is an entity (e.g., a person, place, or organization), with the size representing the degree of the entity, and the color representing its community. - Generate summaries of each community and its constituents from the bottom-up. This aids in holistic understanding of the dataset. From 2ddee65c29b2340664985c8d9a2678b41c2d1616 Mon Sep 17 00:00:00 2001 From: Josh Bradley Date: Wed, 24 Jul 2024 13:28:22 -0400 Subject: [PATCH 2/9] Read/write files as binary utf-8 (#639) --- .github/workflows/python-ci.yml | 7 +- .../patch-20240721063703879643.json | 4 + .../config/models/claim_extraction_config.py | 4 +- .../config/models/community_reports_config.py | 4 +- .../config/models/entity_extraction_config.py | 4 +- .../models/summarize_descriptions_config.py | 4 +- graphrag/index/cli.py | 38 +- graphrag/index/load_pipeline_config.py | 8 +- .../reporting/file_workflow_callbacks.py | 4 +- .../index/storage/file_pipeline_storage.py | 4 +- .../community_report_summarization.py | 4 +- .../generator/entity_extraction_prompt.py | 4 +- .../generator/entity_summarization_prompt.py | 4 +- graphrag/prompt_tune/loader/config.py | 8 +- graphrag/query/cli.py | 10 +- poetry.lock | 462 +++++++++--------- tests/smoke/test_fixtures.py | 9 +- 17 files changed, 305 insertions(+), 277 deletions(-) create mode 100644 .semversioner/next-release/patch-20240721063703879643.json diff --git a/.github/workflows/python-ci.yml b/.github/workflows/python-ci.yml index 243f2cf02b..4c2464b9f2 100644 --- a/.github/workflows/python-ci.yml +++ b/.github/workflows/python-ci.yml @@ -21,7 +21,7 @@ jobs: python-ci: strategy: matrix: - python-version: ["3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11"] # add 3.12 once gensim supports it. TODO: watch this issue - https://github.com/piskvorky/gensim/issues/3510 os: [ubuntu-latest, windows-latest] env: DEBUG: 1 @@ -79,7 +79,10 @@ jobs: - name: Install dependencies shell: bash - run: poetry self add setuptools && poetry run python -m pip install gensim && poetry install + run: | + poetry self add setuptools wheel + poetry run python -m pip install gensim + poetry install - name: Check Semversioner run: | diff --git a/.semversioner/next-release/patch-20240721063703879643.json b/.semversioner/next-release/patch-20240721063703879643.json new file mode 100644 index 0000000000..6f8a6ab457 --- /dev/null +++ b/.semversioner/next-release/patch-20240721063703879643.json @@ -0,0 +1,4 @@ +{ + "type": "patch", + "description": "use binary io processing for all file io operations" +} diff --git a/graphrag/config/models/claim_extraction_config.py b/graphrag/config/models/claim_extraction_config.py index 7ec465d9ae..a4437dd6d3 100644 --- a/graphrag/config/models/claim_extraction_config.py +++ b/graphrag/config/models/claim_extraction_config.py @@ -43,7 +43,9 @@ def resolved_strategy(self, root_dir: str) -> dict: "type": ExtractClaimsStrategyType.graph_intelligence, "llm": self.llm.model_dump(), **self.parallelization.model_dump(), - "extraction_prompt": (Path(root_dir) / self.prompt).read_text() + "extraction_prompt": (Path(root_dir) / self.prompt) + .read_bytes() + .decode(encoding="utf-8") if self.prompt else None, "claim_description": self.description, diff --git a/graphrag/config/models/community_reports_config.py b/graphrag/config/models/community_reports_config.py index cc2c9e8f13..ab55063cec 100644 --- a/graphrag/config/models/community_reports_config.py +++ b/graphrag/config/models/community_reports_config.py @@ -38,7 +38,9 @@ def resolved_strategy(self, root_dir) -> dict: "type": CreateCommunityReportsStrategyType.graph_intelligence, "llm": self.llm.model_dump(), **self.parallelization.model_dump(), - "extraction_prompt": (Path(root_dir) / self.prompt).read_text() + "extraction_prompt": (Path(root_dir) / self.prompt) + .read_bytes() + .decode(encoding="utf-8") if self.prompt else None, "max_report_length": self.max_length, diff --git a/graphrag/config/models/entity_extraction_config.py b/graphrag/config/models/entity_extraction_config.py index ae4d4c5611..26101f747c 100644 --- a/graphrag/config/models/entity_extraction_config.py +++ b/graphrag/config/models/entity_extraction_config.py @@ -38,7 +38,9 @@ def resolved_strategy(self, root_dir: str, encoding_model: str) -> dict: "type": ExtractEntityStrategyType.graph_intelligence, "llm": self.llm.model_dump(), **self.parallelization.model_dump(), - "extraction_prompt": (Path(root_dir) / self.prompt).read_text() + "extraction_prompt": (Path(root_dir) / self.prompt) + .read_bytes() + .decode(encoding="utf-8") if self.prompt else None, "max_gleanings": self.max_gleanings, diff --git a/graphrag/config/models/summarize_descriptions_config.py b/graphrag/config/models/summarize_descriptions_config.py index 39aa93e218..9747d949c6 100644 --- a/graphrag/config/models/summarize_descriptions_config.py +++ b/graphrag/config/models/summarize_descriptions_config.py @@ -34,7 +34,9 @@ def resolved_strategy(self, root_dir: str) -> dict: "type": SummarizeStrategyType.graph_intelligence, "llm": self.llm.model_dump(), **self.parallelization.model_dump(), - "summarize_prompt": (Path(root_dir) / self.prompt).read_text() + "summarize_prompt": (Path(root_dir) / self.prompt) + .read_bytes() + .decode(encoding="utf-8") if self.prompt else None, "max_summary_length": self.max_length, diff --git a/graphrag/index/cli.py b/graphrag/index/cli.py index 77d0e9b476..68dbcf785f 100644 --- a/graphrag/index/cli.py +++ b/graphrag/index/cli.py @@ -185,11 +185,11 @@ def _initialize_project_at(path: str, reporter: ProgressReporter) -> None: dotenv = root / ".env" if not dotenv.exists(): - with settings_yaml.open("w") as file: - file.write(INIT_YAML) + with settings_yaml.open("wb") as file: + file.write(INIT_YAML.encode(encoding="utf-8", errors="strict")) - with dotenv.open("w") as file: - file.write(INIT_DOTENV) + with dotenv.open("wb") as file: + file.write(INIT_DOTENV.encode(encoding="utf-8", errors="strict")) prompts_dir = root / "prompts" if not prompts_dir.exists(): @@ -197,23 +197,29 @@ def _initialize_project_at(path: str, reporter: ProgressReporter) -> None: entity_extraction = prompts_dir / "entity_extraction.txt" if not entity_extraction.exists(): - with entity_extraction.open("w") as file: - file.write(GRAPH_EXTRACTION_PROMPT) + with entity_extraction.open("wb") as file: + file.write( + GRAPH_EXTRACTION_PROMPT.encode(encoding="utf-8", errors="strict") + ) summarize_descriptions = prompts_dir / "summarize_descriptions.txt" if not summarize_descriptions.exists(): - with summarize_descriptions.open("w") as file: - file.write(SUMMARIZE_PROMPT) + with summarize_descriptions.open("wb") as file: + file.write(SUMMARIZE_PROMPT.encode(encoding="utf-8", errors="strict")) claim_extraction = prompts_dir / "claim_extraction.txt" if not claim_extraction.exists(): - with claim_extraction.open("w") as file: - file.write(CLAIM_EXTRACTION_PROMPT) + with claim_extraction.open("wb") as file: + file.write( + CLAIM_EXTRACTION_PROMPT.encode(encoding="utf-8", errors="strict") + ) community_report = prompts_dir / "community_report.txt" if not community_report.exists(): - with community_report.open("w") as file: - file.write(COMMUNITY_REPORT_PROMPT) + with community_report.open("wb") as file: + file.write( + COMMUNITY_REPORT_PROMPT.encode(encoding="utf-8", errors="strict") + ) def _create_default_config( @@ -267,18 +273,18 @@ def _read_config_parameters(root: str, config: str | None, reporter: ProgressRep if settings_yaml.exists(): reporter.success(f"Reading settings from {settings_yaml}") - with settings_yaml.open("r") as file: + with settings_yaml.open("rb") as file: import yaml - data = yaml.safe_load(file) + data = yaml.safe_load(file.read().decode(encoding="utf-8", errors="strict")) return create_graphrag_config(data, root) if settings_json.exists(): reporter.success(f"Reading settings from {settings_json}") - with settings_json.open("r") as file: + with settings_json.open("rb") as file: import json - data = json.loads(file.read()) + data = json.loads(file.read().decode(encoding="utf-8", errors="strict")) return create_graphrag_config(data, root) reporter.success("Reading settings from environment variables") diff --git a/graphrag/index/load_pipeline_config.py b/graphrag/index/load_pipeline_config.py index 50a532c503..dfcf321b3b 100644 --- a/graphrag/index/load_pipeline_config.py +++ b/graphrag/index/load_pipeline_config.py @@ -26,8 +26,8 @@ def load_pipeline_config(config_or_path: str | PipelineConfig) -> PipelineConfig read_dotenv(str(Path(config_or_path).parent)) if config_or_path.endswith(".json"): - with Path(config_or_path).open(encoding="utf-8") as f: - config = json.load(f) + with Path(config_or_path).open("rb") as f: + config = json.loads(f.read().decode(encoding="utf-8", errors="strict")) elif config_or_path.endswith((".yml", ".yaml")): config = _parse_yaml(config_or_path) else: @@ -73,7 +73,7 @@ def handle_include(loader: yaml.Loader, node: yaml.Node): if filename.endswith((".yml", ".yaml")): return _parse_yaml(filename) - with Path(filename).open(encoding="utf-8") as f: - return f.read() + with Path(filename).open("rb") as f: + return f.read().decode(encoding="utf-8", errors="strict") return handle_include diff --git a/graphrag/index/reporting/file_workflow_callbacks.py b/graphrag/index/reporting/file_workflow_callbacks.py index e071498629..e659c4f644 100644 --- a/graphrag/index/reporting/file_workflow_callbacks.py +++ b/graphrag/index/reporting/file_workflow_callbacks.py @@ -21,8 +21,8 @@ class FileWorkflowCallbacks(NoopWorkflowCallbacks): def __init__(self, directory: str): """Create a new file-based workflow reporter.""" Path(directory).mkdir(parents=True, exist_ok=True) - self._out_stream = open( # noqa SIM115 - Path(directory) / "logs.json", "a", encoding="utf-8" + self._out_stream = open( # noqa: PTH123, SIM115 + Path(directory) / "logs.json", "a", encoding="utf-8", errors="strict" ) def on_error( diff --git a/graphrag/index/storage/file_pipeline_storage.py b/graphrag/index/storage/file_pipeline_storage.py index 3580e1e1a6..ee61bab3dd 100644 --- a/graphrag/index/storage/file_pipeline_storage.py +++ b/graphrag/index/storage/file_pipeline_storage.py @@ -114,7 +114,9 @@ async def set(self, key: str, value: Any, encoding: str | None = None) -> None: write_type = "wb" if is_bytes else "w" encoding = None if is_bytes else encoding or self._encoding async with aiofiles.open( - join_path(self._root_dir, key), cast(Any, write_type), encoding=encoding + join_path(self._root_dir, key), + cast(Any, write_type), + encoding=encoding, ) as f: await f.write(value) diff --git a/graphrag/prompt_tune/generator/community_report_summarization.py b/graphrag/prompt_tune/generator/community_report_summarization.py index 82a95ce6d6..b0c0b614d2 100644 --- a/graphrag/prompt_tune/generator/community_report_summarization.py +++ b/graphrag/prompt_tune/generator/community_report_summarization.py @@ -42,7 +42,7 @@ def create_community_summarization_prompt( output_path = output_path / COMMUNITY_SUMMARIZATION_FILENAME # Write file to output path - with output_path.open("w") as file: - file.write(prompt) + with output_path.open("wb") as file: + file.write(prompt.encode(encoding="utf-8", errors="strict")) return prompt diff --git a/graphrag/prompt_tune/generator/entity_extraction_prompt.py b/graphrag/prompt_tune/generator/entity_extraction_prompt.py index faac8da057..6724f44a9a 100644 --- a/graphrag/prompt_tune/generator/entity_extraction_prompt.py +++ b/graphrag/prompt_tune/generator/entity_extraction_prompt.py @@ -99,7 +99,7 @@ def create_entity_extraction_prompt( output_path = output_path / ENTITY_EXTRACTION_FILENAME # Write file to output path - with output_path.open("w") as file: - file.write(prompt) + with output_path.open("wb") as file: + file.write(prompt.encode(encoding="utf-8", errors="strict")) return prompt diff --git a/graphrag/prompt_tune/generator/entity_summarization_prompt.py b/graphrag/prompt_tune/generator/entity_summarization_prompt.py index c6ee786338..4ae5af77ec 100644 --- a/graphrag/prompt_tune/generator/entity_summarization_prompt.py +++ b/graphrag/prompt_tune/generator/entity_summarization_prompt.py @@ -30,7 +30,7 @@ def create_entity_summarization_prompt( output_path = output_path / ENTITY_SUMMARIZATION_FILENAME # Write file to output path - with output_path.open("w") as file: - file.write(prompt) + with output_path.open("wb") as file: + file.write(prompt.encode(encoding="utf-8", errors="strict")) return prompt diff --git a/graphrag/prompt_tune/loader/config.py b/graphrag/prompt_tune/loader/config.py index db451156ca..8994604f92 100644 --- a/graphrag/prompt_tune/loader/config.py +++ b/graphrag/prompt_tune/loader/config.py @@ -25,18 +25,18 @@ def read_config_parameters(root: str, reporter: ProgressReporter): if settings_yaml.exists(): reporter.info(f"Reading settings from {settings_yaml}") - with settings_yaml.open("r") as file: + with settings_yaml.open("rb") as file: import yaml - data = yaml.safe_load(file) + data = yaml.safe_load(file.read().decode(encoding="utf-8", errors="strict")) return create_graphrag_config(data, root) if settings_json.exists(): reporter.info(f"Reading settings from {settings_json}") - with settings_json.open("r") as file: + with settings_json.open("rb") as file: import json - data = json.loads(file.read()) + data = json.loads(file.read().decode(encoding="utf-8", errors="strict")) return create_graphrag_config(data, root) reporter.info("Reading settings from environment variables") diff --git a/graphrag/query/cli.py b/graphrag/query/cli.py index aef7c2965b..306dad60cc 100644 --- a/graphrag/query/cli.py +++ b/graphrag/query/cli.py @@ -194,18 +194,20 @@ def _read_config_parameters(root: str): if settings_yaml.exists(): reporter.info(f"Reading settings from {settings_yaml}") - with settings_yaml.open("r") as file: + with settings_yaml.open( + "rb", + ) as file: import yaml - data = yaml.safe_load(file) + data = yaml.safe_load(file.read().decode(encoding="utf-8", errors="strict")) return create_graphrag_config(data, root) if settings_json.exists(): reporter.info(f"Reading settings from {settings_json}") - with settings_json.open("r") as file: + with settings_json.open("rb") as file: import json - data = json.loads(file.read()) + data = json.loads(file.read().decode(encoding="utf-8", errors="strict")) return create_graphrag_config(data, root) reporter.info("Reading settings from environment variables") diff --git a/poetry.lock b/poetry.lock index c4158330b2..527bb8d047 100644 --- a/poetry.lock +++ b/poetry.lock @@ -289,13 +289,13 @@ typing-extensions = ">=4.6.0" [[package]] name = "azure-storage-blob" -version = "12.20.0" +version = "12.21.0" description = "Microsoft Azure Blob Storage Client Library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "azure-storage-blob-12.20.0.tar.gz", hash = "sha256:eeb91256e41d4b5b9bad6a87fd0a8ade07dd58aa52344e2c8d2746e27a017d3b"}, - {file = "azure_storage_blob-12.20.0-py3-none-any.whl", hash = "sha256:de6b3bf3a90e9341a6bcb96a2ebe981dffff993e9045818f6549afea827a52a9"}, + {file = "azure-storage-blob-12.21.0.tar.gz", hash = "sha256:b9722725072f5b7373c0f4dd6d78fbae2bb37bffc5c3e01731ab8c750ee8dd7e"}, + {file = "azure_storage_blob-12.21.0-py3-none-any.whl", hash = "sha256:f9ede187dd5a0ef296b583a7c1861c6938ddd6708d6e70f4203a163c2ab42d43"}, ] [package.dependencies] @@ -857,43 +857,38 @@ dev = ["black (==22.3.0)", "hypothesis", "numpy", "pytest (>=5.30)", "pytest-xdi [[package]] name = "cryptography" -version = "42.0.8" +version = "43.0.0" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:81d8a521705787afe7a18d5bfb47ea9d9cc068206270aad0b96a725022e18d2e"}, - {file = "cryptography-42.0.8-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:961e61cefdcb06e0c6d7e3a1b22ebe8b996eb2bf50614e89384be54c48c6b63d"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3ec3672626e1b9e55afd0df6d774ff0e953452886e06e0f1eb7eb0c832e8902"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e599b53fd95357d92304510fb7bda8523ed1f79ca98dce2f43c115950aa78801"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5226d5d21ab681f432a9c1cf8b658c0cb02533eece706b155e5fbd8a0cdd3949"}, - {file = "cryptography-42.0.8-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6b7c4f03ce01afd3b76cf69a5455caa9cfa3de8c8f493e0d3ab7d20611c8dae9"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:2346b911eb349ab547076f47f2e035fc8ff2c02380a7cbbf8d87114fa0f1c583"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ad803773e9df0b92e0a817d22fd8a3675493f690b96130a5e24f1b8fabbea9c7"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2f66d9cd9147ee495a8374a45ca445819f8929a3efcd2e3df6428e46c3cbb10b"}, - {file = "cryptography-42.0.8-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d45b940883a03e19e944456a558b67a41160e367a719833c53de6911cabba2b7"}, - {file = "cryptography-42.0.8-cp37-abi3-win32.whl", hash = "sha256:a0c5b2b0585b6af82d7e385f55a8bc568abff8923af147ee3c07bd8b42cda8b2"}, - {file = "cryptography-42.0.8-cp37-abi3-win_amd64.whl", hash = "sha256:57080dee41209e556a9a4ce60d229244f7a66ef52750f813bfbe18959770cfba"}, - {file = "cryptography-42.0.8-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:dea567d1b0e8bc5764b9443858b673b734100c2871dc93163f58c46a97a83d28"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4783183f7cb757b73b2ae9aed6599b96338eb957233c58ca8f49a49cc32fd5e"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0608251135d0e03111152e41f0cc2392d1e74e35703960d4190b2e0f4ca9c70"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:dc0fdf6787f37b1c6b08e6dfc892d9d068b5bdb671198c72072828b80bd5fe4c"}, - {file = "cryptography-42.0.8-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9c0c1716c8447ee7dbf08d6db2e5c41c688544c61074b54fc4564196f55c25a7"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fff12c88a672ab9c9c1cf7b0c80e3ad9e2ebd9d828d955c126be4fd3e5578c9e"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cafb92b2bc622cd1aa6a1dce4b93307792633f4c5fe1f46c6b97cf67073ec961"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:31f721658a29331f895a5a54e7e82075554ccfb8b163a18719d342f5ffe5ecb1"}, - {file = "cryptography-42.0.8-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b297f90c5723d04bcc8265fc2a0f86d4ea2e0f7ab4b6994459548d3a6b992a14"}, - {file = "cryptography-42.0.8-cp39-abi3-win32.whl", hash = "sha256:2f88d197e66c65be5e42cd72e5c18afbfae3f741742070e3019ac8f4ac57262c"}, - {file = "cryptography-42.0.8-cp39-abi3-win_amd64.whl", hash = "sha256:fa76fbb7596cc5839320000cdd5d0955313696d9511debab7ee7278fc8b5c84a"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ba4f0a211697362e89ad822e667d8d340b4d8d55fae72cdd619389fb5912eefe"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81884c4d096c272f00aeb1f11cf62ccd39763581645b0812e99a91505fa48e0c"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c9bb2ae11bfbab395bdd072985abde58ea9860ed84e59dbc0463a5d0159f5b71"}, - {file = "cryptography-42.0.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7016f837e15b0a1c119d27ecd89b3515f01f90a8615ed5e9427e30d9cdbfed3d"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a94eccb2a81a309806027e1670a358b99b8fe8bfe9f8d329f27d72c094dde8c"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dec9b018df185f08483f294cae6ccac29e7a6e0678996587363dc352dc65c842"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:343728aac38decfdeecf55ecab3264b015be68fc2816ca800db649607aeee648"}, - {file = "cryptography-42.0.8-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:013629ae70b40af70c9a7a5db40abe5d9054e6f4380e50ce769947b73bf3caad"}, - {file = "cryptography-42.0.8.tar.gz", hash = "sha256:8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2"}, + {file = "cryptography-43.0.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:64c3f16e2a4fc51c0d06af28441881f98c5d91009b8caaff40cf3548089e9c74"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3dcdedae5c7710b9f97ac6bba7e1052b95c7083c9d0e9df96e02a1932e777895"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d9a1eca329405219b605fac09ecfc09ac09e595d6def650a437523fcd08dd22"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ea9e57f8ea880eeea38ab5abf9fbe39f923544d7884228ec67d666abd60f5a47"}, + {file = "cryptography-43.0.0-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9a8d6802e0825767476f62aafed40532bd435e8a5f7d23bd8b4f5fd04cc80ecf"}, + {file = "cryptography-43.0.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:cc70b4b581f28d0a254d006f26949245e3657d40d8857066c2ae22a61222ef55"}, + {file = "cryptography-43.0.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a997df8c1c2aae1e1e5ac49c2e4f610ad037fc5a3aadc7b64e39dea42249431"}, + {file = "cryptography-43.0.0-cp37-abi3-win32.whl", hash = "sha256:6e2b11c55d260d03a8cf29ac9b5e0608d35f08077d8c087be96287f43af3ccdc"}, + {file = "cryptography-43.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:31e44a986ceccec3d0498e16f3d27b2ee5fdf69ce2ab89b52eaad1d2f33d8778"}, + {file = "cryptography-43.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:7b3f5fe74a5ca32d4d0f302ffe6680fcc5c28f8ef0dc0ae8f40c0f3a1b4fca66"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac1955ce000cb29ab40def14fd1bbfa7af2017cca696ee696925615cafd0dce5"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:299d3da8e00b7e2b54bb02ef58d73cd5f55fb31f33ebbf33bd00d9aa6807df7e"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ee0c405832ade84d4de74b9029bedb7b31200600fa524d218fc29bfa371e97f5"}, + {file = "cryptography-43.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb013933d4c127349b3948aa8aaf2f12c0353ad0eccd715ca789c8a0f671646f"}, + {file = "cryptography-43.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fdcb265de28585de5b859ae13e3846a8e805268a823a12a4da2597f1f5afc9f0"}, + {file = "cryptography-43.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2905ccf93a8a2a416f3ec01b1a7911c3fe4073ef35640e7ee5296754e30b762b"}, + {file = "cryptography-43.0.0-cp39-abi3-win32.whl", hash = "sha256:47ca71115e545954e6c1d207dd13461ab81f4eccfcb1345eac874828b5e3eaaf"}, + {file = "cryptography-43.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:0663585d02f76929792470451a5ba64424acc3cd5227b03921dab0e2f27b1709"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c6d112bf61c5ef44042c253e4859b3cbbb50df2f78fa8fae6747a7814484a70"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:844b6d608374e7d08f4f6e6f9f7b951f9256db41421917dfb2d003dde4cd6b66"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:51956cf8730665e2bdf8ddb8da0056f699c1a5715648c1b0144670c1ba00b48f"}, + {file = "cryptography-43.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:aae4d918f6b180a8ab8bf6511a419473d107df4dbb4225c7b48c5c9602c38c7f"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:232ce02943a579095a339ac4b390fbbe97f5b5d5d107f8a08260ea2768be8cc2"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5bcb8a5620008a8034d39bce21dc3e23735dfdb6a33a06974739bfa04f853947"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:08a24a7070b2b6804c1940ff0f910ff728932a9d0e80e7814234269f9d46d069"}, + {file = "cryptography-43.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e9c5266c432a1e23738d178e51c2c7a5e2ddf790f248be939448c0ba2021f9d1"}, + {file = "cryptography-43.0.0.tar.gz", hash = "sha256:b88075ada2d51aa9f18283532c9f60e72170041bba88d7f37e49cbb10275299e"}, ] [package.dependencies] @@ -906,7 +901,7 @@ nox = ["nox"] pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "cryptography-vectors (==43.0.0)", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] @@ -926,13 +921,13 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "dask" -version = "2024.7.0" +version = "2024.7.1" description = "Parallel PyData with Task Scheduling" optional = false python-versions = ">=3.9" files = [ - {file = "dask-2024.7.0-py3-none-any.whl", hash = "sha256:0f30f218a1fe1c8e9a6ba8add1207088ba9ff049098d4ea4ce045fd5ff7ca914"}, - {file = "dask-2024.7.0.tar.gz", hash = "sha256:0060bae9a58b5b3ce7e0d97040e903b4d3db09ba49222101cfc40f9834a8a6bc"}, + {file = "dask-2024.7.1-py3-none-any.whl", hash = "sha256:dd046840050376c317de90629db5c6197adda820176cf3e2df10c3219d11951f"}, + {file = "dask-2024.7.1.tar.gz", hash = "sha256:dbaef2d50efee841a9d981a218cfeb50392fc9a95e0403b6d680450e4f50d531"}, ] [package.dependencies] @@ -953,22 +948,22 @@ array = ["numpy (>=1.21)"] complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=7.0)", "pyarrow-hotfix"] dataframe = ["dask-expr (>=1.1,<1.2)", "dask[array]", "pandas (>=2.0)"] diagnostics = ["bokeh (>=2.4.2)", "jinja2 (>=2.10.3)"] -distributed = ["distributed (==2024.7.0)"] +distributed = ["distributed (==2024.7.1)"] test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] [[package]] name = "dask-expr" -version = "1.1.7" +version = "1.1.9" description = "High Level Expressions for Dask" optional = false python-versions = ">=3.9" files = [ - {file = "dask_expr-1.1.7-py3-none-any.whl", hash = "sha256:6f45468499b50839e9d9a43f599f7f70a50f50048bce93557c2dea24bfcad3bb"}, - {file = "dask_expr-1.1.7.tar.gz", hash = "sha256:90a0afae1fcdc2071914daf8f32673d59ee027c12ae041941043bdede63c993c"}, + {file = "dask_expr-1.1.9-py3-none-any.whl", hash = "sha256:6a73d2ef8a4b697db476163ebfc661f7f4b6e12c4e483e8bf207e4d00e574f0c"}, + {file = "dask_expr-1.1.9.tar.gz", hash = "sha256:edb4f5a38b70a15beb4cfd449c71526c728ff989d91edec210836aa05556c766"}, ] [package.dependencies] -dask = "2024.7.0" +dask = "2024.7.1" pandas = ">=2" pyarrow = ">=7.0.0" @@ -1338,44 +1333,49 @@ files = [ [[package]] name = "gensim" -version = "4.3.2" +version = "4.3.3" description = "Python framework for fast Vector Space Modelling" optional = false python-versions = ">=3.8" files = [ - {file = "gensim-4.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:31b3cb313939b6940ee21660177f6405e71b920da462dbf065b2458a24ab33e1"}, - {file = "gensim-4.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:67c41b15e19e4950f57124f633c45839b5c84268ffa58079c5b0c0f04d2a9cb9"}, - {file = "gensim-4.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9bf1a8ee2e8214499c517008a0fd175ce5c649954a88569358cfae6bfca42dc"}, - {file = "gensim-4.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e34ee6f8a318fbf0b65e6d39a985ecf9e9051febfd1221ae6255fff1972c547"}, - {file = "gensim-4.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c46b7395dc57c83329932f3febed9660891fdcc75327d56f55000e3e08898983"}, - {file = "gensim-4.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a919493339cfad39d5e76768c1bc546cd507f715c5fca93165cc174a97657457"}, - {file = "gensim-4.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8dcd1419266bd563c371d25530f4dce3505fe78059b2c0c08724e4f9e5479b38"}, - {file = "gensim-4.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e8035ac3f54dca3a8ca56bec526ddfe5b23006e0134b7375ca5f5dbfaef70a"}, - {file = "gensim-4.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c3b537c1fd4699c8e6d59c3ffa2fdd9918cd4e5555bf5ee7c1fbedd89b2d643"}, - {file = "gensim-4.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5a52001226f9e89f7833503f99c9b4fd028fdf837002f24cdc1bc3cf901a4003"}, - {file = "gensim-4.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e8d62604efb8281a25254e5a6c14227034c267ed56635e590c9cae2635196dca"}, - {file = "gensim-4.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bf7a9dc37c2ca465c7834863a7b264369c1373bb474135df225cee654b8adfab"}, - {file = "gensim-4.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a33ff0d4cf3e50e7ddd7353fb38ed2d4af2e48a6ef58d622809862c30c8b8a2"}, - {file = "gensim-4.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99876be00b73c7cef01f427d241b07eb1c1b298fb411580cc1067d22c43a13be"}, - {file = "gensim-4.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:f785b3caf376a1f2989e0f3c890642e5b1566393fd3831dab03fc6670d672814"}, - {file = "gensim-4.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c86915cf0e0b86658a40a070bd7e04db0814065963657e92910303070275865d"}, - {file = "gensim-4.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:548c7bf983e619d6b8d78b6a5321dcbcba5b39f68779a0d36e38a5a971416276"}, - {file = "gensim-4.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:226690ea081b92a2289661a25e8a89069ae09b1ed4137b67a0d6ec211e0371d3"}, - {file = "gensim-4.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4715eafcd309c2f7e030829eddba72fe47bbe9bb466811fce3158127d29c8979"}, - {file = "gensim-4.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b3f26299ac241ff54329a54c37c22eac1bf4c4a337068adf2637259ee0d8484a"}, - {file = "gensim-4.3.2.tar.gz", hash = "sha256:99ac6af6ffd40682e70155ed9f92ecbf4384d59fb50af120d343ea5ee1b308ab"}, + {file = "gensim-4.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4e72840adfbea35c5804fd559bc0cb6bc9f439926220a37d852b7ce76eb325c1"}, + {file = "gensim-4.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4019263c9d9afae7c669f880c17e09461e77a71afce04ed4d79cf71a4cad2848"}, + {file = "gensim-4.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dea62d3e2ada547687bde6cbba37efa50b534db77e9d44fd5802676bb072c9d9"}, + {file = "gensim-4.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fac93ef5e44982defef9d3c1e4cd00245506b8a29cec19ec5e00f0221b8144c"}, + {file = "gensim-4.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:7c3409f755fb8d62da99cea65e7a40a99d21f8fd86443a3aaf2d90eb68995021"}, + {file = "gensim-4.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:99e7b70352aecc6c1674dde82b75f453e7a5d1cc71ac1cfbc460bf1fe20501b7"}, + {file = "gensim-4.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:32a4cac3f3c38af2069eab9524609fc92ebaeb2692b7280cfda365a3517a280a"}, + {file = "gensim-4.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c071b4329ed1be02446eb7ef637b94c68cf0080c15c57fbcde667fce2e49c3fe"}, + {file = "gensim-4.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d662bf96e3d741b6ab61a54be842a7cbf5e45193008b2f4225c758cafd7f9cdc"}, + {file = "gensim-4.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:a54bd53a0e6f991abb837f126663353657270e75be53287e8a568ada0b35b1b0"}, + {file = "gensim-4.3.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9a65ed1a8c1fc83890b4eb2a45ae2b32e82a0209c970c8c74694d0374c2415cb"}, + {file = "gensim-4.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4db485e08a0287e0fd6a029d89b90913d1df38f1dcd34cd2ab758873ba9255f3"}, + {file = "gensim-4.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7198987116373ab99f034b292a04ac841531d12b56345851c98b40a3fcd93a85"}, + {file = "gensim-4.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6237a50de4da7a037b19b2b6c430b6537243dcdedebf94afeb089e951953e601"}, + {file = "gensim-4.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:c910c2d5a71f532273166a3a82762959973f0513b221a495fa5a2a07652ee66d"}, + {file = "gensim-4.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d7efa5e35d3f0ec02e6e8343b623c2c863be99e8c26866cf0bebd24fb10198c"}, + {file = "gensim-4.3.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2e8eaf5ef576f4d45e98cf87e7edda9afb469dff954a923402dc1ffc35195901"}, + {file = "gensim-4.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9161e52a6ec2a0580df66e9fac4ff7fc43efdc40674fbd4dd9e914796cc68bc3"}, + {file = "gensim-4.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a200d6ac522cdf91e6048e1a368318c6b1b6e0c79009dfd408345ea2b9d3c096"}, + {file = "gensim-4.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:065547124a93948926b88cb854e1c09750e9a4c7be92f55858159aa8a23359c3"}, + {file = "gensim-4.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688a13b9bba839fedc7f3da6806d5701a756ed940839702ba6d7f494e917baef"}, + {file = "gensim-4.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c560d28133cca58078221d60fce346f98f2c5e93d2ad42942f32c0d60903f65b"}, + {file = "gensim-4.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:832311f0c420c0841c98b9e6cc4d83ea362add6db917bf2d646de4bed48a29f7"}, + {file = "gensim-4.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1049f5bc2a84b21a1cb9976741826c0ebf25cfdff4a888361db4b4a697d99f0d"}, + {file = "gensim-4.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:e99b236b6638a30d7f878e2e21a94dab2f6d4b4fd3c242f44dca1341940cb0cb"}, + {file = "gensim-4.3.3.tar.gz", hash = "sha256:84852076a6a3d88d7dac5be245e24c21c3b819b565e14c1b61fa3e5ee76dcf57"}, ] [package.dependencies] -numpy = ">=1.18.5" -scipy = ">=1.7.0" +numpy = ">=1.18.5,<2.0" +scipy = ">=1.7.0,<1.14.0" smart-open = ">=1.8.1" [package.extras] distributed = ["Pyro4 (>=4.27)"] -docs = ["POT", "Pyro4", "Pyro4 (>=4.27)", "annoy", "matplotlib", "memory-profiler", "mock", "nltk", "pandas", "pytest", "pytest-cov", "scikit-learn", "sphinx (==5.1.1)", "sphinx-gallery (==0.11.1)", "sphinxcontrib-napoleon (==0.7)", "sphinxcontrib.programoutput (==0.17)", "statsmodels", "testfixtures", "visdom (>=0.1.8,!=0.1.8.7)"] -test = ["POT", "mock", "pytest", "pytest-cov", "testfixtures", "visdom (>=0.1.8,!=0.1.8.7)"] -test-win = ["POT", "mock", "pytest", "pytest-cov", "testfixtures"] +docs = ["POT", "Pyro4", "Pyro4 (>=4.27)", "annoy", "matplotlib", "memory-profiler", "nltk", "pandas", "pytest", "pytest-cov", "scikit-learn", "sphinx (==5.1.1)", "sphinx-gallery (==0.11.1)", "sphinxcontrib-napoleon (==0.7)", "sphinxcontrib.programoutput (==0.17)", "statsmodels", "testfixtures", "visdom (>=0.1.8,!=0.1.8.7)"] +test = ["POT", "pytest", "pytest-cov", "testfixtures", "visdom (>=0.1.8,!=0.1.8.7)"] +test-win = ["POT", "pytest", "pytest-cov", "testfixtures"] [[package]] name = "graspologic" @@ -1505,13 +1505,13 @@ files = [ [[package]] name = "importlib-metadata" -version = "8.0.0" +version = "8.2.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, - {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, + {file = "importlib_metadata-8.2.0-py3-none-any.whl", hash = "sha256:11901fa0c2f97919b288679932bb64febaeacf289d18ac84dd68cb2e74213369"}, + {file = "importlib_metadata-8.2.0.tar.gz", hash = "sha256:72e8d4399996132204f9a16dcc751af254a48f8d1b20b9ff0f98d4a8f901e73d"}, ] [package.dependencies] @@ -1947,13 +1947,13 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> [[package]] name = "jupyterlab" -version = "4.2.3" +version = "4.2.4" description = "JupyterLab computational environment" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.2.3-py3-none-any.whl", hash = "sha256:0b59d11808e84bb84105c73364edfa867dd475492429ab34ea388a52f2e2e596"}, - {file = "jupyterlab-4.2.3.tar.gz", hash = "sha256:df6e46969ea51d66815167f23d92f105423b7f1f06fa604d4f44aeb018c82c7b"}, + {file = "jupyterlab-4.2.4-py3-none-any.whl", hash = "sha256:807a7ec73637744f879e112060d4b9d9ebe028033b7a429b2d1f4fc523d00245"}, + {file = "jupyterlab-4.2.4.tar.gz", hash = "sha256:343a979fb9582fd08c8511823e320703281cd072a0049bcdafdc7afeda7f2537"}, ] [package.dependencies] @@ -1977,7 +1977,7 @@ dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] -upgrade-extension = ["copier (>=8,<10)", "jinja2-time (<0.3)", "pydantic (<2.0)", "pyyaml-include (<2.0)", "tomli-w (<2.0)"] +upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)", "pyyaml-include (<3.0)", "tomli-w (<2.0)"] [[package]] name = "jupyterlab-pygments" @@ -2141,17 +2141,17 @@ files = [ [[package]] name = "lancedb" -version = "0.10.0" +version = "0.10.2" description = "lancedb" optional = false python-versions = ">=3.8" files = [ - {file = "lancedb-0.10.0-cp38-abi3-macosx_10_15_x86_64.whl", hash = "sha256:e7b922db07d3186867c622af8bbd6fd0306e11fcdec57bdd56d0da303a51a7ad"}, - {file = "lancedb-0.10.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:f390ebe0f145612503f50d6158a7543c7eed8ad9d7a4d560aff1f1c572c3b4ea"}, - {file = "lancedb-0.10.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfa5b19ef009fd96e16417363af52a80fd53b9fa62c322e7020c6a2e154714b7"}, - {file = "lancedb-0.10.0-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:e1eb075528f1a9dccb37d490b6bf745ed3afa2decb28c3846490c04bc80dc958"}, - {file = "lancedb-0.10.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:828ff34ed3d81387516e4c8356c5f960ad2c6132a1d5e2cee152f359ec9a40c9"}, - {file = "lancedb-0.10.0-cp38-abi3-win_amd64.whl", hash = "sha256:c0f7eec52938ea00ffad80bdeaa7ad398d90e0b47691c86bc9baaa604493e1f0"}, + {file = "lancedb-0.10.2-cp38-abi3-macosx_10_15_x86_64.whl", hash = "sha256:ae148b4cba151ec464c607447c3afeab0b0d55d8ebf72cf1dd6f58fa00278771"}, + {file = "lancedb-0.10.2-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c808755e217e4a6520bdebe05297b8a7aada231497b8304132610a60fb72ddc9"}, + {file = "lancedb-0.10.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcb8efd9d8341870915e8495cf383cb4bf2b69dc41ba8921a271bad8b3225d25"}, + {file = "lancedb-0.10.2-cp38-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:ef5d384cc9ca200e659a676cf4932d447056c1a92133aec4af27ddab833f68cc"}, + {file = "lancedb-0.10.2-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6aa7427d74c5ce8f5e44a4f6b736f201fabc15f4251a89fa65ee94a00c7124e7"}, + {file = "lancedb-0.10.2-cp38-abi3-win_amd64.whl", hash = "sha256:40c8ec4e407624ab2ea636d54cb0d5a72ec35dfd9421fb1b45bd10827c2c474d"}, ] [package.dependencies] @@ -2459,13 +2459,13 @@ files = [ [[package]] name = "msal" -version = "1.29.0" +version = "1.30.0" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." optional = false python-versions = ">=3.7" files = [ - {file = "msal-1.29.0-py3-none-any.whl", hash = "sha256:6b301e63f967481f0cc1a3a3bac0cf322b276855bc1b0955468d9deb3f33d511"}, - {file = "msal-1.29.0.tar.gz", hash = "sha256:8f6725f099752553f9b2fe84125e2a5ebe47b49f92eacca33ebedd3a9ebaae25"}, + {file = "msal-1.30.0-py3-none-any.whl", hash = "sha256:423872177410cb61683566dc3932db7a76f661a5d2f6f52f02a047f101e1c1de"}, + {file = "msal-1.30.0.tar.gz", hash = "sha256:b4bf00850092e465157d814efa24a18f788284c9a479491024d62903085ea2fb"}, ] [package.dependencies] @@ -2757,13 +2757,13 @@ files = [ [[package]] name = "openai" -version = "1.35.14" +version = "1.37.0" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.35.14-py3-none-any.whl", hash = "sha256:adadf8c176e0b8c47ad782ed45dc20ef46438ee1f02c7103c4155cff79c8f68b"}, - {file = "openai-1.35.14.tar.gz", hash = "sha256:394ba1dfd12ecec1d634c50e512d24ff1858bbc2674ffcce309b822785a058de"}, + {file = "openai-1.37.0-py3-none-any.whl", hash = "sha256:a903245c0ecf622f2830024acdaa78683c70abb8e9d37a497b851670864c9f73"}, + {file = "openai-1.37.0.tar.gz", hash = "sha256:dc8197fc40ab9d431777b6620d962cc49f4544ffc3011f03ce0a805e6eb54adb"}, ] [package.dependencies] @@ -3259,13 +3259,13 @@ files = [ [[package]] name = "pure-eval" -version = "0.2.2" +version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" files = [ - {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, - {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, + {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, + {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, ] [package.extras] @@ -3572,13 +3572,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyright" -version = "1.1.371" +version = "1.1.373" description = "Command line wrapper for pyright" optional = false python-versions = ">=3.7" files = [ - {file = "pyright-1.1.371-py3-none-any.whl", hash = "sha256:cce52e42ff73943243e7e5e24f2a59dee81b97d99f4e3cf97370b27e8a1858cd"}, - {file = "pyright-1.1.371.tar.gz", hash = "sha256:777b508b92dda2db476214c400ce043aad8d8f3dd0e10d284c96e79f298308b5"}, + {file = "pyright-1.1.373-py3-none-any.whl", hash = "sha256:b805413227f2c209f27b14b55da27fe5e9fb84129c9f1eb27708a5d12f6f000e"}, + {file = "pyright-1.1.373.tar.gz", hash = "sha256:f41bcfc8b9d1802b09921a394d6ae1ce19694957b628bc657629688daf8a83ff"}, ] [package.dependencies] @@ -3590,13 +3590,13 @@ dev = ["twine (>=3.4.1)"] [[package]] name = "pytest" -version = "8.2.2" +version = "8.3.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.2.2-py3-none-any.whl", hash = "sha256:c434598117762e2bd304e526244f67bf66bbd7b5d6cf22138be51ff661980343"}, - {file = "pytest-8.2.2.tar.gz", hash = "sha256:de4bb8104e201939ccdc688b27a89a7be2079b22e2bd2b07f806b6ba71117977"}, + {file = "pytest-8.3.1-py3-none-any.whl", hash = "sha256:e9600ccf4f563976e2c99fa02c7624ab938296551f280835ee6516df8bc4ae8c"}, + {file = "pytest-8.3.1.tar.gz", hash = "sha256:7e8e5c5abd6e93cb1cc151f23e57adc31fcf8cfd2a3ff2da63e23f732de35db6"}, ] [package.dependencies] @@ -3604,7 +3604,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.5,<2.0" +pluggy = ">=1.5,<2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] @@ -3612,13 +3612,13 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "pytest-asyncio" -version = "0.23.7" +version = "0.23.8" description = "Pytest support for asyncio" optional = false python-versions = ">=3.8" files = [ - {file = "pytest_asyncio-0.23.7-py3-none-any.whl", hash = "sha256:009b48127fbe44518a547bddd25611551b0e43ccdbf1e67d12479f569832c20b"}, - {file = "pytest_asyncio-0.23.7.tar.gz", hash = "sha256:5f5c72948f4c49e7db4f29f2521d4031f1c27f86e57b046126654083d4770268"}, + {file = "pytest_asyncio-0.23.8-py3-none-any.whl", hash = "sha256:50265d892689a5faefb84df80819d1ecef566eb3549cf915dfb33569359d1ce2"}, + {file = "pytest_asyncio-0.23.8.tar.gz", hash = "sha256:759b10b33a6dc61cce40a8bd5205e302978bbbcc00e279a8b61d9a6a3c82e4d3"}, ] [package.dependencies] @@ -3755,6 +3755,7 @@ files = [ {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"}, @@ -4129,137 +4130,141 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.19.0" +version = "0.19.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.19.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:fb37bd599f031f1a6fb9e58ec62864ccf3ad549cf14bac527dbfa97123edcca4"}, - {file = "rpds_py-0.19.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3384d278df99ec2c6acf701d067147320b864ef6727405d6470838476e44d9e8"}, - {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54548e0be3ac117595408fd4ca0ac9278fde89829b0b518be92863b17ff67a2"}, - {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8eb488ef928cdbc05a27245e52de73c0d7c72a34240ef4d9893fdf65a8c1a955"}, - {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5da93debdfe27b2bfc69eefb592e1831d957b9535e0943a0ee8b97996de21b5"}, - {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79e205c70afddd41f6ee79a8656aec738492a550247a7af697d5bd1aee14f766"}, - {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:959179efb3e4a27610e8d54d667c02a9feaa86bbabaf63efa7faa4dfa780d4f1"}, - {file = "rpds_py-0.19.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a6e605bb9edcf010f54f8b6a590dd23a4b40a8cb141255eec2a03db249bc915b"}, - {file = "rpds_py-0.19.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9133d75dc119a61d1a0ded38fb9ba40a00ef41697cc07adb6ae098c875195a3f"}, - {file = "rpds_py-0.19.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dd36b712d35e757e28bf2f40a71e8f8a2d43c8b026d881aa0c617b450d6865c9"}, - {file = "rpds_py-0.19.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:354f3a91718489912f2e0fc331c24eaaf6a4565c080e00fbedb6015857c00582"}, - {file = "rpds_py-0.19.0-cp310-none-win32.whl", hash = "sha256:ebcbf356bf5c51afc3290e491d3722b26aaf5b6af3c1c7f6a1b757828a46e336"}, - {file = "rpds_py-0.19.0-cp310-none-win_amd64.whl", hash = "sha256:75a6076289b2df6c8ecb9d13ff79ae0cad1d5fb40af377a5021016d58cd691ec"}, - {file = "rpds_py-0.19.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6d45080095e585f8c5097897313def60caa2046da202cdb17a01f147fb263b81"}, - {file = "rpds_py-0.19.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c5c9581019c96f865483d031691a5ff1cc455feb4d84fc6920a5ffc48a794d8a"}, - {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1540d807364c84516417115c38f0119dfec5ea5c0dd9a25332dea60b1d26fc4d"}, - {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9e65489222b410f79711dc3d2d5003d2757e30874096b2008d50329ea4d0f88c"}, - {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9da6f400eeb8c36f72ef6646ea530d6d175a4f77ff2ed8dfd6352842274c1d8b"}, - {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37f46bb11858717e0efa7893c0f7055c43b44c103e40e69442db5061cb26ed34"}, - {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:071d4adc734de562bd11d43bd134330fb6249769b2f66b9310dab7460f4bf714"}, - {file = "rpds_py-0.19.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9625367c8955e4319049113ea4f8fee0c6c1145192d57946c6ffcd8fe8bf48dd"}, - {file = "rpds_py-0.19.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e19509145275d46bc4d1e16af0b57a12d227c8253655a46bbd5ec317e941279d"}, - {file = "rpds_py-0.19.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d438e4c020d8c39961deaf58f6913b1bf8832d9b6f62ec35bd93e97807e9cbc"}, - {file = "rpds_py-0.19.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:90bf55d9d139e5d127193170f38c584ed3c79e16638890d2e36f23aa1630b952"}, - {file = "rpds_py-0.19.0-cp311-none-win32.whl", hash = "sha256:8d6ad132b1bc13d05ffe5b85e7a01a3998bf3a6302ba594b28d61b8c2cf13aaf"}, - {file = "rpds_py-0.19.0-cp311-none-win_amd64.whl", hash = "sha256:7ec72df7354e6b7f6eb2a17fa6901350018c3a9ad78e48d7b2b54d0412539a67"}, - {file = "rpds_py-0.19.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:5095a7c838a8647c32aa37c3a460d2c48debff7fc26e1136aee60100a8cd8f68"}, - {file = "rpds_py-0.19.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f2f78ef14077e08856e788fa482107aa602636c16c25bdf59c22ea525a785e9"}, - {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7cc6cb44f8636fbf4a934ca72f3e786ba3c9f9ba4f4d74611e7da80684e48d2"}, - {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cf902878b4af334a09de7a45badbff0389e7cf8dc2e4dcf5f07125d0b7c2656d"}, - {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:688aa6b8aa724db1596514751ffb767766e02e5c4a87486ab36b8e1ebc1aedac"}, - {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57dbc9167d48e355e2569346b5aa4077f29bf86389c924df25c0a8b9124461fb"}, - {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b4cf5a9497874822341c2ebe0d5850fed392034caadc0bad134ab6822c0925b"}, - {file = "rpds_py-0.19.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8a790d235b9d39c70a466200d506bb33a98e2ee374a9b4eec7a8ac64c2c261fa"}, - {file = "rpds_py-0.19.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1d16089dfa58719c98a1c06f2daceba6d8e3fb9b5d7931af4a990a3c486241cb"}, - {file = "rpds_py-0.19.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bc9128e74fe94650367fe23f37074f121b9f796cabbd2f928f13e9661837296d"}, - {file = "rpds_py-0.19.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c8f77e661ffd96ff104bebf7d0f3255b02aa5d5b28326f5408d6284c4a8b3248"}, - {file = "rpds_py-0.19.0-cp312-none-win32.whl", hash = "sha256:5f83689a38e76969327e9b682be5521d87a0c9e5a2e187d2bc6be4765f0d4600"}, - {file = "rpds_py-0.19.0-cp312-none-win_amd64.whl", hash = "sha256:06925c50f86da0596b9c3c64c3837b2481337b83ef3519e5db2701df695453a4"}, - {file = "rpds_py-0.19.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:52e466bea6f8f3a44b1234570244b1cff45150f59a4acae3fcc5fd700c2993ca"}, - {file = "rpds_py-0.19.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e21cc693045fda7f745c790cb687958161ce172ffe3c5719ca1764e752237d16"}, - {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b31f059878eb1f5da8b2fd82480cc18bed8dcd7fb8fe68370e2e6285fa86da6"}, - {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dd46f309e953927dd018567d6a9e2fb84783963650171f6c5fe7e5c41fd5666"}, - {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34a01a4490e170376cd79258b7f755fa13b1a6c3667e872c8e35051ae857a92b"}, - {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcf426a8c38eb57f7bf28932e68425ba86def6e756a5b8cb4731d8e62e4e0223"}, - {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f68eea5df6347d3f1378ce992d86b2af16ad7ff4dcb4a19ccdc23dea901b87fb"}, - {file = "rpds_py-0.19.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dab8d921b55a28287733263c0e4c7db11b3ee22aee158a4de09f13c93283c62d"}, - {file = "rpds_py-0.19.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6fe87efd7f47266dfc42fe76dae89060038f1d9cb911f89ae7e5084148d1cc08"}, - {file = "rpds_py-0.19.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:535d4b52524a961d220875688159277f0e9eeeda0ac45e766092bfb54437543f"}, - {file = "rpds_py-0.19.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:8b1a94b8afc154fbe36978a511a1f155f9bd97664e4f1f7a374d72e180ceb0ae"}, - {file = "rpds_py-0.19.0-cp38-none-win32.whl", hash = "sha256:7c98298a15d6b90c8f6e3caa6457f4f022423caa5fa1a1ca7a5e9e512bdb77a4"}, - {file = "rpds_py-0.19.0-cp38-none-win_amd64.whl", hash = "sha256:b0da31853ab6e58a11db3205729133ce0df26e6804e93079dee095be3d681dc1"}, - {file = "rpds_py-0.19.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5039e3cef7b3e7a060de468a4a60a60a1f31786da94c6cb054e7a3c75906111c"}, - {file = "rpds_py-0.19.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab1932ca6cb8c7499a4d87cb21ccc0d3326f172cfb6a64021a889b591bb3045c"}, - {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2afd2164a1e85226fcb6a1da77a5c8896c18bfe08e82e8ceced5181c42d2179"}, - {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b1c30841f5040de47a0046c243fc1b44ddc87d1b12435a43b8edff7e7cb1e0d0"}, - {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f757f359f30ec7dcebca662a6bd46d1098f8b9fb1fcd661a9e13f2e8ce343ba1"}, - {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15e65395a59d2e0e96caf8ee5389ffb4604e980479c32742936ddd7ade914b22"}, - {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb0f6eb3a320f24b94d177e62f4074ff438f2ad9d27e75a46221904ef21a7b05"}, - {file = "rpds_py-0.19.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b228e693a2559888790936e20f5f88b6e9f8162c681830eda303bad7517b4d5a"}, - {file = "rpds_py-0.19.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2575efaa5d949c9f4e2cdbe7d805d02122c16065bfb8d95c129372d65a291a0b"}, - {file = "rpds_py-0.19.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5c872814b77a4e84afa293a1bee08c14daed1068b2bb1cc312edbf020bbbca2b"}, - {file = "rpds_py-0.19.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:850720e1b383df199b8433a20e02b25b72f0fded28bc03c5bd79e2ce7ef050be"}, - {file = "rpds_py-0.19.0-cp39-none-win32.whl", hash = "sha256:ce84a7efa5af9f54c0aa7692c45861c1667080814286cacb9958c07fc50294fb"}, - {file = "rpds_py-0.19.0-cp39-none-win_amd64.whl", hash = "sha256:1c26da90b8d06227d7769f34915913911222d24ce08c0ab2d60b354e2d9c7aff"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:75969cf900d7be665ccb1622a9aba225cf386bbc9c3bcfeeab9f62b5048f4a07"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8445f23f13339da640d1be8e44e5baf4af97e396882ebbf1692aecd67f67c479"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5a7c1062ef8aea3eda149f08120f10795835fc1c8bc6ad948fb9652a113ca55"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:462b0c18fbb48fdbf980914a02ee38c423a25fcc4cf40f66bacc95a2d2d73bc8"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3208f9aea18991ac7f2b39721e947bbd752a1abbe79ad90d9b6a84a74d44409b"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3444fe52b82f122d8a99bf66777aed6b858d392b12f4c317da19f8234db4533"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88cb4bac7185a9f0168d38c01d7a00addece9822a52870eee26b8d5b61409213"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6b130bd4163c93798a6b9bb96be64a7c43e1cec81126ffa7ffaa106e1fc5cef5"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:a707b158b4410aefb6b054715545bbb21aaa5d5d0080217290131c49c2124a6e"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dc9ac4659456bde7c567107556ab065801622396b435a3ff213daef27b495388"}, - {file = "rpds_py-0.19.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:81ea573aa46d3b6b3d890cd3c0ad82105985e6058a4baed03cf92518081eec8c"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3f148c3f47f7f29a79c38cc5d020edcb5ca780020fab94dbc21f9af95c463581"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0906357f90784a66e89ae3eadc2654f36c580a7d65cf63e6a616e4aec3a81be"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f629ecc2db6a4736b5ba95a8347b0089240d69ad14ac364f557d52ad68cf94b0"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6feacd1d178c30e5bc37184526e56740342fd2aa6371a28367bad7908d454fc"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae8b6068ee374fdfab63689be0963333aa83b0815ead5d8648389a8ded593378"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d57546bad81e0da13263e4c9ce30e96dcbe720dbff5ada08d2600a3502e526"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b6683a37338818646af718c9ca2a07f89787551057fae57c4ec0446dc6224b"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e8481b946792415adc07410420d6fc65a352b45d347b78fec45d8f8f0d7496f0"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bec35eb20792ea64c3c57891bc3ca0bedb2884fbac2c8249d9b731447ecde4fa"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:aa5476c3e3a402c37779e95f7b4048db2cb5b0ed0b9d006983965e93f40fe05a"}, - {file = "rpds_py-0.19.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:19d02c45f2507b489fd4df7b827940f1420480b3e2e471e952af4d44a1ea8e34"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3e2fd14c5d49ee1da322672375963f19f32b3d5953f0615b175ff7b9d38daed"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:93a91c2640645303e874eada51f4f33351b84b351a689d470f8108d0e0694210"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5b9fc03bf76a94065299d4a2ecd8dfbae4ae8e2e8098bbfa6ab6413ca267709"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5a4b07cdf3f84310c08c1de2c12ddadbb7a77568bcb16e95489f9c81074322ed"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba0ed0dc6763d8bd6e5de5cf0d746d28e706a10b615ea382ac0ab17bb7388633"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:474bc83233abdcf2124ed3f66230a1c8435896046caa4b0b5ab6013c640803cc"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329c719d31362355a96b435f4653e3b4b061fcc9eba9f91dd40804ca637d914e"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef9101f3f7b59043a34f1dccbb385ca760467590951952d6701df0da9893ca0c"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0121803b0f424ee2109d6e1f27db45b166ebaa4b32ff47d6aa225642636cd834"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8344127403dea42f5970adccf6c5957a71a47f522171fafaf4c6ddb41b61703a"}, - {file = "rpds_py-0.19.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:443cec402ddd650bb2b885113e1dcedb22b1175c6be223b14246a714b61cd521"}, - {file = "rpds_py-0.19.0.tar.gz", hash = "sha256:4fdc9afadbeb393b4bbbad75481e0ea78e4469f2e1d713a90811700830b553a9"}, + {file = "rpds_py-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:aaf71f95b21f9dc708123335df22e5a2fef6307e3e6f9ed773b2e0938cc4d491"}, + {file = "rpds_py-0.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ca0dda0c5715efe2ab35bb83f813f681ebcd2840d8b1b92bfc6fe3ab382fae4a"}, + {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81db2e7282cc0487f500d4db203edc57da81acde9e35f061d69ed983228ffe3b"}, + {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1a8dfa125b60ec00c7c9baef945bb04abf8ac772d8ebefd79dae2a5f316d7850"}, + {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271accf41b02687cef26367c775ab220372ee0f4925591c6796e7c148c50cab5"}, + {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9bc4161bd3b970cd6a6fcda70583ad4afd10f2750609fb1f3ca9505050d4ef3"}, + {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0cf2a0dbb5987da4bd92a7ca727eadb225581dd9681365beba9accbe5308f7d"}, + {file = "rpds_py-0.19.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b5e28e56143750808c1c79c70a16519e9bc0a68b623197b96292b21b62d6055c"}, + {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c7af6f7b80f687b33a4cdb0a785a5d4de1fb027a44c9a049d8eb67d5bfe8a687"}, + {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e429fc517a1c5e2a70d576077231538a98d59a45dfc552d1ac45a132844e6dfb"}, + {file = "rpds_py-0.19.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d2dbd8f4990d4788cb122f63bf000357533f34860d269c1a8e90ae362090ff3a"}, + {file = "rpds_py-0.19.1-cp310-none-win32.whl", hash = "sha256:e0f9d268b19e8f61bf42a1da48276bcd05f7ab5560311f541d22557f8227b866"}, + {file = "rpds_py-0.19.1-cp310-none-win_amd64.whl", hash = "sha256:df7c841813f6265e636fe548a49664c77af31ddfa0085515326342a751a6ba51"}, + {file = "rpds_py-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:902cf4739458852fe917104365ec0efbea7d29a15e4276c96a8d33e6ed8ec137"}, + {file = "rpds_py-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f3d73022990ab0c8b172cce57c69fd9a89c24fd473a5e79cbce92df87e3d9c48"}, + {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3837c63dd6918a24de6c526277910e3766d8c2b1627c500b155f3eecad8fad65"}, + {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cdb7eb3cf3deb3dd9e7b8749323b5d970052711f9e1e9f36364163627f96da58"}, + {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26ab43b6d65d25b1a333c8d1b1c2f8399385ff683a35ab5e274ba7b8bb7dc61c"}, + {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75130df05aae7a7ac171b3b5b24714cffeabd054ad2ebc18870b3aa4526eba23"}, + {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34f751bf67cab69638564eee34023909380ba3e0d8ee7f6fe473079bf93f09b"}, + {file = "rpds_py-0.19.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2671cb47e50a97f419a02cd1e0c339b31de017b033186358db92f4d8e2e17d8"}, + {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c73254c256081704dba0a333457e2fb815364018788f9b501efe7c5e0ada401"}, + {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4383beb4a29935b8fa28aca8fa84c956bf545cb0c46307b091b8d312a9150e6a"}, + {file = "rpds_py-0.19.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dbceedcf4a9329cc665452db1aaf0845b85c666e4885b92ee0cddb1dbf7e052a"}, + {file = "rpds_py-0.19.1-cp311-none-win32.whl", hash = "sha256:f0a6d4a93d2a05daec7cb885157c97bbb0be4da739d6f9dfb02e101eb40921cd"}, + {file = "rpds_py-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:c149a652aeac4902ecff2dd93c3b2681c608bd5208c793c4a99404b3e1afc87c"}, + {file = "rpds_py-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:56313be667a837ff1ea3508cebb1ef6681d418fa2913a0635386cf29cff35165"}, + {file = "rpds_py-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d1d7539043b2b31307f2c6c72957a97c839a88b2629a348ebabe5aa8b626d6b"}, + {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1dc59a5e7bc7f44bd0c048681f5e05356e479c50be4f2c1a7089103f1621d5"}, + {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b8f78398e67a7227aefa95f876481485403eb974b29e9dc38b307bb6eb2315ea"}, + {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ef07a0a1d254eeb16455d839cef6e8c2ed127f47f014bbda64a58b5482b6c836"}, + {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8124101e92c56827bebef084ff106e8ea11c743256149a95b9fd860d3a4f331f"}, + {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08ce9c95a0b093b7aec75676b356a27879901488abc27e9d029273d280438505"}, + {file = "rpds_py-0.19.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b02dd77a2de6e49078c8937aadabe933ceac04b41c5dde5eca13a69f3cf144e"}, + {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4dd02e29c8cbed21a1875330b07246b71121a1c08e29f0ee3db5b4cfe16980c4"}, + {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9c7042488165f7251dc7894cd533a875d2875af6d3b0e09eda9c4b334627ad1c"}, + {file = "rpds_py-0.19.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f809a17cc78bd331e137caa25262b507225854073fd319e987bd216bed911b7c"}, + {file = "rpds_py-0.19.1-cp312-none-win32.whl", hash = "sha256:3ddab996807c6b4227967fe1587febade4e48ac47bb0e2d3e7858bc621b1cace"}, + {file = "rpds_py-0.19.1-cp312-none-win_amd64.whl", hash = "sha256:32e0db3d6e4f45601b58e4ac75c6f24afbf99818c647cc2066f3e4b192dabb1f"}, + {file = "rpds_py-0.19.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:747251e428406b05fc86fee3904ee19550c4d2d19258cef274e2151f31ae9d38"}, + {file = "rpds_py-0.19.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dc733d35f861f8d78abfaf54035461e10423422999b360966bf1c443cbc42705"}, + {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbda75f245caecff8faa7e32ee94dfaa8312a3367397975527f29654cd17a6ed"}, + {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd04d8cab16cab5b0a9ffc7d10f0779cf1120ab16c3925404428f74a0a43205a"}, + {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2d66eb41ffca6cc3c91d8387509d27ba73ad28371ef90255c50cb51f8953301"}, + {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdf4890cda3b59170009d012fca3294c00140e7f2abe1910e6a730809d0f3f9b"}, + {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1fa67ef839bad3815124f5f57e48cd50ff392f4911a9f3cf449d66fa3df62a5"}, + {file = "rpds_py-0.19.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b82c9514c6d74b89a370c4060bdb80d2299bc6857e462e4a215b4ef7aa7b090e"}, + {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c7b07959866a6afb019abb9564d8a55046feb7a84506c74a6f197cbcdf8a208e"}, + {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4f580ae79d0b861dfd912494ab9d477bea535bfb4756a2269130b6607a21802e"}, + {file = "rpds_py-0.19.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c6d20c8896c00775e6f62d8373aba32956aa0b850d02b5ec493f486c88e12859"}, + {file = "rpds_py-0.19.1-cp313-none-win32.whl", hash = "sha256:afedc35fe4b9e30ab240b208bb9dc8938cb4afe9187589e8d8d085e1aacb8309"}, + {file = "rpds_py-0.19.1-cp313-none-win_amd64.whl", hash = "sha256:1d4af2eb520d759f48f1073ad3caef997d1bfd910dc34e41261a595d3f038a94"}, + {file = "rpds_py-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:34bca66e2e3eabc8a19e9afe0d3e77789733c702c7c43cd008e953d5d1463fde"}, + {file = "rpds_py-0.19.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:24f8ae92c7fae7c28d0fae9b52829235df83f34847aa8160a47eb229d9666c7b"}, + {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71157f9db7f6bc6599a852852f3389343bea34315b4e6f109e5cbc97c1fb2963"}, + {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d494887d40dc4dd0d5a71e9d07324e5c09c4383d93942d391727e7a40ff810b"}, + {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b3661e6d4ba63a094138032c1356d557de5b3ea6fd3cca62a195f623e381c76"}, + {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97fbb77eaeb97591efdc654b8b5f3ccc066406ccfb3175b41382f221ecc216e8"}, + {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cc4bc73e53af8e7a42c8fd7923bbe35babacfa7394ae9240b3430b5dcf16b2a"}, + {file = "rpds_py-0.19.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:35af5e4d5448fa179fd7fff0bba0fba51f876cd55212f96c8bbcecc5c684ae5c"}, + {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3511f6baf8438326e351097cecd137eb45c5f019944fe0fd0ae2fea2fd26be39"}, + {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:57863d16187995c10fe9cf911b897ed443ac68189179541734502353af33e693"}, + {file = "rpds_py-0.19.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:9e318e6786b1e750a62f90c6f7fa8b542102bdcf97c7c4de2a48b50b61bd36ec"}, + {file = "rpds_py-0.19.1-cp38-none-win32.whl", hash = "sha256:53dbc35808c6faa2ce3e48571f8f74ef70802218554884787b86a30947842a14"}, + {file = "rpds_py-0.19.1-cp38-none-win_amd64.whl", hash = "sha256:8df1c283e57c9cb4d271fdc1875f4a58a143a2d1698eb0d6b7c0d7d5f49c53a1"}, + {file = "rpds_py-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e76c902d229a3aa9d5ceb813e1cbcc69bf5bda44c80d574ff1ac1fa3136dea71"}, + {file = "rpds_py-0.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de1f7cd5b6b351e1afd7568bdab94934d656abe273d66cda0ceea43bbc02a0c2"}, + {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fc5a84777cb61692d17988989690d6f34f7f95968ac81398d67c0d0994a897"}, + {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:74129d5ffc4cde992d89d345f7f7d6758320e5d44a369d74d83493429dad2de5"}, + {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e360188b72f8080fefa3adfdcf3618604cc8173651c9754f189fece068d2a45"}, + {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13e6d4840897d4e4e6b2aa1443e3a8eca92b0402182aafc5f4ca1f5e24f9270a"}, + {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f09529d2332264a902688031a83c19de8fda5eb5881e44233286b9c9ec91856d"}, + {file = "rpds_py-0.19.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0d4b52811dcbc1aba08fd88d475f75b4f6db0984ba12275d9bed1a04b2cae9b5"}, + {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dd635c2c4043222d80d80ca1ac4530a633102a9f2ad12252183bcf338c1b9474"}, + {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f35b34a5184d5e0cc360b61664c1c06e866aab077b5a7c538a3e20c8fcdbf90b"}, + {file = "rpds_py-0.19.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d4ec0046facab83012d821b33cead742a35b54575c4edfb7ed7445f63441835f"}, + {file = "rpds_py-0.19.1-cp39-none-win32.whl", hash = "sha256:f5b8353ea1a4d7dfb59a7f45c04df66ecfd363bb5b35f33b11ea579111d4655f"}, + {file = "rpds_py-0.19.1-cp39-none-win_amd64.whl", hash = "sha256:1fb93d3486f793d54a094e2bfd9cd97031f63fcb5bc18faeb3dd4b49a1c06523"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7d5c7e32f3ee42f77d8ff1a10384b5cdcc2d37035e2e3320ded909aa192d32c3"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:89cc8921a4a5028d6dd388c399fcd2eef232e7040345af3d5b16c04b91cf3c7e"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca34e913d27401bda2a6f390d0614049f5a95b3b11cd8eff80fe4ec340a1208"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5953391af1405f968eb5701ebbb577ebc5ced8d0041406f9052638bafe52209d"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:840e18c38098221ea6201f091fc5d4de6128961d2930fbbc96806fb43f69aec1"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d8b735c4d162dc7d86a9cf3d717f14b6c73637a1f9cd57fe7e61002d9cb1972"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce757c7c90d35719b38fa3d4ca55654a76a40716ee299b0865f2de21c146801c"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9421b23c85f361a133aa7c5e8ec757668f70343f4ed8fdb5a4a14abd5437244"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3b823be829407393d84ee56dc849dbe3b31b6a326f388e171555b262e8456cc1"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:5e58b61dcbb483a442c6239c3836696b79f2cd8e7eec11e12155d3f6f2d886d1"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39d67896f7235b2c886fb1ee77b1491b77049dcef6fbf0f401e7b4cbed86bbd4"}, + {file = "rpds_py-0.19.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8b32cd4ab6db50c875001ba4f5a6b30c0f42151aa1fbf9c2e7e3674893fb1dc4"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1c32e41de995f39b6b315d66c27dea3ef7f7c937c06caab4c6a79a5e09e2c415"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a129c02b42d46758c87faeea21a9f574e1c858b9f358b6dd0bbd71d17713175"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:346557f5b1d8fd9966059b7a748fd79ac59f5752cd0e9498d6a40e3ac1c1875f"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31e450840f2f27699d014cfc8865cc747184286b26d945bcea6042bb6aa4d26e"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01227f8b3e6c8961490d869aa65c99653df80d2f0a7fde8c64ebddab2b9b02fd"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:69084fd29bfeff14816666c93a466e85414fe6b7d236cfc108a9c11afa6f7301"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d2b88efe65544a7d5121b0c3b003ebba92bfede2ea3577ce548b69c5235185"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ea961a674172ed2235d990d7edf85d15d8dfa23ab8575e48306371c070cda67"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:5beffdbe766cfe4fb04f30644d822a1080b5359df7db3a63d30fa928375b2720"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:720f3108fb1bfa32e51db58b832898372eb5891e8472a8093008010911e324c5"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c2087dbb76a87ec2c619253e021e4fb20d1a72580feeaa6892b0b3d955175a71"}, + {file = "rpds_py-0.19.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2ddd50f18ebc05ec29a0d9271e9dbe93997536da3546677f8ca00b76d477680c"}, + {file = "rpds_py-0.19.1.tar.gz", hash = "sha256:31dd5794837f00b46f4096aa8ccaa5972f73a938982e32ed817bb520c465e520"}, ] [[package]] name = "ruff" -version = "0.5.2" +version = "0.5.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.5.2-py3-none-linux_armv6l.whl", hash = "sha256:7bab8345df60f9368d5f4594bfb8b71157496b44c30ff035d1d01972e764d3be"}, - {file = "ruff-0.5.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:1aa7acad382ada0189dbe76095cf0a36cd0036779607c397ffdea16517f535b1"}, - {file = "ruff-0.5.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:aec618d5a0cdba5592c60c2dee7d9c865180627f1a4a691257dea14ac1aa264d"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b62adc5ce81780ff04077e88bac0986363e4a3260ad3ef11ae9c14aa0e67ef"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dc42ebf56ede83cb080a50eba35a06e636775649a1ffd03dc986533f878702a3"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c15c6e9f88c67ffa442681365d11df38afb11059fc44238e71a9d9f1fd51de70"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d3de9a5960f72c335ef00763d861fc5005ef0644cb260ba1b5a115a102157251"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe5a968ae933e8f7627a7b2fc8893336ac2be0eb0aace762d3421f6e8f7b7f83"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a04f54a9018f75615ae52f36ea1c5515e356e5d5e214b22609ddb546baef7132"}, - {file = "ruff-0.5.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed02fb52e3741f0738db5f93e10ae0fb5c71eb33a4f2ba87c9a2fa97462a649"}, - {file = "ruff-0.5.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:3cf8fe659f6362530435d97d738eb413e9f090e7e993f88711b0377fbdc99f60"}, - {file = "ruff-0.5.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:237a37e673e9f3cbfff0d2243e797c4862a44c93d2f52a52021c1a1b0899f846"}, - {file = "ruff-0.5.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2a2949ce7c1cbd8317432ada80fe32156df825b2fd611688814c8557824ef060"}, - {file = "ruff-0.5.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:481af57c8e99da92ad168924fd82220266043c8255942a1cb87958b108ac9335"}, - {file = "ruff-0.5.2-py3-none-win32.whl", hash = "sha256:f1aea290c56d913e363066d83d3fc26848814a1fed3d72144ff9c930e8c7c718"}, - {file = "ruff-0.5.2-py3-none-win_amd64.whl", hash = "sha256:8532660b72b5d94d2a0a7a27ae7b9b40053662d00357bb2a6864dd7e38819084"}, - {file = "ruff-0.5.2-py3-none-win_arm64.whl", hash = "sha256:73439805c5cb68f364d826a5c5c4b6c798ded6b7ebaa4011f01ce6c94e4d5583"}, - {file = "ruff-0.5.2.tar.gz", hash = "sha256:2c0df2d2de685433794a14d8d2e240df619b748fbe3367346baa519d8e6f1ca2"}, + {file = "ruff-0.5.4-py3-none-linux_armv6l.whl", hash = "sha256:82acef724fc639699b4d3177ed5cc14c2a5aacd92edd578a9e846d5b5ec18ddf"}, + {file = "ruff-0.5.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:da62e87637c8838b325e65beee485f71eb36202ce8e3cdbc24b9fcb8b99a37be"}, + {file = "ruff-0.5.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e98ad088edfe2f3b85a925ee96da652028f093d6b9b56b76fc242d8abb8e2059"}, + {file = "ruff-0.5.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c55efbecc3152d614cfe6c2247a3054cfe358cefbf794f8c79c8575456efe19"}, + {file = "ruff-0.5.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9b85eaa1f653abd0a70603b8b7008d9e00c9fa1bbd0bf40dad3f0c0bdd06793"}, + {file = "ruff-0.5.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0cf497a47751be8c883059c4613ba2f50dd06ec672692de2811f039432875278"}, + {file = "ruff-0.5.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:09c14ed6a72af9ccc8d2e313d7acf7037f0faff43cde4b507e66f14e812e37f7"}, + {file = "ruff-0.5.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:628f6b8f97b8bad2490240aa84f3e68f390e13fabc9af5c0d3b96b485921cd60"}, + {file = "ruff-0.5.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3520a00c0563d7a7a7c324ad7e2cde2355733dafa9592c671fb2e9e3cd8194c1"}, + {file = "ruff-0.5.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93789f14ca2244fb91ed481456f6d0bb8af1f75a330e133b67d08f06ad85b516"}, + {file = "ruff-0.5.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:029454e2824eafa25b9df46882f7f7844d36fd8ce51c1b7f6d97e2615a57bbcc"}, + {file = "ruff-0.5.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:9492320eed573a13a0bc09a2957f17aa733fff9ce5bf00e66e6d4a88ec33813f"}, + {file = "ruff-0.5.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a6e1f62a92c645e2919b65c02e79d1f61e78a58eddaebca6c23659e7c7cb4ac7"}, + {file = "ruff-0.5.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:768fa9208df2bec4b2ce61dbc7c2ddd6b1be9fb48f1f8d3b78b3332c7d71c1ff"}, + {file = "ruff-0.5.4-py3-none-win32.whl", hash = "sha256:e1e7393e9c56128e870b233c82ceb42164966f25b30f68acbb24ed69ce9c3a4e"}, + {file = "ruff-0.5.4-py3-none-win_amd64.whl", hash = "sha256:58b54459221fd3f661a7329f177f091eb35cf7a603f01d9eb3eb11cc348d38c4"}, + {file = "ruff-0.5.4-py3-none-win_arm64.whl", hash = "sha256:bd53da65f1085fb5b307c38fd3c0829e76acf7b2a912d8d79cadcdb4875c1eb7"}, + {file = "ruff-0.5.4.tar.gz", hash = "sha256:2795726d5f71c4f4e70653273d1c23a8182f07dd8e48c12de5d867bfb7557eed"}, ] [[package]] @@ -4404,18 +4409,19 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "70.3.0" +version = "71.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-70.3.0-py3-none-any.whl", hash = "sha256:fe384da74336c398e0d956d1cae0669bc02eed936cdb1d49b57de1990dc11ffc"}, - {file = "setuptools-70.3.0.tar.gz", hash = "sha256:f171bab1dfbc86b132997f26a119f6056a57950d058587841a0082e8830f9dc5"}, + {file = "setuptools-71.1.0-py3-none-any.whl", hash = "sha256:33874fdc59b3188304b2e7c80d9029097ea31627180896fb549c578ceb8a0855"}, + {file = "setuptools-71.1.0.tar.gz", hash = "sha256:032d42ee9fb536e33087fb66cac5f840eb9391ed05637b3f2a76a7c8fb477936"}, ] [package.extras] +core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"] doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.11.*)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" diff --git a/tests/smoke/test_fixtures.py b/tests/smoke/test_fixtures.py index b114b8291a..7656612487 100644 --- a/tests/smoke/test_fixtures.py +++ b/tests/smoke/test_fixtures.py @@ -38,8 +38,7 @@ def _load_fixtures(): continue config_file = fixtures_path / subfolder / "config.json" - with config_file.open() as f: - params.append((subfolder, json.load(f))) + params.append((subfolder, json.loads(config_file.read_bytes().decode("utf-8")))) return params @@ -104,8 +103,7 @@ async def prepare_azurite_data(input_path: str, azure: dict) -> Callable[[], Non csv_files = list((root / "input").glob("*.csv")) data_files = txt_files + csv_files for data_file in data_files: - with data_file.open(encoding="utf8") as f: - text = f.read() + text = data_file.read_bytes().decode("utf-8") file_path = ( str(Path(input_base_dir) / data_file.name) if input_base_dir @@ -166,8 +164,7 @@ def __assert_indexer_outputs( assert artifacts.exists(), "artifact folder does not exist" # Check stats for all workflow - with (artifacts / "stats.json").open() as f: - stats = json.load(f) + stats = json.loads((artifacts / "stats.json").read_bytes().decode("utf-8")) # Check all workflows run expected_workflows = set(workflow_config.keys()) From a1138216f05a8d12797df84d00fc6d04ba72c842 Mon Sep 17 00:00:00 2001 From: Julian Whiting <48572565+j2whiting@users.noreply.github.com> Date: Wed, 24 Jul 2024 15:24:00 -0400 Subject: [PATCH 3/9] Fix/few shot selection (#530) * try to always use at least 3 few shot examples * add args for auto tune * use context-based KNN to select most relevant chunks * enforce at least 3 few shot examples for generated prompts * utils for content-based KNN * sem version * fix callback arg * fixes * switch back to no op callbacks * make n few shot, user controlled. default to 2" --- .../minor-20240712152937651350.json | 4 ++ graphrag/prompt_tune/__main__.py | 34 +++++++++++-- graphrag/prompt_tune/cli.py | 31 +++++++++--- .../generator/entity_extraction_prompt.py | 6 ++- graphrag/prompt_tune/loader/input.py | 49 ++++++++++++++++++- 5 files changed, 112 insertions(+), 12 deletions(-) create mode 100644 .semversioner/next-release/minor-20240712152937651350.json diff --git a/.semversioner/next-release/minor-20240712152937651350.json b/.semversioner/next-release/minor-20240712152937651350.json new file mode 100644 index 0000000000..28377f1529 --- /dev/null +++ b/.semversioner/next-release/minor-20240712152937651350.json @@ -0,0 +1,4 @@ +{ + "type": "minor", + "description": "Add content-based KNN for selecting prompt tune few shot examples" +} diff --git a/graphrag/prompt_tune/__main__.py b/graphrag/prompt_tune/__main__.py index dfa65e71bf..e752b05a8f 100644 --- a/graphrag/prompt_tune/__main__.py +++ b/graphrag/prompt_tune/__main__.py @@ -10,7 +10,7 @@ from graphrag.prompt_tune.generator import MAX_TOKEN_COUNT from graphrag.prompt_tune.loader import MIN_CHUNK_SIZE -from .cli import fine_tune +from .cli import prompt_tune class DocSelectionType(Enum): @@ -19,6 +19,7 @@ class DocSelectionType(Enum): ALL = "all" RANDOM = "random" TOP = "top" + AUTO = "auto" def __str__(self): """Return the string representation of the enum value.""" @@ -46,13 +47,29 @@ def __str__(self): parser.add_argument( "--method", - help="The method to select documents, one of: all, random or top", + help="The method to select documents, one of: all, random, top or auto", required=False, type=DocSelectionType, choices=list(DocSelectionType), default=DocSelectionType.RANDOM, ) + parser.add_argument( + "--n_subset_max", + help="The number of text chunks to embed when using auto selection method", + required=False, + type=int, + default=300, + ) + + parser.add_argument( + "--k", + help="The maximum number of documents to select from each centroid when using auto selection method", + required=False, + type=int, + default=15, + ) + parser.add_argument( "--limit", help="The limit of files to load when doing random or top selection", @@ -69,6 +86,14 @@ def __str__(self): default=MAX_TOKEN_COUNT, ) + parser.add_argument( + "--min-examples-required", + help="The minimum number of examples required in entity extraction prompt", + type=int, + required=False, + default=2, + ) + parser.add_argument( "--chunk-size", help="Max token count for prompt generation", @@ -106,7 +131,7 @@ def __str__(self): loop = asyncio.get_event_loop() loop.run_until_complete( - fine_tune( + prompt_tune( args.root, args.domain, str(args.method), @@ -116,5 +141,8 @@ def __str__(self): args.language, args.no_entity_types, args.output, + args.n_subset_max, + args.k, + args.min_examples_required, ) ) diff --git a/graphrag/prompt_tune/cli.py b/graphrag/prompt_tune/cli.py index f26b1c09b1..5979a4a6ee 100644 --- a/graphrag/prompt_tune/cli.py +++ b/graphrag/prompt_tune/cli.py @@ -32,7 +32,7 @@ ) -async def fine_tune( +async def prompt_tune( root: str, domain: str, select: str = "random", @@ -42,8 +42,11 @@ async def fine_tune( language: str | None = None, skip_entity_types: bool = False, output: str = "prompts", + n_subset_max: int = 300, + k: int = 15, + min_examples_required: int = 2, ): - """Fine tune the model. + """Prompt tune the model. Parameters ---------- @@ -55,11 +58,13 @@ async def fine_tune( - chunk_size: The chunk token size to use. - skip_entity_types: Skip generating entity types. - output: The output folder to store the prompts. + - n_subset_max: The number of text chunks to embed when using auto selection method. + - k: The number of documents to select when using auto selection method. """ reporter = PrintProgressReporter("") config = read_config_parameters(root, reporter) - await fine_tune_with_config( + await prompt_tune_with_config( root, config, domain, @@ -71,10 +76,13 @@ async def fine_tune( skip_entity_types, output, reporter, + n_subset_max, + k, + min_examples_required, ) -async def fine_tune_with_config( +async def prompt_tune_with_config( root: str, config: GraphRagConfig, domain: str, @@ -86,8 +94,11 @@ async def fine_tune_with_config( skip_entity_types: bool = False, output: str = "prompts", reporter: ProgressReporter | None = None, + n_subset_max: int = 300, + k: int = 15, + min_examples_required: int = 2, ): - """Fine tune the model with a configuration. + """Prompt tune the model with a configuration. Parameters ---------- @@ -101,6 +112,8 @@ async def fine_tune_with_config( - skip_entity_types: Skip generating entity types. - output: The output folder to store the prompts. - reporter: The progress reporter. + - n_subset_max: The number of text chunks to embed when using auto selection method. + - k: The number of documents to select when using auto selection method. Returns ------- @@ -118,11 +131,13 @@ async def fine_tune_with_config( select_method=select, reporter=reporter, chunk_size=chunk_size, + n_subset_max=n_subset_max, + k=k, ) # Create LLM from config llm = load_llm( - "fine_tuning", + "prompt_tuning", config.llm.type, NoopVerbCallbacks(), None, @@ -139,6 +154,7 @@ async def fine_tune_with_config( language, max_tokens, skip_entity_types, + min_examples_required, ) @@ -152,6 +168,7 @@ async def generate_indexing_prompts( language: str | None = None, max_tokens: int = MAX_TOKEN_COUNT, skip_entity_types: bool = False, + min_examples_required: int = 2, ): """Generate indexing prompts. @@ -165,6 +182,7 @@ async def generate_indexing_prompts( - domain: The domain to map the input documents to. - max_tokens: The maximum number of tokens to use on entity extraction prompts - skip_entity_types: Skip generating entity types. + - min_examples_required: The minimum number of examples required for entity extraction prompts. """ if not domain: reporter.info("Generating domain...") @@ -221,6 +239,7 @@ async def generate_indexing_prompts( output_path=output_path, encoding_model=config.encoding_model, max_token_count=max_tokens, + min_examples_required=min_examples_required, ) reporter.info(f"Generated entity extraction prompt, stored in folder {output_path}") diff --git a/graphrag/prompt_tune/generator/entity_extraction_prompt.py b/graphrag/prompt_tune/generator/entity_extraction_prompt.py index 6724f44a9a..3b17dbab5d 100644 --- a/graphrag/prompt_tune/generator/entity_extraction_prompt.py +++ b/graphrag/prompt_tune/generator/entity_extraction_prompt.py @@ -27,6 +27,7 @@ def create_entity_extraction_prompt( encoding_model: str = defs.ENCODING_MODEL, json_mode: bool = False, output_path: Path | None = None, + min_examples_required: int = 2, ) -> str: """ Create a prompt for entity extraction. @@ -41,6 +42,7 @@ def create_entity_extraction_prompt( - max_token_count (int): The maximum number of tokens to use for the prompt - json_mode (bool): Whether to use JSON mode for the prompt. Default is False - output_path (Path | None): The path to write the prompt to. Default is None. If None, the prompt is not written to a file. Default is None. + - min_examples_required (int): The minimum number of examples required. Default is 2. Returns ------- @@ -79,8 +81,8 @@ def create_entity_extraction_prompt( example_tokens = num_tokens_from_string(example_formatted, model=encoding_model) - # Squeeze in at least one example - if i > 0 and example_tokens > tokens_left: + # Ensure at least three examples are included + if i >= min_examples_required and example_tokens > tokens_left: break examples_prompt += example_formatted diff --git a/graphrag/prompt_tune/loader/input.py b/graphrag/prompt_tune/loader/input.py index a8cc7db727..6fe369906c 100644 --- a/graphrag/prompt_tune/loader/input.py +++ b/graphrag/prompt_tune/loader/input.py @@ -5,16 +5,45 @@ from typing import cast +import numpy as np import pandas as pd from datashaper import NoopVerbCallbacks, TableContainer, VerbInput from graphrag.config.models.graph_rag_config import GraphRagConfig from graphrag.index.input import load_input +from graphrag.index.llm import load_llm_embeddings from graphrag.index.progress.types import ProgressReporter from graphrag.index.verbs import chunk +from graphrag.llm.types.llm_types import EmbeddingLLM -MIN_CHUNK_SIZE = 200 MIN_CHUNK_OVERLAP = 0 +MIN_CHUNK_SIZE = 200 +N_SUBSET_MAX = 300 +K = 15 + + +async def _embed_chunks( + text_chunks: pd.DataFrame, + embedding_llm: EmbeddingLLM, + n_subset_max: int = N_SUBSET_MAX, +) -> tuple[pd.DataFrame, np.ndarray]: + """Convert text chunks into dense text embeddings.""" + sampled_text_chunks = text_chunks.sample(n=min(n_subset_max, len(text_chunks))) + embeddings = await embedding_llm(sampled_text_chunks["chunks"].tolist()) + return text_chunks, np.array(embeddings.output) + + +def _sample_chunks_from_embeddings( + text_chunks: pd.DataFrame, + embeddings, + k: int = K, +) -> pd.DataFrame: + """Sample text chunks from embeddings.""" + center = np.mean(embeddings, axis=0) + distances = np.linalg.norm(embeddings - center, axis=1) + nearest_indices = np.argsort(distances)[:k] + + return text_chunks.iloc[nearest_indices] async def load_docs_in_chunks( @@ -24,6 +53,8 @@ async def load_docs_in_chunks( limit: int, reporter: ProgressReporter, chunk_size: int = MIN_CHUNK_SIZE, + n_subset_max: int = N_SUBSET_MAX, + k: int = K, ) -> list[str]: """Load docs into chunks for generating prompts.""" dataset = await load_input(config.input, reporter, root) @@ -57,6 +88,22 @@ async def load_docs_in_chunks( chunks_df = chunks_df[:limit] elif select_method == "random": chunks_df = chunks_df.sample(n=limit) + elif select_method == "auto": + if k is None or k <= 0: + msg = "k must be an integer > 0" + raise ValueError(msg) + embedding_llm = load_llm_embeddings( + name="prompt_tuning_embeddings", + llm_type=config.embeddings.resolved_strategy()["llm"]["type"], + callbacks=NoopVerbCallbacks(), + cache=None, + llm_config=config.embeddings.resolved_strategy()["llm"], + ) + + chunks_df, embeddings = await _embed_chunks( + chunks_df, embedding_llm, n_subset_max=n_subset_max + ) + chunks_df = _sample_chunks_from_embeddings(chunks_df, embeddings, k=k) # Convert the dataset to list form, so we have a list of documents return chunks_df["chunks"].tolist() From e8df283b247298216dc32e90728001dd6b8e2915 Mon Sep 17 00:00:00 2001 From: Kapil Sachdeva Date: Wed, 24 Jul 2024 14:26:37 -0500 Subject: [PATCH 4/9] fix - in run_local_search(), avoid re-reading create_final_nodes.parquet file (#592) --- .semversioner/next-release/patch-20240724150548966311.json | 4 ++++ graphrag/query/cli.py | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 .semversioner/next-release/patch-20240724150548966311.json diff --git a/.semversioner/next-release/patch-20240724150548966311.json b/.semversioner/next-release/patch-20240724150548966311.json new file mode 100644 index 0000000000..364878474a --- /dev/null +++ b/.semversioner/next-release/patch-20240724150548966311.json @@ -0,0 +1,4 @@ +{ + "type": "patch", + "description": "remove duplicate file read" +} diff --git a/graphrag/query/cli.py b/graphrag/query/cli.py index 306dad60cc..10ad95d5b8 100644 --- a/graphrag/query/cli.py +++ b/graphrag/query/cli.py @@ -110,7 +110,6 @@ def run_local_search( final_relationships = pd.read_parquet( data_path / "create_final_relationships.parquet" ) - final_nodes = pd.read_parquet(data_path / "create_final_nodes.parquet") final_entities = pd.read_parquet(data_path / "create_final_entities.parquet") final_covariates_path = data_path / "create_final_covariates.parquet" final_covariates = ( From 2a95e6771c514287cae598560fc1bf635243bffd Mon Sep 17 00:00:00 2001 From: Alonso Guevara Date: Wed, 24 Jul 2024 14:01:44 -0600 Subject: [PATCH 5/9] Update issue templates (#675) * Update issue templates * Quick fix * Quick fix * Template fix * Remove required --- .github/ISSUE_TEMPLATE/bug_report.yml | 13 +++++++++++++ .github/ISSUE_TEMPLATE/general_issue.yml | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 369a8a2564..b6aa361d88 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -4,6 +4,14 @@ title: "[Bug]: " labels: ["bug", "triage"] body: + - type: checkboxes + id: existingcheck + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the bug you encountered. + options: + - label: I have searched the existing issues + - label: I have checked [#657](https://github.com/microsoft/graphrag/issues/657) to validate if my issue is covered by community support - type: textarea id: description attributes: @@ -34,6 +42,11 @@ body: label: GraphRAG Config Used description: The GraphRAG configuration used for the run. placeholder: The settings.yaml content or GraphRAG configuration + value: | + ```yaml + # Paste your config here + + ``` - type: textarea id: screenshotslogs attributes: diff --git a/.github/ISSUE_TEMPLATE/general_issue.yml b/.github/ISSUE_TEMPLATE/general_issue.yml index 852bf9583a..79b408c10c 100644 --- a/.github/ISSUE_TEMPLATE/general_issue.yml +++ b/.github/ISSUE_TEMPLATE/general_issue.yml @@ -4,6 +4,14 @@ title: "[Issue]: <title> " labels: ["triage"] body: + - type: checkboxes + id: existingcheck + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the bug you encountered. + options: + - label: I have searched the existing issues + - label: I have checked [#657](https://github.com/microsoft/graphrag/issues/657) to validate if my issue is covered by community support - type: textarea id: description attributes: @@ -28,6 +36,11 @@ body: label: GraphRAG Config Used description: The GraphRAG configuration used for the run. placeholder: The settings.yaml content or GraphRAG configuration + value: | + ```yaml + # Paste your config here + + ``` - type: textarea id: screenshotslogs attributes: From 60520dc8c3d74de2ca8fddbe02b4195f09c33729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=BF=8A?= <wangjuncode@126.com> Date: Thu, 25 Jul 2024 05:52:01 +0800 Subject: [PATCH 6/9] fix the llm organization parameter is ineffective during queries (#612) * fix the organization parameter is ineffective during queries * add semver impact document --------- Co-authored-by: Alonso Guevara <alonsog@microsoft.com> --- .semversioner/next-release/patch-20240718121358935484.json | 4 ++++ graphrag/query/factories.py | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 .semversioner/next-release/patch-20240718121358935484.json diff --git a/.semversioner/next-release/patch-20240718121358935484.json b/.semversioner/next-release/patch-20240718121358935484.json new file mode 100644 index 0000000000..21c5faa498 --- /dev/null +++ b/.semversioner/next-release/patch-20240718121358935484.json @@ -0,0 +1,4 @@ +{ + "type": "patch", + "description": "fix the organization parameter is ineffective during queries" +} diff --git a/graphrag/query/factories.py b/graphrag/query/factories.py index 533fa15348..8b6d58fb7e 100644 --- a/graphrag/query/factories.py +++ b/graphrag/query/factories.py @@ -58,6 +58,7 @@ def get_llm(config: GraphRagConfig) -> ChatOpenAI: else None ), api_base=config.llm.api_base, + organization=config.llm.organization, model=config.llm.model, api_type=OpenaiApiType.AzureOpenAI if is_azure_client else OpenaiApiType.OpenAI, deployment_name=config.llm.deployment_name, @@ -89,6 +90,7 @@ def get_text_embedder(config: GraphRagConfig) -> OpenAIEmbedding: else None ), api_base=config.embeddings.llm.api_base, + organization=config.llm.organization, api_type=OpenaiApiType.AzureOpenAI if is_azure_client else OpenaiApiType.OpenAI, model=config.embeddings.llm.model, deployment_name=config.embeddings.llm.deployment_name, From ac6f240e29c4f8356cf5e2727e2154f3fed8b1db Mon Sep 17 00:00:00 2001 From: Alonso Guevara <alonsog@microsoft.com> Date: Wed, 24 Jul 2024 19:54:11 -0600 Subject: [PATCH 7/9] Add autoresolve and update publish workflows (#698) --- .github/workflows/issues-autoresolve.yml | 24 ++++++++++++++++++++++++ .github/workflows/python-publish.yml | 6 ++++++ 2 files changed, 30 insertions(+) create mode 100644 .github/workflows/issues-autoresolve.yml diff --git a/.github/workflows/issues-autoresolve.yml b/.github/workflows/issues-autoresolve.yml new file mode 100644 index 0000000000..962bf36566 --- /dev/null +++ b/.github/workflows/issues-autoresolve.yml @@ -0,0 +1,24 @@ +name: Close inactive issues +on: + schedule: + - cron: "30 1 * * *" + +jobs: + close-issues: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/stale@v5 + with: + days-before-issue-stale: 7 + days-before-issue-close: 5 + stale-issue-label: "stale" + close-issue-label: "autoresolved" + stale-issue-message: "This issue has been marked stale due to inactivity after repo maintainer or community member responses that request more information or suggest a solution. It will be closed after five additional days." + close-issue-message: "This issue has been closed after being marked as stale for five days. Please reopen if needed." + exempt-issue-label: "triage" + days-before-pr-stale: -1 + days-before-pr-close: -1 + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index b76d690564..7e5d57529d 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -36,10 +36,16 @@ jobs: with: poetry-version: ${{ env.POETRY_VERSION }} + - name: Add poetry-dynamic-versioning plugin + run: poetry self add "poetry-dynamic-versioning[plugin]" + - name: Install dependencies shell: bash run: poetry install + - name: Export Publication Version + run: echo "version=`poetry version --short`" >> $GITHUB_OUTPUT + - name: Build Distributable shell: bash run: poetry build From c8aefb23cb2297dca9fb10cedbb8266e59f7029c Mon Sep 17 00:00:00 2001 From: Alonso Guevara <alonsog@microsoft.com> Date: Wed, 24 Jul 2024 21:02:03 -0600 Subject: [PATCH 8/9] v0.2.0 (#700) * v0.2.0 * Update 0.2.0.json * Update CHANGELOG.md --- .semversioner/0.2.0.json | 94 +++++++++++++++++++ .../minor-20240710183748086411.json | 4 - .../minor-20240712152937651350.json | 4 - .../patch-20240701233152787373.json | 4 - .../patch-20240703152422358587.json | 4 - .../patch-20240703182750529114.json | 4 - .../patch-20240704181236015699.json | 4 - .../patch-20240705184142723331.json | 4 - .../patch-20240705235656897489.json | 4 - .../patch-20240707063053679262.json | 4 - .../patch-20240709225514193665.json | 4 - .../patch-20240710114442871595.json | 4 - .../patch-20240710165603516866.json | 4 - .../patch-20240711004716103302.json | 4 - .../patch-20240711092703710242.json | 4 - .../patch-20240711223132221685.json | 4 - .../patch-20240712035356859335.json | 4 - .../patch-20240712210400518089.json | 4 - .../patch-20240712235357550877.json | 4 - .../patch-20240716225953784804.json | 4 - .../patch-20240718121358935484.json | 4 - .../patch-20240721063703879643.json | 4 - .../patch-20240724150548966311.json | 4 - CHANGELOG.md | 31 ++++++ pyproject.toml | 4 +- 25 files changed, 127 insertions(+), 90 deletions(-) create mode 100644 .semversioner/0.2.0.json delete mode 100644 .semversioner/next-release/minor-20240710183748086411.json delete mode 100644 .semversioner/next-release/minor-20240712152937651350.json delete mode 100644 .semversioner/next-release/patch-20240701233152787373.json delete mode 100644 .semversioner/next-release/patch-20240703152422358587.json delete mode 100644 .semversioner/next-release/patch-20240703182750529114.json delete mode 100644 .semversioner/next-release/patch-20240704181236015699.json delete mode 100644 .semversioner/next-release/patch-20240705184142723331.json delete mode 100644 .semversioner/next-release/patch-20240705235656897489.json delete mode 100644 .semversioner/next-release/patch-20240707063053679262.json delete mode 100644 .semversioner/next-release/patch-20240709225514193665.json delete mode 100644 .semversioner/next-release/patch-20240710114442871595.json delete mode 100644 .semversioner/next-release/patch-20240710165603516866.json delete mode 100644 .semversioner/next-release/patch-20240711004716103302.json delete mode 100644 .semversioner/next-release/patch-20240711092703710242.json delete mode 100644 .semversioner/next-release/patch-20240711223132221685.json delete mode 100644 .semversioner/next-release/patch-20240712035356859335.json delete mode 100644 .semversioner/next-release/patch-20240712210400518089.json delete mode 100644 .semversioner/next-release/patch-20240712235357550877.json delete mode 100644 .semversioner/next-release/patch-20240716225953784804.json delete mode 100644 .semversioner/next-release/patch-20240718121358935484.json delete mode 100644 .semversioner/next-release/patch-20240721063703879643.json delete mode 100644 .semversioner/next-release/patch-20240724150548966311.json create mode 100644 CHANGELOG.md diff --git a/.semversioner/0.2.0.json b/.semversioner/0.2.0.json new file mode 100644 index 0000000000..6a53412e73 --- /dev/null +++ b/.semversioner/0.2.0.json @@ -0,0 +1,94 @@ +{ + "changes": [ + { + "description": "Add content-based KNN for selecting prompt tune few shot examples", + "type": "minor" + }, + { + "description": "Add dynamic community report rating to the prompt tuning engine", + "type": "minor" + }, + { + "description": "Add Minute-based Rate Limiting and fix rpm, tpm settings", + "type": "patch" + }, + { + "description": "Add N parameter support", + "type": "patch" + }, + { + "description": "Add cli flag to overlay default values onto a provided config.", + "type": "patch" + }, + { + "description": "Add exception handling on file load", + "type": "patch" + }, + { + "description": "Add language support to prompt tuning", + "type": "patch" + }, + { + "description": "Add llm params to local and global search", + "type": "patch" + }, + { + "description": "Fix broken prompt tuning link on docs", + "type": "patch" + }, + { + "description": "Fix delta none on query calls", + "type": "patch" + }, + { + "description": "Fix docsite base url", + "type": "patch" + }, + { + "description": "Fix encoding model parameter on prompt tune", + "type": "patch" + }, + { + "description": "Fix for --limit exceeding the dataframe length", + "type": "patch" + }, + { + "description": "Fix for Ruff 0.5.2", + "type": "patch" + }, + { + "description": "Fixed an issue where base OpenAI embeddings can't work with Azure OpenAI LLM", + "type": "patch" + }, + { + "description": "Modify defaults for CHUNK_SIZE, CHUNK_OVERLAP and GLEANINGS to reduce time and LLM calls", + "type": "patch" + }, + { + "description": "fix community_report doesn't work in settings.yaml", + "type": "patch" + }, + { + "description": "fix llm response content is None in query", + "type": "patch" + }, + { + "description": "fix the organization parameter is ineffective during queries", + "type": "patch" + }, + { + "description": "remove duplicate file read", + "type": "patch" + }, + { + "description": "support non-open ai model config to prompt tune", + "type": "patch" + }, + { + "description": "use binary io processing for all file io operations", + "type": "patch" + } + ], + "created_at": "2024-07-25T02:01:38+00:00", + "version": "0.2.0" +} diff --git a/.semversioner/next-release/minor-20240710183748086411.json b/.semversioner/next-release/minor-20240710183748086411.json deleted file mode 100644 index 8e0f3659ac..0000000000 --- a/.semversioner/next-release/minor-20240710183748086411.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "minor", - "description": "Add dynamic community report rating to the prompt tuning engine" -} diff --git a/.semversioner/next-release/minor-20240712152937651350.json b/.semversioner/next-release/minor-20240712152937651350.json deleted file mode 100644 index 28377f1529..0000000000 --- a/.semversioner/next-release/minor-20240712152937651350.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "minor", - "description": "Add content-based KNN for selecting prompt tune few shot examples" -} diff --git a/.semversioner/next-release/patch-20240701233152787373.json b/.semversioner/next-release/patch-20240701233152787373.json deleted file mode 100644 index d2b107511a..0000000000 --- a/.semversioner/next-release/patch-20240701233152787373.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Fix docsite base url" -} diff --git a/.semversioner/next-release/patch-20240703152422358587.json b/.semversioner/next-release/patch-20240703152422358587.json deleted file mode 100644 index 37b415cc6d..0000000000 --- a/.semversioner/next-release/patch-20240703152422358587.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Add cli flag to overlay default values onto a provided config." -} diff --git a/.semversioner/next-release/patch-20240703182750529114.json b/.semversioner/next-release/patch-20240703182750529114.json deleted file mode 100644 index c36bb1f3b3..0000000000 --- a/.semversioner/next-release/patch-20240703182750529114.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Fix broken prompt tuning link on docs" -} diff --git a/.semversioner/next-release/patch-20240704181236015699.json b/.semversioner/next-release/patch-20240704181236015699.json deleted file mode 100644 index 9e69b50c4b..0000000000 --- a/.semversioner/next-release/patch-20240704181236015699.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Fix for --limit exceeding the dataframe lenght" -} diff --git a/.semversioner/next-release/patch-20240705184142723331.json b/.semversioner/next-release/patch-20240705184142723331.json deleted file mode 100644 index 8f4b32e9ea..0000000000 --- a/.semversioner/next-release/patch-20240705184142723331.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Add Minute-based Rate Limiting and fix rpm, tpm settings" -} diff --git a/.semversioner/next-release/patch-20240705235656897489.json b/.semversioner/next-release/patch-20240705235656897489.json deleted file mode 100644 index bb76d70815..0000000000 --- a/.semversioner/next-release/patch-20240705235656897489.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Add N parameter support" -} diff --git a/.semversioner/next-release/patch-20240707063053679262.json b/.semversioner/next-release/patch-20240707063053679262.json deleted file mode 100644 index 51ebbc3ad1..0000000000 --- a/.semversioner/next-release/patch-20240707063053679262.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "fix community_report doesn't work in settings.yaml" -} diff --git a/.semversioner/next-release/patch-20240709225514193665.json b/.semversioner/next-release/patch-20240709225514193665.json deleted file mode 100644 index dd8d6eecdf..0000000000 --- a/.semversioner/next-release/patch-20240709225514193665.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Add language support to prompt tuning" -} diff --git a/.semversioner/next-release/patch-20240710114442871595.json b/.semversioner/next-release/patch-20240710114442871595.json deleted file mode 100644 index ccdf7d9a71..0000000000 --- a/.semversioner/next-release/patch-20240710114442871595.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Modify defaults for CHUNK_SIZE, CHUNK_OVERLAP and GLEANINGS to reduce time and LLM calls" -} diff --git a/.semversioner/next-release/patch-20240710165603516866.json b/.semversioner/next-release/patch-20240710165603516866.json deleted file mode 100644 index b5066cf136..0000000000 --- a/.semversioner/next-release/patch-20240710165603516866.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Fixed an issue where base OpenAI embeddings can't work with Azure OpenAI LLM" -} diff --git a/.semversioner/next-release/patch-20240711004716103302.json b/.semversioner/next-release/patch-20240711004716103302.json deleted file mode 100644 index d912ee4119..0000000000 --- a/.semversioner/next-release/patch-20240711004716103302.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Fix encoding model parameter on prompt tune" -} diff --git a/.semversioner/next-release/patch-20240711092703710242.json b/.semversioner/next-release/patch-20240711092703710242.json deleted file mode 100644 index 7868b33b56..0000000000 --- a/.semversioner/next-release/patch-20240711092703710242.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "support non-open ai model config to prompt tune" -} diff --git a/.semversioner/next-release/patch-20240711223132221685.json b/.semversioner/next-release/patch-20240711223132221685.json deleted file mode 100644 index 130b65ba56..0000000000 --- a/.semversioner/next-release/patch-20240711223132221685.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Fix delta none on query calls" -} diff --git a/.semversioner/next-release/patch-20240712035356859335.json b/.semversioner/next-release/patch-20240712035356859335.json deleted file mode 100644 index 01e3d9a902..0000000000 --- a/.semversioner/next-release/patch-20240712035356859335.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "fix llm response content is None in query" -} diff --git a/.semversioner/next-release/patch-20240712210400518089.json b/.semversioner/next-release/patch-20240712210400518089.json deleted file mode 100644 index 4cb39affd6..0000000000 --- a/.semversioner/next-release/patch-20240712210400518089.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Add exception handling on file load" -} diff --git a/.semversioner/next-release/patch-20240712235357550877.json b/.semversioner/next-release/patch-20240712235357550877.json deleted file mode 100644 index 818d609809..0000000000 --- a/.semversioner/next-release/patch-20240712235357550877.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Add llm params to local and global search" -} diff --git a/.semversioner/next-release/patch-20240716225953784804.json b/.semversioner/next-release/patch-20240716225953784804.json deleted file mode 100644 index f818ce5376..0000000000 --- a/.semversioner/next-release/patch-20240716225953784804.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "Fix for Ruff 0.5.2" -} \ No newline at end of file diff --git a/.semversioner/next-release/patch-20240718121358935484.json b/.semversioner/next-release/patch-20240718121358935484.json deleted file mode 100644 index 21c5faa498..0000000000 --- a/.semversioner/next-release/patch-20240718121358935484.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "fix the organization parameter is ineffective during queries" -} diff --git a/.semversioner/next-release/patch-20240721063703879643.json b/.semversioner/next-release/patch-20240721063703879643.json deleted file mode 100644 index 6f8a6ab457..0000000000 --- a/.semversioner/next-release/patch-20240721063703879643.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "use binary io processing for all file io operations" -} diff --git a/.semversioner/next-release/patch-20240724150548966311.json b/.semversioner/next-release/patch-20240724150548966311.json deleted file mode 100644 index 364878474a..0000000000 --- a/.semversioner/next-release/patch-20240724150548966311.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "patch", - "description": "remove duplicate file read" -} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..802b3a11a7 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,31 @@ +# Changelog +Note: version releases in the 0.x.y range may introduce breaking changes. + +## 0.2.0 + +- minor: Add content-based KNN for selecting prompt tune few shot examples +- minor: Add dynamic community report rating to the prompt tuning engine +- patch: Add Minute-based Rate Limiting and fix rpm, tpm settings +- patch: Add N parameter support +- patch: Add cli flag to overlay default values onto a provided config. +- patch: Add exception handling on file load +- patch: Add language support to prompt tuning +- patch: Add llm params to local and global search +- patch: Fix broken prompt tuning link on docs +- patch: Fix delta none on query calls +- patch: Fix docsite base url +- patch: Fix encoding model parameter on prompt tune +- patch: Fix for --limit exceeding the dataframe length +- patch: Fix for Ruff 0.5.2 +- patch: Fixed an issue where base OpenAI embeddings can't work with Azure OpenAI LLM +- patch: Modify defaults for CHUNK_SIZE, CHUNK_OVERLAP and GLEANINGS to reduce time and LLM calls +- patch: fix community_report doesn't work in settings.yaml +- patch: fix llm response content is None in query +- patch: fix the organization parameter is ineffective during queries +- patch: remove duplicate file read +- patch: support non-open ai model config to prompt tune +- patch: use binary io processing for all file io operations + +## 0.1.0 + +- minor: Initial Release diff --git a/pyproject.toml b/pyproject.toml index fb3ff7fbd2..46dc25b394 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "graphrag" # Maintainers: do not change the version here manually, use ./scripts/release.sh -version = "0.1.1" +version = "0.2.0" description = "" authors = [ "Alonso Guevara Fernández <alonsog@microsoft.com>", @@ -114,7 +114,7 @@ _convert_local_search_nb = 'jupyter nbconvert --output-dir=docsite/posts/query/n _convert_global_search_nb = 'jupyter nbconvert --output-dir=docsite/posts/query/notebooks/ --output="{notebook_name}_nb" --template=docsite/nbdocsite_template --to markdown examples_notebooks/global_search.ipynb' _semversioner_release = "semversioner release" _semversioner_changelog = "semversioner changelog > CHANGELOG.md" -_semversioner_update_toml_version = "update-toml --path tool.poetry.version --value \"$(semversioner current-version)\" pyproject.toml" +_semversioner_update_toml_version = "update-toml update --path tool.poetry.version --value \"$(semversioner current-version)\" pyproject.toml" coverage_report = 'coverage report --omit "**/tests/**" --show-missing' check_format = 'ruff format . --check --preview' fix = "ruff --preview check --fix ." From 61b5eea34783c58074b3c53f1689ad8a5ba6b6ee Mon Sep 17 00:00:00 2001 From: Alonso Guevara <alonsog@microsoft.com> Date: Wed, 24 Jul 2024 22:02:52 -0600 Subject: [PATCH 9/9] Fix version numbering on publication (#701) --- .github/workflows/python-publish.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 7e5d57529d..499f1ad064 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -36,9 +36,6 @@ jobs: with: poetry-version: ${{ env.POETRY_VERSION }} - - name: Add poetry-dynamic-versioning plugin - run: poetry self add "poetry-dynamic-versioning[plugin]" - - name: Install dependencies shell: bash run: poetry install