Declarative transformation tool for JSON, CSV, and filenames with stable mappings - ideal for anonymization and data manipulation
Project description
Structured Data Transformer
Anonymize sensitive fields in JSON, CSV, and filenames — with stable mappings for reversible anonymization.
Installation
pip install .
Or for development:
pip install -e '.[dev]'
Usage (CLI)
sdt --config CONFIG --base-dir BASE_DIR
Usage help:
sdt -h
Output:
usage: sdt [-h] --config CONFIG --base-dir BASE_DIR [--cache-in CACHE_IN] [--cache-out CACHE_OUT] [--reverse-cache]
Apply structured data transforms in place.
options:
-h, --help show this help message and exit
--config CONFIG, -c CONFIG
Path to the JSON config file to load.
--base-dir BASE_DIR, -d BASE_DIR
Base directory containing the data to transform in place.
--cache-in CACHE_IN, -ci CACHE_IN
Optional path to input JSON cache file for stable anonymizer.
--cache-out CACHE_OUT, -co CACHE_OUT
Optional path to output JSON cache file for stable anonymizer.
--reverse-cache, -r Reverse keys and values in the input cache (for decoding instead of encoding).
Examples
There is examples folder containing simple input, output, config and key.json.
Anonymize:
sdt --config examples/simple/config.json --base-dir examples/simple/input
Anonymize using existing key:
sdt -c examples/simple/config.json -d examples/simple/input -ci examples/simple/key.json
Reverse:
sdt -c examples/simple/config.json -d examples/simple/output -r -ci examples/simple/key.json
What it does
- Anonymizes fields in JSON, CSV, and filenames with pattern rules.
- Handles Bitcoin transactions, addresses, company names, emails, etc.
- Keeps empty values unchanged.
- Maintains a stable mapping so each value is always replaced the same way.
- Saves the key for reuse so data can be deanonymized with
--reverse-cache.
Customization
Custom transforms
You can add your own transform function. It doesn't necessarily need to anonymize, it can transform the field to any kind of form.
Transform function expected input and output is Optional[str | int | float | bool] (Json primitives).
Only str can happen for csv/path adapters.
To register the transform function, use register_transform(func: callable, name: str)
Example custom transform can be uppercase:
from typing import Optional
from structured_data_transformer.transforms import register_transform
from structured_data_transformer.types import JSONPrimitive
def uppercase(value: Optional[JSONPrimitive]) -> Optional[JSONPrimitive]:
if value:
return str(value).upper()
return value
register_transform(uppercase, "uppercase")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file structured_data_transformer-0.2.0.tar.gz.
File metadata
- Download URL: structured_data_transformer-0.2.0.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e2adfdb42f9543dc5d76d7a0acf3ea47f3036fa489ea60bd7e3338de7feeb45
|
|
| MD5 |
796212c5d9338070907e7562eaa1ccbf
|
|
| BLAKE2b-256 |
5240a126e59f3b472b01bcf9eab31b83d53e58912aa1da1bf518fd0b2bda42ec
|
File details
Details for the file structured_data_transformer-0.2.0-py3-none-any.whl.
File metadata
- Download URL: structured_data_transformer-0.2.0-py3-none-any.whl
- Upload date:
- Size: 9.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0000a83a761be182b04f6bec3ebf5c4b02366a509ad06c0233f6a67166c1ed73
|
|
| MD5 |
72636a7ef7a8372e1a61465d3143d253
|
|
| BLAKE2b-256 |
9abe1c484487e9d14bb4e1f9f321e6699367a5e3b61d49149b712b971a712eaa
|