| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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")
|