Skip to main content

Python bindings for SQLite's LSM key/value engine

Project description

lsm

Fast Python bindings for SQLite's LSM key/value store. The LSM storage engine was initially written as part of the experimental SQLite4 rewrite (now abandoned). More recently, the LSM source code was moved into the SQLite3 source tree and has seen some improvements and fixes. This project uses the LSM code from the SQLite3 source tree.

Features:

  • Embedded zero-conf database.
  • Keys support in-order traversal using cursors.
  • Transactional (including nested transactions).
  • Single writer/multiple reader MVCC based transactional concurrency model.
  • On-disk database stored in a single file.
  • Data is durable in the face of application or power failure.
  • Thread-safe.
  • Releases GIL for read and write operations (each connection has own mutex)
  • Page compression (lz4 or zstd)
  • Zero dependency static library
  • Python 3.x.

Limitations:

The source for Python lsm is hosted on GitHub.

If you encounter any bugs in the library, please open an issue, including a description of the bug and any related traceback.

Quick-start

Below is a sample interactive console session designed to show some of the basic features and functionality of the lsm Python library.

To begin, instantiate a LSM object, specifying a path to a database file.

>>> from lsm import LSM
>>> db = LSM('test.ldb')
>>> db.open()
>>> print(db)
<LSM at "/tmp/test.ldb" as 0x10951e450>

More pythonic variant is using context manager:

>>> from lsm import LSM
>>> with LSM("/tmp/test.ldb") as db:
...     print(db)
<LSM at "/tmp/test.ldb" as 0x10951e450>

Binary/string mode

You should select mode for opening the database with binary: bool = True argument.

For example when you want to store strings just pass binary=False:

>>> from lsm import LSM
>>> with LSM("/tmp/test.ldb", binary=False) as db:
...    db['foo'] = 'bar'   # must be str for keys and values
...    print(db['foo'])
bar

Otherwise, you must pass keys and values ad bytes (default behaviour):

>>> from lsm import LSM
>>> with LSM("/tmp/test.ldb") as db:
...    db[b'foo'] = b'bar'   # must be bytes for keys and values
...    print(db[b'foo'])
b'bar'

Key/Value Features

lsm is a key/value store, and has a dictionary-like API:

>>> from lsm import LSM
>>> with LSM("/tmp/test.ldb", binary=False) as db:
...    db['foo'] = 'bar'
...    print(db['foo'])
bar

Database apply changes as soon as possible:

>>> from lsm import LSM
>>> db = LSM("/tmp/test.ldb", binary=False)
>>> db.open()
True
>>> for i in range(4):
...     db[f'k{i}'] = str(i)
...
>>> 'k3' in db
True
>>> 'k4' in db
False
>>> del db['k3']
>>> db['k3']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: "Key 'k3' was not found"

By default when you attempt to look up a key, lsm will search for an exact match. You can also search for the closest key, if the specific key you are searching for does not exist:

>>> from lsm import, LSM, SEEK_LE, SEEK_GE
>>> db = LSM("/tmp/test.ldb", binary=False)
>>> db.open()
True
>>> db['k1xx', SEEK_LE]  # Here we will match "k1".
'1'
>>> db['k1xx', SEEK_GE]  # Here we will match "k2".
'2'

LSM supports other common dictionary methods such as:

  • keys()
  • values()
  • items()
  • update()

Slices and Iteration

The database can be iterated through directly, or sliced. When you are slicing the database the start and end keys need not exist -- lsm will find the closest key (details can be found in the LSM.fetch_range() documentation).

>>> [item for item in db.items()]
[('foo', 'bar'), ('k0', '0'), ('k1', '1'), ('k2', '2')]

>>> db['k0':'k99']
<lsm_slice object at 0x10d4f3500>

>>> list(db['k0':'k99'])
[('k0', '0'), ('k1', '1'), ('k2', '2')]

You can use open-ended slices. If the lower- or upper-bound is outside the range of keys an empty list is returned.

>>> list(db['k0':])
[('k0', '0'), ('k1', '1'), ('k2', '2')]

>>> list(db[:'k1'])
[('foo', 'bar'), ('k0', '0'), ('k1', '1')]

