hiddenlayer-sdk 2.0.10__py3-none-any.whl → 3.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. hiddenlayer/__init__.py +109 -114
  2. hiddenlayer/_base_client.py +1995 -0
  3. hiddenlayer/_client.py +761 -0
  4. hiddenlayer/_compat.py +219 -0
  5. hiddenlayer/_constants.py +14 -0
  6. hiddenlayer/_exceptions.py +108 -0
  7. hiddenlayer/_files.py +123 -0
  8. hiddenlayer/_models.py +835 -0
  9. hiddenlayer/_oauth2.py +118 -0
  10. hiddenlayer/_qs.py +150 -0
  11. hiddenlayer/_resource.py +43 -0
  12. hiddenlayer/_response.py +832 -0
  13. hiddenlayer/_streaming.py +333 -0
  14. hiddenlayer/_types.py +260 -0
  15. hiddenlayer/_utils/__init__.py +64 -0
  16. hiddenlayer/_utils/_compat.py +45 -0
  17. hiddenlayer/_utils/_datetime_parse.py +136 -0
  18. hiddenlayer/_utils/_logs.py +25 -0
  19. hiddenlayer/_utils/_proxy.py +65 -0
  20. hiddenlayer/_utils/_reflection.py +42 -0
  21. hiddenlayer/_utils/_resources_proxy.py +24 -0
  22. hiddenlayer/_utils/_streams.py +12 -0
  23. hiddenlayer/_utils/_sync.py +86 -0
  24. hiddenlayer/_utils/_transform.py +457 -0
  25. hiddenlayer/_utils/_typing.py +156 -0
  26. hiddenlayer/_utils/_utils.py +421 -0
  27. hiddenlayer/_version.py +4 -0
  28. hiddenlayer/lib/.keep +4 -0
  29. hiddenlayer/lib/__init__.py +6 -0
  30. hiddenlayer/lib/community_scan.py +174 -0
  31. hiddenlayer/lib/model_scan.py +752 -0
  32. hiddenlayer/lib/scan_utils.py +142 -0
  33. hiddenlayer/pagination.py +127 -0
  34. hiddenlayer/resources/__init__.py +75 -0
  35. hiddenlayer/resources/interactions.py +205 -0
  36. hiddenlayer/resources/models/__init__.py +33 -0
  37. hiddenlayer/resources/models/cards.py +259 -0
  38. hiddenlayer/resources/models/models.py +284 -0
  39. hiddenlayer/resources/prompt_analyzer.py +207 -0
  40. hiddenlayer/resources/scans/__init__.py +61 -0
  41. hiddenlayer/resources/scans/jobs.py +499 -0
  42. hiddenlayer/resources/scans/results.py +169 -0
  43. hiddenlayer/resources/scans/scans.py +166 -0
  44. hiddenlayer/resources/scans/upload/__init__.py +33 -0
  45. hiddenlayer/resources/scans/upload/file.py +279 -0
  46. hiddenlayer/resources/scans/upload/upload.py +340 -0
  47. hiddenlayer/resources/sensors.py +575 -0
  48. hiddenlayer/types/__init__.py +16 -0
  49. hiddenlayer/types/interaction_analyze_params.py +62 -0
  50. hiddenlayer/types/interaction_analyze_response.py +199 -0
  51. hiddenlayer/types/model_retrieve_response.py +50 -0
  52. hiddenlayer/types/models/__init__.py +6 -0
  53. hiddenlayer/types/models/card_list_params.py +65 -0
  54. hiddenlayer/types/models/card_list_response.py +50 -0
  55. hiddenlayer/types/prompt_analyzer_create_params.py +23 -0
  56. hiddenlayer/types/prompt_analyzer_create_response.py +381 -0
  57. hiddenlayer/types/scans/__init__.py +14 -0
  58. hiddenlayer/types/scans/job_list_params.py +75 -0
  59. hiddenlayer/types/scans/job_list_response.py +22 -0
  60. hiddenlayer/types/scans/job_request_params.py +49 -0
  61. hiddenlayer/types/scans/job_retrieve_params.py +16 -0
  62. hiddenlayer/types/scans/result_sarif_response.py +7 -0
  63. hiddenlayer/types/scans/scan_job.py +46 -0
  64. hiddenlayer/types/scans/scan_report.py +367 -0
  65. hiddenlayer/types/scans/upload/__init__.py +6 -0
  66. hiddenlayer/types/scans/upload/file_add_response.py +24 -0
  67. hiddenlayer/types/scans/upload/file_complete_response.py +12 -0
  68. hiddenlayer/types/scans/upload_complete_all_response.py +12 -0
  69. hiddenlayer/types/scans/upload_start_params.py +34 -0
  70. hiddenlayer/types/scans/upload_start_response.py +12 -0
  71. hiddenlayer/types/sensor_create_params.py +24 -0
  72. hiddenlayer/types/sensor_create_response.py +33 -0
  73. hiddenlayer/types/sensor_query_params.py +39 -0
  74. hiddenlayer/types/sensor_query_response.py +43 -0
  75. hiddenlayer/types/sensor_retrieve_response.py +33 -0
  76. hiddenlayer/types/sensor_update_params.py +20 -0
  77. hiddenlayer/types/sensor_update_response.py +9 -0
  78. hiddenlayer_sdk-3.0.0.dist-info/METADATA +431 -0
  79. hiddenlayer_sdk-3.0.0.dist-info/RECORD +82 -0
  80. {hiddenlayer_sdk-2.0.10.dist-info → hiddenlayer_sdk-3.0.0.dist-info}/WHEEL +1 -2
  81. {hiddenlayer_sdk-2.0.10.dist-info → hiddenlayer_sdk-3.0.0.dist-info}/licenses/LICENSE +1 -1
  82. hiddenlayer/sdk/constants.py +0 -26
  83. hiddenlayer/sdk/exceptions.py +0 -12
  84. hiddenlayer/sdk/models.py +0 -58
  85. hiddenlayer/sdk/rest/__init__.py +0 -135
  86. hiddenlayer/sdk/rest/api/__init__.py +0 -10
  87. hiddenlayer/sdk/rest/api/aidr_predictive_api.py +0 -308
  88. hiddenlayer/sdk/rest/api/health_api.py +0 -272
  89. hiddenlayer/sdk/rest/api/model_api.py +0 -559
  90. hiddenlayer/sdk/rest/api/model_supply_chain_api.py +0 -4063
  91. hiddenlayer/sdk/rest/api/readiness_api.py +0 -272
  92. hiddenlayer/sdk/rest/api/sensor_api.py +0 -1432
  93. hiddenlayer/sdk/rest/api_client.py +0 -770
  94. hiddenlayer/sdk/rest/api_response.py +0 -21
  95. hiddenlayer/sdk/rest/configuration.py +0 -445
  96. hiddenlayer/sdk/rest/exceptions.py +0 -199
  97. hiddenlayer/sdk/rest/models/__init__.py +0 -113
  98. hiddenlayer/sdk/rest/models/address.py +0 -110
  99. hiddenlayer/sdk/rest/models/artifact.py +0 -155
  100. hiddenlayer/sdk/rest/models/artifact_change.py +0 -108
  101. hiddenlayer/sdk/rest/models/artifact_content.py +0 -101
  102. hiddenlayer/sdk/rest/models/artifact_location.py +0 -109
  103. hiddenlayer/sdk/rest/models/attachment.py +0 -129
  104. hiddenlayer/sdk/rest/models/begin_multi_file_upload200_response.py +0 -87
  105. hiddenlayer/sdk/rest/models/begin_multipart_file_upload200_response.py +0 -97
  106. hiddenlayer/sdk/rest/models/begin_multipart_file_upload200_response_parts_inner.py +0 -94
  107. hiddenlayer/sdk/rest/models/code_flow.py +0 -113
  108. hiddenlayer/sdk/rest/models/configuration_override.py +0 -108
  109. hiddenlayer/sdk/rest/models/conversion.py +0 -114
  110. hiddenlayer/sdk/rest/models/create_sensor_request.py +0 -95
  111. hiddenlayer/sdk/rest/models/edge.py +0 -108
  112. hiddenlayer/sdk/rest/models/edge_traversal.py +0 -122
  113. hiddenlayer/sdk/rest/models/errors_inner.py +0 -91
  114. hiddenlayer/sdk/rest/models/exception.py +0 -113
  115. hiddenlayer/sdk/rest/models/external_properties.py +0 -273
  116. hiddenlayer/sdk/rest/models/external_property_file_reference.py +0 -102
  117. hiddenlayer/sdk/rest/models/external_property_file_references.py +0 -240
  118. hiddenlayer/sdk/rest/models/file_details_v3.py +0 -139
  119. hiddenlayer/sdk/rest/models/file_result_v3.py +0 -117
  120. hiddenlayer/sdk/rest/models/file_scan_report_v3.py +0 -132
  121. hiddenlayer/sdk/rest/models/file_scan_reports_v3.py +0 -95
  122. hiddenlayer/sdk/rest/models/fix.py +0 -113
  123. hiddenlayer/sdk/rest/models/get_condensed_model_scan_reports200_response.py +0 -102
  124. hiddenlayer/sdk/rest/models/graph.py +0 -123
  125. hiddenlayer/sdk/rest/models/graph_traversal.py +0 -97
  126. hiddenlayer/sdk/rest/models/inventory_v3.py +0 -101
  127. hiddenlayer/sdk/rest/models/invocation.py +0 -199
  128. hiddenlayer/sdk/rest/models/location.py +0 -146
  129. hiddenlayer/sdk/rest/models/location_inner.py +0 -138
  130. hiddenlayer/sdk/rest/models/location_relationship.py +0 -107
  131. hiddenlayer/sdk/rest/models/logical_location.py +0 -104
  132. hiddenlayer/sdk/rest/models/message.py +0 -92
  133. hiddenlayer/sdk/rest/models/mitre_atlas_inner.py +0 -110
  134. hiddenlayer/sdk/rest/models/model.py +0 -103
  135. hiddenlayer/sdk/rest/models/model_inventory_info.py +0 -103
  136. hiddenlayer/sdk/rest/models/model_version.py +0 -97
  137. hiddenlayer/sdk/rest/models/multi_file_upload_request_v3.py +0 -97
  138. hiddenlayer/sdk/rest/models/multiformat_message_string.py +0 -95
  139. hiddenlayer/sdk/rest/models/node.py +0 -122
  140. hiddenlayer/sdk/rest/models/notification.py +0 -157
  141. hiddenlayer/sdk/rest/models/notify_model_scan_completed200_response.py +0 -87
  142. hiddenlayer/sdk/rest/models/paged_response_with_total.py +0 -94
  143. hiddenlayer/sdk/rest/models/pagination_v3.py +0 -95
  144. hiddenlayer/sdk/rest/models/physical_location.py +0 -94
  145. hiddenlayer/sdk/rest/models/problem_details.py +0 -103
  146. hiddenlayer/sdk/rest/models/property_bag.py +0 -101
  147. hiddenlayer/sdk/rest/models/rectangle.py +0 -110
  148. hiddenlayer/sdk/rest/models/region.py +0 -127
  149. hiddenlayer/sdk/rest/models/replacement.py +0 -103
  150. hiddenlayer/sdk/rest/models/reporting_configuration.py +0 -113
  151. hiddenlayer/sdk/rest/models/reporting_descriptor.py +0 -162
  152. hiddenlayer/sdk/rest/models/reporting_descriptor_reference.py +0 -103
  153. hiddenlayer/sdk/rest/models/reporting_descriptor_relationship.py +0 -115
  154. hiddenlayer/sdk/rest/models/result.py +0 -312
  155. hiddenlayer/sdk/rest/models/result_provenance.py +0 -133
  156. hiddenlayer/sdk/rest/models/rule_details_inner.py +0 -102
  157. hiddenlayer/sdk/rest/models/run.py +0 -318
  158. hiddenlayer/sdk/rest/models/run_automation_details.py +0 -129
  159. hiddenlayer/sdk/rest/models/sarif210.py +0 -123
  160. hiddenlayer/sdk/rest/models/scan_create_request.py +0 -87
  161. hiddenlayer/sdk/rest/models/scan_detection_v3.py +0 -159
  162. hiddenlayer/sdk/rest/models/scan_detection_v31.py +0 -158
  163. hiddenlayer/sdk/rest/models/scan_header_v3.py +0 -129
  164. hiddenlayer/sdk/rest/models/scan_job.py +0 -115
  165. hiddenlayer/sdk/rest/models/scan_job_access.py +0 -97
  166. hiddenlayer/sdk/rest/models/scan_model_details_v3.py +0 -99
  167. hiddenlayer/sdk/rest/models/scan_model_details_v31.py +0 -97
  168. hiddenlayer/sdk/rest/models/scan_model_ids_v3.py +0 -89
  169. hiddenlayer/sdk/rest/models/scan_report_v3.py +0 -139
  170. hiddenlayer/sdk/rest/models/scan_results_map_v3.py +0 -105
  171. hiddenlayer/sdk/rest/models/scan_results_v3.py +0 -120
  172. hiddenlayer/sdk/rest/models/security_posture.py +0 -89
  173. hiddenlayer/sdk/rest/models/sensor.py +0 -100
  174. hiddenlayer/sdk/rest/models/sensor_query_response.py +0 -101
  175. hiddenlayer/sdk/rest/models/sensor_sor_model_card_query_response.py +0 -101
  176. hiddenlayer/sdk/rest/models/sensor_sor_model_card_response.py +0 -127
  177. hiddenlayer/sdk/rest/models/sensor_sor_query_filter.py +0 -108
  178. hiddenlayer/sdk/rest/models/sensor_sor_query_request.py +0 -109
  179. hiddenlayer/sdk/rest/models/special_locations.py +0 -97
  180. hiddenlayer/sdk/rest/models/stack.py +0 -113
  181. hiddenlayer/sdk/rest/models/stack_frame.py +0 -104
  182. hiddenlayer/sdk/rest/models/submission_response.py +0 -95
  183. hiddenlayer/sdk/rest/models/submission_v2.py +0 -109
  184. hiddenlayer/sdk/rest/models/suppression.py +0 -133
  185. hiddenlayer/sdk/rest/models/thread_flow.py +0 -144
  186. hiddenlayer/sdk/rest/models/thread_flow_location.py +0 -166
  187. hiddenlayer/sdk/rest/models/tool.py +0 -107
  188. hiddenlayer/sdk/rest/models/tool_component.py +0 -251
  189. hiddenlayer/sdk/rest/models/tool_component_reference.py +0 -108
  190. hiddenlayer/sdk/rest/models/translation_metadata.py +0 -110
  191. hiddenlayer/sdk/rest/models/validation_error_model.py +0 -99
  192. hiddenlayer/sdk/rest/models/version_control_details.py +0 -108
  193. hiddenlayer/sdk/rest/models/web_request.py +0 -112
  194. hiddenlayer/sdk/rest/models/web_response.py +0 -112
  195. hiddenlayer/sdk/rest/rest.py +0 -257
  196. hiddenlayer/sdk/services/__init__.py +0 -0
  197. hiddenlayer/sdk/services/aidr_predictive.py +0 -130
  198. hiddenlayer/sdk/services/model_scan.py +0 -505
  199. hiddenlayer/sdk/utils.py +0 -92
  200. hiddenlayer/sdk/version.py +0 -1
  201. hiddenlayer_sdk-2.0.10.dist-info/METADATA +0 -368
  202. hiddenlayer_sdk-2.0.10.dist-info/RECORD +0 -126
  203. hiddenlayer_sdk-2.0.10.dist-info/top_level.txt +0 -1
  204. /hiddenlayer/{sdk/__init__.py → py.typed} +0 -0
