Skip to content

Commit

Permalink
Rewrite setup (#2865)
Browse files Browse the repository at this point in the history
* Updated testing requirements based off extra["testing"]

* Updated setup to check the version is valid, added testing and all dependency groups and collects the requirements from requirements.txt to keep everything standardized.

* Updated requirements.txt based on the current minimum gym requirements.txt to work

* Updated requirements.txt based on the current minimum gym requirements.txt to work

* Updated test_requirements.txt based on the current gym full testing requirements

* Pre-commit updates

* Add integer check for the `n` parameter

* The type of self.spaces is an Iterable which is absorbed by the tuple.

* Simplifies the environment checker to two files, env_checker.py and passive_env_checker.py with a new wrapper env_checker.py

* Adds the passive environment checker on `gym.make`

* Ignore the `check_env` warn parameter

* Ignore the `check_env` warn parameter

* Use the `data_equivalence` function

* Remove env_checker PR changes

* Move pip install pytest and mock to py 3.6

* Update setup.py and requirements.txt
  • Loading branch information
pseudo-rnd-thoughts authored Jun 6, 2022
1 parent 134de4a commit 734bd4b
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 55 deletions.
3 changes: 1 addition & 2 deletions py.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/.mujoco/mujoco210/bin
COPY . /usr/local/gym/
WORKDIR /usr/local/gym/

RUN if [ python:$PYTHON_VERSION = "python:3.6.15" ] ; then pip install .[box2d,classic_control,toy_text,other] ; else pip install .[noatari] ; fi
RUN pip install -r test_requirements.txt
RUN if [ python:$PYTHON_VERSION = "python:3.6.15" ] ; then pip install .[box2d,classic_control,toy_text,other] pytest mock ; else pip install .[testing] ; fi

ENTRYPOINT ["/usr/local/gym/bin/docker_entrypoint"]
15 changes: 10 additions & 5 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
ale-py~=0.7.5
opencv-python>=3.0
box2d-py==2.3.5
scipy>=1.4.1
numpy>=1.18.0
pyglet>=1.4.0
cloudpickle>=1.2.0
importlib_metadata>=4.8.0; python_version < '3.10'
gym_notices>=0.0.4
dataclasses==0.8; python_version == '3.6'
opencv-python>=3.0
lz4>=3.1.0
matplotlib>=3.0
box2d-py==2.3.5
pygame==2.1.0
ale-py~=0.7.5
mujoco==2.2.0
mujoco_py<2.2,>=2.1
imageio>=2.14.1
86 changes: 40 additions & 46 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
"""Setups the project."""
import itertools
import os.path
import sys
import re

from setuptools import find_packages, setup

# Don't import gym module here, since deps may not be installed
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "gym"))
from version import VERSION # noqa:E402
with open("gym/version.py") as file:
full_version = file.read()
assert (
re.match(r'VERSION = "\d\.\d+\.\d+"\n', full_version).group(0) == full_version
), f"Unexpected version: {full_version}"
VERSION = re.search(r"\d\.\d+\.\d+", full_version).group(0)

# Environment-specific dependencies.
extras = {
Expand All @@ -17,29 +19,20 @@
"classic_control": ["pygame==2.1.0"],
"mujoco_py": ["mujoco_py<2.2,>=2.1"],
"mujoco": ["mujoco==2.2.0", "imageio>=2.14.1"],
"toy_text": ["pygame==2.1.0", "scipy>=1.4.1"],
"toy_text": ["pygame==2.1.0"],
"other": ["lz4>=3.1.0", "opencv-python>=3.0", "matplotlib>=3.0"],
}

# Meta dependency groups.
nomujoco_blacklist = {"mujoco_py", "mujoco", "accept-rom-license", "atari"}
nomujoco_groups = set(extras.keys()) - nomujoco_blacklist

extras["nomujoco"] = list(
itertools.chain.from_iterable(map(lambda group: extras[group], nomujoco_groups))
)

noatari_blacklist = {"accept-rom-license", "atari"}
noatari_groups = set(extras.keys()) - noatari_blacklist
extras["noatari"] = list(
itertools.chain.from_iterable(map(lambda group: extras[group], noatari_groups))
)

all_blacklist = {"accept-rom-license"}
all_groups = set(extras.keys()) - all_blacklist
# Testing dependency groups.
testing_group = set(extras.keys()) - {"accept-rom-license", "atari"}
extras["testing"] = list(
set(itertools.chain.from_iterable(map(lambda group: extras[group], testing_group)))
) + ["pytest", "mock"]

# All dependency groups - accept rom license as requires user to run
all_groups = set(extras.keys()) - {"accept-rom-license"}
extras["all"] = list(
itertools.chain.from_iterable(map(lambda group: extras[group], all_groups))
set(itertools.chain.from_iterable(map(lambda group: extras[group], all_groups)))
)

# Uses the readme as the description on PyPI
Expand All @@ -55,25 +48,31 @@
break

setup(
name="gym",
version=VERSION,
description="Gym: A universal API for reinforcement learning environments",
url="https://www.gymlibrary.ml/",
author="Gym Community",
author_email="[email protected]",
classifiers=[
# Python 3.6 is minimally supported (only with basic gym environments and API)
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
],
description="Gym: A universal API for reinforcement learning environments",
extras_require=extras,
install_requires=[
"numpy >= 1.18.0",
"cloudpickle >= 1.2.0",
"importlib_metadata >= 4.8.0; python_version < '3.10'",
"gym_notices >= 0.0.4",
"dataclasses == 0.8; python_version == '3.6'",
],
license="MIT",
packages=[package for package in find_packages() if package.startswith("gym")],
zip_safe=False,
long_description=long_description,
long_description_content_type="text/markdown",
install_requires=[
"numpy>=1.18.0",
"cloudpickle>=1.2.0",
"importlib_metadata>=4.8.0; python_version < '3.10'",
"gym_notices>=0.0.4",
"dataclasses==0.8; python_version == '3.6'",
],
extras_require=extras,
name="gym",
packages=[package for package in find_packages() if package.startswith("gym")],
package_data={
"gym": [
"envs/mujoco/assets/*.xml",
Expand All @@ -83,14 +82,9 @@
"py.typed",
]
},
tests_require=["pytest", "mock"],
python_requires=">=3.6",
classifiers=[
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
],
tests_require=extras["testing"],
url="https://www.gymlibrary.ml/",
version=VERSION,
zip_safe=False,
)
12 changes: 10 additions & 2 deletions test_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
lz4~=3.1
pytest~=6.2
box2d-py==2.3.5
lz4>=3.1.0
opencv-python>=3.0
mujoco==2.2.0
matplotlib>=3.0
imageio>=2.14.1
pygame==2.1.0
mujoco_py<2.2,>=2.1
pytest
mock

0 comments on commit 734bd4b

Please sign in to comment.