AI-native framework with composable primitives
Project description
WinterForge
Async-first framework for composable data primitives.
Quick Start
from winterforge.frags import Frag
from winterforge.frags.registries import UserRegistry
from winterforge.plugins import discover_plugins, StorageManager
# Initialize
discover_plugins()
StorageManager.load_bootstrap()
# Create user
users = UserRegistry()
user = await users.create(
username='alice',
email='alice@example.com',
password='secure123'
)
# Query
user = await users.get('alice@example.com') # Email resolution
active = await users.verified_only().all() # Filter
# Create Frag
post = Frag(
affinities=['post', 'published'],
traits=['titled', 'timestamped', 'sluggable']
)
post.set_title("Hello World") \
.generate_slug("Hello World")
await post.save()
Core Concepts
Frags
Composable data primitives built from:
- Affinities - What it IS (tags:
['user', 'admin']) - Traits - What it CAN DO (behavior:
['titled', 'persistable']) - Aliases - Flexible metadata (relations:
{'employee_id': '12345'})
Registries
Query collections of Frags by composition.
users = UserRegistry()
admins = await users.with_role('admin').all()
Storage
SQLite, PostgreSQL, YAML, Env backends.
storage = StorageManager.get('sqlite', db_path='app.db')
await storage.save(frag)
Installation
pip install -e .
Testing
# All tests
pytest
# Core tests (no PostgreSQL)
pytest --ignore=tests/frags/storage/test_postgresql_integration.py
Expected: 581 passing, 1 warning (JWT dev secret)
Documentation
- Quick Start:
QUICKSTART.md- 5-minute introduction - Glossary:
GLOSSARY.md- Complete terminology reference - Handoff:
HANDOFF.md- Recent changes and architecture - Examples:
examples/pkm/- Personal knowledge management app
Project Structure
winterforge/
├── frags/ # Frag core
│ ├── base.py # Frag class
│ ├── registry.py # FragRegistry
│ ├── traits/ # Built-in traits
│ └── registries/ # Specialized registries
├── plugins/ # Plugin system
│ ├── storage/ # Storage backends
│ ├── identity/ # Identity resolvers
│ └── managers/ # Plugin managers
└── cli/ # CLI commands
Built-in Traits
- titled - title, subtitle
- sluggable - URL slugs
- timestamped - created_on, updated_on
- persistable - save(), delete(), is_new()
- userable - username, email, email_verified
- authenticatable - password hashing
- authorizable - roles, permissions
- sessionable - session management
CLI
# User management
winterforge user create alice alice@example.com
winterforge user add-role alice admin
# Session management
winterforge session create alice
winterforge session verify <token>
# Role/permission management
winterforge role create admin "Admin role"
winterforge permission create posts.create
Async-First
All I/O operations are async:
# Storage
await storage.save(frag)
frag = await storage.load(id)
# Frags
await frag.save()
await frag.delete()
# Registry
frag = await registry.get(identity)
all_frags = await registry.all()
Sync wrapper (rare):
from winterforge.utils.sync import to_sync
@to_sync
async def create_user_sync(username, email):
users = UserRegistry()
return await users.create(username, email, 'password')
user = create_user_sync('alice', 'alice@example.com')
Architecture
- Composition over inheritance - Frags compose capabilities
- Plugin-based - Extensible via decorators
- Async-first - Modern Python standards
- Everything is a Frag - Even CLI output
Status
Version: Pre-release (Phase 4 complete) Tests: 581 passing Warnings: 1 (expected) Ready for: Feature development
WinterForge is async-first, composition-driven, and ready for production.
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
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 winterforge-0.2.2.tar.gz.
File metadata
- Download URL: winterforge-0.2.2.tar.gz
- Upload date:
- Size: 429.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1cc1adfae45403a6945617b1661204f76e8060d5dd028605f2ac019537de07d
|
|
| MD5 |
389fcdf4765f12b4317720ff3144947f
|
|
| BLAKE2b-256 |
94c5818683a8629010459faf2a9e29e02aad565ade6a85352a72daba091e02ad
|
File details
Details for the file winterforge-0.2.2-py3-none-any.whl.
File metadata
- Download URL: winterforge-0.2.2-py3-none-any.whl
- Upload date:
- Size: 621.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e8bd40968be6e9b738e2da44ad1730d0ba74f3390dea2ed92388bae24c4df07
|
|
| MD5 |
fc4bd591109ad02fe2b582ee049e18c0
|
|
| BLAKE2b-256 |
d7666789f98c64a87f50f5c95b15f79448bfac3d857f833c7df2c08ee9f8fe82
|