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.8.tar.gz (801.1 kB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.11 Windows x86-64

lsm-0.4.8-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.8-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.8-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10 Windows x86-64

lsm-0.4.8-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.8-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.8-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.8-cp39-cp39-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.9 Windows x86-64

lsm-0.4.8-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.8-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.8-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.8-cp38-cp38-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.8 Windows x86-64

lsm-0.4.8-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.8-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.8-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.8-cp37-cp37m-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.7m Windows x86-64

lsm-0.4.8-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.8-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.8-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.8.tar.gz.

File metadata

  • Download URL: lsm-0.4.8.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.8.tar.gz
Algorithm Hash digest
SHA256 c8199736c6cc9f4bedec62d12eddbcac97cceb7f6448323d33c3e9b902dbd768
MD5 7eda7b3049e9eb290d67c73dc8ea300d
BLAKE2b-256 abb08c03ceeed7fb677260a54945a16d3174b1015275d8db553ba4b8b83ce870

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6bd578306d03fd54eee769fb10eca9d69a34c72326607a1b3ec53b4fd7cd93e8
MD5 d817351b8b84988d935b92d4706faaa7
BLAKE2b-256 c103a9f3450e1a8016d33ddda1fdc183e70ae7382a78f1df1986a39d427739d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ff4e0c5af919910a235472f7ff8ed5bc8ff050f8330e5444aa7d79abe940d4d2
MD5 c58a138b812c88a5347aa43baea4fed5
BLAKE2b-256 d473b62101a2324cc8562356baf90a769c11a836b8ee99d12a6d1b215c2589ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 50c3a82be6340d65e053f0478d02f97ee0df3bb4127347d77d0d74d643fb745c
MD5 8147a7eca854cec9f4f853e137011f9f
BLAKE2b-256 540d4108ac732ffda177867b71660de17585990be7b88255cee379163636a484

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1f5c7c45daaa3af0c62ec98f876ca1179093b7a0f9852fddf1d0d3b3c512769a
MD5 19de3263aaafd130afd0936867b276a7
BLAKE2b-256 0795f1b84b08f0eec2ba2d059c8ba0f56613d8c3630a6257057b7d2f112877cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 48074b0122290853525ab5e891020957d6d229dd2424a3fbd4ac6cdc81c39c50
MD5 6eef16e46b951b96e7ae4d1f343e2102
BLAKE2b-256 5ae066df192b889002ef16aa5df4382c617fec32ced37e32a7cb938ff07eb1f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 b839f15767d336f7cf619cb981d45066da99b4e8f5b56db0f4a405a599234062
MD5 d580992b67df0953560ee40d49a9cd42
BLAKE2b-256 17a80e6ccb1d06f7f1382a5e5b76755f2e2a7a37ab9d284151dbd01d13414de6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a8a606b393ace9a980bf8689c6cfd32ca9af9508992d266cf28425ada3d8e09e
MD5 bf289a2d3b2c71d57b7a55361554e047
BLAKE2b-256 759001f6eec3530ac665b864ecb71ea64a16e9910293e595520845c21b7c6f10

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b919d7748f41e5aed1ade56943bf6d43f86098fe0b73aae6947c1859b08c2a11
MD5 4511eff7d72332f057a5a101d4103f53
BLAKE2b-256 a555e7d226c79c0ba3e0f9d8babaac92c13470111680550f0706a88e2cc4d13b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e34fd04b16f4f8a5a09e297ee377356b3fce43fb091e582b48a154706aff5a56
MD5 8329d5cd41d6e5883e6e5d35f3e93dfd
BLAKE2b-256 b2696ef2e46cfd69c5e2df38d3c2e3fcaed2a6cc4fc406e14f695e0959bf5793

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 6ca68e6731cd475cb8a14410f81dbf60711c022d03560504df7977dbd80b6e70
MD5 8a81b6e467851ab9ea8961463d202a62
BLAKE2b-256 b83bd463c8a3ae7806212b9710dbe701d1efe2c97f280f04f7adeb6be765dcd3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 148229313fbc438d30f7391b750ede15912299ae074dfea7d34c6b5b7530af11
MD5 d2da0b8a481b1de3512826ed060c765e
BLAKE2b-256 4d870fe89e698eba2afc42b2b3adaee20c369305e185a621e57eb671c78b6b88

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d2ead41c7c14690d39f9ae8e9d1b7a56d5f300c0da46fd83289668119160bcc9
MD5 63bd498c8e5f2e752ca76807fe4f3f53
BLAKE2b-256 a20f5d598076cc6bd8148d246e8b33cb8abca7f0317593ce5579c1fa51e3223f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 649686673e4c1c91a2c49aaf02fc12c879ff325b2e62591f3928837b9d7f6092
MD5 00657a0279fdbb6acaefb9b1dd44e5ae
BLAKE2b-256 86ceefbacefad6eabd9e22ba75bb26b362d169b118f3f04a2f0c2fbd12c7a315

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 610f34b7ebf263058e4616be5391bdff4635f39b55b41e00aff2b3babe4218c3
MD5 012009436b86f81817fd572640503611
BLAKE2b-256 753ca0f4b0b7cbde2d35bfa7bbb228cb304e110b0add0cddbee7d007998a2b98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 8849e5644992e30051c103d8ca35c855ed6661204f99e0cba222d018fcc1189d
MD5 c8431ff9c78de312f5a551127658c918
BLAKE2b-256 027b43e1c939325660599eb6f1be55771c1d2d135a517faad4cfafff289fcf2a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 fdf1c15d39bb859aee7497f7d500db40a85a018c915735b823f35ee42c9c65e6
MD5 a73565376890e328457886f2adb43da9
BLAKE2b-256 025a89df134694def4e88d784943cc5b943b4cc12df5f6d12b053f585ef9c784

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9301eb6acae51267a58afbb095d89b7afc992fb7f96cc617fd0e3a1857e8103a
MD5 4fd928e57da226bdb108889782345432
BLAKE2b-256 0ce6c7caf68745f65e451aab6e8a07199d6daec0a623168ccfe0bf9b3983717d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.8-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9a2c0d8339dbe51efc159460ecad4f4e82539cb8e79049e1ca4aac19a08baad8
MD5 4937a3aa8b6e23cc44b72a3b69d74ee0
BLAKE2b-256 408c251176e312178516750ccbd4ed380501dcb7ed34fc58460a26456c696cb4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.8-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.8-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4c6ed796326c789d33a66f6ccf9e5aeed2614a5004d7f7977907dbcd7f9165f2
MD5 90097fa235c4f40f3359069d4171bc87
BLAKE2b-256 723a6fd671504045a7bf142ae3a2cd78e2a79053c8af76a4207a082f125a36cf

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