Metadata-Version: 2.4
Name: evogym-py313
Version: 0.1.0
Summary: Evolution Gym fork with Python 3.10-3.13, numpy 2.x, and modern gymnasium support.
Author: evogym-py313 maintainers
Author-email: Evolution Gym Authors <jagdeep@mit.edu>
License: MIT License
        
        Copyright (c) 2022 jagdeepsb
        
        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.
        
Project-URL: Homepage, https://github.com/llaa33219/evogym-py313
Project-URL: Repository, https://github.com/llaa33219/evogym-py313
Project-URL: Issues, https://github.com/llaa33219/evogym-py313/issues
Project-URL: Upstream, https://github.com/EvolutionGym/evogym
Keywords: evolution,soft-robotics,benchmark,co-design,gymnasium
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
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: Topic :: Scientific/Engineering :: Artificial Life
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: gymnasium>=0.26
Requires-Dist: numpy>=1.23
Requires-Dist: setuptools>=61
Dynamic: license-file

# `evogym-py313` — Evolution Gym fork for Python 3.10–3.13

This is an **unofficial fork** of
[EvoGym](https://github.com/EvolutionGym/evogym) (MIT) with support for:

* Python **3.10, 3.11, 3.12, 3.13**
* **numpy 2.x** (and 1.23+)
* Modern **gymnasium ≥ 0.26** (5-tuple step, 2-tuple reset, no `seed()`)

The C++ simulator extension (`simulator_cpp`) is **optional**.  Pure-Python
imports always work; only `EvoSim(...)` / `EvoViewer(...)` need the
extension.  See [§ Building the C++ simulator](#building-the-c-simulator)
below.

Upstream: <https://github.com/EvolutionGym/evogym> — please file bugs in the
upstream tracker unless the issue is clearly fork-specific.

## Install

### Quick start (Python-only API)

```bash
pip install evogym-py313
```

After this, `import evogym` works, `EvoWorld`, `sample_robot`,
`evogym.envs` registration etc. all work, but constructing `EvoSim(world)`
will raise a clear error until you install the C++ build dependencies.

### Building the C++ simulator

If you want to actually run physics simulations, you need a C++ toolchain
plus OpenGL/glfw/glew headers.  Install the build dependencies for your
distro:

**Fedora 42 / RHEL:**

```bash
sudo dnf install gcc-c++ cmake libGLU-devel libXrandr-devel \
                 libXinerama-devel libXcursor-devel libXi-devel \
                 glfw-devel python3-tkinter
```

**Ubuntu / Debian:**

```bash
sudo apt install build-essential cmake libglu1-mesa-dev \
                 libxrandr-dev libxinerama-dev libxcursor-dev \
                 libxi-dev libglfw3-dev python3-tk
```

**macOS (Homebrew):**

```bash
brew install cmake glfw
```

Then reinstall the package so the build kicks in:

```bash
pip install --no-binary :all: --force-reinstall --no-build-isolation \
            evogym-py313
```

(`--no-binary :all:` tells pip to build from source rather than grabbing a
universal wheel; `--no-build-isolation` lets the build use the already
installed `pybind11` / `numpy`.)

After this, `evogym.cpp_available()` returns `True` and `EvoSim(world)`
actually steps physics.

### Development install from a local checkout

```bash
git clone https://github.com/your-name/evogym-py313 ~/evogym-py313
cd ~/evogym-py313
pip install -e ".[dev]"   # or: pip install -e .
pytest -q tests -k 'not requires_cpp'
```

## Verifying the install

```bash
python -c "import evogym; print('evogym', evogym.__version__, 'cpp=', evogym.cpp_available())"
```

Expected (no C++ build yet):

```
evogym 0.1.0 cpp= False
```

After building the C++ extension:

```
evogym 0.1.0 cpp= True
```

## What changed vs upstream

| Area                 | Upstream                              | This fork                                                                  |
|----------------------|---------------------------------------|----------------------------------------------------------------------------|
| Python               | `>=3.7, <3.11`                        | `>=3.10` (tested 3.10–3.13)                                                |
| numpy                | `<2.0.0`                              | `>=1.23` (works with 1.x and 2.x)                                          |
| `gymnasium` API      | `reset() -> None`, `step() -> bool`   | `reset() -> (obs, info)`, `step() -> 5-tuple` (gymnasium ≥ 0.26 contract)  |
| C++ extension        | git submodule, vendored externals     | Optional, built via scikit-build-core; Eigen via `FetchContent`             |
| `pkg_resources`      | used                                  | replaced with stdlib `importlib.resources` (setuptools 80+ dropped it)     |
| `import evogym`      | requires compiled extension           | always works; `EvoSim` raises clear error if extension missing             |

## Running the tests

```bash
pytest -q tests                       # pure-Python tests + cpp tests (skipped if no C++)
pytest -q tests -k 'not requires_cpp' # CI / pure-Python installs
```

## License

MIT, same as upstream.  See `LICENSE`.
