hiddenlayer-sdk 3.0.1__tar.gz → 3.1.0__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.
- hiddenlayer_sdk-3.1.0/.release-please-manifest.json +3 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/CHANGELOG.md +32 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/PKG-INFO +3 -3
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/api.md +2 -9
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/pyproject.toml +7 -3
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/requirements-dev.lock +1 -1
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/requirements.lock +1 -1
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_version.py +1 -1
- hiddenlayer_sdk-3.1.0/src/hiddenlayer/lib/__init__.py +12 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/lib/model_scan.py +7 -18
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/models/cards.py +32 -2
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/scans/jobs.py +10 -6
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/scans/upload/upload.py +4 -2
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/interaction_analyze_response.py +37 -3
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/models/card_list_params.py +5 -1
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/models/card_list_response.py +6 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/job_list_params.py +2 -2
- hiddenlayer_sdk-3.1.0/src/hiddenlayer/types/scans/job_list_response.py +153 -0
- hiddenlayer_sdk-3.1.0/src/hiddenlayer/types/scans/job_request_params.py +85 -0
- hiddenlayer_sdk-3.1.0/src/hiddenlayer/types/scans/scan_job.py +86 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/scan_report.py +41 -85
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/upload/file_complete_response.py +1 -3
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/upload_complete_all_response.py +1 -3
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/upload_start_params.py +1 -1
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/upload_start_response.py +1 -3
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/models/test_cards.py +2 -2
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/scans/test_jobs.py +28 -18
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/scans/test_results.py +2 -2
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/scans/test_upload.py +6 -6
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/scans/upload/test_file.py +4 -4
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/test_interactions.py +2 -2
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/test_models.py +4 -4
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/test_prompt_analyzer.py +2 -2
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/test_sensors.py +10 -10
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_model_scan.py +20 -48
- hiddenlayer_sdk-3.0.1/.release-please-manifest.json +0 -3
- hiddenlayer_sdk-3.0.1/src/hiddenlayer/lib/__init__.py +0 -6
- hiddenlayer_sdk-3.0.1/src/hiddenlayer/types/scans/job_list_response.py +0 -22
- hiddenlayer_sdk-3.0.1/src/hiddenlayer/types/scans/job_request_params.py +0 -49
- hiddenlayer_sdk-3.0.1/src/hiddenlayer/types/scans/scan_job.py +0 -46
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/.gitignore +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/CODE_OF_CONDUCT.md +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/CONTRIBUTING.md +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/LICENSE +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/README.md +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/SECURITY.md +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/bin/check-release-environment +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/bin/publish-jfrog +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/bin/publish-pypi +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/examples/.keep +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/examples/demo.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/noxfile.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/release-please-config.json +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_base_client.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_client.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_compat.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_constants.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_exceptions.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_files.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_models.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_oauth2.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_qs.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_resource.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_streaming.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_types.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_compat.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_datetime_parse.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_logs.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_proxy.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_reflection.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_resources_proxy.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_streams.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_sync.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_transform.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_typing.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/_utils/_utils.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/lib/.keep +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/lib/community_scan.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/lib/scan_utils.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/pagination.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/py.typed +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/interactions.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/models/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/models/models.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/prompt_analyzer.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/scans/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/scans/results.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/scans/scans.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/scans/upload/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/scans/upload/file.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/sensors.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/interaction_analyze_params.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/model_retrieve_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/models/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/prompt_analyzer_create_params.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/prompt_analyzer_create_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/job_retrieve_params.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/result_sarif_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/upload/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/upload/file_add_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/sensor_create_params.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/sensor_create_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/sensor_query_params.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/sensor_query_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/sensor_retrieve_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/sensor_update_params.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/sensor_update_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/models/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/scans/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/api_resources/scans/upload/__init__.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/conftest.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/sample_file.txt +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_client.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_community_scan.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_deepcopy.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_extract_files.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_files.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_models.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_qs.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_required_args.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_response.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_streaming.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_transform.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_utils/test_proxy.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/test_utils/test_typing.py +0 -0
- {hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.1.0 (2025-10-22)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v3.0.1...v3.1.0](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/compare/v3.0.1...v3.1.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** api update ([f9b04a6](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/f9b04a6f32744afdfafa6bac6dc8e6cc514ad735))
|
|
10
|
+
* **api:** api update ([cac77ff](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/cac77ffde9e844dbaa0089e33d365fb6f01ad060))
|
|
11
|
+
* **api:** api update ([a5f4aa4](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/a5f4aa47ae06afd63a0a5f476023492e23b01d87))
|
|
12
|
+
* **api:** api update ([f8ea9b3](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/f8ea9b34e18900b9955ce810e396a9050a5a3683))
|
|
13
|
+
* **api:** api update ([a09c23c](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/a09c23c700f049b0b20a50bd7b09737981eebe4d))
|
|
14
|
+
* **api:** api update ([144ea2b](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/144ea2b7fb99d892088bc72a725fd8a0fecb0382))
|
|
15
|
+
* **api:** api update ([495bc26](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/495bc26f2f5aee49e6ac239011a1e9666f9c8e58))
|
|
16
|
+
* **api:** api update ([82bcadd](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/82bcaddd193d4ad155eb2651cb190a4a200800e1))
|
|
17
|
+
* **api:** api update ([da69d10](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/da69d104dc5f408a04d46c0266973fe404665cf8))
|
|
18
|
+
* **api:** api update ([75a179e](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/75a179e93a759b83194806b4c561ad4035ae2714))
|
|
19
|
+
* **api:** api update ([56ec98d](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/56ec98d2485b1ebb16a832d4eac125d05a7a1993))
|
|
20
|
+
* **api:** manual updates ([7e16b74](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/7e16b749a22db9414de5faf17067f15cf37ff78a))
|
|
21
|
+
* **api:** manual updates ([4a1d8af](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/4a1d8af69e44413809219221e5a3ff3b102a7637))
|
|
22
|
+
* **api:** restore ScanReport ([5bba48d](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/5bba48def63831679f3f33475b9ed423c9726bbf))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* **compat:** compat with `pydantic<2.8.0` when using additional fields ([a055406](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/a055406b415d42d8b99284a200eaf0af694e14c3))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Chores
|
|
31
|
+
|
|
32
|
+
* bump `httpx-aiohttp` version to 0.1.9 ([01ab00d](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/01ab00ddaf35da51b7c4a546c37f7d092357ffe4))
|
|
33
|
+
* **internal:** detect missing future annotations with ruff ([e087ecc](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/commit/e087ecc97867d858d138af0ebb7dfd7e919c14bb))
|
|
34
|
+
|
|
3
35
|
## 3.0.1 (2025-09-23)
|
|
4
36
|
|
|
5
37
|
Full Changelog: [v3.0.0...v3.0.1](https://github.com/hiddenlayerai/hiddenlayer-sdk-python/compare/v3.0.0...v3.0.1)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: hiddenlayer-sdk
|
|
3
|
-
Version: 3.0
|
|
3
|
+
Version: 3.1.0
|
|
4
4
|
Summary: The official Python library for the hiddenlayer API
|
|
5
5
|
Project-URL: Homepage, https://github.com/hiddenlayerai/hiddenlayer-sdk-python
|
|
6
6
|
Project-URL: Repository, https://github.com/hiddenlayerai/hiddenlayer-sdk-python
|
|
7
|
-
Author-email: HiddenLayer <
|
|
7
|
+
Author-email: HiddenLayer <sdks@hiddenlayer.com>
|
|
8
8
|
License: Apache-2.0
|
|
9
9
|
Classifier: Intended Audience :: Developers
|
|
10
10
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
@@ -33,7 +33,7 @@ Requires-Dist: types-requests>=2.32.0.20241016
|
|
|
33
33
|
Requires-Dist: typing-extensions<5,>=4.10
|
|
34
34
|
Provides-Extra: aiohttp
|
|
35
35
|
Requires-Dist: aiohttp; extra == 'aiohttp'
|
|
36
|
-
Requires-Dist: httpx-aiohttp>=0.1.
|
|
36
|
+
Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
|
|
37
37
|
Description-Content-Type: text/markdown
|
|
38
38
|
|
|
39
39
|
# HiddenLayer Python API library
|
|
@@ -80,7 +80,7 @@ Methods:
|
|
|
80
80
|
Types:
|
|
81
81
|
|
|
82
82
|
```python
|
|
83
|
-
from hiddenlayer.types.scans import
|
|
83
|
+
from hiddenlayer.types.scans import ScanReport, ResultSarifResponse
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
Methods:
|
|
@@ -92,14 +92,7 @@ Methods:
|
|
|
92
92
|
Types:
|
|
93
93
|
|
|
94
94
|
```python
|
|
95
|
-
from hiddenlayer.types.scans import
|
|
96
|
-
ScanJob,
|
|
97
|
-
ScanReport,
|
|
98
|
-
JobListResponse,
|
|
99
|
-
JobListParams,
|
|
100
|
-
JobRequestParams,
|
|
101
|
-
JobRetrieveParams,
|
|
102
|
-
)
|
|
95
|
+
from hiddenlayer.types.scans import JobListResponse, ScanJob, ScanReport
|
|
103
96
|
```
|
|
104
97
|
|
|
105
98
|
Methods:
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "hiddenlayer-sdk"
|
|
3
|
-
version = "3.0
|
|
3
|
+
version = "3.1.0"
|
|
4
4
|
description = "The official Python library for the hiddenlayer API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = {text = "Apache-2.0"}
|
|
7
7
|
authors = [
|
|
8
|
-
{ name = "HiddenLayer", email = "
|
|
8
|
+
{ name = "HiddenLayer", email = "sdks@hiddenlayer.com" },
|
|
9
9
|
]
|
|
10
10
|
dependencies = [
|
|
11
11
|
"httpx>=0.23.0, <1",
|
|
@@ -42,7 +42,7 @@ Homepage = "https://github.com/hiddenlayerai/hiddenlayer-sdk-python"
|
|
|
42
42
|
Repository = "https://github.com/hiddenlayerai/hiddenlayer-sdk-python"
|
|
43
43
|
|
|
44
44
|
[project.optional-dependencies]
|
|
45
|
-
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.
|
|
45
|
+
aiohttp = ["aiohttp", "httpx_aiohttp>=0.1.9"]
|
|
46
46
|
|
|
47
47
|
[tool.rye]
|
|
48
48
|
managed = true
|
|
@@ -229,6 +229,8 @@ select = [
|
|
|
229
229
|
"B",
|
|
230
230
|
# remove unused imports
|
|
231
231
|
"F401",
|
|
232
|
+
# check for missing future annotations
|
|
233
|
+
"FA102",
|
|
232
234
|
# bare except statements
|
|
233
235
|
"E722",
|
|
234
236
|
# unused arguments
|
|
@@ -251,6 +253,8 @@ unfixable = [
|
|
|
251
253
|
"T203",
|
|
252
254
|
]
|
|
253
255
|
|
|
256
|
+
extend-safe-fixes = ["FA102"]
|
|
257
|
+
|
|
254
258
|
[tool.ruff.lint.flake8-tidy-imports.banned-api]
|
|
255
259
|
"functools.lru_cache".msg = "This function does not retain type information for the wrapped function's arguments; The `lru_cache` function from `_utils` should be used instead"
|
|
256
260
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Custom extensions for HiddenLayer SDK
|
|
2
|
+
|
|
3
|
+
from .model_scan import ModelScanner, AsyncModelScanner
|
|
4
|
+
from .community_scan import CommunityScanner, CommunityScanSource, AsyncCommunityScanner
|
|
5
|
+
|
|
6
|
+
__all__ = [
|
|
7
|
+
"CommunityScanner",
|
|
8
|
+
"AsyncCommunityScanner",
|
|
9
|
+
"ModelScanner",
|
|
10
|
+
"AsyncModelScanner",
|
|
11
|
+
"CommunityScanSource",
|
|
12
|
+
]
|
|
@@ -12,8 +12,6 @@ from fnmatch import fnmatch
|
|
|
12
12
|
from pathlib import Path
|
|
13
13
|
from typing_extensions import TYPE_CHECKING
|
|
14
14
|
|
|
15
|
-
import httpx
|
|
16
|
-
|
|
17
15
|
from .scan_utils import get_scan_results, wait_for_scan_results, get_scan_results_async, wait_for_scan_results_async
|
|
18
16
|
|
|
19
17
|
logger = logging.getLogger(__name__)
|
|
@@ -135,8 +133,6 @@ class ModelScanner:
|
|
|
135
133
|
)
|
|
136
134
|
|
|
137
135
|
scan_id = upload_response.scan_id
|
|
138
|
-
if scan_id is None:
|
|
139
|
-
raise ValueError("scan_id must have a value")
|
|
140
136
|
|
|
141
137
|
# Upload the file
|
|
142
138
|
self._scan_file(scan_id=scan_id, file_path=file_path)
|
|
@@ -189,8 +185,6 @@ class ModelScanner:
|
|
|
189
185
|
)
|
|
190
186
|
|
|
191
187
|
scan_id = upload_response.scan_id
|
|
192
|
-
if scan_id is None:
|
|
193
|
-
raise ValueError("scan_id must have a value")
|
|
194
188
|
|
|
195
189
|
# Prepare file patterns
|
|
196
190
|
ignore_file_patterns = EXCLUDE_FILE_TYPES + ignore_file_patterns if ignore_file_patterns else EXCLUDE_FILE_TYPES
|
|
@@ -445,7 +439,7 @@ class ModelScanner:
|
|
|
445
439
|
if part.upload_url is None:
|
|
446
440
|
raise Exception("part.upload_url must not be None")
|
|
447
441
|
|
|
448
|
-
response =
|
|
442
|
+
response = self._client._client.put(
|
|
449
443
|
part.upload_url,
|
|
450
444
|
content=part_data,
|
|
451
445
|
headers={"Content-Type": "application/octet-stream"},
|
|
@@ -491,8 +485,6 @@ class AsyncModelScanner:
|
|
|
491
485
|
)
|
|
492
486
|
|
|
493
487
|
scan_id = upload_response.scan_id
|
|
494
|
-
if scan_id is None:
|
|
495
|
-
raise ValueError("scan_id must have a value")
|
|
496
488
|
|
|
497
489
|
# Upload the file
|
|
498
490
|
await self._scan_file(scan_id=scan_id, file_path=file_path)
|
|
@@ -536,8 +528,6 @@ class AsyncModelScanner:
|
|
|
536
528
|
)
|
|
537
529
|
|
|
538
530
|
scan_id = upload_response.scan_id
|
|
539
|
-
if scan_id is None:
|
|
540
|
-
raise ValueError("scan_id must have a value")
|
|
541
531
|
|
|
542
532
|
# Prepare file patterns
|
|
543
533
|
ignore_file_patterns = EXCLUDE_FILE_TYPES + ignore_file_patterns if ignore_file_patterns else EXCLUDE_FILE_TYPES
|
|
@@ -740,13 +730,12 @@ class AsyncModelScanner:
|
|
|
740
730
|
if part.upload_url is None:
|
|
741
731
|
raise Exception("part.upload_url must not be None")
|
|
742
732
|
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
response.raise_for_status()
|
|
733
|
+
response = await self._client._client.put(
|
|
734
|
+
part.upload_url,
|
|
735
|
+
content=part_data,
|
|
736
|
+
headers={"Content-Type": "application/octet-stream"},
|
|
737
|
+
)
|
|
738
|
+
response.raise_for_status()
|
|
750
739
|
|
|
751
740
|
# Complete the file upload
|
|
752
741
|
await self._client.scans.upload.file.complete(file_id=upload.upload_id, scan_id=scan_id)
|
|
@@ -53,7 +53,22 @@ class CardsResource(SyncAPIResource):
|
|
|
53
53
|
limit: int | Omit = omit,
|
|
54
54
|
model_created: card_list_params.ModelCreated | Omit = omit,
|
|
55
55
|
model_name: card_list_params.ModelName | Omit = omit,
|
|
56
|
-
modscan_severity: List[
|
|
56
|
+
modscan_severity: List[
|
|
57
|
+
Literal[
|
|
58
|
+
"SAFE",
|
|
59
|
+
"UNSAFE",
|
|
60
|
+
"SUSPICIOUS",
|
|
61
|
+
"UNKNOWN",
|
|
62
|
+
"ERROR",
|
|
63
|
+
"critical",
|
|
64
|
+
"high",
|
|
65
|
+
"medium",
|
|
66
|
+
"low",
|
|
67
|
+
"none",
|
|
68
|
+
"unknown",
|
|
69
|
+
]
|
|
70
|
+
]
|
|
71
|
+
| Omit = omit,
|
|
57
72
|
modscan_status: Literal["ENABLED", "DISABLED", "ANY"] | Omit = omit,
|
|
58
73
|
offset: int | Omit = omit,
|
|
59
74
|
provider: List[Literal["AZURE", "ADHOC"]] | Omit = omit,
|
|
@@ -152,7 +167,22 @@ class AsyncCardsResource(AsyncAPIResource):
|
|
|
152
167
|
limit: int | Omit = omit,
|
|
153
168
|
model_created: card_list_params.ModelCreated | Omit = omit,
|
|
154
169
|
model_name: card_list_params.ModelName | Omit = omit,
|
|
155
|
-
modscan_severity: List[
|
|
170
|
+
modscan_severity: List[
|
|
171
|
+
Literal[
|
|
172
|
+
"SAFE",
|
|
173
|
+
"UNSAFE",
|
|
174
|
+
"SUSPICIOUS",
|
|
175
|
+
"UNKNOWN",
|
|
176
|
+
"ERROR",
|
|
177
|
+
"critical",
|
|
178
|
+
"high",
|
|
179
|
+
"medium",
|
|
180
|
+
"low",
|
|
181
|
+
"none",
|
|
182
|
+
"unknown",
|
|
183
|
+
]
|
|
184
|
+
]
|
|
185
|
+
| Omit = omit,
|
|
156
186
|
modscan_status: Literal["ENABLED", "DISABLED", "ANY"] | Omit = omit,
|
|
157
187
|
offset: int | Omit = omit,
|
|
158
188
|
provider: List[Literal["AZURE", "ADHOC"]] | Omit = omit,
|
|
@@ -76,7 +76,6 @@ class JobsResource(SyncAPIResource):
|
|
|
76
76
|
"""
|
|
77
77
|
if not scan_id:
|
|
78
78
|
raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
|
|
79
|
-
extra_headers = {"Accept": "application/json; charset=utf-8", **(extra_headers or {})}
|
|
80
79
|
extra_headers = {**strip_not_given({"X-Correlation-Id": x_correlation_id}), **(extra_headers or {})}
|
|
81
80
|
return self._get(
|
|
82
81
|
f"/scan/v3/results/{scan_id}",
|
|
@@ -102,9 +101,10 @@ class JobsResource(SyncAPIResource):
|
|
|
102
101
|
model_name: job_list_params.ModelName | Omit = omit,
|
|
103
102
|
model_version_ids: SequenceNotStr[str] | Omit = omit,
|
|
104
103
|
offset: int | Omit = omit,
|
|
105
|
-
request_source: List[Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload"
|
|
104
|
+
request_source: List[Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload", "AI Asset Discovery"]]
|
|
105
|
+
| Omit = omit,
|
|
106
106
|
scanner_version: str | Omit = omit,
|
|
107
|
-
severity:
|
|
107
|
+
severity: Literal["critical", "high", "medium", "low", "none", "unknown", "safe"] | Omit = omit,
|
|
108
108
|
sort: str | Omit = omit,
|
|
109
109
|
source: job_list_params.Source | Omit = omit,
|
|
110
110
|
start_time: Union[str, datetime] | Omit = omit,
|
|
@@ -208,6 +208,8 @@ class JobsResource(SyncAPIResource):
|
|
|
208
208
|
Scan a remote model
|
|
209
209
|
|
|
210
210
|
Args:
|
|
211
|
+
access: Access method for the location of files associated with the scan
|
|
212
|
+
|
|
211
213
|
extra_headers: Send extra headers
|
|
212
214
|
|
|
213
215
|
extra_query: Add additional query parameters to the request
|
|
@@ -281,7 +283,6 @@ class AsyncJobsResource(AsyncAPIResource):
|
|
|
281
283
|
"""
|
|
282
284
|
if not scan_id:
|
|
283
285
|
raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
|
|
284
|
-
extra_headers = {"Accept": "application/json; charset=utf-8", **(extra_headers or {})}
|
|
285
286
|
extra_headers = {**strip_not_given({"X-Correlation-Id": x_correlation_id}), **(extra_headers or {})}
|
|
286
287
|
return await self._get(
|
|
287
288
|
f"/scan/v3/results/{scan_id}",
|
|
@@ -309,9 +310,10 @@ class AsyncJobsResource(AsyncAPIResource):
|
|
|
309
310
|
model_name: job_list_params.ModelName | Omit = omit,
|
|
310
311
|
model_version_ids: SequenceNotStr[str] | Omit = omit,
|
|
311
312
|
offset: int | Omit = omit,
|
|
312
|
-
request_source: List[Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload"
|
|
313
|
+
request_source: List[Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload", "AI Asset Discovery"]]
|
|
314
|
+
| Omit = omit,
|
|
313
315
|
scanner_version: str | Omit = omit,
|
|
314
|
-
severity:
|
|
316
|
+
severity: Literal["critical", "high", "medium", "low", "none", "unknown", "safe"] | Omit = omit,
|
|
315
317
|
sort: str | Omit = omit,
|
|
316
318
|
source: job_list_params.Source | Omit = omit,
|
|
317
319
|
start_time: Union[str, datetime] | Omit = omit,
|
|
@@ -415,6 +417,8 @@ class AsyncJobsResource(AsyncAPIResource):
|
|
|
415
417
|
Scan a remote model
|
|
416
418
|
|
|
417
419
|
Args:
|
|
420
|
+
access: Access method for the location of files associated with the scan
|
|
421
|
+
|
|
418
422
|
extra_headers: Send extra headers
|
|
419
423
|
|
|
420
424
|
extra_query: Add additional query parameters to the request
|
{hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/resources/scans/upload/upload.py
RENAMED
|
@@ -99,7 +99,8 @@ class UploadResource(SyncAPIResource):
|
|
|
99
99
|
requesting_entity: str,
|
|
100
100
|
location_alias: str | Omit = omit,
|
|
101
101
|
origin: str | Omit = omit,
|
|
102
|
-
request_source: Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload"
|
|
102
|
+
request_source: Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload", "AI Asset Discovery"]
|
|
103
|
+
| Omit = omit,
|
|
103
104
|
x_correlation_id: str | Omit = omit,
|
|
104
105
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
105
106
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
@@ -221,7 +222,8 @@ class AsyncUploadResource(AsyncAPIResource):
|
|
|
221
222
|
requesting_entity: str,
|
|
222
223
|
location_alias: str | Omit = omit,
|
|
223
224
|
origin: str | Omit = omit,
|
|
224
|
-
request_source: Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload"
|
|
225
|
+
request_source: Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload", "AI Asset Discovery"]
|
|
226
|
+
| Omit = omit,
|
|
225
227
|
x_correlation_id: str | Omit = omit,
|
|
226
228
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
227
229
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING, Dict, List, Optional
|
|
4
4
|
from datetime import datetime
|
|
5
|
+
from typing_extensions import Literal
|
|
5
6
|
|
|
6
7
|
from pydantic import Field as FieldInfo
|
|
7
8
|
|
|
@@ -24,6 +25,7 @@ __all__ = [
|
|
|
24
25
|
"ModifiedDataInputMessage",
|
|
25
26
|
"ModifiedDataOutput",
|
|
26
27
|
"ModifiedDataOutputMessage",
|
|
28
|
+
"Evaluation",
|
|
27
29
|
]
|
|
28
30
|
|
|
29
31
|
|
|
@@ -39,12 +41,17 @@ class AnalysisFindings(BaseModel):
|
|
|
39
41
|
frameworks: Dict[str, List[AnalysisFindingsFramework]]
|
|
40
42
|
"""The taxonomies for the detections."""
|
|
41
43
|
|
|
42
|
-
__pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
|
|
43
44
|
if TYPE_CHECKING:
|
|
45
|
+
# Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
|
|
46
|
+
# value to this field, so for compatibility we avoid doing it at runtime.
|
|
47
|
+
__pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
|
|
48
|
+
|
|
44
49
|
# Stub to indicate that arbitrary properties are accepted.
|
|
45
50
|
# To access properties that are not valid identifiers you can use `getattr`, e.g.
|
|
46
51
|
# `getattr(obj, '$type')`
|
|
47
52
|
def __getattr__(self, attr: str) -> object: ...
|
|
53
|
+
else:
|
|
54
|
+
__pydantic_extra__: Dict[str, object]
|
|
48
55
|
|
|
49
56
|
|
|
50
57
|
class Analysis(BaseModel):
|
|
@@ -85,12 +92,17 @@ class AnalyzedDataInput(BaseModel):
|
|
|
85
92
|
messages: Optional[List[AnalyzedDataInputMessage]] = None
|
|
86
93
|
"""The list of messages as input to a language model."""
|
|
87
94
|
|
|
88
|
-
__pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
|
|
89
95
|
if TYPE_CHECKING:
|
|
96
|
+
# Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
|
|
97
|
+
# value to this field, so for compatibility we avoid doing it at runtime.
|
|
98
|
+
__pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
|
|
99
|
+
|
|
90
100
|
# Stub to indicate that arbitrary properties are accepted.
|
|
91
101
|
# To access properties that are not valid identifiers you can use `getattr`, e.g.
|
|
92
102
|
# `getattr(obj, '$type')`
|
|
93
103
|
def __getattr__(self, attr: str) -> object: ...
|
|
104
|
+
else:
|
|
105
|
+
__pydantic_extra__: Dict[str, object]
|
|
94
106
|
|
|
95
107
|
|
|
96
108
|
class AnalyzedDataOutputMessage(BaseModel):
|
|
@@ -157,12 +169,17 @@ class ModifiedDataInput(BaseModel):
|
|
|
157
169
|
messages: Optional[List[ModifiedDataInputMessage]] = None
|
|
158
170
|
"""The list of messages as input to a language model."""
|
|
159
171
|
|
|
160
|
-
__pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
|
|
161
172
|
if TYPE_CHECKING:
|
|
173
|
+
# Some versions of Pydantic <2.8.0 have a bug and don’t allow assigning a
|
|
174
|
+
# value to this field, so for compatibility we avoid doing it at runtime.
|
|
175
|
+
__pydantic_extra__: Dict[str, object] = FieldInfo(init=False) # pyright: ignore[reportIncompatibleVariableOverride]
|
|
176
|
+
|
|
162
177
|
# Stub to indicate that arbitrary properties are accepted.
|
|
163
178
|
# To access properties that are not valid identifiers you can use `getattr`, e.g.
|
|
164
179
|
# `getattr(obj, '$type')`
|
|
165
180
|
def __getattr__(self, attr: str) -> object: ...
|
|
181
|
+
else:
|
|
182
|
+
__pydantic_extra__: Dict[str, object]
|
|
166
183
|
|
|
167
184
|
|
|
168
185
|
class ModifiedDataOutputMessage(BaseModel):
|
|
@@ -184,6 +201,20 @@ class ModifiedData(BaseModel):
|
|
|
184
201
|
output: ModifiedDataOutput
|
|
185
202
|
|
|
186
203
|
|
|
204
|
+
class Evaluation(BaseModel):
|
|
205
|
+
action: Literal["Allow", "Alert", "Redact", "Block"]
|
|
206
|
+
"""The action based on interaction analysis and configured tenant security rules."""
|
|
207
|
+
|
|
208
|
+
has_detections: bool
|
|
209
|
+
"""Indicates if any detections were found during the analysis."""
|
|
210
|
+
|
|
211
|
+
threat_level: Literal["None", "Low", "Medium", "High", "Critical"]
|
|
212
|
+
"""
|
|
213
|
+
The threat level based on interaction analysis and configured tenant security
|
|
214
|
+
rules.
|
|
215
|
+
"""
|
|
216
|
+
|
|
217
|
+
|
|
187
218
|
class InteractionAnalyzeResponse(BaseModel):
|
|
188
219
|
analysis: List[Analysis]
|
|
189
220
|
|
|
@@ -197,3 +228,6 @@ class InteractionAnalyzeResponse(BaseModel):
|
|
|
197
228
|
The potentially modified language model input and output after applying any
|
|
198
229
|
redactions or modifications based on the analysis.
|
|
199
230
|
"""
|
|
231
|
+
|
|
232
|
+
evaluation: Optional[Evaluation] = None
|
|
233
|
+
"""The evaluation of the analysis results."""
|
{hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/models/card_list_params.py
RENAMED
|
@@ -26,7 +26,11 @@ class CardListParams(TypedDict, total=False):
|
|
|
26
26
|
model_name: ModelName
|
|
27
27
|
"""substring match on model name"""
|
|
28
28
|
|
|
29
|
-
modscan_severity: List[
|
|
29
|
+
modscan_severity: List[
|
|
30
|
+
Literal[
|
|
31
|
+
"SAFE", "UNSAFE", "SUSPICIOUS", "UNKNOWN", "ERROR", "critical", "high", "medium", "low", "none", "unknown"
|
|
32
|
+
]
|
|
33
|
+
]
|
|
30
34
|
|
|
31
35
|
modscan_status: Literal["ENABLED", "DISABLED", "ANY"]
|
|
32
36
|
|
{hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/models/card_list_response.py
RENAMED
|
@@ -35,12 +35,18 @@ class CardListResponse(BaseModel):
|
|
|
35
35
|
|
|
36
36
|
model_id: str
|
|
37
37
|
|
|
38
|
+
model_scan_severity: Literal["not available", "critical", "high", "medium", "low", "none", "unknown"]
|
|
39
|
+
"""The severity of the model's latest scan"""
|
|
40
|
+
|
|
38
41
|
model_scan_threat_level: Literal["safe", "unsafe", "suspicious", "not available"]
|
|
39
42
|
|
|
40
43
|
plaintext_name: str
|
|
41
44
|
|
|
42
45
|
source: str
|
|
43
46
|
|
|
47
|
+
model_scan_has_error: Optional[bool] = None
|
|
48
|
+
"""True if the model's latest scan has an error"""
|
|
49
|
+
|
|
44
50
|
security_posture: Optional[SecurityPosture] = None
|
|
45
51
|
|
|
46
52
|
tags: Optional[Dict[str, object]] = None
|
{hiddenlayer_sdk-3.0.1 → hiddenlayer_sdk-3.1.0}/src/hiddenlayer/types/scans/job_list_params.py
RENAMED
|
@@ -38,13 +38,13 @@ class JobListParams(TypedDict, total=False):
|
|
|
38
38
|
|
|
39
39
|
offset: int
|
|
40
40
|
|
|
41
|
-
request_source: List[Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload"]]
|
|
41
|
+
request_source: List[Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload", "AI Asset Discovery"]]
|
|
42
42
|
"""Filter by request source using a comma-separated list"""
|
|
43
43
|
|
|
44
44
|
scanner_version: str
|
|
45
45
|
"""filter by version of the scanner"""
|
|
46
46
|
|
|
47
|
-
severity:
|
|
47
|
+
severity: Literal["critical", "high", "medium", "low", "none", "unknown", "safe"]
|
|
48
48
|
"""Severities"""
|
|
49
49
|
|
|
50
50
|
sort: str
|