ai-pipeline-core 0.4.1__tar.gz → 0.4.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/PKG-INFO +1 -1
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/__init__.py +1 -1
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/deployment/base.py +35 -11
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/pyproject.toml +1 -1
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/.gitignore +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/LICENSE +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/README.md +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/deployment/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/deployment/contract.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/deployment/deploy.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/deployment/helpers.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/deployment/progress.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/deployment/remote.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/__main__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/cli.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/extractor.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/guide_builder.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/trimmer.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/validator.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/_summary.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/_summary_worker.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/clickhouse.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/factory.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/local.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/memory.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/protocol.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/_context_vars.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/_hashing.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/attachment.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/context.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/document.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/mime_type.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/utils.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/exceptions.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/images/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/images/_processing.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/llm/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/llm/ai_messages.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/llm/client.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/llm/model_options.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/llm/model_response.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/llm/model_types.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/logging/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/logging/logging.yml +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/logging/logging_config.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/logging/logging_mixin.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_auto_summary.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_config.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_content.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_processor.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_summary.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_types.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_writer.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_document_tracking.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_initialization.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_logging_bridge.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_summary.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_tracking/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_tracking/_client.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_tracking/_internal.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_tracking/_models.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_tracking/_processor.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_tracking/_service.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_tracking/_writer.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/tracing.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/pipeline/__init__.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/pipeline/decorators.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/pipeline/options.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/prompt_manager.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/py.typed +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/settings.py +0 -0
- {ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/testing.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ai-pipeline-core
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
Summary: Core utilities for AI-powered processing pipelines using prefect
|
|
5
5
|
Project-URL: Homepage, https://github.com/bbarwik/ai-pipeline-core
|
|
6
6
|
Project-URL: Repository, https://github.com/bbarwik/ai-pipeline-core
|
|
@@ -51,6 +51,7 @@ from .helpers import (
|
|
|
51
51
|
send_webhook,
|
|
52
52
|
upload_documents,
|
|
53
53
|
)
|
|
54
|
+
from .progress import flow_context, webhook_worker
|
|
54
55
|
|
|
55
56
|
logger = get_pipeline_logger(__name__)
|
|
56
57
|
|
|
@@ -132,7 +133,7 @@ class FlowCallable(Protocol):
|
|
|
132
133
|
output_document_types: list[type[Document]]
|
|
133
134
|
estimated_minutes: int
|
|
134
135
|
|
|
135
|
-
def __call__(self, project_name: str, documents: list[Document], flow_options: FlowOptions) -> Any: # type: ignore[type-arg]
|
|
136
|
+
def __call__(self, project_name: str, documents: list[Document], flow_options: FlowOptions | dict[str, Any]) -> Any: # type: ignore[type-arg]
|
|
136
137
|
"""Execute the flow with standard pipeline signature."""
|
|
137
138
|
...
|
|
138
139
|
|
|
@@ -518,16 +519,39 @@ class PipelineDeployment(Generic[TOptions, TResult]):
|
|
|
518
519
|
else:
|
|
519
520
|
current_docs = input_docs
|
|
520
521
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
522
|
+
# Set up intra-flow progress context so progress_update() works inside flows
|
|
523
|
+
flow_minutes = tuple(getattr(f, "estimated_minutes", 1) for f in self.flows)
|
|
524
|
+
completed_mins = sum(flow_minutes[: max(step - 1, 0)])
|
|
525
|
+
progress_queue: asyncio.Queue[ProgressRun | None] = asyncio.Queue()
|
|
526
|
+
wh_url = context.progress_webhook_url or ""
|
|
527
|
+
worker = asyncio.create_task(webhook_worker(progress_queue, wh_url)) if wh_url else None
|
|
528
|
+
|
|
529
|
+
with flow_context(
|
|
530
|
+
webhook_url=wh_url,
|
|
531
|
+
project_name=project_name,
|
|
532
|
+
run_id=flow_run_id,
|
|
533
|
+
flow_run_id=flow_run_id,
|
|
534
|
+
flow_name=flow_name,
|
|
535
|
+
step=step,
|
|
536
|
+
total_steps=total_steps,
|
|
537
|
+
flow_minutes=flow_minutes,
|
|
538
|
+
completed_minutes=completed_mins,
|
|
539
|
+
queue=progress_queue,
|
|
540
|
+
):
|
|
541
|
+
try:
|
|
542
|
+
await active_flow(project_name, current_docs, options.model_dump())
|
|
543
|
+
except Exception as e:
|
|
544
|
+
# Upload partial results on failure
|
|
545
|
+
if context.output_documents_urls and store:
|
|
546
|
+
all_docs = await store.load(run_scope, self._all_document_types())
|
|
547
|
+
await upload_documents(all_docs, context.output_documents_urls)
|
|
548
|
+
await self._send_completion(context, flow_run_id, project_name, result=None, error=str(e))
|
|
549
|
+
completion_sent = True
|
|
550
|
+
raise
|
|
551
|
+
finally:
|
|
552
|
+
progress_queue.put_nowait(None)
|
|
553
|
+
if worker:
|
|
554
|
+
await worker
|
|
531
555
|
|
|
532
556
|
# Per-flow upload (load from store since @pipeline_flow saves there)
|
|
533
557
|
if context.output_documents_urls and store and output_types:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/__init__.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/__main__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/extractor.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/guide_builder.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/trimmer.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/docs_generator/validator.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/__init__.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/_summary.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/_summary_worker.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/clickhouse.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/document_store/protocol.py
RENAMED
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/documents/_context_vars.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/logging/logging_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/__init__.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_config.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_content.py
RENAMED
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_summary.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_types.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_debug/_writer.py
RENAMED
|
File without changes
|
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_initialization.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_logging_bridge.py
RENAMED
|
File without changes
|
{ai_pipeline_core-0.4.1 → ai_pipeline_core-0.4.3}/ai_pipeline_core/observability/_summary.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|