Metadata-Version: 2.1
Name: ropt
Version: 0.9.1
Summary: The ropt ensemble optimizer module
Project-URL: Homepage, https://github.com/TNO-ropt/ropt
Project-URL: Repository, https://github.com/TNO-ropt/ropt
Project-URL: Bug Tracker, https://github.com/TNO-ropt/ropt/issues
Project-URL: Documentation, https://tno-ropt.github.io/ropt
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: pydantic
Requires-Dist: scipy
Requires-Dist: importlib-metadata; python_version < "3.10"
Requires-Dist: typing-extensions; python_version < "3.9"
Provides-Extra: pandas
Requires-Dist: pandas; extra == "pandas"
Requires-Dist: tabulate; extra == "pandas"
Provides-Extra: xarray
Requires-Dist: xarray; extra == "xarray"
Requires-Dist: netcdf4; extra == "xarray"
Provides-Extra: parsl
Requires-Dist: parsl; extra == "parsl"

# `ropt`
`ropt` is a Python module for running robust optimization workflows.

`ropt` is developed by the Netherlands Organisation for Applied Scientific
Research (TNO). All files in this repository are released under the GNU General
Public License v3.0 (a copy is provided in the LICENSE file).

Detailed documentation and examples can be found in the online
[manual](https://tno-ropt.github.io/ropt/).


## Dependencies
`ropt` has been tested with Python versions 3.8-3.12.

`ropt` requires one or more optimization plugins to function. By default, a
plugin based on optimizers included with [SciPy](https://scipy.org/) is
installed.


## Installation
From PyPI:
```bash
pip install ropt
```

The following optional-dependencies can be installed to enable extra functionality:

- `pandas` : Enables support for `pandas` export and tabular output.
- `xarray` : Enables support for xarray and writing netCDF files.
- `parsl`  : Enables the parsl-based evaluator functionality.

Install with:
```bash
pip install ropt[<dep>]
```
where \<dep\> is one of the optional dependencies listed above. To install all:
```bash
pip install ropt[pandas,xarray,parsl]
```


## Development
The `ropt` source distribution can be found on
[GitHub](https://github.com/tno-ropt/ropt). It uses a standard `pyproject.toml`
file, which contains build information and configuration settings for various
tools. A development environment can be set up with compatible tools of your
choice.

The [uv](https://docs.astral.sh/uv/) package manager offers an easy way to
install `ropt` in its own virtual environment:

```bash
uv sync               # or:
uv sync --all-extras  # To add all optional dependencies
```

The `ropt` package uses [ruff](https://docs.astral.sh/ruff/) (for formatting and
linting), [mypy](https://www.mypy-lang.org/) (for static typing), and
[pytest](https://docs.pytest.org/en/stable/) (for running the test suite).

The documentation is written using [MkDocs](https://www.mkdocs.org/) and
[mkdocstrings](https://mkdocstrings.github.io/). To view the documentation
locally, start the built-in server within the `ropt` distribution directory:

```bash
mkdocs serve
```

All development and documentation tools are declared in `pyproject.toml` as `uv`
development dependencies and can be installed using the `--dev` flag:

```bash
uv sync --dev
```
