dirigent-examples 0.15.0__py3-none-any.whl

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 (216) hide show
  1. dirigent_examples/__init__.py +22 -0
  2. dirigent_examples/py.typed +0 -0
  3. dirigent_examples/shelves/README.md +299 -0
  4. dirigent_examples/shelves/composition/README.md +18 -0
  5. dirigent_examples/shelves/composition/chained-instances.yaml +97 -0
  6. dirigent_examples/shelves/composition/composition-child.yaml +64 -0
  7. dirigent_examples/shelves/composition/composition-parent.yaml +89 -0
  8. dirigent_examples/shelves/connections.yaml +52 -0
  9. dirigent_examples/shelves/demo/README.md +19 -0
  10. dirigent_examples/shelves/demo/markdown-showcase.yaml +117 -0
  11. dirigent_examples/shelves/demo/params-showcase.yaml +92 -0
  12. dirigent_examples/shelves/demo/requires.yaml +65 -0
  13. dirigent_examples/shelves/demo/weekly-import-malawi.yaml +54 -0
  14. dirigent_examples/shelves/demo/weekly-import-nepal.yaml +75 -0
  15. dirigent_examples/shelves/docker/README.md +29 -0
  16. dirigent_examples/shelves/docker/docker-build-push.yaml +110 -0
  17. dirigent_examples/shelves/docker/docker-build-run.yaml +106 -0
  18. dirigent_examples/shelves/docker/docker-compose-database.yaml +124 -0
  19. dirigent_examples/shelves/docker/docker-compose-failing-up.yaml +83 -0
  20. dirigent_examples/shelves/docker/docker-compose-file.yaml +117 -0
  21. dirigent_examples/shelves/docker/docker-compose-profiles-env.yaml +133 -0
  22. dirigent_examples/shelves/docker/docker-compose-stack.yaml +70 -0
  23. dirigent_examples/shelves/docker/docker-hello.yaml +53 -0
  24. dirigent_examples/shelves/docker/docker-remote-daemon.yaml +92 -0
  25. dirigent_examples/shelves/docker/docker-run-failing-teardown.yaml +94 -0
  26. dirigent_examples/shelves/docker/docker-ticker.yaml +49 -0
  27. dirigent_examples/shelves/execute/README.md +16 -0
  28. dirigent_examples/shelves/execute/long-log.yaml +89 -0
  29. dirigent_examples/shelves/failure/README.md +20 -0
  30. dirigent_examples/shelves/failure/error-handler.yaml +89 -0
  31. dirigent_examples/shelves/failure/optional-step.yaml +82 -0
  32. dirigent_examples/shelves/failure/retries.yaml +75 -0
  33. dirigent_examples/shelves/failure/retry-budget.yaml +82 -0
  34. dirigent_examples/shelves/failure/step-timeout.yaml +96 -0
  35. dirigent_examples/shelves/git/README.md +32 -0
  36. dirigent_examples/shelves/git/git-checkout-build.yaml +125 -0
  37. dirigent_examples/shelves/git/git-checkout-compose.yaml +138 -0
  38. dirigent_examples/shelves/git/git-checkout-public.yaml +84 -0
  39. dirigent_examples/shelves/graph/README.md +22 -0
  40. dirigent_examples/shelves/graph/deep-chain.yaml +119 -0
  41. dirigent_examples/shelves/graph/fan-in.yaml +80 -0
  42. dirigent_examples/shelves/graph/fan-out.yaml +66 -0
  43. dirigent_examples/shelves/graph/linear.yaml +66 -0
  44. dirigent_examples/shelves/graph/parallel-branches.yaml +57 -0
  45. dirigent_examples/shelves/graph/parallel-sleep.yaml +55 -0
  46. dirigent_examples/shelves/graph/skip-diamond.yaml +105 -0
  47. dirigent_examples/shelves/graph/wide-fan.yaml +147 -0
  48. dirigent_examples/shelves/hello-world.yaml +30 -0
  49. dirigent_examples/shelves/open-data/README.md +67 -0
  50. dirigent_examples/shelves/open-data/feeds-composition.yaml +120 -0
  51. dirigent_examples/shelves/open-data/gdacs-disaster-updates.yaml +230 -0
  52. dirigent_examples/shelves/open-data/github-releases-relay.yaml +225 -0
  53. dirigent_examples/shelves/open-data/hdx-dataset-watch.yaml +211 -0
  54. dirigent_examples/shelves/open-data/kobo-submissions-to-csv.yaml +149 -0
  55. dirigent_examples/shelves/open-data/nominatim-geocode-facilities.yaml +169 -0
  56. dirigent_examples/shelves/open-data/odk-central-submissions.yaml +146 -0
  57. dirigent_examples/shelves/open-data/open-meteo-weekly-report.yaml +142 -0
  58. dirigent_examples/shelves/open-data/overpass-health-facilities.yaml +154 -0
  59. dirigent_examples/shelves/open-data/usgs-earthquakes-alert.yaml +208 -0
  60. dirigent_examples/shelves/open-data/who-gho-indicators-to-parquet.yaml +163 -0
  61. dirigent_examples/shelves/open-data/wikidata-country-reference.yaml +146 -0
  62. dirigent_examples/shelves/open-data/world-bank-population-trend.yaml +166 -0
  63. dirigent_examples/shelves/patterns/README.md +144 -0
  64. dirigent_examples/shelves/patterns/concurrency-queue.yaml +89 -0
  65. dirigent_examples/shelves/patterns/concurrency-replace.yaml +92 -0
  66. dirigent_examples/shelves/patterns/concurrency-skip.yaml +97 -0
  67. dirigent_examples/shelves/patterns/connections-referenced-vs-carried.yaml +140 -0
  68. dirigent_examples/shelves/patterns/deadline-on-a-sensor.yaml +106 -0
  69. dirigent_examples/shelves/patterns/fan-out-continue.yaml +88 -0
  70. dirigent_examples/shelves/patterns/fan-out-fail-fast.yaml +80 -0
  71. dirigent_examples/shelves/patterns/fan-out-from-params.yaml +84 -0
  72. dirigent_examples/shelves/patterns/fan-out-item-wise.yaml +111 -0
  73. dirigent_examples/shelves/patterns/fan-out-literal-list.yaml +81 -0
  74. dirigent_examples/shelves/patterns/fan-out-nested-objects.yaml +107 -0
  75. dirigent_examples/shelves/patterns/fan-out-then-join.yaml +86 -0
  76. dirigent_examples/shelves/patterns/log-levels.yaml +119 -0
  77. dirigent_examples/shelves/patterns/outputs-inline-vs-storage.yaml +140 -0
  78. dirigent_examples/shelves/patterns/params-every-type.yaml +259 -0
  79. dirigent_examples/shelves/patterns/params-validation-refuses.yaml +131 -0
  80. dirigent_examples/shelves/patterns/pipeline-run-child.yaml +96 -0
  81. dirigent_examples/shelves/patterns/pipeline-run-fire-and-forget.yaml +99 -0
  82. dirigent_examples/shelves/patterns/pipeline-run-strict.yaml +103 -0
  83. dirigent_examples/shelves/patterns/pipeline-run-wait.yaml +107 -0
  84. dirigent_examples/shelves/patterns/pipeline-run-with-params.yaml +124 -0
  85. dirigent_examples/shelves/patterns/poll-cadence.yaml +102 -0
  86. dirigent_examples/shelves/patterns/priority-layered.yaml +120 -0
  87. dirigent_examples/shelves/patterns/references-cheat-sheet.yaml +186 -0
  88. dirigent_examples/shelves/patterns/retry-budget-exhausted.yaml +92 -0
  89. dirigent_examples/shelves/patterns/retry-exponential-backoff.yaml +88 -0
  90. dirigent_examples/shelves/patterns/retry-only-transient.yaml +108 -0
  91. dirigent_examples/shelves/patterns/retry-with-jitter.yaml +102 -0
  92. dirigent_examples/shelves/patterns/rule-all-done.yaml +83 -0
  93. dirigent_examples/shelves/patterns/rule-all-success.yaml +79 -0
  94. dirigent_examples/shelves/patterns/rule-always.yaml +92 -0
  95. dirigent_examples/shelves/patterns/rule-one-failed.yaml +86 -0
  96. dirigent_examples/shelves/patterns/schedule-at-once.yaml +110 -0
  97. dirigent_examples/shelves/patterns/schedule-cron-timezone.yaml +121 -0
  98. dirigent_examples/shelves/patterns/schedule-interval.yaml +109 -0
  99. dirigent_examples/shelves/patterns/schedule-window-half-open.yaml +105 -0
  100. dirigent_examples/shelves/patterns/sensor-http-ready.yaml +121 -0
  101. dirigent_examples/shelves/patterns/sensor-storage-exists.yaml +134 -0
  102. dirigent_examples/shelves/patterns/step-names-and-keys.yaml +99 -0
  103. dirigent_examples/shelves/patterns/timeout-fails-the-step.yaml +94 -0
  104. dirigent_examples/shelves/patterns/timeout-skips-the-step.yaml +102 -0
  105. dirigent_examples/shelves/patterns/webhook-mapping-nested-payload.yaml +125 -0
  106. dirigent_examples/shelves/patterns/webhook-signed.yaml +144 -0
  107. dirigent_examples/shelves/preview/s3-parquet-to-ingestion.yaml +92 -0
  108. dirigent_examples/shelves/python/README.md +31 -0
  109. dirigent_examples/shelves/python/apply_and_run.py +52 -0
  110. dirigent_examples/shelves/python/ci_gate.py +76 -0
  111. dirigent_examples/shelves/python/connections.py +61 -0
  112. dirigent_examples/shelves/python/error_handling.py +84 -0
  113. dirigent_examples/shelves/python/follow_logs.py +39 -0
  114. dirigent_examples/shelves/python/list_and_filter.py +52 -0
  115. dirigent_examples/shelves/queues/README.md +59 -0
  116. dirigent_examples/shelves/queues/kafka-consume-then-transform.yaml +105 -0
  117. dirigent_examples/shelves/queues/kafka-produce-then-consume.yaml +124 -0
  118. dirigent_examples/shelves/queues/rabbitmq-consume-ack-on-success.yaml +102 -0
  119. dirigent_examples/shelves/queues/report-to-kafka.yaml +105 -0
  120. dirigent_examples/shelves/queues/report-to-rabbitmq.yaml +105 -0
  121. dirigent_examples/shelves/recipes/README.md +130 -0
  122. dirigent_examples/shelves/recipes/csv-header-rules.yaml +147 -0
  123. dirigent_examples/shelves/recipes/csv-to-ndjson.yaml +107 -0
  124. dirigent_examples/shelves/recipes/etl-csv-clean-validate-parquet.yaml +207 -0
  125. dirigent_examples/shelves/recipes/filter-by-predicate.yaml +116 -0
  126. dirigent_examples/shelves/recipes/filter-then-map-then-reduce.yaml +109 -0
  127. dirigent_examples/shelves/recipes/http-fetch-validate-post.yaml +142 -0
  128. dirigent_examples/shelves/recipes/http-follow-redirects.yaml +100 -0
  129. dirigent_examples/shelves/recipes/http-get-with-query.yaml +96 -0
  130. dirigent_examples/shelves/recipes/http-headers-and-auth-connection.yaml +110 -0
  131. dirigent_examples/shelves/recipes/http-post-file-from-storage.yaml +117 -0
  132. dirigent_examples/shelves/recipes/http-post-json-echo.yaml +105 -0
  133. dirigent_examples/shelves/recipes/http-post-report.yaml +183 -0
  134. dirigent_examples/shelves/recipes/http-save-body-to-storage.yaml +106 -0
  135. dirigent_examples/shelves/recipes/http-success-status-list.yaml +80 -0
  136. dirigent_examples/shelves/recipes/http-timeout-override.yaml +104 -0
  137. dirigent_examples/shelves/recipes/jq-dedupe-by-key.yaml +78 -0
  138. dirigent_examples/shelves/recipes/jq-defaults-and-nulls.yaml +91 -0
  139. dirigent_examples/shelves/recipes/jq-group-by-and-sum.yaml +74 -0
  140. dirigent_examples/shelves/recipes/jq-join-two-lists.yaml +77 -0
  141. dirigent_examples/shelves/recipes/jq-long-to-wide.yaml +76 -0
  142. dirigent_examples/shelves/recipes/jq-nested-to-flat.yaml +89 -0
  143. dirigent_examples/shelves/recipes/jq-pivot-wide-to-long.yaml +65 -0
  144. dirigent_examples/shelves/recipes/jq-running-totals.yaml +82 -0
  145. dirigent_examples/shelves/recipes/jq-string-cleaning.yaml +88 -0
  146. dirigent_examples/shelves/recipes/jq-top-n.yaml +85 -0
  147. dirigent_examples/shelves/recipes/jq-validate-in-jq-vs-schema.yaml +124 -0
  148. dirigent_examples/shelves/recipes/jq-window-dates.yaml +82 -0
  149. dirigent_examples/shelves/recipes/json-to-csv-flattening.yaml +141 -0
  150. dirigent_examples/shelves/recipes/large-output-to-storage.yaml +134 -0
  151. dirigent_examples/shelves/recipes/map-enrich-with-lookup.yaml +96 -0
  152. dirigent_examples/shelves/recipes/ndjson-to-parquet.yaml +130 -0
  153. dirigent_examples/shelves/recipes/pagination-by-fan-out.yaml +115 -0
  154. dirigent_examples/shelves/recipes/parquet-round-trip-types.yaml +163 -0
  155. dirigent_examples/shelves/recipes/reconcile-two-sources.yaml +159 -0
  156. dirigent_examples/shelves/recipes/report-built-in.yaml +72 -0
  157. dirigent_examples/shelves/recipes/report-daily-digest.yaml +186 -0
  158. dirigent_examples/shelves/recipes/report-to-file.yaml +131 -0
  159. dirigent_examples/shelves/recipes/report-to-webhook.yaml +136 -0
  160. dirigent_examples/shelves/recipes/schema-carried.yaml +112 -0
  161. dirigent_examples/shelves/recipes/schema-formats.yaml +107 -0
  162. dirigent_examples/shelves/recipes/schema-referenced.yaml +86 -0
  163. dirigent_examples/shelves/recipes/schema-refuses-then-rule.yaml +127 -0
  164. dirigent_examples/shelves/recipes/storage-copy-dated-archive.yaml +114 -0
  165. dirigent_examples/shelves/recipes/storage-exists-gate.yaml +127 -0
  166. dirigent_examples/shelves/recipes/storage-manifest-of-a-fan-out.yaml +104 -0
  167. dirigent_examples/shelves/recipes/storage-write-then-read.yaml +119 -0
  168. dirigent_examples/shelves/recipes/webhook-post-hmac.yaml +132 -0
  169. dirigent_examples/shelves/recipes/webhook-post-summary.yaml +142 -0
  170. dirigent_examples/shelves/s3/README.md +34 -0
  171. dirigent_examples/shelves/s3/report-to-s3.yaml +93 -0
  172. dirigent_examples/shelves/s3/s3-copy-and-verify.yaml +105 -0
  173. dirigent_examples/shelves/s3/s3-csv-report.yaml +87 -0
  174. dirigent_examples/shelves/s3/s3-parquet-report.yaml +77 -0
  175. dirigent_examples/shelves/s3/s3-round-trip.yaml +125 -0
  176. dirigent_examples/shelves/schemas/README.md +36 -0
  177. dirigent_examples/shelves/schemas/echo-reading.json +18 -0
  178. dirigent_examples/shelves/schemas/ou-record.json +13 -0
  179. dirigent_examples/shelves/schemas/station-reading.json +13 -0
  180. dirigent_examples/shelves/sensors/README.md +16 -0
  181. dirigent_examples/shelves/sensors/sensor-gate.yaml +65 -0
  182. dirigent_examples/shelves/sensors/time-window.yaml +61 -0
  183. dirigent_examples/shelves/sql/README.md +52 -0
  184. dirigent_examples/shelves/sql/duckdb-parquet-to-report.yaml +146 -0
  185. dirigent_examples/shelves/sql/sql-postgres-readonly.yaml +111 -0
  186. dirigent_examples/shelves/sql/sql-query-to-storage.yaml +85 -0
  187. dirigent_examples/shelves/sql/sql-sqlite-roundtrip.yaml +114 -0
  188. dirigent_examples/shelves/sql/warehouse.sql +42 -0
  189. dirigent_examples/shelves/transform/README.md +36 -0
  190. dirigent_examples/shelves/transform/csv-report.yaml +55 -0
  191. dirigent_examples/shelves/transform/jq-filter-and-map.yaml +70 -0
  192. dirigent_examples/shelves/transform/jq-group-and-aggregate.yaml +70 -0
  193. dirigent_examples/shelves/transform/jq-join-two-sources.yaml +98 -0
  194. dirigent_examples/shelves/transform/jq-reshape.yaml +91 -0
  195. dirigent_examples/shelves/transform/jq-stream-through-storage.yaml +112 -0
  196. dirigent_examples/shelves/transform/ndjson-round-trip.yaml +56 -0
  197. dirigent_examples/shelves/transform/parquet-round-trip.yaml +68 -0
  198. dirigent_examples/shelves/transform/std-convert-fan-out.yaml +142 -0
  199. dirigent_examples/shelves/transform/xml-feed-to-ndjson.yaml +116 -0
  200. dirigent_examples/shelves/transform/yaml-config-to-json.yaml +104 -0
  201. dirigent_examples/shelves/triggers/README.md +45 -0
  202. dirigent_examples/shelves/triggers/at-one-time.yaml +78 -0
  203. dirigent_examples/shelves/triggers/cron-nightly.yaml +79 -0
  204. dirigent_examples/shelves/triggers/cron-windowed.yaml +86 -0
  205. dirigent_examples/shelves/triggers/document-nightly.yaml +80 -0
  206. dirigent_examples/shelves/triggers/interval-rolling.yaml +88 -0
  207. dirigent_examples/shelves/triggers/managed-and-manual.yaml +109 -0
  208. dirigent_examples/shelves/triggers/webhook-trigger.yaml +75 -0
  209. dirigent_examples/shelves/validate/README.md +31 -0
  210. dirigent_examples/shelves/validate/expects-a-shape.yaml +56 -0
  211. dirigent_examples/shelves/validate/the-shape-is-wrong.yaml +46 -0
  212. dirigent_examples-0.15.0.dist-info/METADATA +21 -0
  213. dirigent_examples-0.15.0.dist-info/RECORD +216 -0
  214. dirigent_examples-0.15.0.dist-info/WHEEL +4 -0
  215. dirigent_examples-0.15.0.dist-info/entry_points.txt +3 -0
  216. dirigent_examples-0.15.0.dist-info/licenses/LICENSE +18 -0
