Key to Multivalue Storage - kms
kms - a tiny side project tuned into a library.
JSON storage wrapper and editor. Created with love by Boss_1s.
Once upon a time, this was just a small project to solve a problem: the over-steep learning curve for scratchattach's database functionality. Now, I have decided to make it a library, something with humble beginnings with big hopes in its future.
This is, after all, the greatest piece of a CPython progam I have made. ;)
🚀 What's New in kms-semver1.3.2
💡 Features & Automation
- Version Bumping: Added a post-release script and automatic reminders to bump development versions (#153).
- Release Verification: Added automated checks to ensure the latest test deployment succeeds before completing a release (#153).
- Verbose Logging: Expanded release automation output for easier debugging.
🪲 Bug Fixes
- Workflow Tagging: Forced release tags onto the specific commits that modify the version number.
- Release Categorization: Corrected development builds to register as
pre-alphainstead ofbeta. - Fail-Safe Checks: Blocked scripts from continuing silently if required version environment variables are missing.
- Formatting: Fixed the layout format for release commit messages.
⏰ Infrastructure & CI
- Backports: Integrated multiple workflow stability fixes and commits backporting from the
semver1.4.xbranch. - Permissions: Expanded release script access to read Actions runs and automatically generate version-bump issues.
- Security & Actions: Pinned third-party workflow actions (
webfactory/ssh-agent,astral-sh/setup-uv,softprops/action-gh-release) to specific commits.
📢 Upcoming Roadmap
- v1.3.3 Patch: Expected November 7, 2026 (focusing on upstream backports and refactors).
- v1.4.0 Major: Alpha scheduled for October 12, 2026, with a stable target of early January 2027.
Badges
Download
Status
Info & Docs
Installation
Install with pip:
pip install -U key-multivalue-storage
Or, download the latest version of the .whl file in the releases page
You can also choose to download the development environment alongside the package:
pip install -U key-multivalue-storage[dev]
The development package includes Pylint and Griffe for testing and finding breaking changes. You can see the tests in the test folder.
Usage
- Create a Storage object to wrap the data to be stored:
>>> from key_multivalue_storage import Storage
>>> my_db = Storage("my_top_level_key", mysubkey="myvalue", myothersk="anotherval")
- To store the object, use
Storage.store().
>>> my_db.store("database.json")
Data stored successfully in 'database.json'.
- You can change certain global variables for each
Storageinstance.
>>> Storage.indent = 4 # indent size of JSON files
>>> Storage.encode = True # Whether to encode stored values
- Load the data back into a Storage object:
>>> import key_multivalue_storage as kms
>>> loaded_db = kms.Load.by_key("database.json", "my_top_level_key") # You can also use Storage.Load.by_key()
>>> loaded_db = my_db
True
- You can also cast a Storage object into a dictionary!
>>> dict_db = dict(my_db)
>>> dict_db
{"my_top_level_key":{"mysubkey":"myvalue","myothersk":"anotherval"}}
There's a lot more to this library that what meets the eye.
See the full documentation here!
Contribute
Roadmap
Report a Bug
Have a GREAT day/night! :)
Metadata
Release files for key-multivalue-storage 1.3.2.20260930
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| key_multivalue_storage-1.3.2.20260930.tar.gz | 53.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| key_multivalue_storage-1.3.2.20260930-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 93.1 kB
Release files / key_multivalue_storage-1.3.2.20260930.tar.gz
| Download URL | key_multivalue_storage-1.3.2.20260930.tar.gz |
|---|---|
| Size | 53.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b6edb12f2d5dd85375e3d189fc3d39152a1612af91978049ee741a4d25f5f5ef
|
|
BLAKE2b-256 checksum How to use checksums |
b9a233b2082fdbaa228841c8f246a5066bac83aa9a1ef9e3b12c8d74b50c8fc9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency logRelease files / key_multivalue_storage-1.3.2.20260930-py3-none-any.whl
| Download URL | key_multivalue_storage-1.3.2.20260930-py3-none-any.whl |
|---|---|
| Size | 39.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
91acd29f525e84bff3953192b0bbe138d1bdf67c11909335f2a08c6ddd31de23
|
|
BLAKE2b-256 checksum How to use checksums |
36952e5d7d1a6087c8994bc38aa1d48d445a4105881de3ecbba175fd602b33bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.
Transparency log