From b710c2f19daa660ab0c9a29d3ca59782fbc235d4 Mon Sep 17 00:00:00 2001 From: allegroai <> Date: Sat, 8 Aug 2020 12:49:33 +0300 Subject: [PATCH] Fix OS env var TRAINS_OFFLINE_MODE set to API version (e.g. 2.9) --- trains/backend_api/session/defs.py | 3 ++- trains/backend_api/session/session.py | 5 +++-- trains/backend_config/converters.py | 8 ++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/trains/backend_api/session/defs.py b/trains/backend_api/session/defs.py index c89ee867..a3958521 100644 --- a/trains/backend_api/session/defs.py +++ b/trains/backend_api/session/defs.py @@ -1,4 +1,5 @@ from ...backend_config import EnvEntry +from ...backend_config.converters import safe_text_to_bool ENV_HOST = EnvEntry("TRAINS_API_HOST", "ALG_API_HOST") @@ -8,4 +9,4 @@ ENV_ACCESS_KEY = EnvEntry("TRAINS_API_ACCESS_KEY", "ALG_API_ACCESS_KEY") ENV_SECRET_KEY = EnvEntry("TRAINS_API_SECRET_KEY", "ALG_API_SECRET_KEY") ENV_VERBOSE = EnvEntry("TRAINS_API_VERBOSE", "ALG_API_VERBOSE", type=bool, default=False) ENV_HOST_VERIFY_CERT = EnvEntry("TRAINS_API_HOST_VERIFY_CERT", "ALG_API_HOST_VERIFY_CERT", type=bool, default=True) -ENV_OFFLINE_MODE = EnvEntry("TRAINS_OFFLINE_MODE", "ALG_OFFLINE_MODE", type=bool) +ENV_OFFLINE_MODE = EnvEntry("TRAINS_OFFLINE_MODE", "ALG_OFFLINE_MODE", type=bool, converter=safe_text_to_bool) diff --git a/trains/backend_api/session/session.py b/trains/backend_api/session/session.py index 6ae4ca4d..3167372b 100644 --- a/trains/backend_api/session/session.py +++ b/trains/backend_api/session/session.py @@ -549,8 +549,9 @@ class Session(TokenManager): if offline_api: try: # check cast to float, but leave original str if we pass it. - float(offline_api) - cls._offline_default_version = str(offline_api) + # minimum version is 2.3 + if float(offline_api) >= 2.3: + cls._offline_default_version = str(offline_api) except ValueError: pass cls.api_version = cls._offline_default_version diff --git a/trains/backend_config/converters.py b/trains/backend_config/converters.py index 64901f3f..64aee770 100644 --- a/trains/backend_config/converters.py +++ b/trains/backend_config/converters.py @@ -24,6 +24,14 @@ def text_to_bool(value): return bool(strtobool(value)) +def safe_text_to_bool(value): + # type: (Text) -> bool + try: + return bool(strtobool(value)) + except ValueError: + return bool(value) + + def any_to_bool(value): # type: (Optional[Union[int, float, Text]]) -> bool if isinstance(value, six.text_type):