vexen-core
Integration layer for the Vexen system suite (user, rbac, auth).
Overview
vexen-core provides a unified container that integrates three independent Vexen systems:
- vexen-user: User management with hexagonal architecture
- vexen-rbac: Role-Based Access Control system
- vexen-auth: Authentication with JWT tokens
Installation
pip install vexen-core
This will automatically install all three systems as dependencies.
Quick Start
import asyncio
from vexen_core import VexenConfig, VexenContainer
async def main():
# Create configuration
config = VexenConfig(
database_url="postgresql+asyncpg://user:pass@localhost/db",
secret_key="your-secret-key-change-in-production",
algorithm="HS256",
echo=False
)
# Use context manager (recommended)
async with VexenContainer(config) as vexen:
# Access all three systems
user_system = vexen.user
rbac_system = vexen.rbac
auth_system = vexen.auth
# Use the services
# users = await vexen.user.service.list()
# roles = await vexen.rbac.roles.list()
# auth_response = await vexen.auth.service.login(request)
if __name__ == "__main__":
asyncio.run(main())
Configuration
The VexenConfig dataclass accepts the following parameters:
@dataclass
class VexenConfig:
# Database configuration
database_url: str
echo: bool = False
pool_size: int = 5
max_overflow: int = 10
# Authentication configuration
secret_key: str
algorithm: str = "HS256"
access_token_expires_minutes: int = 15
refresh_token_expires_days: int = 30
Usage
User Management
from vexen_user.application.dto import CreateUserRequest
async with VexenContainer(config) as vexen:
# Create a user
request = CreateUserRequest(
email="john@example.com",
name="John Doe"
)
response = await vexen.user.service.create(request)
if response.success:
print(f"User created: {response.data.id}")
RBAC
from vexen_rbac.application.dto import CreateRoleRequest
async with VexenContainer(config) as vexen:
# Create a role
request = CreateRoleRequest(
name="admin",
description="Administrator role"
)
response = await vexen.rbac.roles.create(request)
if response.success:
print(f"Role created: {response.data.id}")
Authentication
from vexen_auth.application.dto import LoginRequest
async with VexenContainer(config) as vexen:
# Login
request = LoginRequest(
email="john@example.com",
password="SecurePassword123"
)
response = await vexen.auth.service.login(request)
if response:
print(f"Access token: {response.access_token}")
print(f"User ID: {response.user_id}")
Architecture
System Integration
The VexenContainer initializes all three systems with shared configuration:
- User System - Initialized first, provides user repository
- RBAC System - Initialized second, manages roles and permissions
- Auth System - Initialized last, configured to use the user repository
Dependency Injection
The auth system is automatically configured to work with the user repository:
# Automatic integration
async with VexenContainer(config) as vexen:
# Auth system can access user information
# without tight coupling to user service
pass
Manual Lifecycle
If you need more control over initialization:
vexen = VexenContainer(config)
await vexen.init()
try:
# Use systems
pass
finally:
await vexen.close()
API Reference
VexenContainer
Properties
user: VexenUser- Access to user management systemrbac: RBAC- Access to RBAC systemauth: VexenAuth- Access to authentication system
Methods
async init()- Initialize all systemsasync close()- Close all systems and cleanup resourcesasync __aenter__()- Context manager entryasync __aexit__()- Context manager exit
Examples
See the examples directory for complete examples:
basic_usage.py- Basic integration example- More examples coming soon...
Development
Running Tests
pytest
Code Quality
# Format code
ruff format .
# Lint code
ruff check . --fix
License
MIT
Links
Metadata
Release files for vexen-core 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vexen_core-0.1.3.tar.gz | 37.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vexen_core-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.2 kB
Release files / vexen_core-0.1.3.tar.gz
| Download URL | vexen_core-0.1.3.tar.gz |
|---|---|
| Size | 37.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
beba137b578e41bd2438cea37f45b8d6320d8e6e64fb78314e8ed3c167adc7c6
|
|
BLAKE2b-256 checksum How to use checksums |
061e7bfb4eaab7876379d916931fb41d00c1fcccf632e40e3c73d680a792a6b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 3, 2025.
Transparency logRelease files / vexen_core-0.1.3-py3-none-any.whl
| Download URL | vexen_core-0.1.3-py3-none-any.whl |
|---|---|
| Size | 5.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d8301919e9028c5c0306ab11e84f02f1d52f3ade7738d9397ad8da3c1e4d06db
|
|
BLAKE2b-256 checksum How to use checksums |
be4b8abe4c5608caecf0a5315e720551a1c9179556dde2611cbfbcc39eb0f553
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 3, 2025.
Transparency logSecurity for vexen-core 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for vexen_core-0.1.3.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 3, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.