Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

structured_data_transformer-0.2.0.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

structured_data_transformer-0.2.0-py3-none-any.whl (9.7 kB view details)

Uploaded Python 3

File details

Details for the file structured_data_transformer-0.2.0.tar.gz.

File metadata

File hashes

Hashes for structured_data_transformer-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5e2adfdb42f9543dc5d76d7a0acf3ea47f3036fa489ea60bd7e3338de7feeb45
MD5 796212c5d9338070907e7562eaa1ccbf
BLAKE2b-256 5240a126e59f3b472b01bcf9eab31b83d53e58912aa1da1bf518fd0b2bda42ec

See more details on using hashes here.

File details

Details for the file structured_data_transformer-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for structured_data_transformer-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0000a83a761be182b04f6bec3ebf5c4b02366a509ad06c0233f6a67166c1ed73
MD5 72636a7ef7a8372e1a61465d3143d253
BLAKE2b-256 9abe1c484487e9d14bb4e1f9f321e6699367a5e3b61d49149b712b971a712eaa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page