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.0.0.tar.gz (5.5 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.0.0-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for markstore-1.0.0.tar.gz
Algorithm Hash digest
SHA256 46dee54f72a603902f5388ca83cd04ed714b41bbdbeb39270f2c259893f8c5a3
MD5 1a01d9820b6a47976dfa7f43c838b5b7
BLAKE2b-256 26093d1357d4a09b233458cfe3385f7e8748371b5a69f81ce3905aac4a6928d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for markstore-1.0.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.0.0-py3-none-any.whl.

File metadata

  • Download URL: markstore-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.9 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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 04522f798738163f170b15b5b2a20e73a17a9a4579c8158ea0a70c89c8badad3
MD5 5b8cb9b545def390160ffce943260509
BLAKE2b-256 d9418e648ada592317e89db34da7ece588e06c28a9f81e6492c35c788e8fe60f

See more details on using hashes here.

Provenance

The following attestation bundles were made for markstore-1.0.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