Metadata-Version: 2.4
Name: epx
Version: 1.2.1
Summary: Client for running simulations with Epistemix Platform Cloud.
Author-email: Andrew Lane <andrew.lane@epistemix.com>
License: Copyright 2024 Epistemix, Inc.
        
        Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License-File: LICENSE
Keywords: ABM,Epistemix,FRED,client
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
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
Requires-Python: >=3.10
Requires-Dist: networkx<4.0,>=3.4.2
Requires-Dist: numpy<2.0
Requires-Dist: pandas>=2.1
Requires-Dist: pyarrow
Requires-Dist: pydantic>=2
Requires-Dist: pydot<4.0,>=3.0.4
Requires-Dist: requests
Requires-Dist: types-networkx
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: flake8; extra == 'dev'
Requires-Dist: flake8-black; extra == 'dev'
Requires-Dist: flake8-pyproject; extra == 'dev'
Requires-Dist: multimethod<=1.10; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Requires-Dist: pandas-stubs; extra == 'dev'
Requires-Dist: pandera; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: sphinx; extra == 'dev'
Requires-Dist: types-requests; extra == 'dev'
Description-Content-Type: text/markdown

# Epistemix Platform Client
For users of the epx client please visit our [documentation](https://docs.epsitemix.com/epx-client-docs/)

# Epistemix Platform Client Developers Guide

Client for running simulations with Epistemix Platform Cloud.

## Branching Strategy

This repo follows the environment strategy described
[here](https://github.com/Epistemix-Inc/poc-gitlabflow-release).

## Development

### Initial setup

To bootstrap the development environment using a Python virtual environment,
run

```shell
. scripts/setup
```

This will create and activate the development Python environment. This
environment can be reactivated subsequently in a different shell session with

```shell
source .venv/bin/activate
```

### Pre-commit

Before committing, developers are asked to run the following scripts and resolve
any identified issues:

```shell
scripts/test
scripts/format
scripts/lint
```

### Test data generation

Test data is generated in the `scripts/test/tests` directory. Note that the
test data is checked into this repo and should only need to be regenerated
if the generation script needs to be changed. See `resources/tests/README.md`
for more details.

### Testing integration with SRS

The best known way to test `epx_client`'s interaction with SRS is to package
it up, install it in the Platform, and perform manual testing in-situ. This
can be done by following these steps:

#### 1. Build the Program


Checkout the feature branch that you want to build. Make sure you are in a virtual
environment (see [initial setup](#initial-setup)). Build the epx python package:

```shell
python -m build
```

This will create package artifacts in the `/dist` directory.

#### 2. Upload the Artifact to Platform

Within the Platform environment that you wish to test in, click the upload file
button from the file menu. Upload the built `.tar.gz` artifact from your local
`/dist` directory.

<img src="./img/upload-button.png" alt="upload button" width="250"/>

#### 3. Install `epx_client` on the Platform

Use `pip` to install the artifact on the Platform. E.g. if your build artifact
is called `~/packages/epx-0.0.0+unknown.tar.gz`, run

```shell
python -m pip install --user --force-reinstall ~/packages/epx-0.0.0+unknown.tar.gz
```
This can be done either using the Platform terminal, or from within a notebook.

`--force-reinstall` forces pip to install the most recently uploaded package artifact.

#### 4. Perform manual tests as required

#### 5. Revert back to default version of epx

To reset your Platform IDE to use the originally installed version of `epx_client`, uninstall
`epx_client`. Since the testing version was installed for your user account only (`--user`),
the globally installed version will show as the installed version.

```shell
python -m pip uninstall epx -y
```

## Documentation

Documentation for the package uses the [Sphinx](https://www.sphinx-doc.org)
framework in the `docs` directory. To build and locally host the docs at port
`8000` run

```shell
scripts/docs
```

## Making a Release
To make a release, follow the process described [here.](https://github.com/Epistemix-com/poc-gitlabflow-release?tab=readme-ov-file#releasing-to-production)