@@ -0,0 +1,109 @@
1
+ # What an apply materialises, and what it deliberately leaves alone.
2
+ #
3
+ # The triggers: section is the declaration, and only the declaration. Applying this creates
4
+ # the schedules and the webhook if they are absent and brings them up to date if they are
5
+ # not; it never touches whether a schedule is paused, when it last fired, or what the
6
+ # webhook's token is. Those are facts about one instance, so they stay in it.
7
+ #
8
+ # A schedule the document declares is managed: the instance owns it on the document's
9
+ # behalf, and an apply that stops mentioning it removes it. A schedule somebody created by
10
+ # hand with dg schedule create is not managed, and an apply never touches it -- deleting
11
+ # someone's schedule as a side effect of an unrelated edit is the kind of surprise that
12
+ # makes people stop applying documents at all. Both kinds show up in dg schedule list, which
13
+ # says which is which.
14
+ #
15
+ # The token is minted server-side and shown once. It is not in this file, it will not be in
16
+ # an export, and there is nowhere in dirigent/v1 to write one.
17
+ #
18
+ # Try it against a running instance:
19
+ #
20
+ # dg apply examples/triggers/managed-and-manual.yaml
21
+ # dg schedule list managed-and-manual
22
+ # dg schedule create managed-and-manual by-hand --cron '0 7 * * 1' -p day=2026-01-01
23
+ # dg schedule list managed-and-manual # the hand-made one is not managed
24
+ # dg apply examples/triggers/managed-and-manual.yaml # a no-op, and by-hand survives it
25
+ # dg webhook create managed-and-manual manual --map day='$.date' # prints URL and token
26
+ # curl -X POST "$DG_URL/hooks/$TOKEN" -d '{"date": "2026-01-01"}'
27
+ # dg webhook deliveries managed-and-manual from-upstream
28
+ #
29
+ # The steps run jq and nothing else, so there is no allowlist entry to make first. Locally,
30
+ # with no server at all:
31
+ #
32
+ # dg run --local examples/triggers/managed-and-manual.yaml -p day=2026-01-01
33
+
34
+ format: dirigent/v1
35
+ kind: pipeline
36
+ code: managed-and-manual
37
+ name: Managed beside manual
38
+ description: Two document-managed schedules and a webhook, and what an apply leaves untouched.
39
+
40
+ tags: [triggers, transform, webhook, schedule, starter]
41
+
42
+ concurrency: skip
43
+
44
+ requires:
45
+ blocks:
46
+ - transform.jq
47
+
48
+ params:
49
+ type: object
50
+ properties:
51
+ day:
52
+ type: string
53
+ format: date
54
+ description: The day being loaded, which the schedule pins and the webhook maps.
55
+ default: "2026-01-01"
56
+ environment:
57
+ type: string
58
+ enum: [staging, production]
59
+ default: staging
60
+
61
+ steps:
62
+ load:
63
+ block: transform.jq
64
+ config:
65
+ input:
66
+ day: "${params.day}"
67
+ environment: "${params.environment}"
68
+ program: |
69
+ {loaded: .day, environment: .environment}
70
+
71
+ verify:
72
+ block: transform.jq
73
+ depends_on: [load]
74
+ config:
75
+ input: "${steps.load.output.value}"
76
+ program: |
77
+ {verified: .loaded, environment: .environment}
78
+ retry:
79
+ max_attempts: 3
80
+ backoff: 10s
81
+
82
+ triggers:
83
+ schedules:
84
+ # Five in the morning, Oslo time, all year: the zone is on the schedule rather than on
85
+ # the process, so this stays five in the morning across a daylight-saving boundary.
86
+ - code: nightly
87
+ cron: "0 5 * * *"
88
+ timezone: Europe/Oslo
89
+ params:
90
+ day: "2026-01-01"
91
+ environment: production
92
+
93
+ # The same pipeline hitting staging on a rolling interval is a second schedule, not a
94
+ # second pipeline.
95
+ - code: staging-hourly
96
+ interval: 1h
97
+ timezone: UTC
98
+ params:
99
+ day: "2026-01-01"
100
+ environment: staging
101
+
102
+ webhooks:
103
+ # A strict payload-to-parameter mapping. Anything the payload carries that is not named
104
+ # here is ignored, and what is named is validated against params above like any other
105
+ # run's parameters -- so a caller cannot smuggle configuration in.
106
+ - code: from-upstream
107
+ params_from_payload:
108
+ day: "$.published.date"
109
+ environment: "$.target.environment"
@@ -0,0 +1,75 @@
1
+ # An inbound webhook travels with the document; operational state does not.
2
+ #
3
+ # A webhook declares a strict payload-to-parameter mapping. The instance mints the token
4
+ # and holds it; the mapped parameters are validated against params like any other run's, so
5
+ # a webhook cannot smuggle configuration in.
6
+ #
7
+ # What stays behind: what the token is, whether the endpoint is active, and the delivery
8
+ # history. None of that belongs in git, so none of it is in this file.
9
+ #
10
+ # The other trigger kind is a clock, and it has a folder of its own: examples/triggers/
11
+ # teaches cron, interval and one-time firings, and examples/triggers/managed-and-manual.yaml
12
+ # carries both kinds on one pipeline.
13
+ #
14
+ # The webhook accepts deliveries only on an instance the document has been applied to. The
15
+ # pipeline itself runs anywhere, with nothing on the allowlist and no network:
16
+ #
17
+ # dg run --local examples/triggers/webhook-trigger.yaml -p day=2026-01-01
18
+ #
19
+ # Against an instance, where the endpoint exists:
20
+ #
21
+ # dg apply examples/triggers/webhook-trigger.yaml
22
+ # dg webhook list webhook-trigger
23
+ # dg webhook rotate-token webhook-trigger upstream-publish # shows a token exactly once
24
+ # curl -X POST "$DG_URL/hooks/$TOKEN" \
25
+ # -d '{"published": {"date": "2026-01-01"}, "target": {"environment": "staging"}}'
26
+ # dg webhook deliveries webhook-trigger upstream-publish
27
+
28
+ format: dirigent/v1
29
+ kind: pipeline
30
+ code: webhook-trigger
31
+ name: Started by a webhook
32
+ description: One pipeline started by an inbound webhook that maps a payload onto its parameters.
33
+
34
+ tags: [triggers, transform, webhook]
35
+
36
+ requires:
37
+ blocks:
38
+ - transform.jq
39
+
40
+ params:
41
+ type: object
42
+ properties:
43
+ day:
44
+ type: string
45
+ format: date
46
+ default: "2026-01-01"
47
+ environment:
48
+ type: string
49
+ enum: [staging, production]
50
+ default: staging
51
+
52
+ steps:
53
+ ingest:
54
+ block: transform.jq
55
+ config:
56
+ input:
57
+ day: "${params.day}"
58
+ environment: "${params.environment}"
59
+ program: |
60
+ {ingested: .day, environment: .environment}
61
+
62
+ triggers:
63
+ webhooks:
64
+ # The mapping is the whole declaration: each parameter names a JSONPath into the
65
+ # payload. Anything the payload carries that is not named here is ignored, and what is
66
+ # named is validated against params above -- so a caller cannot reach a parameter the
67
+ # mapping does not mention, whatever it POSTs.
68
+ #
69
+ # Applying this refuses a mapping that could never fire: a path that does not parse
70
+ # (`$.published..date`), a name params does not declare, or a required parameter with no
71
+ # default that nothing maps. Both parameters here have defaults, so neither is required.
72
+ - code: upstream-publish
73
+ params_from_payload:
74
+ day: "$.published.date"
75
+ environment: "$.target.environment"
@@ -0,0 +1,31 @@
1
+ # Validation examples
2
+
3
+ A gate that fails at the boundary. `validate.schema` checks a value against a JSON Schema
4
+ and passes it through when it fits, so a step reads the gate's output rather than the raw
5
+ value and the graph records that everything past the gate received the right shape. A value
6
+ that does not fit is refused where it enters -- with the path into the payload that is
7
+ wrong -- rather than surfacing as a confusing error in a step further down. A mismatch is
8
+ `rejected`: the same value against the same schema fails the same way, so it is never
9
+ retried.
10
+
11
+ A gate never writes a schema inline: it names one by `code`. That code resolves one of two
12
+ ways, and each document below is labelled by which it uses:
13
+
14
+ - **Carried in the document.** The shape sits in the document's own top-level `schemas:`
15
+ section, keyed by its code, exactly the way a document can carry its own `connections:`. A
16
+ server refuses a document that carries a schema -- storing it would put the shape in every
17
+ version of the pipeline -- so a carried schema is for a standalone or `--local` run.
18
+ - **A named instance schema.** The code names a schema the instance holds, applied on its own
19
+ from [`../schemas/`](../schemas) with `dg schema create`. The document declares it under
20
+ `requires.schemas`, so an instance that does not hold it refuses the document. A `--local`
21
+ run holds no instance schema until one is handed to it with `--schema FILE`; each such
22
+ document's top-of-file comment shows the invocation.
23
+
24
+ The two documents are one pair, showing the same shape supplied both ways: `expects-a-shape`
25
+ carries `ou-record` in the document, and `the-shape-is-wrong` names the instance `ou-record`
26
+ that [`../schemas/ou-record.json`](../schemas/ou-record.json) holds.
27
+
28
+ | File | Technique | What it demonstrates |
29
+ | --- | --- | --- |
30
+ | [expects-a-shape.yaml](expects-a-shape.yaml) | schema carried in the document | A payload that fits: the gate passes it through, and the next step reads `${steps.check.output.value}`. |
31
+ | [the-shape-is-wrong.yaml](the-shape-is-wrong.yaml) | references the `ou-record` instance schema | A payload missing a required field: the run fails at the gate, naming the path, and the reader never runs. |
@@ -0,0 +1,56 @@
1
+ # Check a payload's shape before anything downstream trusts it -- schema carried in the document.
2
+ #
3
+ # validate.schema states the shape a value must have and passes it through when it fits, so the
4
+ # step after the gate reads the gate's output, not the raw value, and the graph records that
5
+ # everything past this point received the right shape. The schema lives in the document's own
6
+ # top-level schemas: section and the gate names it by code. A server refuses a document that
7
+ # carries a schema, the way it refuses one that carries a connection, so this form is for a
8
+ # standalone or --local run; the paired the-shape-is-wrong.yaml holds the same shape on the
9
+ # instance instead.
10
+ #
11
+ # dg run --local examples/validate/expects-a-shape.yaml
12
+
13
+ format: dirigent/v1
14
+ kind: pipeline
15
+ code: expects-a-shape
16
+ name: Expects a shape
17
+ description: Validate a payload against a schema the document carries, then read the value the gate passed through.
18
+
19
+ tags: [validate, transform]
20
+
21
+ requires:
22
+ blocks:
23
+ - value.const
24
+ - validate.schema
25
+ - transform.jq
26
+
27
+ schemas:
28
+ ou-record:
29
+ type: object
30
+ required: [id, name, level]
31
+ additionalProperties: false
32
+ properties:
33
+ id: { type: string }
34
+ name: { type: string }
35
+ level: { type: integer }
36
+
37
+ steps:
38
+ payload:
39
+ block: value.const
40
+ config:
41
+ value:
42
+ id: OU_12345
43
+ name: Western Area
44
+ level: 2
45
+ check:
46
+ block: validate.schema
47
+ depends_on: [payload]
48
+ config:
49
+ input: ${steps.payload.output.value}
50
+ schema: ou-record
51
+ use_it:
52
+ block: transform.jq
53
+ depends_on: [check]
54
+ config:
55
+ input: ${steps.check.output.value}
56
+ program: "{unit: .id, tier: .level}"
@@ -0,0 +1,46 @@
1
+ # A payload that does not fit, so the run fails at the gate, on purpose.
2
+ #
3
+ # This is the teaching failure: the payload is missing a required field, so validate.schema
4
+ # rejects it and names the path -- `at $: 'level' is a required property` -- and the run ends
5
+ # failed at the gate rather than three steps later where a reader tripped over the gap. It
6
+ # references the ou-record schema the instance holds -- the same shape expects-a-shape.yaml
7
+ # carries -- so requires.schemas names it and an instance without it refuses the document.
8
+ #
9
+ # dg run --local --schema examples/schemas/ou-record.json \
10
+ # examples/validate/the-shape-is-wrong.yaml
11
+
12
+ format: dirigent/v1
13
+ kind: pipeline
14
+ code: the-shape-is-wrong
15
+ name: The shape is wrong
16
+ description: A payload missing a required field, refused at the gate with the path that is wrong.
17
+
18
+ tags: [validate, transform, failure]
19
+
20
+ requires:
21
+ blocks:
22
+ - value.const
23
+ - validate.schema
24
+ - transform.jq
25
+ schemas:
26
+ - ou-record
27
+
28
+ steps:
29
+ payload:
30
+ block: value.const
31
+ config:
32
+ value:
33
+ id: OU_12345
34
+ name: Western Area
35
+ check:
36
+ block: validate.schema
37
+ depends_on: [payload]
38
+ config:
39
+ input: ${steps.payload.output.value}
40
+ schema: ou-record
41
+ use_it:
42
+ block: transform.jq
43
+ depends_on: [check]
44
+ config:
45
+ input: ${steps.check.output.value}
46
+ program: "{unit: .id, tier: .level}"
@@ -0,0 +1,21 @@
1
+ Metadata-Version: 2.4
2
+ Name: dirigent-examples
3
+ Version: 0.15.0
4
+ Summary: The dirigent example corpus: the shelves of runnable documents, installed.
5
+ License-Expression: LicenseRef-Proprietary
6
+ License-File: LICENSE
7
+ Requires-Dist: dirigent-client
8
+ Requires-Dist: dirigent-plugin
9
+ Requires-Python: >=3.13
10
+ Description-Content-Type: text/markdown
11
+
12
+ # dirigent-examples
13
+
14
+ The dirigent example corpus as an installed distribution: 22 topic shelves of runnable
15
+ `dirigent/v1` documents, contributed to a host through the `examples()` extension point and
16
+ read by `dg examples`, `dg pipeline new`, and the instance's Examples screen.
17
+
18
+ The shelves are the repository's `examples/` directory; the root path is a symlink to the
19
+ real files here, so every `dg run --local examples/...` line keeps working in a checkout.
20
+ [`shelves/README.md`](src/dirigent_examples/shelves/README.md) is the corpus's own guide: the
21
+ shelves, the tag vocabulary, and what each document needs to run.
@@ -0,0 +1,216 @@
1
+ dirigent_examples/__init__.py,sha256=20swvHROng6W9FWCsyOnewvnp-pOzXS4HyRnC4fmc_Y,731
2
+ dirigent_examples/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ dirigent_examples/shelves/README.md,sha256=lpaudQK51JaS2TxIee9eHBMhxalaVSkPY2uUM328a4I,18452
4
+ dirigent_examples/shelves/composition/README.md,sha256=pQXl83V6P-lZ_FCuCS1QtqTHyHpzhPPIlMCeHom4y8w,1008
5
+ dirigent_examples/shelves/composition/chained-instances.yaml,sha256=OyFa-2b7s_Gih958M2nEQm0xMJ4fSAa8SEB44xpg0l4,3419
6
+ dirigent_examples/shelves/composition/composition-child.yaml,sha256=e7k9SSiY510jhvlrR1Omx-2XuOkIQAtaJppnWUl0ciw,2129
7
+ dirigent_examples/shelves/composition/composition-parent.yaml,sha256=Yt7rAYYhZGGZFvReVm4G6afTjjko4vR9ukTqA11tX8A,3281
8
+ dirigent_examples/shelves/connections.yaml,sha256=JNIUjRuDHrzO8sEczHkBznkjCDuRLtjaIN3I7QhqDZ8,2393
9
+ dirigent_examples/shelves/demo/README.md,sha256=pEL5D1FERjAVu7gtVCFf8-D2Xqx6UX8koXZX23cHezA,1103
10
+ dirigent_examples/shelves/demo/markdown-showcase.yaml,sha256=2SgE3p3jNf_exbeRNO-fWSaNJ13KhT1-aEMkXXfRU1s,4207
11
+ dirigent_examples/shelves/demo/params-showcase.yaml,sha256=P_J7MzKEKpeKP7MP7OCz4re89hlKIMUovJC3QIhYq3k,3341
12
+ dirigent_examples/shelves/demo/requires.yaml,sha256=NlqqYzxTizGwaAIHEGyOUJDyaKqCNJgFuzfL7BeDZ5E,1988
13
+ dirigent_examples/shelves/demo/weekly-import-malawi.yaml,sha256=tNYGDSWf4kfhdOjKVF8p04V0PAh_9fmMF3ayAmcKYHo,1729
14
+ dirigent_examples/shelves/demo/weekly-import-nepal.yaml,sha256=7u3vqGqBNobhg1paOEQVxltXY5GZkmJw-8JArYGLJgk,2860
15
+ dirigent_examples/shelves/docker/README.md,sha256=6gPb8QkmjLCkRQc8Ir9xME1NL38pfuGWdfqIv0ow6YU,2664
16
+ dirigent_examples/shelves/docker/docker-build-push.yaml,sha256=CzRB5WN18DMuCtGO957YWj48FclX3UbxmfpfSOSS-Es,4699
17
+ dirigent_examples/shelves/docker/docker-build-run.yaml,sha256=K_l4U5HIHYxExhRFfWX3QxO8wiscNlYiTiquKnjt9C0,4452
18
+ dirigent_examples/shelves/docker/docker-compose-database.yaml,sha256=HXM3Rhb-SvabsLd8mTWsvfcc7HF3vZSWLirwh5vyAX8,5116
19
+ dirigent_examples/shelves/docker/docker-compose-failing-up.yaml,sha256=BbBS98Yt56OQ-bH9muVOXvVLtDwYNp9aiSTn_gLEk7U,3742
20
+ dirigent_examples/shelves/docker/docker-compose-file.yaml,sha256=8F4QDSNDBS-yWcxtD4kq6gXdBv2fJ284od7yh_n7OEI,4990
21
+ dirigent_examples/shelves/docker/docker-compose-profiles-env.yaml,sha256=6KX6L8Z2IwCtvrdoxuT96sw_DnHbWXS23ozkYNofQD4,5841
22
+ dirigent_examples/shelves/docker/docker-compose-stack.yaml,sha256=c9XiAl0uuXQawVbWtCU76KxplZYXX1oLoPWugq3Zkaw,2475
23
+ dirigent_examples/shelves/docker/docker-hello.yaml,sha256=hiP1AyvKrQvFrYkInb6GUuiGgrO9IzM1edMybadHD2Q,1880
24
+ dirigent_examples/shelves/docker/docker-remote-daemon.yaml,sha256=6DVCGBB7tFWsARoKmgxGYk79hGH6VLlkRrX2HhVTQwM,3563
25
+ dirigent_examples/shelves/docker/docker-run-failing-teardown.yaml,sha256=MMOi157ateFvm3pNMQMSdztcj9f6tTyspP8qdgLF3ZY,3709
26
+ dirigent_examples/shelves/docker/docker-ticker.yaml,sha256=nYu_2cB2r4Xy7xN3LkHDZqLrdXnGK-m4d-7hL_ViOFc,1560
27
+ dirigent_examples/shelves/execute/README.md,sha256=FXhbfSi4TKYl5kJSuT2-VwbbT5VDPGcuBgwUcO8_qLM,568
28
+ dirigent_examples/shelves/execute/long-log.yaml,sha256=v3acxJvj9PlFSpqvWnOJU0pwWdNM1YZqikdIKskzoRg,3722
29
+ dirigent_examples/shelves/failure/README.md,sha256=2X4DpLL-smJIdbn-rbNHLvQslJYNX_owUmkulgvKBJY,1167
30
+ dirigent_examples/shelves/failure/error-handler.yaml,sha256=_kefoU5SKvCtVamRl58SETJrSmyzOO84UVtlb2ni9OA,3499
31
+ dirigent_examples/shelves/failure/optional-step.yaml,sha256=EaRKjZl-kQ78-FVPgLi6TDl8Rx_x22JqlZOM_HuqZmE,3434
32
+ dirigent_examples/shelves/failure/retries.yaml,sha256=aEXJhNfmJnrgqT7SyCDT8Bh6tpFkTTcgRn8SmZt87oQ,2909
33
+ dirigent_examples/shelves/failure/retry-budget.yaml,sha256=tlGbADCzPGwFiK31x2oNWE95S-Fh484T1mF10nR3fJ4,3917
34
+ dirigent_examples/shelves/failure/step-timeout.yaml,sha256=ne9bI2khL0Y38M-TbHaZXwwZmwUANdJd_NgNyXxKtEQ,4235
35
+ dirigent_examples/shelves/git/README.md,sha256=yhlGrmj3NL8JpEAcexIZzZ7Iki7Ma2TgeuhWMoG1XEA,1741
36
+ dirigent_examples/shelves/git/git-checkout-build.yaml,sha256=vEQBtl-cIWhALVl2CpHv-udbkn1WkBfEFtK1P6lfMFw,5512
37
+ dirigent_examples/shelves/git/git-checkout-compose.yaml,sha256=CBNQeXKXYRE5aiaBx8EupuuwP-T-WV0eEIlq7oU52V8,6128
38
+ dirigent_examples/shelves/git/git-checkout-public.yaml,sha256=u26e3mVYsrBYRDjJFXlUNTeeSIbI3rBvzusvEnANVSc,3956
39
+ dirigent_examples/shelves/graph/README.md,sha256=w5zCQExz2C9T6c-znZ2fcgWhRNc0twSqpGfMk_YERXs,1367
40
+ dirigent_examples/shelves/graph/deep-chain.yaml,sha256=Fg6TuvEmSqMDGSLSXZgpYFzYLERxWyL81LQe-O0Gdb0,3749
41
+ dirigent_examples/shelves/graph/fan-in.yaml,sha256=uf8upyZ62LGheXKZYyfcoR-t657vJkxJHrl5CcfMLsM,3253
42
+ dirigent_examples/shelves/graph/fan-out.yaml,sha256=CgRWKVfzLVWjVqDzLHN8ybljlFzHYpN48Jl1pf16WXQ,2503
43
+ dirigent_examples/shelves/graph/linear.yaml,sha256=OzfliyPuXh_uqOxJfwYojeHIxM4u37R-3IW2phQTtEU,2171
44
+ dirigent_examples/shelves/graph/parallel-branches.yaml,sha256=IFwjWxR_x7af0bEVFgUpiNTIBiBUqu6Wx8r_Y0qAFy0,1789
45
+ dirigent_examples/shelves/graph/parallel-sleep.yaml,sha256=1920kbdfyRjyPGRSPT--6IHuAUSvAOzg9W_W60ZHVng,2055
46
+ dirigent_examples/shelves/graph/skip-diamond.yaml,sha256=hOHN1BhGhz5XgQbJF2e7xeoJZaBfziJhY_SvpVIoeBo,4598
47
+ dirigent_examples/shelves/graph/wide-fan.yaml,sha256=kGjVwu3DdLwd_g__wfSBjGQMji4as13244n55ul3_P0,4935
48
+ dirigent_examples/shelves/hello-world.yaml,sha256=lh19mhyPPv2m2zhuVN2FexuZKILik9TBGwni_R_yIls,938
49
+ dirigent_examples/shelves/open-data/README.md,sha256=lD2jVB7tKSHC1FgQtxl5CK4bdqe00uwI23Pel-goDz0,5729
50
+ dirigent_examples/shelves/open-data/feeds-composition.yaml,sha256=dxWwy83QjvDcpohfl3a1YfpE-gZr1SLVB2eal3cJkl4,5235
51
+ dirigent_examples/shelves/open-data/gdacs-disaster-updates.yaml,sha256=eDP7okkqw3j_wwmTTEZ3NW6DTuXDiebAncihyL1IbS8,9644
52
+ dirigent_examples/shelves/open-data/github-releases-relay.yaml,sha256=a8a5X2NlrtzCmfnQm904usHrXAuVeHdp0zGjVhjjA2c,8505
53
+ dirigent_examples/shelves/open-data/hdx-dataset-watch.yaml,sha256=hhdHYRm8ZH4nHeGJi3Uk84plT2bxIvjp5zhdcOpLoX8,8362
54
+ dirigent_examples/shelves/open-data/kobo-submissions-to-csv.yaml,sha256=s9x-go3KE3WJD2Te3UW4UvPch_i7x96KZMgZDKNNb8k,6057
55
+ dirigent_examples/shelves/open-data/nominatim-geocode-facilities.yaml,sha256=KQQEaXS_xhI1pGHGzgH0AOWIj_GsVGudpso3cOWOYPg,6733
56
+ dirigent_examples/shelves/open-data/odk-central-submissions.yaml,sha256=6pQbNgfDCO2N7AtxtluZYdLC_WhWW4xYjfIs1QvdrxA,5761
57
+ dirigent_examples/shelves/open-data/open-meteo-weekly-report.yaml,sha256=T_m6jSJKrpBHfRSJ41Thz0zEAAsXyM8Rn8gZiGnM1i0,5637
58
+ dirigent_examples/shelves/open-data/overpass-health-facilities.yaml,sha256=pge7ZRr5FHpvYiK3KF_gP7NZnjbBIKIZJtlWUr90XiA,6105
59
+ dirigent_examples/shelves/open-data/usgs-earthquakes-alert.yaml,sha256=hUClDOzJV51gORbI9C2oiEoMuTgi9gpOzA952sn24LY,8423
60
+ dirigent_examples/shelves/open-data/who-gho-indicators-to-parquet.yaml,sha256=m-_VqIMFlgWfCogJDl7qig7ViebWRKJuHIu32RjDO2I,6652
61
+ dirigent_examples/shelves/open-data/wikidata-country-reference.yaml,sha256=gQ1cHEQorcmd_pz7xunvuhRZRDLd5N5tEFfo5GeKUyI,6198
62
+ dirigent_examples/shelves/open-data/world-bank-population-trend.yaml,sha256=wKvwfCAVLHq4GPH68pHSa2k3nwda67QrtgwFIuc-b0o,6709
63
+ dirigent_examples/shelves/patterns/README.md,sha256=-BVnG-0QmDlo4KWRcHQ1bFI7c3CKWZVe6ac03Qohy2Q,8899
64
+ dirigent_examples/shelves/patterns/concurrency-queue.yaml,sha256=foGG7XNcvOVIU8a5rXccNJHEaKku7Bv4jzjzdQdEgPE,3448
65
+ dirigent_examples/shelves/patterns/concurrency-replace.yaml,sha256=sK1B77EVhNhEasBBWT-chLabMCa8bRqc0bvYtYweyhs,3669
66
+ dirigent_examples/shelves/patterns/concurrency-skip.yaml,sha256=yPUZfCtBHjEVi_wiEA_eE-8ArYX8Oq7GWgCeIAIVMq8,4013
67
+ dirigent_examples/shelves/patterns/connections-referenced-vs-carried.yaml,sha256=XX-0bvwT5N3JFfIHvHCl4O4QxgxrLJvsGmgPTui-wkA,5790
68
+ dirigent_examples/shelves/patterns/deadline-on-a-sensor.yaml,sha256=UavLUL8qQ_rNiqu0jh907bc7fqroi8mxAMSvrSmMVhQ,4569
69
+ dirigent_examples/shelves/patterns/fan-out-continue.yaml,sha256=DRX5IYEw5rYAVi1tmKDrG9UMsg0eiVnDmUUnwyZauZE,3543
70
+ dirigent_examples/shelves/patterns/fan-out-fail-fast.yaml,sha256=wMV2mOOQnFUZ6vEBisTRnuwdQ7qwPiWin2pgTbmub4A,3098
71
+ dirigent_examples/shelves/patterns/fan-out-from-params.yaml,sha256=Wt5qIrNSBaU8tJKmEhs-vj1e4MSmJR9Z0fUBfF7KcJo,3292
72
+ dirigent_examples/shelves/patterns/fan-out-item-wise.yaml,sha256=USpuQYuZSD0hXFq3YJoC8F__QJIPs4QGv-7fhyQcxkI,4636
73
+ dirigent_examples/shelves/patterns/fan-out-literal-list.yaml,sha256=Ila7wIu_maMtY-Yt6lvTep7KRpajk0cHDGqGsvv1Olc,3365
74
+ dirigent_examples/shelves/patterns/fan-out-nested-objects.yaml,sha256=Tf9vDu45aC714gk4rVVD8PR3NPclM4dyvO10GD0j8qw,4540
75
+ dirigent_examples/shelves/patterns/fan-out-then-join.yaml,sha256=KF_VyM9ZGUuAmBlw-RCEhTbgQFM2NpSrqeiCCBuns9E,3391
76
+ dirigent_examples/shelves/patterns/log-levels.yaml,sha256=A5UeZiDT6YfCQtDizZuqjcfCYIVid-tAoxDCn3vTKFo,4526
77
+ dirigent_examples/shelves/patterns/outputs-inline-vs-storage.yaml,sha256=77eHtnU-GJYIvNNCwPOnOdIsY3nXUqtuhllGeUKJFRM,5508
78
+ dirigent_examples/shelves/patterns/params-every-type.yaml,sha256=Uh7EhSamj6OGIjK6CO75wz8knzBVdnqGW9bx1NgKOSI,10081
79
+ dirigent_examples/shelves/patterns/params-validation-refuses.yaml,sha256=X41GPL0q_IWIa4XvKkfpaf5EJcySzAP2EmLnBWxzj-E,5833
80
+ dirigent_examples/shelves/patterns/pipeline-run-child.yaml,sha256=JYYcwpfcaWBOprOr6IXek-mvOaUu5SWNFGJ6LS_yu30,3849
81
+ dirigent_examples/shelves/patterns/pipeline-run-fire-and-forget.yaml,sha256=n0ZIitM0m9tNk6Lepawr3ww50BSCFFGJKIBTHzGAzy0,3797
82
+ dirigent_examples/shelves/patterns/pipeline-run-strict.yaml,sha256=ZaFWGK_UltyToUAbp2As6VizrjROsBwH681S9abg66g,4028
83
+ dirigent_examples/shelves/patterns/pipeline-run-wait.yaml,sha256=Mw33ur43_dyRWrUfTFwM2lc8EyFZvDPugXXvWW1jzz4,4391
84
+ dirigent_examples/shelves/patterns/pipeline-run-with-params.yaml,sha256=UrzY32feIMYhaXUycHmt9QPcD9Dq7wYZwaZB8NZUALE,4895
85
+ dirigent_examples/shelves/patterns/poll-cadence.yaml,sha256=ZHhrCqzH342AkfHvfU8H6U0TBriYnbBn4sAIA6xk1sI,4220
86
+ dirigent_examples/shelves/patterns/priority-layered.yaml,sha256=zai59iLf7jhfmLororB-crTfdSkMA8507SujkBaSQ20,5059
87
+ dirigent_examples/shelves/patterns/references-cheat-sheet.yaml,sha256=PLwHU9V3qJGEU52KjuGC7gUh21LwvEcbTPiaDU9UsWQ,7884
88
+ dirigent_examples/shelves/patterns/retry-budget-exhausted.yaml,sha256=S4XPcLH4MihvNyBGchwYLOuaMzZhCeWMWyVSTM0vwXI,3567
89
+ dirigent_examples/shelves/patterns/retry-exponential-backoff.yaml,sha256=d79d0jI39MUa4eI29L5z8wWEZ3Gl5f692hvRHGKO6kI,3548
90
+ dirigent_examples/shelves/patterns/retry-only-transient.yaml,sha256=AC_s7PE_ltI43dDWtlGaCYG24lldLFj71can2A0iNGE,4322
91
+ dirigent_examples/shelves/patterns/retry-with-jitter.yaml,sha256=4LS7aI82M01E3XktF-jwqvQ1ZquN9R2itfXXym_E6Y0,4127
92
+ dirigent_examples/shelves/patterns/rule-all-done.yaml,sha256=PJsSjf0cvY9ML1Cwf1xXfRknmV-Tx7Sr-3U_n8wa8Tg,3192
93
+ dirigent_examples/shelves/patterns/rule-all-success.yaml,sha256=oKqUx2zZbFJ8FxhK4auwSCzf1cnA3LfpDFQcouYFOic,2982
94
+ dirigent_examples/shelves/patterns/rule-always.yaml,sha256=0G5gCJQBldVd108Vsae83hk9Eo6yy6KDi1ucUI1GObk,3169
95
+ dirigent_examples/shelves/patterns/rule-one-failed.yaml,sha256=2oKGUlgMj1FWPevOIVDuqVc-ijBFa7tzEwTFq1LUGG0,3183
96
+ dirigent_examples/shelves/patterns/schedule-at-once.yaml,sha256=_C-bGDpIy65gjLSu2rNcIQ9USvRfi5wHMK26ffsFp2M,4269
97
+ dirigent_examples/shelves/patterns/schedule-cron-timezone.yaml,sha256=fIfbwo2f3WlgscquXMKOiPco2AbEZKrazBE4a_t-CO4,4618
98
+ dirigent_examples/shelves/patterns/schedule-interval.yaml,sha256=5Gkvj_tCCT1x6QycW8aWF1Rw4lA_xQaejlpkHa2DbOc,4230
99
+ dirigent_examples/shelves/patterns/schedule-window-half-open.yaml,sha256=mNf25Peeeq3GdshL9Cv0T8NqlRhiDJARPVzh0bmYz0w,4405
100
+ dirigent_examples/shelves/patterns/sensor-http-ready.yaml,sha256=fh5nHZPxmOCUo_2bn6SM1h7-3mxfTqZgUQh6FwP8lII,5379
101
+ dirigent_examples/shelves/patterns/sensor-storage-exists.yaml,sha256=-QbF-ttW99PbgC9TVIeBfMF97O9KBkjPhOqiAnrKz9c,5638
102
+ dirigent_examples/shelves/patterns/step-names-and-keys.yaml,sha256=zVSUt8YL-h125jm1gYRcrx722NJJTmu2sE7YuM_-lqA,4051
103
+ dirigent_examples/shelves/patterns/timeout-fails-the-step.yaml,sha256=NdIEbpW_vA-UCQmE6dISKoeBV8n0Y1bq3yTgmGL5jMw,3900
104
+ dirigent_examples/shelves/patterns/timeout-skips-the-step.yaml,sha256=i5Qo2C_0SOGkFEDc6YrDDqOQMWja1kYcRi3KRCZeq6M,4471
105
+ dirigent_examples/shelves/patterns/webhook-mapping-nested-payload.yaml,sha256=Z9TJmgMt-LMv4mdlQKb-F8semhSLdREIJ7ygDSSkUs4,5029
106
+ dirigent_examples/shelves/patterns/webhook-signed.yaml,sha256=FXKpN0FgC59nbrXqt5k9hwv87jnxdmJUdrICAr6cZXw,5911
107
+ dirigent_examples/shelves/preview/s3-parquet-to-ingestion.yaml,sha256=dMZMb4-s86om2bNFB7AbXsqAh4XAZc9GHFFbq0GMhns,2865
108
+ dirigent_examples/shelves/python/README.md,sha256=VEWoFVeNygcsLIJmmF9M0D_yq9KlOW2-ZjXm_YrXMPE,1567
109
+ dirigent_examples/shelves/python/apply_and_run.py,sha256=e6eoug_RkzyS0cvB2veXb4NEwRsgox0g_lFghJo9aKY,1992
110
+ dirigent_examples/shelves/python/ci_gate.py,sha256=SDqf2htWpaYMVqUKvaLpmt-VXPTSYCF5Ni-fsL3qvqY,2879
111
+ dirigent_examples/shelves/python/connections.py,sha256=Qttid3_2lI0TMzS_KRA-ztlv4MvR0310yK9SHvP1Sao,2362
112
+ dirigent_examples/shelves/python/error_handling.py,sha256=Q7vTr1DLGNnDv0jIKnrSBM5Ur8jb37PSqWbK2fBVn5k,2599
113
+ dirigent_examples/shelves/python/follow_logs.py,sha256=HoIh7pNzS5kpr_fGql-aJQTGqnhXNsh0UEH17qVtZAs,1329
114
+ dirigent_examples/shelves/python/list_and_filter.py,sha256=hDp5Bg8imJLCk9YTmzeFMOP3lnhqSTBgiaDb7bavMtM,2122
115
+ dirigent_examples/shelves/queues/README.md,sha256=ZHU5D3mitbT7N9Q7FKNXxcZsOH8V9K8sPdop-ZRcrFI,3741
116
+ dirigent_examples/shelves/queues/kafka-consume-then-transform.yaml,sha256=QrhcjYiARaqpnJQFkU2kVAk1vQNzkxVvMwLC2xCy4gg,5305
117
+ dirigent_examples/shelves/queues/kafka-produce-then-consume.yaml,sha256=UxyljvlW5KmrBqNAL5ULNAZnmqhxKj-wjl8KuCFAb_U,5704
118
+ dirigent_examples/shelves/queues/rabbitmq-consume-ack-on-success.yaml,sha256=x0R-dDVoFfuE0Wjv5ZiSbJU04TfHyHXD82fq-m_urNI,4994
119
+ dirigent_examples/shelves/queues/report-to-kafka.yaml,sha256=AhqDg6X2ROQki_fhfHUoS8ZtpZFUpvaaacmlFJBYLdQ,3750
120
+ dirigent_examples/shelves/queues/report-to-rabbitmq.yaml,sha256=lRDEDDoGnVH5SI2Tp510gjOptH-yntVMgp425miyuJY,3957
121
+ dirigent_examples/shelves/recipes/README.md,sha256=MazJt_iDla2e0mBCQL0Eo0zFHUQgWA4QHBdCn-XjRmo,9506
122
+ dirigent_examples/shelves/recipes/csv-header-rules.yaml,sha256=W2YnRGjxgyxnyYd1XoPs4abOe2kyc9wKV5-oMJfd1WY,5286
123
+ dirigent_examples/shelves/recipes/csv-to-ndjson.yaml,sha256=n63Pttz4bvudn_e2IvKkJDeAw8wd-hbPCJBpdS6a9KU,3996
124
+ dirigent_examples/shelves/recipes/etl-csv-clean-validate-parquet.yaml,sha256=na0xPs8y2l80t4HkSlm2BPHzN_C9lrsSHqyiXBBy7dQ,7956
125
+ dirigent_examples/shelves/recipes/filter-by-predicate.yaml,sha256=_zVg5SPpBm6uxEHIjaE67_tJkFjyXegsgL-W57EjgUU,4586
126
+ dirigent_examples/shelves/recipes/filter-then-map-then-reduce.yaml,sha256=T2nfCj1QKXtQuNFRKgcAyautAJg64hbr7br9-Dwm45s,4379
127
+ dirigent_examples/shelves/recipes/http-fetch-validate-post.yaml,sha256=sjlqPZ-LXROLWDi4RmGYkkHTcnoKtI_zjw5QIvGbDe0,5652
128
+ dirigent_examples/shelves/recipes/http-follow-redirects.yaml,sha256=-e7XZaUACP6nkTsSPRakKAcPDC5xnj60TzEWoTCc5WY,3973
129
+ dirigent_examples/shelves/recipes/http-get-with-query.yaml,sha256=5oNyNfqIuEihNhHuMhhr3sm-Uj9v1s0HN0EkG53lobc,3733
130
+ dirigent_examples/shelves/recipes/http-headers-and-auth-connection.yaml,sha256=ZvrxpZwvQvxbaXVMfX7OaG3_TrXuLu04chpdhbka8Ts,4534
131
+ dirigent_examples/shelves/recipes/http-post-file-from-storage.yaml,sha256=KPU-9d_-mliGuMiSMkQUVERD-XwMuFf76JqqhYJY6cs,4372
132
+ dirigent_examples/shelves/recipes/http-post-json-echo.yaml,sha256=q_czmCzK3cCEJxQogF5pXPcCvR_plIKtNDNEDpKdocA,4003
133
+ dirigent_examples/shelves/recipes/http-post-report.yaml,sha256=0GZmG2LHtYyKKqCryd2xAs8gyEPjoPhzPKu_vPUmn_o,7726
134
+ dirigent_examples/shelves/recipes/http-save-body-to-storage.yaml,sha256=quoxmJQbjeqaNfnyjHfGUTNB3qL64juODr5kww9Mjuk,4006
135
+ dirigent_examples/shelves/recipes/http-success-status-list.yaml,sha256=PjERRIoRw4cq5u7g34Br0cyMy1DFIAKfEmeGV_baOj0,3155
136
+ dirigent_examples/shelves/recipes/http-timeout-override.yaml,sha256=8gIl-_XKCnJSIeHCHtc4xNlgdLJ0u_5lcfUHXZyhneM,4290
137
+ dirigent_examples/shelves/recipes/jq-dedupe-by-key.yaml,sha256=YMn5VSL1uuHBPdPFD99_Nmc9leChXEm5wcPYcI37-J8,3310
138
+ dirigent_examples/shelves/recipes/jq-defaults-and-nulls.yaml,sha256=uSryOqX0N6wFRVf983riQNk7jXDPimm3JA9HOGVF90I,4024
139
+ dirigent_examples/shelves/recipes/jq-group-by-and-sum.yaml,sha256=PzBzaaMfQr6D-h4LI-Tu-jZmJZTw1neB6TBA0Qj52Qk,2795
140
+ dirigent_examples/shelves/recipes/jq-join-two-lists.yaml,sha256=BmViZ4DXgTScPWVE9Y3YU0ZdvFX1fmScUv_BcHRotlY,2866
141
+ dirigent_examples/shelves/recipes/jq-long-to-wide.yaml,sha256=l8yRP4Wepf4Q2MKFCsF78-yh3QEWaSOrhcH1W5hSfDk,3108
142
+ dirigent_examples/shelves/recipes/jq-nested-to-flat.yaml,sha256=OHrzmohAy4c3TNB0erpqsLnlzPcDJLNs96Ps4Nu5Ln0,3676
143
+ dirigent_examples/shelves/recipes/jq-pivot-wide-to-long.yaml,sha256=KW4KJxMbGu4G_4bjS4T0FxxkGz55vVk_iFippnWmquA,2495
144
+ dirigent_examples/shelves/recipes/jq-running-totals.yaml,sha256=vpzGvuhY7hO5oPfWsiFF7W7ab8Ut8aHTmlXyD6xajkA,3292
145
+ dirigent_examples/shelves/recipes/jq-string-cleaning.yaml,sha256=VcEC6B1UT-SJtgTblFCK9SC5b8gZwcsGb5OULlKpiNg,3972
146
+ dirigent_examples/shelves/recipes/jq-top-n.yaml,sha256=O_0_rF_ju6n7TH-0VNMYMPtvFAhUnummfRuUtwTdSLw,3205
147
+ dirigent_examples/shelves/recipes/jq-validate-in-jq-vs-schema.yaml,sha256=tJ41Gq_kpziHA2hySeBr6gwJbL4Ypqa6OQ4_z8weMHM,5000
148
+ dirigent_examples/shelves/recipes/jq-window-dates.yaml,sha256=nLkt301YAUwYPeHX78SFtqEw1HoBOXNitYJkQOsv_-Y,3618
149
+ dirigent_examples/shelves/recipes/json-to-csv-flattening.yaml,sha256=RfC6kG_xqH-iOxI_SKHwHJQXpmC2dqUY0gOKMbvEU_I,5554
150
+ dirigent_examples/shelves/recipes/large-output-to-storage.yaml,sha256=tDsWzbz8R6WxWyP-OiYB60dK47z62SJBrfktBd8561E,5160
151
+ dirigent_examples/shelves/recipes/map-enrich-with-lookup.yaml,sha256=W1IjTqBiNtEjTUEyXNPbNlvlaTMU-Lp2dyITbylYNmw,3642
152
+ dirigent_examples/shelves/recipes/ndjson-to-parquet.yaml,sha256=TomIgjOLRKGjOhz-rdWcv875bASUtIVRIqGSNe9OhwE,4719
153
+ dirigent_examples/shelves/recipes/pagination-by-fan-out.yaml,sha256=7VIg-3h7ZIPcdjEEIeTWmVJAI6_Nd91aFoYiXMKIaCM,4539
154
+ dirigent_examples/shelves/recipes/parquet-round-trip-types.yaml,sha256=FOxO8nrwh5B_Gf5zqN-dA25GPRAIYpjq5FvTOf99sR0,5769
155
+ dirigent_examples/shelves/recipes/reconcile-two-sources.yaml,sha256=ZU_5l7lPhE2pVX8eVI2hCpbxWX-r2ds91YlyAqHtfdk,6815
156
+ dirigent_examples/shelves/recipes/report-built-in.yaml,sha256=fXW2qcwnaOLPmgz1DSE-Xn-ORImBsBczCDUav5_Tr4k,2845
157
+ dirigent_examples/shelves/recipes/report-daily-digest.yaml,sha256=rXX0b89Iiuk3JN2Jn0tBNsOTW-MJC6W4QJeJleNI9ec,6721
158
+ dirigent_examples/shelves/recipes/report-to-file.yaml,sha256=85lYiUdx5sTrcjmxj5VhougEaLCPyI8ZdXRFkMcjeQ0,4955
159
+ dirigent_examples/shelves/recipes/report-to-webhook.yaml,sha256=blcKuigi3xhljODpVvitVW7099pV6bojwuZFb0Kp2uI,4873
160
+ dirigent_examples/shelves/recipes/schema-carried.yaml,sha256=c2okPxO_SPjEO3aNt45lGX2ZXo8a43BJJRRfQJ1a910,4459
161
+ dirigent_examples/shelves/recipes/schema-formats.yaml,sha256=NZW9x_MOPCxl89ao2A5CzOFxlv4_UxkIfb8ej14qkQ4,4306
162
+ dirigent_examples/shelves/recipes/schema-referenced.yaml,sha256=o-tzhyMMU0lrMfsE8GrhsuU9N5imPvaHnkv1AAoX8JI,2951
163
+ dirigent_examples/shelves/recipes/schema-refuses-then-rule.yaml,sha256=dQ5rcMSUeahDZGo5rULlgobhbmDI5MTC1A5SN40lKU8,4707
164
+ dirigent_examples/shelves/recipes/storage-copy-dated-archive.yaml,sha256=mhvObMxlGDnqLKIrOuE4aov-6ZpIMV8Xot5XdDL14Ks,4093
165
+ dirigent_examples/shelves/recipes/storage-exists-gate.yaml,sha256=dJhgMei7oITd4P_ri0DB1GM2CnmX5XjdBXPTvoIJ6-c,4723
166
+ dirigent_examples/shelves/recipes/storage-manifest-of-a-fan-out.yaml,sha256=OurCz5ZzDZzBwxBDpFyHbAAwDYk2YTWCjqEdaqUWvPA,4280
167
+ dirigent_examples/shelves/recipes/storage-write-then-read.yaml,sha256=COYYBxxgZReLIUwc-8aumAl5BcIU9_hCnJjkWjB7JYU,4135
168
+ dirigent_examples/shelves/recipes/webhook-post-hmac.yaml,sha256=FIHuwBwq3SS48F71aBXd5RSbSPvT7Hq1Jw1UlpZXGpM,5021
169
+ dirigent_examples/shelves/recipes/webhook-post-summary.yaml,sha256=zyeawWekOD27oOQEniJRUYXG6MnfYLc48HbXmitYkgU,5306
170
+ dirigent_examples/shelves/s3/README.md,sha256=STADgXRQ_inp7ipOoU1w0a3zlpmxLtnk2dakDzhAGVI,1856
171
+ dirigent_examples/shelves/s3/report-to-s3.yaml,sha256=rYbI7RNvvyZLMU3w3k5slPuhgNOf8r75dWHMUSiVY5Q,3022
172
+ dirigent_examples/shelves/s3/s3-copy-and-verify.yaml,sha256=ryXlrlYHig_sm6sFtuwn0qvTUxes7dLlm1yQMkk2pLE,3469
173
+ dirigent_examples/shelves/s3/s3-csv-report.yaml,sha256=pIZMMplx88UHcQkdBQev5bYR3CvyzzjWkxmRpM5Z_fk,2821
174
+ dirigent_examples/shelves/s3/s3-parquet-report.yaml,sha256=VNzYEqrhEUmbu9AifouGYsedbwDm_EK6FqwcskCcSKA,2576
175
+ dirigent_examples/shelves/s3/s3-round-trip.yaml,sha256=JeDCmqkiMZcYxivSyMla3rvWVnFzg_547e4WylX1olg,4165
176
+ dirigent_examples/shelves/schemas/README.md,sha256=oHpbe41WpRYXkUnTzwcKv7LEdblugRKrLyDAPhWINPA,2035
177
+ dirigent_examples/shelves/schemas/echo-reading.json,sha256=ImOFlujVTthnvXbZr50XugkgDdUjs1jdA052IETnoQE,689
178
+ dirigent_examples/shelves/schemas/ou-record.json,sha256=vEa7moak6MfA7KZ6h2jRM7Zl51NlUlDqytGbWHYhS1U,458
179
+ dirigent_examples/shelves/schemas/station-reading.json,sha256=PkQE2Ax-FBIoMt9y5V-4kSczW5urszePKarW0shz5qU,620
180
+ dirigent_examples/shelves/sensors/README.md,sha256=XBw9wMyaXDtz8dERODmTofYQiMSSrofDFlOZ3iPA3YY,664
181
+ dirigent_examples/shelves/sensors/sensor-gate.yaml,sha256=q9xrBlDaWi-bkHae3fibWWZZU_LLMTihvSnZZELh-DA,2556
182
+ dirigent_examples/shelves/sensors/time-window.yaml,sha256=ukpGkqAIO2NgvXT7Z9TG__GK1_u3pSoozbMeZ8-1YqY,2321
183
+ dirigent_examples/shelves/sql/README.md,sha256=wKJZCQ7Q8u2iDvgy-PlRxsSni9SSJ75EL42USa2ldJ0,3076
184
+ dirigent_examples/shelves/sql/duckdb-parquet-to-report.yaml,sha256=vJgydIEQoHJK9SAkEUVAlS2lb0pUAsdOC5FMVN9XORI,6491
185
+ dirigent_examples/shelves/sql/sql-postgres-readonly.yaml,sha256=G15f9sIOSnXmmNOsPhZd3iy8vPmsvcmlIxvn9zaYjoo,5470
186
+ dirigent_examples/shelves/sql/sql-query-to-storage.yaml,sha256=Z9VHLNwi3cYkgc9pSmCGDGFQg_74JJtLqDqvMc7fkEs,3620
187
+ dirigent_examples/shelves/sql/sql-sqlite-roundtrip.yaml,sha256=odRr6-xVUzGk9Xc58l-pfKW8OVA7OCf6Tl1I_-ZQnfc,5104
188
+ dirigent_examples/shelves/sql/warehouse.sql,sha256=c6jxTygMGy9qjsw8HcUGUTCyW0jjVXUQRsgqdmkjGJ0,2094
189
+ dirigent_examples/shelves/transform/README.md,sha256=XM8eto64kJX1apZQdzGr6lB7Kp-Vu4ndHVR_-_8HKBs,2882
190
+ dirigent_examples/shelves/transform/csv-report.yaml,sha256=UhJW0I_VJfZEp_pEPbgrUh_o96YIXSaHb8_qGhAkXUw,2000
191
+ dirigent_examples/shelves/transform/jq-filter-and-map.yaml,sha256=LWaPXq9dBj-XT-Fj0f-b6oBONLIETHZv5ZuyygXx32E,3027
192
+ dirigent_examples/shelves/transform/jq-group-and-aggregate.yaml,sha256=gGrHuK94QmV8gm8frDGheKV5Uy3aVr2JPQwSxhX-a04,2793
193
+ dirigent_examples/shelves/transform/jq-join-two-sources.yaml,sha256=cou28oEhNz5lCIKBsVssqbPCEXew7TJsQKPD2HadkYw,3551
194
+ dirigent_examples/shelves/transform/jq-reshape.yaml,sha256=j8qam_bPgHPkU23VjHqvQISfHzSj48HtVVuToU2uzh4,3865
195
+ dirigent_examples/shelves/transform/jq-stream-through-storage.yaml,sha256=kQChicaouy-8eUi6FQCGEgeRW-LcGi8jINJia4LyNkY,3977
196
+ dirigent_examples/shelves/transform/ndjson-round-trip.yaml,sha256=4RHpdOpHS-PYWLKus_pjs8Zf5pCBs72XKqKxBK_Z8qY,1805
197
+ dirigent_examples/shelves/transform/parquet-round-trip.yaml,sha256=kmnU1ANJK8d1fvJEc1rES_MsrRaHZxeZ7wNxGW5efRg,2218
198
+ dirigent_examples/shelves/transform/std-convert-fan-out.yaml,sha256=fH5VoE_-rKEcvOpkZRCgvLgNdH3tx6boSk8J6jwNSto,4946
199
+ dirigent_examples/shelves/transform/xml-feed-to-ndjson.yaml,sha256=2Tn0YIKUzPUuYq7bIX499uPELE4laVbiIJcrAvqiUSk,4556
200
+ dirigent_examples/shelves/transform/yaml-config-to-json.yaml,sha256=MZIwQ_vdF3LnwrUHYi-pbJX4uPLICpWNVBSB6s5D74E,3519
201
+ dirigent_examples/shelves/triggers/README.md,sha256=hSFweBcmEJZ000PDix7GmbkugybSZmJTLgTu4R0-R34,3018
202
+ dirigent_examples/shelves/triggers/at-one-time.yaml,sha256=IKDYn1lKEOVtEcmCAcjqaaYbKd7ay67sWpAJka9kfIk,2606
203
+ dirigent_examples/shelves/triggers/cron-nightly.yaml,sha256=l6asp1Df_At3UC8FN97wfatXDyAl5O76nb9YH7ZdaDg,2825
204
+ dirigent_examples/shelves/triggers/cron-windowed.yaml,sha256=FVAssfexsnFjjojVG0VwFuES_LrSU0ZlPcAWfMUuBxs,3235
205
+ dirigent_examples/shelves/triggers/document-nightly.yaml,sha256=0YvZKoLQhf5fmyYB6FNmUs9N0IoCRq-ifpwo7QTVyAI,3644
206
+ dirigent_examples/shelves/triggers/interval-rolling.yaml,sha256=54m13OzlAn8PTnNCLH8e1_xz7IFX6z6U5Lh30xOdotQ,3109
207
+ dirigent_examples/shelves/triggers/managed-and-manual.yaml,sha256=S9uEQxw-Fav5QlQoICSVLpMPqjHT8Z4NrN5fAP_o6Kk,3889
208
+ dirigent_examples/shelves/triggers/webhook-trigger.yaml,sha256=bmurknf2JN7EWcWO1zEQzngaRDgdgDCrh1PHPYsuUD0,2787
209
+ dirigent_examples/shelves/validate/README.md,sha256=VyZkyXUWgM-j6mz2ii9UaBwAIsthWU89gwBfjuCtZEw,2222
210
+ dirigent_examples/shelves/validate/expects-a-shape.yaml,sha256=Gi_eHFrhbGCmpf77aey0gR6aQC-bVZbJdjAG_izf6S8,1679
211
+ dirigent_examples/shelves/validate/the-shape-is-wrong.yaml,sha256=XV5WR12JYfPvFBv-URnywEYy_dtEU8VAO9M1xwXl3rs,1386
212
+ dirigent_examples-0.15.0.dist-info/licenses/LICENSE,sha256=LKBm7Cx-WBc1zca4DjGxq99VEpAiWGnZDxIKmntn1hQ,910
213
+ dirigent_examples-0.15.0.dist-info/WHEEL,sha256=-i9oRNYVXXZJUIYl5zclLIg6onEb0NLibTX34uln84w,81
214
+ dirigent_examples-0.15.0.dist-info/entry_points.txt,sha256=g4T-0KlscS_divZMcZCRBorQj00GkWbwlBrekUGd9sw,59
215
+ dirigent_examples-0.15.0.dist-info/METADATA,sha256=rJ_aLmYFpL7V2ES6J6rqaWsvVYku9hxNg50pMi5zPRM,957
216
+ dirigent_examples-0.15.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: uv 0.12.13
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [dirigent.plugins.v1]
2
+ examples = dirigent_examples:plugin
3
+
@@ -0,0 +1,18 @@
1
+ Copyright (c) 2026 Morten Olav Hansen <morten@winterop.com>. All rights reserved.
2
+
3
+ This source code and accompanying documentation are the property of
4
+ Morten Olav Hansen. No license, express or implied, is granted to use, copy,
5
+ modify, merge, publish, distribute, sublicense, or sell copies of this
6
+ software or its derivatives.
7
+
8
+ The source is published for reference only. Any use beyond reading
9
+ requires written permission from the copyright holder.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
14
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES,
15
+ OR OTHER LIABILITY ARISING FROM THE USE OF THE SOFTWARE.
16
+
17
+ Third-party components redistributed with this software, and the licences they
18
+ carry, are listed in THIRD_PARTY_NOTICES.md.