ai-pipeline-core 0.4.0__tar.gz → 0.4.2__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.
Files changed (77) hide show
  1. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/PKG-INFO +1 -1
  2. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/__init__.py +1 -1
  3. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/deployment/base.py +2 -2
  4. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/deployment/deploy.py +19 -5
  5. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/pipeline/options.py +1 -1
  6. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/pyproject.toml +2 -2
  7. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/.gitignore +0 -0
  8. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/LICENSE +0 -0
  9. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/README.md +0 -0
  10. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/deployment/__init__.py +0 -0
  11. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/deployment/contract.py +0 -0
  12. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/deployment/helpers.py +0 -0
  13. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/deployment/progress.py +0 -0
  14. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/deployment/remote.py +0 -0
  15. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/docs_generator/__init__.py +0 -0
  16. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/docs_generator/__main__.py +0 -0
  17. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/docs_generator/cli.py +0 -0
  18. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/docs_generator/extractor.py +0 -0
  19. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/docs_generator/guide_builder.py +0 -0
  20. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/docs_generator/trimmer.py +0 -0
  21. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/docs_generator/validator.py +0 -0
  22. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/document_store/__init__.py +0 -0
  23. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/document_store/_summary.py +0 -0
  24. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/document_store/_summary_worker.py +0 -0
  25. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/document_store/clickhouse.py +0 -0
  26. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/document_store/factory.py +0 -0
  27. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/document_store/local.py +0 -0
  28. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/document_store/memory.py +0 -0
  29. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/document_store/protocol.py +0 -0
  30. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/documents/__init__.py +0 -0
  31. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/documents/_context_vars.py +0 -0
  32. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/documents/_hashing.py +0 -0
  33. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/documents/attachment.py +0 -0
  34. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/documents/context.py +0 -0
  35. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/documents/document.py +0 -0
  36. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/documents/mime_type.py +0 -0
  37. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/documents/utils.py +0 -0
  38. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/exceptions.py +0 -0
  39. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/images/__init__.py +0 -0
  40. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/images/_processing.py +0 -0
  41. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/llm/__init__.py +0 -0
  42. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/llm/ai_messages.py +0 -0
  43. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/llm/client.py +0 -0
  44. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/llm/model_options.py +0 -0
  45. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/llm/model_response.py +0 -0
  46. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/llm/model_types.py +0 -0
  47. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/logging/__init__.py +0 -0
  48. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/logging/logging.yml +0 -0
  49. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/logging/logging_config.py +0 -0
  50. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/logging/logging_mixin.py +0 -0
  51. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/__init__.py +0 -0
  52. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_debug/__init__.py +0 -0
  53. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_debug/_auto_summary.py +0 -0
  54. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_debug/_config.py +0 -0
  55. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_debug/_content.py +0 -0
  56. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_debug/_processor.py +0 -0
  57. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_debug/_summary.py +0 -0
  58. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_debug/_types.py +0 -0
  59. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_debug/_writer.py +0 -0
  60. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_document_tracking.py +0 -0
  61. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_initialization.py +0 -0
  62. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_logging_bridge.py +0 -0
  63. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_summary.py +0 -0
  64. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_tracking/__init__.py +0 -0
  65. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_tracking/_client.py +0 -0
  66. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_tracking/_internal.py +0 -0
  67. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_tracking/_models.py +0 -0
  68. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_tracking/_processor.py +0 -0
  69. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_tracking/_service.py +0 -0
  70. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/_tracking/_writer.py +0 -0
  71. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/observability/tracing.py +0 -0
  72. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/pipeline/__init__.py +0 -0
  73. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/pipeline/decorators.py +0 -0
  74. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/prompt_manager.py +0 -0
  75. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/py.typed +0 -0
  76. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/ai_pipeline_core/settings.py +0 -0
  77. {ai_pipeline_core-0.4.0 → ai_pipeline_core-0.4.2}/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.0
3
+ Version: 0.4.2
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
@@ -64,7 +64,7 @@ from .prompt_manager import PromptManager
64
64
  from .settings import Settings
65
65
  from .testing import disable_run_logger, prefect_test_harness
66
66
 
67
- __version__ = "0.4.0"
67
+ __version__ = "0.4.1"
68
68
 
