mirror of
https://github.com/Azure-Samples/graphrag-accelerator.git
synced 2025-10-15 02:38:45 +00:00
convert app to proper python package
This commit is contained in:
parent
755448343b
commit
9a73ef2df4
@ -13,13 +13,13 @@ from fastapi import (
|
|||||||
UploadFile,
|
UploadFile,
|
||||||
)
|
)
|
||||||
|
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.typing.models import (
|
from graphrag_app.typing.models import (
|
||||||
BaseResponse,
|
BaseResponse,
|
||||||
StorageNameList,
|
StorageNameList,
|
||||||
)
|
)
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from src.utils.common import (
|
from graphrag_app.utils.common import (
|
||||||
delete_blob_container,
|
delete_blob_container,
|
||||||
delete_cosmos_container_item,
|
delete_cosmos_container_item,
|
||||||
sanitize_name,
|
sanitize_name,
|
@ -7,9 +7,9 @@ from fastapi import (
|
|||||||
)
|
)
|
||||||
from fastapi.responses import StreamingResponse
|
from fastapi.responses import StreamingResponse
|
||||||
|
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from src.utils.common import (
|
from graphrag_app.utils.common import (
|
||||||
sanitize_name,
|
sanitize_name,
|
||||||
validate_index_file_exist,
|
validate_index_file_exist,
|
||||||
)
|
)
|
@ -18,20 +18,20 @@ from kubernetes import (
|
|||||||
config as kubernetes_config,
|
config as kubernetes_config,
|
||||||
)
|
)
|
||||||
|
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.typing.models import (
|
from graphrag_app.typing.models import (
|
||||||
BaseResponse,
|
BaseResponse,
|
||||||
IndexNameList,
|
IndexNameList,
|
||||||
IndexStatusResponse,
|
IndexStatusResponse,
|
||||||
)
|
)
|
||||||
from src.typing.pipeline import PipelineJobState
|
from graphrag_app.typing.pipeline import PipelineJobState
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from src.utils.common import (
|
from graphrag_app.utils.common import (
|
||||||
delete_blob_container,
|
delete_blob_container,
|
||||||
sanitize_name,
|
sanitize_name,
|
||||||
validate_blob_container_name,
|
validate_blob_container_name,
|
||||||
)
|
)
|
||||||
from src.utils.pipeline import PipelineJob
|
from graphrag_app.utils.pipeline import PipelineJob
|
||||||
|
|
||||||
index_route = APIRouter(
|
index_route = APIRouter(
|
||||||
prefix="/index",
|
prefix="/index",
|
@ -13,9 +13,9 @@ from fastapi import (
|
|||||||
)
|
)
|
||||||
from graphrag.config.create_graphrag_config import create_graphrag_config
|
from graphrag.config.create_graphrag_config import create_graphrag_config
|
||||||
|
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from src.utils.common import sanitize_name
|
from graphrag_app.utils.common import sanitize_name
|
||||||
|
|
||||||
prompt_tuning_route = APIRouter(prefix="/index/config", tags=["Index Configuration"])
|
prompt_tuning_route = APIRouter(prefix="/index/config", tags=["Index Configuration"])
|
||||||
|
|
@ -25,19 +25,19 @@ from graphrag.vector_stores.base import (
|
|||||||
VectorStoreSearchResult,
|
VectorStoreSearchResult,
|
||||||
)
|
)
|
||||||
|
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.typing.models import (
|
from graphrag_app.typing.models import (
|
||||||
GraphRequest,
|
GraphRequest,
|
||||||
GraphResponse,
|
GraphResponse,
|
||||||
)
|
)
|
||||||
from src.typing.pipeline import PipelineJobState
|
from graphrag_app.typing.pipeline import PipelineJobState
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from src.utils.common import (
|
from graphrag_app.utils.common import (
|
||||||
get_df,
|
get_df,
|
||||||
sanitize_name,
|
sanitize_name,
|
||||||
validate_index_file_exist,
|
validate_index_file_exist,
|
||||||
)
|
)
|
||||||
from src.utils.pipeline import PipelineJob
|
from graphrag_app.utils.pipeline import PipelineJob
|
||||||
|
|
||||||
query_route = APIRouter(
|
query_route = APIRouter(
|
||||||
prefix="/query",
|
prefix="/query",
|
@ -21,11 +21,11 @@ from graphrag.api.query import (
|
|||||||
)
|
)
|
||||||
from graphrag.config import create_graphrag_config
|
from graphrag.config import create_graphrag_config
|
||||||
|
|
||||||
from src.api.query import _is_index_complete
|
from graphrag_app.api.query import _is_index_complete
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.typing.models import GraphRequest
|
from graphrag_app.typing.models import GraphRequest
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from src.utils.common import (
|
from graphrag_app.utils.common import (
|
||||||
get_df,
|
get_df,
|
||||||
sanitize_name,
|
sanitize_name,
|
||||||
validate_index_file_exist,
|
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.",
|
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):
|
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):
|
if isinstance(request.index_name, str):
|
||||||
index_names = [request.index_name]
|
index_names = [request.index_name]
|
||||||
else:
|
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?).",
|
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):
|
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):
|
if isinstance(request.index_name, str):
|
||||||
index_names = [request.index_name]
|
index_names = [request.index_name]
|
||||||
else:
|
else:
|
@ -5,15 +5,15 @@
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
from fastapi import APIRouter, HTTPException
|
from fastapi import APIRouter, HTTPException
|
||||||
|
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.typing.models import (
|
from graphrag_app.typing.models import (
|
||||||
ClaimResponse,
|
ClaimResponse,
|
||||||
EntityResponse,
|
EntityResponse,
|
||||||
RelationshipResponse,
|
RelationshipResponse,
|
||||||
ReportResponse,
|
ReportResponse,
|
||||||
TextUnitResponse,
|
TextUnitResponse,
|
||||||
)
|
)
|
||||||
from src.utils.common import (
|
from graphrag_app.utils.common import (
|
||||||
pandas_storage_options,
|
pandas_storage_options,
|
||||||
sanitize_name,
|
sanitize_name,
|
||||||
validate_index_file_exist,
|
validate_index_file_exist,
|
@ -22,6 +22,7 @@ spec:
|
|||||||
containers:
|
containers:
|
||||||
- name: index-job-manager
|
- name: index-job-manager
|
||||||
image: PLACEHOLDER
|
image: PLACEHOLDER
|
||||||
|
workingDir: /backend/graphrag_app/config
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
@ -9,6 +9,7 @@ to schedule graphrag indexing jobs on a first-come-first-serve basis (based on e
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import yaml
|
import yaml
|
||||||
@ -17,11 +18,11 @@ from kubernetes import (
|
|||||||
config,
|
config,
|
||||||
)
|
)
|
||||||
|
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.typing.pipeline import PipelineJobState
|
from graphrag_app.typing.pipeline import PipelineJobState
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from src.utils.common import sanitize_name
|
from graphrag_app.utils.common import sanitize_name
|
||||||
from src.utils.pipeline import PipelineJob
|
from graphrag_app.utils.pipeline import PipelineJob
|
||||||
|
|
||||||
|
|
||||||
def schedule_indexing_job(index_name: str):
|
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.
|
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
|
# 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 = yaml.safe_load(f)
|
||||||
manifest["metadata"]["name"] = f"indexing-job-{sanitize_name(index_name)}"
|
manifest["metadata"]["name"] = f"indexing-job-{sanitize_name(index_name)}"
|
||||||
manifest["spec"]["template"]["spec"]["serviceAccountName"] = service_account_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]["image"] = docker_image_name
|
||||||
manifest["spec"]["template"]["spec"]["containers"][0]["command"] = [
|
manifest["spec"]["template"]["spec"]["containers"][0]["command"] = [
|
||||||
"python",
|
"python",
|
||||||
"src/indexer/indexer.py",
|
"tools/indexer.py",
|
||||||
f"-i={index_name}",
|
f"-i={index_name}",
|
||||||
]
|
]
|
||||||
return manifest
|
return manifest
|
@ -1,13 +1,13 @@
|
|||||||
# Copyright (c) Microsoft Corporation.
|
# Copyright (c) Microsoft Corporation.
|
||||||
# Licensed under the MIT License.
|
# Licensed under the MIT License.
|
||||||
|
|
||||||
from src.logger.application_insights_workflow_callbacks import (
|
from graphrag_app.logger.application_insights_workflow_callbacks import (
|
||||||
ApplicationInsightsWorkflowCallbacks,
|
ApplicationInsightsWorkflowCallbacks,
|
||||||
)
|
)
|
||||||
from src.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks
|
from graphrag_app.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.logger.pipeline_job_updater import PipelineJobUpdater
|
from graphrag_app.logger.pipeline_job_updater import PipelineJobUpdater
|
||||||
from src.logger.typing import (
|
from graphrag_app.logger.typing import (
|
||||||
Logger,
|
Logger,
|
||||||
PipelineAppInsightsReportingConfig,
|
PipelineAppInsightsReportingConfig,
|
||||||
PipelineReportingConfigTypes,
|
PipelineReportingConfigTypes,
|
@ -9,13 +9,13 @@ from graphrag.callbacks.file_workflow_callbacks import FileWorkflowCallbacks
|
|||||||
from graphrag.callbacks.workflow_callbacks import WorkflowCallbacks
|
from graphrag.callbacks.workflow_callbacks import WorkflowCallbacks
|
||||||
from graphrag.callbacks.workflow_callbacks_manager import WorkflowCallbacksManager
|
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,
|
ApplicationInsightsWorkflowCallbacks,
|
||||||
)
|
)
|
||||||
from src.logger.blob_workflow_callbacks import BlobWorkflowCallbacks
|
from graphrag_app.logger.blob_workflow_callbacks import BlobWorkflowCallbacks
|
||||||
from src.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks
|
from graphrag_app.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks
|
||||||
from src.logger.typing import Logger
|
from graphrag_app.logger.typing import Logger
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
|
|
||||||
|
|
||||||
def load_pipeline_logger(
|
def load_pipeline_logger(
|
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
from graphrag.callbacks.noop_workflow_callbacks import NoopWorkflowCallbacks
|
from graphrag.callbacks.noop_workflow_callbacks import NoopWorkflowCallbacks
|
||||||
|
|
||||||
from src.typing.pipeline import PipelineJobState
|
from graphrag_app.typing.pipeline import PipelineJobState
|
||||||
from src.utils.pipeline import PipelineJob
|
from graphrag_app.utils.pipeline import PipelineJob
|
||||||
|
|
||||||
|
|
||||||
class PipelineJobUpdater(NoopWorkflowCallbacks):
|
class PipelineJobUpdater(NoopWorkflowCallbacks):
|
@ -4,6 +4,7 @@
|
|||||||
import os
|
import os
|
||||||
import traceback
|
import traceback
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from azure.cosmos import PartitionKey, ThroughputProperties
|
from azure.cosmos import PartitionKey, ThroughputProperties
|
||||||
@ -20,15 +21,15 @@ from kubernetes import (
|
|||||||
config,
|
config,
|
||||||
)
|
)
|
||||||
|
|
||||||
from src.api.data import data_route
|
from graphrag_app.api.data import data_route
|
||||||
from src.api.graph import graph_route
|
from graphrag_app.api.graph import graph_route
|
||||||
from src.api.index import index_route
|
from graphrag_app.api.index import index_route
|
||||||
from src.api.prompt_tuning import prompt_tuning_route
|
from graphrag_app.api.prompt_tuning import prompt_tuning_route
|
||||||
from src.api.query import query_route
|
from graphrag_app.api.query import query_route
|
||||||
from src.api.query_streaming import query_streaming_route
|
from graphrag_app.api.query_streaming import query_streaming_route
|
||||||
from src.api.source import source_route
|
from graphrag_app.api.source import source_route
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
|
|
||||||
|
|
||||||
async def catch_all_exceptions_middleware(request: Request, call_next):
|
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"]
|
name=pod_name, namespace=os.environ["AKS_NAMESPACE"]
|
||||||
)
|
)
|
||||||
# load the cronjob manifest template and update PLACEHOLDER values with correct values using the pod spec
|
# 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 = yaml.safe_load(f)
|
||||||
manifest["spec"]["jobTemplate"]["spec"]["template"]["spec"]["containers"][0][
|
manifest["spec"]["jobTemplate"]["spec"]["template"]["spec"]["containers"][0][
|
||||||
"image"
|
"image"
|
@ -10,7 +10,7 @@ from azure.cosmos import exceptions
|
|||||||
from azure.identity import DefaultAzureCredential
|
from azure.identity import DefaultAzureCredential
|
||||||
from fastapi import HTTPException
|
from fastapi import HTTPException
|
||||||
|
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
|
|
||||||
|
|
||||||
def get_df(
|
def get_df(
|
@ -8,9 +8,9 @@ from typing import (
|
|||||||
|
|
||||||
from azure.cosmos.exceptions import CosmosHttpResponseError
|
from azure.cosmos.exceptions import CosmosHttpResponseError
|
||||||
|
|
||||||
from src.typing.pipeline import PipelineJobState
|
from graphrag_app.typing.pipeline import PipelineJobState
|
||||||
from src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from src.utils.common import sanitize_name
|
from graphrag_app.utils.common import sanitize_name
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
184
backend/poetry.lock
generated
184
backend/poetry.lock
generated
@ -1276,20 +1276,20 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "deprecated"
|
name = "deprecated"
|
||||||
version = "1.2.15"
|
version = "1.2.17"
|
||||||
description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
|
description = "Python @deprecated decorator to deprecate old python classes, functions or methods."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "Deprecated-1.2.15-py2.py3-none-any.whl", hash = "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320"},
|
{file = "Deprecated-1.2.17-py2.py3-none-any.whl", hash = "sha256:69cdc0a751671183f569495e2efb14baee4344b0236342eec29f1fde25d61818"},
|
||||||
{file = "deprecated-1.2.15.tar.gz", hash = "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d"},
|
{file = "deprecated-1.2.17.tar.gz", hash = "sha256:0114a10f0bbb750b90b2c2296c90cf7e9eaeb0abb5cf06c80de2c60138de0a82"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
wrapt = ">=1.10,<2"
|
wrapt = ">=1.10,<2"
|
||||||
|
|
||||||
[package.extras]
|
[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]]
|
[[package]]
|
||||||
name = "deprecation"
|
name = "deprecation"
|
||||||
@ -1613,61 +1613,61 @@ openai = ["openai (>=1.35.12)", "tiktoken (>=0.7.0)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fonttools"
|
name = "fonttools"
|
||||||
version = "4.55.4"
|
version = "4.55.6"
|
||||||
description = "Tools to manipulate font files"
|
description = "Tools to manipulate font files"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "fonttools-4.55.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b332ea7b7f5f3d99f9bc5a28a23c3824ae72711abf7c4e1d62fa21699fdebe7"},
|
{file = "fonttools-4.55.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:57d55fc965e5dd20c8a60d880e0f43bafb506be87af0b650bdc42591e41e0d0d"},
|
||||||
{file = "fonttools-4.55.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d8f925909256e62152e7c3e192655dbca3ab8c3cdef7d7b436732727e80feb6"},
|
{file = "fonttools-4.55.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:127999618afe3a2490fad54bab0650c5fbeab1f8109bdc0205f6ad34306deb8b"},
|
||||||
{file = "fonttools-4.55.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a58af9b98e39bcd773aa352b4512be79b472830b799cb1d3cafb2b4796b71cd"},
|
{file = "fonttools-4.55.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3226d40cb92787e09dcc3730f54b3779dfe56bdfea624e263685ba17a6faac4"},
|
||||||
{file = "fonttools-4.55.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:736d750d2ab4523067d8058e5294b40b01f2eee521e0fd401bec0d5e21e80b12"},
|
{file = "fonttools-4.55.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e82772f70b84e17aa36e9f236feb2a4f73cb686ec1e162557a36cf759d1acd58"},
|
||||||
{file = "fonttools-4.55.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1a9a2e7e8a9d3bfa9589db3e6c4e4c127fec252493924b2f87a67a25f9430057"},
|
{file = "fonttools-4.55.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a632f85bd73e002b771bcbcdc512038fa5d2e09bb18c03a22fb8d400ea492ddf"},
|
||||||
{file = "fonttools-4.55.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:87824368e994af34a95cb4279a8c711e51974b3c28d052d39d768531cc9e8e59"},
|
{file = "fonttools-4.55.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:791e0cf862cdd3a252df395f1bb5f65e3a760f1da3c7ce184d0f7998c266614d"},
|
||||||
{file = "fonttools-4.55.4-cp310-cp310-win32.whl", hash = "sha256:6c36dcbfe64bce38c4d4f1d436cdc6445e969eee96eb98d98be603b5abf8c3f2"},
|
{file = "fonttools-4.55.6-cp310-cp310-win32.whl", hash = "sha256:94f7f2c5c5f3a6422e954ecb6d37cc363e27d6f94050a7ed3f79f12157af6bb2"},
|
||||||
{file = "fonttools-4.55.4-cp310-cp310-win_amd64.whl", hash = "sha256:3c53a467e5cf629acdbefc98b0f554859539fb6447bbeae4117b9ab51464ccc5"},
|
{file = "fonttools-4.55.6-cp310-cp310-win_amd64.whl", hash = "sha256:2d15e02b93a46982a8513a208e8f89148bca8297640527365625be56151687d0"},
|
||||||
{file = "fonttools-4.55.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1605b28165c785bf26c2cbd205dc0822463e3f9f56f187049eb214dc5f4a59cb"},
|
{file = "fonttools-4.55.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0879f99eabbf2171dfadd9c8c75cec2b7b3aa9cd1f3955dd799c69d60a5189ef"},
|
||||||
{file = "fonttools-4.55.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d851d8b2fdb676507365d1430c3285d62c4039d0d7760d8cf2f2e5ea3aa19d73"},
|
{file = "fonttools-4.55.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d77d83ca77a4c3156a2f4cbc7f09f5a8503795da658fa255b987ad433a191266"},
|
||||||
{file = "fonttools-4.55.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fb3cf1cddf08cec0338f238f950cb76fabab23a324a579e3e1f9b2ef2578329"},
|
{file = "fonttools-4.55.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07478132407736ee5e54f9f534e73923ae28e9bb6dba17764a35e3caf7d7fea3"},
|
||||||
{file = "fonttools-4.55.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddd3208b06186ca00fbd329c0d0fed5ba209c99017cc46e2c4ea42233c2fbd00"},
|
{file = "fonttools-4.55.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c06fbc2fd76b9bab03eddfd8aa9fb7c0981d314d780e763c80aa76be1c9982"},
|
||||||
{file = "fonttools-4.55.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9bd98819cb585a894dda9dcb337afeb2601abf17da17de7bfbfc1bc2e4a062c7"},
|
{file = "fonttools-4.55.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:09ed667c4753e1270994e5398cce8703e6423c41702a55b08f843b2907b1be65"},
|
||||||
{file = "fonttools-4.55.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4877376c10541e8dccf14876c8476d5082338fa5d21103894894382cc245144b"},
|
{file = "fonttools-4.55.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0ee6ed68af8d57764d69da099db163aaf37d62ba246cfd42f27590e3e6724b55"},
|
||||||
{file = "fonttools-4.55.4-cp311-cp311-win32.whl", hash = "sha256:3a5e466894ec6d8a009b0eb8e02a6eb26959a318d5b7a906280c26bdadce6423"},
|
{file = "fonttools-4.55.6-cp311-cp311-win32.whl", hash = "sha256:9f99e7876518b2d059a9cc67c506168aebf9c71ac8d81006d75e684222f291d2"},
|
||||||
{file = "fonttools-4.55.4-cp311-cp311-win_amd64.whl", hash = "sha256:f595129e6f9c6402965d6295fe8c18c1945d27af0f90bdb52ff426226e647afc"},
|
{file = "fonttools-4.55.6-cp311-cp311-win_amd64.whl", hash = "sha256:3aa6c684007723895aade9b2fe76d07008c9dc90fd1ef6c310b3ca9c8566729f"},
|
||||||
{file = "fonttools-4.55.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b3db72ad2d26a0e9ec694cbfb4485a8da9c095d29f66561cf935dbd19f3efcea"},
|
{file = "fonttools-4.55.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:51120695ee13001533e50abd40eec32c01b9c6f44c5567db38a7acd3eedcd19d"},
|
||||||
{file = "fonttools-4.55.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:87717808fd5953588c3ffaf512e8cab0e43c09c1da04e42ba87fa4c07d8170c7"},
|
{file = "fonttools-4.55.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:76ac5a595f86892b49ba86ba2e46185adc76328ce6eff0583b30e5c3ab02a914"},
|
||||||
{file = "fonttools-4.55.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f49dac626ad5bc1a0147b88e6157e3211fd440d00007f0da6c9e5f91dd5cb88e"},
|
{file = "fonttools-4.55.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b7535a5ac386e549e2b00b34c59b53f805e2423000676723b6867df3c10df04"},
|
||||||
{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.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.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:013c8b45873fa77a4ff6d25e43fecf1046cb7e8c6b32f1843117f98f3f8eac60"},
|
{file = "fonttools-4.55.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:88f74bc19dbab3dee6a00ca67ca54bb4793e44ff0c4dcf1fa61d68651ae3fa0a"},
|
||||||
{file = "fonttools-4.55.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:94caad375d254a0332926512f06791f5e66c24a913ebecd6178b14f61d27c62f"},
|
{file = "fonttools-4.55.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bc6f58976ffc19fe1630119a2736153b66151d023c6f30065f31c9e8baed1303"},
|
||||||
{file = "fonttools-4.55.4-cp312-cp312-win32.whl", hash = "sha256:cb3eb4bf3a0c4e431e1ccab7a33ef4f1bb32657133fff4a61dc4fcbd54b94d29"},
|
{file = "fonttools-4.55.6-cp312-cp312-win32.whl", hash = "sha256:4259159715142c10b0f4d121ef14da3fa6eafc719289d9efa4b20c15e57fef82"},
|
||||||
{file = "fonttools-4.55.4-cp312-cp312-win_amd64.whl", hash = "sha256:6914269f6ff6b20c6b5a9b19d0b752880bd8ee218d9a7d6afe9960bbf1922d98"},
|
{file = "fonttools-4.55.6-cp312-cp312-win_amd64.whl", hash = "sha256:d91fce2e9a87cc0db9f8042281b6458f99854df810cfefab2baf6ab2acc0f4b4"},
|
||||||
{file = "fonttools-4.55.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:699dd32da7258a89939567a3d71b3f8decf84da54488a2526693f0d981a76479"},
|
{file = "fonttools-4.55.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9394813cc73fa22c5413ec1c5745c0a16f68dd2b890f7c55eaba5cb40187ed55"},
|
||||||
{file = "fonttools-4.55.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f374b18ac04fbf78f20940418aee7882be3cdcb328ded80e16c3356499f64cf"},
|
{file = "fonttools-4.55.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ac817559a7d245454231374e194b4e457dca6fefa5b52af466ab0516e9a09c6e"},
|
||||||
{file = "fonttools-4.55.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b18792529ca3c24259090b6faa60bd0bdfcc4a06312e8f06d6fccab007f07193"},
|
{file = "fonttools-4.55.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34405f1314f1e88b1877a9f9e497fe45190e8c4b29a6c7cd85ed7f666a57d702"},
|
||||||
{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.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.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2695781a897395d03504fd24b60c944726b5e7b7af9ea3d922f7319d70c6fc37"},
|
{file = "fonttools-4.55.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8a8004a19195eb8a8a13de69e26ec9ed60a5bc1fde336d0021b47995b368fac9"},
|
||||||
{file = "fonttools-4.55.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:21de3ef5b8e5361fd01d6aef2c09dda4ede139d6b3a1f5cf621d6bea48840dfd"},
|
{file = "fonttools-4.55.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:73a4aaf672e7b2265c6354a69cbbadf71b7f3133ecb74e98fec4c67c366698a3"},
|
||||||
{file = "fonttools-4.55.4-cp313-cp313-win32.whl", hash = "sha256:0ef33fda14e39aabb892a18ed16805b0b5b4e8a801fd1815a694be9dc7f30024"},
|
{file = "fonttools-4.55.6-cp313-cp313-win32.whl", hash = "sha256:73bdff9c44d36c57ea84766afc20517eda0c9bb1571b4a09876646264bd5ff3b"},
|
||||||
{file = "fonttools-4.55.4-cp313-cp313-win_amd64.whl", hash = "sha256:e953b1614e32b6da828ae7659c8f330a593b6c4b7a4a31f8f63c01b12f0d3680"},
|
{file = "fonttools-4.55.6-cp313-cp313-win_amd64.whl", hash = "sha256:132fa22be8a99784de8cb171b30425a581f04a40ec1c05183777fb2b1fe3bac9"},
|
||||||
{file = "fonttools-4.55.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e2d1bbcaf8ca8c60fbb029982197fbaa487559d5380f1c3098882c5ceb4311c7"},
|
{file = "fonttools-4.55.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8398928acb8a57073606feb9a310682d4a7e2d7536f2c61719261f4c0974504c"},
|
||||||
{file = "fonttools-4.55.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a885593dbcbfc250ff17831f7dc9316e95c3d046e6cd7ff7ab52ebf673bbf978"},
|
{file = "fonttools-4.55.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c2f78ebfdef578d4db7c44bc207ac5f9a5c1f22c9db606460dcc8ad48e183338"},
|
||||||
{file = "fonttools-4.55.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02cd4ad9b3ab9f9c5b233b3bb6a96a036c9c0ef17487805b5e73cedf6439d188"},
|
{file = "fonttools-4.55.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fb545f3a4ebada908fa717ec732277de18dd10161f03ee3b3144d34477804de"},
|
||||||
{file = "fonttools-4.55.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:822d46676f794bb6cac055b43f5636792e2a360e18cf0f3a0333c21d79ec0f2d"},
|
{file = "fonttools-4.55.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1062daa0390b32bfd062ded2b450db9e9cf10e5a9919561c13f535e818b1952b"},
|
||||||
{file = "fonttools-4.55.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:7b195440fe14d8601053a51e06e13c94f725bf9f964611be99dc3cb65497ce8e"},
|
{file = "fonttools-4.55.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:860ab9ed3f9e088d3bdb77b9074e656635f173b039e77d550b603cba052a0dca"},
|
||||||
{file = "fonttools-4.55.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a0e0a0ec8cc4b8f82f9cf4efa26774dbd93433ba51b8f9bd2b214bf36c5638f6"},
|
{file = "fonttools-4.55.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:03701e7de70c71eb5965cb200986b0c11dfa3cf8e843e4f517ee30a0f43f0a25"},
|
||||||
{file = "fonttools-4.55.4-cp38-cp38-win32.whl", hash = "sha256:ca7e6047fbc995500e0b7459a04d5b92cafd7730b636d5f83334cd7eefdf95c7"},
|
{file = "fonttools-4.55.6-cp38-cp38-win32.whl", hash = "sha256:f66561fbfb75785d06513b8025a50be37bf970c3c413e87581cc6eff10bc78f1"},
|
||||||
{file = "fonttools-4.55.4-cp38-cp38-win_amd64.whl", hash = "sha256:0185983fcf49ae7a826cedc6f64d68b0434a5b7905d89e75bc95fced7fe118c1"},
|
{file = "fonttools-4.55.6-cp38-cp38-win_amd64.whl", hash = "sha256:edf159a8f1e48dc4683a715b36da76dd2f82954b16bfe11a215d58e963d31cfc"},
|
||||||
{file = "fonttools-4.55.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:dcc08dcb2be554073a72f3a8cecbc4226602ccdd0187b8f37a03a731cb931864"},
|
{file = "fonttools-4.55.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61aa1997c520bee4cde14ffabe81efc4708c500c8c81dce37831551627a2be56"},
|
||||||
{file = "fonttools-4.55.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7b9b414ce50f09cb692e97ff82b041ea1a21076ed9c1923206560c15ce9ad03a"},
|
{file = "fonttools-4.55.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7954ea66a8d835f279c17d8474597a001ddd65a2c1ca97e223041bfbbe11f65e"},
|
||||||
{file = "fonttools-4.55.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807a1357d434ef1f4aed9bdfee7077f52dbc040b18ac98f6e417f69a48afbb5"},
|
{file = "fonttools-4.55.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f4e88f15f5ed4d2e4bdfcc98540bb3987ae25904f9be304be9a604e7a7050a1"},
|
||||||
{file = "fonttools-4.55.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a3ec7cba2e71edbc999ce3d48d34ef87cc30a36af6ff90dfc0dbc131f705fc"},
|
{file = "fonttools-4.55.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d419483a6295e83cabddb56f1c7b7bfdc8169de2fcb5c68d622bd11140355f9"},
|
||||||
{file = "fonttools-4.55.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2964b9fe6b4a892a41a8a517bac232072a821cf2288fad1d19c6c1d19c34b0dd"},
|
{file = "fonttools-4.55.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:acc74884afddc2656bffc50100945ff407574538c152931c402fccddc46f0abc"},
|
||||||
{file = "fonttools-4.55.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0b9f4f032295adeb39a8c0eefb08a7b1e90f4b7571506e5d84bb923a7afa8247"},
|
{file = "fonttools-4.55.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a55489c7e9d5ea69690a2afad06723c3d0c48c6d276a25391ea97cb31a16b37c"},
|
||||||
{file = "fonttools-4.55.4-cp39-cp39-win32.whl", hash = "sha256:ee4e86280dc637a17e926cbdd32c2de148c013c3468777ae6e94c8b4449c8e93"},
|
{file = "fonttools-4.55.6-cp39-cp39-win32.whl", hash = "sha256:8c9de8d16d02ecc8b65e3f3d2d1e3002be2c4a3f094d580faf76d7f768bd45fe"},
|
||||||
{file = "fonttools-4.55.4-cp39-cp39-win_amd64.whl", hash = "sha256:82a03920f0f524abab375dcfac8926d9596986503ee00ae435bdd71b1498f214"},
|
{file = "fonttools-4.55.6-cp39-cp39-win_amd64.whl", hash = "sha256:471961af7a4b8461fac0c8ee044b4986e6fe3746d4c83a1aacbdd85b4eb53f93"},
|
||||||
{file = "fonttools-4.55.4-py3-none-any.whl", hash = "sha256:d07ad8f31038c6394a0945752458313367a0ef8125d284ee59f99e68393a3c2d"},
|
{file = "fonttools-4.55.6-py3-none-any.whl", hash = "sha256:d20ab5a78d0536c26628eaadba661e7ae2427b1e5c748a0a510a44d914e1b155"},
|
||||||
{file = "fonttools-4.55.4.tar.gz", hash = "sha256:9598af0af85073659facbe9612fcc56b071ef2f26e3819ebf9bd8c5d35f958c5"},
|
{file = "fonttools-4.55.6.tar.gz", hash = "sha256:1beb4647a0df5ceaea48015656525eb8081af226fe96554089fd3b274d239ef0"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
@ -1989,15 +1989,15 @@ umap-learn = ">=0.5.6,<0.6.0"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "graspologic-native"
|
name = "graspologic-native"
|
||||||
version = "1.2.1"
|
version = "1.2.3"
|
||||||
description = "Python native companion module to the graspologic library"
|
description = "Python native companion module to the graspologic library"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6, <3.13"
|
python-versions = "<3.14,>=3.8"
|
||||||
files = [
|
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.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.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a44cfdee11718c01c0f6c544750b3ae64e28cc03432a620fe0295704bd0d618d"},
|
{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.1-cp36-abi3-win_amd64.whl", hash = "sha256:56b5e66ba003fd38efc0919ce90fa22d379456e177dca65e26626498d2b9b96b"},
|
{file = "graspologic_native-1.2.3-cp38-abi3-win_amd64.whl", hash = "sha256:57ded2c8532878ff662888c0397f4909d70fdf0e98d808de707238c67857ab5c"},
|
||||||
{file = "graspologic_native-1.2.1.tar.gz", hash = "sha256:72b7586028a91e9fef9af0ef314d368f0240c18dca99e6e6c546334359a8610a"},
|
{file = "graspologic_native-1.2.3.tar.gz", hash = "sha256:7c059f7b580248abc3fee8828b9e97ac48ac9a9554fdeafaa35862871ac5113a"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2814,13 +2814,13 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kubernetes"
|
name = "kubernetes"
|
||||||
version = "31.0.0"
|
version = "32.0.0"
|
||||||
description = "Kubernetes python client"
|
description = "Kubernetes python client"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
files = [
|
files = [
|
||||||
{file = "kubernetes-31.0.0-py2.py3-none-any.whl", hash = "sha256:bf141e2d380c8520eada8b351f4e319ffee9636328c137aa432bc486ca1200e1"},
|
{file = "kubernetes-32.0.0-py2.py3-none-any.whl", hash = "sha256:60fd8c29e8e43d9c553ca4811895a687426717deba9c0a66fb2dcc3f5ef96692"},
|
||||||
{file = "kubernetes-31.0.0.tar.gz", hash = "sha256:28945de906c8c259c1ebe62703b56a03b714049372196f854105afe4e6d014c0"},
|
{file = "kubernetes-32.0.0.tar.gz", hash = "sha256:319fa840345a482001ac5d6062222daeb66ec4d1bcb3087402aed685adf0aecb"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -3561,13 +3561,13 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "openai"
|
name = "openai"
|
||||||
version = "1.60.0"
|
version = "1.60.1"
|
||||||
description = "The official Python library for the openai API"
|
description = "The official Python library for the openai API"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "openai-1.60.0-py3-none-any.whl", hash = "sha256:df06c43be8018274980ac363da07d4b417bd835ead1c66e14396f6f15a0d5dda"},
|
{file = "openai-1.60.1-py3-none-any.whl", hash = "sha256:714181ec1c452353d456f143c22db892de7b373e3165063d02a2b798ed575ba1"},
|
||||||
{file = "openai-1.60.0.tar.gz", hash = "sha256:7fa536cd4b644718645b874d2706e36dbbef38b327e42ca0623275da347ee1a9"},
|
{file = "openai-1.60.1.tar.gz", hash = "sha256:beb1541dfc38b002bd629ab68b0d6fe35b870c5f4311d9bc4404d85af3214d5e"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -4536,13 +4536,13 @@ files = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pydantic"
|
name = "pydantic"
|
||||||
version = "2.10.5"
|
version = "2.10.6"
|
||||||
description = "Data validation using Python type hints"
|
description = "Data validation using Python type hints"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8"
|
python-versions = ">=3.8"
|
||||||
files = [
|
files = [
|
||||||
{file = "pydantic-2.10.5-py3-none-any.whl", hash = "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"},
|
{file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"},
|
||||||
{file = "pydantic-2.10.5.tar.gz", hash = "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff"},
|
{file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
@ -5486,29 +5486,29 @@ pyasn1 = ">=0.1.3"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "ruff"
|
name = "ruff"
|
||||||
version = "0.9.2"
|
version = "0.9.3"
|
||||||
description = "An extremely fast Python linter and code formatter, written in Rust."
|
description = "An extremely fast Python linter and code formatter, written in Rust."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
files = [
|
files = [
|
||||||
{file = "ruff-0.9.2-py3-none-linux_armv6l.whl", hash = "sha256:80605a039ba1454d002b32139e4970becf84b5fee3a3c3bf1c2af6f61a784347"},
|
{file = "ruff-0.9.3-py3-none-linux_armv6l.whl", hash = "sha256:7f39b879064c7d9670197d91124a75d118d00b0990586549949aae80cdc16624"},
|
||||||
{file = "ruff-0.9.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b9aab82bb20afd5f596527045c01e6ae25a718ff1784cb92947bff1f83068b00"},
|
{file = "ruff-0.9.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a187171e7c09efa4b4cc30ee5d0d55a8d6c5311b3e1b74ac5cb96cc89bafc43c"},
|
||||||
{file = "ruff-0.9.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fbd337bac1cfa96be615f6efcd4bc4d077edbc127ef30e2b8ba2a27e18c054d4"},
|
{file = "ruff-0.9.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c59ab92f8e92d6725b7ded9d4a31be3ef42688a115c6d3da9457a5bda140e2b4"},
|
||||||
{file = "ruff-0.9.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82b35259b0cbf8daa22a498018e300b9bb0174c2bbb7bcba593935158a78054d"},
|
{file = "ruff-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc153c25e715be41bb228bc651c1e9b1a88d5c6e5ed0194fa0dfea02b026439"},
|
||||||
{file = "ruff-0.9.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b6a9701d1e371bf41dca22015c3f89769da7576884d2add7317ec1ec8cb9c3c"},
|
{file = "ruff-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:646909a1e25e0dc28fbc529eab8eb7bb583079628e8cbe738192853dbbe43af5"},
|
||||||
{file = "ruff-0.9.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cc53e68b3c5ae41e8faf83a3b89f4a5d7b2cb666dff4b366bb86ed2a85b481f"},
|
{file = "ruff-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a5a46e09355695fbdbb30ed9889d6cf1c61b77b700a9fafc21b41f097bfbba4"},
|
||||||
{file = "ruff-0.9.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:8efd9da7a1ee314b910da155ca7e8953094a7c10d0c0a39bfde3fcfd2a015684"},
|
{file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c4bb09d2bbb394e3730d0918c00276e79b2de70ec2a5231cd4ebb51a57df9ba1"},
|
||||||
{file = "ruff-0.9.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3292c5a22ea9a5f9a185e2d131dc7f98f8534a32fb6d2ee7b9944569239c648d"},
|
{file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96a87ec31dc1044d8c2da2ebbed1c456d9b561e7d087734336518181b26b3aa5"},
|
||||||
{file = "ruff-0.9.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a605fdcf6e8b2d39f9436d343d1f0ff70c365a1e681546de0104bef81ce88df"},
|
{file = "ruff-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb7554aca6f842645022fe2d301c264e6925baa708b392867b7a62645304df4"},
|
||||||
{file = "ruff-0.9.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c547f7f256aa366834829a08375c297fa63386cbe5f1459efaf174086b564247"},
|
{file = "ruff-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cabc332b7075a914ecea912cd1f3d4370489c8018f2c945a30bcc934e3bc06a6"},
|
||||||
{file = "ruff-0.9.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d18bba3d3353ed916e882521bc3e0af403949dbada344c20c16ea78f47af965e"},
|
{file = "ruff-0.9.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:33866c3cc2a575cbd546f2cd02bdd466fed65118e4365ee538a3deffd6fcb730"},
|
||||||
{file = "ruff-0.9.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b338edc4610142355ccf6b87bd356729b62bf1bc152a2fad5b0c7dc04af77bfe"},
|
{file = "ruff-0.9.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:006e5de2621304c8810bcd2ee101587712fa93b4f955ed0985907a36c427e0c2"},
|
||||||
{file = "ruff-0.9.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:492a5e44ad9b22a0ea98cf72e40305cbdaf27fac0d927f8bc9e1df316dcc96eb"},
|
{file = "ruff-0.9.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba6eea4459dbd6b1be4e6bfc766079fb9b8dd2e5a35aff6baee4d9b1514ea519"},
|
||||||
{file = "ruff-0.9.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:af1e9e9fe7b1f767264d26b1075ac4ad831c7db976911fa362d09b2d0356426a"},
|
{file = "ruff-0.9.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:90230a6b8055ad47d3325e9ee8f8a9ae7e273078a66401ac66df68943ced029b"},
|
||||||
{file = "ruff-0.9.2-py3-none-win32.whl", hash = "sha256:71cbe22e178c5da20e1514e1e01029c73dc09288a8028a5d3446e6bba87a5145"},
|
{file = "ruff-0.9.3-py3-none-win32.whl", hash = "sha256:eabe5eb2c19a42f4808c03b82bd313fc84d4e395133fb3fc1b1516170a31213c"},
|
||||||
{file = "ruff-0.9.2-py3-none-win_amd64.whl", hash = "sha256:c5e1d6abc798419cf46eed03f54f2e0c3adb1ad4b801119dedf23fcaf69b55b5"},
|
{file = "ruff-0.9.3-py3-none-win_amd64.whl", hash = "sha256:040ceb7f20791dfa0e78b4230ee9dce23da3b64dd5848e40e3bf3ab76468dcf4"},
|
||||||
{file = "ruff-0.9.2-py3-none-win_arm64.whl", hash = "sha256:a1b63fa24149918f8b37cef2ee6fff81f24f0d74b6f0bdc37bc3e1f2143e41c6"},
|
{file = "ruff-0.9.3-py3-none-win_arm64.whl", hash = "sha256:800d773f6d4d33b0a3c60e2c6ae8f4c202ea2de056365acfa519aa48acf28e0b"},
|
||||||
{file = "ruff-0.9.2.tar.gz", hash = "sha256:b5eceb334d55fae5f316f783437392642ae18e16dcf4f1858d55d3c2a0f8f5d0"},
|
{file = "ruff-0.9.3.tar.gz", hash = "sha256:8293f89985a090ebc3ed1064df31f3b4b56320cdfcec8b60d3295bddb955c22a"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -5754,13 +5754,13 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "starlette"
|
name = "starlette"
|
||||||
version = "0.45.2"
|
version = "0.45.3"
|
||||||
description = "The little ASGI library that shines."
|
description = "The little ASGI library that shines."
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.9"
|
python-versions = ">=3.9"
|
||||||
files = [
|
files = [
|
||||||
{file = "starlette-0.45.2-py3-none-any.whl", hash = "sha256:4daec3356fb0cb1e723a5235e5beaf375d2259af27532958e2d79df549dad9da"},
|
{file = "starlette-0.45.3-py3-none-any.whl", hash = "sha256:dfb6d332576f136ec740296c7e8bb8c8a7125044e7c6da30744718880cdd059d"},
|
||||||
{file = "starlette-0.45.2.tar.gz", hash = "sha256:bba1831d15ae5212b22feab2f218bab6ed3cd0fc2dc1d4442443bb1ee52260e0"},
|
{file = "starlette-0.45.3.tar.gz", hash = "sha256:2cbcba2a75806f8a41c722141486f37c28e30a0921c5f6fe4346cb0dcee1302f"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
|
@ -9,11 +9,10 @@ authors = [
|
|||||||
"Shane Solomon <shane.solomon@microsoft.com>",
|
"Shane Solomon <shane.solomon@microsoft.com>",
|
||||||
"Kenny Zhang <zhangken@microsoft.com>",
|
"Kenny Zhang <zhangken@microsoft.com>",
|
||||||
]
|
]
|
||||||
description = ""
|
description = "A web API wrapper around the official GraphRAG library."
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
name = "graphrag-solution-accelerator"
|
name = "graphrag-app"
|
||||||
package-mode = false
|
version = "1.2.0"
|
||||||
version = "1.0.1"
|
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "~3.10"
|
python = "~3.10"
|
||||||
|
@ -10,8 +10,8 @@ from azure.cosmos import CosmosClient, PartitionKey
|
|||||||
from azure.storage.blob import BlobServiceClient
|
from azure.storage.blob import BlobServiceClient
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
from src.main import app
|
from graphrag_app.main import app
|
||||||
from src.utils.common import sanitize_name
|
from graphrag_app.utils.common import sanitize_name
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
|
@ -8,7 +8,7 @@ from fastapi.testclient import TestClient
|
|||||||
|
|
||||||
|
|
||||||
def test_get_report(container_with_index_files: str, client: 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
|
# retrieve a report that exists
|
||||||
response = client.get(f"/source/report/{container_with_index_files}/1")
|
response = client.get(f"/source/report/{container_with_index_files}/1")
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
@ -8,8 +8,8 @@ from typing import Generator
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from src.typing.pipeline import PipelineJobState
|
from graphrag_app.typing.pipeline import PipelineJobState
|
||||||
from src.utils.pipeline import PipelineJob
|
from graphrag_app.utils.pipeline import PipelineJob
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture()
|
@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):
|
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()
|
pipeline_job = PipelineJob()
|
||||||
|
|
||||||
# test creating a new entry
|
# test creating a new entry
|
||||||
|
@ -5,7 +5,7 @@ from azure.cosmos import CosmosClient
|
|||||||
from azure.storage.blob import BlobServiceClient
|
from azure.storage.blob import BlobServiceClient
|
||||||
from azure.storage.blob.aio import BlobServiceClient as BlobServiceClientAsync
|
from azure.storage.blob.aio import BlobServiceClient as BlobServiceClientAsync
|
||||||
|
|
||||||
from src.utils.azure_clients import (
|
from graphrag_app.utils.azure_clients import (
|
||||||
AzureClientManager,
|
AzureClientManager,
|
||||||
_BlobServiceClientSingleton,
|
_BlobServiceClientSingleton,
|
||||||
_BlobServiceClientSingletonAsync,
|
_BlobServiceClientSingletonAsync,
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from src.utils.common import (
|
from graphrag_app.utils.common import (
|
||||||
retrieve_original_blob_container_name,
|
retrieve_original_blob_container_name,
|
||||||
sanitize_name,
|
sanitize_name,
|
||||||
validate_blob_container_name,
|
validate_blob_container_name,
|
||||||
@ -12,7 +12,7 @@ from src.utils.common import (
|
|||||||
|
|
||||||
|
|
||||||
def test_validate_blob_container_name():
|
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
|
# test valid container name
|
||||||
assert validate_blob_container_name("validcontainername") is None
|
assert validate_blob_container_name("validcontainername") is None
|
||||||
# test invalid container name
|
# 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):
|
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
|
# test retrieving a valid container name
|
||||||
original_name = container_with_graphml_file
|
original_name = container_with_graphml_file
|
||||||
sanitized_name = sanitize_name(original_name)
|
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):
|
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
|
original_name = container_with_graphml_file
|
||||||
sanitized_name = sanitize_name(original_name)
|
sanitized_name = sanitize_name(original_name)
|
||||||
# test with a valid index and valid file
|
# test with a valid index and valid file
|
||||||
|
@ -2,13 +2,13 @@ from unittest.mock import patch
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from src.logger.load_logger import load_pipeline_logger
|
from graphrag_app.logger.load_logger import load_pipeline_logger
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_app_insights_workflow_callbacks():
|
def mock_app_insights_workflow_callbacks():
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.application_insights_workflow_callbacks.ApplicationInsightsWorkflowCallbacks"
|
"graphrag_app.logger.application_insights_workflow_callbacks.ApplicationInsightsWorkflowCallbacks"
|
||||||
) as mock_app_insights_workflow_callbacks:
|
) as mock_app_insights_workflow_callbacks:
|
||||||
yield mock_app_insights_workflow_callbacks
|
yield mock_app_insights_workflow_callbacks
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ def mock_file_workflow_callbacks():
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_blob_workflow_callbacks():
|
def mock_blob_workflow_callbacks():
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.blob_workflow_callbacks.BlobWorkflowCallbacks"
|
"graphrag_app.logger.blob_workflow_callbacks.BlobWorkflowCallbacks"
|
||||||
) as mock_blob_workflow_callbacks:
|
) as mock_blob_workflow_callbacks:
|
||||||
yield mock_blob_workflow_callbacks
|
yield mock_blob_workflow_callbacks
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ def mock_blob_workflow_callbacks():
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_console_workflow_callbacks():
|
def mock_console_workflow_callbacks():
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.console_workflow_callbacks.ConsoleWorkflowCallbacks"
|
"graphrag_app.logger.console_workflow_callbacks.ConsoleWorkflowCallbacks"
|
||||||
) as mock_console_workflow_callbacks:
|
) as mock_console_workflow_callbacks:
|
||||||
yield mock_console_workflow_callbacks
|
yield mock_console_workflow_callbacks
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ from unittest.mock import MagicMock, patch
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from src.logger.application_insights_workflow_callbacks import (
|
from graphrag_app.logger.application_insights_workflow_callbacks import (
|
||||||
ApplicationInsightsWorkflowCallbacks,
|
ApplicationInsightsWorkflowCallbacks,
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ from src.logger.application_insights_workflow_callbacks import (
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_logger():
|
def mock_logger():
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.application_insights_workflow_callbacks.logging.getLogger"
|
"graphrag_app.logger.application_insights_workflow_callbacks.logging.getLogger"
|
||||||
) as mock_get_logger:
|
) as mock_get_logger:
|
||||||
mock_logger_instance = MagicMock(spec=logging.Logger)
|
mock_logger_instance = MagicMock(spec=logging.Logger)
|
||||||
mock_get_logger.return_value = mock_logger_instance
|
mock_get_logger.return_value = mock_logger_instance
|
||||||
@ -24,7 +24,7 @@ def mock_logger():
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def workflow_callbacks(mock_logger):
|
def workflow_callbacks(mock_logger):
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.application_insights_workflow_callbacks.ApplicationInsightsWorkflowCallbacks.__init__",
|
"graphrag_app.logger.application_insights_workflow_callbacks.ApplicationInsightsWorkflowCallbacks.__init__",
|
||||||
return_value=None,
|
return_value=None,
|
||||||
):
|
):
|
||||||
instance = ApplicationInsightsWorkflowCallbacks()
|
instance = ApplicationInsightsWorkflowCallbacks()
|
||||||
|
@ -5,13 +5,13 @@ from unittest.mock import patch
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from src.logger.blob_workflow_callbacks import BlobWorkflowCallbacks
|
from graphrag_app.logger.blob_workflow_callbacks import BlobWorkflowCallbacks
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_blob_service_client():
|
def mock_blob_service_client():
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.blob_workflow_callbacks.BlobServiceClient"
|
"graphrag_app.logger.blob_workflow_callbacks.BlobServiceClient"
|
||||||
) as mock_blob_service_client:
|
) as mock_blob_service_client:
|
||||||
yield mock_blob_service_client
|
yield mock_blob_service_client
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ def mock_blob_service_client():
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def workflow_callbacks(mock_blob_service_client):
|
def workflow_callbacks(mock_blob_service_client):
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.blob_workflow_callbacks.BlobWorkflowCallbacks.__init__",
|
"graphrag_app.logger.blob_workflow_callbacks.BlobWorkflowCallbacks.__init__",
|
||||||
return_value=None,
|
return_value=None,
|
||||||
):
|
):
|
||||||
instance = BlobWorkflowCallbacks()
|
instance = BlobWorkflowCallbacks()
|
||||||
|
@ -6,13 +6,13 @@ from unittest.mock import MagicMock, patch
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from src.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks
|
from graphrag_app.logger.console_workflow_callbacks import ConsoleWorkflowCallbacks
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def mock_logger():
|
def mock_logger():
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.console_workflow_callbacks.logging.getLogger"
|
"graphrag_app.logger.console_workflow_callbacks.logging.getLogger"
|
||||||
) as mock_get_logger:
|
) as mock_get_logger:
|
||||||
mock_logger_instance = MagicMock(spec=logging.Logger)
|
mock_logger_instance = MagicMock(spec=logging.Logger)
|
||||||
mock_get_logger.return_value = mock_logger_instance
|
mock_get_logger.return_value = mock_logger_instance
|
||||||
@ -22,7 +22,7 @@ def mock_logger():
|
|||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def workflow_callbacks(mock_logger):
|
def workflow_callbacks(mock_logger):
|
||||||
with patch(
|
with patch(
|
||||||
"src.logger.console_workflow_callbacks.ConsoleWorkflowCallbacks.__init__",
|
"graphrag_app.logger.console_workflow_callbacks.ConsoleWorkflowCallbacks.__init__",
|
||||||
return_value=None,
|
return_value=None,
|
||||||
):
|
):
|
||||||
instance = ConsoleWorkflowCallbacks()
|
instance = ConsoleWorkflowCallbacks()
|
||||||
|
@ -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.create_pipeline_config import create_pipeline_config
|
||||||
from graphrag.index.typing import PipelineRunResult
|
from graphrag.index.typing import PipelineRunResult
|
||||||
|
|
||||||
from ...src.logger import (
|
from graphrag_app.logger import (
|
||||||
PipelineJobUpdater,
|
PipelineJobUpdater,
|
||||||
load_pipeline_logger,
|
load_pipeline_logger,
|
||||||
)
|
)
|
||||||
from ...src.typing.pipeline import PipelineJobState
|
from graphrag_app.typing.pipeline import PipelineJobState
|
||||||
from ...src.utils.azure_clients import AzureClientManager
|
from graphrag_app.utils.azure_clients import AzureClientManager
|
||||||
from ...src.utils.common import sanitize_name
|
from graphrag_app.utils.common import sanitize_name
|
||||||
from ...src.utils.pipeline import PipelineJob
|
from graphrag_app.utils.pipeline import PipelineJob
|
||||||
|
|
||||||
|
|
||||||
def start_indexing_job(index_name: str):
|
def start_indexing_job(index_name: str):
|
||||||
return 0
|
|
||||||
print("Start indexing job...")
|
print("Start indexing job...")
|
||||||
# get sanitized name
|
# get sanitized name
|
||||||
sanitized_index_name = sanitize_name(index_name)
|
sanitized_index_name = sanitize_name(index_name)
|
@ -10,7 +10,6 @@ ENV GRAPHRAG_VERSION=v${GRAPHRAG_VERSION}
|
|||||||
ENV PIP_ROOT_USER_ACTION=ignore
|
ENV PIP_ROOT_USER_ACTION=ignore
|
||||||
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
ENV PIP_DISABLE_PIP_VERSION_CHECK=1
|
||||||
ENV SETUPTOOLS_USE_DISTUTILS=stdlib
|
ENV SETUPTOOLS_USE_DISTUTILS=stdlib
|
||||||
ENV PYTHONPATH=/backend
|
|
||||||
ENV TIKTOKEN_CACHE_DIR=/opt/tiktoken_cache/
|
ENV TIKTOKEN_CACHE_DIR=/opt/tiktoken_cache/
|
||||||
|
|
||||||
COPY backend /backend
|
COPY backend /backend
|
||||||
@ -26,4 +25,4 @@ RUN python -c "import tiktoken; tiktoken.encoding_for_model('gpt-3.5-turbo'); ti
|
|||||||
|
|
||||||
WORKDIR /backend
|
WORKDIR /backend
|
||||||
EXPOSE 80
|
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"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user