Files
StarPilot/tools/lib/filereader.py
T
Shane Smiskol 5339a13c34 clean up
2025-07-17 21:42:47 -07:00

49 lines
1.2 KiB
Python

import os
import functools
import posixpath
import socket
from urllib.parse import urlparse
from tenacity import retry, retry_if_exception_type, stop_after_attempt
from openpilot.tools.lib.url_file import URLFile
DATA_ENDPOINT = os.getenv("DATA_ENDPOINT", "http://data-raw.comma.internal/")
# @functools.cache
# @retry(retry=retry_if_exception_type(TimeoutError), stop=stop_after_attempt(3), reraise=True)
def internal_source_available(url=DATA_ENDPOINT):
if os.path.isdir(url):
return True
try:
hostname = urlparse(url).hostname
port = urlparse(url).port or 80
with socket.socket(socket.AF_INET,socket.SOCK_STREAM) as s:
s.settimeout(0.5)
s.connect((hostname, port))
return True
except (socket.gaierror, ConnectionRefusedError):
pass
return False
def resolve_name(fn):
if fn.startswith("cd:/"):
return posixpath.join(DATA_ENDPOINT, fn[4:])
return fn
def file_exists(fn):
fn = resolve_name(fn)
if fn.startswith(("http://", "https://")):
return URLFile(fn).get_length_online() != -1
return os.path.exists(fn)
def FileReader(fn, debug=False):
fn = resolve_name(fn)
if fn.startswith(("http://", "https://")):
return URLFile(fn, debug=debug)
return open(fn, "rb")