Metadata-Version: 2.1 Name: marisa-trie Version: 1.1.0 Summary: Static memory-efficient and fast Trie-like structures for Python. Home-page: https://github.com/pytries/marisa-trie Author: Mikhail Korobov Author-email: kmike84@gmail.com License: MIT Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Science/Research Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Cython Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Scientific/Engineering :: Information Analysis Classifier: Topic :: Text Processing :: Linguistic Requires-Python: >=3.7 Description-Content-Type: text/x-rst License-File: LICENSE License-File: AUTHORS.rst Requires-Dist: setuptools Provides-Extra: test Requires-Dist: hypothesis ; extra == 'test' Requires-Dist: pytest ; extra == 'test' Requires-Dist: readme-renderer ; extra == 'test' MARISA Trie =========== .. image:: https://img.shields.io/pypi/pyversions/marisa-trie.svg :target: https://pypi.python.org/pypi/marisa-trie .. image:: https://github.com/pytries/marisa-trie/actions/workflows/tests.yml/badge.svg :target: https://github.com/pytries/marisa-trie/actions/workflows/tests.yml Static memory-efficient Trie-like structures for Python (3.7+) based on `marisa-trie`_ C++ library. String data in a MARISA-trie may take up to 50x-100x less memory than in a standard Python dict; the raw lookup speed is comparable; trie also provides fast advanced methods like prefix search. .. note:: There are official SWIG-based Python bindings included in C++ library distribution; this package provides alternative Cython-based pip-installable Python bindings. .. _marisa-trie: https://github.com/s-yata/marisa-trie Installation ============ :: python -m pip install -U marisa-trie Usage ===== See `tutorial`_ and `API`_ for details. .. _tutorial: https://marisa-trie.readthedocs.io/en/latest/tutorial.html .. _API: https://marisa-trie.readthedocs.io/en/latest/api.html Current limitations =================== * The library is not tested with mingw32 compiler; * ``.prefixes()`` method of ``BytesTrie`` and ``RecordTrie`` is quite slow and doesn't have iterator counterpart; * ``read()`` and ``write()`` methods don't work with file-like objects (they work only with real files; pickling works fine for file-like objects); * there are ``keys()`` and ``items()`` methods but no ``values()`` method. License ======= Wrapper code is licensed under MIT License. Bundled `marisa-trie`_ C++ library is dual-licensed under LGPL and BSD 2-clause license. CHANGES ======= 1.1.0 (2023-10-06) ------------------ * Added Python 3.12 support. 1.0.0 (2023-09-03) ------------------ * Dropped Python 2.7, 3.4, 3.5, 3.6 support. * Added ``Trie.map()`` (#90). * Rebuilt Cython wrapper with Cython 3.0.2. * Fixed benchmark documentation typos (#89). 0.8.0 (2023-03-25) ------------------ * Add ``Trie.iter_prefixes_with_ids()`` method to return ``(prefix, id)`` pairs (#83). * Rebuild Cython wrapper with Cython 0.29.33 (#88). 0.7.8 (2022-10-25) ------------------ * Added Python 3.11 support. * Rebuild Cython wrapper with Cython 0.29.32. 0.7.7 (2021-08-04) ------------------ * Restored Python 2.7 support. * Fixed README image references not working on Windows. 0.7.6 (2021-07-28) ------------------ * Wheels are now published for all platforms. * Fixed ``ResourceWarning: unclosed file`` in ``setup.py``. * Run ``black`` on the entire source code. * Moved the QA/CI to GitHub. * Rebuild Cython wrapper with Cython 0.29.24. * Updated ``libmarisa-trie`` to the latest version (0.2.6). * Fixed failing tests and usage of deprecated methods. * Expanded supported Python version (2.7, 3.4 - 3.10). 0.7.5 (2018-04-10) ------------------ * Removed redundant ``DeprecationWarning`` messages in ``Trie.save`` and ``Trie.load``. * Dropped support for Python 2.6. * Rebuild Cython wrapper with Cython 0.28.1. 0.7.4 (2017-03-27) ------------------ * Fixed packaging issue, ``MANIFEST.in`` was not updated after ``libmarisa-trie`` became a submodule. 0.7.3 (2017-02-14) ------------------ * Added ``BinaryTrie`` for storing arbitrary sequences of bytes, e.g. IP addresses (thanks Tomasz Melcer); * Deprecated ``Trie.has_keys_with_prefix`` which can be trivially implemented in terms of ``Trie.iterkeys``; * Deprecated ``Trie.read`` and ``Trie.write`` which onlywork for "real" files and duplicate the functionality of ``load`` and ``save``. See issue #31 on GitHub; * Updated ``libmarisa-trie`` to the latest version. Yay, 64-bit Windows support. * Rebuilt Cython wrapper with Cython 0.25.2. 0.7.2 (2015-04-21) ------------------ * packaging issue is fixed. 0.7.1 (2015-04-21) ------------------ * setup.py is switched to setuptools; * a tiny speedup; * wrapper is rebuilt with Cython 0.22. 0.7 (2014-12-15) ---------------- * ``trie1 == trie2`` and ``trie1 != trie2`` now work (thanks Sergei Lebedev); * ``for key in trie:`` is fixed (thanks Sergei Lebedev); * wrapper is rebuilt with Cython 0.21.1 (thanks Sergei Lebedev); * https://bitbucket.org/kmike/marisa-trie repo is no longer supported. 0.6 (2014-02-22) ---------------- * New ``Trie`` methods: ``__getitem__``, ``get``, ``items``, ``iteritems``. ``trie[u'key']`` is now the same as ``trie.key_id(u'key')``. * small optimization for ``BytesTrie.get``. * wrapper is rebuilt with Cython 0.20.1. 0.5.3 (2014-02-08) ------------------ * small ``Trie.restore_key`` optimization (it should work 5-15% faster) 0.5.2 (2014-02-08) ------------------ * fix ``Trie.restore_key`` method - it was reading past declared string length; * rebuild wrapper with Cython 0.20. 0.5.1 (2013-10-03) ------------------ * ``has_keys_with_prefix(prefix)`` method (thanks `Matt Hickford `_) 0.5 (2013-05-07) ---------------- * ``BytesTrie.iterkeys``, ``BytesTrie.iteritems``, ``RecordTrie.iterkeys`` and ``RecordTrie.iteritems`` methods; * wrapper is rebuilt with Cython 0.19; * ``value_separator`` parameter for ``BytesTrie`` and ``RecordTrie``. 0.4 (2013-02-28) ---------------- * improved trie building: ``weights`` optional parameter; * improved trie building: unnecessary input sorting is removed; * wrapper is rebuilt with Cython 0.18; * bundled marisa-trie C++ library is updated to svn r133. 0.3.8 (2013-01-03) ------------------ * Rebuild wrapper with Cython pre-0.18; * update benchmarks. 0.3.7 (2012-09-21) ------------------ * Update bundled marisa-trie C++ library (this may fix more mingw issues); * Python 3.3 support is back. 0.3.6 (2012-09-05) ------------------ * much faster (3x-7x) ``.items()`` and ``.keys()`` methods for all tries; faster (up to 3x) ``.prefixes()`` method for ``Trie``. 0.3.5 (2012-08-30) ------------------ * Pickling of RecordTrie is fixed (thanks lazarou for the report); * error messages should become more useful. 0.3.4 (2012-08-29) ------------------ * Issues with mingw32 should be resolved (thanks Susumu Yata). 0.3.3 (2012-08-27) ------------------ * ``.get(key, default=None)`` method for ``BytesTrie`` and ``RecordTrie``; * small README improvements. 0.3.2 (2012-08-26) ------------------ * Small code cleanup; * ``load``, ``read`` and ``mmap`` methods returns 'self'; * I can't run tests (via tox) under Python 3.3 so it is removed from supported versions for now. 0.3.1 (2012-08-23) ------------------ * ``.prefixes()`` support for RecordTrie and BytesTrie. 0.3 (2012-08-23) ---------------- * RecordTrie and BytesTrie are introduced; * IntTrie class is removed (probably temporary?); * dumps/loads methods are renamed to tobytes/frombytes; * benchmark & tests improvements; * support for MARISA-trie config options is added. 0.2 (2012-08-19) ------------------ * Pickling/unpickling support; * dumps/loads methods; * python 3.3 workaround; * improved tests; * benchmarks. 0.1 (2012-08-17) ---------------- Initial release.