Skip to content

About

A simple JSON wrapper library that allows the JSON storage of one key to multiple values.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Latest commit

Β 

History

751 Commits

Folders and files

Key to Multivalue Storage - kms

kms - a tiny side project tuned into a library.

kms logo

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.4.0a0

Important

kms-semver1.4.x is officially built off of kms-v1.3.1/2026.08.12, and partially off of kms-v1.3.2/2026.09.30.

πŸ’‘ Features & Automation

  • Public API Cleanup: Added atpublic-based visibility markers across the package and type stubs for a cleaner public/private API surface.
  • Storage Improvements: Added Storage.update() and support for slice deletion with del storage[start:stop].
  • Testing Improvements: Expanded kms.help() coverage and folded older issue-related tests into the main suite.
  • Release Automation: Improved nightly and release workflows so version generation and branch validation are more reliable.

πŸͺ² Bug Fixes

  • Slice Deletion Fix: Corrected Storage.__delitem__ so integer and slice deletion follow the correct logic.
  • Workflow Fixes: Resolved branch detection, deployment checks, and syntax issues in the automation workflows.
  • Compatibility Fixes: Fixed atpublic metadata/type errors and cleaned up stale storage tests.

⏰ Infrastructure & CI

  • Branch & Deployment Stability: Improved validation for supported semver1.x branches and pull request deployment checks.
  • Python Test Environment: Updated the test runner to CPython 3.15.0.
  • Dependency Refresh: Updated linting, docs, and test tooling across the semver1.4.x branch.

Important

Forward-ports from semver1.3.x are not included here. Check the semver1.3.x branch's README for specific changes there.

πŸ”— Working Changelog


Badges

Download

CPython Package Beta Nightly

Status

Release Tests

Quality gate

Info & Docs

Changelog Latest Version Documentation License Contributing Security


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 for testing and Griffe for finding breaking changes. You can see every test script in the repo's test folder.

See more about tests here.

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 Storage instance.
>>> 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!

Have a GREAT day/night! :)

About

A simple JSON wrapper library that allows the JSON storage of one key to multiple values.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages