dumpling-cli 0.5.0__tar.gz → 0.7.0a0__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 (45) hide show
  1. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.dumplingconf.example +4 -2
  2. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/ci.yml +2 -2
  3. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/docs-pr.yml +1 -1
  4. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/docs.yml +3 -3
  5. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/platform-compat-latest.yml +2 -2
  6. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/platform-compat-matrix.yml +2 -2
  7. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/policy-lint.yml +2 -2
  8. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/publish.yml +9 -9
  9. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/release.yml +2 -2
  10. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/tests.yml +2 -2
  11. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/AGENTS.md +1 -1
  12. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/CHANGELOG.md +25 -0
  13. dumpling_cli-0.7.0a0/CONTRIBUTORS.md +6 -0
  14. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/Cargo.lock +1 -1
  15. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/Cargo.toml +1 -1
  16. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/PKG-INFO +212 -183
  17. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/README.md +211 -182
  18. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/configuration.md +77 -0
  19. dumpling_cli-0.7.0a0/docs/src/getting-started.md +45 -0
  20. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/index.md +2 -0
  21. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/pyproject.toml +1 -1
  22. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/filter.rs +93 -12
  23. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/lint.rs +3 -0
  24. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/main.rs +454 -55
  25. dumpling_cli-0.7.0a0/src/scaffold.rs +280 -0
  26. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/scan.rs +2 -1
  27. dumpling_cli-0.7.0a0/src/seal.rs +466 -0
  28. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/settings.rs +92 -16
  29. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/sql.rs +825 -125
  30. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/transform.rs +356 -12
  31. dumpling_cli-0.5.0/docs/src/getting-started.md +0 -33
  32. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.gitignore +0 -0
  33. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/CONTRIBUTING.md +0 -0
  34. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/MAINTENANCE.md +0 -0
  35. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/assets/logo.svg +0 -0
  36. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/book.toml +0 -0
  37. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/datetime_out.sql +0 -0
  38. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/datetime_sample.sql +0 -0
  39. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/SUMMARY.md +0 -0
  40. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/ci-guardrails.md +0 -0
  41. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/releasing.md +0 -0
  42. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/rust-toolchain.toml +0 -0
  43. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/scripts/setup-dev.sh +0 -0
  44. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/faker_dispatch.rs +0 -0
  45. {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/report.rs +0 -0
@@ -59,8 +59,10 @@ last_login = { strategy = "datetime_fuzz" }
59
59
  wake_time = { strategy = "time_fuzz", min_seconds = -3600, max_seconds = 3600 }
60
60
 
61
61
  [rules."public.orders"]
62
- # credit card — redact entirely; force as quoted string
63
- credit_card = { strategy = "redact", as_string = true }
62
+ # credit card — Luhn-valid synthetic PAN (length 13–19); use domain for stable FKs across dumps
63
+ credit_card = { strategy = "payment_card", length = 16, domain = "order_pan" }
64
+ # monetary / numeric — random decimal in range with fixed fractional digits
65
+ order_total = { strategy = "decimal", min = 0, max = 99999, scale = 2, domain = "order_amount" }
64
66
  # keep the same anonymized email as users table via shared domain
65
67
  customer_email = { strategy = "faker", faker = "internet::SafeEmail", domain = "customer_identity" }
66
68
 
@@ -15,7 +15,7 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  steps:
17
17
  - name: Checkout
18
- uses: actions/checkout@v4
18
+ uses: actions/checkout@v6
19
19
 
20
20
  - name: Install Rust toolchain
21
21
  uses: dtolnay/rust-toolchain@stable
@@ -23,7 +23,7 @@ jobs:
23
23
  components: rustfmt, clippy
24
24
 
25
25
  - name: Cache Cargo build artifacts
26
- uses: Swatinem/rust-cache@v2
26
+ uses: Swatinem/rust-cache@v2.9.1
27
27
 
28
28
  - name: Check formatting
29
29
  run: cargo fmt --all -- --check
@@ -24,7 +24,7 @@ jobs:
24
24
  runs-on: ubuntu-latest
25
25
  steps:
26
26
  - name: Checkout
27
- uses: actions/checkout@v4
27
+ uses: actions/checkout@v6
28
28
 
29
29
  - name: Install mdBook
30
30
  uses: peaceiris/actions-mdbook@v2
@@ -26,7 +26,7 @@ jobs:
26
26
  contents: read
27
27
  steps:
28
28
  - name: Checkout
29
- uses: actions/checkout@v4
29
+ uses: actions/checkout@v6
30
30
 
31
31
  - name: Install mdBook
32
32
  uses: peaceiris/actions-mdbook@v2
@@ -37,7 +37,7 @@ jobs:
37
37
  run: mdbook build
38
38
 
39
39
  - name: Upload Pages deployment artifact
40
- uses: actions/upload-pages-artifact@v3
40
+ uses: actions/upload-pages-artifact@v5
41
41
  with:
42
42
  path: docs/book
43
43
 
@@ -53,4 +53,4 @@ jobs:
53
53
  steps:
54
54
  - name: Deploy docs to GitHub Pages
55
55
  id: deployment
56
- uses: actions/deploy-pages@v4
56
+ uses: actions/deploy-pages@v5
@@ -22,13 +22,13 @@ jobs:
22
22
  - windows-latest
23
23
  steps:
24
24
  - name: Checkout
25
- uses: actions/checkout@v4
25
+ uses: actions/checkout@v6
26
26
 
27
27
  - name: Install Rust toolchain
28
28
  uses: dtolnay/rust-toolchain@stable
29
29
 
30
30
  - name: Cache Cargo build artifacts
31
- uses: Swatinem/rust-cache@v2
31
+ uses: Swatinem/rust-cache@v2.9.1
32
32
 
33
33
  - name: Build release binary
34
34
  run: cargo build --release --locked
@@ -20,13 +20,13 @@ jobs:
20
20
  - windows-2022
21
21
  steps:
22
22
  - name: Checkout
23
- uses: actions/checkout@v4
23
+ uses: actions/checkout@v6
24
24
 
25
25
  - name: Install Rust toolchain
26
26
  uses: dtolnay/rust-toolchain@stable
27
27
 
28
28
  - name: Cache Cargo build artifacts
29
- uses: Swatinem/rust-cache@v2
29
+ uses: Swatinem/rust-cache@v2.9.1
30
30
 
31
31
  - name: Build release binary
32
32
  run: cargo build --release --locked
@@ -32,13 +32,13 @@ jobs:
32
32
 
33
33
  steps:
34
34
  - name: Checkout
35
- uses: actions/checkout@v4
35
+ uses: actions/checkout@v6
36
36
 
37
37
  - name: Install Rust toolchain
38
38
  uses: dtolnay/rust-toolchain@stable
39
39
 
40
40
  - name: Cache Cargo build artifacts
41
- uses: Swatinem/rust-cache@v2
41
+ uses: Swatinem/rust-cache@v2.9.1
42
42
 
43
43
  - name: Build dumpling
44
44
  run: cargo build --release --locked
@@ -32,16 +32,16 @@ jobs:
32
32
  - windows-latest
33
33
  steps:
34
34
  - name: Checkout
35
- uses: actions/checkout@v4
35
+ uses: actions/checkout@v6
36
36
 
37
37
  - name: Install Rust toolchain
38
38
  uses: dtolnay/rust-toolchain@stable
39
39
 
40
40
  - name: Cache Cargo build artifacts
41
- uses: Swatinem/rust-cache@v2
41
+ uses: Swatinem/rust-cache@v2.9.1
42
42
 
43
43
  - name: Set up Python
44
- uses: actions/setup-python@v5
44
+ uses: actions/setup-python@v6
45
45
  with:
46
46
  python-version: "3.12"
47
47
 
@@ -52,7 +52,7 @@ jobs:
52
52
  run: python -m maturin build --release --out dist
53
53
 
54
54
  - name: Upload wheel artifacts
55
- uses: actions/upload-artifact@v4
55
+ uses: actions/upload-artifact@v7
56
56
  with:
57
57
  name: wheels-${{ matrix.os }}
58
58
  path: dist/*.whl
@@ -63,10 +63,10 @@ jobs:
63
63
  runs-on: ubuntu-latest
64
64
  steps:
65
65
  - name: Checkout
66
- uses: actions/checkout@v4
66
+ uses: actions/checkout@v6
67
67
 
68
68
  - name: Set up Python
69
- uses: actions/setup-python@v5
69
+ uses: actions/setup-python@v6
70
70
  with:
71
71
  python-version: "3.12"
72
72
 
@@ -77,7 +77,7 @@ jobs:
77
77
  run: python -m maturin sdist --out dist
78
78
 
79
79
  - name: Upload sdist artifact
80
- uses: actions/upload-artifact@v4
80
+ uses: actions/upload-artifact@v7
81
81
  with:
82
82
  name: sdist
83
83
  path: dist/*.tar.gz
@@ -96,7 +96,7 @@ jobs:
96
96
  id-token: write
97
97
  steps:
98
98
  - name: Download built distributions
99
- uses: actions/download-artifact@v4
99
+ uses: actions/download-artifact@v8
100
100
  with:
101
101
  pattern: "*"
102
102
  path: dist
@@ -123,7 +123,7 @@ jobs:
123
123
  id-token: write
124
124
  steps:
125
125
  - name: Download built distributions
126
- uses: actions/download-artifact@v4
126
+ uses: actions/download-artifact@v8
127
127
  with:
128
128
  pattern: "*"
129
129
  path: dist
@@ -13,7 +13,7 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
15
  - name: Checkout
16
- uses: actions/checkout@v4
16
+ uses: actions/checkout@v6
17
17
 
18
18
  - name: Install Rust toolchain
19
19
  uses: dtolnay/rust-toolchain@stable
@@ -21,7 +21,7 @@ jobs:
21
21
  components: rustfmt, clippy
22
22
 
23
23
  - name: Cache Cargo build artifacts
24
- uses: Swatinem/rust-cache@v2
24
+ uses: Swatinem/rust-cache@v2.9.1
25
25
 
26
26
  - name: Validate formatting
27
27
  run: cargo fmt --all -- --check
@@ -15,13 +15,13 @@ jobs:
15
15
  runs-on: ubuntu-latest
16
16
  steps:
17
17
  - name: Checkout
18
- uses: actions/checkout@v4
18
+ uses: actions/checkout@v6
19
19
 
20
20
  - name: Install Rust toolchain
21
21
  uses: dtolnay/rust-toolchain@stable
22
22
 
23
23
  - name: Cache Cargo build artifacts
24
- uses: Swatinem/rust-cache@v2
24
+ uses: Swatinem/rust-cache@v2.9.1
25
25
 
26
26
  - name: Run cargo tests
27
27
  run: cargo test --all-targets --all-features
@@ -221,7 +221,7 @@ Follow these steps in order. Do not skip any step.
221
221
 
222
222
  7. **Tests**: Add `#[test]` functions in `src/transform.rs` (unit-test strategy output values) and in `src/sql.rs` (end-to-end pipeline test). Use `set_random_seed(N)` for reproducibility.
223
223
 
224
- 8. **`README.md`**: Add a row to the "Anonymization strategies" table.
224
+ 8. **`README.md`**: Document the strategy under *Configuration Anonymization strategies* (per-strategy subsection with accepted options), and mention any new spec fields in `AnonymizerSpec`’s doc comment in `settings.rs`.
225
225
 
226
226
  **`faker` strategy:** Config only carries string identifiers; Dumpling never evaluates user Rust from config. To ship a new generator, add dispatch in `src/faker_dispatch.rs` and validation in `validate_anonymizer_spec` for the `faker` branch. Upstream reference: [`fake` on docs.rs](https://docs.rs/fake/latest/fake/), [`fake::faker` module index](https://docs.rs/fake/latest/fake/faker/index.html), [source on GitHub](https://github.com/cksac/fake-rs).
227
227
 
@@ -7,6 +7,30 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.7.0-alpha] - 2026-05-04
11
+
12
+ Pre-release toward **0.7.0** (stable **0.7.0** is not published yet; crates use the **0.7.0-alpha** prerelease identifier until then).
13
+
14
+ ### Removed
15
+
16
+ - **`--include-table` / `--exclude-table`**: these CLI flags and the associated per-table skip logic in the SQL stream processor are removed. Anonymize the full dump, or split/filter dumps outside Dumpling if you need a smaller input.
17
+
18
+ ### Changed
19
+
20
+ - **Dump seal (`v=3`):** the fingerprint JSON no longer includes table-filter fields. Seals produced by Dumpling **0.6.x** (`v=2`) will not match **0.7.x**; the first line is treated as stale and the dump is re-processed.
21
+
22
+ ## [0.6.0] - 2026-05-03
23
+
24
+ ### Added
25
+
26
+ - **Dump seal** (leading `-- dumpling-seal:` SQL comment): records Dumpling version, security profile, a SHA-256 fingerprint of the resolved policy, and runtime CLI options that affect transforms (`--format` and the effective PRNG seed in standard profile; `null` in hardened, where seeds are ignored). When the input already begins with a **matching** seal, the remainder is copied through unchanged; stale or unknown seal lines are stripped and the dump is re-processed. See README for full semantics ([#58](https://github.com/ababic/dumpling/pull/58)).
27
+ - **`--stats`**: prints `wall_ms` plus `domain_cache_hits` and `domain_cache_misses` for quick profiling of large runs ([#59](https://github.com/ababic/dumpling/pull/59)).
28
+ - **`CONTRIBUTORS.md`** ([#59](https://github.com/ababic/dumpling/pull/59)).
29
+
30
+ ### Changed
31
+
32
+ - **Domain-mapped replacement values** use shared `Arc<str>` storage so repeated lookups reuse the same allocation ([#59](https://github.com/ababic/dumpling/pull/59)).
33
+
10
34
  ## [0.5.0] - 2026-05-03
11
35
 
12
36
  ### Added
@@ -89,6 +113,7 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
89
113
  - Configurable output scan severities and per-category thresholds via `[output_scan]`.
90
114
  - JSON report section for output scan findings including category, count, threshold, severity, and sample locations.
91
115
 
116
+ [0.6.0]: https://github.com/ababic/dumpling/compare/v0.5.0...v0.6.0
92
117
  [0.5.0]: https://github.com/ababic/dumpling/compare/v0.4.3...v0.5.0
93
118
  [0.4.3]: https://github.com/ababic/dumpling/compare/v0.4.2...v0.4.3
94
119
  [0.4.2]: https://github.com/ababic/dumpling/compare/v0.4.1...v0.4.2
@@ -0,0 +1,6 @@
1
+ # Contributors
2
+
3
+ Thank you to everyone who has helped improve Dumpling.
4
+
5
+ - **Andy Babic** — creator and maintainer
6
+ - **Jordan Hale** — performance and observability (including AI-assisted patches)
@@ -262,7 +262,7 @@ dependencies = [
262
262
 
263
263
  [[package]]
264
264
  name = "dumpling"
265
- version = "0.5.0"
265
+ version = "0.7.0-alpha"
266
266
  dependencies = [
267
267
  "anyhow",
268
268
  "chrono",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "dumpling"
3
- version = "0.5.0"
3
+ version = "0.7.0-alpha"
4
4
  edition = "2021"
5
5
  readme = "README.md"
6
6