mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-20 00:41:05 +03:00
cf2e80ba51
* 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`.
66 lines
2.0 KiB
Markdown
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
|
|
```
|