Metadata-Version: 2.1
Name: fastlifeweb
Version: 0.38.2
Summary: High-level web framework
Author-Email: Guillaume Gauvrit <guillaume@gauvr.it>
License: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Typing :: Typed
Project-URL: Homepage, https://mardiros.github.io/fastlife
Project-URL: Documentation, https://mardiros.github.io/fastlife
Project-URL: Repository, https://github.com/mardiros/fastlife.git
Project-URL: Issues, https://github.com/mardiros/fastlife/issues
Project-URL: Changelog, https://mardiros.github.io/fastlife/user/changelog.html
Requires-Python: >=3.11
Requires-Dist: apscheduler<4,>=3.11.2
Requires-Dist: fastapi[standard]<0.123.0,>=0.122.0
Requires-Dist: itsdangerous<3,>=2.1.2
Requires-Dist: markupsafe<3,>=2.1.3
Requires-Dist: multidict<7,>=6.0.5
Requires-Dist: pydantic<3,>=2.7.0
Requires-Dist: pydantic-settings<3,>=2.0.3
Requires-Dist: python-multipart<1,>=0.0.13
Requires-Dist: venusian<4,>=3.0.0
Requires-Dist: xcomponent<1,>=0.11.0
Provides-Extra: testing
Requires-Dist: beautifulsoup4; extra == "testing"
Provides-Extra: docs
Requires-Dist: furo>=2024.5.6; extra == "docs"
Requires-Dist: heroicons<3,>=2.7.0; extra == "docs"
Requires-Dist: jinjax<0.49,>=0.48; extra == "docs"
Requires-Dist: linkify-it-py<3,>=2.0.3; extra == "docs"
Requires-Dist: myst-parser<5,>=4.0.0; extra == "docs"
Requires-Dist: sphinx<8,>=7.0.1; extra == "docs"
Requires-Dist: sphinx-autodoc2<1,>=0.5.0; extra == "docs"
Description-Content-Type: text/markdown

# Fastlife

[![Documentation](https://github.com/mardiros/fastlife/actions/workflows/publish-doc.yml/badge.svg)](https://mardiros.github.io/fastlife/)
[![Continuous Integration](https://github.com/mardiros/fastlife/actions/workflows/tests.yml/badge.svg)](https://github.com/mardiros/fastlife/actions/workflows/tests.yml)
[![Coverage Report](https://codecov.io/gh/mardiros/fastlife/graph/badge.svg?token=DTpi73d7mf)](https://codecov.io/gh/mardiros/fastlife)

> ⚠️ **Under Heavy Development**
> Please note that this project is still in active development. Features and APIs may change frequently.
> Even the name is not definitive.

An opinionated Python web framework (based on {term}`FastAPI`).

## Purpose

Fastlife helps at building Web Application with session, security, html test client,
and html form generated from pydantic schema using customizable widget.

### Hypermedia based

In Fastlife, templates are made using {term}`XComponent`.
It's a modern HTML template made to create template with components.

Those components are currently stylized by {term}`Tailwind CSS`,
using [pytailwindcss](https://github.com/timonweb/pytailwindcss).

Even if it is not used by fastlife, it has been made to be used with {term}`HTMX`.

### First class configuration.

Fastlife is adding a "Configurator", like {term}`Pyramid` to get a better scallable codebase.

The configurator in fastlife organizes configuration settings hierarchically,
enabling easy management and overriding at different levels.
This promotes modularity and clarity in application configuration, making it simpler
to maintain and scale your project.

### Auto generated HTML Form.

Fastlife generate HTML Form from pydantic models, default widgets depending on
the type of the model's field but customizable to get the expected results.

It allows fast development of form to get early prototype to focus on what matter
the most.

### Tests

Fastlife comes with [a test client](https://mardiros.github.io/fastlife/develop/fastlife/fastlife.testing.testclient.html) that can interact with html inside unit tests.

### API

It also comes with an opinionated API wrapper made to enforce documentation consistency.
Under the wood, it's a FastAPI application made for writing API.

## Try it

The package is available on pypi with the name fastlifeweb.

```bash
pip install "fastlifeweb[xcomponent]"
```
