Skip to main content

polyguard

PyPI - Python Version PyPI - Implementation PyPI - Wheel PyPI - Version PyPI - Downloads PyPI - License Execution status GitHub Workflow Status (with event) GitHub repo size GitHub Repo stars GitHub commit activity (branch) GitHub last commit (branch)

Static Badge

Take a look

This project now has automated documentation that gets generated, this manually written one will remain for legacy reasons, but you can now take a look at the automatic documentation here: https://hanra-s-work.github.io/polyguard/

Description

Table of Content

  1. polyguard
  2. Description
  3. Table of Content
  4. Installation
    1. Using pip
    2. Using python
  5. Usage
    1. Running as a script
    2. Importing
    3. Initialising
  6. Documentation
  7. Author

Installation

Using pip

pip install -U polyguard

Using python

Under Windows:

py -m pip install -U polyguard

Under Linux/Mac OS:

python3 -m pip install -U polyguard

Usage

Running as a script

You can run polyguard directly as a script to start an interactive terminal session:

python -m polyguard

This will launch the interactive PolyGuard interface where you can execute commands.

Importing

from polyguard import PolyGuard

Initialising

To initialize PolyGuard, you need to create a language configuration and pass it to the constructor:

from polyguard.src.polyguard import PolyGuard
from polyguard.src.constants import LangConfig

# Create a language configuration (enable desired languages)
lang_config = LangConfig()
# By default, all supported languages are enabled

# Initialize PolyGuard with optional parameters
polyguard_instance = PolyGuard(
    langs=lang_config,
    db_path=None,  # Uses default package database if None
    success=0,     # Exit code for success
    error=1,       # Exit code for error
    log=True,      # Enable logging
    debug=False    # Enable debug-level logging
)

Usage Examples

Once initialized, you can use the following methods:

# Check if a word is profanity (returns bool)
if polyguard_instance.is_a_swearword("hello world"):
    print("Contains profanity")
else:
    print("Clean text")

# Extract the first matching swearword (returns Optional[str])
offending_word = polyguard_instance.extract_swearword_if_present("some bad word here")
if offending_word:
    print(f"Found profanity: {offending_word}")

# Get all swearwords for enabled languages (returns Dict[str, Set])
all_words = polyguard_instance.get_list_of_swearwords()
for language, words in all_words.items():
    print(f"{language}: {len(words)} words")

Note: The database initialization happens automatically on the first call to any lookup function, so you don't need to call main() manually.

Per-Call Language Configuration

All lookup functions accept an optional languages_to_check parameter, allowing you to override the default language configuration on a case-by-case basis:

from polyguard import LangConfig

# Create a custom language config for this specific check
custom_langs = LangConfig()
custom_langs.en = True   # Only check English
custom_langs.fr = False  # Don't check French
custom_langs.de = False  # Don't check German
# ... set other languages as needed

# Use the custom config for this lookup only
if polyguard_instance.is_a_swearword("hello world", languages_to_check=custom_langs):
    print("Contains profanity in enabled languages")

# Extract swearword with custom language set
word = polyguard_instance.extract_swearword_if_present(
    "bonjour monde", 
    languages_to_check=custom_langs
)

# Get swearwords for custom language subset
words = polyguard_instance.get_list_of_swearwords(languages=custom_langs)

This is useful when you need to:

  • Check text against only specific languages
  • Perform different validations for different contexts
  • Optimize performance by limiting language checks to what's needed

If languages_to_check/languages is not provided, the instance's default configuration (set during initialization) is used.

Documentation

Comprehensive Doxygen-generated documentation is available online at https://hanra-s-work.github.io/polyguard/. This includes detailed API references, class documentation, and usage examples.

To generate the documentation locally, navigate to the doxygen_generation directory and run the provided scripts.

Author

This module was written by (c) Henry Letellier Attributions are appreciated.

Metadata

Release files for polyguard 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for polyguard 1.0.4
File Size Uploaded Provenance Actions
polyguard-1.0.4.tar.gz 639.2 kB Without provenance Details for polyguard-1.0.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for polyguard 1.0.4
File Interpreter ABI Platform Actions
polyguard-1.0.4-py3-none-any.whl Python 3 none any Details for polyguard-1.0.4-py3-none-any.whl

Total release size: 1.3 MB

Release files / polyguard-1.0.4.tar.gz

Download URL polyguard-1.0.4.tar.gz
Size 639.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1687f516ceae9dfafa965642df5c246c4a570cd87eb30bac407a4aab84ef5baf
BLAKE2b-256 checksum
How to use checksums
7f57ac437b180cfd0e50b814c2c88917c7e4ce2150e28f106dcfbe0a7dd96128
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.20

Release files / polyguard-1.0.4-py3-none-any.whl

Download URL polyguard-1.0.4-py3-none-any.whl
Size 634.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
55410786a2aefb771244b8c6f2bd57c34fc18269f1968e5776510e6f2b6585dd
BLAKE2b-256 checksum
How to use checksums
13c9d810f753a9a437041aeb4feda1a1545d9719183b09666eb4ea68aa2bd451
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.20

Security for polyguard 1.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page