Metadata-Version: 2.4
Name: quetzal-transport
Version: 3.8.3
Summary: modeling library for transport planning
License: CECILL-B
License-File: LICENSE.md
Keywords: transport,planning,simulation,fast
Author: Quentin Chasserieau
Author-email: qchasserieau@systra.com
Requires-Python: >=3.12,<3.14
Classifier: License :: CeCILL-B Free Software License Agreement (CECILL-B)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: boto3 (>=1.43.6)
Requires-Dist: fast-dijkstra (>=2.1.2)
Requires-Dist: geopandas (>=1.1.3)
Requires-Dist: geopy (>=2.4.1)
Requires-Dist: gtfs-kit (==6.1.0)
Requires-Dist: ipywidgets (>=7.8.5,<8.0)
Requires-Dist: matplotlib (>=3.10.9)
Requires-Dist: networkx (>=3.6.1)
Requires-Dist: notebook (>=6.5.7,<7.0)
Requires-Dist: numba (>=0.65.1)
Requires-Dist: numpy (>=2.4.4)
Requires-Dist: openmatrix (>=0.3.5.0)
Requires-Dist: openpyxl (>=3.1.5)
Requires-Dist: pandas (>=2.3.3,<3.0)
Requires-Dist: polars (>=1.40.1)
Requires-Dist: pyarrow (>=24.0.0)
Requires-Dist: pydantic (>=2.13.4)
Requires-Dist: rasterio (>=1.5.0)
Requires-Dist: ruff (>=0.15.12)
Requires-Dist: s3fs (>=0.4.2)
Requires-Dist: scikit-learn (>=1.8.0)
Requires-Dist: scipy (>=1.17.1)
Requires-Dist: seaborn (>=0.13.2)
Requires-Dist: tqdm (>=4.67.3)
Requires-Dist: xlrd (>=2.0.2)
Requires-Dist: zstandard (>=0.25.0)
Project-URL: Documentation, https://systragroup.github.io/quetzal
Project-URL: Repository, https://github.com/systragroup/quetzal
Description-Content-Type: text/markdown


# quetzal
## What is it?
**quetzal** is a Python package providing flexible models for transport planning and traffic forecasting. Quetzal is highly optimized to run fast on big cities.
## Copyright
(c) SYSTRA
## License
[CeCILL-B](LICENSE.md)
## Documentation
The official documentation is hosted on https://systragroup.github.io/quetzal
## Backward compatibility
In order to improve the ergonomics, the code may be re-factored and a few method calls may be re-designed. As a consequence, the backward compatibility of the library is not guaranteed. Therefore, the version of quetzal used for a project should be specified in its requirements.

# Installation

https://pypi.org/project/quetzal-transport/

```bash
pip install quetzal-transport
```

# Installation from sources
## For Linux

### uv
1) Install uv (if not already installed)
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
2) install dependencies (this will create a new virtualenv at `.venv/` and fetch Python 3.12 if needed)
```bash
uv sync
```
3) activate the env
```bash
source .venv/bin/activate
```
4) (optional) add the env to ipykernel (to use in jupyter)
```bash
python -m ipykernel install --user --name=quetzal_env
```

### poetry (alternative)
1) You may need to set the default (or local) python version in the project
```bash
pyenv local 3.12
```
2) install dependancies (this will create a new virtualenv)
```bash
poetry install
```
3) activate the env
```bash
poetry shell
```
4) (optional) add the env to ipykernel (to use in jupyter)
```bash
python -m ipykernel install --user --name=quetzal_env
```



## For Windows
#### uv (recommended)
No prior installation of Python or uv is required — the batch file handles both.
Open a command prompt and run the windows-install batch file
```bat
C:\users\you\path\to\quetzal> windows-install.bat
```
press enter to accept the default kernel name or enter a custom name
#### poetry (alternative)
Requires `Anaconda 3` with Python 3.12. Run the poetry batch file instead:
```bat
C:\users\you\path\to\quetzal> windows-install-poetry.bat
```
press enter to accept the default kernel name or enter a custom name
#### If you are facing DLL or dependencies issues
Anaconda and Pip do not get along well, your Anaconda install may have been corrupted at some point.
- Remove your envs
- Uninstall Anaconda
- Delete your Python and Anaconda folders (users\you\Anaconda3, users\you\Appdata\Roaming\Python, ...etc)
- Install Anaconda
#### If you are facing SSL issues
```bat
pip config set global.trusted-host "pypi.org files.pythonhosted.org"
C:\users\you\path\to\quetzal> windows-install.bat
```
security warning: the host is added to pip.ini
 
# Tests
to run unittest:

```bash
uv run python -W ignore -m unittest discover
```
Or with poetry:
```bash
poetry run python -W ignore -m unittest discover
```

# Deploying

1) change the version in **pyproject.toml**

```toml
[project]
name = "quetzal-transport"
version = "3.1.1"
```

2) edit **CHANGELOG.md** with the changes
```md
## [3.1.1] (2026-01-15)
## changes
* some changes
```


2) create a tag matching the version **(starting with v)**

```bash
git tag -a v3.1.1 -m 'description'
```

3) push the tag

```bash
git push origin v3.1.1
```

that's it. A Github action will 
* build
* create a release 
* update the package on pipy.
