Skip to main content

Markdown as plain-text data storage

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

markstore-1.2.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

markstore-1.2.0-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file markstore-1.2.0.tar.gz.

File metadata

  • Download URL: markstore-1.2.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for markstore-1.2.0.tar.gz
Algorithm Hash digest
SHA256 bdfadca8a62f7c05f872fd1a331d34bea10f5e265a9a67a150a33b0faa0a3aa5
MD5 3d80b4655d070da92ea70d42f96c7b1a
BLAKE2b-256 c215c49427c0ca12683e8136a883d875bac525eb15be4a1963ffac2155dfa2ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for markstore-1.2.0.tar.gz:

Publisher: dist.yaml on alagyn/markstore

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file markstore-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: markstore-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for markstore-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1d024a1b3cac349b385c81a001b8284fd236fcbbef8d426c47f9e189c8cff7c6
MD5 a45eae30700f5d4518ccb3da9480c249
BLAKE2b-256 d260911e9ed0c1bbe6c3bdc5011f30479e1ed0e3d991fa2e2f7aca15673b2b6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for markstore-1.2.0-py3-none-any.whl:

Publisher: dist.yaml on alagyn/markstore

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page