Introduction¶
Abydos¶
Abydos is a library of phonetic algorithms, string distance measures & metrics, stemmers, and string fingerprinters.
Installation¶
Required libraries:
- Numpy
- Six
Recommended libraries:
- PylibLZMA (Python 2 only--for LZMA compression string distance metric)
To install Abydos (master) from Github source:
git clone https://github.com/chrislit/abydos.git --recursive
cd abydos
python setup install
If your default python command calls Python 2.7 but you want to install for Python 3, you may instead need to call:
python3 setup install
To install Abydos (latest release) from PyPI using pip:
pip install abydos
To install from conda-forge:
conda install abydos
It should run on Python 2.7 and Python 3.3-3.7.
Testing & Contributing¶
To run the whole test-suite just call tox:
tox
The tox setup has the following environments: black, py36, py27, doctest, py36-regression, py27-regression, py36-fuzz, py27-fuzz, pylint, pycodestyle, pydocstyle, flake8, doc8, badges, docs, & dist. So if you only want to generate documentation (in HTML, EPUB, & PDF formats), just call:
tox -e docs
In order to only run & generate Flake8 reports, call:
tox -e flake8
Contributions such as bug reports, PRs, suggestions, desired new features, etc. are welcome through Github Issues & Pull requests.
Badges¶
The project's main page has quite a few badges, some seemingly redundant, and a bit of explanation is perhaps warranted.
CI & Test Status
- Travis-CI is the primary CI used for Linux CI of all supported Python platforms (2.7-3.8-dev). Only the tests in the tests directory are run.
- CircleCI runs only the Python 3.6 tests on Linux and is used for quick tests of each commit.
- Azure Devops is used to perform tests on Linux, MaxOS, and Windows on Python 2.7, 3.5, 3.6, & 3.7 using pytest.
- Semaphore is used to run the tests in the tests directory, doctests, regression tests, and fuzz tests.
- Coveralls is used to track test coverage.
Code Quality (some may be removed at a later date)
- Code Climate is used to check maintainability, but mostly just complains about McCabe complexity.
- Scrutinizer is used to check complexity and compliance with best practices.
- Codacy is used to check code style, security issues, etc.
- CodeFactor is used to track hotspot files in need of attention.
Dependencies
- Requires.io tracks whether Abydos can be used with the most recent releases of its dependencies.
- Snyk tracks whether there are security vulnerabilities in any dependencies.
- Pyup.io tracks updates and security vulnerabilities in dependencies.
- FOSSA checks license compliance.
Local Analysis
- Pylint score, run locally
- flake8 score, run locally, should be 0.
- pydocstyle score, run locally, should be 0.
- Black code style signals that Black is used for code styling.
Usage
- Read the Docs hosts Abydos documentation online.
- Binder provides an online notebook environment for the demo notebooks.
- GPL v3+ is the license used by Abydos.
- Libraries.io assigns a SourceRank to indicate project quality and popularity.
- zenodo publishes the DOI and citation information for Abydos.
Contribution
- CII Best Practices identifies compliance with Core Infrastructure Initiative best practices.
- waffle.io is used for issue tracking and planning.
- OpenHub tracks project activity and KLOC and estimates project value.
PyPI
- PyPI hosts the pip installable packages. The pypi badge indicates the most recent pip installable version.
- The downloads badge indicates the number of downloads from PyPI per month.
- The python badge indicates the versions of Python that are supported.
conda-forge
- conda-forge hosts the conda installable packages. The conda-forge badge indicates the most recent conda installable version.
- The downloads badge indicates the number of downloads from conda-forge.
- The platform badge indicates that Abydos is a pure Python project, without platform-specific builds.
License¶
Abydos is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/gpl.txt>.