hiddenlayer-sdk 2.0.6__tar.gz → 2.0.7__tar.gz

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 (134) hide show
  1. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/PKG-INFO +1 -1
  2. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/__init__.py +6 -2
  3. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/services/model_scan.py +24 -8
  4. hiddenlayer_sdk-2.0.7/hiddenlayer/sdk/version.py +1 -0
  5. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer_sdk.egg-info/PKG-INFO +1 -1
  6. hiddenlayer_sdk-2.0.6/hiddenlayer/sdk/version.py +0 -1
  7. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/LICENSE +0 -0
  8. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/README.md +0 -0
  9. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/__init__.py +0 -0
  10. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/constants.py +0 -0
  11. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/exceptions.py +0 -0
  12. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/models.py +0 -0
  13. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/__init__.py +0 -0
  14. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api/__init__.py +0 -0
  15. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api/aidr_predictive_api.py +0 -0
  16. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api/health_api.py +0 -0
  17. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api/model_api.py +0 -0
  18. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api/model_supply_chain_api.py +0 -0
  19. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api/readiness_api.py +0 -0
  20. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api/sensor_api.py +0 -0
  21. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api_client.py +0 -0
  22. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/api_response.py +0 -0
  23. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/configuration.py +0 -0
  24. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/exceptions.py +0 -0
  25. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/__init__.py +0 -0
  26. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/address.py +0 -0
  27. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/artifact.py +0 -0
  28. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/artifact_change.py +0 -0
  29. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/artifact_content.py +0 -0
  30. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/artifact_location.py +0 -0
  31. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/attachment.py +0 -0
  32. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/begin_multi_file_upload200_response.py +0 -0
  33. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/begin_multipart_file_upload200_response.py +0 -0
  34. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/begin_multipart_file_upload200_response_parts_inner.py +0 -0
  35. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/code_flow.py +0 -0
  36. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/configuration_override.py +0 -0
  37. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/conversion.py +0 -0
  38. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/create_sensor_request.py +0 -0
  39. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/edge.py +0 -0
  40. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/edge_traversal.py +0 -0
  41. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/errors_inner.py +0 -0
  42. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/exception.py +0 -0
  43. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/external_properties.py +0 -0
  44. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/external_property_file_reference.py +0 -0
  45. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/external_property_file_references.py +0 -0
  46. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/file_details_v3.py +0 -0
  47. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/file_result_v3.py +0 -0
  48. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/file_scan_report_v3.py +0 -0
  49. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/file_scan_reports_v3.py +0 -0
  50. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/fix.py +0 -0
  51. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/get_condensed_model_scan_reports200_response.py +0 -0
  52. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/graph.py +0 -0
  53. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/graph_traversal.py +0 -0
  54. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/inventory_v3.py +0 -0
  55. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/invocation.py +0 -0
  56. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/location.py +0 -0
  57. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/location_inner.py +0 -0
  58. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/location_relationship.py +0 -0
  59. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/logical_location.py +0 -0
  60. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/message.py +0 -0
  61. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/mitre_atlas_inner.py +0 -0
  62. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/model.py +0 -0
  63. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/model_inventory_info.py +0 -0
  64. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/model_version.py +0 -0
  65. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/multi_file_upload_request_v3.py +0 -0
  66. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/multiformat_message_string.py +0 -0
  67. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/node.py +0 -0
  68. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/notification.py +0 -0
  69. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/notify_model_scan_completed200_response.py +0 -0
  70. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/paged_response_with_total.py +0 -0
  71. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/pagination_v3.py +0 -0
  72. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/physical_location.py +0 -0
  73. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/problem_details.py +0 -0
  74. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/property_bag.py +0 -0
  75. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/rectangle.py +0 -0
  76. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/region.py +0 -0
  77. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/replacement.py +0 -0
  78. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/reporting_configuration.py +0 -0
  79. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/reporting_descriptor.py +0 -0
  80. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/reporting_descriptor_reference.py +0 -0
  81. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/reporting_descriptor_relationship.py +0 -0
  82. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/result.py +0 -0
  83. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/result_provenance.py +0 -0
  84. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/rule_details_inner.py +0 -0
  85. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/run.py +0 -0
  86. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/run_automation_details.py +0 -0
  87. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/sarif210.py +0 -0
  88. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_create_request.py +0 -0
  89. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_detection_v3.py +0 -0
  90. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_detection_v31.py +0 -0
  91. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_header_v3.py +0 -0
  92. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_job.py +0 -0
  93. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_job_access.py +0 -0
  94. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_model_details_v3.py +0 -0
  95. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_model_details_v31.py +0 -0
  96. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_model_ids_v3.py +0 -0
  97. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_report_v3.py +0 -0
  98. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_results_map_v3.py +0 -0
  99. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/scan_results_v3.py +0 -0
  100. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/security_posture.py +0 -0
  101. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/sensor.py +0 -0
  102. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/sensor_query_response.py +0 -0
  103. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/sensor_sor_model_card_query_response.py +0 -0
  104. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/sensor_sor_model_card_response.py +0 -0
  105. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/sensor_sor_query_filter.py +0 -0
  106. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/sensor_sor_query_request.py +0 -0
  107. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/special_locations.py +0 -0
  108. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/stack.py +0 -0
  109. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/stack_frame.py +0 -0
  110. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/submission_response.py +0 -0
  111. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/submission_v2.py +0 -0
  112. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/suppression.py +0 -0
  113. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/thread_flow.py +0 -0
  114. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/thread_flow_location.py +0 -0
  115. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/tool.py +0 -0
  116. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/tool_component.py +0 -0
  117. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/tool_component_reference.py +0 -0
  118. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/translation_metadata.py +0 -0
  119. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/validation_error_model.py +0 -0
  120. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/version_control_details.py +0 -0
  121. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/web_request.py +0 -0
  122. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/models/web_response.py +0 -0
  123. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/rest/rest.py +0 -0
  124. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/services/__init__.py +0 -0
  125. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/services/aidr_predictive.py +0 -0
  126. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer/sdk/utils.py +0 -0
  127. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer_sdk.egg-info/SOURCES.txt +0 -0
  128. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer_sdk.egg-info/dependency_links.txt +0 -0
  129. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer_sdk.egg-info/requires.txt +0 -0
  130. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/hiddenlayer_sdk.egg-info/top_level.txt +0 -0
  131. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/pyproject.toml +0 -0
  132. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/setup.cfg +0 -0
  133. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/tests/test_hiddenlayer.py +0 -0
  134. {hiddenlayer_sdk-2.0.6 → hiddenlayer_sdk-2.0.7}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hiddenlayer-sdk
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: Official HiddenLayer Python SDK
5
5
  Author-email: HiddenLayer Integrations Team <integrations@hiddenlayer.com>
