From 9a73ef2df4568e95d914c10e665d2549fba712e5 Mon Sep 17 00:00:00 2001 From: Josh Bradley Date: Sat, 25 Jan 2025 04:07:53 -0500 Subject: [PATCH] convert app to proper python package --- backend/{src => graphrag_app}/__init__.py | 0 backend/{src => graphrag_app}/api/__init__.py | 0 backend/{src => graphrag_app}/api/data.py | 8 +- backend/{src => graphrag_app}/api/graph.py | 6 +- backend/{src => graphrag_app}/api/index.py | 12 +- .../api/prompt_tuning.py | 6 +- backend/{src => graphrag_app}/api/query.py | 12 +- .../api/query_streaming.py | 14 +- backend/{src => graphrag_app}/api/source.py | 6 +- .../config/index-cronjob-manager.yaml} | 1 + .../{ => graphrag_app/config}/index-job.yaml | 0 .../config}/manage-indexing-jobs.py | 16 +- .../{src => graphrag_app}/logger/__init__.py | 10 +- ...application_insights_workflow_callbacks.py | 0 .../logger/blob_workflow_callbacks.py | 0 .../logger/console_workflow_callbacks.py | 0 .../logger/load_logger.py | 10 +- .../logger/pipeline_job_updater.py | 4 +- .../{src => graphrag_app}/logger/typing.py | 0 backend/{src => graphrag_app}/main.py | 22 ++- .../typing}/__init__.py | 0 .../{src => graphrag_app}/typing/models.py | 0 .../{src => graphrag_app}/typing/pipeline.py | 0 .../{src => graphrag_app}/utils/__init__.py | 0 .../utils/azure_clients.py | 0 backend/{src => graphrag_app}/utils/common.py | 2 +- .../{src => graphrag_app}/utils/pipeline.py | 6 +- backend/poetry.lock | 184 +++++++++--------- backend/pyproject.toml | 7 +- backend/src/typing/__init__.py | 0 backend/tests/conftest.py | 4 +- backend/tests/integration/test_api_source.py | 2 +- .../tests/integration/test_utils_pipeline.py | 6 +- backend/tests/unit/test_azure_clients.py | 2 +- backend/tests/unit/test_common.py | 8 +- backend/tests/unit/test_load_logger.py | 8 +- .../test_logger_app_insights_callbacks.py | 6 +- .../tests/unit/test_logger_blob_callbacks.py | 6 +- .../unit/test_logger_console_callbacks.py | 6 +- backend/{src/indexer => tools}/indexer.py | 11 +- backend/{src/indexer => tools}/settings.yaml | 0 docker/Dockerfile-backend | 3 +- 42 files changed, 195 insertions(+), 193 deletions(-) rename backend/{src => graphrag_app}/__init__.py (100%) rename backend/{src => graphrag_app}/api/__init__.py (100%) rename backend/{src => graphrag_app}/api/data.py (96%) rename backend/{src => graphrag_app}/api/graph.py (90%) rename backend/{src => graphrag_app}/api/index.py (96%) rename backend/{src => graphrag_app}/api/prompt_tuning.py (93%) rename backend/{src => graphrag_app}/api/query.py (98%) rename backend/{src => graphrag_app}/api/query_streaming.py (97%) rename backend/{src => graphrag_app}/api/source.py (98%) rename backend/{index-job-manager.yaml => graphrag_app/config/index-cronjob-manager.yaml} (95%) rename backend/{ => graphrag_app/config}/index-job.yaml (100%) rename backend/{ => graphrag_app/config}/manage-indexing-jobs.py (92%) rename backend/{src => graphrag_app}/logger/__init__.py (56%) rename backend/{src => graphrag_app}/logger/application_insights_workflow_callbacks.py (100%) rename backend/{src => graphrag_app}/logger/blob_workflow_callbacks.py (100%) rename backend/{src => graphrag_app}/logger/console_workflow_callbacks.py (100%) rename backend/{src => graphrag_app}/logger/load_logger.py (89%) rename backend/{src => graphrag_app}/logger/pipeline_job_updater.py (92%) rename backend/{src => graphrag_app}/logger/typing.py (100%) rename backend/{src => graphrag_app}/main.py (88%) rename backend/{src/indexer => graphrag_app/typing}/__init__.py (100%) rename backend/{src => graphrag_app}/typing/models.py (100%) rename backend/{src => graphrag_app}/typing/pipeline.py (100%) rename backend/{src => graphrag_app}/utils/__init__.py (100%) rename backend/{src => graphrag_app}/utils/azure_clients.py (100%) rename backend/{src => graphrag_app}/utils/common.py (99%) rename backend/{src => graphrag_app}/utils/pipeline.py (98%) delete mode 100644 backend/src/typing/__init__.py rename backend/{src/indexer => tools}/indexer.py (96%) rename backend/{src/indexer => tools}/settings.yaml (100%) diff --git a/backend/src/__init__.py b/backend/graphrag_app/__init__.py similarity index 100% rename from backend/src/__init__.py rename to backend/graphrag_app/__init__.py diff --git a/backend/src/api/__init__.py b/backend/graphrag_app/api/__init__.py similarity index 100% rename from backend/src/api/__init__.py rename to backend/graphrag_app/api/__init__.py diff --git a/backend/src/api/data.py b/backend/graphrag_app/api/data.py similarity index 96% rename from backend/src/api/data.py rename to backend/graphrag_app/api/data.py index f5d7386..93f9245 100644 --- a/backend/src/api/data.py +++ b/backend/graphrag_app/api/data.py @@ -13,13 +13,13 @@ from fastapi import ( UploadFile, ) -from src.logger.load_logger import load_pipeline_logger -from src.typing.models import ( +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.typing.models import ( BaseResponse, StorageNameList, ) -from src.utils.azure_clients import AzureClientManager -from src.utils.common import ( +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import ( delete_blob_container, delete_cosmos_container_item, sanitize_name, diff --git a/backend/src/api/graph.py b/backend/graphrag_app/api/graph.py similarity index 90% rename from backend/src/api/graph.py rename to backend/graphrag_app/api/graph.py index e53c5bc..b0a7c16 100644 --- a/backend/src/api/graph.py +++ b/backend/graphrag_app/api/graph.py @@ -7,9 +7,9 @@ from fastapi import ( ) from fastapi.responses import StreamingResponse -from src.logger.load_logger import load_pipeline_logger -from src.utils.azure_clients import AzureClientManager -from src.utils.common import ( +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import ( sanitize_name, validate_index_file_exist, ) diff --git a/backend/src/api/index.py b/backend/graphrag_app/api/index.py similarity index 96% rename from backend/src/api/index.py rename to backend/graphrag_app/api/index.py index 341486e..b66493a 100644 --- a/backend/src/api/index.py +++ b/backend/graphrag_app/api/index.py @@ -18,20 +18,20 @@ from kubernetes import ( config as kubernetes_config, ) -from src.logger.load_logger import load_pipeline_logger -from src.typing.models import ( +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.typing.models import ( BaseResponse, IndexNameList, IndexStatusResponse, ) -from src.typing.pipeline import PipelineJobState -from src.utils.azure_clients import AzureClientManager -from src.utils.common import ( +from graphrag_app.typing.pipeline import PipelineJobState +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import ( delete_blob_container, sanitize_name, validate_blob_container_name, ) -from src.utils.pipeline import PipelineJob +from graphrag_app.utils.pipeline import PipelineJob index_route = APIRouter( prefix="/index", diff --git a/backend/src/api/prompt_tuning.py b/backend/graphrag_app/api/prompt_tuning.py similarity index 93% rename from backend/src/api/prompt_tuning.py rename to backend/graphrag_app/api/prompt_tuning.py index 0187fd2..a15fe66 100644 --- a/backend/src/api/prompt_tuning.py +++ b/backend/graphrag_app/api/prompt_tuning.py @@ -13,9 +13,9 @@ from fastapi import ( ) from graphrag.config.create_graphrag_config import create_graphrag_config -from src.logger.load_logger import load_pipeline_logger -from src.utils.azure_clients import AzureClientManager -from src.utils.common import sanitize_name +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import sanitize_name prompt_tuning_route = APIRouter(prefix="/index/config", tags=["Index Configuration"]) diff --git a/backend/src/api/query.py b/backend/graphrag_app/api/query.py similarity index 98% rename from backend/src/api/query.py rename to backend/graphrag_app/api/query.py index e45356a..7fdeff0 100644 --- a/backend/src/api/query.py +++ b/backend/graphrag_app/api/query.py @@ -25,19 +25,19 @@ from graphrag.vector_stores.base import ( VectorStoreSearchResult, ) -from src.logger.load_logger import load_pipeline_logger -from src.typing.models import ( +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.typing.models import ( GraphRequest, GraphResponse, ) -from src.typing.pipeline import PipelineJobState -from src.utils.azure_clients import AzureClientManager -from src.utils.common import ( +from graphrag_app.typing.pipeline import PipelineJobState +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import ( get_df, sanitize_name, validate_index_file_exist, ) -from src.utils.pipeline import PipelineJob +from graphrag_app.utils.pipeline import PipelineJob query_route = APIRouter( prefix="/query", diff --git a/backend/src/api/query_streaming.py b/backend/graphrag_app/api/query_streaming.py similarity index 97% rename from backend/src/api/query_streaming.py rename to backend/graphrag_app/api/query_streaming.py index 8ed5346..a3abe7c 100644 --- a/backend/src/api/query_streaming.py +++ b/backend/graphrag_app/api/query_streaming.py @@ -21,11 +21,11 @@ from graphrag.api.query import ( ) from graphrag.config import create_graphrag_config -from src.api.query import _is_index_complete -from src.logger.load_logger import load_pipeline_logger -from src.typing.models import GraphRequest -from src.utils.azure_clients import AzureClientManager -from src.utils.common import ( +from graphrag_app.api.query import _is_index_complete +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.typing.models import GraphRequest +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import ( get_df, sanitize_name, validate_index_file_exist, @@ -45,7 +45,7 @@ query_streaming_route = APIRouter( description="The global query method generates answers by searching over all AI-generated community reports in a map-reduce fashion. This is a resource-intensive method, but often gives good responses for questions that require an understanding of the dataset as a whole.", ) async def global_search_streaming(request: GraphRequest): - # this is a slightly modified version of src.api.query.global_query() method + # this is a slightly modified version of graphrag_app.api.query.global_query() method if isinstance(request.index_name, str): index_names = [request.index_name] else: @@ -202,7 +202,7 @@ async def global_search_streaming(request: GraphRequest): description="The local query method generates answers by combining relevant data from the AI-extracted knowledge-graph with text chunks of the raw documents. This method is suitable for questions that require an understanding of specific entities mentioned in the documents (e.g. What are the healing properties of chamomile?).", ) async def local_search_streaming(request: GraphRequest): - # this is a slightly modified version of src.api.query.local_query() method + # this is a slightly modified version of graphrag_app.api.query.local_query() method if isinstance(request.index_name, str): index_names = [request.index_name] else: diff --git a/backend/src/api/source.py b/backend/graphrag_app/api/source.py similarity index 98% rename from backend/src/api/source.py rename to backend/graphrag_app/api/source.py index fc8782b..543e716 100644 --- a/backend/src/api/source.py +++ b/backend/graphrag_app/api/source.py @@ -5,15 +5,15 @@ import pandas as pd from fastapi import APIRouter, HTTPException -from src.logger.load_logger import load_pipeline_logger -from src.typing.models import ( +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.typing.models import ( ClaimResponse, EntityResponse, RelationshipResponse, ReportResponse, TextUnitResponse, ) -from src.utils.common import ( +from graphrag_app.utils.common import ( pandas_storage_options, sanitize_name, validate_index_file_exist, diff --git a/backend/index-job-manager.yaml b/backend/graphrag_app/config/index-cronjob-manager.yaml similarity index 95% rename from backend/index-job-manager.yaml rename to backend/graphrag_app/config/index-cronjob-manager.yaml index a444606..2c08976 100644 --- a/backend/index-job-manager.yaml +++ b/backend/graphrag_app/config/index-cronjob-manager.yaml @@ -22,6 +22,7 @@ spec: containers: - name: index-job-manager image: PLACEHOLDER + workingDir: /backend/graphrag_app/config imagePullPolicy: Always resources: requests: diff --git a/backend/index-job.yaml b/backend/graphrag_app/config/index-job.yaml similarity index 100% rename from backend/index-job.yaml rename to backend/graphrag_app/config/index-job.yaml diff --git a/backend/manage-indexing-jobs.py b/backend/graphrag_app/config/manage-indexing-jobs.py similarity index 92% rename from backend/manage-indexing-jobs.py rename to backend/graphrag_app/config/manage-indexing-jobs.py index e1d98c5..4643d41 100644 --- a/backend/manage-indexing-jobs.py +++ b/backend/graphrag_app/config/manage-indexing-jobs.py @@ -9,6 +9,7 @@ to schedule graphrag indexing jobs on a first-come-first-serve basis (based on e """ import os +from pathlib import Path import pandas as pd import yaml @@ -17,11 +18,11 @@ from kubernetes import ( config, ) -from src.logger.load_logger import load_pipeline_logger -from src.typing.pipeline import PipelineJobState -from src.utils.azure_clients import AzureClientManager -from src.utils.common import sanitize_name -from src.utils.pipeline import PipelineJob +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.typing.pipeline import PipelineJobState +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import sanitize_name +from graphrag_app.utils.pipeline import PipelineJob def schedule_indexing_job(index_name: str): @@ -68,14 +69,15 @@ def _generate_aks_job_manifest( The manifest must be valid YAML with certain values replaced by the provided arguments. """ # NOTE: this file location is relative to the WORKDIR set in Dockerfile-backend - with open("index-job.yaml", "r") as f: + SCRIPT_DIR = Path(__file__).resolve().parent + with (SCRIPT_DIR / "config/index-job.yaml").open("r") as f: manifest = yaml.safe_load(f) manifest["metadata"]["name"] = f"indexing-job-{sanitize_name(index_name)}" manifest["spec"]["template"]["spec"]["serviceAccountName"] = service_account_name manifest["spec"]["template"]["spec"]["containers"][0]["image"] = docker_image_name manifest["spec"]["template"]["spec"]["containers"][0]["command"] = [ "python", - "src/indexer/indexer.py", + "tools/indexer.py", f"-i={index_name}", ] return manifest diff --git a/backend/src/logger/__init__.py b/backend/graphrag_app/logger/__init__.py similarity index 56% rename from backend/src/logger/__init__.py rename to backend/graphrag_app/logger/__init__.py index b9676a2..5f1cc6d 100644 --- a/backend/src/logger/__init__.py +++ b/backend/graphrag_app/logger/__init__.py @@ -1,13 +1,13 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. -from src.logger.application_insights_workflow_callbacks import ( +from graphrag_app.logger.application_insights_workflow_callbacks import ( ApplicationInsightsWorkflowCallbacks, ) -from src.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks -from src.logger.load_logger import load_pipeline_logger -from src.logger.pipeline_job_updater import PipelineJobUpdater -from src.logger.typing import ( +from graphrag_app.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.logger.pipeline_job_updater import PipelineJobUpdater +from graphrag_app.logger.typing import ( Logger, PipelineAppInsightsReportingConfig, PipelineReportingConfigTypes, diff --git a/backend/src/logger/application_insights_workflow_callbacks.py b/backend/graphrag_app/logger/application_insights_workflow_callbacks.py similarity index 100% rename from backend/src/logger/application_insights_workflow_callbacks.py rename to backend/graphrag_app/logger/application_insights_workflow_callbacks.py diff --git a/backend/src/logger/blob_workflow_callbacks.py b/backend/graphrag_app/logger/blob_workflow_callbacks.py similarity index 100% rename from backend/src/logger/blob_workflow_callbacks.py rename to backend/graphrag_app/logger/blob_workflow_callbacks.py diff --git a/backend/src/logger/console_workflow_callbacks.py b/backend/graphrag_app/logger/console_workflow_callbacks.py similarity index 100% rename from backend/src/logger/console_workflow_callbacks.py rename to backend/graphrag_app/logger/console_workflow_callbacks.py diff --git a/backend/src/logger/load_logger.py b/backend/graphrag_app/logger/load_logger.py similarity index 89% rename from backend/src/logger/load_logger.py rename to backend/graphrag_app/logger/load_logger.py index 97479bb..eea0a34 100644 --- a/backend/src/logger/load_logger.py +++ b/backend/graphrag_app/logger/load_logger.py @@ -9,13 +9,13 @@ from graphrag.callbacks.file_workflow_callbacks import FileWorkflowCallbacks from graphrag.callbacks.workflow_callbacks import WorkflowCallbacks from graphrag.callbacks.workflow_callbacks_manager import WorkflowCallbacksManager -from src.logger.application_insights_workflow_callbacks import ( +from graphrag_app.logger.application_insights_workflow_callbacks import ( ApplicationInsightsWorkflowCallbacks, ) -from src.logger.blob_workflow_callbacks import BlobWorkflowCallbacks -from src.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks -from src.logger.typing import Logger -from src.utils.azure_clients import AzureClientManager +from graphrag_app.logger.blob_workflow_callbacks import BlobWorkflowCallbacks +from graphrag_app.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks +from graphrag_app.logger.typing import Logger +from graphrag_app.utils.azure_clients import AzureClientManager def load_pipeline_logger( diff --git a/backend/src/logger/pipeline_job_updater.py b/backend/graphrag_app/logger/pipeline_job_updater.py similarity index 92% rename from backend/src/logger/pipeline_job_updater.py rename to backend/graphrag_app/logger/pipeline_job_updater.py index 93c1da3..2605ce4 100644 --- a/backend/src/logger/pipeline_job_updater.py +++ b/backend/graphrag_app/logger/pipeline_job_updater.py @@ -3,8 +3,8 @@ from graphrag.callbacks.noop_workflow_callbacks import NoopWorkflowCallbacks -from src.typing.pipeline import PipelineJobState -from src.utils.pipeline import PipelineJob +from graphrag_app.typing.pipeline import PipelineJobState +from graphrag_app.utils.pipeline import PipelineJob class PipelineJobUpdater(NoopWorkflowCallbacks): diff --git a/backend/src/logger/typing.py b/backend/graphrag_app/logger/typing.py similarity index 100% rename from backend/src/logger/typing.py rename to backend/graphrag_app/logger/typing.py diff --git a/backend/src/main.py b/backend/graphrag_app/main.py similarity index 88% rename from backend/src/main.py rename to backend/graphrag_app/main.py index 68fae76..41a7571 100644 --- a/backend/src/main.py +++ b/backend/graphrag_app/main.py @@ -4,6 +4,7 @@ import os import traceback from contextlib import asynccontextmanager +from pathlib import Path import yaml from azure.cosmos import PartitionKey, ThroughputProperties @@ -20,15 +21,15 @@ from kubernetes import ( config, ) -from src.api.data import data_route -from src.api.graph import graph_route -from src.api.index import index_route -from src.api.prompt_tuning import prompt_tuning_route -from src.api.query import query_route -from src.api.query_streaming import query_streaming_route -from src.api.source import source_route -from src.logger.load_logger import load_pipeline_logger -from src.utils.azure_clients import AzureClientManager +from graphrag_app.api.data import data_route +from graphrag_app.api.graph import graph_route +from graphrag_app.api.index import index_route +from graphrag_app.api.prompt_tuning import prompt_tuning_route +from graphrag_app.api.query import query_route +from graphrag_app.api.query_streaming import query_streaming_route +from graphrag_app.api.source import source_route +from graphrag_app.logger.load_logger import load_pipeline_logger +from graphrag_app.utils.azure_clients import AzureClientManager async def catch_all_exceptions_middleware(request: Request, call_next): @@ -91,7 +92,8 @@ async def lifespan(app: FastAPI): name=pod_name, namespace=os.environ["AKS_NAMESPACE"] ) # load the cronjob manifest template and update PLACEHOLDER values with correct values using the pod spec - with open("index-job-manager.yaml", "r") as f: + SCRIPT_DIR = Path(__file__).resolve().parent + with (SCRIPT_DIR / "config/index-cronjob-manager.yaml").open("r") as f: manifest = yaml.safe_load(f) manifest["spec"]["jobTemplate"]["spec"]["template"]["spec"]["containers"][0][ "image" diff --git a/backend/src/indexer/__init__.py b/backend/graphrag_app/typing/__init__.py similarity index 100% rename from backend/src/indexer/__init__.py rename to backend/graphrag_app/typing/__init__.py diff --git a/backend/src/typing/models.py b/backend/graphrag_app/typing/models.py similarity index 100% rename from backend/src/typing/models.py rename to backend/graphrag_app/typing/models.py diff --git a/backend/src/typing/pipeline.py b/backend/graphrag_app/typing/pipeline.py similarity index 100% rename from backend/src/typing/pipeline.py rename to backend/graphrag_app/typing/pipeline.py diff --git a/backend/src/utils/__init__.py b/backend/graphrag_app/utils/__init__.py similarity index 100% rename from backend/src/utils/__init__.py rename to backend/graphrag_app/utils/__init__.py diff --git a/backend/src/utils/azure_clients.py b/backend/graphrag_app/utils/azure_clients.py similarity index 100% rename from backend/src/utils/azure_clients.py rename to backend/graphrag_app/utils/azure_clients.py diff --git a/backend/src/utils/common.py b/backend/graphrag_app/utils/common.py similarity index 99% rename from backend/src/utils/common.py rename to backend/graphrag_app/utils/common.py index 926a096..2b5759e 100644 --- a/backend/src/utils/common.py +++ b/backend/graphrag_app/utils/common.py @@ -10,7 +10,7 @@ from azure.cosmos import exceptions from azure.identity import DefaultAzureCredential from fastapi import HTTPException -from src.utils.azure_clients import AzureClientManager +from graphrag_app.utils.azure_clients import AzureClientManager def get_df( diff --git a/backend/src/utils/pipeline.py b/backend/graphrag_app/utils/pipeline.py similarity index 98% rename from backend/src/utils/pipeline.py rename to backend/graphrag_app/utils/pipeline.py index 225f344..06a6e6c 100644 --- a/backend/src/utils/pipeline.py +++ b/backend/graphrag_app/utils/pipeline.py @@ -8,9 +8,9 @@ from typing import ( from azure.cosmos.exceptions import CosmosHttpResponseError -from src.typing.pipeline import PipelineJobState -from src.utils.azure_clients import AzureClientManager -from src.utils.common import sanitize_name +from graphrag_app.typing.pipeline import PipelineJobState +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import sanitize_name @dataclass diff --git a/backend/poetry.lock b/backend/poetry.lock index de8613f..cee14b0 100644 --- a/backend/poetry.lock +++ b/backend/poetry.lock @@ -1276,20 +1276,20 @@ files = [ [[package]] name = "deprecated" -version = "1.2.15" +version = "1.2.17" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"}, - {file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"}, + {file = "Deprecated-1.2.17-py2.py3-none-any.whl", hash = "sha256:69cdc0a751671183f569495e2efb14baee4344b0236342eec29f1fde25d61818"}, + {file = "deprecated-1.2.17.tar.gz", hash = "sha256:0114a10f0bbb750b90b2c2296c90cf7e9eaeb0abb5cf06c80de2c60138de0a82"}, ] [package.dependencies] wrapt = ">=1.10,<2" [package.extras] -dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "jinja2 (>=3.0.3,<3.1.0)", "setuptools", "sphinx (<2)", "tox"] +dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "setuptools", "tox"] [[package]] name = "deprecation" @@ -1613,61 +1613,61 @@ openai = ["openai (>=1.35.12)", "tiktoken (>=0.7.0)"] [[package]] name = "fonttools" -version = "4.55.4" +version = "4.55.6" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.55.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b332ea7b7f5f3d99f9bc5a28a23c3824ae72711abf7c4e1d62fa21699fdebe7"}, - {file = "fonttools-4.55.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d8f925909256e62152e7c3e192655dbca3ab8c3cdef7d7b436732727e80feb6"}, - {file = "fonttools-4.55.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a58af9b98e39bcd773aa352b4512be79b472830b799cb1d3cafb2b4796b71cd"}, - {file = "fonttools-4.55.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:736d750d2ab4523067d8058e5294b40b01f2eee521e0fd401bec0d5e21e80b12"}, - {file = "fonttools-4.55.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1a9a2e7e8a9d3bfa9589db3e6c4e4c127fec252493924b2f87a67a25f9430057"}, - {file = "fonttools-4.55.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:87824368e994af34a95cb4279a8c711e51974b3c28d052d39d768531cc9e8e59"}, - {file = "fonttools-4.55.4-cp310-cp310-win32.whl", hash = "sha256:6c36dcbfe64bce38c4d4f1d436cdc6445e969eee96eb98d98be603b5abf8c3f2"}, - {file = "fonttools-4.55.4-cp310-cp310-win_amd64.whl", hash = "sha256:3c53a467e5cf629acdbefc98b0f554859539fb6447bbeae4117b9ab51464ccc5"}, - {file = "fonttools-4.55.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1605b28165c785bf26c2cbd205dc0822463e3f9f56f187049eb214dc5f4a59cb"}, - {file = "fonttools-4.55.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d851d8b2fdb676507365d1430c3285d62c4039d0d7760d8cf2f2e5ea3aa19d73"}, - {file = "fonttools-4.55.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fb3cf1cddf08cec0338f238f950cb76fabab23a324a579e3e1f9b2ef2578329"}, - {file = "fonttools-4.55.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddd3208b06186ca00fbd329c0d0fed5ba209c99017cc46e2c4ea42233c2fbd00"}, - {file = "fonttools-4.55.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9bd98819cb585a894dda9dcb337afeb2601abf17da17de7bfbfc1bc2e4a062c7"}, - {file = "fonttools-4.55.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4877376c10541e8dccf14876c8476d5082338fa5d21103894894382cc245144b"}, - {file = "fonttools-4.55.4-cp311-cp311-win32.whl", hash = "sha256:3a5e466894ec6d8a009b0eb8e02a6eb26959a318d5b7a906280c26bdadce6423"}, - {file = "fonttools-4.55.4-cp311-cp311-win_amd64.whl", hash = "sha256:f595129e6f9c6402965d6295fe8c18c1945d27af0f90bdb52ff426226e647afc"}, - {file = "fonttools-4.55.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b3db72ad2d26a0e9ec694cbfb4485a8da9c095d29f66561cf935dbd19f3efcea"}, - {file = "fonttools-4.55.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87717808fd5953588c3ffaf512e8cab0e43c09c1da04e42ba87fa4c07d8170c7"}, - {file = "fonttools-4.55.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f49dac626ad5bc1a0147b88e6157e3211fd440d00007f0da6c9e5f91dd5cb88e"}, - {file = "fonttools-4.55.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2d0ac8656ada8b604ae5da15d9aa075232f2181b95b51a3a2a55195222df7e7"}, - {file = "fonttools-4.55.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:013c8b45873fa77a4ff6d25e43fecf1046cb7e8c6b32f1843117f98f3f8eac60"}, - {file = "fonttools-4.55.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:94caad375d254a0332926512f06791f5e66c24a913ebecd6178b14f61d27c62f"}, - {file = "fonttools-4.55.4-cp312-cp312-win32.whl", hash = "sha256:cb3eb4bf3a0c4e431e1ccab7a33ef4f1bb32657133fff4a61dc4fcbd54b94d29"}, - {file = "fonttools-4.55.4-cp312-cp312-win_amd64.whl", hash = "sha256:6914269f6ff6b20c6b5a9b19d0b752880bd8ee218d9a7d6afe9960bbf1922d98"}, - {file = "fonttools-4.55.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:699dd32da7258a89939567a3d71b3f8decf84da54488a2526693f0d981a76479"}, - {file = "fonttools-4.55.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f374b18ac04fbf78f20940418aee7882be3cdcb328ded80e16c3356499f64cf"}, - {file = "fonttools-4.55.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b18792529ca3c24259090b6faa60bd0bdfcc4a06312e8f06d6fccab007f07193"}, - {file = "fonttools-4.55.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e91d25261ebc9ff2143b95e6272f46b9f28e260b8f40feda07c80b66ff7e61d"}, - {file = "fonttools-4.55.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2695781a897395d03504fd24b60c944726b5e7b7af9ea3d922f7319d70c6fc37"}, - {file = "fonttools-4.55.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21de3ef5b8e5361fd01d6aef2c09dda4ede139d6b3a1f5cf621d6bea48840dfd"}, - {file = "fonttools-4.55.4-cp313-cp313-win32.whl", hash = "sha256:0ef33fda14e39aabb892a18ed16805b0b5b4e8a801fd1815a694be9dc7f30024"}, - {file = "fonttools-4.55.4-cp313-cp313-win_amd64.whl", hash = "sha256:e953b1614e32b6da828ae7659c8f330a593b6c4b7a4a31f8f63c01b12f0d3680"}, - {file = "fonttools-4.55.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e2d1bbcaf8ca8c60fbb029982197fbaa487559d5380f1c3098882c5ceb4311c7"}, - {file = "fonttools-4.55.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a885593dbcbfc250ff17831f7dc9316e95c3d046e6cd7ff7ab52ebf673bbf978"}, - {file = "fonttools-4.55.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02cd4ad9b3ab9f9c5b233b3bb6a96a036c9c0ef17487805b5e73cedf6439d188"}, - {file = "fonttools-4.55.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:822d46676f794bb6cac055b43f5636792e2a360e18cf0f3a0333c21d79ec0f2d"}, - {file = "fonttools-4.55.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:7b195440fe14d8601053a51e06e13c94f725bf9f964611be99dc3cb65497ce8e"}, - {file = "fonttools-4.55.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a0e0a0ec8cc4b8f82f9cf4efa26774dbd93433ba51b8f9bd2b214bf36c5638f6"}, - {file = "fonttools-4.55.4-cp38-cp38-win32.whl", hash = "sha256:ca7e6047fbc995500e0b7459a04d5b92cafd7730b636d5f83334cd7eefdf95c7"}, - {file = "fonttools-4.55.4-cp38-cp38-win_amd64.whl", hash = "sha256:0185983fcf49ae7a826cedc6f64d68b0434a5b7905d89e75bc95fced7fe118c1"}, - {file = "fonttools-4.55.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:dcc08dcb2be554073a72f3a8cecbc4226602ccdd0187b8f37a03a731cb931864"}, - {file = "fonttools-4.55.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7b9b414ce50f09cb692e97ff82b041ea1a21076ed9c1923206560c15ce9ad03a"}, - {file = "fonttools-4.55.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807a1357d434ef1f4aed9bdfee7077f52dbc040b18ac98f6e417f69a48afbb5"}, - {file = "fonttools-4.55.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a3ec7cba2e71edbc999ce3d48d34ef87cc30a36af6ff90dfc0dbc131f705fc"}, - {file = "fonttools-4.55.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2964b9fe6b4a892a41a8a517bac232072a821cf2288fad1d19c6c1d19c34b0dd"}, - {file = "fonttools-4.55.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0b9f4f032295adeb39a8c0eefb08a7b1e90f4b7571506e5d84bb923a7afa8247"}, - {file = "fonttools-4.55.4-cp39-cp39-win32.whl", hash = "sha256:ee4e86280dc637a17e926cbdd32c2de148c013c3468777ae6e94c8b4449c8e93"}, - {file = "fonttools-4.55.4-cp39-cp39-win_amd64.whl", hash = "sha256:82a03920f0f524abab375dcfac8926d9596986503ee00ae435bdd71b1498f214"}, - {file = "fonttools-4.55.4-py3-none-any.whl", hash = "sha256:d07ad8f31038c6394a0945752458313367a0ef8125d284ee59f99e68393a3c2d"}, - {file = "fonttools-4.55.4.tar.gz", hash = "sha256:9598af0af85073659facbe9612fcc56b071ef2f26e3819ebf9bd8c5d35f958c5"}, + {file = "fonttools-4.55.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:57d55fc965e5dd20c8a60d880e0f43bafb506be87af0b650bdc42591e41e0d0d"}, + {file = "fonttools-4.55.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:127999618afe3a2490fad54bab0650c5fbeab1f8109bdc0205f6ad34306deb8b"}, + {file = "fonttools-4.55.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3226d40cb92787e09dcc3730f54b3779dfe56bdfea624e263685ba17a6faac4"}, + {file = "fonttools-4.55.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e82772f70b84e17aa36e9f236feb2a4f73cb686ec1e162557a36cf759d1acd58"}, + {file = "fonttools-4.55.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a632f85bd73e002b771bcbcdc512038fa5d2e09bb18c03a22fb8d400ea492ddf"}, + {file = "fonttools-4.55.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:791e0cf862cdd3a252df395f1bb5f65e3a760f1da3c7ce184d0f7998c266614d"}, + {file = "fonttools-4.55.6-cp310-cp310-win32.whl", hash = "sha256:94f7f2c5c5f3a6422e954ecb6d37cc363e27d6f94050a7ed3f79f12157af6bb2"}, + {file = "fonttools-4.55.6-cp310-cp310-win_amd64.whl", hash = "sha256:2d15e02b93a46982a8513a208e8f89148bca8297640527365625be56151687d0"}, + {file = "fonttools-4.55.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0879f99eabbf2171dfadd9c8c75cec2b7b3aa9cd1f3955dd799c69d60a5189ef"}, + {file = "fonttools-4.55.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d77d83ca77a4c3156a2f4cbc7f09f5a8503795da658fa255b987ad433a191266"}, + {file = "fonttools-4.55.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07478132407736ee5e54f9f534e73923ae28e9bb6dba17764a35e3caf7d7fea3"}, + {file = "fonttools-4.55.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c06fbc2fd76b9bab03eddfd8aa9fb7c0981d314d780e763c80aa76be1c9982"}, + {file = "fonttools-4.55.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:09ed667c4753e1270994e5398cce8703e6423c41702a55b08f843b2907b1be65"}, + {file = "fonttools-4.55.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0ee6ed68af8d57764d69da099db163aaf37d62ba246cfd42f27590e3e6724b55"}, + {file = "fonttools-4.55.6-cp311-cp311-win32.whl", hash = "sha256:9f99e7876518b2d059a9cc67c506168aebf9c71ac8d81006d75e684222f291d2"}, + {file = "fonttools-4.55.6-cp311-cp311-win_amd64.whl", hash = "sha256:3aa6c684007723895aade9b2fe76d07008c9dc90fd1ef6c310b3ca9c8566729f"}, + {file = "fonttools-4.55.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:51120695ee13001533e50abd40eec32c01b9c6f44c5567db38a7acd3eedcd19d"}, + {file = "fonttools-4.55.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:76ac5a595f86892b49ba86ba2e46185adc76328ce6eff0583b30e5c3ab02a914"}, + {file = "fonttools-4.55.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7535a5ac386e549e2b00b34c59b53f805e2423000676723b6867df3c10df04"}, + {file = "fonttools-4.55.6-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c42009177d3690894288082d5e3dac6bdc9f5d38e25054535e341a19cf5183a4"}, + {file = "fonttools-4.55.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:88f74bc19dbab3dee6a00ca67ca54bb4793e44ff0c4dcf1fa61d68651ae3fa0a"}, + {file = "fonttools-4.55.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bc6f58976ffc19fe1630119a2736153b66151d023c6f30065f31c9e8baed1303"}, + {file = "fonttools-4.55.6-cp312-cp312-win32.whl", hash = "sha256:4259159715142c10b0f4d121ef14da3fa6eafc719289d9efa4b20c15e57fef82"}, + {file = "fonttools-4.55.6-cp312-cp312-win_amd64.whl", hash = "sha256:d91fce2e9a87cc0db9f8042281b6458f99854df810cfefab2baf6ab2acc0f4b4"}, + {file = "fonttools-4.55.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9394813cc73fa22c5413ec1c5745c0a16f68dd2b890f7c55eaba5cb40187ed55"}, + {file = "fonttools-4.55.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ac817559a7d245454231374e194b4e457dca6fefa5b52af466ab0516e9a09c6e"}, + {file = "fonttools-4.55.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34405f1314f1e88b1877a9f9e497fe45190e8c4b29a6c7cd85ed7f666a57d702"}, + {file = "fonttools-4.55.6-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af5469bbf555047efd8752d85faeb2a3510916ddc6c50dd6fb168edf1677408f"}, + {file = "fonttools-4.55.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8a8004a19195eb8a8a13de69e26ec9ed60a5bc1fde336d0021b47995b368fac9"}, + {file = "fonttools-4.55.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:73a4aaf672e7b2265c6354a69cbbadf71b7f3133ecb74e98fec4c67c366698a3"}, + {file = "fonttools-4.55.6-cp313-cp313-win32.whl", hash = "sha256:73bdff9c44d36c57ea84766afc20517eda0c9bb1571b4a09876646264bd5ff3b"}, + {file = "fonttools-4.55.6-cp313-cp313-win_amd64.whl", hash = "sha256:132fa22be8a99784de8cb171b30425a581f04a40ec1c05183777fb2b1fe3bac9"}, + {file = "fonttools-4.55.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8398928acb8a57073606feb9a310682d4a7e2d7536f2c61719261f4c0974504c"}, + {file = "fonttools-4.55.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2f78ebfdef578d4db7c44bc207ac5f9a5c1f22c9db606460dcc8ad48e183338"}, + {file = "fonttools-4.55.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fb545f3a4ebada908fa717ec732277de18dd10161f03ee3b3144d34477804de"}, + {file = "fonttools-4.55.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1062daa0390b32bfd062ded2b450db9e9cf10e5a9919561c13f535e818b1952b"}, + {file = "fonttools-4.55.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:860ab9ed3f9e088d3bdb77b9074e656635f173b039e77d550b603cba052a0dca"}, + {file = "fonttools-4.55.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:03701e7de70c71eb5965cb200986b0c11dfa3cf8e843e4f517ee30a0f43f0a25"}, + {file = "fonttools-4.55.6-cp38-cp38-win32.whl", hash = "sha256:f66561fbfb75785d06513b8025a50be37bf970c3c413e87581cc6eff10bc78f1"}, + {file = "fonttools-4.55.6-cp38-cp38-win_amd64.whl", hash = "sha256:edf159a8f1e48dc4683a715b36da76dd2f82954b16bfe11a215d58e963d31cfc"}, + {file = "fonttools-4.55.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61aa1997c520bee4cde14ffabe81efc4708c500c8c81dce37831551627a2be56"}, + {file = "fonttools-4.55.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7954ea66a8d835f279c17d8474597a001ddd65a2c1ca97e223041bfbbe11f65e"}, + {file = "fonttools-4.55.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f4e88f15f5ed4d2e4bdfcc98540bb3987ae25904f9be304be9a604e7a7050a1"}, + {file = "fonttools-4.55.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d419483a6295e83cabddb56f1c7b7bfdc8169de2fcb5c68d622bd11140355f9"}, + {file = "fonttools-4.55.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:acc74884afddc2656bffc50100945ff407574538c152931c402fccddc46f0abc"}, + {file = "fonttools-4.55.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a55489c7e9d5ea69690a2afad06723c3d0c48c6d276a25391ea97cb31a16b37c"}, + {file = "fonttools-4.55.6-cp39-cp39-win32.whl", hash = "sha256:8c9de8d16d02ecc8b65e3f3d2d1e3002be2c4a3f094d580faf76d7f768bd45fe"}, + {file = "fonttools-4.55.6-cp39-cp39-win_amd64.whl", hash = "sha256:471961af7a4b8461fac0c8ee044b4986e6fe3746d4c83a1aacbdd85b4eb53f93"}, + {file = "fonttools-4.55.6-py3-none-any.whl", hash = "sha256:d20ab5a78d0536c26628eaadba661e7ae2427b1e5c748a0a510a44d914e1b155"}, + {file = "fonttools-4.55.6.tar.gz", hash = "sha256:1beb4647a0df5ceaea48015656525eb8081af226fe96554089fd3b274d239ef0"}, ] [package.extras] @@ -1989,15 +1989,15 @@ umap-learn = ">=0.5.6,<0.6.0" [[package]] name = "graspologic-native" -version = "1.2.1" +version = "1.2.3" description = "Python native companion module to the graspologic library" optional = false -python-versions = ">=3.6, <3.13" +python-versions = "<3.14,>=3.8" files = [ - {file = "graspologic_native-1.2.1-cp36-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:eccb2fa475b604375e34b4ae1d5497a428c34ed65f27888495239f8e120acea1"}, - {file = "graspologic_native-1.2.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44cfdee11718c01c0f6c544750b3ae64e28cc03432a620fe0295704bd0d618d"}, - {file = "graspologic_native-1.2.1-cp36-abi3-win_amd64.whl", hash = "sha256:56b5e66ba003fd38efc0919ce90fa22d379456e177dca65e26626498d2b9b96b"}, - {file = "graspologic_native-1.2.1.tar.gz", hash = "sha256:72b7586028a91e9fef9af0ef314d368f0240c18dca99e6e6c546334359a8610a"}, + {file = "graspologic_native-1.2.3-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:b2fe41f24fa826dc0c134c7e3c8781090c3056a0000e74ac927b34caca8b3c6b"}, + {file = "graspologic_native-1.2.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b25c75c31f7650905b75a7fe01f89bf8e89667bf6fcb1c733b0260599df2d00"}, + {file = "graspologic_native-1.2.3-cp38-abi3-win_amd64.whl", hash = "sha256:57ded2c8532878ff662888c0397f4909d70fdf0e98d808de707238c67857ab5c"}, + {file = "graspologic_native-1.2.3.tar.gz", hash = "sha256:7c059f7b580248abc3fee8828b9e97ac48ac9a9554fdeafaa35862871ac5113a"}, ] [[package]] @@ -2814,13 +2814,13 @@ files = [ [[package]] name = "kubernetes" -version = "31.0.0" +version = "32.0.0" description = "Kubernetes python client" optional = false python-versions = ">=3.6" files = [ - {file = "kubernetes-31.0.0-py2.py3-none-any.whl", hash = "sha256:bf141e2d380c8520eada8b351f4e319ffee9636328c137aa432bc486ca1200e1"}, - {file = "kubernetes-31.0.0.tar.gz", hash = "sha256:28945de906c8c259c1ebe62703b56a03b714049372196f854105afe4e6d014c0"}, + {file = "kubernetes-32.0.0-py2.py3-none-any.whl", hash = "sha256:60fd8c29e8e43d9c553ca4811895a687426717deba9c0a66fb2dcc3f5ef96692"}, + {file = "kubernetes-32.0.0.tar.gz", hash = "sha256:319fa840345a482001ac5d6062222daeb66ec4d1bcb3087402aed685adf0aecb"}, ] [package.dependencies] @@ -3561,13 +3561,13 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] [[package]] name = "openai" -version = "1.60.0" +version = "1.60.1" description = "The official Python library for the openai API" optional = false python-versions = ">=3.8" files = [ - {file = "openai-1.60.0-py3-none-any.whl", hash = "sha256:df06c43be8018274980ac363da07d4b417bd835ead1c66e14396f6f15a0d5dda"}, - {file = "openai-1.60.0.tar.gz", hash = "sha256:7fa536cd4b644718645b874d2706e36dbbef38b327e42ca0623275da347ee1a9"}, + {file = "openai-1.60.1-py3-none-any.whl", hash = "sha256:714181ec1c452353d456f143c22db892de7b373e3165063d02a2b798ed575ba1"}, + {file = "openai-1.60.1.tar.gz", hash = "sha256:beb1541dfc38b002bd629ab68b0d6fe35b870c5f4311d9bc4404d85af3214d5e"}, ] [package.dependencies] @@ -4536,13 +4536,13 @@ files = [ [[package]] name = "pydantic" -version = "2.10.5" +version = "2.10.6" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.10.5-py3-none-any.whl", hash = "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"}, - {file = "pydantic-2.10.5.tar.gz", hash = "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff"}, + {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, + {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, ] [package.dependencies] @@ -5486,29 +5486,29 @@ pyasn1 = ">=0.1.3" [[package]] name = "ruff" -version = "0.9.2" +version = "0.9.3" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.9.2-py3-none-linux_armv6l.whl", hash = "sha256:80605a039ba1454d002b32139e4970becf84b5fee3a3c3bf1c2af6f61a784347"}, - {file = "ruff-0.9.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b9aab82bb20afd5f596527045c01e6ae25a718ff1784cb92947bff1f83068b00"}, - {file = "ruff-0.9.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fbd337bac1cfa96be615f6efcd4bc4d077edbc127ef30e2b8ba2a27e18c054d4"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82b35259b0cbf8daa22a498018e300b9bb0174c2bbb7bcba593935158a78054d"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b6a9701d1e371bf41dca22015c3f89769da7576884d2add7317ec1ec8cb9c3c"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cc53e68b3c5ae41e8faf83a3b89f4a5d7b2cb666dff4b366bb86ed2a85b481f"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8efd9da7a1ee314b910da155ca7e8953094a7c10d0c0a39bfde3fcfd2a015684"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3292c5a22ea9a5f9a185e2d131dc7f98f8534a32fb6d2ee7b9944569239c648d"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a605fdcf6e8b2d39f9436d343d1f0ff70c365a1e681546de0104bef81ce88df"}, - {file = "ruff-0.9.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c547f7f256aa366834829a08375c297fa63386cbe5f1459efaf174086b564247"}, - {file = "ruff-0.9.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d18bba3d3353ed916e882521bc3e0af403949dbada344c20c16ea78f47af965e"}, - {file = "ruff-0.9.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b338edc4610142355ccf6b87bd356729b62bf1bc152a2fad5b0c7dc04af77bfe"}, - {file = "ruff-0.9.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:492a5e44ad9b22a0ea98cf72e40305cbdaf27fac0d927f8bc9e1df316dcc96eb"}, - {file = "ruff-0.9.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:af1e9e9fe7b1f767264d26b1075ac4ad831c7db976911fa362d09b2d0356426a"}, - {file = "ruff-0.9.2-py3-none-win32.whl", hash = "sha256:71cbe22e178c5da20e1514e1e01029c73dc09288a8028a5d3446e6bba87a5145"}, - {file = "ruff-0.9.2-py3-none-win_amd64.whl", hash = "sha256:c5e1d6abc798419cf46eed03f54f2e0c3adb1ad4b801119dedf23fcaf69b55b5"}, - {file = "ruff-0.9.2-py3-none-win_arm64.whl", hash = "sha256:a1b63fa24149918f8b37cef2ee6fff81f24f0d74b6f0bdc37bc3e1f2143e41c6"}, - {file = "ruff-0.9.2.tar.gz", hash = "sha256:b5eceb334d55fae5f316f783437392642ae18e16dcf4f1858d55d3c2a0f8f5d0"}, + {file = "ruff-0.9.3-py3-none-linux_armv6l.whl", hash = "sha256:7f39b879064c7d9670197d91124a75d118d00b0990586549949aae80cdc16624"}, + {file = "ruff-0.9.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a187171e7c09efa4b4cc30ee5d0d55a8d6c5311b3e1b74ac5cb96cc89bafc43c"}, + {file = "ruff-0.9.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c59ab92f8e92d6725b7ded9d4a31be3ef42688a115c6d3da9457a5bda140e2b4"}, + {file = "ruff-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc153c25e715be41bb228bc651c1e9b1a88d5c6e5ed0194fa0dfea02b026439"}, + {file = "ruff-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:646909a1e25e0dc28fbc529eab8eb7bb583079628e8cbe738192853dbbe43af5"}, + {file = "ruff-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a5a46e09355695fbdbb30ed9889d6cf1c61b77b700a9fafc21b41f097bfbba4"}, + {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c4bb09d2bbb394e3730d0918c00276e79b2de70ec2a5231cd4ebb51a57df9ba1"}, + {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96a87ec31dc1044d8c2da2ebbed1c456d9b561e7d087734336518181b26b3aa5"}, + {file = "ruff-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb7554aca6f842645022fe2d301c264e6925baa708b392867b7a62645304df4"}, + {file = "ruff-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cabc332b7075a914ecea912cd1f3d4370489c8018f2c945a30bcc934e3bc06a6"}, + {file = "ruff-0.9.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:33866c3cc2a575cbd546f2cd02bdd466fed65118e4365ee538a3deffd6fcb730"}, + {file = "ruff-0.9.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:006e5de2621304c8810bcd2ee101587712fa93b4f955ed0985907a36c427e0c2"}, + {file = "ruff-0.9.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba6eea4459dbd6b1be4e6bfc766079fb9b8dd2e5a35aff6baee4d9b1514ea519"}, + {file = "ruff-0.9.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:90230a6b8055ad47d3325e9ee8f8a9ae7e273078a66401ac66df68943ced029b"}, + {file = "ruff-0.9.3-py3-none-win32.whl", hash = "sha256:eabe5eb2c19a42f4808c03b82bd313fc84d4e395133fb3fc1b1516170a31213c"}, + {file = "ruff-0.9.3-py3-none-win_amd64.whl", hash = "sha256:040ceb7f20791dfa0e78b4230ee9dce23da3b64dd5848e40e3bf3ab76468dcf4"}, + {file = "ruff-0.9.3-py3-none-win_arm64.whl", hash = "sha256:800d773f6d4d33b0a3c60e2c6ae8f4c202ea2de056365acfa519aa48acf28e0b"}, + {file = "ruff-0.9.3.tar.gz", hash = "sha256:8293f89985a090ebc3ed1064df31f3b4b56320cdfcec8b60d3295bddb955c22a"}, ] [[package]] @@ -5754,13 +5754,13 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] [[package]] name = "starlette" -version = "0.45.2" +version = "0.45.3" description = "The little ASGI library that shines." optional = false python-versions = ">=3.9" files = [ - {file = "starlette-0.45.2-py3-none-any.whl", hash = "sha256:4daec3356fb0cb1e723a5235e5beaf375d2259af27532958e2d79df549dad9da"}, - {file = "starlette-0.45.2.tar.gz", hash = "sha256:bba1831d15ae5212b22feab2f218bab6ed3cd0fc2dc1d4442443bb1ee52260e0"}, + {file = "starlette-0.45.3-py3-none-any.whl", hash = "sha256:dfb6d332576f136ec740296c7e8bb8c8a7125044e7c6da30744718880cdd059d"}, + {file = "starlette-0.45.3.tar.gz", hash = "sha256:2cbcba2a75806f8a41c722141486f37c28e30a0921c5f6fe4346cb0dcee1302f"}, ] [package.dependencies] diff --git a/backend/pyproject.toml b/backend/pyproject.toml index ac27e17..e69c1c1 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -9,11 +9,10 @@ authors = [ "Shane Solomon ", "Kenny Zhang ", ] -description = "" +description = "A web API wrapper around the official GraphRAG library." license = "MIT" -name = "graphrag-solution-accelerator" -package-mode = false -version = "1.0.1" +name = "graphrag-app" +version = "1.2.0" [tool.poetry.dependencies] python = "~3.10" diff --git a/backend/src/typing/__init__.py b/backend/src/typing/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py index d9fc968..b5ec5ad 100644 --- a/backend/tests/conftest.py +++ b/backend/tests/conftest.py @@ -10,8 +10,8 @@ from azure.cosmos import CosmosClient, PartitionKey from azure.storage.blob import BlobServiceClient from fastapi.testclient import TestClient -from src.main import app -from src.utils.common import sanitize_name +from graphrag_app.main import app +from graphrag_app.utils.common import sanitize_name @pytest.fixture(scope="session") diff --git a/backend/tests/integration/test_api_source.py b/backend/tests/integration/test_api_source.py index 902bebb..5b7d9f0 100644 --- a/backend/tests/integration/test_api_source.py +++ b/backend/tests/integration/test_api_source.py @@ -8,7 +8,7 @@ from fastapi.testclient import TestClient def test_get_report(container_with_index_files: str, client: TestClient): - """Test retrieving a report via the src.api.source.get_report_info() function.""" + """Test retrieving a report via the graphrag_app.api.source.get_report_info() function.""" # retrieve a report that exists response = client.get(f"/source/report/{container_with_index_files}/1") assert response.status_code == 200 diff --git a/backend/tests/integration/test_utils_pipeline.py b/backend/tests/integration/test_utils_pipeline.py index 5f0a950..abc4b82 100644 --- a/backend/tests/integration/test_utils_pipeline.py +++ b/backend/tests/integration/test_utils_pipeline.py @@ -8,8 +8,8 @@ from typing import Generator import pytest -from src.typing.pipeline import PipelineJobState -from src.utils.pipeline import PipelineJob +from graphrag_app.typing.pipeline import PipelineJobState +from graphrag_app.utils.pipeline import PipelineJob @pytest.fixture() @@ -42,7 +42,7 @@ def cosmos_index_job_entry(cosmos_client) -> Generator[str, None, None]: def test_pipeline_job_interface(cosmos_index_job_entry): - """Test the src.utils.pipeline.PipelineJob class interface.""" + """Test the graphrag_app.utils.pipeline.PipelineJob class interface.""" pipeline_job = PipelineJob() # test creating a new entry diff --git a/backend/tests/unit/test_azure_clients.py b/backend/tests/unit/test_azure_clients.py index 86b2f8a..e6109df 100644 --- a/backend/tests/unit/test_azure_clients.py +++ b/backend/tests/unit/test_azure_clients.py @@ -5,7 +5,7 @@ from azure.cosmos import CosmosClient from azure.storage.blob import BlobServiceClient from azure.storage.blob.aio import BlobServiceClient as BlobServiceClientAsync -from src.utils.azure_clients import ( +from graphrag_app.utils.azure_clients import ( AzureClientManager, _BlobServiceClientSingleton, _BlobServiceClientSingletonAsync, diff --git a/backend/tests/unit/test_common.py b/backend/tests/unit/test_common.py index 10dc992..9c7be1c 100644 --- a/backend/tests/unit/test_common.py +++ b/backend/tests/unit/test_common.py @@ -3,7 +3,7 @@ import pytest -from src.utils.common import ( +from graphrag_app.utils.common import ( retrieve_original_blob_container_name, sanitize_name, validate_blob_container_name, @@ -12,7 +12,7 @@ from src.utils.common import ( def test_validate_blob_container_name(): - """Test the src.utils.common.validate_blob_container_name function.""" + """Test the graphrag_app.utils.common.validate_blob_container_name function.""" # test valid container name assert validate_blob_container_name("validcontainername") is None # test invalid container name @@ -33,7 +33,7 @@ def test_validate_blob_container_name(): def test_retrieve_original_blob_container_name(container_with_graphml_file): - """Test the src.utils.common.retrieve_original_blob_container_name function.""" + """Test the graphrag_app.utils.common.retrieve_original_blob_container_name function.""" # test retrieving a valid container name original_name = container_with_graphml_file sanitized_name = sanitize_name(original_name) @@ -43,7 +43,7 @@ def test_retrieve_original_blob_container_name(container_with_graphml_file): def test_validate_index_file_exist(container_with_graphml_file): - """Test the src.utils.common.validate_index_file_exist function.""" + """Test the graphrag_app.utils.common.validate_index_file_exist function.""" original_name = container_with_graphml_file sanitized_name = sanitize_name(original_name) # test with a valid index and valid file diff --git a/backend/tests/unit/test_load_logger.py b/backend/tests/unit/test_load_logger.py index 05bcd06..ee61630 100644 --- a/backend/tests/unit/test_load_logger.py +++ b/backend/tests/unit/test_load_logger.py @@ -2,13 +2,13 @@ from unittest.mock import patch import pytest -from src.logger.load_logger import load_pipeline_logger +from graphrag_app.logger.load_logger import load_pipeline_logger @pytest.fixture def mock_app_insights_workflow_callbacks(): with patch( - "src.logger.application_insights_workflow_callbacks.ApplicationInsightsWorkflowCallbacks" + "graphrag_app.logger.application_insights_workflow_callbacks.ApplicationInsightsWorkflowCallbacks" ) as mock_app_insights_workflow_callbacks: yield mock_app_insights_workflow_callbacks @@ -24,7 +24,7 @@ def mock_file_workflow_callbacks(): @pytest.fixture def mock_blob_workflow_callbacks(): with patch( - "src.logger.blob_workflow_callbacks.BlobWorkflowCallbacks" + "graphrag_app.logger.blob_workflow_callbacks.BlobWorkflowCallbacks" ) as mock_blob_workflow_callbacks: yield mock_blob_workflow_callbacks @@ -32,7 +32,7 @@ def mock_blob_workflow_callbacks(): @pytest.fixture def mock_console_workflow_callbacks(): with patch( - "src.logger.console_workflow_callbacks.ConsoleWorkflowCallbacks" + "graphrag_app.logger.console_workflow_callbacks.ConsoleWorkflowCallbacks" ) as mock_console_workflow_callbacks: yield mock_console_workflow_callbacks diff --git a/backend/tests/unit/test_logger_app_insights_callbacks.py b/backend/tests/unit/test_logger_app_insights_callbacks.py index bf2461e..58b8bf0 100644 --- a/backend/tests/unit/test_logger_app_insights_callbacks.py +++ b/backend/tests/unit/test_logger_app_insights_callbacks.py @@ -6,7 +6,7 @@ from unittest.mock import MagicMock, patch import pytest -from src.logger.application_insights_workflow_callbacks import ( +from graphrag_app.logger.application_insights_workflow_callbacks import ( ApplicationInsightsWorkflowCallbacks, ) @@ -14,7 +14,7 @@ from src.logger.application_insights_workflow_callbacks import ( @pytest.fixture def mock_logger(): with patch( - "src.logger.application_insights_workflow_callbacks.logging.getLogger" + "graphrag_app.logger.application_insights_workflow_callbacks.logging.getLogger" ) as mock_get_logger: mock_logger_instance = MagicMock(spec=logging.Logger) mock_get_logger.return_value = mock_logger_instance @@ -24,7 +24,7 @@ def mock_logger(): @pytest.fixture def workflow_callbacks(mock_logger): with patch( - "src.logger.application_insights_workflow_callbacks.ApplicationInsightsWorkflowCallbacks.__init__", + "graphrag_app.logger.application_insights_workflow_callbacks.ApplicationInsightsWorkflowCallbacks.__init__", return_value=None, ): instance = ApplicationInsightsWorkflowCallbacks() diff --git a/backend/tests/unit/test_logger_blob_callbacks.py b/backend/tests/unit/test_logger_blob_callbacks.py index f16f4c8..865ea74 100644 --- a/backend/tests/unit/test_logger_blob_callbacks.py +++ b/backend/tests/unit/test_logger_blob_callbacks.py @@ -5,13 +5,13 @@ from unittest.mock import patch import pytest -from src.logger.blob_workflow_callbacks import BlobWorkflowCallbacks +from graphrag_app.logger.blob_workflow_callbacks import BlobWorkflowCallbacks @pytest.fixture def mock_blob_service_client(): with patch( - "src.logger.blob_workflow_callbacks.BlobServiceClient" + "graphrag_app.logger.blob_workflow_callbacks.BlobServiceClient" ) as mock_blob_service_client: yield mock_blob_service_client @@ -19,7 +19,7 @@ def mock_blob_service_client(): @pytest.fixture def workflow_callbacks(mock_blob_service_client): with patch( - "src.logger.blob_workflow_callbacks.BlobWorkflowCallbacks.__init__", + "graphrag_app.logger.blob_workflow_callbacks.BlobWorkflowCallbacks.__init__", return_value=None, ): instance = BlobWorkflowCallbacks() diff --git a/backend/tests/unit/test_logger_console_callbacks.py b/backend/tests/unit/test_logger_console_callbacks.py index 6ab4028..5d941b1 100644 --- a/backend/tests/unit/test_logger_console_callbacks.py +++ b/backend/tests/unit/test_logger_console_callbacks.py @@ -6,13 +6,13 @@ from unittest.mock import MagicMock, patch import pytest -from src.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks +from graphrag_app.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks @pytest.fixture def mock_logger(): with patch( - "src.logger.console_workflow_callbacks.logging.getLogger" + "graphrag_app.logger.console_workflow_callbacks.logging.getLogger" ) as mock_get_logger: mock_logger_instance = MagicMock(spec=logging.Logger) mock_get_logger.return_value = mock_logger_instance @@ -22,7 +22,7 @@ def mock_logger(): @pytest.fixture def workflow_callbacks(mock_logger): with patch( - "src.logger.console_workflow_callbacks.ConsoleWorkflowCallbacks.__init__", + "graphrag_app.logger.console_workflow_callbacks.ConsoleWorkflowCallbacks.__init__", return_value=None, ): instance = ConsoleWorkflowCallbacks() diff --git a/backend/src/indexer/indexer.py b/backend/tools/indexer.py similarity index 96% rename from backend/src/indexer/indexer.py rename to backend/tools/indexer.py index d818f68..139ed47 100644 --- a/backend/src/indexer/indexer.py +++ b/backend/tools/indexer.py @@ -14,18 +14,17 @@ from graphrag.config.create_graphrag_config import create_graphrag_config from graphrag.index.create_pipeline_config import create_pipeline_config from graphrag.index.typing import PipelineRunResult -from ...src.logger import ( +from graphrag_app.logger import ( PipelineJobUpdater, load_pipeline_logger, ) -from ...src.typing.pipeline import PipelineJobState -from ...src.utils.azure_clients import AzureClientManager -from ...src.utils.common import sanitize_name -from ...src.utils.pipeline import PipelineJob +from graphrag_app.typing.pipeline import PipelineJobState +from graphrag_app.utils.azure_clients import AzureClientManager +from graphrag_app.utils.common import sanitize_name +from graphrag_app.utils.pipeline import PipelineJob def start_indexing_job(index_name: str): - return 0 print("Start indexing job...") # get sanitized name sanitized_index_name = sanitize_name(index_name) diff --git a/backend/src/indexer/settings.yaml b/backend/tools/settings.yaml similarity index 100% rename from backend/src/indexer/settings.yaml rename to backend/tools/settings.yaml diff --git a/docker/Dockerfile-backend b/docker/Dockerfile-backend index f8fbe92..ce0bb3d 100644 --- a/docker/Dockerfile-backend +++ b/docker/Dockerfile-backend @@ -10,7 +10,6 @@ ENV GRAPHRAG_VERSION=v${GRAPHRAG_VERSION} ENV PIP_ROOT_USER_ACTION=ignore ENV PIP_DISABLE_PIP_VERSION_CHECK=1 ENV SETUPTOOLS_USE_DISTUTILS=stdlib -ENV PYTHONPATH=/backend ENV TIKTOKEN_CACHE_DIR=/opt/tiktoken_cache/ COPY backend /backend @@ -26,4 +25,4 @@ RUN python -c "import tiktoken; tiktoken.encoding_for_model('gpt-3.5-turbo'); ti WORKDIR /backend EXPOSE 80 -CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "80"] +CMD ["uvicorn", "graphrag_app.main:app", "--host", "0.0.0.0", "--port", "80"]