mirror of
https://github.com/clearml/clearml-agent
synced 2025-01-31 09:06:52 +00:00
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
from os import getenv, environ
|
|
|
|
from .converters import text_to_bool
|
|
from .entry import Entry, NotSet
|
|
|
|
|
|
class EnvEntry(Entry):
|
|
@classmethod
|
|
def default_conversions(cls):
|
|
conversions = super(EnvEntry, cls).default_conversions().copy()
|
|
conversions[bool] = text_to_bool
|
|
return conversions
|
|
|
|
def _get(self, key):
|
|
value = getenv(key, "").strip()
|
|
return value or NotSet
|
|
|
|
def _set(self, key, value):
|
|
environ[key] = value
|
|
|
|
def __str__(self):
|
|
return "env:{}".format(super(EnvEntry, self).__str__())
|
|
|
|
def error(self, message):
|
|
print("Environment configuration: {}".format(message))
|
|
|
|
|
|
def backward_compatibility_support():
|
|
from ..definitions import ENVIRONMENT_CONFIG, ENVIRONMENT_SDK_PARAMS, ENVIRONMENT_BACKWARD_COMPATIBLE
|
|
if not ENVIRONMENT_BACKWARD_COMPATIBLE.get():
|
|
return
|
|
|
|
# Add ALG_ prefix on every TRAINS_ os environment we support
|
|
for k, v in ENVIRONMENT_CONFIG.items():
|
|
try:
|
|
trains_vars = [var for var in v.vars if var.startswith('TRAINS_')]
|
|
if not trains_vars:
|
|
continue
|
|
alg_var = trains_vars[0].replace('TRAINS_', 'ALG_', 1)
|
|
if alg_var not in v.vars:
|
|
v.vars = tuple(list(v.vars) + [alg_var])
|
|
except:
|
|
continue
|
|
for k, v in ENVIRONMENT_SDK_PARAMS.items():
|
|
try:
|
|
trains_vars = [var for var in v if var.startswith('TRAINS_')]
|
|
if not trains_vars:
|
|
continue
|
|
alg_var = trains_vars[0].replace('TRAINS_', 'ALG_', 1)
|
|
if alg_var not in v:
|
|
ENVIRONMENT_SDK_PARAMS[k] = tuple(list(v) + [alg_var])
|
|
except:
|
|
continue
|