>>> list(db[:'aaa'])
[]

To retrieve keys in reverse order or stepping over more then one item, simply use a third slice argument as usual. Negative step value means reverse order, but first and second arguments must be ordinary ordered.

>>> list(db['k0':'k99':2])
[('k0', '0'), ('k2', '2')]

>>> list(db['k0'::-1])
[('k2', '2'), ('k1', '1'), ('k0', '0')]

>>> list(db['k0'::-2])
[('k2', '2'), ('k0', '0')]


>>> list(db['k0'::3])
[('k0', '0')]

You can also delete slices of keys, but note that the delete will not include the keys themselves:

>>> del db['k0':'k99']

>>> list(db)  # Note that 'k0' still exists.
[('foo', 'bar'), ('k0', '0')]

Cursors

While slicing may cover most use-cases, for finer-grained control you can use cursors for traversing records.

>>> with db.cursor() as cursor:
...     for key, value in cursor:
...         print(key, '=>', value)
...
foo => bar
k0 => 0

>>> db.update({'k1': '1', 'k2': '2', 'k3': '3', 'foo': 'bar'})

>>> with db.cursor() as cursor:
...     cursor.first()
...     print(cursor.key())
...     cursor.last()
...     print(cursor.key())
...     cursor.previous()
...     print(cursor.key())
...
foo
k3
k2

>>> with db.cursor() as cursor:
...     cursor.seek('k0', SEEK_GE)
...     print(list(cursor.fetch_until('k99')))
...
[('k0', '0'), ('k1', '1'), ('k2', '2'), ('k3', '3')]

It is very important to close a cursor when you are through using it. For this reason, it is recommended you use the LSM.cursor() context-manager, which ensures the cursor is closed properly.

Transactions

lsm supports nested transactions. The simplest way to use transactions is with the LSM.transaction() method, which doubles as a context-manager or decorator.

>>> with db.transaction() as txn:
...     db['k1'] = '1-mod'
...     with db.transaction() as txn2:
...         db['k2'] = '2-mod'
...         txn2.rollback()
...
True
>>> print(db['k1'], db['k2'])
1-mod 2

You can commit or roll-back transactions part-way through a wrapped block:

