#! /usr/bin/python # -*- coding: utf-8 -*- from __future__ import absolute_import import hyperdash as hd import tensorlayer as tl __all__ = ["HyperDashHandler", "monitor", "Experiment", "IPythonMagicsWrapper"] class HyperDashHandler(object): apikey = None @classmethod def reset_apikey(cls): cls.apikey = None @classmethod def set_apikey(cls, apikey): cls.apikey = apikey @classmethod def get_apikey(cls): if cls.apikey is None: raise ValueError( "Hyperdash API is not set.\n" "You can obtain your API Key using: `hyperdash login --email` or `hyperdash login --github`\n" "You should first call `HyperDashHandler.set_apikey('my_api_key')` in order to use `hyperdash`" ) tl.logging.debug("Hyperdash API Key: %s" % cls.apikey) return cls.apikey @classmethod def monitor(cls, model_name, api_key=None, capture_io=True): if api_key is not None: cls.set_apikey(api_key) return hd.monitor(model_name, api_key_getter=cls.get_apikey, capture_io=capture_io) class Experiment(hd.Experiment): def __init__( self, model_name, api_key=None, capture_io=True, ): if api_key is not None: HyperDashHandler.set_apikey(api_key) super(Experiment, self).__init__(model_name=model_name, api_key_getter=HyperDashHandler.get_apikey, capture_io=capture_io) monitor = HyperDashHandler.monitor IPythonMagicsWrapper = hd.IPythonMagicsWrapper