Skip to main content

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:

  1. Primarily human readable (not necessarily, writable) plain-text, especially for non-programmers
  2. Easy consumption by version control
  3. 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)

Source distribution for markstore 1.2.0
File Size Uploaded
markstore-1.2.0.tar.gz 6.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for markstore 1.2.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page