Enterprise-grade reversible anonymization using Google Cloud DLP
Project description
Reversible Anonymizer
A Python package for reversible text anonymization using Google Cloud services.
Installation
bash
pip install reversible-anonymizer
Prerequisites
Google Cloud project with the following services enabled:
Cloud DLP API (dlp.googleapis.com)
Cloud Firestore API (firestore.googleapis.com)
AI Platform API (aiplatform.googleapis.com)
Google Cloud credentials configured
Usage
from reversible_anonymizer import ReversibleAnonymizer
Initialize with default settings
anonymizer = ReversibleAnonymizer(project="your-project-id")
Or customize the settings
anonymizer = ReversibleAnonymizer( project="your-project-id", info_types=[ {"name": "PERSON_NAME"}, {"name": "EMAIL_ADDRESS"} ], collection_name="custom_mappings", location="us-central1" )
Anonymize text
original_text = "Hello, my name is John Doe" anonymized_text = anonymizer.anonymize(original_text) print(f"Anonymized: {anonymized_text}")
De-anonymize text
original_text = anonymizer.deanonymize(anonymized_text) print(f"De-anonymized: {original_text}")
Error Handling
The package provides custom exceptions:
ServiceNotEnabledError: Raised when required Google Cloud services are not enabled AnonymizationError: Raised when anonymization fails DeAnonymizationError: Raised when de-anonymization fails
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Create a test file:
tests/test_anonymizer.py:
import pytest
from reversible_anonymizer import ReversibleAnonymizer
from reversible_anonymizer.exceptions import ServiceNotEnabledError
def test_anonymizer_initialization():
with pytest.raises(ServiceNotEnabledError):
ReversibleAnonymizer("invalid-project")
def test_custom_info_types():
anonymizer = ReversibleAnonymizer(
"your-project-id",
info_types=[{"name": "EMAIL_ADDRESS"}],
check_services=False
)
assert anonymizer.info_types == [{"name": "EMAIL_ADDRESS"}]
# Add more tests as needed
To use the package:
Install the package:
pip install reversible-anonymizer
Use in your code:
from reversible_anonymizer import ReversibleAnonymizer
try:
# Initialize with custom settings
anonymizer = ReversibleAnonymizer(
project="your-project-id",
info_types=[
{"name": "PERSON_NAME"},
{"name": "EMAIL_ADDRESS"},
{"name": "PHONE_NUMBER"}
],
collection_name="custom_mappings"
)
# Anonymize text
original_text = "Hello, my name is John Doe. Call me at 123-456-7890"
anonymized_text = anonymizer.anonymize(original_text)
print(f"Anonymized: {anonymized_text}")
# De-anonymize text
original_text = anonymizer.deanonymize(anonymized_text)
print(f"De-anonymized: {original_text}")
except Exception as e:
print(f"Error: {str(e)}")
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 reversible_anonymizer-1.0.0.tar.gz.
File metadata
- Download URL: reversible_anonymizer-1.0.0.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a4e07ca860ba0a6dcad5f6233bfaa449bc92db79ea60929a4c221ad98a51fbd
|
|
| MD5 |
643f55ee18e46163f53a39917ce2a8a3
|
|
| BLAKE2b-256 |
dcd5738822a16dbf51c120e3cd2bfb894220858f382e8caff4333a4bdd037d14
|
File details
Details for the file reversible_anonymizer-1.0.0-py3-none-any.whl.
File metadata
- Download URL: reversible_anonymizer-1.0.0-py3-none-any.whl
- Upload date:
- Size: 22.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23f2a6f2ec23aa0356695bee9fb97a30cf3ff96dc8f696424f691ecd5a9a4348
|
|
| MD5 |
545e2e3abc3b0d7741d2004cab2e7904
|
|
| BLAKE2b-256 |
e3b7cc607eed6092040bfd1dc85bc0a103d4e0f29c2c57c56814ed283791e2dc
|