Metadata-Version: 2.4
Name: aerocore
Version: 0.2.2
Summary: A lightweight collection of tools for air traffic management research.
Project-URL: Repository, https://github.com/abc8747/aerocore
Author-email: Abraham Cheung <abraham@ylcheung.com>
License-Expression: MIT
License-File: LICENSE
Keywords: air transportation,atm
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
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.14
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: isqx>=0.1.2
Requires-Dist: numpy>=2
Provides-Extra: all
Requires-Dist: httpx[http2]>=0.28.1; extra == 'all'
Requires-Dist: jax>=0.5.0; extra == 'all'
Requires-Dist: matplotlib>=3.10.0; extra == 'all'
Requires-Dist: platformdirs>=4; extra == 'all'
Requires-Dist: polars[calamine]>=1.18.0; extra == 'all'
Requires-Dist: rich>=14.0.0; extra == 'all'
Requires-Dist: typer>=0.26; extra == 'all'
Requires-Dist: xarray>=2024.11.0; extra == 'all'
Provides-Extra: cli
Requires-Dist: typer>=0.26; extra == 'cli'
Provides-Extra: httpx
Requires-Dist: httpx[http2]>=0.28.1; extra == 'httpx'
Provides-Extra: jax
Requires-Dist: jax>=0.5.0; extra == 'jax'
Provides-Extra: jax-gpu
Requires-Dist: jax[cuda12]>=0.5.0; (python_version < '3.11') and extra == 'jax-gpu'
Requires-Dist: jax[cuda13]>=0.5.0; (python_version >= '3.11') and extra == 'jax-gpu'
Provides-Extra: matplotlib
Requires-Dist: matplotlib>=3.10.0; extra == 'matplotlib'
Provides-Extra: onnx
Requires-Dist: onnx>=1.20.0; extra == 'onnx'
Provides-Extra: onnx-gpu
Requires-Dist: onnxruntime-gpu>=1.22.0; extra == 'onnx-gpu'
Provides-Extra: onnxscript
Requires-Dist: onnxscript>=0.7.0; extra == 'onnxscript'
Provides-Extra: platformdirs
Requires-Dist: platformdirs>=4; extra == 'platformdirs'
Provides-Extra: polars
Requires-Dist: polars[calamine]>=1.18.0; extra == 'polars'
Provides-Extra: rich
Requires-Dist: rich>=14.0.0; extra == 'rich'
Provides-Extra: torch-cpu
Requires-Dist: torch>=2.7.0; extra == 'torch-cpu'
Provides-Extra: torch-gpu
Requires-Dist: torch>=2.7.0; extra == 'torch-gpu'
Provides-Extra: xarray
Requires-Dist: xarray>=2024.11.0; extra == 'xarray'
Description-Content-Type: text/markdown

# aerocore

[![image](https://img.shields.io/pypi/v/aerocore.svg)](https://pypi.python.org/pypi/aerocore)
[![image](https://img.shields.io/pypi/l/aerocore.svg)](https://pypi.python.org/pypi/aerocore)
[![image](https://img.shields.io/pypi/pyversions/aerocore.svg)](https://pypi.python.org/pypi/aerocore)
[![image](https://img.shields.io/pypi/status/aerocore)](https://pypi.python.org/pypi/aerocore)

`aerocore` is a lightweight toolbox for air traffic management research. It only has two dependencies: [`numpy`](https://numpy.org/) and [`isqx` (a units library)](https://github.com/abc8747/isqx). Additional features are available when optional dependencies are installed.

It supports multiple numerical backends through the [Array API](https://data-apis.org/array-api), including JAX arrays and PyTorch tensors.

## Installation

`aerocore` is currently under heavy development and **not considered stable**. For the latest version:

```sh
# with pip
pip install aerocore
# with uv
uv add aerocore
```

Depending on your use case, you can pick the optional dependencies you need:

- `polars`: support for [polars](https://github.com/pola-rs/polars) and its Array API shim (postprocessing third party data)
- `httpx`: support for [httpx](https://github.com/encode/httpx) (downloading data from external sources)
- `xarray`: support for [xarray](https://github.com/pydata/xarray) (ARCO-ERA5 weather grids, working with NetCDF)
- `jax`: support for [JAX](https://github.com/jax-ml/jax) (automatic differentiation/GPU acceleration support)
- `matplotlib`: plotting
- `platformdirs`: reading/writing cache/config files
- `cli`: command line scripts
- `all`: install all optional dependencies (not recommended!)

For example:

```sh
pip install "aerocore[httpx,polars,cli]"
```

## Usage

For the CLI:

```sh
uv run aerocore --help
```

## Development

```sh
git clone https://github.com/abc8747/aerocore --depth=1
cd aerocore
uv venv
# standard
uv sync --all-groups --extra all
# if you want to benchmark with GPU support 
uv sync --all-groups --all-extras --no-extra 'torch-cpu'
```

To run scripts:

```sh
uv run examples/capabilities_jax.py
```

For documentation:

```sh
uv run zensical serve
```

It should then host at <http://127.0.0.1:8000/aerocore/>.

For testing:

```sh
# by default, it tests everything
uv run pytest
# skip slow network tests that fetch external data (e.g. adsb.lol, icao.int...)
uv run pytest -m "not network"
```

### Contributing

PRs or issues are very welcome!

We use [Ruff](https://github.com/astral-sh/ruff) for linting and [MyPy](https://github.com/python/mypy) for type checking. Locally, run the following before committing:

```sh
just fmt
just check
```

License: MIT
