keras/keras_core/utils/io_utils.py

80 lines
2.4 KiB
Python
Raw Normal View History

2023-04-09 22:51:23 +00:00
import sys
2023-04-09 22:51:23 +00:00
from absl import logging
from keras_core.api_export import keras_core_export
2023-05-03 22:33:40 +00:00
from keras_core.backend.common import global_state
2023-04-09 22:51:23 +00:00
2023-05-06 21:34:46 +00:00
@keras_core_export("keras_core.config.enable_interactive_logging")
2023-04-09 22:51:23 +00:00
def enable_interactive_logging():
"""Turn on interactive logging.
When interactive logging is enabled, Keras displays logs via stdout.
This provides the best experience when using Keras in an interactive
environment such as a shell or a notebook.
"""
global_state.set_global_setting("interactive_logging", True)
2023-04-09 22:51:23 +00:00
2023-05-06 21:34:46 +00:00
@keras_core_export("keras_core.config.disable_interactive_logging")
2023-04-09 22:51:23 +00:00
def disable_interactive_logging():
"""Turn off interactive logging.
When interactive logging is disabled, Keras sends logs to `absl.logging`.
This is the best option when using Keras in a non-interactive
way, such as running a training or inference job on a server.
"""
global_state.set_global_setting("interactive_logging", False)
2023-04-09 22:51:23 +00:00
2023-05-06 21:34:46 +00:00
@keras_core_export("keras_core.config.is_interactive_logging_enabled")
2023-04-09 22:51:23 +00:00
def is_interactive_logging_enabled():
"""Check if interactive logging is enabled.
To switch between writing logs to stdout and `absl.logging`, you may use
2023-05-06 21:34:46 +00:00
`keras.config.enable_interactive_logging()` and
`keras.config.disable_interactie_logging()`.
2023-04-09 22:51:23 +00:00
Returns:
2023-05-06 21:34:46 +00:00
Boolean, `True` if interactive logging is enabled,
and `False` otherwise.
2023-04-09 22:51:23 +00:00
"""
return global_state.get_global_setting("interactive_logging", True)
2023-04-09 22:51:23 +00:00
def print_msg(message, line_break=True):
"""Print the message to absl logging or stdout."""
if is_interactive_logging_enabled():
if line_break:
sys.stdout.write(message + "\n")
else:
sys.stdout.write(message)
sys.stdout.flush()
else:
logging.info(message)
2023-04-26 21:54:00 +00:00
def ask_to_proceed_with_overwrite(filepath):
"""Produces a prompt asking about overwriting a file.
Args:
filepath: the path to the file to be overwritten.
Returns:
True if we can proceed with overwrite, False otherwise.
"""
overwrite = (
input(f"[WARNING] {filepath} already exists - overwrite? [y/n]")
.strip()
.lower()
)
while overwrite not in ("y", "n"):
overwrite = (
input('Enter "y" (overwrite) or "n" (cancel).').strip().lower()
)
if overwrite == "n":
return False
print_msg("[TIP] Next time specify overwrite=True!")
return True