69
69
  __all__ = [
70
70
  "AIMessageType",
@@ -132,7 +132,7 @@ class FlowCallable(Protocol):
132
132
  output_document_types: list[type[Document]]
133
133
  estimated_minutes: int
134
134
 
135
- def __call__(self, project_name: str, documents: list[Document], flow_options: FlowOptions) -> Any: # type: ignore[type-arg]
135
+ def __call__(self, project_name: str, documents: list[Document], flow_options: FlowOptions | dict[str, Any]) -> Any: # type: ignore[type-arg]
136
136
  """Execute the flow with standard pipeline signature."""
137
137
  ...
138
138
 
@@ -519,7 +519,7 @@ class PipelineDeployment(Generic[TOptions, TResult]):
519
519
  current_docs = input_docs
520
520
 
521
521
  try:
522
- await active_flow(project_name, current_docs, options)
522
+ await active_flow(project_name, current_docs, options.model_dump())
523
523
  except Exception as e:
524
524
  # Upload partial results on failure
525
525
  if context.output_documents_urls and store:
@@ -348,11 +348,12 @@ class Deployer:
348
348
 
349
349
  self._success(f"Agent '{agent_name}' uploaded ({len(build_info['files'])} files)")
350
350
 
351
- async def _upload_package(self, tarball: Path):
352
- """Upload package tarball to Google Cloud Storage.
351
+ async def _upload_package(self, tarball: Path, vendor_wheels: list[Path] | None = None):
352
+ """Upload package tarball and vendor wheels to Google Cloud Storage.
353
353
 
354
354
  Args:
355
355
  tarball: Path to the tarball to upload
356
+ vendor_wheels: Optional private dependency wheels to upload alongside
356
357
  """
357
358
  flow_folder = self.config["folder"]
358
359
  bucket = self._create_gcs_bucket(flow_folder)
@@ -365,6 +366,10 @@ class Deployer:
365
366
 
366
367
  self._success(f"Package uploaded to {flow_folder}/{tarball.name}")
367
368
 
369
+ for wheel in vendor_wheels or []:
370
+ await bucket.write_path(wheel.name, wheel.read_bytes())
371
+ self._success(f"Vendor wheel uploaded: {wheel.name}")
372
+
368
373
  async def _deploy_via_api(self, agent_builds: dict[str, dict[str, Any]] | None = None):
369
374
  """Create or update Prefect deployment using RunnerDeployment pattern.
370
375
 
@@ -420,7 +425,8 @@ class Deployer:
420
425
  "stream_output": True,
421
426
  "directory": "{{ pull_code.directory }}",
422
427
  # Use uv for fast installation (worker has it installed)
423
- "script": f"uv pip install --system ./{self.config['tarball']}",
428
+ # --find-links . resolves private dependencies from co-uploaded wheels
429
+ "script": f"uv pip install --system --find-links . ./{self.config['tarball']}",
424
430
  }
425
431
  },
426
432
  ]
@@ -488,8 +494,16 @@ class Deployer:
488
494
  # Phase 2: Build agent bundles (if configured)
489
495
  agent_builds = self._build_agents()
490
496
 
491
- # Phase 3: Upload flow package
492
- await self._upload_package(tarball)
497
+ # Phase 3: Upload flow package (include private dependency wheels from agent builds)
498
+ vendor_wheels: list[Path] = []
499
+ if agent_builds:
500
+ seen: set[str] = set()
501
+ for build_info in agent_builds.values():
502
+ for filename, filepath in build_info["files"].items():
503
+ if filename.endswith(".whl") and filename not in seen and "cli_agents" in filename:
504
+ vendor_wheels.append(filepath)
505
+ seen.add(filename)
506
+ await self._upload_package(tarball, vendor_wheels)
493
507
 
494
508
  # Phase 4: Upload agent bundles
495
509
  await self._upload_agents(agent_builds)
@@ -10,7 +10,7 @@ class FlowOptions(BaseSettings):
10
10
  for environment variable overrides. Immutable after creation.
11
11
  """
12
12
 
13
- model_config = SettingsConfigDict(frozen=True, extra="ignore")
13
+ model_config = SettingsConfigDict(frozen=True, extra="allow")
14
14
 
15
15
 
16
16
  __all__ = ["FlowOptions"]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ai-pipeline-core"
3
- version = "0.4.0"
3
+ version = "0.4.2"
4
4
  description = "Core utilities for AI-powered processing pipelines using prefect"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -228,7 +228,7 @@ reportUnusedCoroutine = "error"
228
228
  reportImplicitStringConcatenation = false
229
229
 
230
230
  [tool.bumpversion]
231
- current_version = "0.4.0"
231
+ current_version = "0.4.1"
232
232
  commit = true
233
233
  tag = true
234
234
  tag_name = "v{new_version}"