6
6
  Maintainer-email: HiddenLayer Integrations Team <integrations@hiddenlayer.com>
@@ -1,5 +1,5 @@
1
1
  import os
2
- from typing import Optional
2
+ from typing import Callable, Optional
3
3
 
4
4
  import requests
5
5
  from requests.auth import HTTPBasicAuth
@@ -36,6 +36,7 @@ class HiddenlayerServiceClient:
36
36
  ):
37
37
  self.host = host.strip()
38
38
  self.is_saas = is_saas(host)
39
+ refresh_jwt_func: Optional[Callable[[], str]] = None
39
40
 
40
41
  if self.is_saas:
41
42
  if not api_id:
@@ -50,13 +51,16 @@ class HiddenlayerServiceClient:
50
51
 
51
52
  jwt_token = self._get_jwt(api_id=api_id, api_key=api_key)
52
53
  self._config = Configuration(host=self.host, access_token=jwt_token)
54
+ refresh_jwt_func = lambda: self._get_jwt(api_id=api_id, api_key=api_key)
53
55
 
54
56
  else:
55
57
  self._config = Configuration(host=self.host)
56
58
 
57
59
  self._api_client = ApiClient(configuration=self._config)
58
60
  self._aidr_predictive = AIDRPredictive(self._api_client)
59
- self._model_scan = ModelScanAPI(self._api_client)
61
+ self._model_scan = ModelScanAPI(
62
+ self._api_client, refresh_token_func=refresh_jwt_func
63
+ )
60
64
 
61
65
  def _get_jwt(self, *, api_id: str, api_key: str) -> str:
62
66
  "Get the JWT token to auth to the Hiddenlayer API."
@@ -4,13 +4,13 @@ import tempfile
4
4
  import time
5
5
  import zipfile
6
6
  from pathlib import Path
7
- from typing import List, Optional, Union
7
+ from typing import Callable, List, Optional, Union
8
8
 
9
9
  from hiddenlayer.sdk.constants import CommunityScanSource, ScanStatus
10
10
  from hiddenlayer.sdk.models import EmptyScanResults, ScanResults
11
11
  from hiddenlayer.sdk.rest.api import ModelSupplyChainApi
12
12
  from hiddenlayer.sdk.rest.api_client import ApiClient
13
- from hiddenlayer.sdk.rest.exceptions import NotFoundException
13
+ from hiddenlayer.sdk.rest.exceptions import NotFoundException, UnauthorizedException
14
14
  from hiddenlayer.sdk.rest.models import (
15
15
  MultiFileUploadRequestV3,
16
16
  ScanJob,
@@ -32,9 +32,14 @@ EXCLUDE_FILE_TYPES = [
32
32
 
33
33
 
34
34
  class ModelScanAPI:
35
- def __init__(self, api_client: ApiClient) -> None:
35
+ def __init__(
36
+ self,
37
+ api_client: ApiClient,
38
+ refresh_token_func: Optional[Callable[[], str]] = None,
39
+ ) -> None:
36
40
  self._api_client = api_client
37
41
  self._model_supply_chain_api = ModelSupplyChainApi(api_client=api_client)
42
+ self._refresh_token_func = refresh_token_func
38
43
 
39
44
  def community_scan(
40
45
  self,
@@ -328,11 +333,21 @@ class ModelScanAPI:
328
333
 
329
334
  :returns: Scan results.
330
335
  """
331
-
332
- try:
333
- scan_report = self._model_supply_chain_api.get_scan_results(scan_id)
334
- except NotFoundException:
335
- return EmptyScanResults()
336
+ retry = False
337
+ while True:
338
+ try:
339
+ scan_report = self._model_supply_chain_api.get_scan_results(scan_id)
340
+ break
341
+ except NotFoundException:
342
+ return EmptyScanResults()
343
+ except UnauthorizedException as e:
344
+ if not retry and self._refresh_token_func:
345
+ new_token = self._refresh_token_func()
346
+ self._api_client.configuration.access_token = new_token
347
+ self._api_client = ApiClient(self._api_client.configuration)
348
+ retry = True
349
+ else:
350
+ raise e
336
351
 
337
352
  return ScanResults.from_scanreportv3(scan_report_v3=scan_report)
338
353
 
@@ -461,6 +476,7 @@ class ModelScanAPI:
461
476
  delay = base_delay * 2**retries + random.uniform(
462
477
  0, 1
463
478
  ) # exponential back off retry
479
+ delay = min(delay, 30)
464
480
  time.sleep(delay)
465
481
  scan_results = self.get_scan_results(scan_id=scan_id)
466
482
  print(f"scan status: {scan_results.status}")
@@ -0,0 +1 @@
1
+ VERSION = "2.0.7"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hiddenlayer-sdk
3
- Version: 2.0.6
3
+ Version: 2.0.7
4
4
  Summary: Official HiddenLayer Python SDK
5
5
  Author-email: HiddenLayer Integrations Team <integrations@hiddenlayer.com>
6
6
  Maintainer-email: HiddenLayer Integrations Team <integrations@hiddenlayer.com>
@@ -1 +0,0 @@
1
- VERSION = "2.0.6"
File without changes