Metadata-Version: 2.4
Name: firenado
Version: 0.9.6
Summary: Firenado is a python web framework based on Tornado web framework/server.
Author-email: Flavio Garcia <piraz@candango.org>
Maintainer-email: Flavio Garcia <piraz@candango.org>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/candango/firenado
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cartola==0.21
Requires-Dist: click==8.1.7
Requires-Dist: pyyaml==6.0.3
Requires-Dist: taskio==0.0.7
Requires-Dist: tornado==6.5.2
Provides-Extra: all
Requires-Dist: croniter==6.0.0; extra == "all"
Requires-Dist: greenlet==3.2.2; extra == "all"
Requires-Dist: hiredis==3.3.0; extra == "all"
Requires-Dist: pexpect==4.9.0; extra == "all"
Requires-Dist: ptyprocess==0.7.0; extra == "all"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "all"
Requires-Dist: pytz==2025.2; extra == "all"
Requires-Dist: redis==7.0.1; extra == "all"
Requires-Dist: six==1.17.0; extra == "all"
Requires-Dist: sqlalchemy==2.0.44; extra == "all"
Requires-Dist: typing-extensions==4.13.2; extra == "all"
Provides-Extra: redis
Requires-Dist: hiredis==3.3.0; extra == "redis"
Requires-Dist: redis==7.0.1; extra == "redis"
Provides-Extra: pexpect
Requires-Dist: pexpect==4.9.0; extra == "pexpect"
Requires-Dist: ptyprocess==0.7.0; extra == "pexpect"
Provides-Extra: schedule
Requires-Dist: croniter==6.0.0; extra == "schedule"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "schedule"
Requires-Dist: pytz==2025.2; extra == "schedule"
Requires-Dist: six==1.17.0; extra == "schedule"
Provides-Extra: sqlalchemy
Requires-Dist: greenlet==3.2.2; extra == "sqlalchemy"
Requires-Dist: sqlalchemy==2.0.44; extra == "sqlalchemy"
Requires-Dist: typing-extensions==4.13.2; extra == "sqlalchemy"
Dynamic: license-file

# Firenado Framework 

[![Latest PyPI version](https://img.shields.io/pypi/v/firenado.svg)](https://pypi.org/project/firenado/)
[![Number of PyPI downloads](https://img.shields.io/pypi/dm/firenado.svg)](https://pypi.org/project/firenado/#files)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fcandango%2Ffirenado%2Fbadge&style=flat)](https://actions-badge.atrox.dev/candango/firenado/goto)
[![GitHub license](https://img.shields.io/github/license/candango/firenado)](https://github.com/candango/firenado/blob/develop/LICENSE)

## Introduction

Firenado is a Python web framework that encapsulates and extends
[Tornado](http://www.tornadoweb.org) organizing the application in
components also adding a server side session layer, yaml based configuration
files as other features common that will help developers building web
applications and services.

Firenado is a web framework that extends the original Tornado Web framework
adding new features like loose couple components, server side session layer, 
yaml based configuration files and more.

## Installation

Installing Firenado will only force the installation of pyyaml, Tornado and
six. We call it the basic installation:

```
pip install firenado
```

It is possible to install extra packages as redis-py, sqlalchemy and pexpect.

Installing only redis-py:

```
pip install firenado[redis]
```

Installing only redis-py:

```
pip install firenado[sqlalchemy pexpect]
```

Installing only redis (redis-py, hiredis):

```
pip install firenado[sqlalchemy pexpect]
```

Installing redis and schedule(croniter):

```
pip install firenado[redis schedule]
```

Complete installation(what it is being the case, everytime):

```
pip install firenado[all]
```

> In the future, the installation logic will be inverted. Redis and pexpect
> will be added by default, and disabling them using optional parameters.
>
> The sqlalchemy and schedule(croniter) optionals will remain as is.
>
> With that change if you want just add schedule to the redis and pexpect:
>
> ``` pip install firenado[schedule] ```
>
> Maybe you want an agent with scheduled features and no redis:
>
> ``` pip install firenado[schedule noredis] ```
>
> Or don't need ProcessLaucher but sqlalchemy support:
>
> ``` pip install firenado[sqlalchemy nopexpect] ```
>
> See: #401

## Usage

Creating and running a new application:

```shell
firenado project init helloworld
cd helloworld
firenado app run
```

An application will be created with the redis based session engine
and a redis data source linked to the session.

Firenado won't install redis-py so it is necessary to inform the extra
requirement parameter or install it separately. It is possible to change 
the session to a file based engine or disable the session engine completely.

In order to change the session type to file go to helloworld/conf/firenado.yml
and change the session definition to:

```yaml
# Session types could be:
# file or redis.
session:
  type: file
  enabled: true
  # Redis session handler configuration
  #data:
  #  source: session
  # File session handler related configuration
  path: /tmp
```

If your helloworld project isn't located in the python path just go 
helloworld/conf/firenado.yml and changed it to:

```yaml
app:
  component: helloworld
  data:
    sources:
        # Set here references from sources defined on data.sources
        - session
  pythonpath: ..
  port: 8888
```

## Support

Firenado is one of [Candango Open Source Group
](http://www.candango.org/projects/) initiatives. It is available under
the [Apache License, Version 2.0
](http://www.apache.org/licenses/LICENSE-2.0.html).

This web site and all documentation is licensed under [Creative
Commons 3.0](http://creativecommons.org/licenses/by/3.0/).
