Shimmy

Latest version: v1.3.0

Safety actively analyzes 622015 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

1.3.0

This release updates Shimmy's Melting Pot wrapper to use Melting Pot's [pypi release](https://pypi.org/project/dm-meltingpot/), and includes a minor rendering bugfix for dm_control,

* Note: Melting Pot requires python version >= 3.10, please upgrade your python installation if you intend to use this wrapper

Breaking Changes
* `install_melting_pot.sh` has been removed, as it is no longer necessary for installation because we are using Melting Pot's pypi release
* To install all required dependencies, simply run `pip install shimmy[meltingpot]`

New Features and Improvements
* Update Melting Pot wrapper to use pypi release (https://github.com/Farama-Foundation/Shimmy/pull/111)

Bug Fixes
* Fix dm_control rendering bug when human mode is used by (https://github.com/Farama-Foundation/Shimmy/pull/104)

Contributors
elliottower, pseudo-rnd-thoughts, spiglerg KaleabTessera

**Full Changelog**: https://github.com/Farama-Foundation/Shimmy/compare/v1.2.1...v1.3.0

1.2.1

This is a minor hotfix which solves an issue where the Melting Pot dockerfile was not running successfully, leading to CI failures and making our install scripts fail.

Note: DeepMind is working towards fully pip-installable modules for `dmlab2d` ([link](https://github.com/deepmind/lab2d/deployments/activity_log?environment=pypi))and `meltingpot` ([link](https://github.com/deepmind/meltingpot/deployments/activity_log?environment=pypi)), but both are currently in pre-release alpha stage, and currently are not fully functional for our usage.

Bug Fixes
* Fix meltingpot dockerfile (https://github.com/Farama-Foundation/Shimmy/pull/102)
* Fix meltingpot install script (https://github.com/Farama-Foundation/Shimmy/pull/103)


**Full Changelog**: https://github.com/Farama-Foundation/Shimmy/compare/v1.2.0...v1.2.1

1.2.0

This release drops Python 3.7 support in favor of Python 3.11, updates the OpenSpiel wrapper to be fully consistent with PettingZoo including seeding and observation/action spaces, and includes some minor documentation updates. This release also fixes minor compatibility issues with Gymnasium 0.29.0 and PettingZoo 1.24.0, which is being released alongside this release.

Breaking Changes
* Python 3.7 has reached its end of life support ([link](https://endoflife.date/python)), therefore, we have dropped support for it in favor of 3.11.
* Observation spaces and action spaces in OpenSpiel wrapper are now indexed by agent name, rather than agent ID, to match PettingZoo
* This brings the wrapper to fully match PettingZoo's environment format, enabling easier usage with wrappers and external training libraries

New Features and Improvements
* Python 3.11 support has been added (https://github.com/Farama-Foundation/Shimmy/pull/100)
* Update pre-commit config to match Gymnasium (https://github.com/Farama-Foundation/Shimmy/pull/99)
* CI now ensures proper formatting for toml and yml files, checks that shell scripts have shebangs and can be executed, etc.

Bug Fixes
* OpenSpiel wrapper: fix obs/action space, seeding, and reset config (https://github.com/Farama-Foundation/Shimmy/pull/96)
* OpenSpiel wrapper: fix calling reset() with no seed, make obs/act spaces fully match PettingZoo (https://github.com/Farama-Foundation/Shimmy/pull/97)

Documentation Updates
* Add badges: pre-commit, black, DOI badge from Zenodo (https://github.com/Farama-Foundation/Shimmy/pull/95)
* Fix documentation for installing multiple extras to be correct syntax (https://github.com/Farama-Foundation/Shimmy/pull/93)

**Full Changelog**: https://github.com/Farama-Foundation/Shimmy/compare/v1.1.0...v1.2.0

1.1.0

This is a small bug fix release which fixes rendering issues in the dm-control compatibility wrapper.

Breaking changes
* The dm-control compatibility environment used the `env.control_timesteps()` for the render frames per second (`render_fps`), however, this value is the interval between actions per seconds, i.e., `0.04`. This was fixed to be the actual `fps`, by multiplying by 1000. (https://github.com/Farama-Foundation/Shimmy/pull/91)
* A `dt` attribute was added to the dm-control compatibility environment that is equivalent to the mujoco environment `dt` attribute. (https://github.com/Farama-Foundation/Shimmy/pull/91)
* Modified the rendering in dm-control compatibility, removing `render_height`, `render_width`, `camera_id` and `scene_callback` in favor of `render_kwargs`. (https://github.com/Farama-Foundation/Shimmy/pull/92)
* As such users should specify kwargs in the dm-control engine render function, i.e., `height`, `width`, `camera_id` and `scene_callback`.
* Additionally, this will use the default dm-control arguments unless overridden by the user `render_kwargs`.

**Full Changelog**: https://github.com/Farama-Foundation/Shimmy/compare/v1.0.1...v1.1.0

1.0.1

This release is a small hotfix which updates the multi-agent environments to PettingZoo 1.23.0, and fixes seeding issues with OpenSpiel and DM control multi-agent. It also fixes setup.py to properly install gym v21, and updates testing accordingly. Documentation updates include minor quality of life changes.

**Bug Fixes**
* Update DM control multi agent and melting pot to PettingZoo 1.23.0 API, fix seeding (https://github.com/Farama-Foundation/Shimmy/pull/87)
* Update OpenSpiel to PettingZoo 1.23.0 API, fix API test & seeding (https://github.com/Farama-Foundation/Shimmy/pull/80)
* Fix setup.py for gym v21 (https://github.com/Farama-Foundation/Shimmy/pull/88)

**Documentation Updates**
* Allow users to view source code of referenced objects on the website (https://github.com/Farama-Foundation/Shimmy/pull/78)
* Add text logo to homepage, matching other Farama sites (https://github.com/Farama-Foundation/Shimmy/pull/79)
* Fix homepage mobile images being squished (https://github.com/Farama-Foundation/Shimmy/pull/81)
* Fix typo on homepage image grid (https://github.com/Farama-Foundation/Shimmy/pull/86)
* Create CITATION.cff to allow easier citation of the repository (https://github.com/Farama-Foundation/Shimmy/pull/83)

**Full Changelog**: https://github.com/Farama-Foundation/Shimmy/compare/v1.0.0...v1.0.1

1.0.0

We are excited to announce the mature release of [Shimmy](https://shimmy.farama.org/), an API compatibility tool for converting external RL environments to the [Gymnasium](https://gymnasium.farama.org/) and [PettingZoo](https://pettingzoo.farama.org/) APIs. This allows users to access a wide range of single and multi-agent environments, all under a single standard API.

Within Reinforcement learning (RL), a number of API's are used to implement environments, with limited ability to convert between them. This makes training agents across different APIs highly difficult. Shimmy addresses this issue by integrating a range of APIs into the Farama ecosystem. This is part of the [Farama Foundation](https://farama.org/)'s greater goal of creating a unified and user-friendly ecosystem for open-source reinforcement learning software, for both research and industry.

We plan to maintain Shimmy for the long term, and are welcome to new contributions or suggestions. Future plans include general [DM Env](https://github.com/deepmind/dm_env) and [DM lab2d](https://github.com/deepmind/lab2d) support, and additional environments such as [ai-safety-gridworlds](https://github.com/deepmind/ai-safety-gridworlds).

Shimmy's documentation can be found at [shimmy.farama.org](https://shimmy.farama.org/). This includes an overview of each environment with screenshots, installation instructions, full usage scripts, and API information.

Environments

Single-agent (Gymnasium wrappers):

* [Arcade Learning Environments](https://github.com/mgbellemare/Arcade-Learning-Environment)
* [DeepMind Behavior Suite](https://shimmy.farama.org/contents/bsuite/)
* [DeepMind Control](https://github.com/deepmind/dm_control/)
* [DeepMind Lab](https://github.com/deepmind/lab)
* [OpenAI Gym](https://github.com/openai/gym) - [V21](https://github.com/openai/gym/releases/tag/v0.21.0)
* [OpenAI Gym](https://github.com/openai/gym) - [V26](https://github.com/openai/gym/releases/tag/0.26.0) (breaking API change)

Multi-agent (PettingZoo wrappers):

* [DeepMind OpenSpiel](https://github.com/deepmind/open_spiel)
* [DeepMind Control: Soccer](https://github.com/deepmind/dm_control/blob/main/dm_control/locomotion/soccer/README.md)
* [DeepMind Melting Pot](https://github.com/deepmind/meltingpot)


Single-agent environments can be easily loaded using Gymnasium’s [registry ](https://gymnasium.farama.org/api/registry/)and `make()` function as follows:

python
import gymnasium as gym
env = gym.make("dm_control/acrobot-swingup_sparse-v0", render_mode="human")


Multi-agent environments can be loaded with PettingZoo as follows:
python
from shimmy import MeltingPotCompatibilityV0
env = MeltingPotCompatibilityV0(substrate_name="prisoners_dilemma_in_the_matrix__arena", render_mode="human")


Breaking Changes

`OpenspielCompatibilityV0` has been renamed to `OpenSpielCompatibilityV0` (correct spelling of [OpenSpiel](https://github.com/deepmind/open_spiel))

Since the v0.21.0 release, the `setup.py` has been updated to include separate install options for gym V21 and V26:

* Instead of `pip install shimmy[gym]`, you must select either: `pip install shimmy[gym-v21]` or `pip install shimmy[gym-v26]`

New Features and Improvements

This release adds support for three additional environments:

* [DeepMind Lab](https://github.com/deepmind/lab) (single-agent)
* [DeepMind Behavior Suite](https://shimmy.farama.org/contents/bsuite/) (single-agent)
* [DeepMind Melting Pot](https://github.com/deepmind/meltingpot) (multi-agent)

This release also expands automated testing to cover each environment ([51](https://github.com/Farama-Foundation/Shimmy/pull/51)) and adds pickling tests ([#53](https://github.com/Farama-Foundation/Shimmy/pull/53)), ensuring that each environment can be serialized/deserialized via [pickle](https://docs.python.org/3/library/pickle.html).

[Dockerfiles](https://docs.docker.com/engine/reference/builder/) have been expanded to cover each environment ([#52](https://github.com/Farama-Foundation/Shimmy/pull/52)), located in [/bin/](https://github.com/Farama-Foundation/Shimmy/tree/main/bin). These are primarily used for automated testing, but can also be used locally ([#65](https://github.com/Farama-Foundation/Shimmy/pull/65)), allowing environments to be used on any platform (see [Getting Started: Docker](https://shimmy.farama.org/content/getting_started/#docker) for more information).

The [DeepMind Lab](https://github.com/deepmind/lab) and [Melting Pot](https://github.com/deepmind/meltingpot) environments are not available in distributed releases (via [PyPi](https://pypi.org/) or elsewhere), and thus cannot be easily installed via `pip install`. For these environments, we provide full [installation scripts](https://github.com/Farama-Foundation/Shimmy/tree/main/scripts) for both MacOS and Linux.

* [/scripts/install_dm_lab.sh](https://github.com/Farama-Foundation/Shimmy/blob/main/scripts/install_dm_lab.sh)
* [/scripts/install_melting_pot.sh](https://github.com/Farama-Foundation/Shimmy/blob/main/scripts/install_melting_pot.sh)

Bug Fixes and Documentation Updates

This release includes a major documentation overhaul, updating the project to comply with Farama [Project Standards](https://farama.org/project_standards) ([#66](https://github.com/Farama-Foundation/Shimmy/pull/66)). This includes a [Getting Started](https://shimmy.farama.org/content/getting_started/) page, with installation information, and a [Basic Usage](https://shimmy.farama.org/content/basic_usage/) page, with reference information on using both single- and multi-agent environments.

Documentation has also been standardized to include descriptions of each environment, with links to documentation and related libraries, and images of the environment for reference ([43](https://github.com/Farama-Foundation/Shimmy/pull/43), [#47](https://github.com/Farama-Foundation/Shimmy/pull/47) [#49](https://github.com/Farama-Foundation/Shimmy/pull/49)).

Full example usage scripts are now provided for each environment, allowing users to easily load and interact with an environment without prior knowledge.

Example: run a `dm-control` environment:

python
observation, info = env.reset(seed=42)
for _ in range(1000):
action = env.action_space.sample() this is where you would insert your policy
observation, reward, terminated, truncated, info = env.step(action)

if terminated or truncated:
observation, info = env.reset()
env.close()

**Full Changelog**: https://github.com/Farama-Foundation/Shimmy/compare/v0.2.1...v1.0.0

Page 1 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.