Files
Gymnasium/setup.py

91 lines
2.9 KiB
Python
Raw Normal View History

"""Setups the project."""
import itertools
import re
2021-07-29 02:26:34 +02:00
from setuptools import find_packages, setup
2016-04-27 08:00:58 -07:00
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)
2016-04-27 08:00:58 -07:00
2016-07-27 13:57:35 -07:00
# Environment-specific dependencies.
extras = {
"atari": ["ale-py~=0.7.5"],
"accept-rom-license": ["autorom[accept-rom-license]~=0.4.2"],
"box2d": ["box2d-py==2.3.5", "pygame==2.1.0"],
"classic_control": ["pygame==2.1.0"],
2022-05-24 08:47:51 -04:00
"mujoco_py": ["mujoco_py<2.2,>=2.1"],
"mujoco": ["mujoco==2.2.0", "imageio>=2.14.1"],
"toy_text": ["pygame==2.1.0"],
Pydocstyle utils vector docstring (#2788) * Added pydocstyle to pre-commit * Added docstrings for tests and updated the tests for autoreset * Add pydocstyle exclude folder to allow slowly adding new docstrings * Add docstrings for setup.py and gym/__init__.py, core.py, error.py and logger.py * Check that all unwrapped environment are of a particular wrapper type * Reverted back to import gym.spaces.Space to gym.spaces * Fixed the __init__.py docstring * Fixed autoreset autoreset test * Updated gym __init__.py top docstring * Fix examples in docstrings * Add docstrings and type hints where known to all functions and classes in gym/utils and gym/vector * Remove unnecessary import * Removed "unused error" and make APIerror deprecated at gym 1.0 * Add pydocstyle description to CONTRIBUTING.md * Added docstrings section to CONTRIBUTING.md * Added :meth: and :attr: keywords to docstrings * Added :meth: and :attr: keywords to docstrings * Imported annotations from __future__ to fix python 3.7 * Add __future__ import annotations for python 3.7 * isort * Remove utils and vectors for this PR and spaces for previous PR * Update gym/envs/classic_control/acrobot.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/envs/classic_control/acrobot.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/envs/classic_control/acrobot.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/spaces/dict.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/env_checker.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/ezpickle.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/ezpickle.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Update gym/utils/play.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Pre-commit * Updated docstrings with :meth: * Updated docstrings with :meth: * Update gym/utils/play.py * Update gym/utils/play.py * Update gym/utils/play.py * Apply suggestions from code review Co-authored-by: Markus Krimmel <montcyril@gmail.com> * pre-commit * Update gym/utils/play.py Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Updated fps and zoom parameter docstring * Update play docstring * Apply suggestions from code review Added suggested corrections from @markus28 Co-authored-by: Markus Krimmel <montcyril@gmail.com> * Pre-commit magic * Update the `gym.make` docstring with a warning for `env_checker` * Updated and fixed vector docstrings * Update test names for reflect the project filename style Co-authored-by: Markus Krimmel <montcyril@gmail.com>
2022-05-20 14:49:30 +01:00
"other": ["lz4>=3.1.0", "opencv-python>=3.0", "matplotlib>=3.0"],
2016-07-27 13:57:35 -07:00
}
# 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(
set(itertools.chain.from_iterable(map(lambda group: extras[group], all_groups)))
2021-07-29 02:26:34 +02:00
)
2016-07-27 13:57:35 -07:00
2022-06-01 00:24:11 -04:00
# Uses the readme as the description on PyPI
with open("README.md") as fh:
long_description = ""
header_count = 0
for line in fh:
if line.startswith("##"):
header_count += 1
if header_count < 2:
long_description += line
else:
break
2021-07-29 02:26:34 +02:00
setup(
author="Gym Community",
author_email="jkterry@umd.edu",
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",
2022-06-01 00:24:11 -04:00
long_description=long_description,
long_description_content_type="text/markdown",
name="gym",
packages=[package for package in find_packages() if package.startswith("gym")],
2021-07-29 02:26:34 +02:00
package_data={
"gym": [
"envs/mujoco/assets/*.xml",
"envs/classic_control/assets/*.png",
"envs/toy_text/font/*.ttf",
"envs/toy_text/img/*.png",
"py.typed",
2021-07-29 02:26:34 +02:00
]
},
python_requires=">=3.6",
tests_require=extras["testing"],
url="https://www.gymlibrary.ml/",
version=VERSION,
zip_safe=False,
2016-04-27 08:00:58 -07:00
)