research-school-2025/proj/v1-human-readability/README.md
Arija A. 94f8869048
Init: v1-human-readability
Signed-off-by: Arija A. <ari@ari.lt>
2025-12-07 14:00:29 +02:00

97 lines
1.9 KiB
Markdown

# Flask template
> Simple flask template
## Running
First compile WASM PoW:
```sh
cd src/static/js/wasm
./compile.sh
cd ../../../../
```
Then:
```sh
python3 -m venv venv
source venv/bin/activate
source .env # see example.env
pip install --upgrade -r requirements.txt
cd src
memcached -d
# If you remove migrations/:
# flask db init
# vim migrations/script.py.mako (add import flask_app)
# flask db migrate -m 'Initial migration'
flask db upgrade
flask run
```
For production use a WSGI server such as [Gunicorn](https://pypi.org/project/gunicorn/):
```sh
python3 -m venv venv
source venv/bin/activate
source .env # see example.env
pip install --upgrade -r requirements.txt
pip install --upgrade gunicorn
cd src
memcached -d
flask db upgrade
python3 -m gunicorn -b 127.0.0.1:12345 -w 4 app:app # ... Or whatever your configuration is
```
## I don't want a generic `flask_app` module name
Run `python3 rename.py <new_module_name>`, for example, `python3 rename.py my_app` :)
## I need custom subcommands
In `src/flask_app/__init__.py` you can register your custom `flask` subcommands using `click`:
```py
import click
import flask
@click.command("hello")
def cmd_hello() -> None:
"""Print hello"""
print("Hello!")
def create_app(name: str) -> flask.Flask:
...
app: flask.Flask = flask.Flask(name)
...
# Commands
app.cli.add_command(create_counter)
...
return app
```
If you have a lot of custom commands it is advised you move your commands to a file called `commands.py` or alike, then register them as usual using `app.cli.add_command`. To run these subcommands you would simply do
```sh
flask hello
```
Or whatever your custom subcommand is.
## Linting and Formatting
Use the following tools:
- Black: <https://pypi.org/project/black/>
- Isort: <https://pypi.org/project/isort/>
- Pyright: <https://pypi.org/project/pyright/>
- Flake8: <https://pypi.org/project/flake8/>
- Mypy: <https://pypi.org/project/mypy/>