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

Uploaded Source

Built Distributions

lsm-0.4.6-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.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.10 Windows x86-64

lsm-0.4.6-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.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

lsm-0.4.6-cp310-cp310-macosx_12_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.10 macOS 12.0+ ARM64

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

Uploaded CPython 3.9 Windows x86-64

lsm-0.4.6-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.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.8 Windows x86-64

lsm-0.4.6-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.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.7m Windows x86-64

lsm-0.4.6-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.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

lsm-0.4.6-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.6-cp37-cp37m-macosx_10_9_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

lsm-0.4.6-cp36-cp36m-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.6m Windows x86-64

lsm-0.4.6-cp36-cp36m-macosx_10_14_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.6m macOS 10.14+ x86-64

File details

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

File metadata

  • Download URL: lsm-0.4.6.tar.gz
  • Upload date:
  • Size: 800.8 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.6.tar.gz
Algorithm Hash digest
SHA256 efe92612e9ecfb9eded062315dfac3e262e9e1d94cd8bf81fa0fef284cce21d4
MD5 0dc3ec267c47dd9542c25c55a27f11fa
BLAKE2b-256 b9d1d16eab7ab100a2bc48e6dadc22cca89e4b20bd63910cb8c58d18b134cf2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 007c920dde89f5acca55c95ae6c8eb139a3aa621d6db22fb55c8d82031098952
MD5 627d03c01418ddb6e1e3ce3677f3a961
BLAKE2b-256 4bea9bcf5d83bd5d38acb89975a217149d4251e0c7e60666752064ba873deddd

See more details on using hashes here.

File details

Details for the file lsm-0.4.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: lsm-0.4.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
  • 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.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 169f4dbd0f3bf65dba293290d0a119455d9b6536c633e1dce2080623a811e525
MD5 b6118a94772198c4f8b626cf454ae127
BLAKE2b-256 81337a033703c41eadf55a29970e609cfb9621608f3e5ed435ba4845357005c7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ef0f176923ec488378d6bfddb3935ec24dc72d902448545b37062fdf5e3cf642
MD5 943f6d37955d035b544719a3f544af0c
BLAKE2b-256 a4c05b8c707e725a05aa14cae18ad1902432a268542fad618516b70b0e431282

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fd3fba90310309b9ab973449eee9d0d96f63bd74c906c22889a78c6fefa433c9
MD5 19725dc3a33748bac8c641f2c2f225cd
BLAKE2b-256 cf2022ab883cff5e0c4fa8ad7d6e58d4006fb857d6034f64a1e54a88e588f88a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 947a862156d0d52e476f4d7de9a20586f0e5eb352d10f3856d5818f777ad937f
MD5 809edb7ca8b82d43570aa83862699b78
BLAKE2b-256 d9421153408272e64cca3a6132b07720d35f48d7c5cf74ecdea6a2523bbd32bf

See more details on using hashes here.

File details

Details for the file lsm-0.4.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: lsm-0.4.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
  • 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.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8939850286dc86bce60ee90507d22fd571f68eeccf8c9132aaa5041c82a19483
MD5 1a600f21da84c6d8c1eeb9fe610e468f
BLAKE2b-256 2cb79223d842501f6385778c0de94100e69afea535f6371a81d2283692fd8620

See more details on using hashes here.

File details

Details for the file lsm-0.4.6-cp310-cp310-macosx_12_0_arm64.whl.

File metadata

  • Download URL: lsm-0.4.6-cp310-cp310-macosx_12_0_arm64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.10, macOS 12.0+ ARM64
  • 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.6-cp310-cp310-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 4a648696f837fba46a013421beac817f5f383259247e2004c79ddc338262e54f
MD5 77b388595532be74342d202605a3a1e2
BLAKE2b-256 012b496b6ef6efadddf0288330268696bdbd9b7677636c11ee866b963423736b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 27495e5da74f67868788da3d8d864e4060679aa93a0dbc243180721d395e1bf9
MD5 9198949c38cb424740b40692b1a5d21f
BLAKE2b-256 af6c77be54bbc958f0a35cd3add708934a33e1bf0ec957960664f9b132402d20

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2921a7c3ac8c71831c54c1a2ad9cde0f74ae31285e5ebe608233fc5100b0f085
MD5 8afa38599e4d0c73a25f92b0282227e6
BLAKE2b-256 650ebc4016abe4f2a9f7d1905f3bf7a5e0afa3c7655b843c1b208f9edb7895db

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b4ab508294a0a309c2186fbf96a162bf3f4bbc3c0e44faca0473269a527a3044
MD5 d56ebf15479b2a174708f2ec7f878451
BLAKE2b-256 c561abfd0f668b3eb75e9a3fe754d83316c193c93ab8b8e653861f8f0449ff9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3341f21c28a901d1645a97dc6283e3c891dc3ae2356c7a5f373918cb8decdb9
MD5 debae2479c404ca24e368f91df899b60
BLAKE2b-256 524ad59abaa2b557e63063c0934800615ea4628003d23199eceeafd45408e091

See more details on using hashes here.

File details

Details for the file lsm-0.4.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: lsm-0.4.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
  • 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.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 30320577b2c9a754989e8cb2b7c4e62fd1b1b62683c588529ed035b752ad6f5d
