dpcs 0.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. dpcs-0.10.0/Cargo.toml +52 -0
  2. dpcs-0.10.0/PKG-INFO +33 -0
  3. dpcs-0.10.0/README.md +16 -0
  4. dpcs-0.10.0/bindings/python/Cargo.lock +489 -0
  5. dpcs-0.10.0/bindings/python/Cargo.toml +19 -0
  6. dpcs-0.10.0/bindings/python/README.md +16 -0
  7. dpcs-0.10.0/bindings/python/src/lib.rs +174 -0
  8. dpcs-0.10.0/bindings/python/tests/test_smoke.py +17 -0
  9. dpcs-0.10.0/crates/dpcs/Cargo.toml +53 -0
  10. dpcs-0.10.0/crates/dpcs/README.md +252 -0
  11. dpcs-0.10.0/crates/dpcs/src/binding/adapters/airflow.rs +115 -0
  12. dpcs-0.10.0/crates/dpcs/src/binding/adapters/common.rs +439 -0
  13. dpcs-0.10.0/crates/dpcs/src/binding/adapters/dagster.rs +120 -0
  14. dpcs-0.10.0/crates/dpcs/src/binding/adapters/kubernetes.rs +273 -0
  15. dpcs-0.10.0/crates/dpcs/src/binding/adapters/mod.rs +45 -0
  16. dpcs-0.10.0/crates/dpcs/src/binding/adapters/prefect.rs +116 -0
  17. dpcs-0.10.0/crates/dpcs/src/binding/adapters/temporal.rs +103 -0
  18. dpcs-0.10.0/crates/dpcs/src/binding/artifact.rs +124 -0
  19. dpcs-0.10.0/crates/dpcs/src/binding/diagnostics.rs +63 -0
  20. dpcs-0.10.0/crates/dpcs/src/binding/framework.rs +200 -0
  21. dpcs-0.10.0/crates/dpcs/src/binding/mod.rs +32 -0
  22. dpcs-0.10.0/crates/dpcs/src/capabilities/evaluate.rs +352 -0
  23. dpcs-0.10.0/crates/dpcs/src/capabilities/mod.rs +15 -0
  24. dpcs-0.10.0/crates/dpcs/src/capabilities/profile.rs +364 -0
  25. dpcs-0.10.0/crates/dpcs/src/cli/mod.rs +1311 -0
  26. dpcs-0.10.0/crates/dpcs/src/compatibility/compare.rs +1131 -0
  27. dpcs-0.10.0/crates/dpcs/src/compatibility/mod.rs +5 -0
  28. dpcs-0.10.0/crates/dpcs/src/conformance/mod.rs +5 -0
  29. dpcs-0.10.0/crates/dpcs/src/conformance/profile.rs +389 -0
  30. dpcs-0.10.0/crates/dpcs/src/diagnostics/category.rs +55 -0
  31. dpcs-0.10.0/crates/dpcs/src/diagnostics/diagnostic.rs +319 -0
  32. dpcs-0.10.0/crates/dpcs/src/diagnostics/mod.rs +13 -0
  33. dpcs-0.10.0/crates/dpcs/src/diagnostics/report.rs +174 -0
  34. dpcs-0.10.0/crates/dpcs/src/diagnostics/severity.rs +27 -0
  35. dpcs-0.10.0/crates/dpcs/src/diagnostics/stage.rs +42 -0
  36. dpcs-0.10.0/crates/dpcs/src/error.rs +66 -0
  37. dpcs-0.10.0/crates/dpcs/src/lib.rs +119 -0
  38. dpcs-0.10.0/crates/dpcs/src/model/analysis.rs +633 -0
  39. dpcs-0.10.0/crates/dpcs/src/model/compatibility.rs +18 -0
  40. dpcs-0.10.0/crates/dpcs/src/model/contract.rs +155 -0
  41. dpcs-0.10.0/crates/dpcs/src/model/control_flow.rs +22 -0
  42. dpcs-0.10.0/crates/dpcs/src/model/data_flow.rs +25 -0
  43. dpcs-0.10.0/crates/dpcs/src/model/dataset.rs +254 -0
  44. dpcs-0.10.0/crates/dpcs/src/model/endpoints.rs +266 -0
  45. dpcs-0.10.0/crates/dpcs/src/model/execution.rs +97 -0
  46. dpcs-0.10.0/crates/dpcs/src/model/extension.rs +87 -0
  47. dpcs-0.10.0/crates/dpcs/src/model/extension_value.rs +282 -0
  48. dpcs-0.10.0/crates/dpcs/src/model/failure.rs +198 -0
  49. dpcs-0.10.0/crates/dpcs/src/model/governance.rs +41 -0
  50. dpcs-0.10.0/crates/dpcs/src/model/graph.rs +44 -0
  51. dpcs-0.10.0/crates/dpcs/src/model/identity.rs +378 -0
  52. dpcs-0.10.0/crates/dpcs/src/model/interface.rs +94 -0
  53. dpcs-0.10.0/crates/dpcs/src/model/invariants.rs +285 -0
  54. dpcs-0.10.0/crates/dpcs/src/model/lineage.rs +120 -0
  55. dpcs-0.10.0/crates/dpcs/src/model/metadata.rs +28 -0
  56. dpcs-0.10.0/crates/dpcs/src/model/mod.rs +59 -0
  57. dpcs-0.10.0/crates/dpcs/src/model/quality_gate.rs +142 -0
  58. dpcs-0.10.0/crates/dpcs/src/model/reference.rs +32 -0
  59. dpcs-0.10.0/crates/dpcs/src/model/registry.rs +332 -0
  60. dpcs-0.10.0/crates/dpcs/src/model/scheduling.rs +170 -0
  61. dpcs-0.10.0/crates/dpcs/src/model/security.rs +61 -0
  62. dpcs-0.10.0/crates/dpcs/src/model/step.rs +62 -0
  63. dpcs-0.10.0/crates/dpcs/src/model/versioning.rs +177 -0
  64. dpcs-0.10.0/crates/dpcs/src/package/manifest.rs +66 -0
  65. dpcs-0.10.0/crates/dpcs/src/package/mod.rs +9 -0
  66. dpcs-0.10.0/crates/dpcs/src/package/resolve.rs +470 -0
  67. dpcs-0.10.0/crates/dpcs/src/package/validate.rs +149 -0
  68. dpcs-0.10.0/crates/dpcs/src/parser/diagnostics.rs +171 -0
  69. dpcs-0.10.0/crates/dpcs/src/parser/json.rs +44 -0
  70. dpcs-0.10.0/crates/dpcs/src/parser/mod.rs +47 -0
  71. dpcs-0.10.0/crates/dpcs/src/parser/yaml.rs +44 -0
  72. dpcs-0.10.0/crates/dpcs/src/paths.rs +115 -0
  73. dpcs-0.10.0/crates/dpcs/src/plan/mod.rs +7 -0
  74. dpcs-0.10.0/crates/dpcs/src/plan/pipeline_plan.rs +254 -0
  75. dpcs-0.10.0/crates/dpcs/src/registry_net/cache.rs +145 -0
  76. dpcs-0.10.0/crates/dpcs/src/registry_net/client.rs +357 -0
  77. dpcs-0.10.0/crates/dpcs/src/registry_net/mod.rs +18 -0
  78. dpcs-0.10.0/crates/dpcs/src/registry_net/server.rs +437 -0
  79. dpcs-0.10.0/crates/dpcs/src/registry_net/types.rs +19 -0
  80. dpcs-0.10.0/crates/dpcs/src/schema/mod.rs +472 -0
  81. dpcs-0.10.0/crates/dpcs/src/validation/com.rs +9 -0
  82. dpcs-0.10.0/crates/dpcs/src/validation/control_flow.rs +116 -0
  83. dpcs-0.10.0/crates/dpcs/src/validation/data_flow.rs +127 -0
  84. dpcs-0.10.0/crates/dpcs/src/validation/document.rs +32 -0
  85. dpcs-0.10.0/crates/dpcs/src/validation/execution.rs +130 -0
  86. dpcs-0.10.0/crates/dpcs/src/validation/extensions.rs +162 -0
  87. dpcs-0.10.0/crates/dpcs/src/validation/failure.rs +195 -0
  88. dpcs-0.10.0/crates/dpcs/src/validation/governance.rs +85 -0
  89. dpcs-0.10.0/crates/dpcs/src/validation/graph.rs +152 -0
  90. dpcs-0.10.0/crates/dpcs/src/validation/lineage.rs +247 -0
  91. dpcs-0.10.0/crates/dpcs/src/validation/mod.rs +26 -0
  92. dpcs-0.10.0/crates/dpcs/src/validation/phases.rs +36 -0
  93. dpcs-0.10.0/crates/dpcs/src/validation/quality.rs +179 -0
  94. dpcs-0.10.0/crates/dpcs/src/validation/references.rs +175 -0
  95. dpcs-0.10.0/crates/dpcs/src/validation/scheduling.rs +225 -0
  96. dpcs-0.10.0/crates/dpcs/src/validation/security.rs +128 -0
  97. dpcs-0.10.0/crates/dpcs/src/validation/structural.rs +51 -0
  98. dpcs-0.10.0/crates/dpcs/tests/binding.rs +279 -0
  99. dpcs-0.10.0/crates/dpcs/tests/capabilities.rs +213 -0
  100. dpcs-0.10.0/crates/dpcs/tests/conformance.rs +199 -0
  101. dpcs-0.10.0/crates/dpcs/tests/fixtures/capabilities/invalid/bad_profile.profile.yaml +6 -0
  102. dpcs-0.10.0/crates/dpcs/tests/fixtures/capabilities/invalid/missing_mandatory.profile.yaml +5 -0
  103. dpcs-0.10.0/crates/dpcs/tests/fixtures/capabilities/valid/matching.profile.yaml +10 -0
  104. dpcs-0.10.0/crates/dpcs/tests/fixtures/capabilities/valid/version_mismatch.profile.yaml +5 -0
  105. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bad_control_flow.dpcs.yaml +14 -0
  106. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bad_data_flow.dpcs.yaml +14 -0
  107. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bad_extension_namespace.dpcs.yaml +12 -0
  108. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bad_failure_semantics.dpcs.yaml +19 -0
  109. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bad_flow_roles.dpcs.yaml +33 -0
  110. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bad_lineage.dpcs.yaml +19 -0
  111. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bad_quality_gate.dpcs.yaml +20 -0
  112. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bad_step_port_endpoint.dpcs.yaml +18 -0
  113. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/bogus_filename_ref.dpcs.yaml +12 -0
  114. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/conflicting_deps.dpcs.yaml +18 -0
  115. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/cycle.dpcs.yaml +17 -0
  116. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/cycle_with_orphan_dataset.dpcs.yaml +31 -0
  117. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/duplicate_control_flow.dpcs.yaml +18 -0
  118. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/duplicate_edge.dpcs.yaml +17 -0
  119. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/duplicate_interface_inputs.dpcs.yaml +17 -0
  120. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/duplicate_interface_ports.dpcs.yaml +17 -0
  121. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/duplicate_registry_artifact.yaml +11 -0
  122. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/duplicate_steps.dpcs.yaml +13 -0
  123. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/empty_capability.dpcs.yaml +12 -0
  124. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/empty_retry.dpcs.yaml +20 -0
  125. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/empty_step_port.dpcs.yaml +15 -0
  126. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/event_missing_source.dpcs.yaml +14 -0
  127. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/freeform_timing.dpcs.yaml +14 -0
  128. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/incomplete_external_dep.dpcs.yaml +13 -0
  129. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/incomplete_interface_port.dpcs.yaml +11 -0
  130. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/invalid_entry_point.dpcs.yaml +17 -0
  131. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/invalid_exit_point.dpcs.yaml +13 -0
  132. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/invalid_version.dpcs.yaml +11 -0
  133. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/legacy_lineage.dpcs.yaml +14 -0
  134. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/malformed.dpcs.yaml +1 -0
  135. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/missing_dataset.dpcs.yaml +22 -0
  136. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/scheduled_missing_cron.dpcs.yaml +11 -0
  137. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/timing_constraints.dpcs.yaml +14 -0
  138. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unknown_edge.dpcs.yaml +13 -0
  139. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unreachable_dataset.dpcs.yaml +32 -0
  140. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unreachable_step.dpcs.yaml +19 -0
  141. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unresolved_data_flow_ref.dpcs.yaml +22 -0
  142. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unresolved_qg_ref.dpcs.yaml +16 -0
  143. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unresolved_ref.dpcs.yaml +12 -0
  144. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unresolved_step_port_ref.dpcs.yaml +24 -0
  145. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unresolved_transform_ref.dpcs.yaml +12 -0
  146. dpcs-0.10.0/crates/dpcs/tests/fixtures/invalid/unsatisfied_step_input.dpcs.yaml +24 -0
  147. dpcs-0.10.0/crates/dpcs/tests/fixtures/valid/duplicate_edge_different_kind.dpcs.yaml +19 -0
  148. dpcs-0.10.0/crates/dpcs/tests/fixtures/valid/minimal.dpcs.json +13 -0
  149. dpcs-0.10.0/crates/dpcs/tests/fixtures/valid/minimal.dpcs.yaml +9 -0
  150. dpcs-0.10.0/crates/dpcs/tests/fixtures/valid/with_data_flow.dpcs.yaml +35 -0
  151. dpcs-0.10.0/crates/dpcs/tests/fixtures/valid/with_execution_model.dpcs.yaml +96 -0
  152. dpcs-0.10.0/crates/dpcs/tests/fixtures/valid/with_graph_features.dpcs.yaml +64 -0
  153. dpcs-0.10.0/crates/dpcs/tests/fixtures/valid/with_nested_extensions.dpcs.yaml +20 -0
  154. dpcs-0.10.0/crates/dpcs/tests/graph_analysis.rs +121 -0
  155. dpcs-0.10.0/crates/dpcs/tests/model_identity.rs +99 -0
  156. dpcs-0.10.0/crates/dpcs/tests/package.rs +127 -0
  157. dpcs-0.10.0/crates/dpcs/tests/parse_and_validate.rs +421 -0
  158. dpcs-0.10.0/crates/dpcs/tests/planning.rs +56 -0
  159. dpcs-0.10.0/crates/dpcs/tests/registry_net.rs +275 -0
  160. dpcs-0.10.0/crates/dpcs/tests/round_trip.rs +179 -0
  161. dpcs-0.10.0/crates/dpcs/tests/schema.rs +24 -0
  162. dpcs-0.10.0/pyproject.toml +29 -0
