From 6f4c5d9621e57506aea9f6acf16fc85995509f9a Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Tue, 12 Dec 2023 14:17:26 +0100 Subject: [PATCH 01/13] removing custom line lengths --- pyproject.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index fd0fc66f1b..1af9dbbe4b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,13 +76,11 @@ experimental = ["llama-index", "rank-bm25", "tree_sitter_languages"] [tool.ruff] select = ["F", "E", "W", "I001"] -line-length = 100 show-fixes = false target-version = "py311" task-tags = ["TODO", "FIXME"] [tool.black] -line-length = 90 target-version = ["py311"] include = '\\.pyi?$' From 21e6dacb088986e1b504d3573e6ea4dd52a47321 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Tue, 12 Dec 2023 14:35:55 +0100 Subject: [PATCH 02/13] changing linting/formatting setup and formatting --- .pre-commit-config.yaml | 10 +++++----- gpt_engineer/applications/cli/cli_agent.py | 6 +++++- gpt_engineer/applications/cli/collect.py | 3 ++- gpt_engineer/applications/cli/file_selector.py | 4 +++- gpt_engineer/benchmark/__main__.py | 8 ++++++-- gpt_engineer/benchmark/benchmarks/gpteng/load.py | 8 ++++++-- gpt_engineer/benchmark/run.py | 4 +++- gpt_engineer/core/default/steps.py | 9 +++++++-- gpt_engineer/tools/custom_steps.py | 4 +++- .../tools/experimental/code_vector_repository.py | 4 +++- gpt_engineer/tools/experimental/document_chunker.py | 8 ++++++-- pyproject.toml | 1 - tests/core/default/test_steps.py | 4 +++- tests/core/test_chat_to_files.py | 4 +++- tests/test_install.py | 4 +++- 15 files changed, 58 insertions(+), 23 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7a47584290..3fe0daa264 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -11,11 +11,11 @@ repos: args: [--config, pyproject.toml] types: [python] -# - repo: https://github.com/charliermarsh/ruff-pre-commit -# rev: "v0.0.272" -# hooks: -# - id: ruff -# args: [--fix, --exit-non-zero-on-fix] + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: "v0.0.272" + hooks: + - id: ruff + args: [--fix, --exit-non-zero-on-fix] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 diff --git a/gpt_engineer/applications/cli/cli_agent.py b/gpt_engineer/applications/cli/cli_agent.py index c3e845b59b..ddb8f7b6b4 100644 --- a/gpt_engineer/applications/cli/cli_agent.py +++ b/gpt_engineer/applications/cli/cli_agent.py @@ -12,7 +12,11 @@ from gpt_engineer.core.default.disk_memory import DiskMemory from gpt_engineer.core.base_execution_env import BaseExecutionEnv from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv -from gpt_engineer.core.default.paths import memory_path, ENTRYPOINT_FILE, PREPROMPTS_PATH +from gpt_engineer.core.default.paths import ( + memory_path, + ENTRYPOINT_FILE, + PREPROMPTS_PATH, +) from gpt_engineer.core.base_agent import BaseAgent from gpt_engineer.core.preprompts_holder import PrepromptsHolder from typing import TypeVar, Callable, Union diff --git a/gpt_engineer/applications/cli/collect.py b/gpt_engineer/applications/cli/collect.py index c68ef05db7..a71ef602c8 100644 --- a/gpt_engineer/applications/cli/collect.py +++ b/gpt_engineer/applications/cli/collect.py @@ -100,7 +100,8 @@ def collect_learnings( remove_length = overflow + len(f"[REMOVED {overflow} CHARACTERS]") + 100 learnings.logs = ( - learnings.logs[:-remove_length] + f"\n\n[REMOVED {remove_length} CHARACTERS]" + learnings.logs[:-remove_length] + + f"\n\n[REMOVED {remove_length} CHARACTERS]" ) print( diff --git a/gpt_engineer/applications/cli/file_selector.py b/gpt_engineer/applications/cli/file_selector.py index 4c4d0bceea..dad72dbcc5 100644 --- a/gpt_engineer/applications/cli/file_selector.py +++ b/gpt_engineer/applications/cli/file_selector.py @@ -119,7 +119,9 @@ def display_name(self) -> str: return self.path.name @classmethod - def make_tree(cls, root: Union[str, Path], parent=None, is_last=False, criteria=None): + def make_tree( + cls, root: Union[str, Path], parent=None, is_last=False, criteria=None + ): """ Generate a tree of DisplayablePath objects. diff --git a/gpt_engineer/benchmark/__main__.py b/gpt_engineer/benchmark/__main__.py index 2f974cdcdd..7032ef86d1 100644 --- a/gpt_engineer/benchmark/__main__.py +++ b/gpt_engineer/benchmark/__main__.py @@ -22,7 +22,9 @@ def main( help="python file that contains a function called 'default_config_agent'" ), ], - benchmarks: Annotated[str, typer.Argument(help="benchmark name(s) separated by ','")], + benchmarks: Annotated[ + str, typer.Argument(help="benchmark name(s) separated by ','") + ], task_name: Annotated[ Optional[str], typer.Argument(help="optional task name in benchmark") ] = None, @@ -38,7 +40,9 @@ def main( agent = get_agent(path_to_agent) results = run(agent, benchmark, task_name, verbose=verbose) - print(f"\n--- Results for agent {path_to_agent}, benchmark: {benchmark_name} ---") + print( + f"\n--- Results for agent {path_to_agent}, benchmark: {benchmark_name} ---" + ) print_results(results) print() diff --git a/gpt_engineer/benchmark/benchmarks/gpteng/load.py b/gpt_engineer/benchmark/benchmarks/gpteng/load.py index 742919a671..013a157624 100644 --- a/gpt_engineer/benchmark/benchmarks/gpteng/load.py +++ b/gpt_engineer/benchmark/benchmarks/gpteng/load.py @@ -1,6 +1,8 @@ from pathlib import Path -from gpt_engineer.benchmark.benchmarks.gpteng.eval_tools import check_evaluation_component +from gpt_engineer.benchmark.benchmarks.gpteng.eval_tools import ( + check_evaluation_component, +) from gpt_engineer.benchmark.types import Benchmark, Task, Assertable from gpt_engineer.core import chat_to_files from gpt_engineer.core.chat_to_files import chat_to_files_dict @@ -156,4 +158,6 @@ def eval_to_task(case): def load_gpteng(): - return Benchmark(name="gpte_eval", tasks=[eval_to_task(case) for case in evaluations]) + return Benchmark( + name="gpte_eval", tasks=[eval_to_task(case) for case in evaluations] + ) diff --git a/gpt_engineer/benchmark/run.py b/gpt_engineer/benchmark/run.py index 21f972ab2a..e51119969a 100644 --- a/gpt_engineer/benchmark/run.py +++ b/gpt_engineer/benchmark/run.py @@ -67,7 +67,9 @@ def print_results(results: list[TaskResult]): ) for task_result in results ) - total_assertions = sum(len(task_result.assertion_results) for task_result in results) + total_assertions = sum( + len(task_result.assertion_results) for task_result in results + ) print(f"Total correct assertions: {correct_assertions}/{total_assertions}") correct_tasks = sum( diff --git a/gpt_engineer/core/default/steps.py b/gpt_engineer/core/default/steps.py index cde66f649d..384053fde5 100644 --- a/gpt_engineer/core/default/steps.py +++ b/gpt_engineer/core/default/steps.py @@ -51,7 +51,10 @@ def gen_code( def gen_entrypoint( - ai: AI, files_dict: FilesDict, memory: BaseMemory, preprompts_holder: PrepromptsHolder + ai: AI, + files_dict: FilesDict, + memory: BaseMemory, + preprompts_holder: PrepromptsHolder, ) -> FilesDict: preprompts = preprompts_holder.get_preprompts() messages = ai.start( @@ -78,7 +81,9 @@ def execute_entrypoint( ) -> FilesDict: if not ENTRYPOINT_FILE in files_dict: raise FileNotFoundError( - "The required entrypoint " + ENTRYPOINT_FILE + " does not exist in the code." + "The required entrypoint " + + ENTRYPOINT_FILE + + " does not exist in the code." ) command = files_dict[ENTRYPOINT_FILE] diff --git a/gpt_engineer/tools/custom_steps.py b/gpt_engineer/tools/custom_steps.py index 86c7fc6127..ebd9aa159f 100644 --- a/gpt_engineer/tools/custom_steps.py +++ b/gpt_engineer/tools/custom_steps.py @@ -53,7 +53,9 @@ def self_heal( # log_path = dbs.workspace.path / "log.txt" if not ENTRYPOINT_FILE in files_dict: raise FileNotFoundError( - "The required entrypoint " + ENTRYPOINT_FILE + " does not exist in the code." + "The required entrypoint " + + ENTRYPOINT_FILE + + " does not exist in the code." ) attempts = 0 diff --git a/gpt_engineer/tools/experimental/code_vector_repository.py b/gpt_engineer/tools/experimental/code_vector_repository.py index b78b9f8b36..4085bdc04a 100644 --- a/gpt_engineer/tools/experimental/code_vector_repository.py +++ b/gpt_engineer/tools/experimental/code_vector_repository.py @@ -66,6 +66,8 @@ def relevent_code_chunks( raise ValueError("Index has not been loaded yet.") if self._retriever is None: - self._retriever = BM25Retriever.from_defaults(self._index, similarity_top_k=2) + self._retriever = BM25Retriever.from_defaults( + self._index, similarity_top_k=2 + ) return self._retriever.retrieve(query_string) diff --git a/gpt_engineer/tools/experimental/document_chunker.py b/gpt_engineer/tools/experimental/document_chunker.py index f982c11a6d..267a0904ff 100644 --- a/gpt_engineer/tools/experimental/document_chunker.py +++ b/gpt_engineer/tools/experimental/document_chunker.py @@ -35,7 +35,9 @@ def _chunk_node(self, node: Any, text: str, last_end: int = 0) -> List[str]: new_chunks.append(current_chunk) current_chunk = "" new_chunks.extend(self._chunk_node(child, text, last_end)) - elif len(current_chunk) + child.end_byte - child.start_byte > self.max_chars: + elif ( + len(current_chunk) + child.end_byte - child.start_byte > self.max_chars + ): # Child would make the current chunk too big, so start a new chunk new_chunks.append(current_chunk) current_chunk = text[last_end : child.end_byte] @@ -112,7 +114,9 @@ def _sort_documents_by_programming_language_or_other( if extension in lang["extensions"]: doc.metadata["is_code"] = True doc.metadata["code_language"] = lang["name"] - doc.metadata["code_language_tree_sitter_name"] = lang["tree_sitter_name"] + doc.metadata["code_language_tree_sitter_name"] = lang[ + "tree_sitter_name" + ] docs_to_split[lang["tree_sitter_name"]].append(doc) language_found = True break diff --git a/pyproject.toml b/pyproject.toml index 1af9dbbe4b..edb81a2cf0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -82,7 +82,6 @@ task-tags = ["TODO", "FIXME"] [tool.black] target-version = ["py311"] -include = '\\.pyi?$' [tool.ruff.isort] known-first-party = [] diff --git a/tests/core/default/test_steps.py b/tests/core/default/test_steps.py index e3c03e6a9e..1fca0da0ec 100644 --- a/tests/core/default/test_steps.py +++ b/tests/core/default/test_steps.py @@ -174,7 +174,9 @@ def test_function(): # Assert assert actual_name == expected_name - def test_constructs_system_prompt_with_predefined_instructions_and_philosophies(self): + def test_constructs_system_prompt_with_predefined_instructions_and_philosophies( + self, + ): preprompts_holder = PrepromptsHolder(PREPROMPTS_PATH) preprompts = preprompts_holder.get_preprompts() sys_prompt = setup_sys_prompt(preprompts) diff --git a/tests/core/test_chat_to_files.py b/tests/core/test_chat_to_files.py index 894f32e955..3e45bff725 100644 --- a/tests/core/test_chat_to_files.py +++ b/tests/core/test_chat_to_files.py @@ -202,7 +202,9 @@ def test_apply_edit_multiple_matches(log_capture): code = {"file.py": "repeat repeat repeat"} apply_edits(edits, code) assert code == {"file.py": "new new new"} - assert "code block to be replaced was found multiple times" in log_capture.messages[0] + assert ( + "code block to be replaced was found multiple times" in log_capture.messages[0] + ) if __name__ == "__main__": diff --git a/tests/test_install.py b/tests/test_install.py index 1dd11de5ce..2a00584fba 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -60,7 +60,9 @@ def test_installation(): result = subprocess.run([poetry_executable, "install"], capture_output=True) # Assert that the installation was successful. - assert result.returncode == 0, f"Install via poetry failed: {result.stderr.decode()}" + assert ( + result.returncode == 0 + ), f"Install via poetry failed: {result.stderr.decode()}" def test_cli_execution(): From 992db052601ed6b50745ef206ccac88de9811042 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Tue, 12 Dec 2023 14:44:57 +0100 Subject: [PATCH 03/13] ruff formatting --- gpt_engineer/__init__.py | 4 --- gpt_engineer/applications/cli/cli_agent.py | 23 +++++------- gpt_engineer/applications/cli/collect.py | 11 +++--- gpt_engineer/applications/cli/learning.py | 2 +- gpt_engineer/applications/cli/main.py | 26 +++++++------- gpt_engineer/benchmark/__main__.py | 4 ++- .../benchmark/benchmarks/gpteng/eval_tools.py | 4 --- .../benchmark/benchmarks/gpteng/load.py | 4 +-- .../benchmark/benchmarks/gptme/load.py | 1 - gpt_engineer/benchmark/run.py | 2 -- gpt_engineer/benchmark/types.py | 2 +- gpt_engineer/core/ai.py | 4 +-- gpt_engineer/core/base_agent.py | 5 ++- gpt_engineer/core/base_execution_env.py | 3 +- gpt_engineer/core/base_memory.py | 3 +- gpt_engineer/core/chat_to_files.py | 4 +-- .../core/default/disk_execution_env.py | 2 +- gpt_engineer/core/default/disk_memory.py | 5 +-- gpt_engineer/core/default/file_store.py | 1 + gpt_engineer/core/default/paths.py | 1 + gpt_engineer/core/default/simple_agent.py | 16 ++++----- gpt_engineer/core/default/steps.py | 36 +++++++++---------- gpt_engineer/core/files_dict.py | 1 - gpt_engineer/core/preprompts_holder.py | 3 +- gpt_engineer/core/token_usage.py | 5 ++- gpt_engineer/core/version_manager.py | 5 +-- gpt_engineer/tools/custom_steps.py | 24 ++++++------- .../experimental/code_vector_repository.py | 5 ++- .../tools/experimental/document_chunker.py | 11 +++--- .../tools/experimental/experimental_steps.py | 8 ++--- tests/applications/cli/test_cli_agent.py | 18 +++++----- tests/applications/cli/test_collect.py | 10 ------ .../cli/test_collection_consent.py | 28 ++++++++------- tests/caching_ai.py | 13 +++---- tests/core/default/test_disk_execution_env.py | 7 ++-- .../core/default/test_disk_file_repository.py | 7 ++-- tests/core/default/test_simple_agent.py | 18 +++------- tests/core/default/test_steps.py | 28 ++++++++------- tests/core/test_ai.py | 5 +-- tests/core/test_chat_to_files.py | 10 +++--- tests/core/test_token_usage.py | 7 ++-- tests/test_install.py | 5 +-- tests/tools/test_code_vector_repository.py | 3 +- 43 files changed, 179 insertions(+), 205 deletions(-) diff --git a/gpt_engineer/__init__.py b/gpt_engineer/__init__.py index ec3f8ccbab..518f9f8cc0 100644 --- a/gpt_engineer/__init__.py +++ b/gpt_engineer/__init__.py @@ -1,8 +1,4 @@ # Adding convenience imports to the package -from gpt_engineer.core import ( - ai, - chat_to_files, -) # from gpt_engineer.tools import code_vector_repository # from gpt_engineer.core.default import on_disk_repository diff --git a/gpt_engineer/applications/cli/cli_agent.py b/gpt_engineer/applications/cli/cli_agent.py index ddb8f7b6b4..a3e51b6656 100644 --- a/gpt_engineer/applications/cli/cli_agent.py +++ b/gpt_engineer/applications/cli/cli_agent.py @@ -1,26 +1,21 @@ -from gpt_engineer.core.files_dict import FilesDict +from typing import Callable, TypeVar # from gpt_engineer.core.default.git_version_manager import GitVersionManager from gpt_engineer.core.ai import AI +from gpt_engineer.core.base_agent import BaseAgent +from gpt_engineer.core.base_execution_env import BaseExecutionEnv +from gpt_engineer.core.base_memory import BaseMemory +from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv +from gpt_engineer.core.default.disk_memory import DiskMemory +from gpt_engineer.core.default.paths import ENTRYPOINT_FILE, PREPROMPTS_PATH from gpt_engineer.core.default.steps import ( + execute_entrypoint, gen_code, gen_entrypoint, - execute_entrypoint, improve, ) -from gpt_engineer.core.base_memory import BaseMemory -from gpt_engineer.core.default.disk_memory import DiskMemory -from gpt_engineer.core.base_execution_env import BaseExecutionEnv -from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv -from gpt_engineer.core.default.paths import ( - memory_path, - ENTRYPOINT_FILE, - PREPROMPTS_PATH, -) -from gpt_engineer.core.base_agent import BaseAgent +from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.preprompts_holder import PrepromptsHolder -from typing import TypeVar, Callable, Union -from pathlib import Path CodeGenType = TypeVar("CodeGenType", bound=Callable[[AI, str, BaseMemory], FilesDict]) CodeProcessor = TypeVar( diff --git a/gpt_engineer/applications/cli/collect.py b/gpt_engineer/applications/cli/collect.py index a71ef602c8..a7b8d6fccb 100644 --- a/gpt_engineer/applications/cli/collect.py +++ b/gpt_engineer/applications/cli/collect.py @@ -23,17 +23,16 @@ Consent logic is in gpt_engineer/learning.py. """ -import hashlib -from typing import List, Tuple +from typing import Tuple -from gpt_engineer.core.default.disk_memory import DiskMemory from gpt_engineer.applications.cli.learning import ( Learning, + Review, extract_learning, human_review_input, - Review, ) +from gpt_engineer.core.default.disk_memory import DiskMemory def send_learning(learning: Learning): @@ -88,7 +87,7 @@ def collect_learnings( learnings = extract_learning(prompt, model, temperature, config, memory, review) try: send_learning(learnings) - except RuntimeError as e: + except RuntimeError: # try to remove some parts of learning that might be too big # rudderstack max event size is 32kb max_size = 32 << 10 # 32KB in bytes @@ -110,7 +109,7 @@ def collect_learnings( ) try: send_learning(learnings) - except RuntimeError as e: + except RuntimeError: print( "Sending learnings crashed despite truncation. Progressing without saving learnings." ) diff --git a/gpt_engineer/applications/cli/learning.py b/gpt_engineer/applications/cli/learning.py index aa89ae032c..62cb787d68 100644 --- a/gpt_engineer/applications/cli/learning.py +++ b/gpt_engineer/applications/cli/learning.py @@ -47,7 +47,7 @@ from dataclasses import dataclass, field from datetime import datetime from pathlib import Path -from typing import List, Optional, Tuple +from typing import Optional, Tuple from dataclasses_json import dataclass_json from termcolor import colored diff --git a/gpt_engineer/applications/cli/main.py b/gpt_engineer/applications/cli/main.py index 6a3250ab1a..a39223d497 100644 --- a/gpt_engineer/applications/cli/main.py +++ b/gpt_engineer/applications/cli/main.py @@ -25,32 +25,30 @@ """ +import logging import os + from pathlib import Path import openai import typer + from dotenv import load_dotenv -from gpt_engineer.core.default.file_store import FileStore -from gpt_engineer.core.default.disk_memory import DiskMemory +from gpt_engineer.applications.cli.cli_agent import CliAgent +from gpt_engineer.applications.cli.collect import collect_and_send_human_review +from gpt_engineer.applications.cli.file_selector import ask_for_files from gpt_engineer.core.ai import AI +from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv +from gpt_engineer.core.default.disk_memory import DiskMemory +from gpt_engineer.core.default.file_store import FileStore from gpt_engineer.core.default.paths import PREPROMPTS_PATH, memory_path -from gpt_engineer.applications.cli.file_selector import ask_for_files, get_all_code -from gpt_engineer.tools.custom_steps import ( - lite_gen, - clarified_gen, - self_heal, -) +from gpt_engineer.core.default.steps import execute_entrypoint, gen_code, improve +from gpt_engineer.core.preprompts_holder import PrepromptsHolder +from gpt_engineer.tools.custom_steps import clarified_gen, lite_gen, self_heal from gpt_engineer.tools.experimental.experimental_steps import ( improve_automatic_file_selection, ) -from gpt_engineer.core.default.steps import gen_code, execute_entrypoint, improve -from gpt_engineer.applications.cli.cli_agent import CliAgent -from gpt_engineer.applications.cli.collect import collect_and_send_human_review -from gpt_engineer.core.preprompts_holder import PrepromptsHolder -from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv -import logging app = typer.Typer() # creates a CLI app diff --git a/gpt_engineer/benchmark/__main__.py b/gpt_engineer/benchmark/__main__.py index 7032ef86d1..cc6c09d1b5 100644 --- a/gpt_engineer/benchmark/__main__.py +++ b/gpt_engineer/benchmark/__main__.py @@ -1,5 +1,7 @@ import importlib -from typing import Optional, Annotated + +from typing import Annotated, Optional + import typer from langchain.cache import SQLiteCache diff --git a/gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py b/gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py index 9c6127c081..0e1c1049a9 100644 --- a/gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py +++ b/gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py @@ -9,13 +9,9 @@ be expanded. """ -import subprocess -from datetime import datetime -import yaml -from tabulate import tabulate from gpt_engineer.core.files_dict import FilesDict diff --git a/gpt_engineer/benchmark/benchmarks/gpteng/load.py b/gpt_engineer/benchmark/benchmarks/gpteng/load.py index 013a157624..e742e765f9 100644 --- a/gpt_engineer/benchmark/benchmarks/gpteng/load.py +++ b/gpt_engineer/benchmark/benchmarks/gpteng/load.py @@ -3,10 +3,8 @@ from gpt_engineer.benchmark.benchmarks.gpteng.eval_tools import ( check_evaluation_component, ) -from gpt_engineer.benchmark.types import Benchmark, Task, Assertable -from gpt_engineer.core import chat_to_files +from gpt_engineer.benchmark.types import Assertable, Benchmark, Task from gpt_engineer.core.chat_to_files import chat_to_files_dict -from gpt_engineer.core.files_dict import FilesDict evaluations = [ { diff --git a/gpt_engineer/benchmark/benchmarks/gptme/load.py b/gpt_engineer/benchmark/benchmarks/gptme/load.py index 04bb7e7044..b74d0afa3f 100644 --- a/gpt_engineer/benchmark/benchmarks/gptme/load.py +++ b/gpt_engineer/benchmark/benchmarks/gptme/load.py @@ -1,6 +1,5 @@ from gpt_engineer.benchmark.types import Benchmark, Task from gpt_engineer.core.files_dict import FilesDict -from gpt_engineer.core.base_execution_env import BaseExecutionEnv def load_gptme(): diff --git a/gpt_engineer/benchmark/run.py b/gpt_engineer/benchmark/run.py index e51119969a..af2e4bffa6 100644 --- a/gpt_engineer/benchmark/run.py +++ b/gpt_engineer/benchmark/run.py @@ -1,7 +1,5 @@ import time -import typer - from gpt_engineer.benchmark.types import Assertable, Benchmark, TaskResult from gpt_engineer.core.base_agent import BaseAgent from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv diff --git a/gpt_engineer/benchmark/types.py b/gpt_engineer/benchmark/types.py index 3095d1d713..fd70fa7b8c 100644 --- a/gpt_engineer/benchmark/types.py +++ b/gpt_engineer/benchmark/types.py @@ -2,8 +2,8 @@ from subprocess import Popen from typing import Callable -from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.base_execution_env import BaseExecutionEnv +from gpt_engineer.core.files_dict import FilesDict @dataclass diff --git a/gpt_engineer/core/ai.py b/gpt_engineer/core/ai.py index f162ce9b52..2a91b55cbc 100644 --- a/gpt_engineer/core/ai.py +++ b/gpt_engineer/core/ai.py @@ -9,8 +9,6 @@ import backoff import openai -from gpt_engineer.core.token_usage import TokenUsageLog - from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler from langchain.chat_models import AzureChatOpenAI, ChatOpenAI from langchain.chat_models.base import BaseChatModel @@ -22,6 +20,8 @@ messages_to_dict, ) +from gpt_engineer.core.token_usage import TokenUsageLog + # Type hint for a chat message Message = Union[AIMessage, HumanMessage, SystemMessage] diff --git a/gpt_engineer/core/base_agent.py b/gpt_engineer/core/base_agent.py index 88b3b8630d..2eb5b280f1 100644 --- a/gpt_engineer/core/base_agent.py +++ b/gpt_engineer/core/base_agent.py @@ -1,8 +1,7 @@ -from gpt_engineer.core.files_dict import FilesDict -from gpt_engineer.core.version_manager import BaseVersionManager -from gpt_engineer.core.ai import AI from abc import ABC, abstractmethod +from gpt_engineer.core.files_dict import FilesDict + class BaseAgent(ABC): """ diff --git a/gpt_engineer/core/base_execution_env.py b/gpt_engineer/core/base_execution_env.py index b2f89bc448..d2fee063d8 100644 --- a/gpt_engineer/core/base_execution_env.py +++ b/gpt_engineer/core/base_execution_env.py @@ -1,7 +1,8 @@ from abc import ABC, abstractmethod -from gpt_engineer.core.files_dict import FilesDict from subprocess import Popen +from gpt_engineer.core.files_dict import FilesDict + class BaseExecutionEnv(ABC): """ diff --git a/gpt_engineer/core/base_memory.py b/gpt_engineer/core/base_memory.py index e3be338db0..c6e3dd86d9 100644 --- a/gpt_engineer/core/base_memory.py +++ b/gpt_engineer/core/base_memory.py @@ -1,5 +1,4 @@ from pathlib import Path -from typing import TypeVar, MutableMapping -from abc import ABC +from typing import MutableMapping BaseMemory = MutableMapping[str | Path, str] diff --git a/gpt_engineer/core/chat_to_files.py b/gpt_engineer/core/chat_to_files.py index 645dc25685..3f5fe7e6c6 100644 --- a/gpt_engineer/core/chat_to_files.py +++ b/gpt_engineer/core/chat_to_files.py @@ -26,11 +26,11 @@ - apply_edits: Applies file edits to a workspace. """ -import re import logging +import re from dataclasses import dataclass -from typing import List, Tuple +from typing import List from gpt_engineer.core.files_dict import FilesDict diff --git a/gpt_engineer/core/default/disk_execution_env.py b/gpt_engineer/core/default/disk_execution_env.py index 2c97be8811..2203d18286 100644 --- a/gpt_engineer/core/default/disk_execution_env.py +++ b/gpt_engineer/core/default/disk_execution_env.py @@ -2,8 +2,8 @@ import time from gpt_engineer.core.base_execution_env import BaseExecutionEnv -from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.default.file_store import FileStore +from gpt_engineer.core.files_dict import FilesDict class DiskExecutionEnv(BaseExecutionEnv): diff --git a/gpt_engineer/core/default/disk_memory.py b/gpt_engineer/core/default/disk_memory.py index 62903c3542..0cfabab431 100644 --- a/gpt_engineer/core/default/disk_memory.py +++ b/gpt_engineer/core/default/disk_memory.py @@ -30,9 +30,10 @@ import json import shutil -from gpt_engineer.core.base_memory import BaseMemory from pathlib import Path -from typing import Any, Optional, Union, Iterator, Dict +from typing import Any, Dict, Iterator, Optional, Union + +from gpt_engineer.core.base_memory import BaseMemory from gpt_engineer.tools.experimental.supported_languages import SUPPORTED_LANGUAGES diff --git a/gpt_engineer/core/default/file_store.py b/gpt_engineer/core/default/file_store.py index 5907b0c109..637f67b342 100644 --- a/gpt_engineer/core/default/file_store.py +++ b/gpt_engineer/core/default/file_store.py @@ -1,4 +1,5 @@ import tempfile + from pathlib import Path from gpt_engineer.core.files_dict import FilesDict diff --git a/gpt_engineer/core/default/paths.py b/gpt_engineer/core/default/paths.py index 6a1065f09a..94dd80e1d2 100644 --- a/gpt_engineer/core/default/paths.py +++ b/gpt_engineer/core/default/paths.py @@ -1,4 +1,5 @@ import os + from pathlib import Path META_DATA_REL_PATH = ".gpteng" diff --git a/gpt_engineer/core/default/simple_agent.py b/gpt_engineer/core/default/simple_agent.py index ccb58e1236..a13ff60c5c 100644 --- a/gpt_engineer/core/default/simple_agent.py +++ b/gpt_engineer/core/default/simple_agent.py @@ -1,18 +1,14 @@ import tempfile -from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.ai import AI -from gpt_engineer.core.default.steps import ( - gen_code, - gen_entrypoint, - improve, -) -from gpt_engineer.core.base_memory import BaseMemory -from gpt_engineer.core.default.disk_memory import DiskMemory +from gpt_engineer.core.base_agent import BaseAgent from gpt_engineer.core.base_execution_env import BaseExecutionEnv +from gpt_engineer.core.base_memory import BaseMemory from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv -from gpt_engineer.core.default.paths import memory_path, PREPROMPTS_PATH -from gpt_engineer.core.base_agent import BaseAgent +from gpt_engineer.core.default.disk_memory import DiskMemory +from gpt_engineer.core.default.paths import PREPROMPTS_PATH, memory_path +from gpt_engineer.core.default.steps import gen_code, gen_entrypoint, improve +from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.preprompts_holder import PrepromptsHolder diff --git a/gpt_engineer/core/default/steps.py b/gpt_engineer/core/default/steps.py index 384053fde5..b71ef6c7ee 100644 --- a/gpt_engineer/core/default/steps.py +++ b/gpt_engineer/core/default/steps.py @@ -1,28 +1,28 @@ -from gpt_engineer.core.files_dict import FilesDict +import inspect +import re + +from pathlib import Path +from typing import List, MutableMapping, Union + +from langchain.schema import HumanMessage, SystemMessage +from termcolor import colored + from gpt_engineer.core.ai import AI +from gpt_engineer.core.base_execution_env import BaseExecutionEnv +from gpt_engineer.core.base_memory import BaseMemory from gpt_engineer.core.chat_to_files import ( chat_to_files_dict, overwrite_code_with_edits, parse_edits, ) +from gpt_engineer.core.default.constants import MAX_EDIT_REFINEMENT_STEPS from gpt_engineer.core.default.paths import ( - ENTRYPOINT_FILE, CODE_GEN_LOG_FILE, + ENTRYPOINT_FILE, ENTRYPOINT_LOG_FILE, IMPROVE_LOG_FILE, - PREPROMPTS_PATH, ) -from gpt_engineer.core.default.constants import MAX_EDIT_REFINEMENT_STEPS -from gpt_engineer.core.default.disk_memory import DiskMemory -from gpt_engineer.core.base_memory import BaseMemory -from gpt_engineer.core.base_execution_env import BaseExecutionEnv - -from typing import Union, MutableMapping, List -from pathlib import Path -from langchain.schema import HumanMessage, SystemMessage -import inspect -import re -from termcolor import colored +from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.preprompts_holder import PrepromptsHolder @@ -79,7 +79,7 @@ def execute_entrypoint( files_dict: FilesDict, preprompts_holder: PrepromptsHolder = None, ) -> FilesDict: - if not ENTRYPOINT_FILE in files_dict: + if ENTRYPOINT_FILE not in files_dict: raise FileNotFoundError( "The required entrypoint " + ENTRYPOINT_FILE @@ -138,12 +138,12 @@ def incorrect_edit(files_dict: FilesDict, chat: str) -> List[str,]: return problems for edit in edits: - if not edit.filename in files_dict: + if edit.filename not in files_dict: problems.append( f"A section tried to edit the file {edit.filename}, but this file does not exist in the code. Section:\n" + edit.filename ) - elif not edit.before in files_dict[edit.filename]: + elif edit.before not in files_dict[edit.filename]: problems.append( "This section, assigned to be exchanged for an edit block, does not have an exact match in the code: " + edit.before @@ -176,7 +176,7 @@ def improve( if len(problems) > 0: messages.append( HumanMessage( - content=f"Some previously produced edits were not on the requested format, or the HEAD part was not found in the code. Details: " + content="Some previously produced edits were not on the requested format, or the HEAD part was not found in the code. Details: " + "\n".join(problems) + "\n Please provide ALL the edits again, making sure that the failing ones are now on the correct format and can be found in the code. Make sure to not repeat past mistakes. \n" ) diff --git a/gpt_engineer/core/files_dict.py b/gpt_engineer/core/files_dict.py index 9f948e065d..11c4fb732d 100644 --- a/gpt_engineer/core/files_dict.py +++ b/gpt_engineer/core/files_dict.py @@ -1,4 +1,3 @@ -from typing import MutableMapping from pathlib import Path diff --git a/gpt_engineer/core/preprompts_holder.py b/gpt_engineer/core/preprompts_holder.py index a6553f13d6..cde949967d 100644 --- a/gpt_engineer/core/preprompts_holder.py +++ b/gpt_engineer/core/preprompts_holder.py @@ -1,5 +1,6 @@ -from typing import Dict from pathlib import Path +from typing import Dict + from gpt_engineer.core.default.disk_memory import DiskMemory diff --git a/gpt_engineer/core/token_usage.py b/gpt_engineer/core/token_usage.py index c45b8bcdd0..d3d0de3b06 100644 --- a/gpt_engineer/core/token_usage.py +++ b/gpt_engineer/core/token_usage.py @@ -1,7 +1,10 @@ -import tiktoken import logging + from dataclasses import dataclass from typing import List, Union + +import tiktoken + from langchain.callbacks.openai_info import get_openai_token_cost_for_model from langchain.schema import AIMessage, HumanMessage, SystemMessage diff --git a/gpt_engineer/core/version_manager.py b/gpt_engineer/core/version_manager.py index c3cf9c0454..67e9742886 100644 --- a/gpt_engineer/core/version_manager.py +++ b/gpt_engineer/core/version_manager.py @@ -1,7 +1,8 @@ from abc import ABC, abstractmethod -from gpt_engineer.core.files_dict import FilesDict -from typing import Union from pathlib import Path +from typing import Union + +from gpt_engineer.core.files_dict import FilesDict class BaseVersionManager(ABC): diff --git a/gpt_engineer/tools/custom_steps.py b/gpt_engineer/tools/custom_steps.py index ebd9aa159f..5602f2469f 100644 --- a/gpt_engineer/tools/custom_steps.py +++ b/gpt_engineer/tools/custom_steps.py @@ -1,22 +1,18 @@ -from termcolor import colored -from typing import List, Union from platform import platform from sys import version_info -from langchain.schema import SystemMessage, HumanMessage, AIMessage +from typing import List, Union + +from langchain.schema import AIMessage, HumanMessage, SystemMessage +from termcolor import colored + from gpt_engineer.core.ai import AI -from gpt_engineer.core.preprompts_holder import PrepromptsHolder +from gpt_engineer.core.base_execution_env import BaseExecutionEnv from gpt_engineer.core.base_memory import BaseMemory -from gpt_engineer.core.default.paths import ( - ENTRYPOINT_FILE, - CODE_GEN_LOG_FILE, -) -from gpt_engineer.core.default.steps import ( - curr_fn, - setup_sys_prompt, -) from gpt_engineer.core.chat_to_files import chat_to_files_dict +from gpt_engineer.core.default.paths import CODE_GEN_LOG_FILE, ENTRYPOINT_FILE +from gpt_engineer.core.default.steps import curr_fn, setup_sys_prompt from gpt_engineer.core.files_dict import FilesDict -from gpt_engineer.core.base_execution_env import BaseExecutionEnv +from gpt_engineer.core.preprompts_holder import PrepromptsHolder # Type hint for chat messages Message = Union[AIMessage, HumanMessage, SystemMessage] @@ -51,7 +47,7 @@ def self_heal( # step 1. execute the entrypoint # log_path = dbs.workspace.path / "log.txt" - if not ENTRYPOINT_FILE in files_dict: + if ENTRYPOINT_FILE not in files_dict: raise FileNotFoundError( "The required entrypoint " + ENTRYPOINT_FILE diff --git a/gpt_engineer/tools/experimental/code_vector_repository.py b/gpt_engineer/tools/experimental/code_vector_repository.py index 4085bdc04a..1d93c1d2c0 100644 --- a/gpt_engineer/tools/experimental/code_vector_repository.py +++ b/gpt_engineer/tools/experimental/code_vector_repository.py @@ -1,9 +1,8 @@ from typing import Dict, List -from llama_index import VectorStoreIndex, SimpleDirectoryReader -from llama_index import Document -from llama_index.schema import NodeWithScore +from llama_index import Document, SimpleDirectoryReader, VectorStoreIndex from llama_index.retrievers import BM25Retriever +from llama_index.schema import NodeWithScore from gpt_engineer.tools.experimental.document_chunker import DocumentChunker diff --git a/gpt_engineer/tools/experimental/document_chunker.py b/gpt_engineer/tools/experimental/document_chunker.py index 267a0904ff..d5f9f723e3 100644 --- a/gpt_engineer/tools/experimental/document_chunker.py +++ b/gpt_engineer/tools/experimental/document_chunker.py @@ -1,10 +1,13 @@ -from typing import Any, List, Dict, NamedTuple -from pathlib import Path from collections import defaultdict -from langchain.text_splitter import TextSplitter +from pathlib import Path +from typing import Any, Dict, List, NamedTuple + +import tree_sitter_languages + from langchain.docstore.document import Document +from langchain.text_splitter import TextSplitter + from gpt_engineer.tools.experimental.supported_languages import SUPPORTED_LANGUAGES -import tree_sitter_languages class CodeSplitter(TextSplitter): diff --git a/gpt_engineer/tools/experimental/experimental_steps.py b/gpt_engineer/tools/experimental/experimental_steps.py index 497a3a49bd..165f76ce74 100644 --- a/gpt_engineer/tools/experimental/experimental_steps.py +++ b/gpt_engineer/tools/experimental/experimental_steps.py @@ -1,15 +1,15 @@ import tempfile -from langchain.schema import SystemMessage, HumanMessage +from langchain.schema import HumanMessage, SystemMessage from gpt_engineer.core.ai import AI +from gpt_engineer.core.base_memory import BaseMemory from gpt_engineer.core.chat_to_files import overwrite_code_with_edits -from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.default.disk_memory import DiskMemory from gpt_engineer.core.default.paths import IMPROVE_LOG_FILE -from gpt_engineer.core.default.steps import setup_sys_prompt_existing_code, curr_fn +from gpt_engineer.core.default.steps import curr_fn, setup_sys_prompt_existing_code +from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.preprompts_holder import PrepromptsHolder -from gpt_engineer.core.base_memory import BaseMemory from gpt_engineer.tools.experimental.code_vector_repository import CodeVectorRepository diff --git a/tests/applications/cli/test_cli_agent.py b/tests/applications/cli/test_cli_agent.py index b51d8baec7..ae5cfcc746 100644 --- a/tests/applications/cli/test_cli_agent.py +++ b/tests/applications/cli/test_cli_agent.py @@ -1,15 +1,17 @@ -import pytest +import os import tempfile -from tests.caching_ai import CachingAI + +import pytest + from gpt_engineer.applications.cli.cli_agent import CliAgent -from gpt_engineer.tools.custom_steps import self_heal, lite_gen, clarified_gen -from gpt_engineer.core.files_dict import FilesDict from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv from gpt_engineer.core.default.disk_memory import DiskMemory # from gpt_engineer.core.default.git_version_manager import GitVersionManager -from gpt_engineer.core.default.paths import memory_path, ENTRYPOINT_FILE -import os +from gpt_engineer.core.default.paths import ENTRYPOINT_FILE, memory_path +from gpt_engineer.core.files_dict import FilesDict +from gpt_engineer.tools.custom_steps import clarified_gen, lite_gen +from tests.caching_ai import CachingAI def test_init_standard_config(monkeypatch): @@ -19,7 +21,7 @@ def test_init_standard_config(monkeypatch): execution_env = DiskExecutionEnv() cli_agent = CliAgent.with_default_config(memory, execution_env, ai=CachingAI()) outfile = "output.txt" - file_path = os.path.join(temp_dir, outfile) + os.path.join(temp_dir, outfile) code = cli_agent.init( f"Make a program that prints 'Hello World!' to a file called '{outfile}'" ) @@ -42,7 +44,7 @@ def test_init_lite_config(monkeypatch): memory, execution_env, ai=CachingAI(), code_gen_fn=lite_gen ) outfile = "output.txt" - file_path = os.path.join(temp_dir, outfile) + os.path.join(temp_dir, outfile) code = cli_agent.init( f"Make a program that prints 'Hello World!' to a file called '{outfile}'" ) diff --git a/tests/applications/cli/test_collect.py b/tests/applications/cli/test_collect.py index ed6061c088..ee24e4dddb 100644 --- a/tests/applications/cli/test_collect.py +++ b/tests/applications/cli/test_collect.py @@ -2,19 +2,9 @@ Tests the collect_learnings function in the cli/collect module. """ -import json -from unittest.mock import MagicMock import pytest -import rudderstack.analytics as rudder_analytics - -from gpt_engineer.applications.cli.collect import collect_learnings -from gpt_engineer.core.default.disk_memory import ( - DiskMemory, -) -from gpt_engineer.applications.cli.learning import extract_learning - # def test_collect_learnings(monkeypatch): # monkeypatch.setattr(rudder_analytics, "track", MagicMock()) diff --git a/tests/applications/cli/test_collection_consent.py b/tests/applications/cli/test_collection_consent.py index f447d978f3..73b6f19ad6 100644 --- a/tests/applications/cli/test_collection_consent.py +++ b/tests/applications/cli/test_collection_consent.py @@ -1,11 +1,15 @@ """ Tests for the revised data collection consent mechanism in the cli/learning module. """ -import pytest -from unittest.mock import patch from pathlib import Path -from gpt_engineer.applications.cli.learning import ask_collection_consent -from gpt_engineer.applications.cli.learning import check_collection_consent +from unittest.mock import patch + +import pytest + +from gpt_engineer.applications.cli.learning import ( + ask_collection_consent, + check_collection_consent, +) # Use a fixture to clean up created files after each test @@ -27,25 +31,25 @@ def cleanup(): def test_check_consent_file_exists_and_true(cleanup): Path(".gpte_consent").write_text("true") - assert check_collection_consent() == True + assert check_collection_consent() is True def test_check_consent_file_exists_and_false(cleanup): Path(".gpte_consent").write_text("false") with patch("builtins.input", side_effect=["n"]): - assert check_collection_consent() == False + assert check_collection_consent() is False def test_check_consent_file_not_exists_and_user_says_yes(cleanup): with patch("builtins.input", side_effect=["y"]): - assert check_collection_consent() == True + assert check_collection_consent() is True assert Path(".gpte_consent").exists() assert Path(".gpte_consent").read_text() == "true" def test_check_consent_file_not_exists_and_user_says_no(cleanup): with patch("builtins.input", side_effect=["n"]): - assert check_collection_consent() == False + assert check_collection_consent() is False assert not Path(".gpte_consent").exists() @@ -73,14 +77,14 @@ def test_ask_collection_consent_yes(cleanup): result = ask_collection_consent() assert Path(".gpte_consent").exists() assert Path(".gpte_consent").read_text() == "true" - assert result == True + assert result is True def test_ask_collection_consent_no(cleanup): with patch("builtins.input", side_effect=["n"]): result = ask_collection_consent() assert not Path(".gpte_consent").exists() - assert result == False + assert result is False def test_ask_collection_consent_invalid_then_yes(cleanup): @@ -88,11 +92,11 @@ def test_ask_collection_consent_invalid_then_yes(cleanup): result = ask_collection_consent() assert Path(".gpte_consent").exists() assert Path(".gpte_consent").read_text() == "true" - assert result == True + assert result is True def test_ask_collection_consent_invalid_then_no(cleanup): with patch("builtins.input", side_effect=["invalid", "n"]): result = ask_collection_consent() assert not Path(".gpte_consent").exists() - assert result == False + assert result is False diff --git a/tests/caching_ai.py b/tests/caching_ai.py index 9227936cbd..dfe14e4c61 100644 --- a/tests/caching_ai.py +++ b/tests/caching_ai.py @@ -1,16 +1,13 @@ +import json import os.path -from gpt_engineer.core.ai import AI -from gpt_engineer.core.token_usage import TokenUsageLog from pathlib import Path -import json from typing import List, Optional, Union -from langchain.schema import ( - AIMessage, - HumanMessage, - SystemMessage, -) +from langchain.schema import AIMessage, HumanMessage, SystemMessage + +from gpt_engineer.core.ai import AI +from gpt_engineer.core.token_usage import TokenUsageLog # Type hint for a chat message Message = Union[AIMessage, HumanMessage, SystemMessage] diff --git a/tests/core/default/test_disk_execution_env.py b/tests/core/default/test_disk_execution_env.py index 7019b7956c..541a5bb319 100644 --- a/tests/core/default/test_disk_execution_env.py +++ b/tests/core/default/test_disk_execution_env.py @@ -1,12 +1,13 @@ +import tempfile import unittest -from gpt_engineer.core.files_dict import FilesDict +from unittest.mock import MagicMock, patch + from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv # from gpt_engineer.core.default.git_version_manager import GitVersionManager from gpt_engineer.core.default.paths import ENTRYPOINT_FILE -import tempfile -from unittest.mock import patch, MagicMock +from gpt_engineer.core.files_dict import FilesDict class TestOnDiskExecutionEnv(unittest.TestCase): diff --git a/tests/core/default/test_disk_file_repository.py b/tests/core/default/test_disk_file_repository.py index 8636c98f47..3edb1faaaf 100644 --- a/tests/core/default/test_disk_file_repository.py +++ b/tests/core/default/test_disk_file_repository.py @@ -1,10 +1,7 @@ -import pytest -from gpt_engineer.core.default.disk_memory import ( - DiskMemory, -) +import pytest -import unittest +from gpt_engineer.core.default.disk_memory import DiskMemory def test_DB_operations(tmp_path): diff --git a/tests/core/default/test_simple_agent.py b/tests/core/default/test_simple_agent.py index dcfe4f4b45..363f25c48b 100644 --- a/tests/core/default/test_simple_agent.py +++ b/tests/core/default/test_simple_agent.py @@ -1,23 +1,13 @@ -import pytest import tempfile -from gpt_engineer.core.ai import AI -from gpt_engineer.core.default.simple_agent import SimpleAgent -from gpt_engineer.core.files_dict import FilesDict -import os + +import pytest from gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv from gpt_engineer.core.default.paths import ENTRYPOINT_FILE +from gpt_engineer.core.default.simple_agent import SimpleAgent +from gpt_engineer.core.files_dict import FilesDict from tests.caching_ai import CachingAI -from gpt_engineer.core.chat_to_files import ( - chat_to_files_dict, - Edit, - parse_edits, - apply_edits, -) -from gpt_engineer.core.chat_to_files import logger as parse_logger -import logging - def test_init(): temp_dir = tempfile.mkdtemp() diff --git a/tests/core/default/test_steps.py b/tests/core/default/test_steps.py index 1fca0da0ec..a3d2b33740 100644 --- a/tests/core/default/test_steps.py +++ b/tests/core/default/test_steps.py @@ -1,27 +1,31 @@ # Generated by CodiumAI -from gpt_engineer.core.files_dict import FilesDict +import tempfile + +from unittest.mock import MagicMock + +import pytest + +from langchain.schema import SystemMessage + +from gpt_engineer.core.ai import AI +from gpt_engineer.core.default.disk_memory import DiskMemory from gpt_engineer.core.default.paths import ( - ENTRYPOINT_FILE, CODE_GEN_LOG_FILE, + ENTRYPOINT_FILE, ENTRYPOINT_LOG_FILE, IMPROVE_LOG_FILE, PREPROMPTS_PATH, ) -from gpt_engineer.core.ai import AI -from gpt_engineer.core.preprompts_holder import PrepromptsHolder -from gpt_engineer.core.default.disk_memory import DiskMemory from gpt_engineer.core.default.steps import ( - gen_code, curr_fn, - setup_sys_prompt, - setup_sys_prompt_existing_code, + gen_code, gen_entrypoint, improve, + setup_sys_prompt, + setup_sys_prompt_existing_code, ) -from langchain.schema import HumanMessage, SystemMessage -import tempfile -import pytest -from unittest.mock import MagicMock +from gpt_engineer.core.files_dict import FilesDict +from gpt_engineer.core.preprompts_holder import PrepromptsHolder factorial_program = """ To implement a function that calculates the factorial of a number in Python, we will create a simple Python module with a single function `factorial`. The factorial of a non-negative integer `n` is the product of all positive integers less than or equal to `n`. It is denoted by `n!`. The factorial of 0 is defined to be 1. diff --git a/tests/core/test_ai.py b/tests/core/test_ai.py index d03d5f81d8..c39f7e71ce 100644 --- a/tests/core/test_ai.py +++ b/tests/core/test_ai.py @@ -1,6 +1,7 @@ -from gpt_engineer.core.ai import AI -from langchain.chat_models.fake import FakeListChatModel from langchain.chat_models.base import BaseChatModel +from langchain.chat_models.fake import FakeListChatModel + +from gpt_engineer.core.ai import AI def mock_create_chat_model(self) -> BaseChatModel: diff --git a/tests/core/test_chat_to_files.py b/tests/core/test_chat_to_files.py index 3e45bff725..3ac27ea453 100644 --- a/tests/core/test_chat_to_files.py +++ b/tests/core/test_chat_to_files.py @@ -1,12 +1,14 @@ +import logging + import pytest + from gpt_engineer.core.chat_to_files import ( - chat_to_files_dict, Edit, - parse_edits, apply_edits, + chat_to_files_dict, + logger as parse_logger, + parse_edits, ) -from gpt_engineer.core.chat_to_files import logger as parse_logger -import logging def test_standard_input(): diff --git a/tests/core/test_token_usage.py b/tests/core/test_token_usage.py index 62afe4943c..a5e8257be4 100644 --- a/tests/core/test_token_usage.py +++ b/tests/core/test_token_usage.py @@ -1,7 +1,10 @@ import csv + from io import StringIO -from gpt_engineer.core.token_usage import TokenUsageLog, TokenUsage -from langchain.schema import AIMessage, HumanMessage, SystemMessage + +from langchain.schema import HumanMessage, SystemMessage + +from gpt_engineer.core.token_usage import TokenUsageLog def test_format_log(): diff --git a/tests/test_install.py b/tests/test_install.py index 2a00584fba..ca48a1f47a 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -1,11 +1,12 @@ """ Tests for successful installation of the package. """ -import pytest +import shutil import subprocess import sys import venv -import shutil + +import pytest # Define the directory for the virtual environment. VENV_DIR = "./venv_test_installation" diff --git a/tests/tools/test_code_vector_repository.py b/tests/tools/test_code_vector_repository.py index 8cdba902f3..c2254c11e1 100644 --- a/tests/tools/test_code_vector_repository.py +++ b/tests/tools/test_code_vector_repository.py @@ -1,8 +1,9 @@ +import example_snake_files import pytest from llama_index import Document + from gpt_engineer.tools.experimental.code_vector_repository import CodeVectorRepository -import example_snake_files def mock_load_documents_from_directory(self, directory_name): From 30a4d57714a0ab9d83001da597322dc46c73a533 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Tue, 12 Dec 2023 14:48:21 +0100 Subject: [PATCH 04/13] formatting with black again --- gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py | 3 --- tests/applications/cli/test_collect.py | 1 - tests/core/default/test_disk_file_repository.py | 1 - 3 files changed, 5 deletions(-) diff --git a/gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py b/gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py index 0e1c1049a9..0f01502792 100644 --- a/gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py +++ b/gpt_engineer/benchmark/benchmarks/gpteng/eval_tools.py @@ -10,9 +10,6 @@ """ - - - from gpt_engineer.core.files_dict import FilesDict EVAL_LIST_NAME = "evaluations" # the top level list in the YAML file diff --git a/tests/applications/cli/test_collect.py b/tests/applications/cli/test_collect.py index ee24e4dddb..5f4b0252cd 100644 --- a/tests/applications/cli/test_collect.py +++ b/tests/applications/cli/test_collect.py @@ -3,7 +3,6 @@ """ - import pytest # def test_collect_learnings(monkeypatch): diff --git a/tests/core/default/test_disk_file_repository.py b/tests/core/default/test_disk_file_repository.py index 3edb1faaaf..6e8b00cc43 100644 --- a/tests/core/default/test_disk_file_repository.py +++ b/tests/core/default/test_disk_file_repository.py @@ -1,4 +1,3 @@ - import pytest from gpt_engineer.core.default.disk_memory import DiskMemory From bfef061da94b5f963ae8668391f841ebb430dd19 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Tue, 12 Dec 2023 14:58:17 +0100 Subject: [PATCH 05/13] ruff ignoring "E501" by default --- projects/example-improve/model.py | 1 + pyproject.toml | 1 + 2 files changed, 2 insertions(+) diff --git a/projects/example-improve/model.py b/projects/example-improve/model.py index 2c73051c9f..e5d0b72433 100644 --- a/projects/example-improve/model.py +++ b/projects/example-improve/model.py @@ -1,4 +1,5 @@ import random + from dataclasses import dataclass diff --git a/pyproject.toml b/pyproject.toml index edb81a2cf0..c1ab110db2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,6 +79,7 @@ select = ["F", "E", "W", "I001"] show-fixes = false target-version = "py311" task-tags = ["TODO", "FIXME"] +extend-ignore = ["E501"] [tool.black] target-version = ["py311"] From d95241275362d812a6a8192249ce44428d4ff148 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Tue, 12 Dec 2023 15:04:14 +0100 Subject: [PATCH 06/13] Found and fixed some errors with ruff --- gpt_engineer/tools/experimental/experimental_steps.py | 1 + projects/example-improve/view.py | 2 ++ pyproject.toml | 2 +- tests/core/default/test_disk_file_repository.py | 2 -- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/gpt_engineer/tools/experimental/experimental_steps.py b/gpt_engineer/tools/experimental/experimental_steps.py index 165f76ce74..f8a4990f9f 100644 --- a/gpt_engineer/tools/experimental/experimental_steps.py +++ b/gpt_engineer/tools/experimental/experimental_steps.py @@ -1,3 +1,4 @@ +import os import tempfile from langchain.schema import HumanMessage, SystemMessage diff --git a/projects/example-improve/view.py b/projects/example-improve/view.py index 25f6feee8f..2f8cd83a7c 100644 --- a/projects/example-improve/view.py +++ b/projects/example-improve/view.py @@ -1,3 +1,5 @@ +from model import Point + class View: def __init__(self, game): self.game = game diff --git a/pyproject.toml b/pyproject.toml index c1ab110db2..3de9393585 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -79,7 +79,7 @@ select = ["F", "E", "W", "I001"] show-fixes = false target-version = "py311" task-tags = ["TODO", "FIXME"] -extend-ignore = ["E501"] +extend-ignore = ["E501", "E722"] [tool.black] target-version = ["py311"] diff --git a/tests/core/default/test_disk_file_repository.py b/tests/core/default/test_disk_file_repository.py index 6e8b00cc43..4b8ac84be6 100644 --- a/tests/core/default/test_disk_file_repository.py +++ b/tests/core/default/test_disk_file_repository.py @@ -74,8 +74,6 @@ def test_error_messages(tmp_path): # Generated by CodiumAI -import pytest - class TestOnDiskRepository: # can set and get a value for a key From fad77af4d23a43c95861c84467af29eb7f9321aa Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Tue, 12 Dec 2023 15:08:18 +0100 Subject: [PATCH 07/13] one more little thing formatted --- projects/example-improve/view.py | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/example-improve/view.py b/projects/example-improve/view.py index 2f8cd83a7c..78421e5124 100644 --- a/projects/example-improve/view.py +++ b/projects/example-improve/view.py @@ -1,5 +1,6 @@ from model import Point + class View: def __init__(self, game): self.game = game From 99e7c1e0280811b6604c2064475bc759b643bc13 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Tue, 12 Dec 2023 19:38:50 +0100 Subject: [PATCH 08/13] addition to test_install.py to make it pass locally --- tests/test_install.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_install.py b/tests/test_install.py index ca48a1f47a..d8f8d15a11 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -26,7 +26,7 @@ def venv_setup_teardown(): """ try: # Create a virtual environment with pip available. - venv.create(VENV_DIR, with_pip=True) + venv.create(VENV_DIR, with_pip=True, clear=True) # Install Poetry in the virtual environment. subprocess.run( From cb6ac62e6a44901e7ff1d4bcf42c566f7dc8bd46 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Wed, 13 Dec 2023 13:59:58 +0100 Subject: [PATCH 09/13] Fixed experimental dependencies --- poetry.lock | 659 ++++++++++++++++++++++++++----------------------- pyproject.toml | 5 +- 2 files changed, 350 insertions(+), 314 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3928caa793..723eae9df7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -165,24 +165,24 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} [[package]] name = "anyio" -version = "3.7.1" +version = "4.1.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.1.0-py3-none-any.whl", hash = "sha256:56a415fbc462291813a94528a779597226619c8e78af7de0507333f700011e5f"}, + {file = "anyio-4.1.0.tar.gz", hash = "sha256:5a0bec7085176715be77df87fc66d6c9d70626bd752fcc85f57cdbee5b3760da"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] [[package]] name = "appnope" @@ -267,13 +267,13 @@ test = ["coverage (>=7,<8)", "pytest (>=7,<8)"] [[package]] name = "babel" -version = "2.13.1" +version = "2.14.0" description = "Internationalization utilities" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.13.1-py3-none-any.whl", hash = "sha256:7077a4984b02b6727ac10f1f7294484f737443d7e2e66c5e4380e41a3ae0b4ed"}, - {file = "Babel-2.13.1.tar.gz", hash = "sha256:33e0952d7dd6374af8dbf6768cc4ddf3ccfefc244f9986d4074704f2fbd18900"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] [package.dependencies] @@ -784,13 +784,13 @@ packaging = "*" [[package]] name = "distlib" -version = "0.3.7" +version = "0.3.8" description = "Distribution utilities" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, - {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, ] [[package]] @@ -953,13 +953,13 @@ files = [ [[package]] name = "fsspec" -version = "2023.12.0" +version = "2023.12.2" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2023.12.0-py3-none-any.whl", hash = "sha256:f807252ee2018f2223760315beb87a2166c2b9532786eeca9e6548dfcf2cfac9"}, - {file = "fsspec-2023.12.0.tar.gz", hash = "sha256:8e0bb2db2a94082968483b7ba2eaebf3949835e2dfdf09243dda387539464b31"}, + {file = "fsspec-2023.12.2-py3-none-any.whl", hash = "sha256:d800d87f72189a745fa3d6b033b9dc4a34ad069f60ca60b943a63599f5501960"}, + {file = "fsspec-2023.12.2.tar.gz", hash = "sha256:8548d39e8810b59c38014934f6b31e57f40c1b20f911f4cc2b85389c7e9bf0cb"}, ] [package.extras] @@ -988,68 +988,69 @@ tqdm = ["tqdm"] [[package]] name = "greenlet" -version = "3.0.1" +version = "3.0.2" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f89e21afe925fcfa655965ca8ea10f24773a1791400989ff32f467badfe4a064"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28e89e232c7593d33cac35425b58950789962011cc274aa43ef8865f2e11f46d"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8ba29306c5de7717b5761b9ea74f9c72b9e2b834e24aa984da99cbfc70157fd"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19bbdf1cce0346ef7341705d71e2ecf6f41a35c311137f29b8a2dc2341374565"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599daf06ea59bfedbec564b1692b0166a0045f32b6f0933b0dd4df59a854caf2"}, - {file = "greenlet-3.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b641161c302efbb860ae6b081f406839a8b7d5573f20a455539823802c655f63"}, - {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d57e20ba591727da0c230ab2c3f200ac9d6d333860d85348816e1dca4cc4792e"}, - {file = "greenlet-3.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5805e71e5b570d490938d55552f5a9e10f477c19400c38bf1d5190d760691846"}, - {file = "greenlet-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:52e93b28db27ae7d208748f45d2db8a7b6a380e0d703f099c949d0f0d80b70e9"}, - {file = "greenlet-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f7bfb769f7efa0eefcd039dd19d843a4fbfbac52f1878b1da2ed5793ec9b1a65"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91e6c7db42638dc45cf2e13c73be16bf83179f7859b07cfc139518941320be96"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1757936efea16e3f03db20efd0cd50a1c86b06734f9f7338a90c4ba85ec2ad5a"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19075157a10055759066854a973b3d1325d964d498a805bb68a1f9af4aaef8ec"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9d21aaa84557d64209af04ff48e0ad5e28c5cca67ce43444e939579d085da72"}, - {file = "greenlet-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2847e5d7beedb8d614186962c3d774d40d3374d580d2cbdab7f184580a39d234"}, - {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:97e7ac860d64e2dcba5c5944cfc8fa9ea185cd84061c623536154d5a89237884"}, - {file = "greenlet-3.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b2c02d2ad98116e914d4f3155ffc905fd0c025d901ead3f6ed07385e19122c94"}, - {file = "greenlet-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:22f79120a24aeeae2b4471c711dcf4f8c736a2bb2fabad2a67ac9a55ea72523c"}, - {file = "greenlet-3.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:100f78a29707ca1525ea47388cec8a049405147719f47ebf3895e7509c6446aa"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60d5772e8195f4e9ebf74046a9121bbb90090f6550f81d8956a05387ba139353"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:daa7197b43c707462f06d2c693ffdbb5991cbb8b80b5b984007de431493a319c"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea6b8aa9e08eea388c5f7a276fabb1d4b6b9d6e4ceb12cc477c3d352001768a9"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d11ebbd679e927593978aa44c10fc2092bc454b7d13fdc958d3e9d508aba7d0"}, - {file = "greenlet-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dbd4c177afb8a8d9ba348d925b0b67246147af806f0b104af4d24f144d461cd5"}, - {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20107edf7c2c3644c67c12205dc60b1bb11d26b2610b276f97d666110d1b511d"}, - {file = "greenlet-3.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8bef097455dea90ffe855286926ae02d8faa335ed8e4067326257cb571fc1445"}, - {file = "greenlet-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:b2d3337dcfaa99698aa2377c81c9ca72fcd89c07e7eb62ece3f23a3fe89b2ce4"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80ac992f25d10aaebe1ee15df45ca0d7571d0f70b645c08ec68733fb7a020206"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:337322096d92808f76ad26061a8f5fccb22b0809bea39212cd6c406f6a7060d2"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9934adbd0f6e476f0ecff3c94626529f344f57b38c9a541f87098710b18af0a"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc4d815b794fd8868c4d67602692c21bf5293a75e4b607bb92a11e821e2b859a"}, - {file = "greenlet-3.0.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41bdeeb552d814bcd7fb52172b304898a35818107cc8778b5101423c9017b3de"}, - {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6e6061bf1e9565c29002e3c601cf68569c450be7fc3f7336671af7ddb4657166"}, - {file = "greenlet-3.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fa24255ae3c0ab67e613556375a4341af04a084bd58764731972bcbc8baeba36"}, - {file = "greenlet-3.0.1-cp37-cp37m-win32.whl", hash = "sha256:b489c36d1327868d207002391f662a1d163bdc8daf10ab2e5f6e41b9b96de3b1"}, - {file = "greenlet-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f33f3258aae89da191c6ebaa3bc517c6c4cbc9b9f689e5d8452f7aedbb913fa8"}, - {file = "greenlet-3.0.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d2905ce1df400360463c772b55d8e2518d0e488a87cdea13dd2c71dcb2a1fa16"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a02d259510b3630f330c86557331a3b0e0c79dac3d166e449a39363beaae174"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55d62807f1c5a1682075c62436702aaba941daa316e9161e4b6ccebbbf38bda3"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3fcc780ae8edbb1d050d920ab44790201f027d59fdbd21362340a85c79066a74"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eddd98afc726f8aee1948858aed9e6feeb1758889dfd869072d4465973f6bfd"}, - {file = "greenlet-3.0.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eabe7090db68c981fca689299c2d116400b553f4b713266b130cfc9e2aa9c5a9"}, - {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f2f6d303f3dee132b322a14cd8765287b8f86cdc10d2cb6a6fae234ea488888e"}, - {file = "greenlet-3.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d923ff276f1c1f9680d32832f8d6c040fe9306cbfb5d161b0911e9634be9ef0a"}, - {file = "greenlet-3.0.1-cp38-cp38-win32.whl", hash = "sha256:0b6f9f8ca7093fd4433472fd99b5650f8a26dcd8ba410e14094c1e44cd3ceddd"}, - {file = "greenlet-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:990066bff27c4fcf3b69382b86f4c99b3652bab2a7e685d968cd4d0cfc6f67c6"}, - {file = "greenlet-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ce85c43ae54845272f6f9cd8320d034d7a946e9773c693b27d620edec825e376"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89ee2e967bd7ff85d84a2de09df10e021c9b38c7d91dead95b406ed6350c6997"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87c8ceb0cf8a5a51b8008b643844b7f4a8264a2c13fcbcd8a8316161725383fe"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6a8c9d4f8692917a3dc7eb25a6fb337bff86909febe2f793ec1928cd97bedfc"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fbc5b8f3dfe24784cee8ce0be3da2d8a79e46a276593db6868382d9c50d97b1"}, - {file = "greenlet-3.0.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85d2b77e7c9382f004b41d9c72c85537fac834fb141b0296942d52bf03fe4a3d"}, - {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:696d8e7d82398e810f2b3622b24e87906763b6ebfd90e361e88eb85b0e554dc8"}, - {file = "greenlet-3.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:329c5a2e5a0ee942f2992c5e3ff40be03e75f745f48847f118a3cfece7a28546"}, - {file = "greenlet-3.0.1-cp39-cp39-win32.whl", hash = "sha256:cf868e08690cb89360eebc73ba4be7fb461cfbc6168dd88e2fbbe6f31812cd57"}, - {file = "greenlet-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:ac4a39d1abae48184d420aa8e5e63efd1b75c8444dd95daa3e03f6c6310e9619"}, - {file = "greenlet-3.0.1.tar.gz", hash = "sha256:816bd9488a94cba78d93e1abb58000e8266fa9cc2aa9ccdd6eb0696acb24005b"}, + {file = "greenlet-3.0.2-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9acd8fd67c248b8537953cb3af8787c18a87c33d4dcf6830e410ee1f95a63fd4"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:339c0272a62fac7e602e4e6ec32a64ff9abadc638b72f17f6713556ed011d493"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38878744926cec29b5cc3654ef47f3003f14bfbba7230e3c8492393fe29cc28b"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b3f0497db77cfd034f829678b28267eeeeaf2fc21b3f5041600f7617139e6773"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed1a8a08de7f68506a38f9a2ddb26bbd1480689e66d788fcd4b5f77e2d9ecfcc"}, + {file = "greenlet-3.0.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89a6f6ddcbef4000cda7e205c4c20d319488ff03db961d72d4e73519d2465309"}, + {file = "greenlet-3.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c1f647fe5b94b51488b314c82fdda10a8756d650cee8d3cd29f657c6031bdf73"}, + {file = "greenlet-3.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9560c580c896030ff9c311c603aaf2282234643c90d1dec738a1d93e3e53cd51"}, + {file = "greenlet-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:2e9c5423046eec21f6651268cb674dfba97280701e04ef23d312776377313206"}, + {file = "greenlet-3.0.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1fd25dfc5879a82103b3d9e43fa952e3026c221996ff4d32a9c72052544835d"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cecfdc950dd25f25d6582952e58521bca749cf3eeb7a9bad69237024308c8196"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:edf7a1daba1f7c54326291a8cde58da86ab115b78c91d502be8744f0aa8e3ffa"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4cf532bf3c58a862196b06947b1b5cc55503884f9b63bf18582a75228d9950e"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e79fb5a9fb2d0bd3b6573784f5e5adabc0b0566ad3180a028af99523ce8f6138"}, + {file = "greenlet-3.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:006c1028ac0cfcc4e772980cfe73f5476041c8c91d15d64f52482fc571149d46"}, + {file = "greenlet-3.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fefd5eb2c0b1adffdf2802ff7df45bfe65988b15f6b972706a0e55d451bffaea"}, + {file = "greenlet-3.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0c0fdb8142742ee68e97c106eb81e7d3e883cc739d9c5f2b28bc38a7bafeb6d1"}, + {file = "greenlet-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:8f8d14a0a4e8c670fbce633d8b9a1ee175673a695475acd838e372966845f764"}, + {file = "greenlet-3.0.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:654b84c9527182036747938b81938f1d03fb8321377510bc1854a9370418ab66"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bc4fde0842ff2b9cf33382ad0b4db91c2582db836793d58d174c569637144"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c27b142a9080bdd5869a2fa7ebf407b3c0b24bd812db925de90e9afe3c417fd6"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0df7eed98ea23b20e9db64d46eb05671ba33147df9405330695bcd81a73bb0c9"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5d60805057d8948065338be6320d35e26b0a72f45db392eb32b70dd6dc9227"}, + {file = "greenlet-3.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e0e28f5233d64c693382f66d47c362b72089ebf8ac77df7e12ac705c9fa1163d"}, + {file = "greenlet-3.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e4bfa752b3688d74ab1186e2159779ff4867644d2b1ebf16db14281f0445377"}, + {file = "greenlet-3.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c42bb589e6e9f9d8bdd79f02f044dff020d30c1afa6e84c0b56d1ce8a324553c"}, + {file = "greenlet-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:b2cedf279ca38ef3f4ed0d013a6a84a7fc3d9495a716b84a5fc5ff448965f251"}, + {file = "greenlet-3.0.2-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:6d65bec56a7bc352bcf11b275b838df618651109074d455a772d3afe25390b7d"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0acadbc3f72cb0ee85070e8d36bd2a4673d2abd10731ee73c10222cf2dd4713c"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14b5d999aefe9ffd2049ad19079f733c3aaa426190ffecadb1d5feacef8fe397"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f27aa32466993c92d326df982c4acccd9530fe354e938d9e9deada563e71ce76"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f34a765c5170c0673eb747213a0275ecc749ab3652bdbec324621ed5b2edaef"}, + {file = "greenlet-3.0.2-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:520fcb53a39ef90f5021c77606952dbbc1da75d77114d69b8d7bded4a8e1a813"}, + {file = "greenlet-3.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d1fceb5351ab1601903e714c3028b37f6ea722be6873f46e349a960156c05650"}, + {file = "greenlet-3.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7363756cc439a503505b67983237d1cc19139b66488263eb19f5719a32597836"}, + {file = "greenlet-3.0.2-cp37-cp37m-win32.whl", hash = "sha256:d5547b462b8099b84746461e882a3eb8a6e3f80be46cb6afb8524eeb191d1a30"}, + {file = "greenlet-3.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:950e21562818f9c771989b5b65f990e76f4ac27af66e1bb34634ae67886ede2a"}, + {file = "greenlet-3.0.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d64643317e76b4b41fdba659e7eca29634e5739b8bc394eda3a9127f697ed4b0"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f9ea7c2c9795549653b6f7569f6bc75d2c7d1f6b2854eb8ce0bc6ec3cb2dd88"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db4233358d3438369051a2f290f1311a360d25c49f255a6c5d10b5bcb3aa2b49"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed9bf77b41798e8417657245b9f3649314218a4a17aefb02bb3992862df32495"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d0df07a38e41a10dfb62c6fc75ede196572b580f48ee49b9282c65639f3965"}, + {file = "greenlet-3.0.2-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:10d247260db20887ae8857c0cbc750b9170f0b067dd7d38fb68a3f2334393bd3"}, + {file = "greenlet-3.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a37ae53cca36823597fd5f65341b6f7bac2dd69ecd6ca01334bb795460ab150b"}, + {file = "greenlet-3.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:80d068e4b6e2499847d916ef64176811ead6bf210a610859220d537d935ec6fd"}, + {file = "greenlet-3.0.2-cp38-cp38-win32.whl", hash = "sha256:b1405614692ac986490d10d3e1a05e9734f473750d4bee3cf7d1286ef7af7da6"}, + {file = "greenlet-3.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8756a94ed8f293450b0e91119eca2a36332deba69feb2f9ca410d35e74eae1e4"}, + {file = "greenlet-3.0.2-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:2c93cd03acb1499ee4de675e1a4ed8eaaa7227f7949dc55b37182047b006a7aa"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dac09e3c0b78265d2e6d3cbac2d7c48bd1aa4b04a8ffeda3adde9f1688df2c3"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ee59c4627c8c4bb3e15949fbcd499abd6b7f4ad9e0bfcb62c65c5e2cabe0ec4"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18fe39d70d482b22f0014e84947c5aaa7211fb8e13dc4cc1c43ed2aa1db06d9a"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84bef3cfb6b6bfe258c98c519811c240dbc5b33a523a14933a252e486797c90"}, + {file = "greenlet-3.0.2-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aecea0442975741e7d69daff9b13c83caff8c13eeb17485afa65f6360a045765"}, + {file = "greenlet-3.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f260e6c2337871a52161824058923df2bbddb38bc11a5cbe71f3474d877c5bd9"}, + {file = "greenlet-3.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fc14dd9554f88c9c1fe04771589ae24db76cd56c8f1104e4381b383d6b71aff8"}, + {file = "greenlet-3.0.2-cp39-cp39-win32.whl", hash = "sha256:bfcecc984d60b20ffe30173b03bfe9ba6cb671b0be1e95c3e2056d4fe7006590"}, + {file = "greenlet-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:c235131bf59d2546bb3ebaa8d436126267392f2e51b85ff45ac60f3a26549af0"}, + {file = "greenlet-3.0.2.tar.gz", hash = "sha256:1c1129bc47266d83444c85a8e990ae22688cf05fb20d7951fd2866007c2ba9bc"}, ] [package.extras] @@ -1058,13 +1059,13 @@ test = ["objgraph", "psutil"] [[package]] name = "identify" -version = "2.5.32" +version = "2.5.33" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.32-py2.py3-none-any.whl", hash = "sha256:0b7656ef6cba81664b783352c73f8c24b39cf82f926f78f4550eda928e5e0545"}, - {file = "identify-2.5.32.tar.gz", hash = "sha256:5d9979348ec1a21c768ae07e0a652924538e8bce67313a73cb0f681cf08ba407"}, + {file = "identify-2.5.33-py2.py3-none-any.whl", hash = "sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34"}, + {file = "identify-2.5.33.tar.gz", hash = "sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d"}, ] [package.extras] @@ -1405,22 +1406,22 @@ files = [ [[package]] name = "langchain" -version = "0.0.345" +version = "0.0.350" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langchain-0.0.345-py3-none-any.whl", hash = "sha256:461a126ec182834c714589ceec47354401d80b903262efab8d669fe941a0a4df"}, - {file = "langchain-0.0.345.tar.gz", hash = "sha256:2d366513a46e4620d8fe6fc956b9185c2a252e60e2fc0476113482455aaaa9f0"}, + {file = "langchain-0.0.350-py3-none-any.whl", hash = "sha256:11b605f325a4271a7815baaec05bc7622e3ad1f10f26b05c752cafa27663ed38"}, + {file = "langchain-0.0.350.tar.gz", hash = "sha256:f0e68a92d200bb722586688ab7b411b2430bd98ad265ca03b264e7e7acbb6c01"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" -anyio = "<4.0" async-timeout = {version = ">=4.0.0,<5.0.0", markers = "python_version < \"3.11\""} dataclasses-json = ">=0.5.7,<0.7" jsonpatch = ">=1.33,<2.0" -langchain-core = ">=0.0.9,<0.1" +langchain-community = ">=0.0.2,<0.1" +langchain-core = ">=0.1,<0.2" langsmith = ">=0.0.63,<0.1.0" numpy = ">=1,<2" pydantic = ">=1,<3" @@ -1430,37 +1431,69 @@ SQLAlchemy = ">=1.4,<3" tenacity = ">=8.1.0,<9.0.0" [package.extras] -all = ["O365 (>=2.0.26,<3.0.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "amadeus (>=8.1.0)", "arxiv (>=1.4,<2.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "awadb (>=0.3.9,<0.4.0)", "azure-ai-formrecognizer (>=3.2.1,<4.0.0)", "azure-ai-textanalytics (>=5.3.0,<6.0.0)", "azure-ai-vision (>=0.11.1b1,<0.12.0)", "azure-cognitiveservices-speech (>=1.28.0,<2.0.0)", "azure-cosmos (>=4.4.0b1,<5.0.0)", "azure-identity (>=1.12.0,<2.0.0)", "beautifulsoup4 (>=4,<5)", "clarifai (>=9.1.0)", "clickhouse-connect (>=0.5.14,<0.6.0)", "cohere (>=4,<5)", "deeplake (>=3.8.3,<4.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "docarray[hnswlib] (>=0.32.0,<0.33.0)", "duckduckgo-search (>=3.8.3,<4.0.0)", "elasticsearch (>=8,<9)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "google-api-python-client (==2.70.0)", "google-auth (>=2.18.1,<3.0.0)", "google-search-results (>=2,<3)", "gptcache (>=0.1.7)", "html2text (>=2020.1.16,<2021.0.0)", "huggingface_hub (>=0,<1)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "lancedb (>=0.1,<0.2)", "langkit (>=0.0.6,<0.1.0)", "lark (>=1.1.5,<2.0.0)", "librosa (>=0.10.0.post2,<0.11.0)", "lxml (>=4.9.2,<5.0.0)", "manifest-ml (>=0.0.1,<0.0.2)", "marqo (>=1.2.4,<2.0.0)", "momento (>=1.13.0,<2.0.0)", "nebula3-python (>=3.4.0,<4.0.0)", "neo4j (>=5.8.1,<6.0.0)", "networkx (>=2.6.3,<4)", "nlpcloud (>=1,<2)", "nltk (>=3,<4)", "nomic (>=1.0.43,<2.0.0)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "opensearch-py (>=2.0.0,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pexpect (>=4.8.0,<5.0.0)", "pgvector (>=0.1.6,<0.2.0)", "pinecone-client (>=2,<3)", "pinecone-text (>=0.4.2,<0.5.0)", "psycopg2-binary (>=2.9.5,<3.0.0)", "pymongo (>=4.3.3,<5.0.0)", "pyowm (>=3.3.0,<4.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pytesseract (>=0.3.10,<0.4.0)", "python-arango (>=7.5.9,<8.0.0)", "pyvespa (>=0.33.0,<0.34.0)", "qdrant-client (>=1.3.1,<2.0.0)", "rdflib (>=6.3.2,<7.0.0)", "redis (>=4,<5)", "requests-toolbelt (>=1.0.0,<2.0.0)", "sentence-transformers (>=2,<3)", "singlestoredb (>=0.7.1,<0.8.0)", "tensorflow-text (>=2.11.0,<3.0.0)", "tigrisdb (>=1.0.0b6,<2.0.0)", "tiktoken (>=0.3.2,<0.6.0)", "torch (>=1,<3)", "transformers (>=4,<5)", "weaviate-client (>=3,<4)", "wikipedia (>=1,<2)", "wolframalpha (==5.0.0)"] azure = ["azure-ai-formrecognizer (>=3.2.1,<4.0.0)", "azure-ai-textanalytics (>=5.3.0,<6.0.0)", "azure-ai-vision (>=0.11.1b1,<0.12.0)", "azure-cognitiveservices-speech (>=1.28.0,<2.0.0)", "azure-core (>=1.26.4,<2.0.0)", "azure-cosmos (>=4.4.0b1,<5.0.0)", "azure-identity (>=1.12.0,<2.0.0)", "azure-search-documents (==11.4.0b8)", "openai (<2)"] clarifai = ["clarifai (>=9.1.0)"] cli = ["typer (>=0.9.0,<0.10.0)"] cohere = ["cohere (>=4,<5)"] docarray = ["docarray[hnswlib] (>=0.32.0,<0.33.0)"] embeddings = ["sentence-transformers (>=2,<3)"] -extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.6.0,<0.7.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "couchbase (>=4.1.9,<5.0.0)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] javascript = ["esprima (>=4.0.1,<5.0.0)"] llms = ["clarifai (>=9.1.0)", "cohere (>=4,<5)", "huggingface_hub (>=0,<1)", "manifest-ml (>=0.0.1,<0.0.2)", "nlpcloud (>=1,<2)", "openai (<2)", "openlm (>=0.0.5,<0.0.6)", "torch (>=1,<3)", "transformers (>=4,<5)"] openai = ["openai (<2)", "tiktoken (>=0.3.2,<0.6.0)"] qdrant = ["qdrant-client (>=1.3.1,<2.0.0)"] text-helpers = ["chardet (>=5.1.0,<6.0.0)"] +[[package]] +name = "langchain-community" +version = "0.0.2" +description = "Community contributed LangChain integrations." +optional = false +python-versions = ">=3.8.1,<4.0" +files = [ + {file = "langchain_community-0.0.2-py3-none-any.whl", hash = "sha256:2af62f7917db26a83b4ca6a46f6fc9d65c6358256cbb516375d89817b9437493"}, + {file = "langchain_community-0.0.2.tar.gz", hash = "sha256:178fb0005c9438a945cabec7cadc89e6ca4eb99abd4cb310bc82618ac8215268"}, +] + +[package.dependencies] +aiohttp = ">=3.8.3,<4.0.0" +dataclasses-json = ">=0.5.7,<0.7" +langchain-core = ">=0.1,<0.2" +langsmith = ">=0.0.63,<0.1.0" +numpy = ">=1,<2" +PyYAML = ">=5.3" +requests = ">=2,<3" +SQLAlchemy = ">=1.4,<3" +tenacity = ">=8.1.0,<9.0.0" + +[package.extras] +cli = ["typer (>=0.9.0,<0.10.0)"] +extended-testing = ["aiosqlite (>=0.19.0,<0.20.0)", "aleph-alpha-client (>=2.15.0,<3.0.0)", "anthropic (>=0.3.11,<0.4.0)", "arxiv (>=1.4,<2.0)", "assemblyai (>=0.17.0,<0.18.0)", "atlassian-python-api (>=3.36.0,<4.0.0)", "beautifulsoup4 (>=4,<5)", "bibtexparser (>=1.4.0,<2.0.0)", "cassio (>=0.1.0,<0.2.0)", "chardet (>=5.1.0,<6.0.0)", "cohere (>=4,<5)", "dashvector (>=1.0.1,<2.0.0)", "databricks-vectorsearch (>=0.21,<0.22)", "datasets (>=2.15.0,<3.0.0)", "dgml-utils (>=0.3.0,<0.4.0)", "esprima (>=4.0.1,<5.0.0)", "faiss-cpu (>=1,<2)", "feedparser (>=6.0.10,<7.0.0)", "fireworks-ai (>=0.9.0,<0.10.0)", "geopandas (>=0.13.1,<0.14.0)", "gitpython (>=3.1.32,<4.0.0)", "google-cloud-documentai (>=2.20.1,<3.0.0)", "gql (>=3.4.1,<4.0.0)", "hologres-vector (>=0.0.6,<0.0.7)", "html2text (>=2020.1.16,<2021.0.0)", "javelin-sdk (>=0.1.8,<0.2.0)", "jinja2 (>=3,<4)", "jq (>=1.4.1,<2.0.0)", "jsonschema (>1)", "lxml (>=4.9.2,<5.0.0)", "markdownify (>=0.11.6,<0.12.0)", "motor (>=3.3.1,<4.0.0)", "msal (>=1.25.0,<2.0.0)", "mwparserfromhell (>=0.6.4,<0.7.0)", "mwxml (>=0.3.3,<0.4.0)", "newspaper3k (>=0.2.8,<0.3.0)", "numexpr (>=2.8.6,<3.0.0)", "openai (<2)", "openapi-pydantic (>=0.3.2,<0.4.0)", "pandas (>=2.0.1,<3.0.0)", "pdfminer-six (>=20221105,<20221106)", "pgvector (>=0.1.6,<0.2.0)", "praw (>=7.7.1,<8.0.0)", "psychicapi (>=0.8.0,<0.9.0)", "py-trello (>=0.19.0,<0.20.0)", "pymupdf (>=1.22.3,<2.0.0)", "pypdf (>=3.4.0,<4.0.0)", "pypdfium2 (>=4.10.0,<5.0.0)", "pyspark (>=3.4.0,<4.0.0)", "rank-bm25 (>=0.2.2,<0.3.0)", "rapidfuzz (>=3.1.1,<4.0.0)", "rapidocr-onnxruntime (>=1.3.2,<2.0.0)", "requests-toolbelt (>=1.0.0,<2.0.0)", "rspace_client (>=2.5.0,<3.0.0)", "scikit-learn (>=1.2.2,<2.0.0)", "sqlite-vss (>=0.1.2,<0.2.0)", "streamlit (>=1.18.0,<2.0.0)", "sympy (>=1.12,<2.0)", "telethon (>=1.28.5,<2.0.0)", "timescale-vector (>=0.0.1,<0.0.2)", "tqdm (>=4.48.0)", "upstash-redis (>=0.15.0,<0.16.0)", "xata (>=1.0.0a7,<2.0.0)", "xmltodict (>=0.13.0,<0.14.0)"] + [[package]] name = "langchain-core" -version = "0.0.9" +version = "0.1.0" description = "Building applications with LLMs through composability" optional = false python-versions = ">=3.8.1,<4.0" files = [ - {file = "langchain_core-0.0.9-py3-none-any.whl", hash = "sha256:ce5dcf05804cdc4edf0b06d6691cb3dd4ed0014ed9cc08d02bd2b1691344c137"}, - {file = "langchain_core-0.0.9.tar.gz", hash = "sha256:d3ba6e30ed57ba2a3cbe227daad81fc4edf29cd3d3e24b418782ba69b07cb07d"}, + {file = "langchain_core-0.1.0-py3-none-any.whl", hash = "sha256:6b155a175e1f1555860b22333c14161c652b0013e229e7b8a083639c821312a8"}, + {file = "langchain_core-0.1.0.tar.gz", hash = "sha256:4c70aa62905896b65c47a966f87584f72026cbe402655749281df81c794e0d6e"}, ] [package.dependencies] +anyio = ">=3,<5" jsonpatch = ">=1.33,<2.0" langsmith = ">=0.0.63,<0.1.0" +packaging = ">=23.2,<24.0" pydantic = ">=1,<3" +PyYAML = ">=5.3" +requests = ">=2,<3" tenacity = ">=8.1.0,<9.0.0" +[package.extras] +extended-testing = ["jinja2 (>=3,<4)"] + [[package]] name = "langsmith" version = "0.0.69" @@ -1987,13 +2020,13 @@ test = ["flaky", "ipykernel", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "p [[package]] name = "nbconvert" -version = "7.11.0" +version = "7.12.0" description = "Converting Jupyter Notebooks" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.11.0-py3-none-any.whl", hash = "sha256:d1d417b7f34a4e38887f8da5bdfd12372adf3b80f995d57556cb0972c68909fe"}, - {file = "nbconvert-7.11.0.tar.gz", hash = "sha256:abedc01cf543177ffde0bfc2a69726d5a478f6af10a332fc1bf29fcb4f0cf000"}, + {file = "nbconvert-7.12.0-py3-none-any.whl", hash = "sha256:5b6c848194d270cc55fb691169202620d7b52a12fec259508d142ecbe4219310"}, + {file = "nbconvert-7.12.0.tar.gz", hash = "sha256:b1564bd89f69a74cd6398b0362da94db07aafb991b7857216a766204a71612c0"}, ] [package.dependencies] @@ -2220,8 +2253,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2278,13 +2311,13 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] @@ -2325,13 +2358,13 @@ files = [ [[package]] name = "platformdirs" -version = "4.0.0" +version = "4.1.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-4.0.0-py3-none-any.whl", hash = "sha256:118c954d7e949b35437270383a3f2531e99dd93cf7ce4dc8340d3356d30f173b"}, - {file = "platformdirs-4.0.0.tar.gz", hash = "sha256:cb633b2bcf10c51af60beb0ab06d2f1d69064b43abf4c185ca6b28865f3f9731"}, + {file = "platformdirs-4.1.0-py3-none-any.whl", hash = "sha256:11c8f37bcca40db96d8144522d925583bdb7a31f7b0e37e3ed4318400a8e2380"}, + {file = "platformdirs-4.1.0.tar.gz", hash = "sha256:906d548203468492d432bcb294d4bc2fff751bf84971fbb2c10918cc206ee420"}, ] [package.extras] @@ -2373,13 +2406,13 @@ virtualenv = ">=20.10.0" [[package]] name = "prompt-toolkit" -version = "3.0.41" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.41-py3-none-any.whl", hash = "sha256:f36fe301fafb7470e86aaf90f036eef600a3210be4decf461a5b1ca8403d3cb2"}, - {file = "prompt_toolkit-3.0.41.tar.gz", hash = "sha256:941367d97fc815548822aa26c2a269fdc4eb21e9ec05fc5d447cf09bad5d75f0"}, + {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, + {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, ] [package.dependencies] @@ -2804,104 +2837,104 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.1" +version = "25.1.2" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, - {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, - {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, - {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, - {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, - {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, - {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, - {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, - {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, - {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, - {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, - {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, + {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, + {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, + {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, + {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, + {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, + {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, + {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, + {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, + {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, + {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, + {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, + {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, ] [package.dependencies] @@ -2926,13 +2959,13 @@ dev = ["pytest"] [[package]] name = "referencing" -version = "0.31.1" +version = "0.32.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.31.1-py3-none-any.whl", hash = "sha256:c19c4d006f1757e3dd75c4f784d38f8698d87b649c54f9ace14e5e8c9667c01d"}, - {file = "referencing-0.31.1.tar.gz", hash = "sha256:81a1471c68c9d5e3831c30ad1dd9815c45b558e596653db751a2bfdd17b3b9ec"}, + {file = "referencing-0.32.0-py3-none-any.whl", hash = "sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99"}, + {file = "referencing-0.32.0.tar.gz", hash = "sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161"}, ] [package.dependencies] @@ -3189,28 +3222,28 @@ test = ["flake8 (==3.7.9)", "mock (==2.0.0)", "pylint (==2.8.0)"] [[package]] name = "ruff" -version = "0.1.6" +version = "0.1.7" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.1.6-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:88b8cdf6abf98130991cbc9f6438f35f6e8d41a02622cc5ee130a02a0ed28703"}, - {file = "ruff-0.1.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:5c549ed437680b6105a1299d2cd30e4964211606eeb48a0ff7a93ef70b902248"}, - {file = "ruff-0.1.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cf5f701062e294f2167e66d11b092bba7af6a057668ed618a9253e1e90cfd76"}, - {file = "ruff-0.1.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:05991ee20d4ac4bb78385360c684e4b417edd971030ab12a4fbd075ff535050e"}, - {file = "ruff-0.1.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87455a0c1f739b3c069e2f4c43b66479a54dea0276dd5d4d67b091265f6fd1dc"}, - {file = "ruff-0.1.6-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:683aa5bdda5a48cb8266fcde8eea2a6af4e5700a392c56ea5fb5f0d4bfdc0240"}, - {file = "ruff-0.1.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:137852105586dcbf80c1717facb6781555c4e99f520c9c827bd414fac67ddfb6"}, - {file = "ruff-0.1.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd98138a98d48a1c36c394fd6b84cd943ac92a08278aa8ac8c0fdefcf7138f35"}, - {file = "ruff-0.1.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a0cd909d25f227ac5c36d4e7e681577275fb74ba3b11d288aff7ec47e3ae745"}, - {file = "ruff-0.1.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e8fd1c62a47aa88a02707b5dd20c5ff20d035d634aa74826b42a1da77861b5ff"}, - {file = "ruff-0.1.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:fd89b45d374935829134a082617954120d7a1470a9f0ec0e7f3ead983edc48cc"}, - {file = "ruff-0.1.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:491262006e92f825b145cd1e52948073c56560243b55fb3b4ecb142f6f0e9543"}, - {file = "ruff-0.1.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:ea284789861b8b5ca9d5443591a92a397ac183d4351882ab52f6296b4fdd5462"}, - {file = "ruff-0.1.6-py3-none-win32.whl", hash = "sha256:1610e14750826dfc207ccbcdd7331b6bd285607d4181df9c1c6ae26646d6848a"}, - {file = "ruff-0.1.6-py3-none-win_amd64.whl", hash = "sha256:4558b3e178145491e9bc3b2ee3c4b42f19d19384eaa5c59d10acf6e8f8b57e33"}, - {file = "ruff-0.1.6-py3-none-win_arm64.whl", hash = "sha256:03910e81df0d8db0e30050725a5802441c2022ea3ae4fe0609b76081731accbc"}, - {file = "ruff-0.1.6.tar.gz", hash = "sha256:1b09f29b16c6ead5ea6b097ef2764b42372aebe363722f1605ecbcd2b9207184"}, + {file = "ruff-0.1.7-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7f80496854fdc65b6659c271d2c26e90d4d401e6a4a31908e7e334fab4645aac"}, + {file = "ruff-0.1.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:1ea109bdb23c2a4413f397ebd8ac32cb498bee234d4191ae1a310af760e5d287"}, + {file = "ruff-0.1.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b0c2de9dd9daf5e07624c24add25c3a490dbf74b0e9bca4145c632457b3b42a"}, + {file = "ruff-0.1.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:69a4bed13bc1d5dabf3902522b5a2aadfebe28226c6269694283c3b0cecb45fd"}, + {file = "ruff-0.1.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de02ca331f2143195a712983a57137c5ec0f10acc4aa81f7c1f86519e52b92a1"}, + {file = "ruff-0.1.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:45b38c3f8788a65e6a2cab02e0f7adfa88872696839d9882c13b7e2f35d64c5f"}, + {file = "ruff-0.1.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c64cb67b2025b1ac6d58e5ffca8f7b3f7fd921f35e78198411237e4f0db8e73"}, + {file = "ruff-0.1.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dcc6bb2f4df59cb5b4b40ff14be7d57012179d69c6565c1da0d1f013d29951b"}, + {file = "ruff-0.1.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df2bb4bb6bbe921f6b4f5b6fdd8d8468c940731cb9406f274ae8c5ed7a78c478"}, + {file = "ruff-0.1.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:276a89bcb149b3d8c1b11d91aa81898fe698900ed553a08129b38d9d6570e717"}, + {file = "ruff-0.1.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:90c958fe950735041f1c80d21b42184f1072cc3975d05e736e8d66fc377119ea"}, + {file = "ruff-0.1.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6b05e3b123f93bb4146a761b7a7d57af8cb7384ccb2502d29d736eaade0db519"}, + {file = "ruff-0.1.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:290ecab680dce94affebefe0bbca2322a6277e83d4f29234627e0f8f6b4fa9ce"}, + {file = "ruff-0.1.7-py3-none-win32.whl", hash = "sha256:416dfd0bd45d1a2baa3b1b07b1b9758e7d993c256d3e51dc6e03a5e7901c7d80"}, + {file = "ruff-0.1.7-py3-none-win_amd64.whl", hash = "sha256:4af95fd1d3b001fc41325064336db36e3d27d2004cdb6d21fd617d45a172dd96"}, + {file = "ruff-0.1.7-py3-none-win_arm64.whl", hash = "sha256:0683b7bfbb95e6df3c7c04fe9d78f631f8e8ba4868dfc932d43d690698057e2e"}, + {file = "ruff-0.1.7.tar.gz", hash = "sha256:dffd699d07abf54833e5f6cc50b85a6ff043715da8788c4a79bcd4ab4734d306"}, ] [[package]] @@ -3995,13 +4028,13 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. [[package]] name = "typing-extensions" -version = "4.8.0" +version = "4.9.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, - {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] @@ -4169,101 +4202,101 @@ files = [ [[package]] name = "yarl" -version = "1.9.3" +version = "1.9.4" description = "Yet another URL library" optional = false python-versions = ">=3.7" files = [ - {file = "yarl-1.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32435d134414e01d937cd9d6cc56e8413a8d4741dea36af5840c7750f04d16ab"}, - {file = "yarl-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9a5211de242754b5e612557bca701f39f8b1a9408dff73c6db623f22d20f470e"}, - {file = "yarl-1.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:525cd69eff44833b01f8ef39aa33a9cc53a99ff7f9d76a6ef6a9fb758f54d0ff"}, - {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc94441bcf9cb8c59f51f23193316afefbf3ff858460cb47b5758bf66a14d130"}, - {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e36021db54b8a0475805acc1d6c4bca5d9f52c3825ad29ae2d398a9d530ddb88"}, - {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0f17d1df951336a02afc8270c03c0c6e60d1f9996fcbd43a4ce6be81de0bd9d"}, - {file = "yarl-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5f3faeb8100a43adf3e7925d556801d14b5816a0ac9e75e22948e787feec642"}, - {file = "yarl-1.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aed37db837ecb5962469fad448aaae0f0ee94ffce2062cf2eb9aed13328b5196"}, - {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:721ee3fc292f0d069a04016ef2c3a25595d48c5b8ddc6029be46f6158d129c92"}, - {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b8bc5b87a65a4e64bc83385c05145ea901b613d0d3a434d434b55511b6ab0067"}, - {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:dd952b9c64f3b21aedd09b8fe958e4931864dba69926d8a90c90d36ac4e28c9a"}, - {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:c405d482c320a88ab53dcbd98d6d6f32ada074f2d965d6e9bf2d823158fa97de"}, - {file = "yarl-1.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9df9a0d4c5624790a0dea2e02e3b1b3c69aed14bcb8650e19606d9df3719e87d"}, - {file = "yarl-1.9.3-cp310-cp310-win32.whl", hash = "sha256:d34c4f80956227f2686ddea5b3585e109c2733e2d4ef12eb1b8b4e84f09a2ab6"}, - {file = "yarl-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:cf7a4e8de7f1092829caef66fd90eaf3710bc5efd322a816d5677b7664893c93"}, - {file = "yarl-1.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d61a0ca95503867d4d627517bcfdc28a8468c3f1b0b06c626f30dd759d3999fd"}, - {file = "yarl-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73cc83f918b69110813a7d95024266072d987b903a623ecae673d1e71579d566"}, - {file = "yarl-1.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d81657b23e0edb84b37167e98aefb04ae16cbc5352770057893bd222cdc6e45f"}, - {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26a1a8443091c7fbc17b84a0d9f38de34b8423b459fb853e6c8cdfab0eacf613"}, - {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fe34befb8c765b8ce562f0200afda3578f8abb159c76de3ab354c80b72244c41"}, - {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c757f64afe53a422e45e3e399e1e3cf82b7a2f244796ce80d8ca53e16a49b9f"}, - {file = "yarl-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72a57b41a0920b9a220125081c1e191b88a4cdec13bf9d0649e382a822705c65"}, - {file = "yarl-1.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:632c7aeb99df718765adf58eacb9acb9cbc555e075da849c1378ef4d18bf536a"}, - {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b0b8c06afcf2bac5a50b37f64efbde978b7f9dc88842ce9729c020dc71fae4ce"}, - {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1d93461e2cf76c4796355494f15ffcb50a3c198cc2d601ad8d6a96219a10c363"}, - {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4003f380dac50328c85e85416aca6985536812c082387255c35292cb4b41707e"}, - {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4d6d74a97e898c1c2df80339aa423234ad9ea2052f66366cef1e80448798c13d"}, - {file = "yarl-1.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b61e64b06c3640feab73fa4ff9cb64bd8182de52e5dc13038e01cfe674ebc321"}, - {file = "yarl-1.9.3-cp311-cp311-win32.whl", hash = "sha256:29beac86f33d6c7ab1d79bd0213aa7aed2d2f555386856bb3056d5fdd9dab279"}, - {file = "yarl-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:f7271d6bd8838c49ba8ae647fc06469137e1c161a7ef97d778b72904d9b68696"}, - {file = "yarl-1.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:dd318e6b75ca80bff0b22b302f83a8ee41c62b8ac662ddb49f67ec97e799885d"}, - {file = "yarl-1.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c4b1efb11a8acd13246ffb0bee888dd0e8eb057f8bf30112e3e21e421eb82d4a"}, - {file = "yarl-1.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c6f034386e5550b5dc8ded90b5e2ff7db21f0f5c7de37b6efc5dac046eb19c10"}, - {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd49a908cb6d387fc26acee8b7d9fcc9bbf8e1aca890c0b2fdfd706057546080"}, - {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa4643635f26052401750bd54db911b6342eb1a9ac3e74f0f8b58a25d61dfe41"}, - {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e741bd48e6a417bdfbae02e088f60018286d6c141639359fb8df017a3b69415a"}, - {file = "yarl-1.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c86d0d0919952d05df880a1889a4f0aeb6868e98961c090e335671dea5c0361"}, - {file = "yarl-1.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d5434b34100b504aabae75f0622ebb85defffe7b64ad8f52b8b30ec6ef6e4b9"}, - {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79e1df60f7c2b148722fb6cafebffe1acd95fd8b5fd77795f56247edaf326752"}, - {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:44e91a669c43f03964f672c5a234ae0d7a4d49c9b85d1baa93dec28afa28ffbd"}, - {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:3cfa4dbe17b2e6fca1414e9c3bcc216f6930cb18ea7646e7d0d52792ac196808"}, - {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:88d2c3cc4b2f46d1ba73d81c51ec0e486f59cc51165ea4f789677f91a303a9a7"}, - {file = "yarl-1.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cccdc02e46d2bd7cb5f38f8cc3d9db0d24951abd082b2f242c9e9f59c0ab2af3"}, - {file = "yarl-1.9.3-cp312-cp312-win32.whl", hash = "sha256:96758e56dceb8a70f8a5cff1e452daaeff07d1cc9f11e9b0c951330f0a2396a7"}, - {file = "yarl-1.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:c4472fe53ebf541113e533971bd8c32728debc4c6d8cc177f2bff31d011ec17e"}, - {file = "yarl-1.9.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:126638ab961633f0940a06e1c9d59919003ef212a15869708dcb7305f91a6732"}, - {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c99ddaddb2fbe04953b84d1651149a0d85214780e4d0ee824e610ab549d98d92"}, - {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8dab30b21bd6fb17c3f4684868c7e6a9e8468078db00f599fb1c14e324b10fca"}, - {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:828235a2a169160ee73a2fcfb8a000709edf09d7511fccf203465c3d5acc59e4"}, - {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc391e3941045fd0987c77484b2799adffd08e4b6735c4ee5f054366a2e1551d"}, - {file = "yarl-1.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51382c72dd5377861b573bd55dcf680df54cea84147c8648b15ac507fbef984d"}, - {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:28a108cb92ce6cf867690a962372996ca332d8cda0210c5ad487fe996e76b8bb"}, - {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:8f18a7832ff85dfcd77871fe677b169b1bc60c021978c90c3bb14f727596e0ae"}, - {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:7eaf13af79950142ab2bbb8362f8d8d935be9aaf8df1df89c86c3231e4ff238a"}, - {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:66a6dbf6ca7d2db03cc61cafe1ee6be838ce0fbc97781881a22a58a7c5efef42"}, - {file = "yarl-1.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a0a4f3aaa18580038cfa52a7183c8ffbbe7d727fe581300817efc1e96d1b0e9"}, - {file = "yarl-1.9.3-cp37-cp37m-win32.whl", hash = "sha256:946db4511b2d815979d733ac6a961f47e20a29c297be0d55b6d4b77ee4b298f6"}, - {file = "yarl-1.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:2dad8166d41ebd1f76ce107cf6a31e39801aee3844a54a90af23278b072f1ccf"}, - {file = "yarl-1.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bb72d2a94481e7dc7a0c522673db288f31849800d6ce2435317376a345728225"}, - {file = "yarl-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9a172c3d5447b7da1680a1a2d6ecdf6f87a319d21d52729f45ec938a7006d5d8"}, - {file = "yarl-1.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2dc72e891672343b99db6d497024bf8b985537ad6c393359dc5227ef653b2f17"}, - {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8d51817cf4b8d545963ec65ff06c1b92e5765aa98831678d0e2240b6e9fd281"}, - {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:53ec65f7eee8655bebb1f6f1607760d123c3c115a324b443df4f916383482a67"}, - {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cfd77e8e5cafba3fb584e0f4b935a59216f352b73d4987be3af51f43a862c403"}, - {file = "yarl-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e73db54c967eb75037c178a54445c5a4e7461b5203b27c45ef656a81787c0c1b"}, - {file = "yarl-1.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09c19e5f4404574fcfb736efecf75844ffe8610606f3fccc35a1515b8b6712c4"}, - {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6280353940f7e5e2efaaabd686193e61351e966cc02f401761c4d87f48c89ea4"}, - {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c25ec06e4241e162f5d1f57c370f4078797ade95c9208bd0c60f484834f09c96"}, - {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:7217234b10c64b52cc39a8d82550342ae2e45be34f5bff02b890b8c452eb48d7"}, - {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4ce77d289f8d40905c054b63f29851ecbfd026ef4ba5c371a158cfe6f623663e"}, - {file = "yarl-1.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5f74b015c99a5eac5ae589de27a1201418a5d9d460e89ccb3366015c6153e60a"}, - {file = "yarl-1.9.3-cp38-cp38-win32.whl", hash = "sha256:8a2538806be846ea25e90c28786136932ec385c7ff3bc1148e45125984783dc6"}, - {file = "yarl-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:6465d36381af057d0fab4e0f24ef0e80ba61f03fe43e6eeccbe0056e74aadc70"}, - {file = "yarl-1.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2f3c8822bc8fb4a347a192dd6a28a25d7f0ea3262e826d7d4ef9cc99cd06d07e"}, - {file = "yarl-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7831566595fe88ba17ea80e4b61c0eb599f84c85acaa14bf04dd90319a45b90"}, - {file = "yarl-1.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ff34cb09a332832d1cf38acd0f604c068665192c6107a439a92abfd8acf90fe2"}, - {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe8080b4f25dfc44a86bedd14bc4f9d469dfc6456e6f3c5d9077e81a5fedfba7"}, - {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8535e111a064f3bdd94c0ed443105934d6f005adad68dd13ce50a488a0ad1bf3"}, - {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d155a092bf0ebf4a9f6f3b7a650dc5d9a5bbb585ef83a52ed36ba46f55cc39d"}, - {file = "yarl-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:778df71c8d0c8c9f1b378624b26431ca80041660d7be7c3f724b2c7a6e65d0d6"}, - {file = "yarl-1.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9f9cafaf031c34d95c1528c16b2fa07b710e6056b3c4e2e34e9317072da5d1a"}, - {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ca6b66f69e30f6e180d52f14d91ac854b8119553b524e0e28d5291a724f0f423"}, - {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e0e7e83f31e23c5d00ff618045ddc5e916f9e613d33c5a5823bc0b0a0feb522f"}, - {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:af52725c7c39b0ee655befbbab5b9a1b209e01bb39128dce0db226a10014aacc"}, - {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0ab5baaea8450f4a3e241ef17e3d129b2143e38a685036b075976b9c415ea3eb"}, - {file = "yarl-1.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d350388ba1129bc867c6af1cd17da2b197dff0d2801036d2d7d83c2d771a682"}, - {file = "yarl-1.9.3-cp39-cp39-win32.whl", hash = "sha256:e2a16ef5fa2382af83bef4a18c1b3bcb4284c4732906aa69422cf09df9c59f1f"}, - {file = "yarl-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:d92d897cb4b4bf915fbeb5e604c7911021a8456f0964f3b8ebbe7f9188b9eabb"}, - {file = "yarl-1.9.3-py3-none-any.whl", hash = "sha256:271d63396460b6607b588555ea27a1a02b717ca2e3f2cf53bdde4013d7790929"}, - {file = "yarl-1.9.3.tar.gz", hash = "sha256:4a14907b597ec55740f63e52d7fee0e9ee09d5b9d57a4f399a7423268e457b57"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, + {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, + {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, + {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, + {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, + {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, + {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, + {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, + {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, + {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, + {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, + {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, + {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, + {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, + {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, + {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, ] [package.dependencies] @@ -4293,4 +4326,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = ">=3.8.1,<3.12" -content-hash = "432774471521775bf8e6a68187db83303055726a4ae19429f180d8325744f8c1" +content-hash = "09b9572cae5eed0782f5c490a7989ec574fc8405dc8bd63fbcc34403faf067ec" diff --git a/pyproject.toml b/pyproject.toml index 3de9393585..87474d6538 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,8 +58,11 @@ sphinx-copybutton = ">=0.5.1" markdown-include = ">=0.6.0" sphinx_copybutton = ">=0.5.2" +[tool.poetry.group.experimental] +optional = true + [tool.poetry.group.experimental.dependencies] -llama-index = ">=0.8.49" +llama-index = ">=0.8" rank-bm25 = ">=0.2.2" tree_sitter_languages = ">=1.8.0" From d966846c80b95421189bb5ac69ff6810bbe77687 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Wed, 13 Dec 2023 14:18:41 +0100 Subject: [PATCH 10/13] Commenting out test relying on optional dependencies --- tests/tools/test_code_vector_repository.py | 322 ++++++++++----------- 1 file changed, 161 insertions(+), 161 deletions(-) diff --git a/tests/tools/test_code_vector_repository.py b/tests/tools/test_code_vector_repository.py index c2254c11e1..dc35ad816c 100644 --- a/tests/tools/test_code_vector_repository.py +++ b/tests/tools/test_code_vector_repository.py @@ -1,161 +1,161 @@ -import example_snake_files -import pytest - -from llama_index import Document - -from gpt_engineer.tools.experimental.code_vector_repository import CodeVectorRepository - - -def mock_load_documents_from_directory(self, directory_name): - nonCodeDoc = Document() - nonCodeDoc.set_content( - "example non code file which currently isnt loaded into the vector store" - ) - nonCodeDoc.metadata["filename"] = "README.md" - - if directory_name == "python": - doc1 = Document() - doc1.set_content(example_snake_files.PYTHON) - doc1.metadata["filename"] = "src/snake_game.py" - - if directory_name == "web": - doc1 = Document() - doc1.set_content(example_snake_files.HTML) - doc1.metadata["filename"] = "src/index.html" - - doc2 = Document() - doc2.set_content(example_snake_files.CSS) - doc2.metadata["filename"] = "src/styles.css" - - doc3 = Document() - doc3.set_content(example_snake_files.JAVASCRIPT) - doc3.metadata["filename"] = "src/script.js" - - return [doc1, doc2, doc3, nonCodeDoc] - - if directory_name == "java": - doc1 = Document() - doc1.set_content(example_snake_files.JAVA) - doc1.metadata["filename"] = "src/snake_game.java" - - if directory_name == "c#": - doc1 = Document() - doc1.set_content(example_snake_files.C_SHARP) - doc1.metadata["filename"] = "src/snake_game.cs" - - if directory_name == "typescript": - doc1 = Document() - doc1.set_content(example_snake_files.TYPESCRIPT) - doc1.metadata["filename"] = "src/snake_game.ts" - - if directory_name == "ruby": - doc1 = Document() - doc1.set_content(example_snake_files.RUBY) - doc1.metadata["filename"] = "src/snake_game.rb" - - if directory_name == "php": - doc1 = Document() - doc1.set_content(example_snake_files.PHP) - doc1.metadata["filename"] = "src/snake_game.php" - - if directory_name == "go": - doc1 = Document() - doc1.set_content(example_snake_files.GO) - doc1.metadata["filename"] = "src/main.go" - - if directory_name == "kotlin": - doc1 = Document() - doc1.set_content(example_snake_files.KOTLIN) - doc1.metadata["filename"] = "src/main/kotlin/SnakeGame.kt" - - if directory_name == "rust": - doc1 = Document() - doc1.set_content(example_snake_files.RUST) - doc1.metadata["filename"] = "src/main.rs" - - if directory_name == "c++": - doc1 = Document() - doc1.set_content(example_snake_files.C_PLUS_PLUS) - doc1.metadata["filename"] = "src/main.cpp" - - # c is supported, however it does not pass this test - # if directory_name == "c": - # doc1 = Document() - # doc1.set_content(example_snake_files.C) - # doc1.metadata["filename"] = "main.c" - - # Swift not currently supported - # if directory_name == "swift": - # doc1 = Document() - # doc1.set_content(example_snake_files.SWIFT) - # doc1.metadata["filename"] = "src/main.swift" - - return [doc1, nonCodeDoc] - - -@pytest.mark.skip( - reason="this test makes queries to an LLM as part of creating the vector store so requires an open ai api key. Todo: run the vector store with llm=None so this can run without an LLM" -) -@pytest.mark.parametrize( - "language", - [ - "python", - "web", - "java", - "c#", - "typescript", - "ruby", - "php", - "go", - "kotlin", - "rust", - "c++", - ], -) # ToDo: add Swift, C and other languages -def test_load_and_retrieve(monkeypatch, language): - # arrange - monkeypatch.setattr( - CodeVectorRepository, - "_load_documents_from_directory", - mock_load_documents_from_directory, - ) - - repository = CodeVectorRepository() - repository.load_from_directory(language) - - # act - document_chunks = repository.relevent_code_chunks( - "Invert the controlls so pressing the up moves the snake down, and pressing down moves the snake up.", - llm=None, - ) - - # assert - assert document_chunks.__len__() == 2 # set to return 2 documents - - assert ( - "up" in document_chunks[0].text.lower() - ) # code should include section that sets directions - assert "down" in document_chunks[0].text.lower() - - -@pytest.mark.skip( - reason="this test makes queries to an LLM so requires an open ai api key" -) -def test_load_and_query_python(monkeypatch): - # arrange - monkeypatch.setattr( - CodeVectorRepository, - "_load_documents_from_directory", - mock_load_documents_from_directory, - ) - - repository = CodeVectorRepository() - repository.load_from_directory("python") - - # act - response = repository.query( - "How would I invert the direction arrows so up moves the snake down, and down moves the snake up? " - ) - - # assert - assert "Controller" in str(response) +# import example_snake_files +# import pytest +# +# from llama_index import Document +# +# from gpt_engineer.tools.experimental.code_vector_repository import CodeVectorRepository +# +# +# def mock_load_documents_from_directory(self, directory_name): +# nonCodeDoc = Document() +# nonCodeDoc.set_content( +# "example non code file which currently isnt loaded into the vector store" +# ) +# nonCodeDoc.metadata["filename"] = "README.md" +# +# if directory_name == "python": +# doc1 = Document() +# doc1.set_content(example_snake_files.PYTHON) +# doc1.metadata["filename"] = "src/snake_game.py" +# +# if directory_name == "web": +# doc1 = Document() +# doc1.set_content(example_snake_files.HTML) +# doc1.metadata["filename"] = "src/index.html" +# +# doc2 = Document() +# doc2.set_content(example_snake_files.CSS) +# doc2.metadata["filename"] = "src/styles.css" +# +# doc3 = Document() +# doc3.set_content(example_snake_files.JAVASCRIPT) +# doc3.metadata["filename"] = "src/script.js" +# +# return [doc1, doc2, doc3, nonCodeDoc] +# +# if directory_name == "java": +# doc1 = Document() +# doc1.set_content(example_snake_files.JAVA) +# doc1.metadata["filename"] = "src/snake_game.java" +# +# if directory_name == "c#": +# doc1 = Document() +# doc1.set_content(example_snake_files.C_SHARP) +# doc1.metadata["filename"] = "src/snake_game.cs" +# +# if directory_name == "typescript": +# doc1 = Document() +# doc1.set_content(example_snake_files.TYPESCRIPT) +# doc1.metadata["filename"] = "src/snake_game.ts" +# +# if directory_name == "ruby": +# doc1 = Document() +# doc1.set_content(example_snake_files.RUBY) +# doc1.metadata["filename"] = "src/snake_game.rb" +# +# if directory_name == "php": +# doc1 = Document() +# doc1.set_content(example_snake_files.PHP) +# doc1.metadata["filename"] = "src/snake_game.php" +# +# if directory_name == "go": +# doc1 = Document() +# doc1.set_content(example_snake_files.GO) +# doc1.metadata["filename"] = "src/main.go" +# +# if directory_name == "kotlin": +# doc1 = Document() +# doc1.set_content(example_snake_files.KOTLIN) +# doc1.metadata["filename"] = "src/main/kotlin/SnakeGame.kt" +# +# if directory_name == "rust": +# doc1 = Document() +# doc1.set_content(example_snake_files.RUST) +# doc1.metadata["filename"] = "src/main.rs" +# +# if directory_name == "c++": +# doc1 = Document() +# doc1.set_content(example_snake_files.C_PLUS_PLUS) +# doc1.metadata["filename"] = "src/main.cpp" +# +# # c is supported, however it does not pass this test +# # if directory_name == "c": +# # doc1 = Document() +# # doc1.set_content(example_snake_files.C) +# # doc1.metadata["filename"] = "main.c" +# +# # Swift not currently supported +# # if directory_name == "swift": +# # doc1 = Document() +# # doc1.set_content(example_snake_files.SWIFT) +# # doc1.metadata["filename"] = "src/main.swift" +# +# return [doc1, nonCodeDoc] +# +# +# @pytest.mark.skip( +# reason="this test makes queries to an LLM as part of creating the vector store so requires an open ai api key. Todo: run the vector store with llm=None so this can run without an LLM" +# ) +# @pytest.mark.parametrize( +# "language", +# [ +# "python", +# "web", +# "java", +# "c#", +# "typescript", +# "ruby", +# "php", +# "go", +# "kotlin", +# "rust", +# "c++", +# ], +# ) # ToDo: add Swift, C and other languages +# def test_load_and_retrieve(monkeypatch, language): +# # arrange +# monkeypatch.setattr( +# CodeVectorRepository, +# "_load_documents_from_directory", +# mock_load_documents_from_directory, +# ) +# +# repository = CodeVectorRepository() +# repository.load_from_directory(language) +# +# # act +# document_chunks = repository.relevent_code_chunks( +# "Invert the controlls so pressing the up moves the snake down, and pressing down moves the snake up.", +# llm=None, +# ) +# +# # assert +# assert document_chunks.__len__() == 2 # set to return 2 documents +# +# assert ( +# "up" in document_chunks[0].text.lower() +# ) # code should include section that sets directions +# assert "down" in document_chunks[0].text.lower() +# +# +# @pytest.mark.skip( +# reason="this test makes queries to an LLM so requires an open ai api key" +# ) +# def test_load_and_query_python(monkeypatch): +# # arrange +# monkeypatch.setattr( +# CodeVectorRepository, +# "_load_documents_from_directory", +# mock_load_documents_from_directory, +# ) +# +# repository = CodeVectorRepository() +# repository.load_from_directory("python") +# +# # act +# response = repository.query( +# "How would I invert the direction arrows so up moves the snake down, and down moves the snake up? " +# ) +# +# # assert +# assert "Controller" in str(response) From 004e855abd0e94f9dc739afa88bc2c523be6670d Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Wed, 13 Dec 2023 14:19:07 +0100 Subject: [PATCH 11/13] Main now working without the optional dependencies --- gpt_engineer/applications/cli/main.py | 28 +++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/gpt_engineer/applications/cli/main.py b/gpt_engineer/applications/cli/main.py index a39223d497..46400ed873 100644 --- a/gpt_engineer/applications/cli/main.py +++ b/gpt_engineer/applications/cli/main.py @@ -29,10 +29,10 @@ import os from pathlib import Path - +from importlib.util import find_spec import openai import typer - +import toml from dotenv import load_dotenv from gpt_engineer.applications.cli.cli_agent import CliAgent @@ -46,8 +46,16 @@ from gpt_engineer.core.default.steps import execute_entrypoint, gen_code, improve from gpt_engineer.core.preprompts_holder import PrepromptsHolder from gpt_engineer.tools.custom_steps import clarified_gen, lite_gen, self_heal -from gpt_engineer.tools.experimental.experimental_steps import ( - improve_automatic_file_selection, + + +# Load the names of the optional dependencies from the pyprojecct file and determine whether +# they can be imported +with open("pyproject.toml", "r") as file: + pyproject = toml.load(file) + +dependency_group = pyproject["tool"]["poetry"]["group"]["experimental"]["dependencies"] +optional_deps_importable = all( + [find_spec(dep_name.replace("-", "_")) is not None for dep_name in dependency_group] ) app = typer.Typer() # creates a CLI app @@ -103,7 +111,7 @@ def main( ), improve_all_mode: bool = typer.Option( False, - "--improve_all_experimental", + "--improve-all-experimental", help="Improve files_dict from existing project, without manually choosing which files to improve, using vector store (EXPERIMENTAL).", ), lite_mode: bool = typer.Option( @@ -183,8 +191,16 @@ def main( else: execution_fn = execute_entrypoint - if improve_all_mode: + if improve_all_mode and optional_deps_importable: + from gpt_engineer.tools.experimental.experimental_steps import ( + improve_automatic_file_selection, + ) + improve_fn = improve_automatic_file_selection + elif improve_all_mode: + raise ImportError( + "The experimental improve_all_mode is selected, but the optional dependencies to use it are not installed. Please run 'poetry install --with experimental'" + ) else: improve_fn = improve From 0a9716d68821e8402510ed414a72e618c47df2e5 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Wed, 13 Dec 2023 14:22:22 +0100 Subject: [PATCH 12/13] bumping version again to re-release with changes --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 87474d6538..0046ceaf31 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "gpt-engineer" -version = "0.2.1" +version = "0.2.2" description = "Specify what you want it to build, the AI asks for clarification, and then builds it." authors = ["Anton Osika "] license = "MIT" From ec35094684868c857c845fee078803b12c232478 Mon Sep 17 00:00:00 2001 From: Axel Theorell Date: Wed, 13 Dec 2023 14:29:47 +0100 Subject: [PATCH 13/13] ruff formatting --- gpt_engineer/applications/cli/main.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gpt_engineer/applications/cli/main.py b/gpt_engineer/applications/cli/main.py index 46400ed873..f0c10235bd 100644 --- a/gpt_engineer/applications/cli/main.py +++ b/gpt_engineer/applications/cli/main.py @@ -28,11 +28,13 @@ import logging import os -from pathlib import Path from importlib.util import find_spec +from pathlib import Path + import openai -import typer import toml +import typer + from dotenv import load_dotenv from gpt_engineer.applications.cli.cli_agent import CliAgent @@ -47,7 +49,6 @@ from gpt_engineer.core.preprompts_holder import PrepromptsHolder from gpt_engineer.tools.custom_steps import clarified_gen, lite_gen, self_heal - # Load the names of the optional dependencies from the pyprojecct file and determine whether # they can be imported with open("pyproject.toml", "r") as file: