Skip to main content

Super-fast, efficiently stored Trie for Python.

Project description

datrie travis appveyor

Super-fast, efficiently stored Trie for Python (2.x and 3.x). Uses libdatrie.

Installation

pip install datrie

Usage

Create a new trie capable of storing items with lower-case ascii keys:

>>> import string
>>> import datrie
>>> trie = datrie.Trie(string.ascii_lowercase)

trie variable is a dict-like object that can have unicode keys of certain ranges and Python objects as values.

In addition to implementing the mapping interface, tries facilitate finding the items for a given prefix, and vice versa, finding the items whose keys are prefixes of a given string. As a common special case, finding the longest-prefix item is also supported.

Add some values to it (datrie keys must be unicode; the examples are for Python 2.x):

>>> trie[u'foo'] = 5
>>> trie[u'foobar'] = 10
>>> trie[u'bar'] = 'bar value'
>>> trie.setdefault(u'foobar', 15)
10

Check if u’foo’ is in trie:

>>> u'foo' in trie
True

Get a value:

>>> trie[u'foo']
5

Find all prefixes of a word:

>>> trie.prefixes(u'foobarbaz')
[u'foo', u'foobar']

>>> trie.prefix_items(u'foobarbaz')
[(u'foo', 5), (u'foobar', 10)]

>>> trie.iter_prefixes(u'foobarbaz')
<generator object ...>

>>> trie.iter_prefix_items(u'foobarbaz')
<generator object ...>

Find the longest prefix of a word:

>>> trie.longest_prefix(u'foo')
u'foo'

>>> trie.longest_prefix(u'foobarbaz')
u'foobar'

>>> trie.longest_prefix(u'gaz')
KeyError: u'gaz'

>>> trie.longest_prefix(u'gaz', default=u'vasia')
u'vasia'

>>> trie.longest_prefix_item(u'foobarbaz')
(u'foobar', 10)

Check if the trie has keys with a given prefix:

>>> trie.has_keys_with_prefix(u'fo')
True

>>> trie.has_keys_with_prefix(u'FO')
False

Get all items with a given prefix from a trie:

>>> trie.keys(u'fo')
[u'foo', u'foobar']

>>> trie.items(u'ba')
[(u'bar', 'bar value')]

>>> trie.values(u'foob')
[10]

Get all suffixes of certain word starting with a given prefix from a trie:

>>> trie.suffixes()
[u'pro', u'producer', u'producers', u'product', u'production', u'productivity', u'prof']
>>> trie.suffixes(u'prod')
[u'ucer', u'ucers', u'uct', u'uction', u'uctivity']

Save & load a trie (values must be picklable):

>>> trie.save('my.trie')
>>> trie2 = datrie.Trie.load('my.trie')

Trie and BaseTrie

There are two Trie classes in datrie package: datrie.Trie and datrie.BaseTrie. datrie.BaseTrie is slightly faster and uses less memory but it can store only integer numbers -2147483648 <= x <= 2147483647. datrie.Trie is a bit slower but can store any Python object as a value.

If you don’t need values or integer values are OK then use datrie.BaseTrie:

import datrie
import string
trie = datrie.BaseTrie(string.ascii_lowercase)

Custom iteration

If the built-in trie methods don’t fit you can use datrie.State and datrie.Iterator to implement custom traversal.

For example, let’s find all suffixes of 'fo' for our trie and get the values:

>>> state = datrie.State(trie)
>>> state.walk(u'foo')
>>> it = datrie.Iterator(state)
>>> while it.next():
...     print(it.key())
...     print(it.data))
o
5
obar
10

Performance

Performance is measured for datrie.Trie against Python’s dict with 100k unique unicode words (English and Russian) as keys and ‘1’ numbers as values.

datrie.Trie uses about 5M memory for 100k words; Python’s dict uses about 22M for this according to my unscientific tests.

This trie implementation is 2-6 times slower than python’s dict on __getitem__. Benchmark results (macbook air i5 1.8GHz, “1.000M ops/sec” == “1 000 000 operations per second”):

Python 2.6:
dict __getitem__: 7.107M ops/sec
trie __getitem__: 2.478M ops/sec

Python 2.7:
dict __getitem__: 6.550M ops/sec
trie __getitem__: 2.474M ops/sec

Python 3.2:
dict __getitem__: 8.185M ops/sec
trie __getitem__: 2.684M ops/sec

Python 3.3:
dict __getitem__: 7.050M ops/sec
trie __getitem__: 2.755M ops/sec

Looking for prefixes of a given word is almost as fast as __getitem__ (results are for Python 3.3):

trie.iter_prefix_items (hits):      0.461M ops/sec
trie.prefix_items (hits):           0.743M ops/sec
trie.prefix_items loop (hits):      0.629M ops/sec
trie.iter_prefixes (hits):          0.759M ops/sec
trie.iter_prefixes (misses):        1.538M ops/sec
trie.iter_prefixes (mixed):         1.359M ops/sec
trie.has_keys_with_prefix (hits):   1.896M ops/sec
trie.has_keys_with_prefix (misses): 2.590M ops/sec
trie.longest_prefix (hits):         1.710M ops/sec
trie.longest_prefix (misses):       1.506M ops/sec
trie.longest_prefix (mixed):        1.520M ops/sec
trie.longest_prefix_item (hits):    1.276M ops/sec
trie.longest_prefix_item (misses):  1.292M ops/sec
trie.longest_prefix_item (mixed):   1.379M ops/sec

Looking for all words starting with a given prefix is mostly limited by overall result count (this can be improved in future because a lot of time is spent decoding strings from utf_32_le to Python’s unicode):

trie.items(prefix="xxx"), avg_len(res)==415:        0.609K ops/sec
trie.keys(prefix="xxx"), avg_len(res)==415:         0.642K ops/sec
trie.values(prefix="xxx"), avg_len(res)==415:       4.974K ops/sec
trie.items(prefix="xxxxx"), avg_len(res)==17:       14.781K ops/sec
trie.keys(prefix="xxxxx"), avg_len(res)==17:        15.766K ops/sec
trie.values(prefix="xxxxx"), avg_len(res)==17:      96.456K ops/sec
trie.items(prefix="xxxxxxxx"), avg_len(res)==3:     75.165K ops/sec
trie.keys(prefix="xxxxxxxx"), avg_len(res)==3:      77.225K ops/sec
trie.values(prefix="xxxxxxxx"), avg_len(res)==3:    320.755K ops/sec
trie.items(prefix="xxxxx..xx"), avg_len(res)==1.4:  173.591K ops/sec
trie.keys(prefix="xxxxx..xx"), avg_len(res)==1.4:   180.678K ops/sec
trie.values(prefix="xxxxx..xx"), avg_len(res)==1.4: 503.392K ops/sec
trie.items(prefix="xxx"), NON_EXISTING:             2023.647K ops/sec
trie.keys(prefix="xxx"), NON_EXISTING:              1976.928K ops/sec
trie.values(prefix="xxx"), NON_EXISTING:            2060.372K ops/sec

Random insert time is very slow compared to dict, this is the limitation of double-array tries; updates are quite fast. If you want to build a trie, consider sorting keys before the insertion:

dict __setitem__ (updates):            6.497M ops/sec
trie __setitem__ (updates):            2.633M ops/sec
dict __setitem__ (inserts, random):    5.808M ops/sec
trie __setitem__ (inserts, random):    0.053M ops/sec
dict __setitem__ (inserts, sorted):    5.749M ops/sec
trie __setitem__ (inserts, sorted):    0.624M ops/sec
dict setdefault (updates):             3.455M ops/sec
trie setdefault (updates):             1.910M ops/sec
dict setdefault (inserts):             3.466M ops/sec
trie setdefault (inserts):             0.053M ops/sec

Other results (note that len(trie) is currently implemented using trie traversal):

dict __contains__ (hits):    6.801M ops/sec
trie __contains__ (hits):    2.816M ops/sec
dict __contains__ (misses):  5.470M ops/sec
trie __contains__ (misses):  4.224M ops/sec
dict __len__:                334336.269 ops/sec
trie __len__:                22.900 ops/sec
dict values():               406.507 ops/sec
trie values():               20.864 ops/sec
dict keys():                 189.298 ops/sec
trie keys():                 2.773 ops/sec
dict items():                48.734 ops/sec
trie items():                2.611 ops/sec

Please take this benchmark results with a grain of salt; this is a very simple benchmark and may not cover your use case.

Current Limitations

  • keys must be unicode (no implicit conversion for byte strings under Python 2.x, sorry);

  • there are no iterator versions of keys/values/items (this is not implemented yet);

  • it is painfully slow and maybe buggy under pypy;

  • library is not tested with narrow Python builds.

Contributing

Development happens at github: https://github.com/pytries/datrie.

Feel free to submit ideas, bugs, pull requests.

Running tests and benchmarks

Make sure tox is installed and run

$ tox

from the source checkout. Tests should pass under Python 2.7 and 3.4+.

$ tox -c tox-bench.ini

runs benchmarks.

If you’ve changed anything in the source code then make sure cython is installed and run

$ update_c.sh

before each tox command.

Please note that benchmarks are not included in the release tar.gz’s because benchmark data is large and this saves a lot of bandwidth; use source checkouts from github or bitbucket for the benchmarks.

Authors & Contributors

See https://github.com/pytries/datrie/graphs/contributors.

This module is based on libdatrie C library by Theppitak Karoonboonyanan and is inspired by fast_trie Ruby bindings, PyTrie pure Python implementation and Tree::Trie Perl implementation; some docs and API ideas are borrowed from these projects.

License

Licensed under LGPL v2.1. CHANGES =======

0.8.2 (2020-03-25)

  • Future-proof Python support by making cython a build time dependency and removing cython generated c files from the repo (and sdist).

  • Fix collections.abc.MutableMapping import

  • CI and test updates

  • Adjust library name to unbreak some linkers

0.8.1 (skipped)

This version intentionally skipped

0.8 (2019-07-03)

  • Python 3.7 compatibility; extension is rebuilt with Cython 0.29.11.

  • Trie.get function;

  • Python 2.6 and 3.3 support is dropped;

  • removed patch to libdatrie which is no longer required;

  • testing and CI fixes.

0.7.1 (2016-03-12)

  • updated the bundled C library to version 0.2.9;

  • implemented Trie.__len__ in terms of trie_enumerate;

  • rebuilt Cython wrapper with Cython 0.23.4;

  • changed Trie to implement collections.abc.MutableMapping;

  • fixed Trie pickling, which segfaulted on Python2.X.

0.7 (2014-02-18)

  • bundled libdatrie C library is updated to version 0.2.8;

  • new .suffixes() method (thanks Ahmed T. Youssef);

  • wrapper is rebuilt with Cython 0.20.1.

0.6.1 (2013-09-21)

  • fixed build for Visual Studio (thanks Gabi Davar).

0.6 (2013-07-09)

  • datrie is rebuilt with Cython 0.19.1;

  • iter_prefix_values, prefix_values and longest_prefix_value methods for datrie.BaseTrie and datrie.Trie (thanks Jared Suttles).

0.5.1 (2013-01-30)

  • Recently introduced memory leak in longest_prefix and longest_prefix_item is fixed.

0.5 (2013-01-29)

  • longest_prefix and longest_prefix_item methods are fixed;

  • datrie is rebuilt with Cython 0.18;

  • misleading benchmark results in README are fixed;

  • State._walk is renamed to State.walk_char.

0.4.2 (2012-09-02)

  • Update to latest libdatrie; this makes .keys() method a bit slower but removes a keys length limitation.

0.4.1 (2012-07-29)

  • cPickle is used for saving/loading datrie.Trie if it is available.

0.4 (2012-07-27)

  • libdatrie improvements and bugfixes, including C iterator API support;

  • custom iteration support using datrie.State and datrie.Iterator.

  • speed improvements: __length__, keys, values and items methods should be up to 2x faster.

  • keys longer than 32768 are not supported in this release.

0.3 (2012-07-21)

There are no new features or speed improvements in this release.

  • datrie.new is deprecated; use datrie.Trie with the same arguments;

  • small test & benchmark improvements.

0.2 (2012-07-16)

  • datrie.Trie items can have any Python object as a value (Trie from 0.1.x becomes datrie.BaseTrie);

  • longest_prefix and longest_prefix_items are fixed;

  • save & load are rewritten;

  • setdefault method.

0.1.1 (2012-07-13)

  • Windows support (upstream libdatrie changes are merged);

  • license is changed from LGPL v3 to LGPL v2.1 to match the libdatrie license.

0.1 (2012-07-12)

Initial release.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datrie-0.8.2.tar.gz (63.3 kB view details)

Uploaded Source

Built Distributions

datrie-0.8.2-pp373-pypy36_pp73-win32.whl (90.2 kB view details)

Uploaded PyPy Windows x86

datrie-0.8.2-pp273-pypy_73-win32.whl (91.3 kB view details)

Uploaded PyPy Windows x86

datrie-0.8.2-cp38-cp38-win_amd64.whl (134.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

datrie-0.8.2-cp38-cp38-win32.whl (110.1 kB view details)

Uploaded CPython 3.8 Windows x86

datrie-0.8.2-cp38-cp38-manylinux1_x86_64.whl (551.6 kB view details)

Uploaded CPython 3.8

datrie-0.8.2-cp38-cp38-macosx_10_9_x86_64.whl (157.8 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

datrie-0.8.2-cp37-cp37m-win_amd64.whl (130.8 kB view details)

Uploaded CPython 3.7m Windows x86-64

datrie-0.8.2-cp37-cp37m-win32.whl (107.6 kB view details)

Uploaded CPython 3.7m Windows x86

datrie-0.8.2-cp37-cp37m-manylinux1_x86_64.whl (537.4 kB view details)

Uploaded CPython 3.7m

datrie-0.8.2-cp37-cp37m-macosx_10_9_x86_64.whl (154.6 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

datrie-0.8.2-cp36-cp36m-win_amd64.whl (123.0 kB view details)

Uploaded CPython 3.6m Windows x86-64

datrie-0.8.2-cp36-cp36m-win32.whl (102.0 kB view details)

Uploaded CPython 3.6m Windows x86

datrie-0.8.2-cp36-cp36m-manylinux1_x86_64.whl (544.9 kB view details)

Uploaded CPython 3.6m

datrie-0.8.2-cp36-cp36m-macosx_10_9_x86_64.whl (162.8 kB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

datrie-0.8.2-cp35-cp35m-win_amd64.whl (118.8 kB view details)

Uploaded CPython 3.5m Windows x86-64

datrie-0.8.2-cp35-cp35m-win32.whl (97.6 kB view details)

Uploaded CPython 3.5m Windows x86

datrie-0.8.2-cp35-cp35m-manylinux1_x86_64.whl (530.4 kB view details)

Uploaded CPython 3.5m

datrie-0.8.2-cp35-cp35m-macosx_10_6_x86_64.whl (157.9 kB view details)

Uploaded CPython 3.5m macOS 10.6+ x86-64

datrie-0.8.2-cp34-cp34m-manylinux1_x86_64.whl (541.2 kB view details)

Uploaded CPython 3.4m

datrie-0.8.2-cp27-cp27mu-manylinux1_x86_64.whl (470.1 kB view details)

Uploaded CPython 2.7mu

datrie-0.8.2-cp27-cp27m-win_amd64.whl (118.0 kB view details)

Uploaded CPython 2.7m Windows x86-64

datrie-0.8.2-cp27-cp27m-win32.whl (98.5 kB view details)

Uploaded CPython 2.7m Windows x86

datrie-0.8.2-cp27-cp27m-manylinux1_x86_64.whl (469.6 kB view details)

Uploaded CPython 2.7m

datrie-0.8.2-cp27-cp27m-macosx_10_7_x86_64.whl (156.6 kB view details)

Uploaded CPython 2.7m macOS 10.7+ x86-64

File details

Details for the file datrie-0.8.2.tar.gz.

File metadata

  • Download URL: datrie-0.8.2.tar.gz
  • Upload date:
  • Size: 63.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2.tar.gz
Algorithm Hash digest
SHA256 525b08f638d5cf6115df6ccd818e5a01298cd230b2dac91c8ff2e6499d18765d
MD5 0478ffb9b9a28e6192cc84d94c65a8fc
BLAKE2b-256 9dfedb74bd405d515f06657f11ad529878fd389576dca4812bea6f98d9b31574

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-pp373-pypy36_pp73-win32.whl.

File metadata

  • Download URL: datrie-0.8.2-pp373-pypy36_pp73-win32.whl
  • Upload date:
  • Size: 90.2 kB
  • Tags: PyPy, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-pp373-pypy36_pp73-win32.whl
Algorithm Hash digest
SHA256 89ff3d41df4f899387aa07b4b066f5da36e3a10b67b8aeae631c950502ff4503
MD5 b333cb5b1964e5b17be0ddc3315f3099
BLAKE2b-256 c4aa94c42a2dd30c4923bffe3ab59e4416c3f7e72dbd32a89bcdd8d43ff1d5d7

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-pp273-pypy_73-win32.whl.

File metadata

  • Download URL: datrie-0.8.2-pp273-pypy_73-win32.whl
  • Upload date:
  • Size: 91.3 kB
  • Tags: PyPy, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-pp273-pypy_73-win32.whl
Algorithm Hash digest
SHA256 b07bd5fdfc3399a6dab86d6e35c72b1dbd598e80c97509c7c7518ab8774d3fda
MD5 99bf7ef877a592cb7299e8acb7545105
BLAKE2b-256 440253f0cf0bf0cd629ba6c2cc13f2f9db24323459e9c19463783d890a540a96

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 134.7 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f61cf2726f04c08828bfb4e7af698b0b16bdf2777c3993d042f2898b8e118f21
MD5 29ecfd141a2862dc7616a7ab85598caf
BLAKE2b-256 2d69909fb50e7b572dc0b5a43e499d8acbba2e314b578a8480cd92ca9425f9f8

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp38-cp38-win32.whl.

File metadata

  • Download URL: datrie-0.8.2-cp38-cp38-win32.whl
  • Upload date:
  • Size: 110.1 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 67603594f5db5c0029b1cf86a08e89cde015fe64cf0c4ae4e539c61114396729
MD5 afe9cc7423c26ec4a75914fea58beadf
BLAKE2b-256 90de580e485bca7a8f30ebd89c0a2efdbbae4f596f8dea5013713b9a3513e08f

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 551.6 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b2d80fa687173cb8f8bae224ef00d1ad6bda8f8597bbb1a63f85182c7d91aeb3
MD5 51386144f9c0ff3bb902e2c793960931
BLAKE2b-256 3f431ff434249b082c233afcb0217884a2cd542e4696900aace249e36b26df88

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 157.8 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e0582435a4adef1a2fce53aeedb656bf769b0f113b524f98be51d3e3d40720cb
MD5 7f92dcbaf76231df5b7b16aeb7392573
BLAKE2b-256 2b60d5d83f080f2bf84902e7ede9b3776778433f6775c46eb296f78cf88ca197

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 130.8 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 bf9f34f7c63797219b32713b561c4f94e777ff6c22beecfcd6bdf6b6c25b8518
MD5 bd4593c06f4a78f89b8d4b83f958f9a7
BLAKE2b-256 aee39b5886b673ef34a36f7ca98d426dbf95b65999cf85bf4b75570bdcc42682

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp37-cp37m-win32.whl.

File metadata

  • Download URL: datrie-0.8.2-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 107.6 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 25e9e07ecfceaef78d23bde8d7278e4d6f63e1e3dc5ac00ccb4bec3062f0a8e0
MD5 1350cb5e762528a03f7585c4779ab391
BLAKE2b-256 6f127954d20ae5f0b5e1dbf2ec948b3c750db21a8bf05e560fef0f725fdd1d8f

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 537.4 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e1d704ee4fdc03f02d7dacc4d92052dbd490dba551509fccfd8ee52c9039d4ad
MD5 74fc618e8aa368d38a1522540b942d46
BLAKE2b-256 90f8c6daa335b0b5f3a6932e8b62b6f848e87c7f855ab6e94376051c9e228553

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 154.6 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dbe04704eb41b8440ca61416d3670ca6ddeea847d19731cf121889bac2962d07
MD5 3c6d37dbc92eadd8d6c1ec3025b66888
BLAKE2b-256 223214e19f05007ecc0c3872aa2ffc9a160c4d89fd42310f3864c0399bd8bf20

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 123.0 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 31e316ba305cdd7b8a42f8e4af5a0a15a628aee270d2f392c41329a709eeda6d
MD5 136d669c98ef1c20e487027dce77f218
BLAKE2b-256 9e1f519da60d031bd44d40fb69e4a3650dbfd072c3727cbc7d171f1f895290cf

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp36-cp36m-win32.whl.

File metadata

  • Download URL: datrie-0.8.2-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 102.0 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 ee7cd8470a982356e104e62148f2dbe2d3e17545cafaa3ada29f2548984f1e89
MD5 a86c69a6c83dd8cb308c17da18fe7dde
BLAKE2b-256 cb80ec497ad39dcaf9d20a990f1941e15516884d49e7adaf2a8f8b5830f0ede1

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 544.9 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 327d9c17efaebc66d1956dca047b76fdd0e5b989d63cb55b9038ec09d8769089
MD5 a9d50d12bdae471ca8cf833fdfb20004
BLAKE2b-256 0be76c36d488e23f4b421b1351117417524ae2d3e138fdab83d23630c948199b

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 162.8 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b6fd6c7c149b410a87d46072c1c98f6e87ec557802e1d0e09db7b858746e8550
MD5 7d6ee138262b8450be0cf21c3eba08ec
BLAKE2b-256 9a9820763bc7b17f4a34c1d47a14cec0f9e6fee88994c21893a4e3e169ab3676

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 118.8 kB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 fa9f39ac88dc6286672b9dd286fe459646da48133c877a927af24803eaea441e
MD5 0b1b1de770d516099b0ca5b4629fbfe0
BLAKE2b-256 e63b73b72d73960095401af0247463b42ddfe2ac60c177e0b7745e75c9eccc1b

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp35-cp35m-win32.whl.

File metadata

  • Download URL: datrie-0.8.2-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 97.6 kB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 3a3e360a765cc95410898dc222f8585ea1b1bba0538a1af4d8630a5bc3ad6ee7
MD5 656b98048ef71377d0b0e8183236a4d8
BLAKE2b-256 e82d88c334d2431ab56f1c9d3369b8f72d145ba949854f116afbadc27e54f63f

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 530.4 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0e3b76676abbae2368cce6bf605bb0ba7cfd11f2c420b96d67959f353d5d423f
MD5 f493ea119d88e16e942f1e21745ef4a2
BLAKE2b-256 10632ff02b530802832b0cbe0535c6b4e0024f2997286b2cbd18670eb5034907

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp35-cp35m-macosx_10_6_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp35-cp35m-macosx_10_6_x86_64.whl
  • Upload date:
  • Size: 157.9 kB
  • Tags: CPython 3.5m, macOS 10.6+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp35-cp35m-macosx_10_6_x86_64.whl
Algorithm Hash digest
SHA256 651c63325056347b86c5de7ffeea8529230a5787c61ee6dcabc5b6c644bd3252
MD5 aa3d82f58d0a3e91e3205432372b8c1f
BLAKE2b-256 87bec2c2ece6536da2886e67de40c04f4369c50de107ec3541aeb29b91a75840

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp34-cp34m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 541.2 kB
  • Tags: CPython 3.4m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2de594d84a2f43a09ddc15316a8afd48aae0fdc456f9279d0940aa59c473d9d5
MD5 d34ed3c8a3f340a0f6d05703715bd39d
BLAKE2b-256 fce90db8800a4c8dc197fc55a11102fe3a02e064d8966b1cadcabbaa51861344

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 470.1 kB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bf5c956c0a9a9d0f07e3c8923746279171096de18a8a51685e22d9817f8755a6
MD5 d97b50a58826f328dd773d2949d25486
BLAKE2b-256 88423abe71838ad52622ca3601265969fa76c1653d2fa82486cfa710f1478b53

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp27-cp27m-win_amd64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp27-cp27m-win_amd64.whl
  • Upload date:
  • Size: 118.0 kB
  • Tags: CPython 2.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 f826e843138698501cbf1a21233f724b851b1e475fad532b638ac5904e115f10
MD5 394b05ffa8c47c8d2301fb96835adc12
BLAKE2b-256 138be99e7d438e4a57e8f4feb086adf81b476981677991485f2404271512cdce

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp27-cp27m-win32.whl.

File metadata

  • Download URL: datrie-0.8.2-cp27-cp27m-win32.whl
  • Upload date:
  • Size: 98.5 kB
  • Tags: CPython 2.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp27-cp27m-win32.whl
Algorithm Hash digest
SHA256 c783e2c1e28964b2b045a951eb9606833a188c4bd4a780da68d22f557e03e429
MD5 8ff8445be1afbd1b2aab54ae0148516f
BLAKE2b-256 ded2e12df67208304d41c0a8bea798f309c1fee7a351610bf0bf64aaf17081aa

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 469.6 kB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6c9b333035312b79e6e9a10356d033e3d29aadbae6365007f706c854b3a94674
MD5 7b7312c62d7fd7f9a6cf3ce7de6e6755
BLAKE2b-256 4583062eb20c581f6e90b0fc52b2093f72f4d9d47efbc4010bab82957e00e840

See more details on using hashes here.

File details

Details for the file datrie-0.8.2-cp27-cp27m-macosx_10_7_x86_64.whl.

File metadata

  • Download URL: datrie-0.8.2-cp27-cp27m-macosx_10_7_x86_64.whl
  • Upload date:
  • Size: 156.6 kB
  • Tags: CPython 2.7m, macOS 10.7+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1.post20200322 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2

File hashes

Hashes for datrie-0.8.2-cp27-cp27m-macosx_10_7_x86_64.whl
Algorithm Hash digest
SHA256 53969643e2794c37f024d5edaa42d5e6e2627d9937ddcc18d99128e9df700e4c
MD5 3704eb7b5ba0244039abe8ba9d2a2413
BLAKE2b-256 59483ae10482706efd3acb732a2d60e03c613a38e2d41eddf0b84ec40a6ae753

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page