Metadata-Version: 2.4
Name: julee
Version: 0.5.6
Summary: Julee - a clean architecture framework for Python solutions
Author-email: Pyx Industries <chris@pyx.io>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/pyx-industries/julee
Project-URL: Repository, https://github.com/pyx-industries/julee
Project-URL: Documentation, https://github.com/pyx-industries/julee#readme
Project-URL: Issues, https://github.com/pyx-industries/julee/issues
Keywords: clean-architecture,domain-driven-design,bounded-context,framework
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic>=2.0.0
Provides-Extra: doctrine
Requires-Dist: griffe<2,>=1.0.0; extra == "doctrine"
Requires-Dist: inflect>=7.5.0; extra == "doctrine"
Provides-Extra: temporal
Requires-Dist: temporalio[pydantic]>=1.27.0; extra == "temporal"
Provides-Extra: api
Requires-Dist: fastapi>=0.100.0; extra == "api"
Requires-Dist: uvicorn>=0.20.0; extra == "api"
Requires-Dist: python-multipart>=0.0.27; extra == "api"
Requires-Dist: fastapi-pagination>=0.12.0; extra == "api"
Provides-Extra: minio
Requires-Dist: minio>=7.0.0; extra == "minio"
Provides-Extra: all
Requires-Dist: julee[api,doctrine,minio,temporal]; extra == "all"
Provides-Extra: dev
Requires-Dist: julee[all]; extra == "dev"
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=1.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: pytest-xdist>=3.5.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.3.0; extra == "dev"
Requires-Dist: hypothesis>=6.0.0; extra == "dev"
Requires-Dist: factory-boy>=3.2.0; extra == "dev"
Requires-Dist: mutmut>=3.5.0; extra == "dev"
Requires-Dist: mypy>=1.7.0; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Requires-Dist: types-jsonschema; extra == "dev"
Requires-Dist: types-python-dateutil; extra == "dev"
Requires-Dist: black>=24.0.0; extra == "dev"
Requires-Dist: ruff>=0.5.0; extra == "dev"
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
Requires-Dist: bandit; extra == "dev"
Requires-Dist: asyncpg; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0.0; extra == "docs"
Requires-Dist: sphinx-autobuild>=2021.3.14; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "docs"
Requires-Dist: furo>=2023.9.10; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints>=1.25.0; extra == "docs"
Requires-Dist: sphinxcontrib-mermaid>=0.9.2; extra == "docs"
Requires-Dist: sphinxcontrib-plantuml>=0.25; extra == "docs"
Requires-Dist: sphinx-autoapi>=3.0.0; extra == "docs"
Dynamic: license-file

# Julee

Clean architecture for accountable and transparent digital supply chains.

Julee is a Python framework for building resilient, auditable business processes using Temporal workflows. Solutions are organized around your business domain—your bounded contexts become "accelerators" that speak your business language, not framework jargon.

**Use Julee when:** processes must be done correctly, may be complex or long-running, need compliance audit trails (responsible AI, algorithmic due-diligence), or depend on unreliable services that may fail, timeout, or be rate-limited.

**Core concepts:** Accelerators are collections of pipelines that automate a business area. Pipelines are use cases wrapped with Temporal, providing durability (survives crashes), reliability (automatic retries), observability (complete execution history), and supply chain provenance (audit trails that become "digital product passports").

## Installation

```bash
pip install julee            # the framework: pydantic only
pip install "julee[all]"     # every integration
```

Julee installs a small kernel. Add what a solution uses:

| Extra | Brings |
|---|---|
| `doctrine` | doctrine, policy and code introspection |
| `temporal` | the Temporal integration |
| `api` | FastAPI applications |
| `minio` | MinIO object storage |

Domain code ships separately, as kits. Install one and adopt it:

```toml
[tool.julee]
kits = ["polling"]
```

- [julee-kits](https://github.com/pyx-industries/julee-kits): every kit — `julee-ceap`, `julee-polling` and `julee-viewpoints`.

See [ADR 012](docs/ADRs/012-framework-and-kits.md).

## Runtime Dependencies

Julee applications require: [Temporal](https://temporal.io/) (workflow orchestration), S3-compatible object storage (e.g. MinIO), PostgreSQL (for Temporal).

## Documentation

Full documentation at [julee.readthedocs.io](https://julee.readthedocs.io), package on [PyPI](https://pypi.org/project/julee/).

## Example

The [CEAP kit](https://github.com/pyx-industries/julee-kits/tree/master/ceap)
ships a Docker Compose demonstration: a meeting minutes extraction system,
with an API, a worker and a UI.

## License

GPL-3.0 — see [LICENSE](LICENSE) for details.
