Skip to main content

The easiest way to create type-safe, in-memory datastores for your models.

Project description

easydatastore - Create type-safe, in-memory datastores

Requirements

  • Python 3.11+

Install

pip install easydatastore

Usage

If you want to prototype a web application quickly and just need a way to validate your mock data, you can use easydatastore to create an in-memory datastore for your models, directly out of the box.

Features:

  • In-memory tables for your models with easydatastore.Table, with a familiar pydantic-flavored syntax and ORM-like API.
  • Enforce uniqueness constraints with Column(unique=True)
  • Use indexing for faster lookups with Column(index=True)
  • IDE-friendly type hints ensure your coding experience is type-safe.

Example

import easydatastore.exceptions
from easydatastore import Column, Table


class Person(Table):
    name: str = Column(primary_key=True)
    email: str | None = Column(unique=True, default=None)
    family_name: str
    age: int


Person(name="Snap", family_name="Krispies", email="snap@example.com", age=92)
Person(name="Crackle", family_name="Krispies", age=92)
Person(name="Pop", family_name="Krispies", age=92)
Person(name="Tony", family_name="Tiger", email="tony@example.com", age=72)
Person(name="Cap'n", family_name="Crunch", age=53)

# retrieve an instance from the table using the .get() method and a primary key value
tony = Person.get("Tony")
print(tony)  # Person(name='Tony', email=None, family_name='Tiger')

# or query your table using the .filter() method
print([person.name for person in Person.filter(family_name="Krispies")])  # ["Snap", "Crackle", "Pop"]
print([person.name for person in Person.filter(lambda person: person.age < 90)])  # ["Tony", "Cap'n"]

# delete instances from the table with the .delete() method
Person.delete(Person.get("Crackle"))
print([person.name for person in Person.all()])  # ["Snap", "Pop", "Tony"]

# easydatastore will validate uniqueness for you... these operations will raise exceptions:
try:
    tony.email = Person.get("Snap").email
except ValueError as e:
    print(e.args[0])  # ValueError: Value 'snap@example.com' for field 'email' is not unique

try:
    Person(name="Snap", family_name="Rice", age=1)
except easydatastore.exceptions.DuplicateUniqueFieldValueError as e:
    print(e.args[0])  # DuplicateUniqueFieldValueError

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

easydatastore-0.1.7.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

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

easydatastore-0.1.7-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file easydatastore-0.1.7.tar.gz.

File metadata

  • Download URL: easydatastore-0.1.7.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.1 Darwin/23.5.0

File hashes

Hashes for easydatastore-0.1.7.tar.gz
Algorithm Hash digest
SHA256 6aeaa59eab51b222fea3ac2c0a9f96c0161cf65bf3ec287ad99fea16794eeacd
MD5 25dcd4f0cbb157397f01e6bd71189e5f
BLAKE2b-256 f3bdf9ed375dfd99c92e7e2e703a813f3c74b634d2d16244ff06f9204677d57a

See more details on using hashes here.

File details

Details for the file easydatastore-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: easydatastore-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.1 Darwin/23.5.0

File hashes

Hashes for easydatastore-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 72720bf0d661b8150df05676d40b34cad24223463eb02b2d59b5037a863ba348
MD5 28ad767f43fc7b9898f80b8c86a062d8
BLAKE2b-256 db87c41654b2974d2e29257cc6dea0616ec64cc9cea27ace92ce90343c7009de

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