* Add support for python 3.6
* Add support for python 3.6
* Added check for python 3.6 to not install mujoco as no version exists
* Fixed the install groups for python 3.6
* Re-added python 3.6 support for gym
* black
* Added support for dataclasses through dataclasses module in setup that backports the module
* Fixed install requirements
* Re-added dummy env spec with dataclasses
* Changed type for compatability for python 3.6
* Added a python 3.6 warning
* Fixed python 3.6 typing issue
* Removed __future__ import annotation for python 3.6 support
* Fixed python 3.6 typing
* Updated docstrings using darglint, ignoring 402 and 202 plus shortened lines into multiple where they were overflowing
* Remove abstract method decorators, for a future PR
* Add __future__ import annotation for python 3.7+ notion
* Added missing bracket
* Fix minor docstring tables
* Fixed minor docstring issues found on the website
* Updated the top docstrings with mujoco environments that fixed the observation and action tables. Added v4 gym.make code
* Added docstrings for spaces, WIP
* Formatting changes
* Use raw docstring for Box.sample
* Formatting fix
* Formatting fix
* Use :class:, :meth:, formatting fixes, resolve TODO, use Optional
* Add a case for the Box shape where the low and high values are both scalars
* Add seeding.RandomNumberGenerator parameter to Dict seed. Modify __repr__ for the dictionary space string looks similar to an actual dictionary
* Add seeding.RandomNumberGenerator parameter to Multi Binary seed
* Add seeding.RandomNumberGenerator parameter to Multi Binary seed. Modify nvec typing to include np.ndarray
* Space seed typing can be a seeding.RandomNumberGenerator. If a seeding.RNG is provided then it is assigned to _np_random and .seed is not run
* Fixed the tuple seeding type as List[int] is not a valid Space seed type
* Added typing to batch_space. The batch_space seed is equal to the space's seeding
* Fixed the seeding type
* Add test for batch space seeds are identical to the original space's seeding
* Add equivalence function for RandomNumberGenerator comparing the bit_generator.state
* The batch_space functions uses a copy of the seed for the original space
* Set the action space seed for sync_vector_env seed testing
* Add test for the seeding of the sync vector environment
* Update the test_batch_space_seed to check the resulting sampling are equivalent for testing
* Revert representation back to the original version
* Remove additional Box shape initialisation
* Remove additional typing of MultiDiscrete
* Fixed bug of Space batch space where the original space's np_random is not a complete copy of the original space
* Add CustomSpace to the batched space seed test
* Modify the CustomSpace sample to produce a random number not a static value
* Fix CustomSpace to reflect the sample function
* Copy the space.np_random for the batched_space seed to ensure that the original space doesn't sampling doesn't effect the batched_space
* Parameterized the batch_space_seed, added testing for rng_different_at_each_index and test_deterministic
* Black and isort pre-commit changes
* Pre-commit fix
* MacOS, test_read_from_shared_memory throws an error that the inner _process_write function was unpicklable. Making the function a top-level function solves this error
* Fixed typing of seed where a space's seed function differs from Space.seed's typing
* Added check that the sample lengths are equal and explicitly provided the number of batched spaces n=1
* Removed relative imports for absolute imports
* Use deepcopy instead of copy
* Replaces `from numpy.testing._private.utils import assert_array_equal` with `from numpy.testing import assert_array_equal`
* Using the seeding `__eq__` function, replace `np_random.bit_generator.state` with `np_random`
* Added docstrings and comments to the tests to explain their purpose
* Remove __eq__ from RandomNumberGenerator and add to tests/vector/utils
* Add sync vector determinism test for issue #2680
* Fixed bug for 462101d384 (r850740825)
* Made the new seeds a list of integers
* Moved pygame imports into render
* Formatting
* Make pygame optional for box2d, try to make formatting work
* fix tests, fix pre-commit.
* Update ci linter config.
* fix type hints for latest pyright version and backward compatibility with numpy <= 1.21.5
* pre-commit.
Co-authored-by: Ariel Kwiatkowski <ariel.j.kwiatkowski@gmail.com>
Co-authored-by: Gianluca De Cola <gianluca.decola@ags-it.com>
* Box Boundedness determined using get_inf instead of np.inf
* Store original array entries for determining boundedness
* Capture the boundedness before casting away the np.inf
* Removed requirement that integer spaces be bounded above and below
* np full casts away the inf, so using dtype float for boundedness evaluation
* Removed commented code
* But the type ignore hint back in
* Spacing change from black code formatter
* typing in spaces.Box and spaces.Discrete
* adds typing to dict and tuple spaces
* Typecheck all spaces
* Explicit regex to include all files under space folder
* Style: use native types and __future__ annotations
* Allow only specific strings for Box.is_bounded args
* Add typing to changes from #2517
* Remove Literal as it's not supported by py3.7
* Use more recent version of pyright
* Avoid name clash for type checker
* Revert "Avoid name clash for type checker"
This reverts commit 1aaf3e0e0328171623a17a997b65fe734bc0afb1.
* Ignore the error. It's reported as probable bug at https://github.com/microsoft/pyright/issues/2852
* rebase and add typing for `_short_repr`
* fix box infinite bounds
* Revert "fix box infinite bounds"
This reverts commit 8e27a01fda839f522fc5a0855350e5a543359c47.
* fix box space infinite bounds
* experiencing unit test failures with master build on windows, shifting to Linux to test
* box space infinite bounds fixed, all unit test pass, though the solution is still less elegant than I'd like
* bracket fix
* black formatting
* remove redundant casting to np.array for array spaces
* previous changes unintentionally changed the sampling method for float dtype infinite, this commit fixes that. Float infinite bounds are sampled either using shifted exponential or normal depending on circumstance, but int infinite bounds are always sampled uniformly.
* added more tests as per #2517, made some error messages more descriptive, changed logic for calculating inf for ints
* accidentally commented out something I shouldn't have commented out
* moved get_inf and get_precision to non-static functions
* Move get_precision and get_inf outside of class
* Don't edit code within github's editor lol:wq
* black
* Make the seed in default initialization controllable
Since seed() is being called in default initialization of Space, it should be controllable for reproducibility.
* Updated derived classes of Space to have their seeds controllable at initialization.
* Allow Tuple's spaces to each have their own seed
* Added dict based seeding for Dict space; test cases for Tuple and Dict seeding
* Update discrete.py
* Update test_spaces.py
* Add seed to __init__()
* blacked
* Fix black
* Fix failing tests
* box.contains check dtype and promote non-ndarrays
Closes: https://github.com/openai/gym/issues/2357 and #2298
Instead of only casting list to ndarray, cast any class to ndarray (if possible) and emit a warning when casting. Also, check if the dtype of the input matches the dtype of the space.
* use import warnings
* blackify
* changs from code review
* fix wrapped space
Co-authored-by: Tristan Deleu <tristandeleu@users.noreply.github.com>
* fix box bondaries
Co-authored-by: Tristan Deleu <tristandeleu@users.noreply.github.com>
* TEST: add regression test.
* STY: black
Co-authored-by: Tristan Deleu <tristandeleu@users.noreply.github.com>
* include low, high, & dtype in spaces.Box.__repr__
multitask learners need a way to make a sensor for each space, and it's possible for two different Box spaces to have the same shape but different low/high/dtype, so this pull request just adds the minimum low value, maximum high value, and the dtype to Box.__repr__ so we can use str(box_space) as a key in a ModuleDict of sensors
* f-string to format
* fix typo
Co-authored-by: Peter Zhokhov <peterz@openai.com>
The current implementation of Box doesn't allow passing an array as low or high while also providing a shape.
The current implementation of Box doesn't allow passing an array as low or high and a constant as the other bound.
Co-authored-by: pzhokhov <peterz@openai.com>
* Force explicit Box dtype
Having the `dtype` argument defaut to `np.float32` without warning can generate some unexpected issues.
For example:
```python
import gym
import numpy as np
num = np.array(3.1415926035897932)
gym.spaces.Box(-num, num).contains(num) # returns False
```
* Warn on lowered precision
* Added support for unbounded box endpoints.
* Documentation and code cleanup.
* Fixed some of the logic of upper bounded versus lower bounded spaces.
* Included unbounded Box instances for the original tests.
* Removed unnecessary attribute in the Box class.
`contains` really should not exist when it does exactly what the builtin
magic method `__contains__` was meant for, but that would break backward
compatibility.
* add dtype to Box
* remove board_game, debugging, safety, parameter_tuning environments
* massive set of breaking changes
- remove python logging module
- _step, _reset, _seed, _close => non underscored method
- remove benchmark and scoring folder
* Improve render("human"), now resizable, closable window.
* get rid of default step and reset in wrappers, so it doesn’t silently fail for people with underscore methods
* CubeCrash unit test environment
* followup fixes
* MemorizeDigits unit test envrionment
* refactored spaces a bit
fixed indentation
disabled test_env_semantics
* fix unit tests
* fixes
* CubeCrash, MemorizeDigits tested
* gym backwards compatibility patch
* gym backwards compatibility, followup fixes
* changelist, add spaces to main namespaces
* undo_logger_setup for backwards compat
* remove configuration.py
* Make environments seedable
* Fix monitor bugs
- Set monitor_id before setting the infix. This was a bug that would yield incorrect results with multiple monitors.
- Remove extra pid from stats recorder filename. This should be purely cosmetic.
* Start uploading seeds in episode_batch
* Fix _bigint_from_bytes for python3
* Set seed explicitly in random_agent
* Pass through seed argument
* Also pass through random state to spaces
* Pass random state into the observation/action spaces
* Make all _seed methods return the list of used seeds
* Switch over to np.random where possible
* Start hashing seeds, and also seed doom engine
* Fixup seeding determinism in many cases
* Seed before loading the ROM
* Make seeding more Python3 friendly
* Make the MuJoCo skipping a bit more forgiving
* Remove debugging PDB calls
* Make setInt argument into raw bytes
* Validate and upload seeds
* Skip box2d
* Make seeds smaller, and change representation of seeds in upload
* Handle long seeds
* Fix RandomAgent example to be deterministic
* Handle integer types correctly in Python2 and Python3
* Try caching pip
* Try adding swap
* Add df and free calls
* Bump swap
* Bump swap size
* Try setting overcommit
* Try other sysctls
* Try fixing overcommit
* Try just setting overcommit_memory=1
* Add explanatory comment
* Add what's new section to readme
* BUG: Mark ElevatorAction-ram-v0 as non-deterministic for now
* Document seed
* Move nondetermistic check into spec