Metadata-Version: 2.4
Name: nlbone
Version: 0.1.36
Summary: Backbone package for interfaces and infrastructure in Python projects
Author-email: Amir Hosein Kahkbazzadeh <a.khakbazzadeh@gmail.com>
License: MIT
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: anyio>=4.0
Requires-Dist: dependency-injector>=4.48.1
Requires-Dist: fastapi>=0.116
Requires-Dist: httpx>=0.27
Requires-Dist: psycopg>=3.2.9
Requires-Dist: pydantic-settings>=2.0
Requires-Dist: pydantic>=2.0
Requires-Dist: python-keycloak==5.8.1
Requires-Dist: sqlalchemy>=2.0
Requires-Dist: starlette>=0.47
Requires-Dist: uvicorn>=0.35
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pre-commit>=3.7; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Requires-Dist: tomli; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Description-Content-Type: text/markdown

# nlbone

**nlbone** (NumberLand Backbone) is a lightweight Python package that provides the foundational interfaces and
infrastructure for NumberLand projects.  
It follows a clean architecture style (ports & adapters) so that domain logic is separated from infrastructure concerns.

---

## ✨ Features

- **Domain interfaces**
- **Immutable domain models**
- **Application services** (use cases) independent of infrastructure.
- **Infrastructure adapters** (DB, HTTP, etc.).
- **Config management** with [pydantic-settings](https://docs.pydantic.dev/latest/concepts/pydantic_settings/).
- **Dependency injection container** for easy wiring.
- **Testing ready** with pytest + pytest-asyncio.
- **Dev tools**: Ruff (lint), Mypy (typing), Pre-commit hooks.

---

## 📦 Installation

```bash
pip install nlbone
``` 

## 🛠 For development:

```bash
git clone https://github.com/your-org/nlbone.git
cd nlbone
python -m venv .venv
source .venv/bin/activate   # (Linux/macOS)
# .venv\Scripts\activate    # (Windows)

pip install -e ".[dev]"

python -m pip install build twine
python -m build
```

## 🚀 Quick Example

```python
import anyio
from nlbone import build_container


async def main():
    container = build_container()
    user = await container.register_user("me@numberland.com")
    print(user)


anyio.run(main)
```