in ppo_ewma/logger.py [0:0]
def dump_kwargs(func):
"""
Prints all keyword-only parameters of a function. Useful to print hyperparameters used.
Usage:
@logger.dump_kwargs
def create_policy(*, hp1, hp2, hp3): ...
or
logger.dump_kwargs(ppo.learn)(lr=60e-5, ...)
"""
def func_wrapper(*args, **kwargs):
import inspect, textwrap
sign = inspect.signature(func)
for k, p in sign.parameters.items():
if p.kind == inspect.Parameter.KEYWORD_ONLY:
default = "%15s (default)" % str(sign.parameters[k].default)
get_current().log(
"%s.%s: %15s = %s"
% (
func.__module__,
func.__qualname__,
k,
textwrap.shorten(
str(kwargs.get(k, default)),
width=70,
drop_whitespace=False,
placeholder="...",
),
)
)
return func(*args, **kwargs)
return func_wrapper