dpcs-0.10.0/Cargo.toml ADDED
@@ -0,0 +1,52 @@
1
+ [workspace]
2
+ resolver = "2"
3
+ members = [
4
+ "crates/dpcs",
5
+ "crates/dpcs-cli",
6
+ "bindings/wasm",
7
+ ]
8
+ exclude = [
9
+ "bindings/python",
10
+ ]
11
+ default-members = [
12
+ "crates/dpcs",
13
+ "crates/dpcs-cli",
14
+ ]
15
+
16
+ [workspace.package]
17
+ version = "0.10.0"
18
+ edition = "2021"
19
+ rust-version = "1.86"
20
+ license = "Apache-2.0 OR MIT"
21
+ repository = "https://github.com/eddiethedean/dpcs"
22
+ homepage = "https://github.com/eddiethedean/dpcs"
23
+ authors = ["DPCS Contributors"]
24
+
25
+ [workspace.dependencies]
26
+ dpcs = { path = "crates/dpcs", version = "0.10.0" }
27
+ serde = { version = "1", features = ["derive"] }
28
+ serde_json = "1"
29
+ serde_yaml = "0.9"
30
+ thiserror = "2"
31
+ indexmap = { version = "2", features = ["serde"] }
32
+ clap = { version = "4", features = ["derive"] }
33
+ schemars = { version = "0.8", features = ["indexmap2"] }
34
+ reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls", "blocking"] }
35
+ axum = { version = "0.8", features = ["json"] }
36
+ tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "fs", "signal"] }
37
+ tower-http = { version = "0.6", features = ["trace"] }
38
+ url = { version = "2", features = ["serde"] }
39
+ zip = { version = "2", default-features = false, features = ["deflate"] }
40
+ walkdir = "2"
41
+ tempfile = "3"
42
+ assert_cmd = "2"
43
+ predicates = "3"
44
+ wasm-bindgen = "0.2"
45
+ serde-wasm-bindgen = "0.6"
46
+ console_error_panic_hook = "0.1"
47
+ wasm-bindgen-test = "0.3"
48
+
49
+ [profile.release]
50
+ lto = true
51
+ codegen-units = 1
52
+ strip = true
dpcs-0.10.0/PKG-INFO ADDED
@@ -0,0 +1,33 @@
1
+ Metadata-Version: 2.4
2
+ Name: dpcs
3
+ Version: 0.10.0
4
+ Classifier: Programming Language :: Rust
5
+ Classifier: Programming Language :: Python :: Implementation :: CPython
6
+ Classifier: Programming Language :: Python :: 3
7
+ Classifier: License :: OSI Approved :: Apache Software License
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Summary: Python bindings for the Data Pipeline Contract Standard (DPCS) reference toolkit
10
+ Author: DPCS Contributors
11
+ License: Apache-2.0 OR MIT
12
+ Requires-Python: >=3.9
13
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
14
+ Project-URL: Homepage, https://github.com/eddiethedean/dpcs
15
+ Project-URL: Repository, https://github.com/eddiethedean/dpcs
16
+
17
+ # dpcs (Python)
18
+
19
+ Python bindings for the DPCS Rust reference toolkit (ROADMAP 0.10).
20
+
21
+ ```bash
22
+ pip install dpcs
23
+ # or from this repo:
24
+ pip install ./bindings/python
25
+ ```
26
+
27
+ ```python
28
+ import dpcs
29
+
30
+ report = dpcs.validate_yaml(open("pipeline.dpcs.yaml").read())
31
+ assert report["diagnostics"] == [] or all(d["severity"] != "error" for d in report["diagnostics"])
32
+ ```
33
+
dpcs-0.10.0/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # dpcs (Python)
2
+
3
+ Python bindings for the DPCS Rust reference toolkit (ROADMAP 0.10).
4
+
5
+ ```bash
6
+ pip install dpcs
7
+ # or from this repo:
8
+ pip install ./bindings/python
9
+ ```
10
+
11
+ ```python
12
+ import dpcs
13
+
14
+ report = dpcs.validate_yaml(open("pipeline.dpcs.yaml").read())
15
+ assert report["diagnostics"] == [] or all(d["severity"] != "error" for d in report["diagnostics"])
16
+ ```
@@ -0,0 +1,489 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "adler2"
7
+ version = "2.0.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
+
11
+ [[package]]
12
+ name = "arbitrary"
13
+ version = "1.4.2"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
16
+ dependencies = [
17
+ "derive_arbitrary",
18
+ ]
19
+
20
+ [[package]]
21
+ name = "autocfg"
22
+ version = "1.5.1"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
25
+
26
+ [[package]]
27
+ name = "bumpalo"
28
+ version = "3.20.3"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
31
+
32
+ [[package]]
33
+ name = "cfg-if"
34
+ version = "1.0.4"
35
+ source = "registry+https://github.com/rust-lang/crates.io-index"
36
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
37
+
38
+ [[package]]
39
+ name = "crc32fast"
40
+ version = "1.5.0"
41
+ source = "registry+https://github.com/rust-lang/crates.io-index"
42
+ checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
43
+ dependencies = [
44
+ "cfg-if",
45
+ ]
46
+
47
+ [[package]]
48
+ name = "crossbeam-utils"
49
+ version = "0.8.22"
50
+ source = "registry+https://github.com/rust-lang/crates.io-index"
51
+ checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
52
+
53
+ [[package]]
54
+ name = "derive_arbitrary"
55
+ version = "1.4.2"
56
+ source = "registry+https://github.com/rust-lang/crates.io-index"
57
+ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a"
58
+ dependencies = [
59
+ "proc-macro2",
60
+ "quote",
61
+ "syn",
62
+ ]
63
+
64
+ [[package]]
65
+ name = "displaydoc"
66
+ version = "0.2.6"
67
+ source = "registry+https://github.com/rust-lang/crates.io-index"
68
+ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
69
+ dependencies = [
70
+ "proc-macro2",
71
+ "quote",
72
+ "syn",
73
+ ]
74
+
75
+ [[package]]
76
+ name = "dpcs"
77
+ version = "0.10.0"
78
+ dependencies = [
79
+ "indexmap",
80
+ "serde",
81
+ "serde_json",
82
+ "serde_yaml",
83
+ "thiserror",
84
+ "walkdir",
85
+ "zip",
86
+ ]
87
+
88
+ [[package]]
89
+ name = "dpcs-python"
90
+ version = "0.10.0"
91
+ dependencies = [
92
+ "dpcs",
93
+ "pyo3",
94
+ "serde",
95
+ "serde_json",
96
+ "serde_yaml",
97
+ ]
98
+
99
+ [[package]]
100
+ name = "equivalent"
101
+ version = "1.0.2"
102
+ source = "registry+https://github.com/rust-lang/crates.io-index"
103
+ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
104
+
105
+ [[package]]
106
+ name = "flate2"
107
+ version = "1.1.9"
108
+ source = "registry+https://github.com/rust-lang/crates.io-index"
109
+ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
110
+ dependencies = [
111
+ "crc32fast",
112
+ "miniz_oxide",
113
+ ]
114
+
115
+ [[package]]
116
+ name = "hashbrown"
117
+ version = "0.17.1"
118
+ source = "registry+https://github.com/rust-lang/crates.io-index"
119
+ checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
120
+
121
+ [[package]]
122
+ name = "heck"
123
+ version = "0.5.0"
124
+ source = "registry+https://github.com/rust-lang/crates.io-index"
125
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
126
+
127
+ [[package]]
128
+ name = "indexmap"
129
+ version = "2.14.0"
130
+ source = "registry+https://github.com/rust-lang/crates.io-index"
131
+ checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
132
+ dependencies = [
133
+ "equivalent",
134
+ "hashbrown",
135
+ "serde",
136
+ "serde_core",
137
+ ]
138
+
139
+ [[package]]
140
+ name = "indoc"
141
+ version = "2.0.7"
142
+ source = "registry+https://github.com/rust-lang/crates.io-index"
143
+ checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
144
+ dependencies = [
145
+ "rustversion",
146
+ ]
147
+
148
+ [[package]]
149
+ name = "itoa"
150
+ version = "1.0.18"
151
+ source = "registry+https://github.com/rust-lang/crates.io-index"
152
+ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
153
+
154
+ [[package]]
155
+ name = "libc"
156
+ version = "0.2.186"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
159
+
160
+ [[package]]
161
+ name = "log"
162
+ version = "0.4.33"
163
+ source = "registry+https://github.com/rust-lang/crates.io-index"
164
+ checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
165
+
166
+ [[package]]
167
+ name = "memchr"
168
+ version = "2.8.3"
169
+ source = "registry+https://github.com/rust-lang/crates.io-index"
170
+ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
171
+
172
+ [[package]]
173
+ name = "memoffset"
174
+ version = "0.9.1"
175
+ source = "registry+https://github.com/rust-lang/crates.io-index"
176
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
177
+ dependencies = [
178
+ "autocfg",
179
+ ]
180
+
181
+ [[package]]
182
+ name = "miniz_oxide"
183
+ version = "0.8.9"
184
+ source = "registry+https://github.com/rust-lang/crates.io-index"
185
+ checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
186
+ dependencies = [
187
+ "adler2",
188
+ "simd-adler32",
189
+ ]
190
+
191
+ [[package]]
192
+ name = "once_cell"
193
+ version = "1.21.4"
194
+ source = "registry+https://github.com/rust-lang/crates.io-index"
195
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
196
+
197
+ [[package]]
198
+ name = "portable-atomic"
199
+ version = "1.13.1"
200
+ source = "registry+https://github.com/rust-lang/crates.io-index"
201
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
202
+
203
+ [[package]]
204
+ name = "proc-macro2"
205
+ version = "1.0.106"
206
+ source = "registry+https://github.com/rust-lang/crates.io-index"
207
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
208
+ dependencies = [
209
+ "unicode-ident",
210
+ ]
211
+
212
+ [[package]]
213
+ name = "pyo3"
214
+ version = "0.23.5"
215
+ source = "registry+https://github.com/rust-lang/crates.io-index"
216
+ checksum = "7778bffd85cf38175ac1f545509665d0b9b92a198ca7941f131f85f7a4f9a872"
217
+ dependencies = [
218
+ "cfg-if",
219
+ "indoc",
220
+ "libc",
221
+ "memoffset",
222
+ "once_cell",
223
+ "portable-atomic",
224
+ "pyo3-build-config",
225
+ "pyo3-ffi",
226
+ "pyo3-macros",
227
+ "unindent",
228
+ ]
229
+
230
+ [[package]]
231
+ name = "pyo3-build-config"
232
+ version = "0.23.5"
233
+ source = "registry+https://github.com/rust-lang/crates.io-index"
234
+ checksum = "94f6cbe86ef3bf18998d9df6e0f3fc1050a8c5efa409bf712e661a4366e010fb"
235
+ dependencies = [
236
+ "once_cell",
237
+ "target-lexicon",
238
+ ]
239
+
240
+ [[package]]
241
+ name = "pyo3-ffi"
242
+ version = "0.23.5"
243
+ source = "registry+https://github.com/rust-lang/crates.io-index"
244
+ checksum = "e9f1b4c431c0bb1c8fb0a338709859eed0d030ff6daa34368d3b152a63dfdd8d"
245
+ dependencies = [
246
+ "libc",
247
+ "pyo3-build-config",
248
+ ]
249
+
250
+ [[package]]
251
+ name = "pyo3-macros"
252
+ version = "0.23.5"
253
+ source = "registry+https://github.com/rust-lang/crates.io-index"
254
+ checksum = "fbc2201328f63c4710f68abdf653c89d8dbc2858b88c5d88b0ff38a75288a9da"
255
+ dependencies = [
256
+ "proc-macro2",
257
+ "pyo3-macros-backend",
258
+ "quote",
259
+ "syn",
260
+ ]
261
+
262
+ [[package]]
263
+ name = "pyo3-macros-backend"
264
+ version = "0.23.5"
265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
266
+ checksum = "fca6726ad0f3da9c9de093d6f116a93c1a38e417ed73bf138472cf4064f72028"
267
+ dependencies = [
268
+ "heck",
269
+ "proc-macro2",
270
+ "pyo3-build-config",
271
+ "quote",
272
+ "syn",
273
+ ]
274
+
275
+ [[package]]
276
+ name = "quote"
277
+ version = "1.0.46"
278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
279
+ checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
280
+ dependencies = [
281
+ "proc-macro2",
282
+ ]
283
+
284
+ [[package]]
285
+ name = "rustversion"
286
+ version = "1.0.23"
287
+ source = "registry+https://github.com/rust-lang/crates.io-index"
288
+ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
289
+
290
+ [[package]]
291
+ name = "ryu"
292
+ version = "1.0.23"
293
+ source = "registry+https://github.com/rust-lang/crates.io-index"
294
+ checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
295
+
296
+ [[package]]
297
+ name = "same-file"
298
+ version = "1.0.6"
299
+ source = "registry+https://github.com/rust-lang/crates.io-index"
300
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
301
+ dependencies = [
302
+ "winapi-util",
303
+ ]
304
+
305
+ [[package]]
306
+ name = "serde"
307
+ version = "1.0.228"
308
+ source = "registry+https://github.com/rust-lang/crates.io-index"
309
+ checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
310
+ dependencies = [
311
+ "serde_core",
312
+ "serde_derive",
313
+ ]
314
+
315
+ [[package]]
316
+ name = "serde_core"
317
+ version = "1.0.228"
318
+ source = "registry+https://github.com/rust-lang/crates.io-index"
319
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
320
+ dependencies = [
321
+ "serde_derive",
322
+ ]
323
+
324
+ [[package]]
325
+ name = "serde_derive"
326
+ version = "1.0.228"
327
+ source = "registry+https://github.com/rust-lang/crates.io-index"
328
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
329
+ dependencies = [
330
+ "proc-macro2",
331
+ "quote",
332
+ "syn",
333
+ ]
334
+
335
+ [[package]]
336
+ name = "serde_json"
337
+ version = "1.0.150"
338
+ source = "registry+https://github.com/rust-lang/crates.io-index"
339
+ checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
340
+ dependencies = [
341
+ "itoa",
342
+ "memchr",
343
+ "serde",
344
+ "serde_core",
345
+ "zmij",
346
+ ]
347
+
348
+ [[package]]
349
+ name = "serde_yaml"
350
+ version = "0.9.34+deprecated"
351
+ source = "registry+https://github.com/rust-lang/crates.io-index"
352
+ checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47"
353
+ dependencies = [
354
+ "indexmap",
355
+ "itoa",
356
+ "ryu",
357
+ "serde",
358
+ "unsafe-libyaml",
359
+ ]
360
+
361
+ [[package]]
362
+ name = "simd-adler32"
363
+ version = "0.3.9"
364
+ source = "registry+https://github.com/rust-lang/crates.io-index"
365
+ checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
366
+
367
+ [[package]]
368
+ name = "syn"
369
+ version = "2.0.118"
370
+ source = "registry+https://github.com/rust-lang/crates.io-index"
371
+ checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
372
+ dependencies = [
373
+ "proc-macro2",
374
+ "quote",
375
+ "unicode-ident",
376
+ ]
377
+
378
+ [[package]]
379
+ name = "target-lexicon"
380
+ version = "0.12.16"
381
+ source = "registry+https://github.com/rust-lang/crates.io-index"
382
+ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
383
+
384
+ [[package]]
385
+ name = "thiserror"
386
+ version = "2.0.18"
387
+ source = "registry+https://github.com/rust-lang/crates.io-index"
388
+ checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
389
+ dependencies = [
390
+ "thiserror-impl",
391
+ ]
392
+
393
+ [[package]]
394
+ name = "thiserror-impl"
395
+ version = "2.0.18"
396
+ source = "registry+https://github.com/rust-lang/crates.io-index"
397
+ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
398
+ dependencies = [
399
+ "proc-macro2",
400
+ "quote",
401
+ "syn",
402
+ ]
403
+
404
+ [[package]]
405
+ name = "unicode-ident"
406
+ version = "1.0.24"
407
+ source = "registry+https://github.com/rust-lang/crates.io-index"
408
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
409
+
410
+ [[package]]
411
+ name = "unindent"
412
+ version = "0.2.4"
413
+ source = "registry+https://github.com/rust-lang/crates.io-index"
414
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
415
+
416
+ [[package]]
417
+ name = "unsafe-libyaml"
418
+ version = "0.2.11"
419
+ source = "registry+https://github.com/rust-lang/crates.io-index"
420
+ checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
421
+
422
+ [[package]]
423
+ name = "walkdir"
424
+ version = "2.5.0"
425
+ source = "registry+https://github.com/rust-lang/crates.io-index"
426
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
427
+ dependencies = [
428
+ "same-file",
429
+ "winapi-util",
430
+ ]
431
+
432
+ [[package]]
433
+ name = "winapi-util"
434
+ version = "0.1.11"
435
+ source = "registry+https://github.com/rust-lang/crates.io-index"
436
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
437
+ dependencies = [
438
+ "windows-sys",
439
+ ]
440
+
441
+ [[package]]
442
+ name = "windows-link"
443
+ version = "0.2.1"
444
+ source = "registry+https://github.com/rust-lang/crates.io-index"
445
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
446
+
447
+ [[package]]
448
+ name = "windows-sys"
449
+ version = "0.61.2"
450
+ source = "registry+https://github.com/rust-lang/crates.io-index"
451
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
452
+ dependencies = [
453
+ "windows-link",
454
+ ]
455
+
456
+ [[package]]
457
+ name = "zip"
458
+ version = "2.4.2"
459
+ source = "registry+https://github.com/rust-lang/crates.io-index"
460
+ checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50"
461
+ dependencies = [
462
+ "arbitrary",
463
+ "crc32fast",
464
+ "crossbeam-utils",
465
+ "displaydoc",
466
+ "flate2",
467
+ "indexmap",
468
+ "memchr",
469
+ "thiserror",
470
+ "zopfli",
471
+ ]
472
+
473
+ [[package]]
474
+ name = "zmij"
475
+ version = "1.0.23"
476
+ source = "registry+https://github.com/rust-lang/crates.io-index"
477
+ checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
478
+
479
+ [[package]]
480
+ name = "zopfli"
481
+ version = "0.8.3"
482
+ source = "registry+https://github.com/rust-lang/crates.io-index"
483
+ checksum = "f05cd8797d63865425ff89b5c4a48804f35ba0ce8d125800027ad6017d2b5249"
484
+ dependencies = [
485
+ "bumpalo",
486
+ "crc32fast",
487
+ "log",
488
+ "simd-adler32",
489
+ ]
@@ -0,0 +1,19 @@
1
+ [package]
2
+ name = "dpcs-python"
3
+ version = "0.10.0"
4
+ edition = "2021"
5
+ rust-version = "1.86"
6
+ license = "Apache-2.0 OR MIT"
7
+ publish = false
8
+ readme = "README.md"
9
+
10
+ [lib]
11
+ name = "dpcs"
12
+ crate-type = ["cdylib"]
13
+
14
+ [dependencies]
15
+ dpcs = { path = "../../crates/dpcs" }
16
+ pyo3 = { version = "0.23", features = ["extension-module", "abi3-py39"] }
17
+ serde_json = "1"
18
+ serde_yaml = "0.9"
19
+ serde = { version = "1", features = ["derive"] }
@@ -0,0 +1,16 @@
1
+ # dpcs (Python)
2
+
3
+ Python bindings for the DPCS Rust reference toolkit (ROADMAP 0.10).
4
+
5
+ ```bash
6
+ pip install dpcs
7
+ # or from this repo:
8
+ pip install ./bindings/python
9
+ ```
10
+
11
+ ```python
12
+ import dpcs
13
+
14
+ report = dpcs.validate_yaml(open("pipeline.dpcs.yaml").read())
15
+ assert report["diagnostics"] == [] or all(d["severity"] != "error" for d in report["diagnostics"])
16
+ ```