Metadata-Version: 2.4
Name: gemseo-http
Version: 3.0.0
Summary: HTTP Discipline and Server for GEMSEO
Author-email: Jean-Christophe Giret <contact@gemseo.org>
License-Expression: LGPL-3.0
Project-URL: Homepage, https://gemseo.org
Project-URL: Source, https://gitlab.com/gemseo/dev/gemseo-http
Project-URL: Issues, https://gitlab.com/gemseo/dev/gemseo-http/-/issues
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: <3.14,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: gemseo[all]<7,>=6
Requires-Dist: httpx<0.28.2,>=0.26
Requires-Dist: numpy
Requires-Dist: pydantic
Requires-Dist: typer<0.16.0,>=0.15.0
Requires-Dist: sqlmodel<0.0.25,>=0.0.20
Requires-Dist: strenum
Provides-Extra: server
Requires-Dist: alembic<1.16.0,>=1.14; extra == "server"
Requires-Dist: fastapi<0.116.0,>=0.114.0; extra == "server"
Requires-Dist: huey<2.5.4,>=2.5.0; extra == "server"
Requires-Dist: pwdlib[argon2]==0.3; extra == "server"
Requires-Dist: pydantic-settings<2.9.2,>=2.0; extra == "server"
Requires-Dist: python-jose<4,>=3.0.0; extra == "server"
Requires-Dist: python-multipart<0.0.21,>=0.0.10; extra == "server"
Requires-Dist: trio<0.31.0,>=0.29.0; extra == "server"
Requires-Dist: uvicorn<0.34.2,>=0.30.0; extra == "server"
Dynamic: license-file

<!--
Copyright 2021 IRT Saint Exupéry, https://www.irt-saintexupery.com

This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
International License. To view a copy of this license, visit
http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative
Commons, PO Box 1866, Mountain View, CA 94042, USA.
-->

# gemseo-http

[![PyPI - License](https://img.shields.io/pypi/l/gemseo-http)](https://www.gnu.org/licenses/lgpl-3.0.en.html)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/gemseo-http)](https://pypi.org/project/gemseo-http/)
[![PyPI](https://img.shields.io/pypi/v/gemseo-http)](https://pypi.org/project/gemseo-http/)
[![Codecov branch](https://img.shields.io/codecov/c/gitlab/gemseo:dev/gemseo-http/develop)](https://app.codecov.io/gl/gemseo:dev/gemseo-http)

## Overview

`gemseo-http` is a [GEMSEO](https://gemseo.readthedocs.io/en/stable/) plugin that exposes GEMSEO disciplines as RESTful web services. It bridges the gap between local MDO processes and remote computing resources by providing a seamless client-server interface.

### Main Capabilities

1.  **Expose GEMSEO Disciplines as Web Services:**
    *   Make existing GEMSEO disciplines into accessible HTTP endpoints.
    *   Execute and linearize disciplines remotely with support for both synchronous and asynchronous modes.
2.  **Use Remote Disciplines Locally:**
    *   Use the `HTTPDiscipline` class as a local proxy for remote services.
    *   Automatic configuration via service discovery (the proxy queries the remote service for its grammars).

## Installation

### Client Installation

The `HTTPDiscipline` acts as a remote discipline proxy, allowing you to connect to a GEMSEO HTTP service.

To install the latest stable version of the client:

```bash
pip install gemseo-http
```

### Server Installation

If you intend to host GEMSEO disciplines as services, you need to install the server-side dependencies:

```bash
pip install gemseo-http[server]
```

## Key Features

*   **Secure Authentication:** Built-in support for OAuth2 with JWT (JSON Web Tokens) to ensure secure access.
*   **Interactive API Documentation:** Automatically generated Swagger UI (available at `/docs`) for exploring and testing the API.
*   **Automated File Handling:** Transparent management of file transfers between client and server during discipline execution.
*   **Scalable Asynchronous Execution:** Integration with [Huey](https://huey.readthedocs.io/en/latest/) for background job processing, allowing for long-running tasks without blocking the web service.
*   **Efficient Data Retrieval:** Support for long-polling to retrieve results from asynchronous executions.

## Documentation

For detailed installation instructions, user guides, and API reference, please visit the [official documentation](https://gemseo.gitlab.io/gemseo-http).


## Bugs and questions

Please use the [gitlab issue tracker](https://gitlab.com/gemseo/dev/gemseo-http/-/issues)
to submit bugs or questions.

## Contributing

See the [contributing section of GEMSEO](https://gemseo.readthedocs.io/en/stable/software/developing.html#dev).

## Contributors

- Jean-Christophe Giret
- Antoine Dechaume
