Metadata-Version: 2.4
Name: python-general-be-lib
Version: 0.9.0
Summary: General purpose backend library — SQLAlchemy CRUD/Geometry repositories, FastAPI exceptions, Pydantic base models, logger utilities.
Author-email: Andrea Di Placido <a.diplacido@arpes.it>, "Arpes S.r.l." <it.admin@arpes.it>
License: MIT
Project-URL: Homepage, https://github.com/Arpes-IS/python-general-be-lib
Project-URL: Repository, https://github.com/Arpes-IS/python-general-be-lib
Keywords: backend,sqlalchemy,fastapi,pydantic,repository,crud,geoalchemy2
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Database
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi>=0.100.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: sqlalchemy>=2.0.0
Requires-Dist: geoalchemy2>=0.14.0
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-benchmark>=5; extra == "dev"
Requires-Dist: testcontainers[postgres]>=4; extra == "dev"
Requires-Dist: psycopg[binary]>=3; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: twine; extra == "dev"
Dynamic: license-file

# python-general-be-lib

Libreria backend general purpose per progetti Python: repository CRUD e spaziali
su **SQLAlchemy** / **GeoAlchemy2**, eccezioni **FastAPI**, modelli base
**Pydantic** e utility di logging.

- Distribuzione PyPI: `python-general-be-lib`
- Pacchetto importabile: `general`
- Python richiesto: **3.12+**

```bash
pip install python-general-be-lib
```

```python
from sqlalchemy import create_engine

from general.interface.repository import CrudRepository

engine = create_engine("postgresql://user:pass@localhost/db")
repo = CrudRepository(entity=User, model=UserModel, engine=engine)

repo.insert(models=[UserModel(name="Mario", email="mario@example.com")])
repo.find(active=True, order_by="name", asc=True)
```

---

## Cosa contiene

| Area | Componenti |
|---|---|
| Repository ORM | `CrudRepository`, `GeometryRepository`, `ManyToManyRepository`, `ViewRepository` |
| Layer Core (senza ORM) | `CrudMetadata`, `GeomMetadata` — CRUD e query spaziali su `Table` riflesse |
| Motore di filtraggio | `StatementManager` + `BaseHandler`, `JsonHandler`, `ILikeHandler`, `JsonILikeHandler`, `OrHandler`, `IntervalHandler` |
| Basi | `Base` (declarative base estesa), `ExtBaseModel`, `CamelExtBaseModel` |
| Paginazione | `PaginatorRequestModel`, `PaginatorResponseModel` |
| Eccezioni | `ExceptionInterface` e sottoclassi HTTP (400/401/403/404/422/500/503) |
| Logging | `init_logger`, decorator `@log` |

---

## Documentazione

| Documento | Contenuto |
|---|---|
| [`CHANGELOG.md`](https://github.com/Arpes-IS/python-general-be-lib/blob/main/CHANGELOG.md) | Modifiche per versione, con le note di migrazione |
| `general/README.md` | Panoramica della libreria: struttura, contratto sulle sessioni, handler, operazioni spaziali |
| `general/DOCS.md` | Riferimento completo, metodo per metodo |
