2018-12-08 16:28:58 -08:00
|
|
|
def override(cls):
|
|
|
|
"""Annotation for documenting method overrides.
|
|
|
|
|
2020-09-20 11:27:02 +02:00
|
|
|
Args:
|
2020-10-07 22:11:07 -04:00
|
|
|
cls (type): The superclass that provides the overridden method. If this
|
2018-12-08 16:28:58 -08:00
|
|
|
cls does not actually have the method, an error is raised.
|
|
|
|
"""
|
|
|
|
|
|
|
|
def check_override(method):
|
|
|
|
if method.__name__ not in dir(cls):
|
|
|
|
raise NameError("{} does not override any method of {}".format(
|
|
|
|
method, cls))
|
|
|
|
return method
|
|
|
|
|
|
|
|
return check_override
|
2019-01-23 21:27:26 -08:00
|
|
|
|
|
|
|
|
|
|
|
def PublicAPI(obj):
|
|
|
|
"""Annotation for documenting public APIs.
|
|
|
|
|
|
|
|
Public APIs are classes and methods exposed to end users of RLlib. You
|
|
|
|
can expect these APIs to remain stable across RLlib releases.
|
|
|
|
|
|
|
|
Subclasses that inherit from a ``@PublicAPI`` base class can be
|
2019-04-07 00:36:18 -07:00
|
|
|
assumed part of the RLlib public API as well (e.g., all trainer classes
|
|
|
|
are in public API because Trainer is ``@PublicAPI``).
|
2019-01-23 21:27:26 -08:00
|
|
|
|
2019-04-07 00:36:18 -07:00
|
|
|
In addition, you can assume all trainer configurations are part of their
|
2019-01-23 21:27:26 -08:00
|
|
|
public API as well.
|
|
|
|
"""
|
|
|
|
|
|
|
|
return obj
|
|
|
|
|
|
|
|
|
|
|
|
def DeveloperAPI(obj):
|
|
|
|
"""Annotation for documenting developer APIs.
|
|
|
|
|
|
|
|
Developer APIs are classes and methods explicitly exposed to developers
|
|
|
|
for the purposes of building custom algorithms or advanced training
|
|
|
|
strategies on top of RLlib internals. You can generally expect these APIs
|
|
|
|
to be stable sans minor changes (but less stable than public APIs).
|
|
|
|
|
|
|
|
Subclasses that inherit from a ``@DeveloperAPI`` base class can be
|
2020-05-21 10:16:18 -07:00
|
|
|
assumed part of the RLlib developer API as well.
|
2019-01-23 21:27:26 -08:00
|
|
|
"""
|
|
|
|
|
|
|
|
return obj
|