Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion src/datalab_api/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def __init__(self, datalab_api_url: str, log_level: str = "WARNING"):
self.log = logging.getLogger(__name__)

self._http_client = httpx.Client
self._headers = {"User-Agent": f"Datalab Python API/{__version__}"}
self._headers = {"User-Agent": f"datalab-python-api/{__version__}"}

self._detect_api_url()

Expand All @@ -99,6 +99,21 @@ def __init__(self, datalab_api_url: str, log_level: str = "WARNING"):
)

self._find_api_key()
self._validate_user_agent()

def _validate_user_agent(self) -> None:
"""Warn if this client's User-Agent is not in the server's known agent list."""
known_agents = self.info.get("attributes", {}).get("known_user_agents")
if not known_agents:
return
ua = self._headers.get("User-Agent", "")
if not any(ua.startswith(agent) for agent in known_agents):
warnings.warn(
f"User-Agent {ua!r} is not recognised by this datalab server. "
f"Versions saved via this client will not be attributed as agent saves. "
f"Known agents: {known_agents}",
stacklevel=3,
)

def _detect_api_url(self) -> None:
"""Perform a handshake with the chosen URL to ascertain the correct API URL.
Expand Down
Loading