hiddenlayer/__init__.py CHANGED
@@ -1,114 +1,109 @@
1
- import os
2
- from typing import Callable, Optional
3
- from urllib.parse import urljoin
4
-
5
- import requests
6
- from requests.auth import HTTPBasicAuth
7
-
8
- from hiddenlayer.sdk.rest.api_client import ApiClient
9
- from hiddenlayer.sdk.rest.configuration import Configuration
10
- from hiddenlayer.sdk.services.aidr_predictive import AIDRPredictive
11
- from hiddenlayer.sdk.services.model_scan import ModelScanAPI
12
- from hiddenlayer.sdk.utils import is_saas
13
- from hiddenlayer.sdk.version import VERSION
14
-
15
- __version__ = VERSION
16
-
17
-
18
- class HiddenlayerServiceAuthError(Exception):
19
- pass
20
-
21
-
22
- class HiddenlayerUnsupportedPlatformError(Exception):
23
- pass
24
-
25
-
26
- class HiddenlayerServiceClient:
27
- """
28
- The Hiddenlayer Service Client is a client for the Hiddenlayer services REST API.
29
- """
30
-
31
- def __init__(
32
- self,
33
- *,
34
- api_id: Optional[str] = None,
35
- api_key: Optional[str] = None,
36
- host: str = "https://api.us.hiddenlayer.ai",
37
- auth_url: Optional[str] = None,
38
- ):
39
- self.host = host.strip()
40
- if auth_url:
41
- self.auth_url = auth_url.strip()
42
- else:
43
- self.auth_url = None
44
- self.is_saas = is_saas(host)
45
- refresh_jwt_func: Optional[Callable[[], str]] = None
46
-
47
- if self.is_saas:
48
- if not api_id:
49
- raise EnvironmentError(
50
- "`api_id` cannot be None when using the SaaS version of HiddenLayer."
51
- )
52
-
53
- if not api_key:
54
- raise EnvironmentError(
55
- "`api_key` cannot be None when using the SaaS version of HiddenLayer."
56
- )
57
-
58
- jwt_token = self._get_jwt(api_id=api_id, api_key=api_key)
59
- self._config = Configuration(host=self.host, access_token=jwt_token)
60
- refresh_jwt_func = lambda: self._get_jwt(api_id=api_id, api_key=api_key)
61
-
62
- else:
63
- self._config = Configuration(host=self.host)
64
-
65
- self._api_client = ApiClient(configuration=self._config)
66
- self._aidr_predictive = AIDRPredictive(self._api_client)
67
- self._model_scan = ModelScanAPI(
68
- self._api_client, refresh_token_func=refresh_jwt_func
69
- )
70
-
71
- def _get_jwt(self, *, api_id: str, api_key: str) -> str:
72
- "Get the JWT token to auth to the Hiddenlayer API."
73
-
74
- if self.auth_url:
75
- auth_url = self.auth_url
76
- else:
77
- auth_url = os.getenv("HL_AUTH_URL", "https://auth.hiddenlayer.ai")
78
-
79
- token_url = urljoin(auth_url, "/oauth2/token?grant_type=client_credentials")
80
-
81
- resp = requests.post(token_url, auth=HTTPBasicAuth(api_id, api_key))
82
-
83
- if not resp.ok:
84
- raise HiddenlayerServiceAuthError(
85
- f"Unable to get authentication credentials for the HiddenLayer API: {resp.status_code}: {resp.text}"
86
- )
87
-
88
- if "access_token" not in resp.json():
89
- raise HiddenlayerServiceAuthError(
90
- f"Unable to get authentication credentials for the HiddenLayer API - invalid response: {resp.json()}"
91
- )
92
-
93
- return resp.json()["access_token"]
94
-
95
- @property
96
- def config(self) -> Configuration:
97
- return self._config
98
-
99
- @property
100
- def api_client(self) -> ApiClient:
101
- return self._api_client
102
-
103
- @property
104
- def model_scanner(self) -> ModelScanAPI:
105
- return self._model_scan
106
-
107
- @property
108
- def aidr_predictive(self) -> AIDRPredictive:
109
- # If the platform is not SaaS, it's not supported
110
- if not self.is_saas:
111
- raise HiddenlayerUnsupportedPlatformError(
112
- "AIDR for Predictive Models is currently only supported with the SaaS version of the platform."
113
- )
114
- return self._aidr_predictive
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import typing as _t
4
+
5
+ from . import types
6
+ from .lib import ModelScanner, CommunityScanner, AsyncModelScanner, AsyncCommunityScanner
7
+ from ._types import NOT_GIVEN, Omit, NoneType, NotGiven, Transport, ProxiesTypes, omit, not_given
8
+ from ._utils import file_from_path
9
+ from ._client import (
10
+ ENVIRONMENTS,
11
+ Client,
12
+ Stream,
13
+ Timeout,
14
+ Transport,
15
+ AsyncClient,
16
+ AsyncStream,
17
+ HiddenLayer,
18
+ RequestOptions,
19
+ AsyncHiddenLayer,
20
+ )
21
+ from ._models import BaseModel
22
+ from ._version import __title__, __version__
23
+ from ._response import APIResponse as APIResponse, AsyncAPIResponse as AsyncAPIResponse
24
+ from ._constants import DEFAULT_TIMEOUT, DEFAULT_MAX_RETRIES, DEFAULT_CONNECTION_LIMITS
25
+ from ._exceptions import (
26
+ APIError,
27
+ ConflictError,
28
+ NotFoundError,
29
+ APIStatusError,
30
+ RateLimitError,
31
+ APITimeoutError,
32
+ BadRequestError,
33
+ HiddenLayerError,
34
+ APIConnectionError,
35
+ AuthenticationError,
36
+ InternalServerError,
37
+ PermissionDeniedError,
38
+ UnprocessableEntityError,
39
+ APIResponseValidationError,
40
+ )
41
+ from ._base_client import DefaultHttpxClient, DefaultAioHttpClient, DefaultAsyncHttpxClient
42
+ from ._utils._logs import setup_logging as _setup_logging
43
+
44
+ __all__ = [
45
+ "types",
46
+ "__version__",
47
+ "__title__",
48
+ "NoneType",
49
+ "CommunityScanner",
50
+ "AsyncCommunityScanner",
51
+ "ModelScanner",
52
+ "AsyncModelScanner",
53
+ "Transport",
54
+ "ProxiesTypes",
55
+ "NotGiven",
56
+ "NOT_GIVEN",
57
+ "not_given",
58
+ "Omit",
59
+ "omit",
60
+ "HiddenLayerError",
61
+ "APIError",
62
+ "APIStatusError",
63
+ "APITimeoutError",
64
+ "APIConnectionError",
65
+ "APIResponseValidationError",
66
+ "BadRequestError",
67
+ "AuthenticationError",
68
+ "PermissionDeniedError",
69
+ "NotFoundError",
70
+ "ConflictError",
71
+ "UnprocessableEntityError",
72
+ "RateLimitError",
73
+ "InternalServerError",
74
+ "Timeout",
75
+ "RequestOptions",
76
+ "Client",
77
+ "AsyncClient",
78
+ "Stream",
79
+ "AsyncStream",
80
+ "HiddenLayer",
81
+ "AsyncHiddenLayer",
82
+ "ENVIRONMENTS",
83
+ "file_from_path",
84
+ "BaseModel",
85
+ "DEFAULT_TIMEOUT",
86
+ "DEFAULT_MAX_RETRIES",
87
+ "DEFAULT_CONNECTION_LIMITS",
88
+ "DefaultHttpxClient",
89
+ "DefaultAsyncHttpxClient",
90
+ "DefaultAioHttpClient",
91
+ ]
92
+
93
+ if not _t.TYPE_CHECKING:
94
+ from ._utils._resources_proxy import resources as resources
95
+
96
+ _setup_logging()
97
+
98
+ # Update the __module__ attribute for exported symbols so that
99
+ # error messages point to this module instead of the module
100
+ # it was originally defined in, e.g.
101
+ # hiddenlayer._exceptions.NotFoundError -> hiddenlayer.NotFoundError
102
+ __locals = locals()
103
+ for __name in __all__:
104
+ if not __name.startswith("__"):
105
+ try:
106
+ __locals[__name].__module__ = "hiddenlayer"
107
+ except (TypeError, AttributeError):
108
+ # Some of our exported symbols are builtins which we can't set attributes for.
109
+ pass