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.2.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.2-py3-none-any.whl (16.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rheel_data_management-1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 416529680d4f5672faae2c371e8a7415ecf721aaf8ac03d62d6a9eac4bd97ee6
MD5 6bab19f8177eca2618410ad7ec8ac503
BLAKE2b-256 ca3e28a17da5f4469ee2b3bd129eb2ecabacceafcda8dc2f82a2f6aa547ce67c

See more details on using hashes here.

Provenance

The following attestation bundles were made for rheel_data_management-1.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for rheel_data_management-1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e7d46e395045b12939b550a83fc1dc5ec5d42853111e9514002ac280166d570a
MD5 87e1add29bc4fffdfbf6e9fa0dca1f4e
BLAKE2b-256 452f2fabf4d2e344fd4d022bf638143a2f66bdae8a66262059e6d57d4f6d8c4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rheel_data_management-1.2-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