Skip to main content

A simple ORM-like utility for operating on local YAML files via Python dataclasses

Project description

ymlstash

A simple ORM-like utility for operating on local YAML files via Python dataclasses.

In the context of this library, a stash is a diretory in the filesystem that holds many .yml files that all adhere to the same structure.

ymlstash simplifies the management of such a basic database of files.

Install

Package is published on PyPI - https://pypi.org/project/ymlstash/

Install from pip or your favorite package manager:

$ pip install ymlstash

Usage

Start by defining your model as a dataclass:

from dataclasses import dataclass
from typing import ClassVar

@dataclass
class User:
    name: str
    age: int
    active: bool
    key: ClassVar[str] = "name"

Primary Keys

Each model must include a primary key that will be used as the entry filename to uniquely access each record.

The recommended way do to this is with the special key field which is used to denote that name should be used as the primary key field. If an object has name: "foo", it will be saved as foo.yml in the stash root directory.

Actions

Instantiate a new object:

user = User(name="yuval", age=42, active=True)

Save it to file:

from ymlstash import YmlStash

stash = YmlStash(User, "path/to/db")  # path can either be a string or Path() object
stash.save(user)

This will create a yuval.yml file in the stash root directory.

If the key field is not present on the dataclass, an explicit key must be passed:

stash.save(obj, key="custom-key")

Load from file:

user = stash.load("yuval")

List all keys existing in stash:

keys = stash.list_keys()

Delete a key:

stash.delete("foo")

Check for key existence:

stash.exists("foo")

Drop all files (careful, this deletes everything):

stash.drop()

License

MIT

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

ymlstash-1.2.1.tar.gz (3.4 kB view details)

Uploaded Source

Built Distribution

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

ymlstash-1.2.1-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file ymlstash-1.2.1.tar.gz.

File metadata

  • Download URL: ymlstash-1.2.1.tar.gz
  • Upload date:
  • Size: 3.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.8.9-arch1-1

File hashes

Hashes for ymlstash-1.2.1.tar.gz
Algorithm Hash digest
SHA256 48d6ed27f5c2f9d28a3ed78c082cf464c9fe29a139a1097bfd9911952583090c
MD5 24ad9af840ab0b356516ba27b68a9252
BLAKE2b-256 40f0d4c2449e5b06453c6851d04b88d1b2a9e6923c82e0de6671cd6591543a39

See more details on using hashes here.

File details

Details for the file ymlstash-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: ymlstash-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.8.9-arch1-1

File hashes

Hashes for ymlstash-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d96dbb9c706648dea5213da607bb42270fe9fdebc5cf4a50e869193df11f195e
MD5 4ab5c271dd38b119885b02427fdc78aa
BLAKE2b-256 32ab08942be2c9fa9c8455efa20ab546f29a7c25b2c715ed9001a1967f516b0d

See more details on using hashes here.

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