From b45840737e6973971d276e225c308d5a9137d4c6 Mon Sep 17 00:00:00 2001 From: Sumanth Ratna Date: Wed, 5 May 2021 03:32:45 -0400 Subject: [PATCH] Add validation to `ray.ray_constants.env_integer` (#15541) --- python/ray/ray_constants.py | 9 ++++++++- python/ray/tune/integration/docker.py | 2 +- python/ray/tune/syncer.py | 2 +- python/ray/tune/utils/__init__.py | 4 ++-- python/ray/tune/utils/util.py | 11 ----------- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/python/ray/ray_constants.py b/python/ray/ray_constants.py index 21065f6bf..c2e87bfc7 100644 --- a/python/ray/ray_constants.py +++ b/python/ray/ray_constants.py @@ -9,7 +9,14 @@ logger = logging.getLogger(__name__) def env_integer(key, default): if key in os.environ: - return int(os.environ[key]) + value = os.environ[key] + if value.isdigit(): + return int(os.environ[key]) + + logger.debug(f"Found {key} in environment, but value must " + f"be an integer. Got: {value}. Returning " + f"provided default {default}.") + return default return default diff --git a/python/ray/tune/integration/docker.py b/python/ray/tune/integration/docker.py index b3cb1d3ea..2c802d4b6 100644 --- a/python/ray/tune/integration/docker.py +++ b/python/ray/tune/integration/docker.py @@ -5,7 +5,7 @@ from ray import services from ray.autoscaler.sdk import rsync, configure_logging from ray.tune.syncer import NodeSyncer from ray.tune.sync_client import SyncClient -from ray.tune.utils import env_integer +from ray.ray_constants import env_integer class DockerSyncer(NodeSyncer): diff --git a/python/ray/tune/syncer.py b/python/ray/tune/syncer.py index 16d068f85..553ad6fd1 100644 --- a/python/ray/tune/syncer.py +++ b/python/ray/tune/syncer.py @@ -17,7 +17,7 @@ from ray.tune.callback import Callback from ray.tune.checkpoint_manager import Checkpoint from ray.tune.result import NODE_IP from ray.util.debug import log_once -from ray.tune.utils.util import env_integer +from ray.ray_constants import env_integer from ray.tune.cluster_info import get_ssh_key, get_ssh_user from ray.tune.sync_client import (CommandBasedClient, get_sync_client, get_cloud_sync_client, NOOP) diff --git a/python/ray/tune/utils/__init__.py b/python/ray/tune/utils/__init__.py index 3210e9465..888f241e2 100644 --- a/python/ray/tune/utils/__init__.py +++ b/python/ray/tune/utils/__init__.py @@ -3,12 +3,12 @@ from ray.tune.utils.util import ( pin_in_object_store, unflattened_lookup, UtilMonitor, validate_save_restore, warn_if_slow, diagnose_serialization, detect_checkpoint_function, detect_reporter, detect_config_single, - env_integer, wait_for_gpu) + wait_for_gpu) __all__ = [ "deep_update", "date_str", "flatten_dict", "get_pinned_object", "merge_dicts", "pin_in_object_store", "unflattened_lookup", "UtilMonitor", "validate_save_restore", "warn_if_slow", "diagnose_serialization", "detect_checkpoint_function", "detect_reporter", "detect_config_single", - "env_integer", "wait_for_gpu" + "wait_for_gpu" ] diff --git a/python/ray/tune/utils/util.py b/python/ray/tune/utils/util.py index bdabbe6ac..93e0c58ad 100644 --- a/python/ray/tune/utils/util.py +++ b/python/ray/tune/utils/util.py @@ -184,17 +184,6 @@ def is_nan_or_inf(value): return np.isnan(value) or np.isinf(value) -def env_integer(key, default): - # TODO(rliaw): move into ray.constants - if key in os.environ: - value = os.environ[key] - if value.isdigit(): - return int(os.environ[key]) - raise ValueError(f"Found {key} in environment, but value must " - f"be an integer. Got: {value}.") - return default - - def merge_dicts(d1, d2): """ Args: