@@ -376,6 +376,8 @@ def __init__(
376376 timeout : float | Timeout | None = DEFAULT_TIMEOUT ,
377377 custom_headers : Mapping [str , str ] | None = None ,
378378 custom_query : Mapping [str , object ] | None = None ,
379+ user_agent : str | None = None ,
380+ user_agent_version : str | None = None ,
379381 ) -> None :
380382 self ._version = version
381383 self ._base_url = self ._enforce_trailing_slash (URL (base_url ))
@@ -386,6 +388,8 @@ def __init__(
386388 self ._strict_response_validation = _strict_response_validation
387389 self ._idempotency_header = None
388390 self ._platform : Platform | None = None
391+ self ._user_agent_name = user_agent
392+ self ._user_agent_version = user_agent_version
389393
390394 if max_retries is None : # pyright: ignore[reportUnnecessaryComparison]
391395 raise TypeError (
@@ -671,7 +675,10 @@ def _validate_headers(
671675
672676 @property
673677 def user_agent (self ) -> str :
674- return f"{ self .__class__ .__name__ } /Python { self ._version } "
678+ # Format: "Gradient/package/version"
679+ package = self ._user_agent_name or "Python"
680+ version = self ._user_agent_version if self ._user_agent_name and self ._user_agent_version else self ._version
681+ return f"Gradient/{ package } /{ version } "
675682
676683 @property
677684 def base_url (self ) -> URL :
@@ -830,6 +837,8 @@ def __init__(
830837 custom_headers : Mapping [str , str ] | None = None ,
831838 custom_query : Mapping [str , object ] | None = None ,
832839 _strict_response_validation : bool ,
840+ user_agent : str | None = None ,
841+ user_agent_version : str | None = None ,
833842 ) -> None :
834843 if not is_given (timeout ):
835844 # if the user passed in a custom http client with a non-default
@@ -858,6 +867,8 @@ def __init__(
858867 custom_query = custom_query ,
859868 custom_headers = custom_headers ,
860869 _strict_response_validation = _strict_response_validation ,
870+ user_agent = user_agent ,
871+ user_agent_version = user_agent_version ,
861872 )
862873 self ._client = http_client or SyncHttpxClientWrapper (
863874 base_url = base_url ,
@@ -1360,6 +1371,8 @@ def __init__(
13601371 http_client : httpx .AsyncClient | None = None ,
13611372 custom_headers : Mapping [str , str ] | None = None ,
13621373 custom_query : Mapping [str , object ] | None = None ,
1374+ user_agent : str | None = None ,
1375+ user_agent_version : str | None = None ,
13631376 ) -> None :
13641377 if not is_given (timeout ):
13651378 # if the user passed in a custom http client with a non-default
@@ -1388,6 +1401,8 @@ def __init__(
13881401 custom_query = custom_query ,
13891402 custom_headers = custom_headers ,
13901403 _strict_response_validation = _strict_response_validation ,
1404+ user_agent = user_agent ,
1405+ user_agent_version = user_agent_version ,
13911406 )
13921407 self ._client = http_client or AsyncHttpxClientWrapper (
13931408 base_url = base_url ,
0 commit comments