diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-10 17:51:58 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-10 17:51:58 +0000 |
commit | 796a204e7c3a18fdda910dff38b54be6acefbafb (patch) | |
tree | 24c65ada6ac821a636c4ad4720e891af7cb9ab3e | |
parent | ed4d0bab0f4cff4ba18ccdfb386885a0395de534 (diff) |
automatic import of python-better-profanity
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-better-profanity.spec | 660 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 662 insertions, 0 deletions
@@ -0,0 +1 @@ +/better_profanity-0.7.0.tar.gz diff --git a/python-better-profanity.spec b/python-better-profanity.spec new file mode 100644 index 0000000..0a5e42d --- /dev/null +++ b/python-better-profanity.spec @@ -0,0 +1,660 @@ +%global _empty_manifest_terminate_build 0 +Name: python-better-profanity +Version: 0.7.0 +Release: 1 +Summary: Blazingly fast cleaning swear words (and their leetspeak) in strings +License: MIT License +URL: https://github.com/snguyenthanh/better_profanity +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/b5/4a/52966c1c883819f0b48540312a4a7f63b5c49f4e5b1a10838ae7f06ebb3c/better_profanity-0.7.0.tar.gz +BuildArch: noarch + + +%description +# better_profanity +*Blazingly fast cleaning swear words (and their leetspeak) in strings* + +[](https://github.com/snguyenthanh/better_profanity/releases/latest) +[](https://travis-ci.com/snguyenthanh/better_profanity) + +[](https://github.com/snguyenthanh/better_profanity/blob/master/LICENSE) + + +Inspired from package [profanity](https://github.com/ben174/profanity) of [Ben Friedland](https://github.com/ben174), this library is significantly faster than the original one, by using string comparison instead of regex. + +It supports [modified spellings](https://en.wikipedia.org/wiki/Leet) (such as `p0rn`, `h4NDjob`, `handj0b` and `b*tCh`). + +## Requirements +This package works with `Python 3.4+` and `PyPy3`. + +## Installation +``` +$ pip install better_profanity +``` + +## Unicode characters + +Only Unicode characters from categories `Ll`, `Lu`, `Mc` and `Mn` are added. More on Unicode categories can be found [here][unicode category link]. + +[unicode category link]: https://en.wikipedia.org/wiki/Template:General_Category_(Unicode) + +Not all languages are supported yet, such as *Chinese*. + +## Usage + +``` +from better_profanity import profanity + +if __name__ == "__main__": + profanity.load_censor_words() + + text = "You p1ec3 of sHit." + censored_text = profanity.censor(text) + print(censored_text) + # You **** of ****. +``` + +All modified spellings of words in [profanity_wordlist.txt](./better_profanity/profanity_wordlist.txt) will be generated. For example, the word `handjob` would be loaded into: + +``` +'handjob', 'handj*b', 'handj0b', 'handj@b', 'h@ndjob', 'h@ndj*b', 'h@ndj0b', 'h@ndj@b', +'h*ndjob', 'h*ndj*b', 'h*ndj0b', 'h*ndj@b', 'h4ndjob', 'h4ndj*b', 'h4ndj0b', 'h4ndj@b' +``` + +The full mapping of the library can be found in [profanity.py](./better_profanity/better_profanity.py#L18-L26). + +### 1. Censor swear words from a text +By default, `profanity` replaces each swear words with 4 asterisks `****`. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "You p1ec3 of sHit." + + censored_text = profanity.censor(text) + print(censored_text) + # You **** of ****. +``` + +### 2. Censor doesn't care about word dividers +The function `.censor()` also hide words separated not just by an empty space ` ` but also other dividers, such as `_`, `,` and `.`. Except for `@, $, *, ", '`. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "...sh1t...hello_cat_fuck,,,,123" + + censored_text = profanity.censor(text) + print(censored_text) + # "...****...hello_cat_****,,,,123" +``` + +### 3. Censor swear words with custom character +4 instances of the character in second parameter in `.censor()` will be used to replace the swear words. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "You p1ec3 of sHit." + + censored_text = profanity.censor(text, '-') + print(censored_text) + # You ---- of ----. +``` + +### 4. Check if the string contains any swear words +Function `.contains_profanity()` return `True` if any words in the given string has a word existing in the wordlist. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + dirty_text = "That l3sbi4n did a very good H4ndjob." + + profanity.contains_profanity(dirty_text) + # True +``` + +### 5. Censor swear words with a custom wordlist + +#### 5.1. Wordlist as a `List` +Function `load_censor_words` takes a `List` of strings as censored words. +The provided list will replace the default wordlist. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + custom_badwords = ['happy', 'jolly', 'merry'] + profanity.load_censor_words(custom_badwords) + + print(profanity.contains_profanity("Have a merry day! :)")) + # Have a **** day! :) +``` + +#### 5.2. Wordlist as a file +Function `load_censor_words_from_file takes a filename, which is a text file and each word is separated by lines. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + profanity.load_censor_words_from_file('/path/to/my/project/my_wordlist.txt') +``` + +### 6. Whitelist + +Function `load_censor_words` and `load_censor_words_from_file` takes a keyword argument `whitelist_words` to ignore words in a wordlist. + +It is best used when there are only a few words that you would like to ignore in the wordlist. + +``` +# Use the default wordlist +profanity.load_censor_words(whitelist_words=['happy', 'merry']) + +# or with your custom words as a List +custom_badwords = ['happy', 'jolly', 'merry'] +profanity.load_censor_words(custom_badwords, whitelist_words=['merry']) + +# or with your custom words as a text file +profanity.load_censor_words_from_file('/path/to/my/project/my_wordlist.txt', whitelist_words=['merry']) +``` + +### 7. Add more censor words +``` +from better_profanity import profanity + +if __name__ == "__main__": + custom_badwords = ['happy', 'jolly', 'merry'] + profanity.add_censor_words(custom_badwords) + + print(profanity.contains_profanity("Happy you, fuck!")) + # **** you, ****! +``` + +## Limitations + +1. As the library compares each word by characters, the censor could easily be bypassed by adding any character(s) to the word: + +``` +profanity.censor('I just have sexx') +# returns 'I just have sexx' + +profanity.censor('jerkk off') +# returns 'jerkk off' +``` + +2. Any word in [wordlist](https://github.com/snguyenthanh/better_profanity/blob/master/better_profanity/profanity_wordlist.txt) that have non-space separators cannot be recognised, such as `s & m`, and therefore, it won't be filtered out. This problem was raised in [#5](https://github.com/snguyenthanh/better_profanity/issues/5). + +## Testing +``` +$ python tests.py +``` + +## Contributing +Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us. + +## License +This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details + +## Special thanks to +- [Andrew Grinevich](https://github.com/Derfirm) - Add support for Unicode characters. +- [Jaclyn Brockschmidt](https://github.com/jcbrockschmidt) - Optimize string comparison. +## Acknowledgments +- [Ben Friedland](https://github.com/ben174) - For the inspiring package [profanity](https://github.com/ben174/profanity). + + + + +%package -n python3-better-profanity +Summary: Blazingly fast cleaning swear words (and their leetspeak) in strings +Provides: python-better-profanity +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-better-profanity +# better_profanity +*Blazingly fast cleaning swear words (and their leetspeak) in strings* + +[](https://github.com/snguyenthanh/better_profanity/releases/latest) +[](https://travis-ci.com/snguyenthanh/better_profanity) + +[](https://github.com/snguyenthanh/better_profanity/blob/master/LICENSE) + + +Inspired from package [profanity](https://github.com/ben174/profanity) of [Ben Friedland](https://github.com/ben174), this library is significantly faster than the original one, by using string comparison instead of regex. + +It supports [modified spellings](https://en.wikipedia.org/wiki/Leet) (such as `p0rn`, `h4NDjob`, `handj0b` and `b*tCh`). + +## Requirements +This package works with `Python 3.4+` and `PyPy3`. + +## Installation +``` +$ pip install better_profanity +``` + +## Unicode characters + +Only Unicode characters from categories `Ll`, `Lu`, `Mc` and `Mn` are added. More on Unicode categories can be found [here][unicode category link]. + +[unicode category link]: https://en.wikipedia.org/wiki/Template:General_Category_(Unicode) + +Not all languages are supported yet, such as *Chinese*. + +## Usage + +``` +from better_profanity import profanity + +if __name__ == "__main__": + profanity.load_censor_words() + + text = "You p1ec3 of sHit." + censored_text = profanity.censor(text) + print(censored_text) + # You **** of ****. +``` + +All modified spellings of words in [profanity_wordlist.txt](./better_profanity/profanity_wordlist.txt) will be generated. For example, the word `handjob` would be loaded into: + +``` +'handjob', 'handj*b', 'handj0b', 'handj@b', 'h@ndjob', 'h@ndj*b', 'h@ndj0b', 'h@ndj@b', +'h*ndjob', 'h*ndj*b', 'h*ndj0b', 'h*ndj@b', 'h4ndjob', 'h4ndj*b', 'h4ndj0b', 'h4ndj@b' +``` + +The full mapping of the library can be found in [profanity.py](./better_profanity/better_profanity.py#L18-L26). + +### 1. Censor swear words from a text +By default, `profanity` replaces each swear words with 4 asterisks `****`. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "You p1ec3 of sHit." + + censored_text = profanity.censor(text) + print(censored_text) + # You **** of ****. +``` + +### 2. Censor doesn't care about word dividers +The function `.censor()` also hide words separated not just by an empty space ` ` but also other dividers, such as `_`, `,` and `.`. Except for `@, $, *, ", '`. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "...sh1t...hello_cat_fuck,,,,123" + + censored_text = profanity.censor(text) + print(censored_text) + # "...****...hello_cat_****,,,,123" +``` + +### 3. Censor swear words with custom character +4 instances of the character in second parameter in `.censor()` will be used to replace the swear words. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "You p1ec3 of sHit." + + censored_text = profanity.censor(text, '-') + print(censored_text) + # You ---- of ----. +``` + +### 4. Check if the string contains any swear words +Function `.contains_profanity()` return `True` if any words in the given string has a word existing in the wordlist. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + dirty_text = "That l3sbi4n did a very good H4ndjob." + + profanity.contains_profanity(dirty_text) + # True +``` + +### 5. Censor swear words with a custom wordlist + +#### 5.1. Wordlist as a `List` +Function `load_censor_words` takes a `List` of strings as censored words. +The provided list will replace the default wordlist. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + custom_badwords = ['happy', 'jolly', 'merry'] + profanity.load_censor_words(custom_badwords) + + print(profanity.contains_profanity("Have a merry day! :)")) + # Have a **** day! :) +``` + +#### 5.2. Wordlist as a file +Function `load_censor_words_from_file takes a filename, which is a text file and each word is separated by lines. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + profanity.load_censor_words_from_file('/path/to/my/project/my_wordlist.txt') +``` + +### 6. Whitelist + +Function `load_censor_words` and `load_censor_words_from_file` takes a keyword argument `whitelist_words` to ignore words in a wordlist. + +It is best used when there are only a few words that you would like to ignore in the wordlist. + +``` +# Use the default wordlist +profanity.load_censor_words(whitelist_words=['happy', 'merry']) + +# or with your custom words as a List +custom_badwords = ['happy', 'jolly', 'merry'] +profanity.load_censor_words(custom_badwords, whitelist_words=['merry']) + +# or with your custom words as a text file +profanity.load_censor_words_from_file('/path/to/my/project/my_wordlist.txt', whitelist_words=['merry']) +``` + +### 7. Add more censor words +``` +from better_profanity import profanity + +if __name__ == "__main__": + custom_badwords = ['happy', 'jolly', 'merry'] + profanity.add_censor_words(custom_badwords) + + print(profanity.contains_profanity("Happy you, fuck!")) + # **** you, ****! +``` + +## Limitations + +1. As the library compares each word by characters, the censor could easily be bypassed by adding any character(s) to the word: + +``` +profanity.censor('I just have sexx') +# returns 'I just have sexx' + +profanity.censor('jerkk off') +# returns 'jerkk off' +``` + +2. Any word in [wordlist](https://github.com/snguyenthanh/better_profanity/blob/master/better_profanity/profanity_wordlist.txt) that have non-space separators cannot be recognised, such as `s & m`, and therefore, it won't be filtered out. This problem was raised in [#5](https://github.com/snguyenthanh/better_profanity/issues/5). + +## Testing +``` +$ python tests.py +``` + +## Contributing +Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us. + +## License +This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details + +## Special thanks to +- [Andrew Grinevich](https://github.com/Derfirm) - Add support for Unicode characters. +- [Jaclyn Brockschmidt](https://github.com/jcbrockschmidt) - Optimize string comparison. +## Acknowledgments +- [Ben Friedland](https://github.com/ben174) - For the inspiring package [profanity](https://github.com/ben174/profanity). + + + + +%package help +Summary: Development documents and examples for better-profanity +Provides: python3-better-profanity-doc +%description help +# better_profanity +*Blazingly fast cleaning swear words (and their leetspeak) in strings* + +[](https://github.com/snguyenthanh/better_profanity/releases/latest) +[](https://travis-ci.com/snguyenthanh/better_profanity) + +[](https://github.com/snguyenthanh/better_profanity/blob/master/LICENSE) + + +Inspired from package [profanity](https://github.com/ben174/profanity) of [Ben Friedland](https://github.com/ben174), this library is significantly faster than the original one, by using string comparison instead of regex. + +It supports [modified spellings](https://en.wikipedia.org/wiki/Leet) (such as `p0rn`, `h4NDjob`, `handj0b` and `b*tCh`). + +## Requirements +This package works with `Python 3.4+` and `PyPy3`. + +## Installation +``` +$ pip install better_profanity +``` + +## Unicode characters + +Only Unicode characters from categories `Ll`, `Lu`, `Mc` and `Mn` are added. More on Unicode categories can be found [here][unicode category link]. + +[unicode category link]: https://en.wikipedia.org/wiki/Template:General_Category_(Unicode) + +Not all languages are supported yet, such as *Chinese*. + +## Usage + +``` +from better_profanity import profanity + +if __name__ == "__main__": + profanity.load_censor_words() + + text = "You p1ec3 of sHit." + censored_text = profanity.censor(text) + print(censored_text) + # You **** of ****. +``` + +All modified spellings of words in [profanity_wordlist.txt](./better_profanity/profanity_wordlist.txt) will be generated. For example, the word `handjob` would be loaded into: + +``` +'handjob', 'handj*b', 'handj0b', 'handj@b', 'h@ndjob', 'h@ndj*b', 'h@ndj0b', 'h@ndj@b', +'h*ndjob', 'h*ndj*b', 'h*ndj0b', 'h*ndj@b', 'h4ndjob', 'h4ndj*b', 'h4ndj0b', 'h4ndj@b' +``` + +The full mapping of the library can be found in [profanity.py](./better_profanity/better_profanity.py#L18-L26). + +### 1. Censor swear words from a text +By default, `profanity` replaces each swear words with 4 asterisks `****`. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "You p1ec3 of sHit." + + censored_text = profanity.censor(text) + print(censored_text) + # You **** of ****. +``` + +### 2. Censor doesn't care about word dividers +The function `.censor()` also hide words separated not just by an empty space ` ` but also other dividers, such as `_`, `,` and `.`. Except for `@, $, *, ", '`. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "...sh1t...hello_cat_fuck,,,,123" + + censored_text = profanity.censor(text) + print(censored_text) + # "...****...hello_cat_****,,,,123" +``` + +### 3. Censor swear words with custom character +4 instances of the character in second parameter in `.censor()` will be used to replace the swear words. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + text = "You p1ec3 of sHit." + + censored_text = profanity.censor(text, '-') + print(censored_text) + # You ---- of ----. +``` + +### 4. Check if the string contains any swear words +Function `.contains_profanity()` return `True` if any words in the given string has a word existing in the wordlist. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + dirty_text = "That l3sbi4n did a very good H4ndjob." + + profanity.contains_profanity(dirty_text) + # True +``` + +### 5. Censor swear words with a custom wordlist + +#### 5.1. Wordlist as a `List` +Function `load_censor_words` takes a `List` of strings as censored words. +The provided list will replace the default wordlist. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + custom_badwords = ['happy', 'jolly', 'merry'] + profanity.load_censor_words(custom_badwords) + + print(profanity.contains_profanity("Have a merry day! :)")) + # Have a **** day! :) +``` + +#### 5.2. Wordlist as a file +Function `load_censor_words_from_file takes a filename, which is a text file and each word is separated by lines. + +``` +from better_profanity import profanity + +if __name__ == "__main__": + profanity.load_censor_words_from_file('/path/to/my/project/my_wordlist.txt') +``` + +### 6. Whitelist + +Function `load_censor_words` and `load_censor_words_from_file` takes a keyword argument `whitelist_words` to ignore words in a wordlist. + +It is best used when there are only a few words that you would like to ignore in the wordlist. + +``` +# Use the default wordlist +profanity.load_censor_words(whitelist_words=['happy', 'merry']) + +# or with your custom words as a List +custom_badwords = ['happy', 'jolly', 'merry'] +profanity.load_censor_words(custom_badwords, whitelist_words=['merry']) + +# or with your custom words as a text file +profanity.load_censor_words_from_file('/path/to/my/project/my_wordlist.txt', whitelist_words=['merry']) +``` + +### 7. Add more censor words +``` +from better_profanity import profanity + +if __name__ == "__main__": + custom_badwords = ['happy', 'jolly', 'merry'] + profanity.add_censor_words(custom_badwords) + + print(profanity.contains_profanity("Happy you, fuck!")) + # **** you, ****! +``` + +## Limitations + +1. As the library compares each word by characters, the censor could easily be bypassed by adding any character(s) to the word: + +``` +profanity.censor('I just have sexx') +# returns 'I just have sexx' + +profanity.censor('jerkk off') +# returns 'jerkk off' +``` + +2. Any word in [wordlist](https://github.com/snguyenthanh/better_profanity/blob/master/better_profanity/profanity_wordlist.txt) that have non-space separators cannot be recognised, such as `s & m`, and therefore, it won't be filtered out. This problem was raised in [#5](https://github.com/snguyenthanh/better_profanity/issues/5). + +## Testing +``` +$ python tests.py +``` + +## Contributing +Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us. + +## License +This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details + +## Special thanks to +- [Andrew Grinevich](https://github.com/Derfirm) - Add support for Unicode characters. +- [Jaclyn Brockschmidt](https://github.com/jcbrockschmidt) - Optimize string comparison. +## Acknowledgments +- [Ben Friedland](https://github.com/ben174) - For the inspiring package [profanity](https://github.com/ben174/profanity). + + + + +%prep +%autosetup -n better-profanity-0.7.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-better-profanity -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 0.7.0-1 +- Package Spec generated @@ -0,0 +1 @@ +a9d31bffe54927365a90dd422c1665b1 better_profanity-0.7.0.tar.gz |