Skip to main content

Data management for python made easy

Project description

Rheel Data Management

Strictly-typed, human-readable data management for Python.

Rheel Data Management (RDM) provides a clean .rdm file format and Python API for structured, section-based data storage with enforced types.

It is designed for developers who want more structure and type safety than JSON or TOML --- without the complexity of a database.


✨ Features

  • ✅ Strict type enforcement
  • ✅ Native Python type support
  • ✅ Nested generics (list[int], dict[int, str])
  • ✅ Union types (str | int)
  • ✅ Mixed generics (list[str | int])
  • ✅ Section-based structure
  • ✅ Human-readable format
  • ✅ Atomic file saves (corruption protection)
  • ✅ Custom type registry
  • ✅ Supports datetime, date, time, and pathlib.Path

📦 Installation

pip install Rheel-Data-Management

📥 Import

import rheelDM

📄 Example .rdm File

[user123]
name  : str           = "CoCo"
score : int           = 42
tags  : list[str]     = ["admin", "tester"]
prefs : dict[int,str] = {1: "dark", 2: "light"}

Clean. Typed. Readable.


🚀 Basic Usage

Create and Save

import rheelDM

data = rheelDM.Obj()

user = data.section("user123")
user.set("name", str, "CoCo")
user.set("score", int, 42)
user.set("tags", list[str], ["admin", "tester"])
user.set("prefs", dict[int, str], {1: "dark", 2: "light"})

data.save("botdata.rdm")

Load Data

loaded = rheelDM.Obj.load("botdata.rdm")

user = loaded.section("user123")

print(user.get("name"))   # "CoCo"
print(user.get("score"))  # 42

🧠 Supported Types

Native Python Types

  • str
  • int
  • float
  • bool
  • list[T]
  • set[T]
  • tuple[T]
  • dict[K, V]
  • Nested generics (e.g. list[dict[int, str]])
  • Union types (str | int)
  • Mixed generics (list[str | int])

Date & Path Types

  • datetime
  • date
  • time
  • Path

Example:

from datetime import datetime
from pathlib import Path

data.section("user").set("last_login", datetime, datetime.now())
data.section("user").set("config_path", Path, Path("config/settings.txt"))

🧩 Custom Type Registry

You can register your own types globally.

import rheelDM

class Color:
    def __init__(self, hex_code: str):
        self.hex = hex_code

rheelDM.TypeRegistry.register(
    "Color",
    Color,
    lambda v: f'"{v.hex}"',
    lambda v: Color(v.strip('"'))
)

Now you can use it like any native type:

data.section("settings").set("theme", Color, Color("#ff8800"))

🛡 Why RDM Instead of JSON?

Strict Typing

JSON does not enforce types.
RDM validates everything on write and load.

Python-Native Types

JSON cannot store: - datetime - Path - set - tuple - Union types - Nested generics

RDM can.

Cleaner Structure

Section-based format keeps large files organized and readable.

Human Editable

Minimal syntax:

key : type = value

🎯 Ideal Use Cases

  • Game save systems
  • Discord bot data
  • Typed configuration systems
  • CLI tool configs
  • Small to medium persistent data storage

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

rheel_data_management-1.3.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

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

rheel_data_management-1.3-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

Details for the file rheel_data_management-1.3.tar.gz.

File metadata

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

File hashes

Hashes for rheel_data_management-1.3.tar.gz
Algorithm Hash digest
SHA256 bb4ac692c37c0875e1743a08b75ca27158e734a9b8e81bed3138fa56c5adfffd
MD5 404d61223c577be67f3d182017f0588b
BLAKE2b-256 02f863f9f9dc364a3e613edf3993acd96ef35d0fac984280b5371c5b8a40de21

See more details on using hashes here.

Provenance

The following attestation bundles were made for rheel_data_management-1.3.tar.gz:

Publisher: python-publish.yml on CoCo-R38/Rheel_Data_Management

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

File details

Details for the file rheel_data_management-1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for rheel_data_management-1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f750dd1ff3e5e9e4e78001dafec9fa19eef9cf927e3b801e18269d52d3bc0955
MD5 e8f49ab4cc6ad1db6fa579d17c257cca
BLAKE2b-256 040d9fd8a9724eb4a06ce882252b42d589abe76b15fd41caff058e131107b482

See more details on using hashes here.

Provenance

The following attestation bundles were made for rheel_data_management-1.3-py3-none-any.whl:

Publisher: python-publish.yml on CoCo-R38/Rheel_Data_Management

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