>>> with db.transaction() as txn:
...    db['k1'] = 'outer txn'
...    txn.commit()  # The write is preserved.
...
...    db['k1'] = 'outer txn-2'
...    with db.transaction() as txn2:
...        db['k1'] = 'inner-txn'  # This is commited after the block ends.
...    print(db['k1']  # Prints "inner-txn".)
...    txn.rollback()  # Rolls back both the changes from txn2 and the preceding write.
...    print(db['k1'])
...
1              <- Return value from call to commit().
inner-txn      <- Printed after end of txn2.
True           <- Return value of call to rollback().
outer txn      <- Printed after rollback.

If you like, you can also explicitly call LSM.begin(), LSM.commit(), and LSM.rollback().

>>> db.begin()
>>> db['foo'] = 'baze'
>>> print(db['foo'])
baze
>>> db.rollback()
True
>>> print(db['foo'])
bar

Thanks to

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

lsm-0.4.7.tar.gz (801.1 kB view details)

Uploaded Source

Built Distributions

lsm-0.4.7-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11 Windows x86-64

lsm-0.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

lsm-0.4.7-cp311-cp311-macosx_10_9_universal2.whl (2.1 MB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

lsm-0.4.7-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

lsm-0.4.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

lsm-0.4.7-cp310-cp310-macosx_11_0_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10 macOS 11.0+ x86-64

lsm-0.4.7-cp310-cp310-macosx_10_9_universal2.whl (2.1 MB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

lsm-0.4.7-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9 Windows x86-64

lsm-0.4.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

lsm-0.4.7-cp39-cp39-macosx_11_0_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.9 macOS 11.0+ x86-64

lsm-0.4.7-cp39-cp39-macosx_10_9_universal2.whl (2.1 MB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

lsm-0.4.7-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8 Windows x86-64

lsm-0.4.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

lsm-0.4.7-cp38-cp38-macosx_11_0_universal2.whl (2.1 MB view details)

Uploaded CPython 3.8 macOS 11.0+ universal2 (ARM64, x86-64)

lsm-0.4.7-cp38-cp38-macosx_10_15_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

lsm-0.4.7-cp37-cp37m-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.7m Windows x86-64

lsm-0.4.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

lsm-0.4.7-cp37-cp37m-macosx_10_15_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

lsm-0.4.7-cp37-cp37m-macosx_10_9_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file lsm-0.4.7.tar.gz.

File metadata

  • Download URL: lsm-0.4.7.tar.gz
  • Upload date:
  • Size: 801.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for lsm-0.4.7.tar.gz
Algorithm Hash digest
SHA256 761233c3b2e2ffc60bb951aeef31c5a6c47dbc9e4f7704c540cbde17e238d3ae
MD5 a8cd71c6c9bc65084d48b033e09c23ca
BLAKE2b-256 a83c90212f7cb43cf672787bcd5e9e1e38706abbb64e941c48ada171216e0fd6

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: lsm-0.4.7-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for lsm-0.4.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 729a0db043c8dee4ce874ea7ed6de42d7f738ff23e228d6deb87efebdb99ec9a
MD5 ed19c40cc9ce0d1e291c527add373cf6
BLAKE2b-256 ea2c92594970614a9ee3168aff3a1c888966b43ec5ba421240b1c4116265c8c6

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 186a3af099c917c45fa3e6443795c090444f3665eed30ad89ba296802a3a9b63
MD5 633424ab9c762ee3043634eb375b90bf
BLAKE2b-256 9183ff32c185d8c79457738d89e8a0b4c526e71524f3ed1528b62dae0148b818

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

  • Download URL: lsm-0.4.7-cp311-cp311-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.11, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/32.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.12 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/21.8.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for lsm-0.4.7-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e42c8b72bb7ed8b810411e13325acc802226ce5d79354dfe80a093d5385d0b14
MD5 4e1117240112f5eabde72eab4ce95488
BLAKE2b-256 ccf0f9ae6c3478ec4e5b4ddc4b9d7a995410638ebeba617ac7a2cbc0c7fad739

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: lsm-0.4.7-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.9

File hashes

Hashes for lsm-0.4.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cbca03f52a22caf065765b3cd42034e79cad76f67f5b420ef85bd11aa0284a8e
MD5 c8d35eaf03b5ef33a27442371f94e9e4
BLAKE2b-256 aa631293b60f1dc7292089dbc89ed0f544461d7883e8e86d472f4b21e44a40c0

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bafe4825a3e372198193c12e4ba766e48e544e5ed31b9223354b617ca41a74e9
MD5 582029e7b60a735c14162e17c2e40d12
BLAKE2b-256 409d30015d0c9c4734193f63e2393ea8db4809a1165923137b8390b64e2294c5

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp310-cp310-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 7ab8c0b906344b49d8c3f38ad0bef4b2ba67f86b2c1ac72cc97168034ed142c0
MD5 761d76ec2979318884cda5fc161dd92f
BLAKE2b-256 4d17187101e8eb5edd02b84ee06daf2919d93e0912c1e89503f3bbcb9f179773

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

  • Download URL: lsm-0.4.7-cp310-cp310-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.10, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/32.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.12 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/21.8.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for lsm-0.4.7-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 45ca603d616d6de4086ecbaeb0a6e3561bb92ce56b810644e49afb68e0a6a938
MD5 8ac48394ebabd62dc45f5d345f1cb99c
BLAKE2b-256 77be60cd90be65b054de72ce677c79a1d2d6cfa74343e127f2764484dd124983

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: lsm-0.4.7-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for lsm-0.4.7-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 729fc76601b6fd1b1b951225c3b005256daf522b3593d8fdc9670279e7cd383c
MD5 e5c673c10d3acecbea2f0247d9381e7a
BLAKE2b-256 c123bb7e3b6fcbc7ecc888b25344670b6801987e2d814effbc9265e7fbc3ff4a

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d656d4ecb7d6473a84bd28f056012d9959d4903b6846783f04d8cd6b2e121f1b
MD5 88a19c24644560e27b74594638171993
BLAKE2b-256 1901d7a7d9750b12a6220ab4153bb183f4cdc4c9fe6928506a6c7942852e3ba7

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp39-cp39-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 cac19f28580027d50591fc95a3e3e551b5ff2209e98a6b75b60c7b707b76b979
MD5 19b188a3033e365deac002496594a498
BLAKE2b-256 5e100f66aafd952d8b20c9235bdc61c4c67c4f06e2110df07497a8296d10e822

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

  • Download URL: lsm-0.4.7-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/32.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.12 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/21.8.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for lsm-0.4.7-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 41b64eaeb9ad90d96f2efa56b02118785d7eb8f1d2d1ff42b60abcc3b5cea97d
MD5 a5faba68df0b2893e93bdc155f3a0370
BLAKE2b-256 763bd0b0c0c62dcac3d9ea6a44359056097c425df6176fb8737b852fe3f83459

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: lsm-0.4.7-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for lsm-0.4.7-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c5807ead505a346386f2b804a97b2626b95b3b9bd850d663d1a203903d1e1419
MD5 6a0a74723770c1354a710ae93f936dc1
BLAKE2b-256 49dfe3d88004ef00ab67651730d98354841766304a9db2301f4d8fce5a6ae49b

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ff59b0a10c878eecf5155211691d644b8a471bde1949d5b7e682ea24dfa68f4
MD5 e6d6dcbd8295fd142e46b6da809e21af
BLAKE2b-256 72ec2670475a5cef5a27c4c6a28609a55069d23b53ee61e7026aff46a8803a34

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp38-cp38-macosx_11_0_universal2.whl.

File metadata

  • Download URL: lsm-0.4.7-cp38-cp38-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.8, macOS 11.0+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/32.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.12 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/21.8.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for lsm-0.4.7-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 0730c5439151c6a7c5ccae64d24f63a4937bacadf306ba7a0229cba0d96659d2
MD5 f120a07cdfd04982cde11d931e1ea71a
BLAKE2b-256 bfe1d7307faa8fb9c2fe7224dede75551bfc35f5d7674708e30cba9acee419bf

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9e3f75a2ee0f5015398d34f40d6598cded7df4caeaf45f4e10792fbd7307ad6d
MD5 5d1b054336f67aeae5bb61d74af733c5
BLAKE2b-256 fdf435cdac68e8ece6354ad863b40dc6b9937ef78b8f21b901bb52fc1e2e98aa

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: lsm-0.4.7-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.9

File hashes

Hashes for lsm-0.4.7-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 d5283a4f62b2f0d4281b7921461035aabcd7b438bfc593649f524b759ee12af4
MD5 785d2ccb3b20254ffd3f87fef6a73425
BLAKE2b-256 2c8b63b54b798ef8cef8bfb571c8a87c3196191e4bb523653a3f0e0c49f2984a

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4bdfa6568bd13c654ce3dae385c6021a0161e6925baf4157287c543693fae731
MD5 5a282163b1dbdad09ec75f9603042398
BLAKE2b-256 6b3005bfa2970219642e719131d108c7bcbbadc62418922e268393ce7a1a79b5

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for lsm-0.4.7-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 609d2263f796cada2d5b10e32250e0d4cf831b600a8396e9bf24e10cc65243c8
MD5 c7d9b953b5f6735e7322af9216fb1746
BLAKE2b-256 aa1cda784c0b8f762c5e5e4175c6a985fd9320d1608e3c797702202896f7b4d0

See more details on using hashes here.

File details

Details for the file lsm-0.4.7-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: lsm-0.4.7-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.3 readme-renderer/32.0 requests/2.28.1 requests-toolbelt/0.9.1 urllib3/1.26.12 tqdm/4.62.3 importlib-metadata/4.11.0 keyring/21.8.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for lsm-0.4.7-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3ecde8384fb840f52ade95199902415d2c558c595ae8e22936a5291362c1c86b
MD5 09eeb8a0703f67cc786d9d91ac2a42f6
BLAKE2b-256 24bc171a6b0e0a1edd7317f3a36b1d15c4c854664b468dd14e75cbf114be4f02

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