markstore
Markdown as plain-text data storage
But Why?
Why use this when there are numerous alternatives for data storage and serialization?
Check if your use-case meets the following criteria:
- Primarily human readable (not necessarily, writable) plain-text, especially for non-programmers
- Easy consumption by version control
- Easy export, or a desire to prevent vendor lock-in to your application
What this is
A simple, json-like interface to serialize basic objects to and from a markdown file.
What this isn't
- A generic markdown processing/generator tool
- A configuration language
It is a non-goal of this library to be tolerant of human error. The intended use case is machine-to-machine serialization and the occasional export to a human.
Example
To File
import markstore
# Serialize
myObject = {
"myKey": "myData"
}
with open("out.md", mode='wb') as f:
markstore.dump(myObject, f)
# Deserialize
with open("out.md", mode='rb') as f:
myObject = markstore.load(f)
To String
import markstore
# Serialize
myObject = {
"myKey": "myData"
}
myStr = markstore.dumps(myObject)
# Deserialize
myObject = markstore.loads(myStr)
Markdown Object Specification
Lists
["one", "two", "three", ["four", "five"], "six"]
Translates to
- one
- two
- three
- - four
- five
- six
Dicts
{
"key1": "data1",
"key2": "data2",
"key3": {
"subkey1": "subdata1",
"subkey2": "subdata2"
}
}
Translates to
# key1
data1
# key2
data2
# key3
## subkey1
subdata1
## subkey2
subdata2
Combinations
{
"Key1":
"My Data",
"Data": [{
"Subkey1": "Subdata1"
}, {
"Subkey2": {
"Subkey2.1": "Subdata2.1",
"Subkey2.2": "Subdata2.2"
}
}],
"Key2":
"Other data"
}
# Key1
My Data
# Data
- ## Subkey1
Subdata1
- ## Subkey2
### Subkey2.1
Subdata2.1
### Subkey2.2
Subdata2.2
# Key2
Other data
Inner dictionary keys are always prefixed by an increasing number of #, even if the key is within a list
Metadata
Release files for markstore 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| markstore-1.2.0.tar.gz | 6.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| markstore-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.2 kB
Release files / markstore-1.2.0.tar.gz
| Download URL | markstore-1.2.0.tar.gz |
|---|---|
| Size | 6.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bdfadca8a62f7c05f872fd1a331d34bea10f5e265a9a67a150a33b0faa0a3aa5
|
|
BLAKE2b-256 checksum How to use checksums |
c215c49427c0ca12683e8136a883d875bac525eb15be4a1963ffac2155dfa2ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 14, 2026.
Transparency logRelease files / markstore-1.2.0-py3-none-any.whl
| Download URL | markstore-1.2.0-py3-none-any.whl |
|---|---|
| Size | 5.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d024a1b3cac349b385c81a001b8284fd236fcbbef8d426c47f9e189c8cff7c6
|
|
BLAKE2b-256 checksum How to use checksums |
d260911e9ed0c1bbe6c3bdc5011f30479e1ed0e3d991fa2e2f7aca15673b2b6a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Feb 14, 2026.
Transparency log