===========
fuzzysearch
===========
.. image:: https://img.shields.io/pypi/v/fuzzysearch.svg?style=flat
:target: https://pypi.python.org/pypi/fuzzysearch
:alt: Latest Version
.. image:: https://img.shields.io/travis/taleinat/fuzzysearch.svg?branch=master
:target: https://travis-ci.org/taleinat/fuzzysearch/branches
:alt: Build & Tests Status
.. image:: https://img.shields.io/coveralls/taleinat/fuzzysearch.svg?branch=master
:target: https://coveralls.io/r/taleinat/fuzzysearch?branch=master
:alt: Test Coverage
.. image:: https://img.shields.io/pypi/wheel/fuzzysearch.svg?style=flat
:target: https://pypi.python.org/pypi/fuzzysearch
:alt: Wheels
.. image:: https://img.shields.io/pypi/pyversions/fuzzysearch.svg?style=flat
:target: https://pypi.python.org/pypi/fuzzysearch
:alt: Supported Python versions
.. image:: https://img.shields.io/pypi/implementation/fuzzysearch.svg?style=flat
:target: https://pypi.python.org/pypi/fuzzysearch
:alt: Supported Python implementations
.. image:: https://img.shields.io/pypi/l/fuzzysearch.svg?style=flat
:target: https://pypi.python.org/pypi/fuzzysearch/
:alt: License
Fuzzy search: Find parts of long text or data, allowing for some
changes/typos.
**Easy, fast, and just works!**
.. code:: python
>>> find_near_matches('PATTERN', '---PATERN---', max_l_dist=1)
[Match(start=3, end=9, dist=1, matched="PATERN")]
* Two simple functions to use: one for in-memory data and one for files
* Fastest search algorithm is chosen automatically
* Levenshtein Distance metric with configurable parameters
* Separately configure the max. allowed distance, substitutions, deletions
and/or insertions
* Advanced algorithms with optional C and Cython optimizations
* Properly handles Unicode; special optimizations for binary data
* Simple installation:
* ``pip install fuzzysearch`` just works
* pure-Python fallbacks for compiled modules
* only one dependency (``attrs``)
* Extensively tested
* Free software: `MIT license <LICENSE>`_
For more info, see the `documentation <http://fuzzysearch.rtfd.org>`_.
Installation
------------
``fuzzysearch`` supports Python versions 2.7 and 3.5+, as well as PyPy 2.7 and
3.6.
.. code::
$ pip install fuzzysearch
This will work even if installing the C and Cython extensions fails, using
pure-Python fallbacks.
Usage
-----
Just call ``find_near_matches()`` with the sub-sequence you're looking for,
the sequence to search, and the matching parameters:
.. code:: python
>>> from fuzzysearch import find_near_matches
# search for 'PATTERN' with a maximum Levenshtein Distance of 1
>>> find_near_matches('PATTERN', '---PATERN---', max_l_dist=1)
[Match(start=3, end=9, dist=1, matched="PATERN")]
To search in a file, use ``find_near_matches_in_file()`` similarly:
.. code:: python
>>> from fuzzysearch import find_near_matches_in_file
>>> with open('data_file', 'rb') as f:
... find_near_matches_in_file(b'PATTERN', f, max_l_dist=1)
[Match(start=3, end=9, dist=1, matched="PATERN")]
Examples
--------
*fuzzysearch* is great for ad-hoc searches of genetic data, such as DNA or
protein sequences, before reaching for "heavier", domain-specific tools like
BioPython:
.. code:: python
>>> sequence = '''\
GACTAGCACTGTAGGGATAACAATTTCACACAGGTGGACAATTACATTGAAAATCACAGATTGGTCACACACACA
TTGGACATACATAGAAACACACACACATACATTAGATACGAACATAGAAACACACATTAGACGCGTACATAGACA
CAAACACATTGACAGGCAGTTCAGATGATGACGCCCGACTGATACTCGCGTAGTCGTGGGAGGCAAGGCACACAG
GGGATAGG'''
>>> subsequence = 'TGCACTGTAGGGATAACAAT' # distance = 1
>>> find_near_matches(subsequence, sequence, max_l_dist=2)
[Match(start=3, end=24, dist=1, matched="TAGCACTGTAGGGATAACAAT")]
BioPython sequences are also supported:
.. code:: python
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> sequence = Seq('''\
GACTAGCACTGTAGGGATAACAATTTCACACAGGTGGACAATTACATTGAAAATCACAGATTGGTCACACACACA
TTGGACATACATAGAAACACACACACATACATTAGATACGAACATAGAAACACACATTAGACGCGTACATAGACA
CAAACACATTGACAGGCAGTTCAGATGATGACGCCCGACTGATACTCGCGTAGTCGTGGGAGGCAAGGCACACAG
GGGATAGG''', IUPAC.unambiguous_dna)
>>> subsequence = Seq('TGCACTGTAGGGATAACAAT', IUPAC.unambiguous_dna)
>>> find_near_matches(subsequence, sequence, max_l_dist=2)
[Match(start=3, end=24, dist=1, matched="TAGCACTGTAGGGATAACAAT")]
Matching Criteria
-----------------
The search function supports four possible match criteria, which may be
supplied in any combination:
* maximum Levenshtein distance (``max_l_dist``)
* maximum # of subsitutions
* maximum # of deletions ("delete" = skip a character in the sub-sequence)
* maximum # of insertions ("insert" = skip a character in the sequence)
Not supplying a criterion means that there is no limit for it. For this reason,
one must always supply ``max_l_dist`` and/or all other criteria.
.. code:: python
>>> find_near_matches('PATTERN', '---PATERN---', max_l_dist=1)
[Match(start=3, end=9, dist=1, matched="PATERN")]
# this will not match since max-deletions is set to zero
>>> find_near_matches('PATTERN', '---PATERN---', max_l_dist=1, max_deletions=0)
[]
# note that a deletion + insertion may be combined to match a substution
>>> find_near_matches('PATTERN', '---PAT-ERN---', max_deletions=1, max_insertions=1, max_substitutions=0)
[Match(start=3, end=10, dist=1, matched="PAT-ERN")] # the Levenshtein distance is still 1
# ... but deletion + insertion may also match other, non-substitution differences
>>> find_near_matches('PATTERN', '---PATERRN---', max_deletions=1, max_insertions=1, max_substitutions=0)
[Match(start=3, end=10, dist=2, matched="PATERRN")]
When to Use Other Tools
-----------------------
* Use case: Search through a list of strings for almost-exactly matching
strings. For example, searching through a list of names for possible slight
variations of a certain name.
Suggestion: Consider using `fuzzywuzzy <https://github.com/seatgeek/fuzzywuzzy>`_.
History
-------
0.7.3 (2020-06-27)
++++++++++++++++++
* Fixed segmentation faults due to wrong handling of inputs in bytes-like-only
functions in C extensions.
0.7.2 (2020-05-07)
++++++++++++++++++
* Added PyPy support.
* Several minor bug fixes.
0.7.1 (2020-04-05)
++++++++++++++++++
* Dropped support for Python 3.4.
* Removed deprecation warning with Python 3.8.
* Fixed a couple of nasty bugs.
0.7.0 (2020-01-14)
++++++++++++++++++
* Added ``matched`` attribue to ``Match`` objects containing the matched part
of the sequence.
* Added support for CPython 3.8. Now supporting CPython 2.7 and 3.4-3.8.
0.6.2 (2019-04-22)
++++++++++++++++++
* Fix calling ``search_exact()`` without passing ``end_index``.
* Fix edge case: max. dist >= sub-sequence length.
0.6.1 (2018-12-08)
++++++++++++++++++
* Fixed some C compiler warnings for the C and Cython modules
0.6.0 (2018-12-07)
++++++++++++++++++
* Dropped support for Python versions 2.6, 3.2 and 3.3
* Added support and testing for Python 3.7
* Optimized the n-grams Levenshtein search for long sub-sequences
* Further optimized the n-grams Levenshtein search
* Cython versions of the optimized parts of the n-grams Levenshtein search
0.5.0 (2017-09-05)
++++++++++++++++++
* Fixed ``search_exact_byteslike()`` to support supplying start and end indexes
* Added support for lists, tuples and other Sequence types to ``search_exact()``
* Fixed a bug where ``find_near_matches()`` could return a wrong ``Match.end``
with ``max_l_dist=0``
* Added more tests and improved some existing ones.
0.4.0 (2017-07-06)
++++++++++++++++++
* Added support and testing for Python 3.5 and 3.6
* Many small improvements to README, setup.py and CI testing
0.3.0 (2015-02-12)
++++++++++++++++++
* Added C extensions for several search functions as well as internal functions
* Use C extensions if available, or pure-Python implementations otherwise
* setup.py attempts to build C extensions, but installs without if build fails
* Added ``--noexts`` setup.py option to avoid trying to build the C extensions
* Greatly improved testing and coverage
0.2.2 (2014-03-27)
++++++++++++++++++
* Added support for searching through BioPython Seq objects
* Added specialized search function allowing only subsitutions and insertions
* Fixed several bugs
0.2.1 (2014-03-14)
++++++++++++++++++
* Fixed major match grouping bug
0.2.0 (2013-03-13)
++++++++++++++++++
* New utility function ``find_near_matches()`` for easier use
* Additional documentation
0.1.0 (2013-11-12)
++++++++++++++++++
* Two working implementations
* Extensive test suite; all tests passing
* Full support for Python 2.6-2.7 and 3.1-3.3
* Bumped status from Pre-Alpha to Alpha
0.0.1 (2013-11-01)
++++++++++++++++++
* First release on PyPI.
Raw data
{
"_id": null,
"home_page": "https://github.com/taleinat/fuzzysearch",
"name": "fuzzysearch",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "fuzzysearch",
"author": "Tal Einat",
"author_email": "taleinat@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/f7/28/3e9e4e55fd35356f331a22976694e151eb0214b68d3cd471936f9c09deba/fuzzysearch-0.7.3.tar.gz",
"platform": "",
"description": "===========\nfuzzysearch\n===========\n\n.. image:: https://img.shields.io/pypi/v/fuzzysearch.svg?style=flat\n :target: https://pypi.python.org/pypi/fuzzysearch\n :alt: Latest Version\n\n.. image:: https://img.shields.io/travis/taleinat/fuzzysearch.svg?branch=master\n :target: https://travis-ci.org/taleinat/fuzzysearch/branches\n :alt: Build & Tests Status\n\n.. image:: https://img.shields.io/coveralls/taleinat/fuzzysearch.svg?branch=master\n :target: https://coveralls.io/r/taleinat/fuzzysearch?branch=master\n :alt: Test Coverage\n\n.. image:: https://img.shields.io/pypi/wheel/fuzzysearch.svg?style=flat\n :target: https://pypi.python.org/pypi/fuzzysearch\n :alt: Wheels\n\n.. image:: https://img.shields.io/pypi/pyversions/fuzzysearch.svg?style=flat\n :target: https://pypi.python.org/pypi/fuzzysearch\n :alt: Supported Python versions\n\n.. image:: https://img.shields.io/pypi/implementation/fuzzysearch.svg?style=flat\n :target: https://pypi.python.org/pypi/fuzzysearch\n :alt: Supported Python implementations\n\n.. image:: https://img.shields.io/pypi/l/fuzzysearch.svg?style=flat\n :target: https://pypi.python.org/pypi/fuzzysearch/\n :alt: License\n\nFuzzy search: Find parts of long text or data, allowing for some\nchanges/typos.\n\n**Easy, fast, and just works!**\n\n.. code:: python\n\n >>> find_near_matches('PATTERN', '---PATERN---', max_l_dist=1)\n [Match(start=3, end=9, dist=1, matched=\"PATERN\")]\n\n* Two simple functions to use: one for in-memory data and one for files\n\n * Fastest search algorithm is chosen automatically\n\n* Levenshtein Distance metric with configurable parameters\n\n * Separately configure the max. allowed distance, substitutions, deletions\n and/or insertions\n\n* Advanced algorithms with optional C and Cython optimizations\n\n* Properly handles Unicode; special optimizations for binary data\n\n* Simple installation:\n * ``pip install fuzzysearch`` just works\n * pure-Python fallbacks for compiled modules\n * only one dependency (``attrs``)\n\n* Extensively tested\n\n* Free software: `MIT license <LICENSE>`_\n\nFor more info, see the `documentation <http://fuzzysearch.rtfd.org>`_.\n\n\nInstallation\n------------\n\n``fuzzysearch`` supports Python versions 2.7 and 3.5+, as well as PyPy 2.7 and\n3.6.\n\n.. code::\n\n $ pip install fuzzysearch\n\nThis will work even if installing the C and Cython extensions fails, using\npure-Python fallbacks.\n\n\nUsage\n-----\nJust call ``find_near_matches()`` with the sub-sequence you're looking for,\nthe sequence to search, and the matching parameters:\n\n.. code:: python\n\n >>> from fuzzysearch import find_near_matches\n # search for 'PATTERN' with a maximum Levenshtein Distance of 1\n >>> find_near_matches('PATTERN', '---PATERN---', max_l_dist=1)\n [Match(start=3, end=9, dist=1, matched=\"PATERN\")]\n\nTo search in a file, use ``find_near_matches_in_file()`` similarly:\n\n.. code:: python\n\n >>> from fuzzysearch import find_near_matches_in_file\n >>> with open('data_file', 'rb') as f:\n ... find_near_matches_in_file(b'PATTERN', f, max_l_dist=1)\n [Match(start=3, end=9, dist=1, matched=\"PATERN\")]\n\n\nExamples\n--------\n\n*fuzzysearch* is great for ad-hoc searches of genetic data, such as DNA or\nprotein sequences, before reaching for \"heavier\", domain-specific tools like\nBioPython:\n\n.. code:: python\n\n >>> sequence = '''\\\n GACTAGCACTGTAGGGATAACAATTTCACACAGGTGGACAATTACATTGAAAATCACAGATTGGTCACACACACA\n TTGGACATACATAGAAACACACACACATACATTAGATACGAACATAGAAACACACATTAGACGCGTACATAGACA\n CAAACACATTGACAGGCAGTTCAGATGATGACGCCCGACTGATACTCGCGTAGTCGTGGGAGGCAAGGCACACAG\n GGGATAGG'''\n >>> subsequence = 'TGCACTGTAGGGATAACAAT' # distance = 1\n >>> find_near_matches(subsequence, sequence, max_l_dist=2)\n [Match(start=3, end=24, dist=1, matched=\"TAGCACTGTAGGGATAACAAT\")]\n\nBioPython sequences are also supported:\n\n.. code:: python\n\n >>> from Bio.Seq import Seq\n >>> from Bio.Alphabet import IUPAC\n >>> sequence = Seq('''\\\n GACTAGCACTGTAGGGATAACAATTTCACACAGGTGGACAATTACATTGAAAATCACAGATTGGTCACACACACA\n TTGGACATACATAGAAACACACACACATACATTAGATACGAACATAGAAACACACATTAGACGCGTACATAGACA\n CAAACACATTGACAGGCAGTTCAGATGATGACGCCCGACTGATACTCGCGTAGTCGTGGGAGGCAAGGCACACAG\n GGGATAGG''', IUPAC.unambiguous_dna)\n >>> subsequence = Seq('TGCACTGTAGGGATAACAAT', IUPAC.unambiguous_dna)\n >>> find_near_matches(subsequence, sequence, max_l_dist=2)\n [Match(start=3, end=24, dist=1, matched=\"TAGCACTGTAGGGATAACAAT\")]\n\n\nMatching Criteria\n-----------------\nThe search function supports four possible match criteria, which may be\nsupplied in any combination:\n\n* maximum Levenshtein distance (``max_l_dist``)\n\n* maximum # of subsitutions\n\n* maximum # of deletions (\"delete\" = skip a character in the sub-sequence)\n\n* maximum # of insertions (\"insert\" = skip a character in the sequence)\n\nNot supplying a criterion means that there is no limit for it. For this reason,\none must always supply ``max_l_dist`` and/or all other criteria.\n\n.. code:: python\n\n >>> find_near_matches('PATTERN', '---PATERN---', max_l_dist=1)\n [Match(start=3, end=9, dist=1, matched=\"PATERN\")]\n\n # this will not match since max-deletions is set to zero\n >>> find_near_matches('PATTERN', '---PATERN---', max_l_dist=1, max_deletions=0)\n []\n\n # note that a deletion + insertion may be combined to match a substution\n >>> find_near_matches('PATTERN', '---PAT-ERN---', max_deletions=1, max_insertions=1, max_substitutions=0)\n [Match(start=3, end=10, dist=1, matched=\"PAT-ERN\")] # the Levenshtein distance is still 1\n\n # ... but deletion + insertion may also match other, non-substitution differences\n >>> find_near_matches('PATTERN', '---PATERRN---', max_deletions=1, max_insertions=1, max_substitutions=0)\n [Match(start=3, end=10, dist=2, matched=\"PATERRN\")]\n\n\nWhen to Use Other Tools\n-----------------------\n\n* Use case: Search through a list of strings for almost-exactly matching\n strings. For example, searching through a list of names for possible slight\n variations of a certain name.\n\n Suggestion: Consider using `fuzzywuzzy <https://github.com/seatgeek/fuzzywuzzy>`_.\n\n\n\n\nHistory\n-------\n\n0.7.3 (2020-06-27)\n++++++++++++++++++\n\n* Fixed segmentation faults due to wrong handling of inputs in bytes-like-only\n functions in C extensions.\n\n0.7.2 (2020-05-07)\n++++++++++++++++++\n* Added PyPy support.\n* Several minor bug fixes.\n\n0.7.1 (2020-04-05)\n++++++++++++++++++\n* Dropped support for Python 3.4.\n* Removed deprecation warning with Python 3.8.\n* Fixed a couple of nasty bugs.\n\n0.7.0 (2020-01-14)\n++++++++++++++++++\n\n* Added ``matched`` attribue to ``Match`` objects containing the matched part\n of the sequence.\n* Added support for CPython 3.8. Now supporting CPython 2.7 and 3.4-3.8.\n\n0.6.2 (2019-04-22)\n++++++++++++++++++\n\n* Fix calling ``search_exact()`` without passing ``end_index``.\n* Fix edge case: max. dist >= sub-sequence length.\n\n0.6.1 (2018-12-08)\n++++++++++++++++++\n\n* Fixed some C compiler warnings for the C and Cython modules\n\n0.6.0 (2018-12-07)\n++++++++++++++++++\n\n* Dropped support for Python versions 2.6, 3.2 and 3.3\n* Added support and testing for Python 3.7\n* Optimized the n-grams Levenshtein search for long sub-sequences\n* Further optimized the n-grams Levenshtein search\n* Cython versions of the optimized parts of the n-grams Levenshtein search\n\n0.5.0 (2017-09-05)\n++++++++++++++++++\n\n* Fixed ``search_exact_byteslike()`` to support supplying start and end indexes\n* Added support for lists, tuples and other Sequence types to ``search_exact()``\n* Fixed a bug where ``find_near_matches()`` could return a wrong ``Match.end``\n with ``max_l_dist=0``\n* Added more tests and improved some existing ones.\n\n0.4.0 (2017-07-06)\n++++++++++++++++++\n\n* Added support and testing for Python 3.5 and 3.6\n* Many small improvements to README, setup.py and CI testing\n\n0.3.0 (2015-02-12)\n++++++++++++++++++\n\n* Added C extensions for several search functions as well as internal functions\n* Use C extensions if available, or pure-Python implementations otherwise\n* setup.py attempts to build C extensions, but installs without if build fails\n* Added ``--noexts`` setup.py option to avoid trying to build the C extensions\n* Greatly improved testing and coverage\n\n0.2.2 (2014-03-27)\n++++++++++++++++++\n\n* Added support for searching through BioPython Seq objects\n* Added specialized search function allowing only subsitutions and insertions\n* Fixed several bugs\n\n0.2.1 (2014-03-14)\n++++++++++++++++++\n\n* Fixed major match grouping bug\n\n0.2.0 (2013-03-13)\n++++++++++++++++++\n\n* New utility function ``find_near_matches()`` for easier use\n* Additional documentation\n\n0.1.0 (2013-11-12)\n++++++++++++++++++\n\n* Two working implementations\n* Extensive test suite; all tests passing\n* Full support for Python 2.6-2.7 and 3.1-3.3\n* Bumped status from Pre-Alpha to Alpha\n\n0.0.1 (2013-11-01)\n++++++++++++++++++\n\n* First release on PyPI.\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "fuzzysearch is useful for finding approximate subsequence matches",
"version": "0.7.3",
"project_urls": {
"Homepage": "https://github.com/taleinat/fuzzysearch"
},
"split_keywords": [
"fuzzysearch"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "86d7e0b435f5de32cd90fef1f2d0a80ba8e4989302d630bb46f63ae892eae1d9",
"md5": "e62df035edcfb15ee7b7539371b29977",
"sha256": "1ed619f24303a41e59d33fc01bf959439df40b2bf096d00607eff7e0c5a26290"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp27-cp27m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "e62df035edcfb15ee7b7539371b29977",
"packagetype": "bdist_wheel",
"python_version": "cp27",
"requires_python": null,
"size": 76981,
"upload_time": "2020-06-28T07:14:17",
"upload_time_iso_8601": "2020-06-28T07:14:17.302462Z",
"url": "https://files.pythonhosted.org/packages/86/d7/e0b435f5de32cd90fef1f2d0a80ba8e4989302d630bb46f63ae892eae1d9/fuzzysearch-0.7.3-cp27-cp27m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "40f3b08f45c7cb3dded4f09c7b48058c79a001818d37bdc686c0c48daf810675",
"md5": "01e68a3a30f5d63508fd93fb9439a0d8",
"sha256": "de93de038e8bd50cfc05beb03d1543f6772ce93b52775ded778d04aa918accf8"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp27-cp27m-win32.whl",
"has_sig": false,
"md5_digest": "01e68a3a30f5d63508fd93fb9439a0d8",
"packagetype": "bdist_wheel",
"python_version": "cp27",
"requires_python": null,
"size": 69219,
"upload_time": "2020-06-28T07:14:19",
"upload_time_iso_8601": "2020-06-28T07:14:19.126971Z",
"url": "https://files.pythonhosted.org/packages/40/f3/b08f45c7cb3dded4f09c7b48058c79a001818d37bdc686c0c48daf810675/fuzzysearch-0.7.3-cp27-cp27m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1c08a16fc73af86413d8a6d11e3919f3bf6a75dd2404e95cc28c63b1e5d2e509",
"md5": "b4950b676c2b3f033df2d6f92dce2cce",
"sha256": "93a18d596df2af6419b5f705e5842e4e28752c4abb2a264e1bcdc2f302d7f377"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp27-cp27m-win_amd64.whl",
"has_sig": false,
"md5_digest": "b4950b676c2b3f033df2d6f92dce2cce",
"packagetype": "bdist_wheel",
"python_version": "cp27",
"requires_python": null,
"size": 72658,
"upload_time": "2020-06-28T07:14:21",
"upload_time_iso_8601": "2020-06-28T07:14:21.106969Z",
"url": "https://files.pythonhosted.org/packages/1c/08/a16fc73af86413d8a6d11e3919f3bf6a75dd2404e95cc28c63b1e5d2e509/fuzzysearch-0.7.3-cp27-cp27m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b4b2e8cb57bc1b206c864ec8266695ffe86a18fbc8db98a7c935bfcb049bf530",
"md5": "bc0cf716a01efe2700a95ce9af7c951a",
"sha256": "751143fb6b1b590e313a8350775c0edef3dc6a46409572f0c2ea0e9f9bea7b2a"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp35-cp35m-macosx_10_6_intel.whl",
"has_sig": false,
"md5_digest": "bc0cf716a01efe2700a95ce9af7c951a",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 134032,
"upload_time": "2020-06-28T07:14:23",
"upload_time_iso_8601": "2020-06-28T07:14:23.602962Z",
"url": "https://files.pythonhosted.org/packages/b4/b2/e8cb57bc1b206c864ec8266695ffe86a18fbc8db98a7c935bfcb049bf530/fuzzysearch-0.7.3-cp35-cp35m-macosx_10_6_intel.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2c043b67ea51e3c8989d67f638e96be96759f3a3757d2a9a748e97bd91057392",
"md5": "309245cdfd2b747721137f5a8e6f573d",
"sha256": "3e8f601d612781afb784bc177f7e860b0944ad703be8824d734f6cb2a72589ad"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp35-cp35m-win32.whl",
"has_sig": false,
"md5_digest": "309245cdfd2b747721137f5a8e6f573d",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 73832,
"upload_time": "2020-06-28T07:14:25",
"upload_time_iso_8601": "2020-06-28T07:14:25.682058Z",
"url": "https://files.pythonhosted.org/packages/2c/04/3b67ea51e3c8989d67f638e96be96759f3a3757d2a9a748e97bd91057392/fuzzysearch-0.7.3-cp35-cp35m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b2057f3f962b35418c74d97420ee487ac153f3e69277892aa1cf16eb91a653fd",
"md5": "d4bbe327d45259513fb7d78d0e436dce",
"sha256": "fba65a49444ec8a408f4e9a822ba26de34eb8755713b19d9fc642fe9b610d9ee"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp35-cp35m-win_amd64.whl",
"has_sig": false,
"md5_digest": "d4bbe327d45259513fb7d78d0e436dce",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 81413,
"upload_time": "2020-06-28T07:14:27",
"upload_time_iso_8601": "2020-06-28T07:14:27.525936Z",
"url": "https://files.pythonhosted.org/packages/b2/05/7f3f962b35418c74d97420ee487ac153f3e69277892aa1cf16eb91a653fd/fuzzysearch-0.7.3-cp35-cp35m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a3e527c4b9ad344e3f31403080b38f0f2c2991560c4b3ac9ab76d243cbc3c0f3",
"md5": "7c409ca3e2d310fb837d10cf29e1aebf",
"sha256": "46237a2b70c50ed1d01555af7e8d11c77446243dd3ccc58d6e4c1b76b8008d7b"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp36-cp36m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "7c409ca3e2d310fb837d10cf29e1aebf",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 79546,
"upload_time": "2020-06-28T07:14:29",
"upload_time_iso_8601": "2020-06-28T07:14:29.486775Z",
"url": "https://files.pythonhosted.org/packages/a3/e5/27c4b9ad344e3f31403080b38f0f2c2991560c4b3ac9ab76d243cbc3c0f3/fuzzysearch-0.7.3-cp36-cp36m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a452fc9a338e50822a955b751315bd304625279e25162acf35afe0759f4f6cc6",
"md5": "ce2967e07810d79710d9692bca0c961a",
"sha256": "9f18ff4761bbe2d1efebdbc64041a42f788b27a2191839ebf7fd7c2ac34c55bd"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp36-cp36m-win32.whl",
"has_sig": false,
"md5_digest": "ce2967e07810d79710d9692bca0c961a",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 74427,
"upload_time": "2020-06-28T07:14:31",
"upload_time_iso_8601": "2020-06-28T07:14:31.399872Z",
"url": "https://files.pythonhosted.org/packages/a4/52/fc9a338e50822a955b751315bd304625279e25162acf35afe0759f4f6cc6/fuzzysearch-0.7.3-cp36-cp36m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "48484ea2fe592ccea64a9c415cc953bd16c29a3e18c0c2321073278dc0157848",
"md5": "0a4e87d4a114727d05a00382e215de5c",
"sha256": "3f60730060de44f534a0b3c33ddc4e06172dd0eea8a025c4da31a7b7aeb1fff2"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp36-cp36m-win_amd64.whl",
"has_sig": false,
"md5_digest": "0a4e87d4a114727d05a00382e215de5c",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 82055,
"upload_time": "2020-06-28T07:14:33",
"upload_time_iso_8601": "2020-06-28T07:14:33.731462Z",
"url": "https://files.pythonhosted.org/packages/48/48/4ea2fe592ccea64a9c415cc953bd16c29a3e18c0c2321073278dc0157848/fuzzysearch-0.7.3-cp36-cp36m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "968b05cdf31208e2ccbd59e49e28902fd77a6ddb730546ba3ab84aecc366600d",
"md5": "1beba24840e6331cebe46a1385c0eb25",
"sha256": "2e8c6d34b2687779288861ec5b67bdbc9a46659d731417960e281a3d8d713eae"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp37-cp37m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1beba24840e6331cebe46a1385c0eb25",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 79561,
"upload_time": "2020-06-28T07:14:35",
"upload_time_iso_8601": "2020-06-28T07:14:35.924029Z",
"url": "https://files.pythonhosted.org/packages/96/8b/05cdf31208e2ccbd59e49e28902fd77a6ddb730546ba3ab84aecc366600d/fuzzysearch-0.7.3-cp37-cp37m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2be3628b25ce3e7dad3c052ebf1b881d1946f7fe0fddddfb1b6a2d0e56be0d99",
"md5": "b39fae7f68ea44340fc16b9505ed1170",
"sha256": "261f65f12dd919e5c8b73da8a70ac4d46fa7a0de639529ffb36cc05b6bb5a6f4"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp37-cp37m-win32.whl",
"has_sig": false,
"md5_digest": "b39fae7f68ea44340fc16b9505ed1170",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 74450,
"upload_time": "2020-06-28T07:14:37",
"upload_time_iso_8601": "2020-06-28T07:14:37.608560Z",
"url": "https://files.pythonhosted.org/packages/2b/e3/628b25ce3e7dad3c052ebf1b881d1946f7fe0fddddfb1b6a2d0e56be0d99/fuzzysearch-0.7.3-cp37-cp37m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "890f31141dc27d651efed736eb6c9b07cdf1b0615f456b50945404e8ebff4de3",
"md5": "27a07bd602381cee3f21c9728c442caf",
"sha256": "f88c3412f198b0252c6cfc640db636a0e47ad33fe7b6a3de907b77c748c7b1d2"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "27a07bd602381cee3f21c9728c442caf",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 82067,
"upload_time": "2020-06-28T07:14:39",
"upload_time_iso_8601": "2020-06-28T07:14:39.510143Z",
"url": "https://files.pythonhosted.org/packages/89/0f/31141dc27d651efed736eb6c9b07cdf1b0615f456b50945404e8ebff4de3/fuzzysearch-0.7.3-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9b2292664d57ac56dc454e630acab0531d4e33d7e0c70c66f6495054b81a9904",
"md5": "8fe2e3cdfc638895900849b4c81934cd",
"sha256": "42c518fd174b37bc39ae6737025b7b8efb93b3746ea539d7784ca9718780f2b4"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "8fe2e3cdfc638895900849b4c81934cd",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 80418,
"upload_time": "2020-06-28T07:14:41",
"upload_time_iso_8601": "2020-06-28T07:14:41.349795Z",
"url": "https://files.pythonhosted.org/packages/9b/22/92664d57ac56dc454e630acab0531d4e33d7e0c70c66f6495054b81a9904/fuzzysearch-0.7.3-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c169c45b34e529fa2e900d070e791a6fc02f4cd35bbb553acc4d1b2252578d6d",
"md5": "5cc6795e8075bbe28467cd0b70195663",
"sha256": "bbf3047d3ed3fd80b69d38c7a07fdef5c9738436249586095e27f32397c8ad2e"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "5cc6795e8075bbe28467cd0b70195663",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 75723,
"upload_time": "2020-06-28T07:14:44",
"upload_time_iso_8601": "2020-06-28T07:14:44.164760Z",
"url": "https://files.pythonhosted.org/packages/c1/69/c45b34e529fa2e900d070e791a6fc02f4cd35bbb553acc4d1b2252578d6d/fuzzysearch-0.7.3-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "727715ab16415da2feb8727509cdbf807e59c4e6f920a47705a45135a7167383",
"md5": "e2775da0f1661c8fb751d7624321c90c",
"sha256": "f3def5f55c90300ae1c4f3da830ff3ed8bf7827ace1e3cecff819c9de5f23aa7"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "e2775da0f1661c8fb751d7624321c90c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 83367,
"upload_time": "2020-06-28T07:14:46",
"upload_time_iso_8601": "2020-06-28T07:14:46.257407Z",
"url": "https://files.pythonhosted.org/packages/72/77/15ab16415da2feb8727509cdbf807e59c4e6f920a47705a45135a7167383/fuzzysearch-0.7.3-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f7283e9e4e55fd35356f331a22976694e151eb0214b68d3cd471936f9c09deba",
"md5": "bd44856c0a698a7ce5df030c739265c3",
"sha256": "d5a1b114ceee50a5e181b2fe1ac1b4371ac8db92142770a48fed49ecbc37ca4c"
},
"downloads": -1,
"filename": "fuzzysearch-0.7.3.tar.gz",
"has_sig": false,
"md5_digest": "bd44856c0a698a7ce5df030c739265c3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 112677,
"upload_time": "2020-06-28T07:14:48",
"upload_time_iso_8601": "2020-06-28T07:14:48.451052Z",
"url": "https://files.pythonhosted.org/packages/f7/28/3e9e4e55fd35356f331a22976694e151eb0214b68d3cd471936f9c09deba/fuzzysearch-0.7.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2020-06-28 07:14:48",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "taleinat",
"github_project": "fuzzysearch",
"travis_ci": true,
"coveralls": true,
"github_actions": false,
"appveyor": true,
"tox": true,
"lcname": "fuzzysearch"
}