Skip to main content

A Python profanity filter forked from Blaspsoft/blasp.

Project description

Profy

Profy is a Python fork of Blaspsoft/blasp, focused on the core profanity filtering engine rather than Laravel integration. It ports Blasp's dictionary-driven, obfuscation-aware matching into a standalone Python package.

The repository lives at mantleCurve/profy.

Install

pip install profy-filter

The import package is profy:

from profy import filter_text, clean_text, check_text

result = filter_text("This is f-uuck!ng noisy")

print(result.is_offensive)      # True
print(result.clean)             # This is ********* noisy
print(result.unique_words)      # ['fucking']
print(result.score)             # severity-weighted score from 0 to 100

assert check_text("f**k")
assert clean_text("shit") == "****"

Development

python -m pip install -e ".[dev]"
python -m pytest

Reuse a Filter

Create a ProfanityFilter when you need to process many strings with the same options.

from profy import ProfanityFilter, Severity

shield = ProfanityFilter(
    languages=["english", "spanish"],
    mask="#",
    minimum_severity=Severity.MODERATE,
    allow=["heck"],
    block=["internal-ban-word"],
)

result = shield.check("clean this text")
print(result.to_dict())

Options

filter_text() and ProfanityFilter() accept:

  • languages: a language name or iterable. Bundled data includes english, spanish, german, and french.
  • all_languages: use every bundled language dictionary.
  • allow: words that should never be flagged.
  • block: extra words that should always be flagged.
  • mask: a replacement character or callback (word, length) -> str.
  • minimum_severity: mild, moderate, high, or extreme.

Result Shape

{
    "original": "This is shit",
    "clean": "This is ****",
    "is_offensive": True,
    "score": 40,
    "count": 1,
    "unique_words": ["shit"],
    "severity": "high",
    "words": [
        {
            "text": "shit",
            "base": "shit",
            "severity": "high",
            "position": 8,
            "length": 4,
            "language": "english",
        }
    ],
}

Scope

This fork intentionally ports the profanity filter itself, not Blasp's Laravel service provider, middleware, Eloquent helpers, events, facades, or cache layer.

Upstream Sync

Use scripts/sync_from_blasp.py to fetch the latest Blasp PHP repository, export updated dictionary/config data into Profy's Python package, and generate an implementation-change report for PHP files that need manual port review.

python scripts/sync_from_blasp.py

Release

Alpha releases use PEP 440 versions such as 0.1.0a1 and Git tags such as v0.1.0a1. The GitHub Actions release workflow runs tests, builds the source distribution and wheel, uploads them as artifacts, and attaches them to the GitHub Release.

Attribution

Profy is a Python fork of Blaspsoft/blasp, originally authored by Michael Deeming and released under the MIT license.

License

MIT. See LICENSE.md.

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

profy_filter-0.1.2.tar.gz (52.4 kB view details)

Uploaded Source

Built Distribution

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

profy_filter-0.1.2-py3-none-any.whl (44.0 kB view details)

Uploaded Python 3

File details

Details for the file profy_filter-0.1.2.tar.gz.

File metadata

  • Download URL: profy_filter-0.1.2.tar.gz
  • Upload date:
  • Size: 52.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for profy_filter-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8250b221be9d35df96ddf577a63ce94d8959f435efede38988e006b11b44e9ca
MD5 8f933823560dbddeba0c0cb3edef62a6
BLAKE2b-256 df0965e726b6fcbdf82b0ce16b05a3096d4aa57d98a0e6e3a62d596643cb6af0

See more details on using hashes here.

Provenance

The following attestation bundles were made for profy_filter-0.1.2.tar.gz:

Publisher: release.yml on mantleCurve/profy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file profy_filter-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: profy_filter-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 44.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for profy_filter-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4476bff35a0a169ea44b19ce8452f50427b124fb8c0ef53c5465c4d7e8ff7b20
MD5 8c764322df43b724ec90d8c5cf7b760a
BLAKE2b-256 b94d34d147e9e6cf23dc7a9dcc0d1061e0217199d3d79a071f2a3df4ea7e81b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for profy_filter-0.1.2-py3-none-any.whl:

Publisher: release.yml on mantleCurve/profy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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