From 469135cb6f2a06a173d192ccddf5403bc9edfdbc Mon Sep 17 00:00:00 2001 From: FlacSy Date: Tue, 3 Mar 2026 05:06:21 +0100 Subject: [PATCH 1/3] Bump to 2.3.0, add workflow_dispatch to release --- .github/workflows/release.yml | 1 + pyproject.toml | 2 +- python/pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 128c089..8b61387 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,6 +3,7 @@ name: Release on: release: types: [published] + workflow_dispatch: permissions: contents: read diff --git a/pyproject.toml b/pyproject.toml index f7f929d..70ecadf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "badwords-py" -version = "2.2.0" +version = "2.3.0" requires-python = ">=3.10" authors = [ {name = "iamlostshe", email = "vanamelcikov7275@gmail.com"}, diff --git a/python/pyproject.toml b/python/pyproject.toml index af596bf..8d26b07 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "badwords-py" -version = "2.2.0" +version = "2.3.0" requires-python = ">=3.10" authors = [ {name = "iamlostshe", email = "vanamelcikov7275@gmail.com"}, From 74584d4ab92d0558027883353dd05081f0d9b733 Mon Sep 17 00:00:00 2001 From: FlacSy Date: Tue, 3 Mar 2026 17:32:35 +0100 Subject: [PATCH 2/3] fix: fixed PyPI sdist --- Cargo.lock | 2 +- RELEASE_CHECKLIST.md | 2 +- pyproject.toml | 2 +- python/pyproject.toml | 2 +- rust/badwords-py/Cargo.toml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3598a47..74795ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,7 +61,7 @@ dependencies = [ [[package]] name = "badwords-py" -version = "2.2.0" +version = "2.3.1" dependencies = [ "badwords-core", "pyo3", diff --git a/RELEASE_CHECKLIST.md b/RELEASE_CHECKLIST.md index e060896..ffb1a5e 100644 --- a/RELEASE_CHECKLIST.md +++ b/RELEASE_CHECKLIST.md @@ -1,6 +1,6 @@ # Release Checklist -## Versions (2.2.0) +## Versions (2.3.1) | Package | File | Publication | |---------|------|-------------| diff --git a/pyproject.toml b/pyproject.toml index 70ecadf..806d34b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "badwords-py" -version = "2.3.0" +version = "2.3.1" requires-python = ">=3.10" authors = [ {name = "iamlostshe", email = "vanamelcikov7275@gmail.com"}, diff --git a/python/pyproject.toml b/python/pyproject.toml index 8d26b07..c33c396 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "badwords-py" -version = "2.3.0" +version = "2.3.1" requires-python = ">=3.10" authors = [ {name = "iamlostshe", email = "vanamelcikov7275@gmail.com"}, diff --git a/rust/badwords-py/Cargo.toml b/rust/badwords-py/Cargo.toml index 7390632..a46a9f9 100644 --- a/rust/badwords-py/Cargo.toml +++ b/rust/badwords-py/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "badwords-py" -version = "2.2.0" +version = "2.3.1" edition = "2021" description = "Python bindings for badwords profanity filter" license = "MIT" From fa4a199f3ef625c3db43e836be73900d601a273a Mon Sep 17 00:00:00 2001 From: FlacSy Date: Tue, 3 Mar 2026 17:36:47 +0100 Subject: [PATCH 3/3] add example of ML-based toxicity detection --- examples/python/ml_moderation.py | 47 ++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 examples/python/ml_moderation.py diff --git a/examples/python/ml_moderation.py b/examples/python/ml_moderation.py new file mode 100644 index 0000000..f64c0ac --- /dev/null +++ b/examples/python/ml_moderation.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +"""ML-based toxicity detection example. + +Requires: pip install 'badwords-py[ml]' + +The ML model (XLM-RoBERTa) detects toxicity in multiple languages. +First run downloads the model from GitHub Releases (~135MB). +""" + +import sys + +try: + from badwords.ml import ToxicityPredictor +except ImportError: + print("Error: badwords-py[ml] required. Install with:", file=sys.stderr) + print(" pip install 'badwords-py[ml]'", file=sys.stderr) + sys.exit(1) + + +def main() -> None: + # Создаём предиктор (модель скачается при первом вызове predict) + predictor = ToxicityPredictor() + + texts = [ + "Hello, how are you today?", + "Have a nice day!", + "You are stupid and worthless", + "Поздравляю, теперь ты не тупой", + "Иди нахуй", + ] + + print("=" * 60) + print("ML Toxicity Detection (0.0 = clean, 1.0 = toxic)") + print("Threshold: 0.5") + print("=" * 60) + + for text in texts: + prob = predictor.predict(text) + label = "TOXIC" if prob >= 0.5 else "clean" + bar = "█" * int(prob * 20) + "░" * (20 - int(prob * 20)) + print(f" {prob:.2f} [{label:5}] {bar} {text!r}") + + print("=" * 60) + + +if __name__ == "__main__": + main()