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.
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.dumplingconf.example +4 -2
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/ci.yml +2 -2
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/docs-pr.yml +1 -1
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/docs.yml +3 -3
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/platform-compat-latest.yml +2 -2
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/platform-compat-matrix.yml +2 -2
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/policy-lint.yml +2 -2
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/publish.yml +9 -9
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/release.yml +2 -2
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.github/workflows/tests.yml +2 -2
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/AGENTS.md +1 -1
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/CHANGELOG.md +25 -0
- dumpling_cli-0.7.0a0/CONTRIBUTORS.md +6 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/Cargo.lock +1 -1
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/Cargo.toml +1 -1
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/PKG-INFO +212 -183
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/README.md +211 -182
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/configuration.md +77 -0
- dumpling_cli-0.7.0a0/docs/src/getting-started.md +45 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/index.md +2 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/pyproject.toml +1 -1
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/filter.rs +93 -12
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/lint.rs +3 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/main.rs +454 -55
- dumpling_cli-0.7.0a0/src/scaffold.rs +280 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/scan.rs +2 -1
- dumpling_cli-0.7.0a0/src/seal.rs +466 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/settings.rs +92 -16
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/sql.rs +825 -125
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/transform.rs +356 -12
- dumpling_cli-0.5.0/docs/src/getting-started.md +0 -33
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/.gitignore +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/CONTRIBUTING.md +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/MAINTENANCE.md +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/assets/logo.svg +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/book.toml +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/datetime_out.sql +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/datetime_sample.sql +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/SUMMARY.md +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/ci-guardrails.md +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/docs/src/releasing.md +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/rust-toolchain.toml +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/scripts/setup-dev.sh +0 -0
- {dumpling_cli-0.5.0 → dumpling_cli-0.7.0a0}/src/faker_dispatch.rs +0 -0
- {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 —
|
|
63
|
-
credit_card = { strategy = "
|
|
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@
|
|
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
|
|
@@ -26,7 +26,7 @@ jobs:
|
|
|
26
26
|
contents: read
|
|
27
27
|
steps:
|
|
28
28
|
- name: Checkout
|
|
29
|
-
uses: actions/checkout@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
66
|
+
uses: actions/checkout@v6
|
|
67
67
|
|
|
68
68
|
- name: Set up Python
|
|
69
|
-
uses: actions/setup-python@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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@
|
|
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`**:
|
|
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
|