tangle-cli 0.1.12__tar.gz → 0.1.14__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.
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/PKG-INFO +5 -1
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/README.md +4 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/__init__.py +1 -1
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_compiler.py +451 -125
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_validation.py +166 -11
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/pyproject.toml +1 -1
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/pyproject.toml.orig +1 -1
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/api_cli.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/api_schema.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/api_transport.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/args_container.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/artifacts.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/artifacts_cli.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/cli.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/cli_helpers.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/cli_options.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/client.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/component_from_func.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/component_generator.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/component_inspector.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/component_publisher.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/components_cli.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/dynamic_discovery_client.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/generated_model_extensions.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/handler.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/hydration_trust.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/logger.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/models.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/module_bundler.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/openapi/__init__.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/openapi/codegen.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/openapi/parser.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_dehydrator.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_hydrator.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_run_annotations.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_run_details.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_run_manager.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_run_search.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_runner.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_runs_cli.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipeline_spec_utils.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipelines.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/pipelines_cli.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/published_components_cli.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/py.typed +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/__init__.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/cfg.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/compiler_context.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/dynamic_data.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/emit.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/errors.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/graph.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/ids.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/pipeline.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/placeholders.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/raw.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/ref.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/registered.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/subpipeline.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/task.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/task_env.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/trace.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/python_pipeline/types.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/quickstart.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/schema_validation.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/schemas/__init__.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/schemas/dehydrated_pipeline_schema.json +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/schemas/pipeline_schema.json +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/secrets.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/secrets_cli.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/utils.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/packages/tangle-cli/src/tangle_cli/version_manager.py +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/OSS-CONVENTIONS.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/PORT-README.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/SKILL.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/agents/auth-wizard.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/agents/builder.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/agents/debugger.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/agents/reporter.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/agents/researcher.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/agents/reviewer.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/agents/scenario-builder.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/data-sources.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/event-log.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/example-scenarios/01-mslr-ranking.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/example-scenarios/02-text-classification.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/example-scenarios/INDEX.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/iterating-on-runs.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/knowledge-corpus.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/secrets.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/setup.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/step-0-initialize.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/step-1-analyze.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/step-2-hypothesize.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/step-3-submit.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/step-4-monitor.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/step-5-evaluate.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/step-6-synthesize.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/step-7-decide.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/tangle-tools.md +0 -0
- {tangle_cli-0.1.12 → tangle_cli-0.1.14}/skills/tangent/references/uploading-artifacts.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: tangle-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.14
|
|
4
4
|
Summary: CLI for Tangle, the open-source ML pipeline orchestration platform
|
|
5
5
|
Author: Alexey Volkov, Tangle authors, Volv Grebennikov
|
|
6
6
|
Author-email: Alexey Volkov <alexey.volkov@ark-kun.com>, Volv Grebennikov <volv.grebennikov@shopify.com>
|
|
@@ -483,6 +483,10 @@ Notes:
|
|
|
483
483
|
|
|
484
484
|
A minimal graph uses `@pipeline` for the graph and `@task` for local Python components. `@task` functions are not executed at compile time; the compiler records call sites, emits a sibling `<output>.components.yaml` with `local_from_python` entries, and rewrites task component refs to that sidecar. Hydrate later regenerates the same component YAML from the Python source.
|
|
485
485
|
|
|
486
|
+
Sidecar entries are deduplicated by the **generated component**, not by function name. The dedup key is the module-qualified function identity — a logical module namespace derived from the project-relative source layout (`package_a/tasks.py` -> `package_a.tasks`, `pkg/__init__.py` -> `pkg`), plus `__qualname__` and the function name — together with every generation-affecting option: image (explicit or resolved `image_id`), `mode`, `resolve_root`, `dependencies_from`, the `unwrap` schema, and the source file. Runtime `__module__` is deliberately not used, because pipeline scripts are imported under throwaway UUID module names.
|
|
487
|
+
|
|
488
|
+
Call sites sharing that whole identity collapse to one entry keyed by the readable hyphenated function name (`run_dbt` -> `run-dbt`). Otherwise every colliding variant — a shared helper re-decorated with different task-level options, or `package_a.tasks.run` alongside `package_b.tasks.run` — is emitted as `run-dbt--<hash>`, where `<hash>` is a content digest of the canonical identity; no variant keeps the unsuffixed name, and each task ref points at its own. Digests are anchored at the project source directory, so fragment names are unchanged by relocating the project, compiling into a different output directory, or reordering the pipeline's calls, and they never embed image, path, or credential-bearing values.
|
|
489
|
+
|
|
486
490
|
```python
|
|
487
491
|
from cloud_pipelines import components
|
|
488
492
|
from tangle_cli.python_pipeline import In, Out, pipeline, task
|
|
@@ -457,6 +457,10 @@ Notes:
|
|
|
457
457
|
|
|
458
458
|
A minimal graph uses `@pipeline` for the graph and `@task` for local Python components. `@task` functions are not executed at compile time; the compiler records call sites, emits a sibling `<output>.components.yaml` with `local_from_python` entries, and rewrites task component refs to that sidecar. Hydrate later regenerates the same component YAML from the Python source.
|
|
459
459
|
|
|
460
|
+
Sidecar entries are deduplicated by the **generated component**, not by function name. The dedup key is the module-qualified function identity — a logical module namespace derived from the project-relative source layout (`package_a/tasks.py` -> `package_a.tasks`, `pkg/__init__.py` -> `pkg`), plus `__qualname__` and the function name — together with every generation-affecting option: image (explicit or resolved `image_id`), `mode`, `resolve_root`, `dependencies_from`, the `unwrap` schema, and the source file. Runtime `__module__` is deliberately not used, because pipeline scripts are imported under throwaway UUID module names.
|
|
461
|
+
|
|
462
|
+
Call sites sharing that whole identity collapse to one entry keyed by the readable hyphenated function name (`run_dbt` -> `run-dbt`). Otherwise every colliding variant — a shared helper re-decorated with different task-level options, or `package_a.tasks.run` alongside `package_b.tasks.run` — is emitted as `run-dbt--<hash>`, where `<hash>` is a content digest of the canonical identity; no variant keeps the unsuffixed name, and each task ref points at its own. Digests are anchored at the project source directory, so fragment names are unchanged by relocating the project, compiling into a different output directory, or reordering the pipeline's calls, and they never embed image, path, or credential-bearing values.
|
|
463
|
+
|
|
460
464
|
```python
|
|
461
465
|
from cloud_pipelines import components
|
|
462
466
|
from tangle_cli.python_pipeline import In, Out, pipeline, task
|
|
@@ -14,6 +14,6 @@ from tangle_cli.dynamic_discovery_client import TangleDynamicDiscoveryClient
|
|
|
14
14
|
try:
|
|
15
15
|
__version__ = metadata_version("tangle-cli")
|
|
16
16
|
except PackageNotFoundError:
|
|
17
|
-
__version__ = "0.1.
|
|
17
|
+
__version__ = "0.1.14"
|
|
18
18
|
|
|
19
19
|
__all__ = ["TangleDynamicDiscoveryClient", "__version__"]
|