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)}') |