Roadmap

Tip

This is the roadmap for kms. As time goes on, more and more items and information will be added to this roadmap.

Learn more about the versioning system

Learn about supported versions

The “No” List

kms will NEVER have the following features:

Accepted Issues

See bugs here.

See refactorization requests here.

See feature requests here.

Full Roadmap

Tip

See this page for more information about the release cycles.


kms-semver1.3.2

Stable Release tag: v1.3.2.20260930

Features

No new features will be introduced in this update.

Bug Fixes

Graceful Deprecation cycle 1.3.2

Nothing to be deprecated in this version.


kms-semver1.3.3

Stable Release tag: v1.3.3.20261107

Important

This major patch coincides with the 3rd alpha release of kms-semver1.4, kms-v1.4.0a2/2026.11.07.

Features

No new features will be introduced in this update.

Bug Fixes

Graceful Deprecation cycle 1.3.3

Note

kms-semver1.4.0a2 has its own list of deprecations.


kms-semver1.3.4

Stable Release tag: v1.3.4.20261205

Important

This major patch coincides with the 1st beta release of kms-semver1.4, kms-v1.4.0b0/2026.12.05.

Features

No new features will be introduced in this update.

Bug Fixes

Graceful Deprecation cycle 1.3.4

Note

kms-semver1.4.0b0 has its own list of deprecations.


kms-semver1.3.5

Stable Release tag: v1.3.5.20261221

Important

This major patch coincides with the 3rd beta release of kms-semver1.4, kms-v1.4.0b2/2026.12.21.

Features

No new features will be introduced in this update.

Bug Fixes

Graceful Deprecation cycle 1.3.5

Note

kms-semver1.4.0b2 has its own list of deprecations.


kms-semver1.3.6

Stable Release tag: v1.3.6.20261107

Important

This major patch coincides with the stable release of kms-semver1.4.0.

Important

This update will commence the beginning of LTS for kms-semver1.3.x.

Features

No new features will be introduced in this update.

Bug Fixes

This update will not have a deprecation cycle.


kms-semver1.4.0

Stable Release tag: v1.4.0.20260103

Release Plan

Warning

The dates below are subject to change.

(there may be more rcs in between; however, that is very unlikely.)

TL;DR 4 Alphas, 3 Betas, and 1 Release Candidate are planned.

Features

Features

I’m gonna have to sort these at some point….docs is harder than coding the module itself trust

Bug Fixes

Graceful Deprecation cycle 1.4.0


kms-semver1.5.0

Stable Release tag: v1.5.0.20270630

Release Plan

I have no idea. Sorry.

Features

Bug Fixes

Graceful Deprecation cycle 1.5.0


kms-semver1.6.0

Stable Release tag: v1.6.0.20280108

Caution

This will be the last update in the kms-semver1.x series. If you are still using this series of updates by then, you should switch over to kms-semver2.x instead.

Features

Bug Fixes

This update will not have a deprecation cycle, due to it being the last version in the kms-semver1.x series.


kms-semver2.0.0

Stable Release tag: v2.0.0.20270817

kms-semver2.0.0 is an upcoming, backwards-incompatible update planned for release on August 17th, 2027, exactly two years after the release of kms-v1.0.0/2026.08.17. This update will bring many changes and features, including the ability to store and read JSON data with SQL querying, store data in YAML files, MultiStorage which makes nesting Storage in Storage easier and more Pythonic, and more. All of these features will be built up slowly in the kms-semver1.x releases leading up to this version.

Note

These lists is incomplete. As time passes and the release gets closer, more things will be added in the lists below.

Important

kms-semver2.0.0 will be built off of a version of kms-semver1.5.0, though this may not matter because the library will have a complete rewrite.

Warning

These are all planned features and projected (breaking) changes; they are not guaranteed to make it into the final release.

Breaking Changes

# before v2.0.0
import key_multivalue_storage as kms
from key_multivalue_storage import Storage
# after v2.0.0
import kms
from kms.storage import Storage

New Features

MultiStorage

MultiStorage will be a new class that takes the original Storage object a step further, allowing for key-multivalue pairs INSIDE a key-multivalue pair!

The original Storage object only supported this:

{
    "key1": {
        "subkey1": "val1",
        "subkey2": "val2"
    }
}

To store another key-multivalue pair, you would’ve needed a Storage object passed in another’s **kwargs argument to allow that, which would have been very messy.

MultiStorage makes that easier by taking in an arbitrary number of Storage arguments and combining them behind-the-scenes to allow key-multivalue pairs in a key-multivalue pair.

from kms.storage import MultiStorage
# Currently, MultiStorage's usage is planned to look like this
MultiStorage(top_lv_key, *storages, **kwargs)
# When typing in this...
MultiStorage("key1", Storage("subkey", subsubkey="val1", subsubkey2="val2"), subkey2="val3")

It would return a MultiStorage instance. You can then cast it to a dict, which would make it look like this:

{
   "key1": {
        "subkey": {
            "subsubkey": "val1",
            "subsubkey2": "val2"
        },
        "subkey2": "val3"
    }
}

Important Changes

Method Refactorization

Lots of methods will be getting complete refactors. What I mean is that for some methods, their arguments will no longer be positional-based, meaning you must type out the whole argument name and equals to set it. One planned method that will have this change is Delete.all().

class Delete(metaclass=meta._DeleteMeta):
    ...
    # Old method signature
    def all(file_path: str, warn: bool=True) -> None: ...

# This meant you could call the arguments by position as well.
Delete.all("my_file.json", False)
class Delete(metaclass=meta._DeleteMeta):
    ...
    # New method signature
    def all(file_path: str, *, warn: bool=True) -> None: ...

# In kms-semver2.0, you **have** to type `warn=` for this to work.
Delete.all("my_file.json", warn=False)

Another, proposed by #74, has nothing to do with arguments, but with the underlying logic of the method itself. Instead of returning self.values when using the with keyword, we would instead return the whole Storage object - effectively replacing the deprecated auto_delete_self attribute and Storage.store(instant_delete: bool) argument.

These types of refactorizations - whether it’s argument positioning, logic, or just a tweak of a variable name - will prove how each change makes kms more and more memory-efficient and lightweight.

See all other new features in the release notes.

« Back to home