Download colab_tunnel/__init__.py from rottenstuff/cl: direct link, hf CLI and curl.
- Browser
- Download file 4.82 kB
-
https://huggingface.co/rottenstuff/cl/resolve/main/colab_tunnel/__init__.py
- Command line
-
hf download hf://rottenstuff/cl/colab_tunnel/__init__.py
-
curl -L -o __init__.py https://huggingface.co/rottenstuff/cl/resolve/main/colab_tunnel/__init__.py
4.82 kB
| """ | |
| colab-tunnel — утилиты для туннелирования веб-интерфейсов в Google Colab. | |
| Быстрый старт: | |
| from colab_tunnel import get_share_link | |
| link = get_share_link('srvus', 7860) | |
| print(link) | |
| Запуск всех провайдеров параллельно: | |
| from colab_tunnel import try_all | |
| print(try_all(7860)) | |
| Бенчмарк — найти лучший провайдер прямо сейчас: | |
| from colab_tunnel import benchmark | |
| results = benchmark() | |
| print(results) | |
| Добавить собственный провайдер: | |
| from colab_tunnel import tunnel_provider | |
| @tunnel_provider('myprovider') | |
| def get_myprovider_url(port: int) -> str: | |
| ... | |
| """ | |
| from concurrent.futures import ThreadPoolExecutor, as_completed | |
| from ._config import WORK_FOLDER | |
| from ._logger import logger | |
| from ._registry import proxies_functions, tunnel_provider, list_providers, enable_provider, disable_provider | |
| from ._utils import run, download | |
| # Импорт модулей регистрирует провайдеров через @tunnel_provider | |
| from . import _tunnels # noqa: F401 | |
| from . import _ssh # noqa: F401 | |
| # Прямой доступ к функциям провайдеров (обратная совместимость) | |
| from ._tunnels import ( | |
| get_tmole_url, | |
| get_tunwg_url, | |
| get_cloudflared_url, | |
| get_localt_url, | |
| get_gradio_url, | |
| get_native_url, | |
| get_mmar_url, | |
| get_tunnelite_url, | |
| get_beeceptor_url, | |
| get_bore_url, | |
| get_boredigital_url, | |
| ) | |
| from ._ssh import ( | |
| get_optimistix_url, | |
| get_srvus_url, | |
| get_serveo_url, | |
| get_localhostrun_url, | |
| ) | |
| from ._diagnostics import benchmark, TunnelBenchmarkResult | |
| __version__ = '1.1.0' | |
| __all__ = [ | |
| # Основной API | |
| 'get_share_link', | |
| 'try_all', | |
| 'benchmark', | |
| 'TunnelBenchmarkResult', | |
| # Реестр (для расширения) | |
| 'disable_provider', | |
| 'enable_provider', | |
| 'list_providers', | |
| 'proxies_functions', | |
| 'tunnel_provider', | |
| # Провайдеры (прямой доступ) | |
| 'get_tmole_url', | |
| 'get_tunwg_url', | |
| 'get_cloudflared_url', | |
| 'get_localt_url', | |
| 'get_gradio_url', | |
| 'get_native_url', | |
| 'get_mmar_url', | |
| 'get_tunnelite_url', | |
| 'get_beeceptor_url', | |
| 'get_bore_url', | |
| 'get_boredigital_url', | |
| 'get_optimistix_url', | |
| 'get_srvus_url', | |
| 'get_serveo_url', | |
| 'get_localhostrun_url', | |
| # Утилиты | |
| 'download', | |
| 'run', | |
| 'WORK_FOLDER', | |
| 'logger', | |
| ] | |
| def try_all(port: int) -> str: | |
| """ | |
| Параллельно запускает все зарегистрированные провайдеры туннелей. | |
| В отличие от benchmark(), не измеряет метрики точно, зато возвращает | |
| все работающие ссылки в разы быстрее — за время самого медленного провайдера | |
| вместо суммы времён всех провайдеров. | |
| Args: | |
| port: Локальный порт для туннелирования. | |
| Returns: | |
| Строка со всеми полученными ссылками в формате 'провайдер: URL'. | |
| """ | |
| results: list[str] = [] | |
| with ThreadPoolExecutor(max_workers=len(proxies_functions)) as executor: | |
| futures = { | |
| executor.submit(func, port): name | |
| for name, func in proxies_functions.items() | |
| } | |
| for future in as_completed(futures): | |
| name = futures[future] | |
| try: | |
| url = future.result() | |
| results.append(f'{name}: {url}') | |
| except Exception as e: | |
| logger.warning(f'[try_all] {name}: {e}') | |
| return '\n'.join(results) | |
| def get_share_link(host: str, port: int) -> str: | |
| """ | |
| Получает публичную ссылку на локальный порт через указанный туннель. | |
| Args: | |
| host: Имя провайдера или 'all' для параллельного запуска всех. | |
| Доступные провайдеры: list(proxies_functions.keys()). | |
| port: Локальный порт веб-интерфейса. | |
| Returns: | |
| Публичная URL-ссылка (или несколько строк при host='all'). | |
| """ | |
| if host in proxies_functions: | |
| return proxies_functions[host](port) | |
| if host == 'all': | |
| return try_all(port) | |
| available = ', '.join(proxies_functions.keys()) | |
| return f'Провайдер "{host}" не найден. Доступные: {available}' | |