dirigent-examples 0.17.3__tar.gz → 0.18.1__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.
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/PKG-INFO +3 -3
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/pyproject.toml +3 -3
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/pyproject.toml.orig +3 -3
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-remote-daemon.yaml +3 -2
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/README.md +1 -0
- dirigent_examples-0.18.1/src/dirigent_examples/shelves/patterns/importance-critical.yaml +108 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/references-cheat-sheet.yaml +7 -3
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/README.md +1 -0
- dirigent_examples-0.18.1/src/dirigent_examples/shelves/recipes/storage-keep-past-the-run.yaml +116 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/LICENSE +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/__init__.py +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/py.typed +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/composition/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/composition/chained-instances.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/composition/composition-child.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/composition/composition-parent.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/connections.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/demo/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/demo/markdown-showcase.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/demo/params-showcase.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/demo/requires.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/demo/weekly-import-malawi.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/demo/weekly-import-nepal.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-build-push.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-build-run.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-compose-database.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-compose-failing-up.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-compose-file.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-compose-profiles-env.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-compose-stack.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-hello.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-run-failing-teardown.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/docker-ticker.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/execute/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/execute/long-log.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/failure/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/failure/error-handler.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/failure/optional-step.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/failure/retries.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/failure/retry-budget.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/failure/step-timeout.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/git/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/git/git-checkout-build.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/git/git-checkout-compose.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/git/git-checkout-public.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/deep-chain.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/fan-in.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/fan-out.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/linear.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/parallel-branches.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/parallel-sleep.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/skip-diamond.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/wide-fan.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/hello-world.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/feeds-composition.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/gdacs-disaster-updates.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/github-releases-relay.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/hdx-dataset-watch.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/kobo-submissions-to-csv.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/nominatim-geocode-facilities.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/odk-central-submissions.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/open-meteo-weekly-report.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/overpass-health-facilities.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/usgs-earthquakes-alert.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/who-gho-indicators-to-parquet.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/wikidata-country-reference.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/open-data/world-bank-population-trend.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/concurrency-queue.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/concurrency-replace.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/concurrency-skip.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/connections-referenced-vs-carried.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/deadline-on-a-sensor.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/fan-out-continue.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/fan-out-fail-fast.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/fan-out-from-params.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/fan-out-item-wise.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/fan-out-literal-list.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/fan-out-nested-objects.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/fan-out-then-join.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/log-levels.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/outputs-inline-vs-storage.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/params-every-type.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/params-validation-refuses.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/pipeline-run-child.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/pipeline-run-fire-and-forget.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/pipeline-run-strict.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/pipeline-run-wait.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/pipeline-run-with-params.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/poll-cadence.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/priority-layered.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/retry-budget-exhausted.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/retry-exponential-backoff.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/retry-only-transient.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/retry-with-jitter.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/rule-all-done.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/rule-all-success.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/rule-always.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/rule-one-failed.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/schedule-at-once.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/schedule-cron-timezone.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/schedule-interval.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/schedule-window-half-open.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/sensor-http-ready.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/sensor-storage-exists.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/step-names-and-keys.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/timeout-fails-the-step.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/timeout-skips-the-step.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/webhook-mapping-nested-payload.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/patterns/webhook-signed.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/preview/s3-parquet-to-ingestion.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/python/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/python/apply_and_run.py +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/python/ci_gate.py +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/python/connections.py +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/python/error_handling.py +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/python/follow_logs.py +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/python/list_and_filter.py +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/queues/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/queues/kafka-consume-then-transform.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/queues/kafka-produce-then-consume.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/queues/rabbitmq-consume-ack-on-success.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/queues/report-to-kafka.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/queues/report-to-rabbitmq.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/csv-header-rules.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/csv-to-ndjson.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/etl-csv-clean-validate-parquet.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/filter-by-predicate.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/filter-then-map-then-reduce.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-fetch-validate-post.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-follow-redirects.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-get-with-query.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-headers-and-auth-connection.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-post-file-from-storage.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-post-json-echo.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-post-report.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-save-body-to-storage.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-success-status-list.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/http-timeout-override.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-dedupe-by-key.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-defaults-and-nulls.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-group-by-and-sum.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-join-two-lists.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-long-to-wide.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-nested-to-flat.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-pivot-wide-to-long.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-running-totals.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-string-cleaning.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-top-n.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-validate-in-jq-vs-schema.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/jq-window-dates.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/json-to-csv-flattening.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/large-output-to-storage.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/map-enrich-with-lookup.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/ndjson-to-parquet.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/pagination-by-fan-out.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/parquet-round-trip-types.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/reconcile-two-sources.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/report-built-in.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/report-daily-digest.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/report-to-file.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/report-to-webhook.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/schema-carried.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/schema-formats.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/schema-referenced.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/schema-refuses-then-rule.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/storage-copy-dated-archive.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/storage-exists-gate.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/storage-manifest-of-a-fan-out.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/storage-write-then-read.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/webhook-post-hmac.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/recipes/webhook-post-summary.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/s3/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/s3/report-to-s3.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/s3/s3-copy-and-verify.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/s3/s3-csv-report.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/s3/s3-parquet-report.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/s3/s3-round-trip.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/schemas/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/schemas/echo-reading.json +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/schemas/ou-record.json +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/schemas/station-reading.json +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sensors/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sensors/sensor-gate.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sensors/time-window.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sql/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sql/duckdb-parquet-to-report.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sql/sql-postgres-readonly.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sql/sql-query-to-storage.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sql/sql-sqlite-roundtrip.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/sql/warehouse.sql +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/csv-report.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/jq-filter-and-map.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/jq-group-and-aggregate.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/jq-join-two-sources.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/jq-reshape.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/jq-stream-through-storage.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/ndjson-round-trip.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/parquet-round-trip.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/std-convert-fan-out.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/xml-feed-to-ndjson.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/transform/yaml-config-to-json.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/triggers/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/triggers/at-one-time.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/triggers/cron-nightly.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/triggers/cron-windowed.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/triggers/document-nightly.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/triggers/interval-rolling.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/triggers/managed-and-manual.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/triggers/webhook-trigger.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/validate/README.md +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/validate/expects-a-shape.yaml +0 -0
- {dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/validate/the-shape-is-wrong.yaml +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dirigent-examples
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.18.1
|
|
4
4
|
Summary: The dirigent example corpus: the shelves of runnable documents, installed.
|
|
5
5
|
License-Expression: LicenseRef-Proprietary
|
|
6
6
|
License-File: LICENSE
|
|
7
7
|
Classifier: Programming Language :: Python :: 3
|
|
8
8
|
Classifier: Programming Language :: Python :: 3.13
|
|
9
|
-
Requires-Dist: dirigent-client==0.
|
|
10
|
-
Requires-Dist: dirigent-plugin==0.
|
|
9
|
+
Requires-Dist: dirigent-client==0.18.1
|
|
10
|
+
Requires-Dist: dirigent-plugin==0.18.1
|
|
11
11
|
Requires-Python: >=3.13
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "dirigent-examples"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.18.1"
|
|
4
4
|
description = "The dirigent example corpus: the shelves of runnable documents, installed."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.13"
|
|
@@ -11,8 +11,8 @@ classifiers = [
|
|
|
11
11
|
"Programming Language :: Python :: 3.13",
|
|
12
12
|
]
|
|
13
13
|
dependencies = [
|
|
14
|
-
"dirigent-client==0.
|
|
15
|
-
"dirigent-plugin==0.
|
|
14
|
+
"dirigent-client==0.18.1",
|
|
15
|
+
"dirigent-plugin==0.18.1",
|
|
16
16
|
]
|
|
17
17
|
|
|
18
18
|
[project.entry-points."dirigent.plugins.v1"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "dirigent-examples"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.18.1"
|
|
4
4
|
description = "The dirigent example corpus: the shelves of runnable documents, installed."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.13"
|
|
@@ -12,8 +12,8 @@ classifiers = [
|
|
|
12
12
|
]
|
|
13
13
|
dependencies = [
|
|
14
14
|
# The python/ shelf is SDK scripts a reader runs, so the corpus carries the client.
|
|
15
|
-
"dirigent-client==0.
|
|
16
|
-
"dirigent-plugin==0.
|
|
15
|
+
"dirigent-client==0.18.1",
|
|
16
|
+
"dirigent-plugin==0.18.1",
|
|
17
17
|
]
|
|
18
18
|
|
|
19
19
|
[project.entry-points."dirigent.plugins.v1"]
|
|
@@ -26,8 +26,9 @@
|
|
|
26
26
|
# only as a 0600 file under the run's work directory that goes when the step leaves. A client
|
|
27
27
|
# key for a docker daemon is a credential for root on whatever that daemon runs on.
|
|
28
28
|
#
|
|
29
|
-
# TO MAKE IT YOURS: point host at your own daemon.
|
|
30
|
-
#
|
|
29
|
+
# TO MAKE IT YOURS: point host at your own daemon. The worker speaks tcp:// and unix://, and
|
|
30
|
+
# a daemon that needs no TLS -- a unix socket on another path -- takes host alone and none of
|
|
31
|
+
# the three PEMs.
|
|
31
32
|
|
|
32
33
|
format: dirigent/v1
|
|
33
34
|
kind: pipeline
|
|
@@ -117,6 +117,7 @@ local run is handed with `--also-apply examples/patterns/pipeline-run-child.yaml
|
|
|
117
117
|
| [sensor-storage-exists.yaml](sensor-storage-exists.yaml) | A glob, a size floor, and a drop that actually lands | `succeeded` |
|
|
118
118
|
| [log-levels.yaml](log-levels.yaml) | `--log-level PATTERN=LEVEL`, a run setting rather than a document one | `succeeded` |
|
|
119
119
|
| [priority-layered.yaml](priority-layered.yaml) | `priority` on the document, on a schedule, and on one ad hoc run | `succeeded` |
|
|
120
|
+
| [importance-critical.yaml](importance-critical.yaml) | `importance` beside `priority`, and the alert rule that reads it | `succeeded` |
|
|
120
121
|
| [connections-referenced-vs-carried.yaml](connections-referenced-vs-carried.yaml) | Named, carried, and absolute; needs `--connections` | `succeeded` |
|
|
121
122
|
|
|
122
123
|
## Running them
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# How much a pipeline matters, which is a different question from how urgently it runs.
|
|
2
|
+
#
|
|
3
|
+
# A document carries TWO words that sound alike and are not:
|
|
4
|
+
#
|
|
5
|
+
# priority: low | normal | high when the claim takes this pipeline's attempts
|
|
6
|
+
# importance: routine | normal | critical how much it matters that this pipeline works
|
|
7
|
+
#
|
|
8
|
+
# They are deliberately spelled from different vocabularies so no one reads them as one
|
|
9
|
+
# scale. THIS PIPELINE IS BOTH: low priority and critical importance. It runs behind
|
|
10
|
+
# everything a person is waiting on, because it is a slow nightly reconciliation and nobody
|
|
11
|
+
# is watching it go. And when it fails, somebody is woken, because the ledger it writes is
|
|
12
|
+
# what the morning's payments are drawn from.
|
|
13
|
+
#
|
|
14
|
+
# WHO READS EACH ONE. `priority` is read by the claim, once per attempt, and it is pinned on
|
|
15
|
+
# the run at creation. `importance` is read by the alerting rules, when a run settles: a rule
|
|
16
|
+
# may name the LEAST importance a pipeline must carry before it fires.
|
|
17
|
+
#
|
|
18
|
+
# dg alerts rules create page-ops --event run_failed --importance critical
|
|
19
|
+
# dg alerts rules create log-all --event run_failed
|
|
20
|
+
#
|
|
21
|
+
# The first fires for this pipeline and for no lesser one. The second names no importance, so
|
|
22
|
+
# it fires for every pipeline -- this one included. PAGING ADDS TO THE LOG; it does not
|
|
23
|
+
# replace it, so a critical failure raises both and an ordinary one raises only the second.
|
|
24
|
+
#
|
|
25
|
+
# `dg alerts rules list` says the floor inside the scope cell -- "global, critical and above"
|
|
26
|
+
# -- rather than in a column that would be empty on almost every row.
|
|
27
|
+
#
|
|
28
|
+
# WHERE IT IS SAID. `dg pipeline show` prints it with the other document settings, the
|
|
29
|
+
# pipelines listing marks a critical pipeline beside its title, and a listing row carries it
|
|
30
|
+
# on the wire. A routine or normal pipeline wears no mark at all: almost every pipeline is
|
|
31
|
+
# one of those, and a word on every row would say nothing.
|
|
32
|
+
#
|
|
33
|
+
# Hop by hop:
|
|
34
|
+
#
|
|
35
|
+
# read the balances the day left behind.
|
|
36
|
+
# reconcile the arithmetic that either agrees or does not.
|
|
37
|
+
# ledger what the morning is drawn from, which is the reason for the word.
|
|
38
|
+
#
|
|
39
|
+
# EXPECT THIS RUN TO SUCCEED in about a second, with no network.
|
|
40
|
+
#
|
|
41
|
+
# dg run --local examples/patterns/importance-critical.yaml
|
|
42
|
+
# dg apply examples/patterns/importance-critical.yaml
|
|
43
|
+
# dg pipeline show importance-critical # importance: critical, with the rest
|
|
44
|
+
# dg alerts rules list # the floor, inside the scope cell
|
|
45
|
+
|
|
46
|
+
format: dirigent/v1
|
|
47
|
+
kind: pipeline
|
|
48
|
+
code: importance-critical
|
|
49
|
+
name: Slow to be claimed, loud when it breaks
|
|
50
|
+
description: |
|
|
51
|
+
`importance` is one word -- `routine`, `normal` or `critical` -- and it says how much this
|
|
52
|
+
pipeline matters, not when its work is claimed. `priority` says that, and the two are
|
|
53
|
+
independent: this document is `low` priority and `critical` importance at once.
|
|
54
|
+
|
|
55
|
+
An alert rule may name the least importance a pipeline must carry before it fires, so one
|
|
56
|
+
rule pages for the critical failures and another logs every failure there is.
|
|
57
|
+
|
|
58
|
+
tags: [patterns, transform, importance, alerting]
|
|
59
|
+
|
|
60
|
+
# Behind whatever somebody is waiting on: it is slow, and nobody is watching it run.
|
|
61
|
+
priority: low
|
|
62
|
+
|
|
63
|
+
# But the morning's payments are drawn from what it writes, so a failure is worth waking for.
|
|
64
|
+
importance: critical
|
|
65
|
+
|
|
66
|
+
requires:
|
|
67
|
+
blocks:
|
|
68
|
+
- transform.jq
|
|
69
|
+
|
|
70
|
+
params:
|
|
71
|
+
type: object
|
|
72
|
+
properties:
|
|
73
|
+
accounts:
|
|
74
|
+
type: array
|
|
75
|
+
description: The accounts the day's balances are reconciled over.
|
|
76
|
+
items:
|
|
77
|
+
type: string
|
|
78
|
+
default: [settlement, float, reserve]
|
|
79
|
+
|
|
80
|
+
steps:
|
|
81
|
+
read:
|
|
82
|
+
block: transform.jq
|
|
83
|
+
config:
|
|
84
|
+
input:
|
|
85
|
+
accounts: "${params.accounts}"
|
|
86
|
+
program: |
|
|
87
|
+
{balances: [.accounts[] | {account: ., opened: 1000, closed: 1000}]}
|
|
88
|
+
|
|
89
|
+
reconcile:
|
|
90
|
+
block: transform.jq
|
|
91
|
+
depends_on: [read]
|
|
92
|
+
# `transform.jq` answers with its result under `value`, so a later step reaches for that
|
|
93
|
+
# key rather than for the output as a whole.
|
|
94
|
+
config:
|
|
95
|
+
input: "${steps.read.output.value}"
|
|
96
|
+
program: |
|
|
97
|
+
{
|
|
98
|
+
checked: (.balances | length),
|
|
99
|
+
drift: [.balances[] | select(.opened != .closed) | .account],
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
ledger:
|
|
103
|
+
block: transform.jq
|
|
104
|
+
depends_on: [reconcile]
|
|
105
|
+
config:
|
|
106
|
+
input: "${steps.reconcile.output.value}"
|
|
107
|
+
program: |
|
|
108
|
+
{settled: (.drift | length == 0), accounts: .checked}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Every ${...} form the reference language allows, each used once, in one document.
|
|
2
2
|
#
|
|
3
|
-
# THERE ARE
|
|
3
|
+
# THERE ARE FIVE NAMESPACES AND NOTHING ELSE. No expressions, no arithmetic, no conditionals,
|
|
4
4
|
# no functions, no defaults, no coalescing. A reference names a value or it does not resolve.
|
|
5
5
|
#
|
|
6
6
|
# params.<name> a run parameter
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
# run.scratch this run's own directory under the artifact root
|
|
18
18
|
# run.window.start the start of the interval this run covers
|
|
19
19
|
# run.window.end the end of it, exclusive
|
|
20
|
+
# artifacts the instance's storage root, which no run owns
|
|
20
21
|
#
|
|
21
22
|
# TWO RULES ABOUT WHAT A REFERENCE BECOMES:
|
|
22
23
|
#
|
|
@@ -53,8 +54,8 @@ kind: pipeline
|
|
|
53
54
|
code: references-cheat-sheet
|
|
54
55
|
name: The whole reference language
|
|
55
56
|
description: |
|
|
56
|
-
|
|
57
|
-
functions anywhere.
|
|
57
|
+
Five namespaces -- `params`, `steps`, `item`, `run`, `artifacts` -- and no expressions,
|
|
58
|
+
conditionals or functions anywhere.
|
|
58
59
|
|
|
59
60
|
A whole reference resolves to the typed value; one inside a larger string interpolates as
|
|
60
61
|
text; an unknown one is rejected rather than resolved to empty. Needs `--window`.
|
|
@@ -108,6 +109,9 @@ steps:
|
|
|
108
109
|
# run: the two values every run has.
|
|
109
110
|
run_id: "${run.id}"
|
|
110
111
|
scratch: "${run.scratch}"
|
|
112
|
+
# artifacts: the storage root itself, which outlives every run written under it.
|
|
113
|
+
# ${run.scratch} is swept when the run is pruned; ${artifacts}/... is not.
|
|
114
|
+
artifacts: "${artifacts}"
|
|
111
115
|
# run.window: only on a run that carries one. Half-open, so start is included and
|
|
112
116
|
# end is not.
|
|
113
117
|
window_start: "${run.window.start}"
|
|
@@ -82,6 +82,7 @@ and a parameter away in the others:
|
|
|
82
82
|
| File | The question it answers |
|
|
83
83
|
| --- | --- |
|
|
84
84
|
| [storage-write-then-read.yaml](storage-write-then-read.yaml) | How do I park a payload in storage and pick it up again a step later? |
|
|
85
|
+
| [storage-keep-past-the-run.yaml](storage-keep-past-the-run.yaml) | How do I keep something past the run that wrote it, without naming a directory or a bucket? |
|
|
85
86
|
| [storage-copy-dated-archive.yaml](storage-copy-dated-archive.yaml) | How do I keep a dated copy, and what should the key layout be? |
|
|
86
87
|
| [storage-exists-gate.yaml](storage-exists-gate.yaml) | How do I wait for an object, and what stops me reading a half-written one? |
|
|
87
88
|
| [large-output-to-storage.yaml](large-output-to-storage.yaml) | What happens to a payload past the inline threshold, and what should I do about it? |
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Fetch something and keep it, at a location the run does not own.
|
|
2
|
+
#
|
|
3
|
+
# In: a query the echo service reflects back.
|
|
4
|
+
# Out: the same body written twice -- once to the run's scratch, once to a kept location --
|
|
5
|
+
# and a summary naming both URIs side by side.
|
|
6
|
+
#
|
|
7
|
+
# TWO ANCHORS, TWO LIFETIMES. A document never names a directory or a bucket, only one of the
|
|
8
|
+
# two prefixes the engine resolves for it:
|
|
9
|
+
#
|
|
10
|
+
# ${run.scratch} this run's own prefix, <root>/runs/<run id>/... Retention sweeps it when
|
|
11
|
+
# the run is pruned, so it is where a working copy goes: a payload handed
|
|
12
|
+
# to the next step, a captured stream, anything nobody needs next month.
|
|
13
|
+
# ${artifacts} the instance's storage root itself. Retention deletes run prefixes and
|
|
14
|
+
# nothing else under it, so an object written here stays until somebody
|
|
15
|
+
# deletes it. This is where "fetch it and keep it" lands.
|
|
16
|
+
#
|
|
17
|
+
# Both resolve against whichever backend the instance is configured with -- a directory on a
|
|
18
|
+
# single node, a bucket where an s3 connection serves the scheme -- so the two steps below
|
|
19
|
+
# are the same document on either, and neither carries a path a second instance would have to
|
|
20
|
+
# rewrite. A URI naming the root directly cannot do that: file://kept/x.json reads `kept` as
|
|
21
|
+
# a host, file:///kept/x.json is an absolute path, and the backend refuses both for being
|
|
22
|
+
# outside its root.
|
|
23
|
+
#
|
|
24
|
+
# THE KEY IS STABLE, NOT DATED. ${params.name} is one name and a rerun overwrites it, which
|
|
25
|
+
# is what makes this the newest copy rather than a pile nobody prunes. Where a history is
|
|
26
|
+
# wanted instead, the key goes under a date -- storage-copy-dated-archive.yaml is that
|
|
27
|
+
# layout, and the same choice of prefix applies to it.
|
|
28
|
+
#
|
|
29
|
+
# WHAT --local DOES WITH IT. A plain --local run builds a throwaway instance and deletes it at
|
|
30
|
+
# the end, so the kept object outlives the run but not the instance. Give the run a root of
|
|
31
|
+
# its own and it is still there afterwards, and a second run finds the first run's copy:
|
|
32
|
+
#
|
|
33
|
+
# dg run --local --root ./.dirigent-local examples/recipes/storage-keep-past-the-run.yaml
|
|
34
|
+
# ls ./.dirigent-local/artifacts/kept
|
|
35
|
+
#
|
|
36
|
+
# To change it: point DIRIGENT_ARTIFACT_ROOT at s3://<bucket>/<prefix> and the kept object is
|
|
37
|
+
# an object in that bucket, with nothing in this document changed.
|
|
38
|
+
#
|
|
39
|
+
# dg run --local examples/recipes/storage-keep-past-the-run.yaml
|
|
40
|
+
# dg run --local examples/recipes/storage-keep-past-the-run.yaml -p name=stations
|
|
41
|
+
|
|
42
|
+
format: dirigent/v1
|
|
43
|
+
kind: pipeline
|
|
44
|
+
code: storage-keep-past-the-run
|
|
45
|
+
name: Something kept past its run
|
|
46
|
+
description: Fetch a body, write a working copy to the run's scratch and a kept copy under the artifact root, and read the kept one back.
|
|
47
|
+
|
|
48
|
+
tags: [recipes, http, storage, transform, starter]
|
|
49
|
+
|
|
50
|
+
requires:
|
|
51
|
+
blocks:
|
|
52
|
+
- http.request
|
|
53
|
+
- storage.write
|
|
54
|
+
- storage.read
|
|
55
|
+
- transform.jq
|
|
56
|
+
|
|
57
|
+
params:
|
|
58
|
+
type: object
|
|
59
|
+
properties:
|
|
60
|
+
name:
|
|
61
|
+
type: string
|
|
62
|
+
default: latest
|
|
63
|
+
description: The name the kept object carries; stable, so a rerun replaces it.
|
|
64
|
+
station:
|
|
65
|
+
type: string
|
|
66
|
+
default: st-1
|
|
67
|
+
description: A query value, echoed back inside the fetched body.
|
|
68
|
+
|
|
69
|
+
steps:
|
|
70
|
+
fetch:
|
|
71
|
+
block: http.request
|
|
72
|
+
config:
|
|
73
|
+
url: https://postman-echo.com/get
|
|
74
|
+
method: GET
|
|
75
|
+
query:
|
|
76
|
+
station: ${params.station}
|
|
77
|
+
max_response: 1mb
|
|
78
|
+
timeout: 30s
|
|
79
|
+
|
|
80
|
+
working:
|
|
81
|
+
block: storage.write
|
|
82
|
+
depends_on: [fetch]
|
|
83
|
+
config:
|
|
84
|
+
# The run's own prefix: gone when retention prunes the run.
|
|
85
|
+
target: ${run.scratch}/fetched.json
|
|
86
|
+
value: ${steps.fetch.output.body}
|
|
87
|
+
|
|
88
|
+
keep:
|
|
89
|
+
block: storage.write
|
|
90
|
+
depends_on: [fetch]
|
|
91
|
+
config:
|
|
92
|
+
# The root itself: nothing sweeps this, so the object is here until somebody removes it.
|
|
93
|
+
target: ${artifacts}/kept/${params.name}.json
|
|
94
|
+
value: ${steps.fetch.output.body}
|
|
95
|
+
|
|
96
|
+
back:
|
|
97
|
+
block: storage.read
|
|
98
|
+
depends_on: [keep]
|
|
99
|
+
config:
|
|
100
|
+
# Where the write said the object landed, not the same path typed twice.
|
|
101
|
+
source: ${steps.keep.output.uri}
|
|
102
|
+
max_size: 1mb
|
|
103
|
+
|
|
104
|
+
where:
|
|
105
|
+
block: transform.jq
|
|
106
|
+
depends_on: [working, back]
|
|
107
|
+
config:
|
|
108
|
+
input:
|
|
109
|
+
swept: ${steps.working.output.uri}
|
|
110
|
+
kept: ${steps.keep.output.uri}
|
|
111
|
+
station: ${steps.back.output.value.args.station}
|
|
112
|
+
program: |
|
|
113
|
+
{kept, swept, station,
|
|
114
|
+
# The run id is in one of the two URIs and not in the other, which is the whole
|
|
115
|
+
# difference between them.
|
|
116
|
+
kept_is_run_scoped: (.kept | contains("/runs/"))}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/connections.yaml
RENAMED
|
File without changes
|
{dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/demo/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/docker/README.md
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
|
|
File without changes
|
{dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/git/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/graph/README.md
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
|
{dirigent_examples-0.17.3 → dirigent_examples-0.18.1}/src/dirigent_examples/shelves/hello-world.yaml
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
|
|
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
|
|
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
|