catala/french_law/python/README.md
Louis Gesbert cf2e80ba51 Refactor Python dependency handling
* Use the newer "pyproject.toml" for syntax highlighters
* Use venv for everything (previously, the pygment lexers were installed
  globally, but more recent Python releases frown upon that. This will probably
  be more stable in the long run...)
* Use one venv at the root of the project (`_python_venv/`) for both
  pygments and the runtime
* Initialise this venv automatically from the Makefile (it should no longer be
  necessary to run scattered `set_up.sh` scripts with mysterious interactions)

On the downsides, though:
* Only tested with Python 3.11 at the moment
* Need to remember to activate the venv (`. _python_venv/bin/activate`) from the
  root for e.g. HTML literate output to work. A more manageable solution could
  be for Catala to provide the lexers on-the-fly when calling `pygmentize`.
2023-03-02 16:24:53 +01:00

66 lines
2.0 KiB
Markdown

# Python French Law Library
This folder contains a ready-to-use Python library featuring French public
algorithms coded up in Catala.
The Python version expected to run the Python code is above 3.6. For the
commands noted below to run, you are expected to setup a virtual Python
environment: run `make dependencies-python` from the root of the Catala
repository.
Then activate the environment (needs to be done every time you open a new shell
session). From the root of the Catala repository, run the following command:
```
. _python_venv/bin/activate
```
## Organization
### Law source
The `src/` folder contains the Python files generated by the Catala compiler.
To update them from the Catala sources, invoke this command from the root
of the repository:
```
make generate_french_law_library_python
```
The Python files generated by the Catala compiler depends on the `catala.runtime`
package, whose source doe can be found in `runtimes/python/catala` from the
root of the Catala repository.
All theses Python files feature type annotations which can be checked against
using the following command inside this directory (`french_law/python`):
```
make type
```
### API
To use the algorithms of this library, you can take a look at the example provided in
`main.py`. All the algorithms are centralized with wrappers in `api.py`, as it is
very important internally to wrap all of the input parameters using `src/catala.py`
conversion functions.
You can benchmark the computation using the following command inside this
directory (`french_law/python`):
```
make bench
```
### Logging
The generated Catala code also features a logging feature that let you inspect
each step of the computation, as well as the values flowing through it. You can
directly retrieve a list of log events just after using a Catala-generated
function, and display this list as you wish. An example of such a display can
be showcases by using the following command inside this directory (`french_law/python`):
```
make show_log
```