Metadata-Version: 2.4
Name: laraflask-core
Version: 1.4.1
Summary: Laravel-inspired framework core for Flask — elegant, expressive, modern.
Home-page: https://github.com/Laraflask-Community/laraflask-core
Author: Laraflask Contributors
License: MIT
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: flask>=3.1.0
Requires-Dist: python-dotenv>=1.1.0
Requires-Dist: jinja2>=3.1.4
Requires-Dist: werkzeug>=3.1.0
Requires-Dist: click>=8.1.8
Requires-Dist: sqlalchemy>=2.0.36
Provides-Extra: all
Requires-Dist: alembic>=1.14.0; extra == "all"
Requires-Dist: PyMySQL>=1.1.1; extra == "all"
Requires-Dist: psycopg2-binary>=2.9.10; extra == "all"
Requires-Dist: pgvector>=0.3.6; extra == "all"
Requires-Dist: redis>=5.2.1; extra == "all"
Requires-Dist: bcrypt>=4.2.1; extra == "all"
Requires-Dist: pyjwt>=2.10.1; extra == "all"
Requires-Dist: cryptography>=44.0.0; extra == "all"
Requires-Dist: flask-session>=0.8.0; extra == "all"
Requires-Dist: celery>=5.4.0; extra == "all"
Requires-Dist: croniter>=5.0.1; extra == "all"
Requires-Dist: apscheduler>=3.11.0; extra == "all"
Requires-Dist: email-validator>=2.2.0; extra == "all"
Requires-Dist: flask-cors>=5.0.0; extra == "all"
Requires-Dist: flask-socketio>=5.5.1; extra == "all"
Requires-Dist: boto3>=1.35.0; extra == "all"
Requires-Dist: twilio>=9.4.0; extra == "all"
Provides-Extra: mysql
Requires-Dist: PyMySQL>=1.1.1; extra == "mysql"
Provides-Extra: postgresql
Requires-Dist: psycopg2-binary>=2.9.10; extra == "postgresql"
Provides-Extra: vector
Requires-Dist: pgvector>=0.3.6; extra == "vector"
Requires-Dist: psycopg2-binary>=2.9.10; extra == "vector"
Provides-Extra: redis
Requires-Dist: redis>=5.2.1; extra == "redis"
Requires-Dist: hiredis>=3.0.0; extra == "redis"
Provides-Extra: auth
Requires-Dist: bcrypt>=4.2.1; extra == "auth"
Requires-Dist: pyjwt>=2.10.1; extra == "auth"
Requires-Dist: cryptography>=44.0.0; extra == "auth"
Provides-Extra: queue
Requires-Dist: celery>=5.4.0; extra == "queue"
Requires-Dist: kombu>=5.4.2; extra == "queue"
Provides-Extra: storage
Requires-Dist: boto3>=1.35.0; extra == "storage"
Requires-Dist: botocore>=1.35.0; extra == "storage"
Provides-Extra: notifications
Requires-Dist: twilio>=9.4.0; extra == "notifications"
Provides-Extra: websocket
Requires-Dist: flask-socketio>=5.5.1; extra == "websocket"
Requires-Dist: python-socketio>=5.11.0; extra == "websocket"
Requires-Dist: eventlet>=0.38.0; extra == "websocket"
Provides-Extra: testing
Requires-Dist: pytest>=8.3.0; extra == "testing"
Requires-Dist: pytest-flask>=1.3.0; extra == "testing"
Requires-Dist: factory-boy>=3.3.1; extra == "testing"
Requires-Dist: faker>=33.0.0; extra == "testing"
Provides-Extra: dev
Requires-Dist: pytest>=8.3.0; extra == "dev"
Requires-Dist: pytest-flask>=1.3.0; extra == "dev"
Requires-Dist: pytest-cov>=6.0.0; extra == "dev"
Requires-Dist: factory-boy>=3.3.1; extra == "dev"
Requires-Dist: faker>=33.0.0; extra == "dev"
Requires-Dist: flask-debugtoolbar>=0.16.0; extra == "dev"
Requires-Dist: watchdog>=6.0.0; extra == "dev"
Provides-Extra: production
Requires-Dist: gunicorn>=23.0.0; extra == "production"
Requires-Dist: gevent>=24.11.0; extra == "production"
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# Laraflask Core v1.4.0

**A Laravel-inspired framework for Python — built on top of Flask + SQLAlchemy.**
Elegant. Expressive. Modern.

Laraflask brings Laravel's developer experience philosophy to the Python ecosystem: an Eloquent-style ORM, an Artisan CLI, a Service Container with dependency injection, Blade-like templating, a Job Queue, a Task Scheduler, and more than 20 other ready-to-use modules — all with an API that feels familiar to anyone who has ever written Laravel code.

## Installation

```bash
pip install laraflask-core
# or with all optional dependencies:
pip install laraflask-core[all]
```

## Changelog

### v1.4.0 (2026-06-28)
- Implemented 9 previously-missing Artisan generator commands: `make:request`, `make:policy`, `make:resource`, `make:rule`, `make:provider`, `make:seeder`, `make:factory`, `make:observer`, `make:command`
- `make:resource` supports `--jsonapi` to scaffold a `JsonApiResource` instead of the default `ApiResource`
- `make:policy` and `make:observer` support `--model` to generate type-hinted methods against a specific model
- Added 3 new base classes required by the generators above, since they didn't exist yet: `laraflask.orm.seeder.Seeder`, `laraflask.orm.factory.Factory` (Faker-backed), `laraflask.orm.observer.Observer`
- Added `Model.observe(ObserverClass)` — wires an `Observer` to the existing `ModelCreating`/`ModelCreated`/etc. lifecycle events without duplicating dispatch logic. Note: these lifecycle events still aren't dispatched automatically from `save()`/`delete()` — see the generated Observer's docstring for the manual-dispatch workaround
- Added 26 new unit tests covering every new command and base class
- Version bump: `1.3.0` → `1.4.0`

### v1.3.0 (2026-06-28)
- Eliminated all top-level `from flask import …` in user-space files (routes, Controller, Handler, tests)
- `Controller.respond()` and `Controller.error()` now delegate to `ApiResponse` from core
- `Handler` uses `ApiResponse.not_found()` / `ApiResponse.validation_error()` instead of raw `jsonify()`
- README examples corrected: middleware uses inline `abort()`, template controller uses `self.view()`, Handler example uses `ApiResponse`
- All Provider imports updated for consistency with top-level `laraflask` namespace
- Version bump: `1.2.0` → `1.3.0`

### v1.2.0 (2026-06-28)
- Updated all dependency versions to latest stable releases
- `flask` → `>=3.1.0`, `sqlalchemy` → `>=2.0.36`, `werkzeug` → `>=3.1.0`
- `bcrypt` → `>=4.2.1`, `pyjwt` → `>=2.10.1`, `cryptography` → `>=44.0.0`
- `celery` → `>=5.4.0`, `redis` → `>=5.2.1`, `gunicorn` → `>=23.0.0`
- `pytest` → `>=8.3.0`, `pytest-cov` → `>=6.0.0`, `faker` → `>=33.0.0`
- `flask-cors` → `>=5.0.0`, `flask-session` → `>=0.8.0`
- Bumped `setuptools` build requirement to `>=75.0`
- Version bump: `1.1.0` → `1.2.0`

### v1.1.0
- Initial public release
