Development

Learn more about the versioning system

Learn about supported versions

Project Branches & Release Logic

This repo has a couple branches. Each branch focuses on a specific minor version of kms. You can tell which minor version it focuses on by looking at the branch name. For example, the branch ‘semver1.2.x’ focuses on updates to kms-semver1.2.x.... Versions that have reached EOL will be named as eol/semver.... Legacy versions like kms-v1.2/2026.01.04 will be named as releases/v[PyPi Version]. Otherwise, each branch will receive updates as usual. The default branch will always be the branch with the latest stable minor version.

Nightly builds will ALWAYS be available for each branch.

Installing the development pre-commit hook (kms-semver>=1.3.0a4)

Clone the repo:

git clone -b v1.3.0.20260724rc0 https://github.com/Boss-1s/key_multivalue_storage kms

Or, if you wish, you can fork this repo and create a codespace.

cd into the created folder, create a .venv (if you haven’t already) and install the hook:

cd kms
uv sync --dev
pre-commit install

Running all tests at once (kms-semver>=1.3.0a4)

Clone the repo:

git clone -b v1.3.0.20260724rc0 https://github.com/Boss-1s/key_multivalue_storage kms

Or, if you wish, you can fork this repo and create a codespace.

cd into the created folder, sync your venv, then run the test command:

cd kms
uv sync --dev
python test/

This may change in the near future, perhaps with a new test library in the first beta.

Note

If you forked the repo and opened a codespace instead of cloning, don’t run the cd commands.

python test/ <arg> (kms-semver>=1.3.0b0)

Aside from running all tests, you can also pass arguments to run a specific test. This will be actively developed to be easier to use.

Available Arguments

Note

All of the arguments listed below are case-insensitive.

a/all

Syntax: python test/ a or `python test/ all

Passing the argument a or all runs all main tests. It produces the exact same result as passing no arguments at all.

general

Syntax: python test/ general

Passing the argument general will execute the test test/test-general.py. No other tests will be run. This test is a general test that ensures that class Storage and its methods and other classes (Load, Edit, Delete) and their methods work properly. It does not check smoothness, speed, or Pythonicity; it only ensures everything works.

meta

Important

This test is still being developed and finished. It is not robust yet, please try not to rely on it.

Syntax: python test/ meta

Passing the argument meta will **execute the test test/test-meta.py. No other tests will be run. This test is a targeted test designed to ensure the new help() functions work and that the new metaclasses are in order and working.

diff <OLDTAG>

Important

This test requires a second argument.

Syntax: python test/ diff <OLDTAG> Example Usage: python test/ diff my_version_tag

Passing the argument diff will run the program test/diff.py. No other tests will be run. This program helps find breaking changes in your current working directory by comparing it against a Git tag, commit SHA, or branch, using Griffe. This Git tag/commit/branch must be passed as a second argument. (See example usage above)

help_shortcut

Warning

This test may be removed or renamed in the near future.

Syntax: python test/ help_shortcut

Passing the argument help_shortcut will run the following code snippet:

import key_multivalue_storage as kms
kms.help()

No other tests will run. This test is a targeted test to ensure that the library’s main help() method is visually correct by human determination.