Skip to main content

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:

  1. User System - Initialized first, provides user repository
  2. RBAC System - Initialized second, manages roles and permissions
  3. 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 system
  • rbac: RBAC - Access to RBAC system
  • auth: VexenAuth - Access to authentication system

Methods

  • async init() - Initialize all systems
  • async close() - Close all systems and cleanup resources
  • async __aenter__() - Context manager entry
  • async __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

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)

Source distribution for vexen-core 0.1.3
File Size Uploaded Provenance
vexen_core-0.1.3.tar.gz 37.0 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for vexen-core 0.1.3
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page