43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
import logging
|
|
|
|
from ray.util.debug import log_once
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def truncate_operator_name(name: str, max_name_length: int) -> str:
|
|
from ray.data.context import DataContext
|
|
|
|
ctx = DataContext.get_current()
|
|
if not ctx.enable_progress_bar_name_truncation or len(name) <= max_name_length:
|
|
return name
|
|
|
|
op_names = name.split("->")
|
|
if len(op_names) == 1:
|
|
return op_names[0]
|
|
|
|
# Include as many operators as possible without approximately
|
|
# exceeding `MAX_NAME_LENGTH`. Always include the first and
|
|
# last operator names so it is easy to identify the DAG.
|
|
truncated_op_names = [op_names[0]]
|
|
for op_name in op_names[1:-1]:
|
|
if (
|
|
len("->".join(truncated_op_names))
|
|
+ len("->")
|
|
+ len(op_name)
|
|
+ len("->")
|
|
+ len(op_names[-1])
|
|
) > max_name_length:
|
|
truncated_op_names.append("...")
|
|
if log_once("ray_data_truncate_operator_name"):
|
|
logger.warning(
|
|
f"Truncating long operator name to {max_name_length} "
|
|
"characters. To disable this behavior, set "
|
|
"`ray.data.DataContext.get_current()."
|
|
"DEFAULT_ENABLE_PROGRESS_BAR_NAME_TRUNCATION = False`."
|
|
)
|
|
break
|
|
truncated_op_names.append(op_name)
|
|
truncated_op_names.append(op_names[-1])
|
|
return "->".join(truncated_op_names)
|