10x Platform Core
Project description
py10x-core
Unified, identity-driven, dependency-aware object model for Python
—with lazy dependency graph, persistence, automatic UI editors, and more
🚀 Why py10x?
Standard Python objects have no shared identity layer and no automatic dependency tracking.
py10x-core turns them into a coherent, dependency-aware graph of connected identifiable objects — a single shared layer that feels unified across modules, files and processes.
Key superpowers:
-
Global Identity & Sharing
Objects with identical ID Traits are automatically the same logical entity.
Change a value in one place → every reference sees the update instantly (global cache). -
Lazy Dependency Graph
Computed traits (derived values) are calculated only when accessed.
Dependencies are tracked automatically — no manual invalidation, no recompute storms. -
Deep Persistence
Complex nested object graphs saved to Traitable Store (MongoDB or in-memory).
Built-in versioning, history tracking, transparent lazy loading. -
Automatic UI Editors
Define your data model once → get native two-way editors for Rio (web) or Qt (desktop).
No manual UI code for viewing/editing traitables.
This approach dramatically reduces boilerplate while giving you fine-grained control over computation timing and persistence behavior.
🏁 Hello World
By default, the Traitable constructor accepts only ID traits. For how the framework uses identity and storage to resolve or create instances, see How Traitables Are Created in the Getting Started guide.
from core_10x.traitable import Traitable, T, RT
from core_10x.exec_control import GRAPH_ON, CACHE_ONLY
class Developer(Traitable):
handle: str = T(T.ID) # ← identity trait → global sharing
coffee_cups: int = T(default=0) # persistent
energy: int = RT() # lazy-computed
def energy_get(self) -> int:
return self.coffee_cups * 20
# In-memory mode (no storage), dependency graph on.
with CACHE_ONLY(), GRAPH_ON():
dev = Developer(handle="ghost")
dev.coffee_cups = 5
print(dev.energy) # 100 ← computed lazily on first access
dev.coffee_cups = 6
print(dev.energy) # 120 ← recomputed due to dependency change
# Same identity → same object
dev2 = Developer(handle="ghost")
print(dev2.energy) # 120 ← shared via global cache
Want automatic persistence, per-class stores, store unions, querying, nested objects, UI generation, verifiers, and more? → Dive into GETTING_STARTED.md for the full technical manual.
🧠 When Should You Use py10x?
py10x-core is a good fit when:
- Your application has rich domain models with derived fields
- You need deterministic object identity
- You want automatic dependency tracking
- You want persistence and UI derived from the same model
It may be overkill for simple scripts, stateless APIs, or lightweight validation-only use cases.
If your system has evolving state and relationships, py10x-core removes a large amount of manual synchronization code.
🔍 How Is This Different?
Unlike dataclasses or Pydantic:
- Objects have deterministic identity based on ID traits
- Identical identity traits resolve to the same logical entity
- Derived fields are lazily computed and dependency-tracked
Unlike traditional ORMs:
- Identity is not tied to a database row
- Persistence is optional and pluggable
Unlike reactive frameworks:
- Dependencies are tracked automatically
- Computation is lazy by default
🤝 Contact & Support
- Getting Started: GETTING_STARTED.md — Full technical manual.
- Installation: INSTALLATION.md — Environment setup.
- Contributing: CONTRIBUTING.md — How to contribute.
- Discord: Join the 10x Community
- Security: Report vulnerabilities to security@10x-software.org
- Project e-mail: py10x@10x-software.org
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py10x_core-0.1.15rc1.tar.gz.
File metadata
- Download URL: py10x_core-0.1.15rc1.tar.gz
- Upload date:
- Size: 969.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56257c78234ce9cf081db1805d273669cac6ec15933b0966ff068a858cd3d2b6
|
|
| MD5 |
06f2efca6a2884704f451886b97cddc7
|
|
| BLAKE2b-256 |
03cc4e69a3ea3d9df083a7da2d03964921bf78ab3353976e0f7ca27b61b6dbcc
|
File details
Details for the file py10x_core-0.1.15rc1-py3-none-any.whl.
File metadata
- Download URL: py10x_core-0.1.15rc1-py3-none-any.whl
- Upload date:
- Size: 322.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd8ec1f99d6c6d9a028b8d5f3048c234979367486fb9126945ad48b82ce08d8b
|
|
| MD5 |
0fae212d4e2e66fb5f45932cc74b7805
|
|
| BLAKE2b-256 |
6d9f4ab1d5519d3a7bc338de64b3fcd79f604844ed92476363f8506689548b81
|