Spaces:
Running
Running
""" | |
utils.py | |
This file contains utility functions that are shared across the project. | |
These functions provide reusable logic to simplify code in other modules. | |
Functions: | |
- truncate_text: Truncates a string to a specified length with ellipses. (used for logging) | |
- validate_env_var: Ensures the presence of a specific environment variable and retrieves its value. | |
- validate_prompt_length: Ensures that a prompt does not exceed the specified minimum or maximum length. | |
""" | |
# Standard Library Imports | |
import os | |
# Local Application Imports | |
from src.config import logger | |
def truncate_text(text: str, max_length: int = 50) -> str: | |
""" | |
Truncate a string to the specified length, appending ellipses if necessary. | |
Args: | |
text (str): The text to truncate. | |
max_length (int): The maximum length of the truncated string. | |
Returns: | |
str: The truncated text. | |
Examples: | |
>>> truncate_text("Hello, World!", 5) | |
'Hello...' | |
>>> truncate_text("Short string", 20) | |
'Short string' | |
>>> truncate_text("Edge case with zero length", 0) | |
'' | |
""" | |
if max_length <= 0: | |
logger.warning(f'Invalid max_length={max_length}. Returning empty string.') | |
return '' | |
is_truncated = len(text) > max_length | |
if is_truncated: | |
logger.debug(f'Truncated text to {max_length} characters.') | |
return text[:max_length] + ('...' if is_truncated else '') | |
def validate_env_var(var_name: str) -> str: | |
""" | |
Validates that an environment variable is set and returns its value. | |
Args: | |
var_name (str): The name of the environment variable to validate. | |
Returns: | |
str: The value of the environment variable. | |
Raises: | |
ValueError: If the environment variable is not set. | |
Examples: | |
>>> import os | |
>>> os.environ["EXAMPLE_VAR"] = "example_value" | |
>>> validate_env_var("EXAMPLE_VAR") | |
'example_value' | |
>>> validate_env_var("MISSING_VAR") | |
Traceback (most recent call last): | |
... | |
ValueError: MISSING_VAR is not set. Please ensure it is defined in your environment variables. | |
""" | |
value = os.environ.get(var_name, '') | |
if not value: | |
raise ValueError(f'{var_name} is not set. Please ensure it is defined in your environment variables.') | |
return value | |
def validate_prompt_length(prompt: str, max_length: int, min_length: int) -> None: | |
""" | |
Validates that a prompt is within specified minimum and maximum length limits. | |
Args: | |
prompt (str): The input prompt to validate. | |
max_length (int): The maximum allowed length for the prompt. | |
min_length (int): The minimum required length for the prompt. | |
Raises: | |
ValueError: If the prompt is empty, too short, or exceeds max_length. | |
Example: | |
>>> validate_prompt_length("Hello world", max_length=500, min_length=5) | |
# Passes validation | |
>>> validate_prompt_length("", max_length=300, min_length=10) | |
# Raises ValueError: "Prompt must be at least 10 characters long." | |
""" | |
stripped_prompt = prompt.strip() | |
prompt_length = len(stripped_prompt) | |
logger.debug(f'Prompt length being validated: {prompt_length} characters') | |
if prompt_length < min_length: | |
raise ValueError( | |
f'Your prompt is too short. Please enter at least {min_length} characters. ' | |
f'(Current length: {prompt_length})' | |
) | |
if prompt_length > max_length: | |
raise ValueError( | |
f'Your prompt is too long. Please limit it to {max_length} characters. ' | |
f'(Current length: {prompt_length})' | |
) | |
logger.debug(f'Prompt length validation passed for prompt: {truncate_text(stripped_prompt)}') |