63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
from typing import Optional, Union
|
|
|
|
|
|
def convert_string_to_type(
|
|
val: Optional[Union[str, int, float, bool]], convert_type: Union[int, float, bool]
|
|
) -> Union[int, float, bool]:
|
|
"""Convert the given value to a convert type.
|
|
|
|
If the given val is None, it will just return None without the conversion.
|
|
|
|
It supports,
|
|
str -> int/float/bool
|
|
int -> int
|
|
bool -> bool
|
|
float -> float
|
|
"""
|
|
if val is None:
|
|
return None
|
|
elif type(val) is convert_type:
|
|
return val
|
|
elif convert_type is int:
|
|
try:
|
|
val = int(val)
|
|
except ValueError:
|
|
raise ValueError(
|
|
f"Failed to convert a value {val} of type {type(val)} to {convert_type}"
|
|
)
|
|
elif convert_type is float:
|
|
try:
|
|
val = float(val)
|
|
except ValueError:
|
|
raise ValueError(
|
|
f"Failed to convert a value {val} of type {type(val)} to {convert_type}"
|
|
)
|
|
elif convert_type is bool:
|
|
# Without this, "False" will become True.
|
|
if val == "False" or val == "false" or val == "0":
|
|
val = False
|
|
elif val == "True" or val == "true" or val == "1":
|
|
val = True
|
|
else:
|
|
raise ValueError(
|
|
f"Failed to convert a value {val} of type {type(val)} to {convert_type}"
|
|
)
|
|
else:
|
|
assert False, f"Unsupported convert type {convert_type}"
|
|
return val
|
|
|
|
|
|
def record_deprecated_state_api_import():
|
|
import warnings
|
|
|
|
from ray._common.usage.usage_lib import TagKey, record_extra_usage_tag
|
|
|
|
warnings.warn(
|
|
"Ray state API is no longer experimental. Please import from `ray.util.state`. "
|
|
"instead. Importing from `ray.experimental` will be deprecated in "
|
|
"future releases. ",
|
|
DeprecationWarning,
|
|
)
|
|
|
|
record_extra_usage_tag(TagKey.EXPERIMENTAL_STATE_API_IMPORT, "1")
|