Skip to main content

Fast Unicode mapping and character blacklists using Python C extension.

Project description

turboguard

PyPI Build Coverage Status

Python C extension to validate and sanitize the user input using blacklist and character map.

Install

pip install turboguard

Quickstart.

Create an instance of the Sanitizer class as the below.

The Sanitizer.__enter__ method returns a callable(str) -> str which let you to call it many times without worring about performance and memory leak.

from turboguard import Sanitizer, BlacklistedError


blacklist = [
    ('\U0001d100', '\U0001d1ff'),  # Blacklist Unicode range
    ('\u0600', '\u0610'),          # Blacklist Unicode range
    '\u0635',                      # Blacklist single character
]

replace = [
    ('\u0636', '\u0637'),     # Replace \u0636 by \u0637
    ('b', 'B'),
]

with Sanitizer(blacklist, replace) as sanitize:    # Loading(Slow) part
    try:
        # Fast calls
        assert sanitize('foo bar') == 'foo bar'
        assert sanitize(None) == None
    except BlacklistedError:
        print('Validation failed!')

Contribution

The turboguard/core.c file contains all logics for allocation and memory cleanup as well as the core_sanitize function which is the only function to use the given database.

turboguard/__init__.py just contains the Python wrapper arround the C module and force cleanup and initiate using the Python's context manager (the with syntax).

What to do after fork:

Setup development environment

It's highly recommended to create a virtual environment at the first.

Install project in editable mode: pip install -e .

make env

Build the C extension

make build

Test your environment

make cover

What to do after edit:

Lint code using:

make lint

Pass tests:

make clean build cover

Submit a pull request.

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

turboguard-1.0.5.tar.gz (5.6 kB view details)

Uploaded Source

File details

Details for the file turboguard-1.0.5.tar.gz.

File metadata

  • Download URL: turboguard-1.0.5.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for turboguard-1.0.5.tar.gz
Algorithm Hash digest
SHA256 6a0f0751889a8ce79cc57e901a87f7994a3b9f174061f4fad3a0e2c47a40d561
MD5 97c1164d276f868c30055e4db20bc296
BLAKE2b-256 383683b8ac616199455d86536d3f1d9257895699c317c098ee96ef07b4a2e651

See more details on using hashes here.

Supported by

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