* 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