MD5 fabb126ca7eb1fcb08ff83a33563ac57
BLAKE2b-256 1b61ca53cc4ac33ea6d0329d1f3a0cc62b36789c3019106bfa111aba67a43f15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 06f60327a91df27aa23dba6e64c20cc317ddd9c0693bb10e7def8b0d163ef350
MD5 8453dee0e47f68457da0b78cc1b1b84c
BLAKE2b-256 009e1f9e53ddec3c4939ec8107285192291a842fc03af814a617f14d78d47cdc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3449e4cd13691584e805be80f1cacdc5fac4b512aa01294fe652557f3a04ef9a
MD5 7f73d69fc4ae112edb0b37ef868daadc
BLAKE2b-256 c3cc9c637ca5ccafd4dac9ddd1b749cfe10bcf65c3eefc92770c5d669fe3c542

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6613a26d420af027fada9702e7b34f54709d6a0a9cc35149c31cb9580a3fe3c0
MD5 8f262cba95fba37ad81ca334b96f4320
BLAKE2b-256 aa18b3c693fd2268f593911f1e37aed781833872bc2c16511061d5b5b52688c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2d76d822477dc44ec4d7be423ae35a4207d94e9e1924e3e9da4b5e7485eccd1
MD5 7a53d42b5172b1ddc8c21fb7852717a5
BLAKE2b-256 1cc3a48ae258fdef7aeea4973bb49866fdc22a72157f0a539649d14053133cab

See more details on using hashes here.

File details

Details for the file lsm-0.4.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: lsm-0.4.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.8, manylinux: glibc 2.17+ ARM64
  • 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.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f0a0c458f5a0ac71e6d415f463433e94401388691c939c49021ce2d1aa1eb14
MD5 e087429789e0f84471428097131fd493
BLAKE2b-256 004700ea20c3e337cdbe224390c5923553e61060bdd9dd253e30697e45c73c65

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp38-cp38-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 be5e242a3cf7ce982dbdc784acd83e14adb712fba7ce4d6262a9bf2f534cb70b
MD5 ea86a7b8e98c2ed535aa6d90cae89909
BLAKE2b-256 77237d49020e51cc2104a0b88243702f1e70a1bf494f443c05b8c3fce1d680cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 06d1f5d02c7bb36551818118e8769eca9923459ed91737080fc9f6500bbb4985
MD5 0f9c818ac4aa7a0e6df7ae18633e17a5
BLAKE2b-256 5d142b3546992336445f44c2cea52c92e97c31bbe9c32d44b99a447ce0630148

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f119b18e155ecd7b537e4b37bc5b264a26ba714953d433fb2222c5845e77e50c
MD5 dd42b53b58692673ce351035066c504d
BLAKE2b-256 1f41fb6bed936eda414e9d08f298349f5b93179221a36bf677144477db4525ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5bebbb1145976587667fc75a06ec91c9c95d4133a6b7a91c8989b2f260803264
MD5 32438e2ded3ef39f1b03ea12a509ddc2
BLAKE2b-256 b4b5acfb099f1b08fb39f91d28757d2d85704e964eb618fe5e5365df96104432

See more details on using hashes here.

File details

Details for the file lsm-0.4.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: lsm-0.4.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.17+ ARM64
  • 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.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 69c306c65f1d469fc3c6b0eb85c68475fd5f9622e17c3048344f943d0b78af7b
MD5 7efade88df676a2a43f166778c85dfcb
BLAKE2b-256 49e23ac86efdad8e0d649a0dc00b6ef28cab4d08e4f00e49d8dcb43429c30cde

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lsm-0.4.6-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 982fa3bf9fcdd5d3cbba3e6158cf25faf55eec1f24074cba1a71657d65fc2d71
MD5 8e19d72f63cfe38caa6891091dfd8732
BLAKE2b-256 abf83d46881f814be40b2b5d89952b5a7a38060a2449d07c5e31f4e53183e46e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lsm-0.4.6-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.6-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0a3d7a4df0bca8412b2786e386706ccf1fb9c6231e66e218ead0c3c19aae873d
MD5 38de7a61689b024e8c65b3c5b4bc1add
BLAKE2b-256 67efbf0d3e774b45c14b291dc7e722dc7e43d667b7d25b31c8cebd704682d9c8

See more details on using hashes here.

File details

Details for the file lsm-0.4.6-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: lsm-0.4.6-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.13 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.8

File hashes

Hashes for lsm-0.4.6-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 7d3344265f27624dc2d6b4e9be6d9f7e12e6425ea4100774205f8a444ccb78f7
MD5 7e8a3e93fa7264de4b615cf8ad60c1d9
BLAKE2b-256 7841e54d64354c41cc87f3256888e0f55fbd75336e2264bcc2a3d1fe15905b75

See more details on using hashes here.

File details

Details for the file lsm-0.4.6-cp36-cp36m-macosx_10_14_x86_64.whl.

File metadata

  • Download URL: lsm-0.4.6-cp36-cp36m-macosx_10_14_x86_64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.6m, macOS 10.14+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.10.1 urllib3/1.26.13 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.15

File hashes

Hashes for lsm-0.4.6-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 d25791ee335d63aee79f098395e7b715cd3cb8efdb87756b40f71a66e13ed501
MD5 531d425186d22bb993a63f769b7e3094
BLAKE2b-256 b9a559f3c42cd52598600b36a33aff53836b5dee96d860e5bac69f1d8d0900e9

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