Spaces:
Build error
Build error
| import random | |
| import socket | |
| import time | |
| from openhands.core.logger import openhands_logger as logger | |
| def check_port_available(port: int) -> bool: | |
| sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
| try: | |
| sock.bind(('0.0.0.0', port)) | |
| return True | |
| except OSError: | |
| time.sleep(0.1) # Short delay to further reduce chance of collisions | |
| return False | |
| finally: | |
| sock.close() | |
| def find_available_tcp_port( | |
| min_port: int = 30000, max_port: int = 39999, max_attempts: int = 10 | |
| ) -> int: | |
| """Find an available TCP port in a specified range. | |
| Args: | |
| min_port (int): The lower bound of the port range (default: 30000) | |
| max_port (int): The upper bound of the port range (default: 39999) | |
| max_attempts (int): Maximum number of attempts to find an available port (default: 10) | |
| Returns: | |
| int: An available port number, or -1 if none found after max_attempts | |
| """ | |
| rng = random.SystemRandom() | |
| ports = list(range(min_port, max_port + 1)) | |
| rng.shuffle(ports) | |
| for port in ports[:max_attempts]: | |
| if check_port_available(port): | |
| return port | |
| return -1 | |
| def display_number_matrix(number: int) -> str | None: | |
| if not 0 <= number <= 999: | |
| return None | |
| # Define the matrix representation for each digit | |
| digits = { | |
| '0': ['###', '# #', '# #', '# #', '###'], | |
| '1': [' #', ' #', ' #', ' #', ' #'], | |
| '2': ['###', ' #', '###', '# ', '###'], | |
| '3': ['###', ' #', '###', ' #', '###'], | |
| '4': ['# #', '# #', '###', ' #', ' #'], | |
| '5': ['###', '# ', '###', ' #', '###'], | |
| '6': ['###', '# ', '###', '# #', '###'], | |
| '7': ['###', ' #', ' #', ' #', ' #'], | |
| '8': ['###', '# #', '###', '# #', '###'], | |
| '9': ['###', '# #', '###', ' #', '###'], | |
| } | |
| # alternatively, with leading zeros: num_str = f"{number:03d}" | |
| num_str = str(number) # Convert to string without padding | |
| result = [] | |
| for row in range(5): | |
| line = ' '.join(digits[digit][row] for digit in num_str) | |
| result.append(line) | |
| matrix_display = '\n'.join(result) | |
| return f'\n{matrix_display}\n' | |