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
]

with Sanitizer(blacklist, replace) as sanitize:    # Loading(Slow) part
    try:
        print(sanitize('foo bar baz'))             # Fast call!
    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.3.tar.gz (5.6 kB view hashes)

Uploaded Source

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