summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-05-15 09:36:08 +0000
committerCoprDistGit <infra@openeuler.org>2023-05-15 09:36:08 +0000
commit329af585a7113f7d0ac6bb8954106dae8590c400 (patch)
treec5a88fbed6093d7fc233c3ec4c0a80f7f09b09a3
parenta8c384bba512d61ada776cb1850c241652b82f76 (diff)
automatic import of python-confusables
-rw-r--r--.gitignore1
-rw-r--r--python-confusables.spec363
-rw-r--r--sources1
3 files changed, 365 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..f481c59 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/confusables-1.2.0.tar.gz
diff --git a/python-confusables.spec b/python-confusables.spec
new file mode 100644
index 0000000..46306fd
--- /dev/null
+++ b/python-confusables.spec
@@ -0,0 +1,363 @@
+%global _empty_manifest_terminate_build 0
+Name: python-confusables
+Version: 1.2.0
+Release: 1
+Summary: A python package providing functionality for matching words that can be confused for eachother, but contain different characters
+License: MIT License
+URL: https://github.com/woodgern/confusables
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/66/24/efd76375e69d309c0630d93345813740786bde7d86c3d3cfc97df5e829eb/confusables-1.2.0.tar.gz
+BuildArch: noarch
+
+
+%description
+[![Build Status](https://travis-ci.org/woodgern/confusables.svg?branch=master)](https://travis-ci.org/woodgern/confusables) [![PyPI version](https://badge.fury.io/py/confusables.svg)](https://badge.fury.io/py/confusables)
+
+
+# Confusables
+
+Confusables is a python package that provides functionality for analyzing and matching words that "appear"
+to be the same or similar, but use different characters.
+
+Confusables uses the unicode confusable characters list (https://www.unicode.org/Public/security/8.0.0/confusables.txt)
+along with other methods of matching characters.
+
+This package can be used for any application where detecting words using any unexpected characters to pass filters
+is required. This could include finding malicious fake website names, analyzing or normalizing text data, or even detecting
+attempts to get past a profanity filter.
+
+
+## Installation
+
+Confusables can be installed through pip using
+`pip3 install confusables`
+
+
+## Usage
+
+The functions in the confusables module focus around comparing and finding strings that can be considered "confusable". This means that they can be humanly interpretable as the same string. Since this deals with human interpretation, the "confusable" definition is loose, and in later versions may be more or less strict.
+
+Currently, confusables provides: `is_confusable`, `confusable_characters`, and `confusable_regex`
+
+
+`is_confusable(string1, string2)` takes in 2 strings and outputs whether or not the two are "confusable". Keep in mind that in some cases, a single character can be confusable with 2 characters combined (eg. โ€ผ is a single character, !! is two)
+```
+from confusables import is_confusable
+
+print(is_confusable('rover', 'ฦฆแป๐•3โ„›'))
+# prints True
+```
+
+
+
+`confusable_characters(char)` takes in a character and outputs a list of characters that are confusable with it. In some cases, as mentioned above, a single characters can be confusables with multiple characters, in which case those characters will be inluded in the list in the form of a string.
+```
+from confusables import confusable_characters
+
+print(confusable_characters('c'))
+# prints ['ฤ‹', 'แด„', '๐” ', '๐’„', '๐—ฐ', '๐—–', 'แธ‰', 'โ„‚', 'แŸ', 'ฤ‡', 'cฬฆ', '๐‘', '๐“ฌ', '๐šŒ', '๐Œ‚', 'โ…ญ', 'ะก', '๐˜ค', '๏ฝƒ', 'าซ', '๐–ˆ', '๐ŸŒ', '๐–ข', '๐‚', 'C', '๐“’', 'ร‡', '๐˜พ', 'รง', 'โฒค', 'ั', 'โ…ฝ', 'ฤ‰', '๐”œ', 'c', 'โ„ญ', 'ฯฒ', '๐‘ฃฉ', 'ฯน', '๐•ฎ', 'ฤ', '๐Šข', 'ฤˆ', '๐‘ช', '๏ผฃ', '๐‘ฃฒ', '๐•', '๐ฝ', 'โฒฅ', '๐ถ', 'ฤŠ', 'Cฬฆ', '๊ฎฏ', '๐’ž', '๐•”', '๐˜Š', 'ฤŒ', '๊“š', '๐’ธ', '๐œ', '๐™ฒ', '๐–ผ', 'ฤ†', '๐™˜', 'แธˆ']
+```
+
+
+`confusable_regex(string, include_character_padding=False)` takes a string and outputs a regex string that matches words that are confusable with the input string.
+```
+from confusables import confusable_regex
+import re
+
+regex_string = confusable_regex('bore', include_character_padding=True)
+regex = re.compile(regex_string)
+
+print(regex.search('Sometimes people say that life can be a ัŒ.๐ž‚.ล™.ษœ, but I don\'t agree'))
+# prints <_sre.SRE_Match object; span=(40, 47), match='ัŒ.๐ž‚.ล™.ษœ'>
+```
+
+
+
+`normalize(string, prioritize_alpha=False)` takes a string and outputs a list of possible "normal forms". This means that characters in the string get converted to their confusable ascii counterparts. The `prioritize_alpha` option means the outputted options will prioritize converting characters to characters of the latin alphabet over any others. This option is recommended when natural language is expected.
+```
+from confusables import normalize
+
+print(normalize('ฦฆแป๐•3โ„›', prioritize_alpha=True))
+# prints ['rov3r', 'rover']
+
+print(normalize('ฦฆแป๐•3โ„›', prioritize_alpha=False))
+# prints ['r0v3r', 'r0ver', 'ro\'v3r', 'ro\'ver', 'rov3r', 'rover']
+```
+
+## Updating to the latest Unicode confusables version
+
+If you find the latest version of this package to have an out of date version of the unicode official `confusables.txt`, then why not submit a PR to update it!
+
+First, find out what the latest version of unicode confusables is. Then, run
+```
+make update VERSION=X.Y.Z
+```
+
+Next, run
+```
+make parse
+```
+And that's it! Commit your changes and create a pull request.
+
+## About confusables
+
+This module is something I put together because I'm interested in the field of language processing. I'm hoping to build out it's functionality, and I'm more than happy to take suggestions!
+
+Additionally, I think the effectiveness of the module could be greatly improved using some machine learning models, and I'm currently on the hunt for some useful data sets. Please let me know if you know of any!
+
+You can contact me through any normal Github means, or using my email, `woodgern@gmail.com`
+
+
+
+
+%package -n python3-confusables
+Summary: A python package providing functionality for matching words that can be confused for eachother, but contain different characters
+Provides: python-confusables
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-confusables
+[![Build Status](https://travis-ci.org/woodgern/confusables.svg?branch=master)](https://travis-ci.org/woodgern/confusables) [![PyPI version](https://badge.fury.io/py/confusables.svg)](https://badge.fury.io/py/confusables)
+
+
+# Confusables
+
+Confusables is a python package that provides functionality for analyzing and matching words that "appear"
+to be the same or similar, but use different characters.
+
+Confusables uses the unicode confusable characters list (https://www.unicode.org/Public/security/8.0.0/confusables.txt)
+along with other methods of matching characters.
+
+This package can be used for any application where detecting words using any unexpected characters to pass filters
+is required. This could include finding malicious fake website names, analyzing or normalizing text data, or even detecting
+attempts to get past a profanity filter.
+
+
+## Installation
+
+Confusables can be installed through pip using
+`pip3 install confusables`
+
+
+## Usage
+
+The functions in the confusables module focus around comparing and finding strings that can be considered "confusable". This means that they can be humanly interpretable as the same string. Since this deals with human interpretation, the "confusable" definition is loose, and in later versions may be more or less strict.
+
+Currently, confusables provides: `is_confusable`, `confusable_characters`, and `confusable_regex`
+
+
+`is_confusable(string1, string2)` takes in 2 strings and outputs whether or not the two are "confusable". Keep in mind that in some cases, a single character can be confusable with 2 characters combined (eg. โ€ผ is a single character, !! is two)
+```
+from confusables import is_confusable
+
+print(is_confusable('rover', 'ฦฆแป๐•3โ„›'))
+# prints True
+```
+
+
+
+`confusable_characters(char)` takes in a character and outputs a list of characters that are confusable with it. In some cases, as mentioned above, a single characters can be confusables with multiple characters, in which case those characters will be inluded in the list in the form of a string.
+```
+from confusables import confusable_characters
+
+print(confusable_characters('c'))
+# prints ['ฤ‹', 'แด„', '๐” ', '๐’„', '๐—ฐ', '๐—–', 'แธ‰', 'โ„‚', 'แŸ', 'ฤ‡', 'cฬฆ', '๐‘', '๐“ฌ', '๐šŒ', '๐Œ‚', 'โ…ญ', 'ะก', '๐˜ค', '๏ฝƒ', 'าซ', '๐–ˆ', '๐ŸŒ', '๐–ข', '๐‚', 'C', '๐“’', 'ร‡', '๐˜พ', 'รง', 'โฒค', 'ั', 'โ…ฝ', 'ฤ‰', '๐”œ', 'c', 'โ„ญ', 'ฯฒ', '๐‘ฃฉ', 'ฯน', '๐•ฎ', 'ฤ', '๐Šข', 'ฤˆ', '๐‘ช', '๏ผฃ', '๐‘ฃฒ', '๐•', '๐ฝ', 'โฒฅ', '๐ถ', 'ฤŠ', 'Cฬฆ', '๊ฎฏ', '๐’ž', '๐•”', '๐˜Š', 'ฤŒ', '๊“š', '๐’ธ', '๐œ', '๐™ฒ', '๐–ผ', 'ฤ†', '๐™˜', 'แธˆ']
+```
+
+
+`confusable_regex(string, include_character_padding=False)` takes a string and outputs a regex string that matches words that are confusable with the input string.
+```
+from confusables import confusable_regex
+import re
+
+regex_string = confusable_regex('bore', include_character_padding=True)
+regex = re.compile(regex_string)
+
+print(regex.search('Sometimes people say that life can be a ัŒ.๐ž‚.ล™.ษœ, but I don\'t agree'))
+# prints <_sre.SRE_Match object; span=(40, 47), match='ัŒ.๐ž‚.ล™.ษœ'>
+```
+
+
+
+`normalize(string, prioritize_alpha=False)` takes a string and outputs a list of possible "normal forms". This means that characters in the string get converted to their confusable ascii counterparts. The `prioritize_alpha` option means the outputted options will prioritize converting characters to characters of the latin alphabet over any others. This option is recommended when natural language is expected.
+```
+from confusables import normalize
+
+print(normalize('ฦฆแป๐•3โ„›', prioritize_alpha=True))
+# prints ['rov3r', 'rover']
+
+print(normalize('ฦฆแป๐•3โ„›', prioritize_alpha=False))
+# prints ['r0v3r', 'r0ver', 'ro\'v3r', 'ro\'ver', 'rov3r', 'rover']
+```
+
+## Updating to the latest Unicode confusables version
+
+If you find the latest version of this package to have an out of date version of the unicode official `confusables.txt`, then why not submit a PR to update it!
+
+First, find out what the latest version of unicode confusables is. Then, run
+```
+make update VERSION=X.Y.Z
+```
+
+Next, run
+```
+make parse
+```
+And that's it! Commit your changes and create a pull request.
+
+## About confusables
+
+This module is something I put together because I'm interested in the field of language processing. I'm hoping to build out it's functionality, and I'm more than happy to take suggestions!
+
+Additionally, I think the effectiveness of the module could be greatly improved using some machine learning models, and I'm currently on the hunt for some useful data sets. Please let me know if you know of any!
+
+You can contact me through any normal Github means, or using my email, `woodgern@gmail.com`
+
+
+
+
+%package help
+Summary: Development documents and examples for confusables
+Provides: python3-confusables-doc
+%description help
+[![Build Status](https://travis-ci.org/woodgern/confusables.svg?branch=master)](https://travis-ci.org/woodgern/confusables) [![PyPI version](https://badge.fury.io/py/confusables.svg)](https://badge.fury.io/py/confusables)
+
+
+# Confusables
+
+Confusables is a python package that provides functionality for analyzing and matching words that "appear"
+to be the same or similar, but use different characters.
+
+Confusables uses the unicode confusable characters list (https://www.unicode.org/Public/security/8.0.0/confusables.txt)
+along with other methods of matching characters.
+
+This package can be used for any application where detecting words using any unexpected characters to pass filters
+is required. This could include finding malicious fake website names, analyzing or normalizing text data, or even detecting
+attempts to get past a profanity filter.
+
+
+## Installation
+
+Confusables can be installed through pip using
+`pip3 install confusables`
+
+
+## Usage
+
+The functions in the confusables module focus around comparing and finding strings that can be considered "confusable". This means that they can be humanly interpretable as the same string. Since this deals with human interpretation, the "confusable" definition is loose, and in later versions may be more or less strict.
+
+Currently, confusables provides: `is_confusable`, `confusable_characters`, and `confusable_regex`
+
+
+`is_confusable(string1, string2)` takes in 2 strings and outputs whether or not the two are "confusable". Keep in mind that in some cases, a single character can be confusable with 2 characters combined (eg. โ€ผ is a single character, !! is two)
+```
+from confusables import is_confusable
+
+print(is_confusable('rover', 'ฦฆแป๐•3โ„›'))
+# prints True
+```
+
+
+
+`confusable_characters(char)` takes in a character and outputs a list of characters that are confusable with it. In some cases, as mentioned above, a single characters can be confusables with multiple characters, in which case those characters will be inluded in the list in the form of a string.
+```
+from confusables import confusable_characters
+
+print(confusable_characters('c'))
+# prints ['ฤ‹', 'แด„', '๐” ', '๐’„', '๐—ฐ', '๐—–', 'แธ‰', 'โ„‚', 'แŸ', 'ฤ‡', 'cฬฆ', '๐‘', '๐“ฌ', '๐šŒ', '๐Œ‚', 'โ…ญ', 'ะก', '๐˜ค', '๏ฝƒ', 'าซ', '๐–ˆ', '๐ŸŒ', '๐–ข', '๐‚', 'C', '๐“’', 'ร‡', '๐˜พ', 'รง', 'โฒค', 'ั', 'โ…ฝ', 'ฤ‰', '๐”œ', 'c', 'โ„ญ', 'ฯฒ', '๐‘ฃฉ', 'ฯน', '๐•ฎ', 'ฤ', '๐Šข', 'ฤˆ', '๐‘ช', '๏ผฃ', '๐‘ฃฒ', '๐•', '๐ฝ', 'โฒฅ', '๐ถ', 'ฤŠ', 'Cฬฆ', '๊ฎฏ', '๐’ž', '๐•”', '๐˜Š', 'ฤŒ', '๊“š', '๐’ธ', '๐œ', '๐™ฒ', '๐–ผ', 'ฤ†', '๐™˜', 'แธˆ']
+```
+
+
+`confusable_regex(string, include_character_padding=False)` takes a string and outputs a regex string that matches words that are confusable with the input string.
+```
+from confusables import confusable_regex
+import re
+
+regex_string = confusable_regex('bore', include_character_padding=True)
+regex = re.compile(regex_string)
+
+print(regex.search('Sometimes people say that life can be a ัŒ.๐ž‚.ล™.ษœ, but I don\'t agree'))
+# prints <_sre.SRE_Match object; span=(40, 47), match='ัŒ.๐ž‚.ล™.ษœ'>
+```
+
+
+
+`normalize(string, prioritize_alpha=False)` takes a string and outputs a list of possible "normal forms". This means that characters in the string get converted to their confusable ascii counterparts. The `prioritize_alpha` option means the outputted options will prioritize converting characters to characters of the latin alphabet over any others. This option is recommended when natural language is expected.
+```
+from confusables import normalize
+
+print(normalize('ฦฆแป๐•3โ„›', prioritize_alpha=True))
+# prints ['rov3r', 'rover']
+
+print(normalize('ฦฆแป๐•3โ„›', prioritize_alpha=False))
+# prints ['r0v3r', 'r0ver', 'ro\'v3r', 'ro\'ver', 'rov3r', 'rover']
+```
+
+## Updating to the latest Unicode confusables version
+
+If you find the latest version of this package to have an out of date version of the unicode official `confusables.txt`, then why not submit a PR to update it!
+
+First, find out what the latest version of unicode confusables is. Then, run
+```
+make update VERSION=X.Y.Z
+```
+
+Next, run
+```
+make parse
+```
+And that's it! Commit your changes and create a pull request.
+
+## About confusables
+
+This module is something I put together because I'm interested in the field of language processing. I'm hoping to build out it's functionality, and I'm more than happy to take suggestions!
+
+Additionally, I think the effectiveness of the module could be greatly improved using some machine learning models, and I'm currently on the hunt for some useful data sets. Please let me know if you know of any!
+
+You can contact me through any normal Github means, or using my email, `woodgern@gmail.com`
+
+
+
+
+%prep
+%autosetup -n confusables-1.2.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-confusables -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 1.2.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..75f6f8f
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+42f452d0994e5800165acbfdeefa56eb confusables-1.2.0.tar.gz