py-scdb


Namepy-scdb JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryA very simple and fast key-value store but persisting data to disk, with a 'localStorage-like' API for python.
upload_time2023-01-16 14:30:20
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseNone
keywords key-value-store cache disk-cache database localstorage
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # py_scdb

[![PyPI version](https://badge.fury.io/py/py_scdb.svg)](https://badge.fury.io/py/py_scdb) ![CI](https://github.com/sopherapps/py_scdb/actions/workflows/CI.yml/badge.svg)

A very simple and fast key-value *(as UTF-8 strings)* store but persisting data to disk, with a "localStorage-like" API.

This is the python version of the original [scdb](https://github.com/sopherapps/scdb)

**scdb may not be production-ready yet. It works, quite well but it requires more rigorous testing.**

## Purpose

Coming from front-end web
development, [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) was always
a convenient way of quickly persisting data to be used later by a given application even after a restart.
Its API was extremely simple i.e. `localStorage.getItem()`, `localStorage.setItem()`, `localStorage.removeItem()`
, `localStorage.clear()`.

Coming to the backend (or even desktop) development, such an embedded persistent data store with a simple API
was hard to come by.

scdb is meant to be like the 'localStorage' of backend and desktop (and possibly mobile) systems.
Of course to make it a little more appealing, it has some extra features like:

- Time-to-live (TTL) where a key-value pair expires after a given time
- Non-blocking reads from separate processes, and threads.
- Fast Sequential writes to the store, queueing any writes from multiple processes and threads.
- Optional searching of keys that begin with a given subsequence. This option is turned on when `scdb::new()` is called.
  Note: **When searching is enabled, `delete`, `get`, `compact`, `clear` become considerably slower.**

## Dependencies

- python +v3.7

## Quick Start (Synchronous)

- Install the package

```shell
pip install py_scdb
```

- Import the `Store` and use accordingly

```python
if __name__ == "__main__":
    from py_scdb import Store

    # These need to be UTF-8 strings
    records = [
        ("hey", "English"),
        ("hi", "English"),
        ("salut", "French"),
        ("bonjour", "French"),
        ("hola", "Spanish"),
        ("oi", "Portuguese"),
        ("mulimuta", "Runyoro"),
    ]
    keys = [k for (k, _) in records]
    
    store = Store(
        store_path="db", 
        max_keys=1000000, 
        redundant_blocks=1, 
        pool_capacity=10, 
        compaction_interval=1800,
        is_search_enabled=True,
    )
    
    # inserting without ttl
    for (k, v) in records[:3]:
        store.set(k=k, v=v)
    
    # inserting with ttl of 5 seconds
    for (k, v) in records[3:]:
        store.set(k=k, v=v, ttl=5)
            
    # updating - just set them again
    updates = [
          ("hey", "Jane"),
          ("hi", "John"),
          ("hola", "Santos"),
          ("oi", "Ronaldo"),
          ("mulimuta", "Aliguma"),
    ]
    for (k, v) in updates:
        store.set(k=k, v=v)
    
    # getting
    for k in keys:
        v = store.get(k=k)
        print(f"Key: {k}, Value: {v}")

    # searching without pagination
    results = store.search(term="h")
    print(f"Search 'h' (no pagination):\n{results}\n")

    # searching with pagination
    results = store.search(term="h", skip=1, limit=2)
    print(f"Search 'h' (skip=1, limit=2):\n{results}\n")
    
    # deleting
    for k in keys[:3]:
        store.delete(k=k)
      
    # clearing
    store.clear()
      
    # compacting (Use sparingly, say if database file is too big)
    store.compact()
```

- Run the module

```shell
python <module_name>.py 
# e.g. python main.py
```

## Quick Start (Asynchronous)

- Install the package

```shell
pip install py_scdb
```

- Import the `AsyncStore` and use accordingly

```python
import asyncio
from py_scdb import AsyncStore

# These need to be UTF-8 strings
records = [
    ("hey", "English"),
    ("hi", "English"),
    ("salut", "French"),
    ("bonjour", "French"),
    ("hola", "Spanish"),
    ("oi", "Portuguese"),
    ("mulimuta", "Runyoro"),
]
keys = [k for (k, _) in records]

async def run_async_example():
    store = AsyncStore(
        store_path="db", 
        max_keys=1000000, 
        redundant_blocks=1, 
        pool_capacity=10, 
        compaction_interval=1800,
        is_search_enabled=True,
    )
    
    # inserting without ttl
    for (k, v) in records[:3]:
        await store.set(k=k, v=v)
    
    # inserting with ttl of 5 seconds
    for (k, v) in records[3:]:
        await store.set(k=k, v=v, ttl=5)
            
    # updating - just set them again
    updates = [
        ("hey", "Jane"),
        ("hi", "John"),
        ("hola", "Santos"),
        ("oi", "Ronaldo"),
        ("mulimuta", "Aliguma"),
    ]
    for (k, v) in updates:
        await store.set(k=k, v=v)
    
    # getting
    for k in keys:
        v = await store.get(k=k)
        print(f"Key: {k}, Value: {v}")

    # searching without pagination
    results = await store.search(term="h")
    print(f"Search 'h' (no pagination):\n{results}\n")

    # searching with pagination
    results = await store.search(term="h", skip=1, limit=2)
    print(f"Search 'h' (skip=1, limit=2):\n{results}\n")
    
    # deleting
    for k in keys[:3]:
        await store.delete(k=k)
      
    # clearing
    await store.clear()
      
    # compacting (Use sparingly, say if database file is too big)
    await store.compact()


asyncio.run(run_async_example())
```

- Run the module

```shell
python <module_name>.py 
# e.g. python main.py
```

## Contributing

Contributions are welcome. The docs have to maintained, the code has to be made cleaner, more idiomatic and faster,
and there might be need for someone else to take over this repo in case I move on to other things. It happens!

Please look at the [CONTRIBUTIONS GUIDELINES](./docs/CONTRIBUTING.md)

You can also look in the [./docs](https://github.com/sopherapps/scdb/tree/master/docs) 
folder of the [rust scdb](https://github.com/sopherapps/scdb) to get up to speed with the internals of scdb e.g.

- [database file format](https://github.com/sopherapps/scdb/tree/master/docs/DB_FILE_FORMAT.md)
- [how it works](https://github.com/sopherapps/scdb/tree/master/docs/HOW_IT_WORKS.md)
- [inverted index file format](https://github.com/sopherapps/scdb/tree/master/docs/INVERTED_INDEX_FILE_FORMAT.md)
- [how the search works](https://github.com/sopherapps/scdb/tree/master/docs/HOW_INVERTED_INDEX_WORKS.md)

## Bindings

scdb is meant to be used in multiple languages of choice. However, the bindings for most of them are yet to be
developed.

For other programming languages, see the main [README](https://github.com/sopherapps/scdb/tree/master/README.md#bindings)

### How to Test
- Clone the repo and enter its root folder

```shell
git clone https://github.com/sopherapps/py_scdb.git && cd py_scdb
```

- Create a virtual environment and activate it

```shell
virtualenv -p /usr/bin/python3.7 env && source env/bin/activate
```

- Install the dependencies

```shell
pip install -r requirements.txt
```

- Install scdb package in the virtual environment

```shell
maturin develop
```

For optimized build use:

```shell
maturin develop -r
```

- Run the tests command

```shell
pytest --benchmark-disable
```

- Run benchmarks

```shell
pytest --benchmark-compare --benchmark-autosave
```

OR the summary

```shell
# synchronous API
pytest test/test_benchmarks.py --benchmark-columns=mean,min,max --benchmark-name=short --benchmark-sort=NAME
```

## Benchmarks

On an average PC (17Core, 16 GB RAM)

### Synchronous

```

--------------------------------------------------------- benchmark: 40 tests ---------------------------------------------------------
Name (time in us)                                                        Mean                     Min                     Max          
---------------------------------------------------------------------------------------------------------------------------------------
benchmark_clear[sync_store]                                          100.3807 (127.70)        83.0300 (116.78)       311.0190 (6.71)   
benchmark_clear_with_search[sync_searchable_store]                   171.0275 (217.57)       133.6630 (187.99)       433.9330 (9.36)   
benchmark_compact[sync_store]                                    110,236.5678 (>1000.0)  106,076.8240 (>1000.0)  117,694.6450 (>1000.0)
benchmark_compact_with_search[sync_searchable_store]             111,180.5895 (>1000.0)  102,213.0760 (>1000.0)  127,501.7640 (>1000.0)
benchmark_delete[sync_store-hey]                                       3.7683 (4.79)           3.4310 (4.83)          82.3730 (1.78)   
benchmark_delete[sync_store-hi]                                        3.7664 (4.79)           3.4440 (4.84)          54.3430 (1.17)   
benchmark_delete_with_search[sync_searchable_store-hey]               20.7839 (26.44)         15.0590 (21.18)        122.8020 (2.65)   
benchmark_delete_with_search[sync_searchable_store-hi]                20.7891 (26.45)         14.7560 (20.75)        123.6690 (2.67)   
benchmark_get[sync_store-hey]                                          0.7861 (1.0)            0.7110 (1.0)           64.0260 (1.38)   
benchmark_get[sync_store-hi]                                           0.7877 (1.00)           0.7190 (1.01)          55.0760 (1.19)   
benchmark_get_with_search[sync_searchable_store-hey]                   0.7991 (1.02)           0.7220 (1.02)          49.2670 (1.06)   
benchmark_get_with_search[sync_searchable_store-hi]                    0.7899 (1.00)           0.7230 (1.02)          46.3370 (1.0)    
benchmark_paginated_search[sync_searchable_store-b]                   12.9258 (16.44)         12.1430 (17.08)        156.1050 (3.37)   
benchmark_paginated_search[sync_searchable_store-ba]                  12.9307 (16.45)         12.1640 (17.11)        115.5400 (2.49)   
benchmark_paginated_search[sync_searchable_store-ban]                  7.0885 (9.02)           6.6530 (9.36)          71.0410 (1.53)   
benchmark_paginated_search[sync_searchable_store-bar]                  6.9927 (8.90)           6.6160 (9.31)          82.8730 (1.79)   
benchmark_paginated_search[sync_searchable_store-f]                   13.2767 (16.89)         12.0420 (16.94)     21,129.0600 (455.99) 
benchmark_paginated_search[sync_searchable_store-fo]                  12.9289 (16.45)         12.1860 (17.14)        439.6100 (9.49)   
benchmark_paginated_search[sync_searchable_store-foo]                 12.9970 (16.53)         12.3170 (17.32)        102.5070 (2.21)   
benchmark_paginated_search[sync_searchable_store-for]                  6.9771 (8.88)           6.6010 (9.28)          94.3090 (2.04)   
benchmark_paginated_search[sync_searchable_store-p]                    6.9895 (8.89)           6.5870 (9.26)         149.4620 (3.23)   
benchmark_paginated_search[sync_searchable_store-pi]                   6.9171 (8.80)           6.6080 (9.29)          69.2660 (1.49)   
benchmark_paginated_search[sync_searchable_store-pig]                  6.9475 (8.84)           6.5980 (9.28)          67.4790 (1.46)   
benchmark_paginated_search[sync_searchable_store-pigg]                 6.9717 (8.87)           6.6070 (9.29)         111.5230 (2.41)   
benchmark_search[sync_searchable_store-b]                             15.5810 (19.82)         14.6940 (20.67)        105.9520 (2.29)   
benchmark_search[sync_searchable_store-ba]                            15.6253 (19.88)         14.7780 (20.78)        107.5030 (2.32)   
benchmark_search[sync_searchable_store-ban]                           10.5073 (13.37)          9.9340 (13.97)        118.7900 (2.56)   
benchmark_search[sync_searchable_store-bar]                           10.8698 (13.83)          9.8550 (13.86)         97.3030 (2.10)   
benchmark_search[sync_searchable_store-f]                             20.7594 (26.41)         19.5820 (27.54)        116.9510 (2.52)   
benchmark_search[sync_searchable_store-fo]                            20.8279 (26.50)         19.6790 (27.68)        196.4210 (4.24)   
benchmark_search[sync_searchable_store-foo]                           15.7794 (20.07)         14.8380 (20.87)         94.2340 (2.03)   
benchmark_search[sync_searchable_store-for]                           10.4470 (13.29)          9.8640 (13.87)        128.4710 (2.77)   
benchmark_search[sync_searchable_store-p]                             10.3812 (13.21)          9.7870 (13.77)        102.3630 (2.21)   
benchmark_search[sync_searchable_store-pi]                            10.3460 (13.16)          9.8380 (13.84)         84.1260 (1.82)   
benchmark_search[sync_searchable_store-pig]                           10.4069 (13.24)          9.8400 (13.84)         78.9080 (1.70)   
benchmark_search[sync_searchable_store-pigg]                           6.9492 (8.84)           6.6000 (9.28)          86.0650 (1.86)   
benchmark_set[sync_store-hey-English]                                 10.6412 (13.54)          9.2990 (13.08)        110.4370 (2.38)   
benchmark_set[sync_store-hi-English]                                  10.7570 (13.68)          9.1760 (12.91)        100.9780 (2.18)   
benchmark_set_with_search[sync_searchable_store-hey-English]          37.2746 (47.42)         32.7920 (46.12)      8,647.2350 (186.62) 
benchmark_set_with_search[sync_searchable_store-hi-English]           28.0105 (35.63)         25.5050 (35.87)        105.3320 (2.27)   
---------------------------------------------------------------------------------------------------------------------------------------
```

## Acknowledgement

- The asyncio was got using [pyo3-asyncio](https://github.com/awestlake87/pyo3-asyncio)
- The python-rust bindings were got from [the pyo3 project](https://github.com/PyO3)

## License

Licensed under both the [MIT License](./LICENSE-MIT) and the [APACHE (2.0) License](./LICENSE-APACHE)

Copyright (c) 2022 [Martin Ahindura](https://github.com/tinitto)

Copyright (c) 2017-present PyO3 Project and Contributors

## Gratitude

> "Come to Me (Christ Jesus), all you who labor and are heavy laden, and I will give you rest. 
> Take My yoke upon you and learn from Me, for I am gentle and lowly in heart, 
> and you will find rest for your souls. For My yoke is easy and My burden is light."
>
> -- Matthew 11: 28-30

All glory be to God.

<a href="https://www.buymeacoffee.com/martinahinJ" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "py-scdb",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "key-value-store,cache,disk-cache,database,localStorage",
    "author": null,
    "author_email": "Martin Ahindura  <team.sopherapps@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/78/84/eccdb92595e0b077b5e7ed15369581e64bdc315c8cae39bbb60950783bb7/py_scdb-0.2.0.tar.gz",
    "platform": null,
    "description": "# py_scdb\n\n[![PyPI version](https://badge.fury.io/py/py_scdb.svg)](https://badge.fury.io/py/py_scdb) ![CI](https://github.com/sopherapps/py_scdb/actions/workflows/CI.yml/badge.svg)\n\nA very simple and fast key-value *(as UTF-8 strings)* store but persisting data to disk, with a \"localStorage-like\" API.\n\nThis is the python version of the original [scdb](https://github.com/sopherapps/scdb)\n\n**scdb may not be production-ready yet. It works, quite well but it requires more rigorous testing.**\n\n## Purpose\n\nComing from front-end web\ndevelopment, [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) was always\na convenient way of quickly persisting data to be used later by a given application even after a restart.\nIts API was extremely simple i.e. `localStorage.getItem()`, `localStorage.setItem()`, `localStorage.removeItem()`\n, `localStorage.clear()`.\n\nComing to the backend (or even desktop) development, such an embedded persistent data store with a simple API\nwas hard to come by.\n\nscdb is meant to be like the 'localStorage' of backend and desktop (and possibly mobile) systems.\nOf course to make it a little more appealing, it has some extra features like:\n\n- Time-to-live (TTL) where a key-value pair expires after a given time\n- Non-blocking reads from separate processes, and threads.\n- Fast Sequential writes to the store, queueing any writes from multiple processes and threads.\n- Optional searching of keys that begin with a given subsequence. This option is turned on when `scdb::new()` is called.\n  Note: **When searching is enabled, `delete`, `get`, `compact`, `clear` become considerably slower.**\n\n## Dependencies\n\n- python +v3.7\n\n## Quick Start (Synchronous)\n\n- Install the package\n\n```shell\npip install py_scdb\n```\n\n- Import the `Store` and use accordingly\n\n```python\nif __name__ == \"__main__\":\n    from py_scdb import Store\n\n    # These need to be UTF-8 strings\n    records = [\n        (\"hey\", \"English\"),\n        (\"hi\", \"English\"),\n        (\"salut\", \"French\"),\n        (\"bonjour\", \"French\"),\n        (\"hola\", \"Spanish\"),\n        (\"oi\", \"Portuguese\"),\n        (\"mulimuta\", \"Runyoro\"),\n    ]\n    keys = [k for (k, _) in records]\n    \n    store = Store(\n        store_path=\"db\", \n        max_keys=1000000, \n        redundant_blocks=1, \n        pool_capacity=10, \n        compaction_interval=1800,\n        is_search_enabled=True,\n    )\n    \n    # inserting without ttl\n    for (k, v) in records[:3]:\n        store.set(k=k, v=v)\n    \n    # inserting with ttl of 5 seconds\n    for (k, v) in records[3:]:\n        store.set(k=k, v=v, ttl=5)\n            \n    # updating - just set them again\n    updates = [\n          (\"hey\", \"Jane\"),\n          (\"hi\", \"John\"),\n          (\"hola\", \"Santos\"),\n          (\"oi\", \"Ronaldo\"),\n          (\"mulimuta\", \"Aliguma\"),\n    ]\n    for (k, v) in updates:\n        store.set(k=k, v=v)\n    \n    # getting\n    for k in keys:\n        v = store.get(k=k)\n        print(f\"Key: {k}, Value: {v}\")\n\n    # searching without pagination\n    results = store.search(term=\"h\")\n    print(f\"Search 'h' (no pagination):\\n{results}\\n\")\n\n    # searching with pagination\n    results = store.search(term=\"h\", skip=1, limit=2)\n    print(f\"Search 'h' (skip=1, limit=2):\\n{results}\\n\")\n    \n    # deleting\n    for k in keys[:3]:\n        store.delete(k=k)\n      \n    # clearing\n    store.clear()\n      \n    # compacting (Use sparingly, say if database file is too big)\n    store.compact()\n```\n\n- Run the module\n\n```shell\npython <module_name>.py \n# e.g. python main.py\n```\n\n## Quick Start (Asynchronous)\n\n- Install the package\n\n```shell\npip install py_scdb\n```\n\n- Import the `AsyncStore` and use accordingly\n\n```python\nimport asyncio\nfrom py_scdb import AsyncStore\n\n# These need to be UTF-8 strings\nrecords = [\n    (\"hey\", \"English\"),\n    (\"hi\", \"English\"),\n    (\"salut\", \"French\"),\n    (\"bonjour\", \"French\"),\n    (\"hola\", \"Spanish\"),\n    (\"oi\", \"Portuguese\"),\n    (\"mulimuta\", \"Runyoro\"),\n]\nkeys = [k for (k, _) in records]\n\nasync def run_async_example():\n    store = AsyncStore(\n        store_path=\"db\", \n        max_keys=1000000, \n        redundant_blocks=1, \n        pool_capacity=10, \n        compaction_interval=1800,\n        is_search_enabled=True,\n    )\n    \n    # inserting without ttl\n    for (k, v) in records[:3]:\n        await store.set(k=k, v=v)\n    \n    # inserting with ttl of 5 seconds\n    for (k, v) in records[3:]:\n        await store.set(k=k, v=v, ttl=5)\n            \n    # updating - just set them again\n    updates = [\n        (\"hey\", \"Jane\"),\n        (\"hi\", \"John\"),\n        (\"hola\", \"Santos\"),\n        (\"oi\", \"Ronaldo\"),\n        (\"mulimuta\", \"Aliguma\"),\n    ]\n    for (k, v) in updates:\n        await store.set(k=k, v=v)\n    \n    # getting\n    for k in keys:\n        v = await store.get(k=k)\n        print(f\"Key: {k}, Value: {v}\")\n\n    # searching without pagination\n    results = await store.search(term=\"h\")\n    print(f\"Search 'h' (no pagination):\\n{results}\\n\")\n\n    # searching with pagination\n    results = await store.search(term=\"h\", skip=1, limit=2)\n    print(f\"Search 'h' (skip=1, limit=2):\\n{results}\\n\")\n    \n    # deleting\n    for k in keys[:3]:\n        await store.delete(k=k)\n      \n    # clearing\n    await store.clear()\n      \n    # compacting (Use sparingly, say if database file is too big)\n    await store.compact()\n\n\nasyncio.run(run_async_example())\n```\n\n- Run the module\n\n```shell\npython <module_name>.py \n# e.g. python main.py\n```\n\n## Contributing\n\nContributions are welcome. The docs have to maintained, the code has to be made cleaner, more idiomatic and faster,\nand there might be need for someone else to take over this repo in case I move on to other things. It happens!\n\nPlease look at the [CONTRIBUTIONS GUIDELINES](./docs/CONTRIBUTING.md)\n\nYou can also look in the [./docs](https://github.com/sopherapps/scdb/tree/master/docs) \nfolder of the [rust scdb](https://github.com/sopherapps/scdb) to get up to speed with the internals of scdb e.g.\n\n- [database file format](https://github.com/sopherapps/scdb/tree/master/docs/DB_FILE_FORMAT.md)\n- [how it works](https://github.com/sopherapps/scdb/tree/master/docs/HOW_IT_WORKS.md)\n- [inverted index file format](https://github.com/sopherapps/scdb/tree/master/docs/INVERTED_INDEX_FILE_FORMAT.md)\n- [how the search works](https://github.com/sopherapps/scdb/tree/master/docs/HOW_INVERTED_INDEX_WORKS.md)\n\n## Bindings\n\nscdb is meant to be used in multiple languages of choice. However, the bindings for most of them are yet to be\ndeveloped.\n\nFor other programming languages, see the main [README](https://github.com/sopherapps/scdb/tree/master/README.md#bindings)\n\n### How to Test\n- Clone the repo and enter its root folder\n\n```shell\ngit clone https://github.com/sopherapps/py_scdb.git && cd py_scdb\n```\n\n- Create a virtual environment and activate it\n\n```shell\nvirtualenv -p /usr/bin/python3.7 env && source env/bin/activate\n```\n\n- Install the dependencies\n\n```shell\npip install -r requirements.txt\n```\n\n- Install scdb package in the virtual environment\n\n```shell\nmaturin develop\n```\n\nFor optimized build use:\n\n```shell\nmaturin develop -r\n```\n\n- Run the tests command\n\n```shell\npytest --benchmark-disable\n```\n\n- Run benchmarks\n\n```shell\npytest --benchmark-compare --benchmark-autosave\n```\n\nOR the summary\n\n```shell\n# synchronous API\npytest test/test_benchmarks.py --benchmark-columns=mean,min,max --benchmark-name=short --benchmark-sort=NAME\n```\n\n## Benchmarks\n\nOn an average PC (17Core, 16 GB RAM)\n\n### Synchronous\n\n```\n\n--------------------------------------------------------- benchmark: 40 tests ---------------------------------------------------------\nName (time in us)                                                        Mean                     Min                     Max          \n---------------------------------------------------------------------------------------------------------------------------------------\nbenchmark_clear[sync_store]                                          100.3807 (127.70)        83.0300 (116.78)       311.0190 (6.71)   \nbenchmark_clear_with_search[sync_searchable_store]                   171.0275 (217.57)       133.6630 (187.99)       433.9330 (9.36)   \nbenchmark_compact[sync_store]                                    110,236.5678 (>1000.0)  106,076.8240 (>1000.0)  117,694.6450 (>1000.0)\nbenchmark_compact_with_search[sync_searchable_store]             111,180.5895 (>1000.0)  102,213.0760 (>1000.0)  127,501.7640 (>1000.0)\nbenchmark_delete[sync_store-hey]                                       3.7683 (4.79)           3.4310 (4.83)          82.3730 (1.78)   \nbenchmark_delete[sync_store-hi]                                        3.7664 (4.79)           3.4440 (4.84)          54.3430 (1.17)   \nbenchmark_delete_with_search[sync_searchable_store-hey]               20.7839 (26.44)         15.0590 (21.18)        122.8020 (2.65)   \nbenchmark_delete_with_search[sync_searchable_store-hi]                20.7891 (26.45)         14.7560 (20.75)        123.6690 (2.67)   \nbenchmark_get[sync_store-hey]                                          0.7861 (1.0)            0.7110 (1.0)           64.0260 (1.38)   \nbenchmark_get[sync_store-hi]                                           0.7877 (1.00)           0.7190 (1.01)          55.0760 (1.19)   \nbenchmark_get_with_search[sync_searchable_store-hey]                   0.7991 (1.02)           0.7220 (1.02)          49.2670 (1.06)   \nbenchmark_get_with_search[sync_searchable_store-hi]                    0.7899 (1.00)           0.7230 (1.02)          46.3370 (1.0)    \nbenchmark_paginated_search[sync_searchable_store-b]                   12.9258 (16.44)         12.1430 (17.08)        156.1050 (3.37)   \nbenchmark_paginated_search[sync_searchable_store-ba]                  12.9307 (16.45)         12.1640 (17.11)        115.5400 (2.49)   \nbenchmark_paginated_search[sync_searchable_store-ban]                  7.0885 (9.02)           6.6530 (9.36)          71.0410 (1.53)   \nbenchmark_paginated_search[sync_searchable_store-bar]                  6.9927 (8.90)           6.6160 (9.31)          82.8730 (1.79)   \nbenchmark_paginated_search[sync_searchable_store-f]                   13.2767 (16.89)         12.0420 (16.94)     21,129.0600 (455.99) \nbenchmark_paginated_search[sync_searchable_store-fo]                  12.9289 (16.45)         12.1860 (17.14)        439.6100 (9.49)   \nbenchmark_paginated_search[sync_searchable_store-foo]                 12.9970 (16.53)         12.3170 (17.32)        102.5070 (2.21)   \nbenchmark_paginated_search[sync_searchable_store-for]                  6.9771 (8.88)           6.6010 (9.28)          94.3090 (2.04)   \nbenchmark_paginated_search[sync_searchable_store-p]                    6.9895 (8.89)           6.5870 (9.26)         149.4620 (3.23)   \nbenchmark_paginated_search[sync_searchable_store-pi]                   6.9171 (8.80)           6.6080 (9.29)          69.2660 (1.49)   \nbenchmark_paginated_search[sync_searchable_store-pig]                  6.9475 (8.84)           6.5980 (9.28)          67.4790 (1.46)   \nbenchmark_paginated_search[sync_searchable_store-pigg]                 6.9717 (8.87)           6.6070 (9.29)         111.5230 (2.41)   \nbenchmark_search[sync_searchable_store-b]                             15.5810 (19.82)         14.6940 (20.67)        105.9520 (2.29)   \nbenchmark_search[sync_searchable_store-ba]                            15.6253 (19.88)         14.7780 (20.78)        107.5030 (2.32)   \nbenchmark_search[sync_searchable_store-ban]                           10.5073 (13.37)          9.9340 (13.97)        118.7900 (2.56)   \nbenchmark_search[sync_searchable_store-bar]                           10.8698 (13.83)          9.8550 (13.86)         97.3030 (2.10)   \nbenchmark_search[sync_searchable_store-f]                             20.7594 (26.41)         19.5820 (27.54)        116.9510 (2.52)   \nbenchmark_search[sync_searchable_store-fo]                            20.8279 (26.50)         19.6790 (27.68)        196.4210 (4.24)   \nbenchmark_search[sync_searchable_store-foo]                           15.7794 (20.07)         14.8380 (20.87)         94.2340 (2.03)   \nbenchmark_search[sync_searchable_store-for]                           10.4470 (13.29)          9.8640 (13.87)        128.4710 (2.77)   \nbenchmark_search[sync_searchable_store-p]                             10.3812 (13.21)          9.7870 (13.77)        102.3630 (2.21)   \nbenchmark_search[sync_searchable_store-pi]                            10.3460 (13.16)          9.8380 (13.84)         84.1260 (1.82)   \nbenchmark_search[sync_searchable_store-pig]                           10.4069 (13.24)          9.8400 (13.84)         78.9080 (1.70)   \nbenchmark_search[sync_searchable_store-pigg]                           6.9492 (8.84)           6.6000 (9.28)          86.0650 (1.86)   \nbenchmark_set[sync_store-hey-English]                                 10.6412 (13.54)          9.2990 (13.08)        110.4370 (2.38)   \nbenchmark_set[sync_store-hi-English]                                  10.7570 (13.68)          9.1760 (12.91)        100.9780 (2.18)   \nbenchmark_set_with_search[sync_searchable_store-hey-English]          37.2746 (47.42)         32.7920 (46.12)      8,647.2350 (186.62) \nbenchmark_set_with_search[sync_searchable_store-hi-English]           28.0105 (35.63)         25.5050 (35.87)        105.3320 (2.27)   \n---------------------------------------------------------------------------------------------------------------------------------------\n```\n\n## Acknowledgement\n\n- The asyncio was got using [pyo3-asyncio](https://github.com/awestlake87/pyo3-asyncio)\n- The python-rust bindings were got from [the pyo3 project](https://github.com/PyO3)\n\n## License\n\nLicensed under both the [MIT License](./LICENSE-MIT) and the [APACHE (2.0) License](./LICENSE-APACHE)\n\nCopyright (c) 2022 [Martin Ahindura](https://github.com/tinitto)\n\nCopyright (c) 2017-present PyO3 Project and Contributors\n\n## Gratitude\n\n> \"Come to Me (Christ Jesus), all you who labor and are heavy laden, and I will give you rest. \n> Take My yoke upon you and learn from Me, for I am gentle and lowly in heart, \n> and you will find rest for your souls. For My yoke is easy and My burden is light.\"\n>\n> -- Matthew 11: 28-30\n\nAll glory be to God.\n\n<a href=\"https://www.buymeacoffee.com/martinahinJ\" target=\"_blank\"><img src=\"https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png\" alt=\"Buy Me A Coffee\" style=\"height: 60px !important;width: 217px !important;\" ></a>\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A very simple and fast key-value store but persisting data to disk, with a 'localStorage-like' API for python.",
    "version": "0.2.0",
    "split_keywords": [
        "key-value-store",
        "cache",
        "disk-cache",
        "database",
        "localstorage"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "11c8a887b108c5388c7c800ff45a664df2198fe330ee017ecf70dde51cf4b0b2",
                "md5": "ba99a31ffe9371448d59d6b327250789",
                "sha256": "3bb0ffe76f05441375a711ca45f45502427311f1cc625651d06a1a622ff6151b"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "ba99a31ffe9371448d59d6b327250789",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 1159092,
            "upload_time": "2023-01-16T14:29:49",
            "upload_time_iso_8601": "2023-01-16T14:29:49.034117Z",
            "url": "https://files.pythonhosted.org/packages/11/c8/a887b108c5388c7c800ff45a664df2198fe330ee017ecf70dde51cf4b0b2/py_scdb-0.2.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c796ba6b8a0a2d59c9a839f0548c3b51994c914de25acebf0a89bcf5514a20bd",
                "md5": "4286df858512a2f301e52e54f91c131d",
                "sha256": "5d9cd17c377f8bca610028e7bb72a058a0baf4cbe43e31be7e5276ca0ad52351"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4286df858512a2f301e52e54f91c131d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 1489688,
            "upload_time": "2023-01-16T14:29:51",
            "upload_time_iso_8601": "2023-01-16T14:29:51.129183Z",
            "url": "https://files.pythonhosted.org/packages/c7/96/ba6b8a0a2d59c9a839f0548c3b51994c914de25acebf0a89bcf5514a20bd/py_scdb-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bec1ad39356469d3264fd6f92be225875279278547349fc75eda96a9a0f0105f",
                "md5": "bda6bf75a651d7a0a5fe0a041a73cd51",
                "sha256": "61c0b4d6676520370b5dda9163fbee992144f35fc7c917490ce8131c5f61a7a4"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "bda6bf75a651d7a0a5fe0a041a73cd51",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 428148,
            "upload_time": "2023-01-16T14:29:53",
            "upload_time_iso_8601": "2023-01-16T14:29:53.023541Z",
            "url": "https://files.pythonhosted.org/packages/be/c1/ad39356469d3264fd6f92be225875279278547349fc75eda96a9a0f0105f/py_scdb-0.2.0-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "02c2399c18abeeedb9ac13a37ef83daccd8af752da318e2e3b3be4a4595617ba",
                "md5": "b3c496dc20c375486a9a0574f0609d85",
                "sha256": "94cc7c2e54d944d5f00109b73948fc3ea55f606576186d224481635ff2743e62"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "b3c496dc20c375486a9a0574f0609d85",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 1159091,
            "upload_time": "2023-01-16T14:29:54",
            "upload_time_iso_8601": "2023-01-16T14:29:54.568880Z",
            "url": "https://files.pythonhosted.org/packages/02/c2/399c18abeeedb9ac13a37ef83daccd8af752da318e2e3b3be4a4595617ba/py_scdb-0.2.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1f5208c3301535b9196c9a0f6c3537edb8b3d8b5df92e065533ca8aa74d86728",
                "md5": "e4615a801a8c737e849ad17ec89427c5",
                "sha256": "0921d7dc2113c5d645b76039c3de94a5116b13375eb056a93239a955fd31b516"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e4615a801a8c737e849ad17ec89427c5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 1489691,
            "upload_time": "2023-01-16T14:29:56",
            "upload_time_iso_8601": "2023-01-16T14:29:56.128442Z",
            "url": "https://files.pythonhosted.org/packages/1f/52/08c3301535b9196c9a0f6c3537edb8b3d8b5df92e065533ca8aa74d86728/py_scdb-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "46d26a2cf75decc87188714a0a96bdac913912f6093c9535c254c3b16c328acf",
                "md5": "d4424ec3f116e8c4c0893a9034523023",
                "sha256": "371170a44b3af62e8e149ebd83de60769c5685ccd7ec8acb4c50f76b8beab3ac"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d4424ec3f116e8c4c0893a9034523023",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 428152,
            "upload_time": "2023-01-16T14:29:57",
            "upload_time_iso_8601": "2023-01-16T14:29:57.709252Z",
            "url": "https://files.pythonhosted.org/packages/46/d2/6a2cf75decc87188714a0a96bdac913912f6093c9535c254c3b16c328acf/py_scdb-0.2.0-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0a9fc9d24374c0d5ce8d51941114d7f186ae8fb318fd2754179a80729dd9a41b",
                "md5": "751756279dc81296d70b6440b64a84d4",
                "sha256": "2048ad43d525aa6aa739b93a350bbe3c46e4c8245a8bbad47cca89db9def35db"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "751756279dc81296d70b6440b64a84d4",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 1160708,
            "upload_time": "2023-01-16T14:29:59",
            "upload_time_iso_8601": "2023-01-16T14:29:59.243460Z",
            "url": "https://files.pythonhosted.org/packages/0a/9f/c9d24374c0d5ce8d51941114d7f186ae8fb318fd2754179a80729dd9a41b/py_scdb-0.2.0-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "026e23e3378b4a828765152fd50d911faae8bb1a4f6e93308bf2b631358923a2",
                "md5": "05bec2675c3a4ef92deaed5f2d36e351",
                "sha256": "03b07cd70d700b00901ebd0ff1c162c0afd7d33d6608d89e193dab379e9b554a"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "05bec2675c3a4ef92deaed5f2d36e351",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 1489692,
            "upload_time": "2023-01-16T14:30:01",
            "upload_time_iso_8601": "2023-01-16T14:30:01.315736Z",
            "url": "https://files.pythonhosted.org/packages/02/6e/23e3378b4a828765152fd50d911faae8bb1a4f6e93308bf2b631358923a2/py_scdb-0.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1b7fbe34d22ecc115390b43924e79c5659790e70e4eab244e0410893151b4458",
                "md5": "d96b998531dc35d99e251aa4519f8ded",
                "sha256": "61404520f60cc0cbd99ad80f7b9ef4425f5d8ac2aaa23e6002eaf7fcac1e1cac"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp37-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d96b998531dc35d99e251aa4519f8ded",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 428491,
            "upload_time": "2023-01-16T14:30:02",
            "upload_time_iso_8601": "2023-01-16T14:30:02.760071Z",
            "url": "https://files.pythonhosted.org/packages/1b/7f/be34d22ecc115390b43924e79c5659790e70e4eab244e0410893151b4458/py_scdb-0.2.0-cp37-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "751b1261f3b64d292e2a9c07e0edfd33e7b88eb960499b2824eab1f37824149f",
                "md5": "1352f5638230efed260b9f6472cc1e45",
                "sha256": "cecff31e2fca18f820ad47bbfbe07e50bf82f56e9ec92b5445edc09b6ce048c0"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "1352f5638230efed260b9f6472cc1e45",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 1160567,
            "upload_time": "2023-01-16T14:30:04",
            "upload_time_iso_8601": "2023-01-16T14:30:04.607041Z",
            "url": "https://files.pythonhosted.org/packages/75/1b/1261f3b64d292e2a9c07e0edfd33e7b88eb960499b2824eab1f37824149f/py_scdb-0.2.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "aa7259ecc79d0e1350ab74d09c0b954715ebeb718d246d75339a2cfca3b0dc6e",
                "md5": "d5ef0278bca07b523713a57471201e2c",
                "sha256": "70902143ef23c3e0235dbba45e2aa0d2b77ec243c3c5dc9fb5b435ecdd1e4086"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d5ef0278bca07b523713a57471201e2c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 1489734,
            "upload_time": "2023-01-16T14:30:06",
            "upload_time_iso_8601": "2023-01-16T14:30:06.411647Z",
            "url": "https://files.pythonhosted.org/packages/aa/72/59ecc79d0e1350ab74d09c0b954715ebeb718d246d75339a2cfca3b0dc6e/py_scdb-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3af812ed061364f6714ee6f2c1ea034148cf55e6101877f365bc3ab43215aafb",
                "md5": "e534f9a7b5e23adac04961a603c0f307",
                "sha256": "419b444f68beb35a76bcc864c3f69c3040056e896ab6f66795a780f04b1842c3"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e534f9a7b5e23adac04961a603c0f307",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 428480,
            "upload_time": "2023-01-16T14:30:08",
            "upload_time_iso_8601": "2023-01-16T14:30:08.523625Z",
            "url": "https://files.pythonhosted.org/packages/3a/f8/12ed061364f6714ee6f2c1ea034148cf55e6101877f365bc3ab43215aafb/py_scdb-0.2.0-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "847c443200648065b99ce495e1531bc3c541d55ac1772a874d6362d555916be9",
                "md5": "737ff5673007d7708d4667fad78d6804",
                "sha256": "fc1ba6c8e43c1dbd60ce57ea21f95f0e5a20ca3d737449e59d4ae5c9f7b5c8fd"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "737ff5673007d7708d4667fad78d6804",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 1159938,
            "upload_time": "2023-01-16T14:30:10",
            "upload_time_iso_8601": "2023-01-16T14:30:10.423469Z",
            "url": "https://files.pythonhosted.org/packages/84/7c/443200648065b99ce495e1531bc3c541d55ac1772a874d6362d555916be9/py_scdb-0.2.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "feaa496c7ed0e79f77382ada88fbc511bc6081c5aee88533d0d2600b11107d1d",
                "md5": "45e2f2f6be4bd0c18088635972458410",
                "sha256": "10a1cd64a0593d9a09ed763cd7d0db8758584f0f1c40029de63b4c40eadcdf70"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "45e2f2f6be4bd0c18088635972458410",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 1490180,
            "upload_time": "2023-01-16T14:30:11",
            "upload_time_iso_8601": "2023-01-16T14:30:11.987460Z",
            "url": "https://files.pythonhosted.org/packages/fe/aa/496c7ed0e79f77382ada88fbc511bc6081c5aee88533d0d2600b11107d1d/py_scdb-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "82b8b73ee955355df9c85cc021939e9d63e4308dfd968bff863f69e247021220",
                "md5": "1394f49e0621bf638f4ebf020f62a500",
                "sha256": "076debbd0f41364b199abee99038ce6bc36a38cbea9def2cc7ac7cbf80292fca"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1394f49e0621bf638f4ebf020f62a500",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 428486,
            "upload_time": "2023-01-16T14:30:13",
            "upload_time_iso_8601": "2023-01-16T14:30:13.989015Z",
            "url": "https://files.pythonhosted.org/packages/82/b8/b73ee955355df9c85cc021939e9d63e4308dfd968bff863f69e247021220/py_scdb-0.2.0-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2b378bb30ba0503881b1deef61e34db93900ec0619b7ce8688a8dde413855f75",
                "md5": "23173936725344284edaae839a139806",
                "sha256": "ce0ed29f48cd8c040f3fe9553aacdfd3dcbedb9d653cbde1f8035724e2bbd8f4"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "23173936725344284edaae839a139806",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 1493252,
            "upload_time": "2023-01-16T14:30:15",
            "upload_time_iso_8601": "2023-01-16T14:30:15.481325Z",
            "url": "https://files.pythonhosted.org/packages/2b/37/8bb30ba0503881b1deef61e34db93900ec0619b7ce8688a8dde413855f75/py_scdb-0.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5ee4c45d9da6685f64c9c09f8ac670765fc8e2a8f6a179c123c727fd8f4d10ae",
                "md5": "3b511d001e6f6f27219b14c982ad2535",
                "sha256": "fe263df63fe13bec4493721805cbd0c63a50fcf6e4d8e78376d82c77738fa743"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3b511d001e6f6f27219b14c982ad2535",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 1489590,
            "upload_time": "2023-01-16T14:30:17",
            "upload_time_iso_8601": "2023-01-16T14:30:17.007871Z",
            "url": "https://files.pythonhosted.org/packages/5e/e4/c45d9da6685f64c9c09f8ac670765fc8e2a8f6a179c123c727fd8f4d10ae/py_scdb-0.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d244e327af5ebdad00ad7ec301430d2c489b8ffd667211b107f985bf5aea6293",
                "md5": "840c3387f9321f1c654e9a2a78767d0c",
                "sha256": "17e6b370ff706a6b91266e5f34e9fefaded12f2dd58dc840ba1af4af536f6d7c"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "840c3387f9321f1c654e9a2a78767d0c",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 1490314,
            "upload_time": "2023-01-16T14:30:18",
            "upload_time_iso_8601": "2023-01-16T14:30:18.603461Z",
            "url": "https://files.pythonhosted.org/packages/d2/44/e327af5ebdad00ad7ec301430d2c489b8ffd667211b107f985bf5aea6293/py_scdb-0.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7884eccdb92595e0b077b5e7ed15369581e64bdc315c8cae39bbb60950783bb7",
                "md5": "7fa17a0e77020d290337ee25340f0a45",
                "sha256": "578b2f5d53d8ed68f8f93d343f9d7f8613ac60db0ca3213996e5df2cde6a7990"
            },
            "downloads": -1,
            "filename": "py_scdb-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "7fa17a0e77020d290337ee25340f0a45",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 32205,
            "upload_time": "2023-01-16T14:30:20",
            "upload_time_iso_8601": "2023-01-16T14:30:20.469529Z",
            "url": "https://files.pythonhosted.org/packages/78/84/eccdb92595e0b077b5e7ed15369581e64bdc315c8cae39bbb60950783bb7/py_scdb-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-01-16 14:30:20",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "py-scdb"
}
        
Elapsed time: 0.08076s