regula-facesdk-webclient 7.2.388.dev0__py3-none-any.whl → 8.1.433.dev0__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.
- regula/facesdk/webclient/__init__.py +5 -5
- regula/facesdk/webclient/ext/api/group_api.py +2 -27
- regula/facesdk/webclient/ext/api/match_api.py +3 -29
- regula/facesdk/webclient/ext/api/person_api.py +8 -34
- regula/facesdk/webclient/ext/api/sdk.py +5 -3
- regula/facesdk/webclient/ext/api/search_api.py +2 -6
- regula/facesdk/webclient/ext/models/detect_request.py +6 -5
- regula/facesdk/webclient/ext/models/match_image.py +3 -3
- regula/facesdk/webclient/ext/models/match_request.py +7 -5
- regula/facesdk/webclient/gen/__init__.py +349 -18
- regula/facesdk/webclient/gen/api/__init__.py +30 -3
- regula/facesdk/webclient/gen/api/group_api.py +1854 -799
- regula/facesdk/webclient/gen/api/healthcheck_api.py +475 -215
- regula/facesdk/webclient/gen/api/liveness20_api.py +565 -0
- regula/facesdk/webclient/gen/api/match_api.py +801 -355
- regula/facesdk/webclient/gen/api/person_api.py +2399 -1039
- regula/facesdk/webclient/gen/api/search_api.py +286 -130
- regula/facesdk/webclient/gen/api_client.py +577 -476
- regula/facesdk/webclient/gen/api_response.py +21 -0
- regula/facesdk/webclient/gen/configuration.py +231 -105
- regula/facesdk/webclient/gen/exceptions.py +82 -33
- regula/facesdk/webclient/gen/models/__init__.py +202 -95
- regula/facesdk/webclient/gen/models/add_image_to_person_request.py +96 -0
- regula/facesdk/webclient/gen/models/add_image_to_person_request_data.py +92 -0
- regula/facesdk/webclient/gen/models/add_image_to_person_request_image.py +92 -0
- regula/facesdk/webclient/gen/models/add_image_to_person_response.py +92 -0
- regula/facesdk/webclient/gen/models/attribute_config.py +83 -0
- regula/facesdk/webclient/gen/models/attributes_data.py +82 -0
- regula/facesdk/webclient/gen/models/crop.py +88 -0
- regula/facesdk/webclient/gen/models/detail_item.py +136 -0
- regula/facesdk/webclient/gen/models/detect_attributes_details.py +84 -0
- regula/facesdk/webclient/gen/models/detect_details_meta.py +86 -0
- regula/facesdk/webclient/gen/models/detect_meta_data.py +84 -0
- regula/facesdk/webclient/gen/models/detect_request.py +94 -0
- regula/facesdk/webclient/gen/models/detect_request_data.py +90 -0
- regula/facesdk/webclient/gen/models/detect_response.py +89 -0
- regula/facesdk/webclient/gen/models/detect_response_results.py +86 -0
- regula/facesdk/webclient/gen/models/detect_result.py +98 -0
- regula/facesdk/webclient/gen/models/detection.py +98 -0
- regula/facesdk/webclient/gen/models/detection_attributes.py +92 -0
- regula/facesdk/webclient/gen/models/detection_attributes_details_inner.py +132 -0
- regula/facesdk/webclient/gen/models/detection_face.py +90 -0
- regula/facesdk/webclient/gen/models/detection_quality.py +107 -0
- regula/facesdk/webclient/gen/models/device_info.py +111 -0
- regula/facesdk/webclient/gen/models/face_attribute.py +40 -0
- regula/facesdk/webclient/gen/models/face_image_quality_align_type.py +32 -0
- regula/facesdk/webclient/gen/models/face_image_quality_groups.py +35 -0
- regula/facesdk/webclient/gen/models/face_image_quality_groups_strings.py +35 -0
- regula/facesdk/webclient/gen/models/face_image_quality_status.py +30 -0
- regula/facesdk/webclient/gen/models/face_quality_config_name.py +75 -0
- regula/facesdk/webclient/gen/models/face_quality_scenarios.py +37 -0
- regula/facesdk/webclient/gen/models/face_sdk_result.py +83 -0
- regula/facesdk/webclient/gen/models/face_sdk_result_code.py +68 -0
- regula/facesdk/webclient/gen/models/faces_response.py +100 -0
- regula/facesdk/webclient/gen/models/faces_response_data.py +90 -0
- regula/facesdk/webclient/gen/models/filter_op.py +29 -0
- regula/facesdk/webclient/gen/models/filter_search_request.py +87 -0
- regula/facesdk/webclient/gen/models/group.py +89 -0
- regula/facesdk/webclient/gen/models/group_data.py +85 -0
- regula/facesdk/webclient/gen/models/group_page.py +94 -0
- regula/facesdk/webclient/gen/models/group_page_items.py +90 -0
- regula/facesdk/webclient/gen/models/group_response.py +84 -0
- regula/facesdk/webclient/gen/models/group_to_create.py +86 -0
- regula/facesdk/webclient/gen/models/image.py +96 -0
- regula/facesdk/webclient/gen/models/image_fields.py +100 -0
- regula/facesdk/webclient/gen/models/image_fields_image.py +92 -0
- regula/facesdk/webclient/gen/models/image_page.py +94 -0
- regula/facesdk/webclient/gen/models/image_page_items.py +90 -0
- regula/facesdk/webclient/gen/models/image_source.py +34 -0
- regula/facesdk/webclient/gen/models/liveness_type.py +29 -0
- regula/facesdk/webclient/gen/models/match_and_search_request.py +103 -0
- regula/facesdk/webclient/gen/models/match_and_search_request_images_item.py +87 -0
- regula/facesdk/webclient/gen/models/match_and_search_response.py +107 -0
- regula/facesdk/webclient/gen/models/match_and_search_response_data.py +104 -0
- regula/facesdk/webclient/gen/models/match_and_search_response_data_detections_item.py +95 -0
- regula/facesdk/webclient/gen/models/match_image.py +89 -0
- regula/facesdk/webclient/gen/models/match_image_detection.py +95 -0
- regula/facesdk/webclient/gen/models/match_image_result.py +97 -0
- regula/facesdk/webclient/gen/models/match_request.py +102 -0
- regula/facesdk/webclient/gen/models/match_request_data.py +98 -0
- regula/facesdk/webclient/gen/models/match_response.py +105 -0
- regula/facesdk/webclient/gen/models/match_response_data.py +102 -0
- regula/facesdk/webclient/gen/models/operation_log.py +88 -0
- regula/facesdk/webclient/gen/models/output_image_params.py +89 -0
- regula/facesdk/webclient/gen/models/page.py +84 -0
- regula/facesdk/webclient/gen/models/person.py +97 -0
- regula/facesdk/webclient/gen/models/person_data.py +87 -0
- regula/facesdk/webclient/gen/models/person_fields.py +91 -0
- regula/facesdk/webclient/gen/models/person_items.py +90 -0
- regula/facesdk/webclient/gen/models/person_to_update_fields.py +89 -0
- regula/facesdk/webclient/gen/models/person_with_images.py +107 -0
- regula/facesdk/webclient/gen/models/person_with_images_data.py +90 -0
- regula/facesdk/webclient/gen/models/persons_page.py +94 -0
- regula/facesdk/webclient/gen/models/process_param.py +103 -0
- regula/facesdk/webclient/gen/models/process_param_attributes.py +90 -0
- regula/facesdk/webclient/gen/models/quality_config.py +86 -0
- regula/facesdk/webclient/gen/models/quality_detail.py +94 -0
- regula/facesdk/webclient/gen/models/quality_details_groups.py +90 -0
- regula/facesdk/webclient/gen/models/quality_request.py +93 -0
- regula/facesdk/webclient/gen/models/recognize_image.py +100 -0
- regula/facesdk/webclient/gen/models/recognize_image_data.py +84 -0
- regula/facesdk/webclient/gen/models/resize_options.py +86 -0
- regula/facesdk/webclient/gen/models/search_bad_params.py +86 -0
- regula/facesdk/webclient/gen/models/search_detection.py +102 -0
- regula/facesdk/webclient/gen/models/search_parameters.py +95 -0
- regula/facesdk/webclient/gen/models/search_parameters_create_person.py +86 -0
- regula/facesdk/webclient/gen/models/search_person.py +113 -0
- regula/facesdk/webclient/gen/models/search_person_data.py +96 -0
- regula/facesdk/webclient/gen/models/search_request.py +119 -0
- regula/facesdk/webclient/gen/models/search_result.py +92 -0
- regula/facesdk/webclient/gen/models/transaction_info.py +99 -0
- regula/facesdk/webclient/gen/models/transaction_labels.py +84 -0
- regula/facesdk/webclient/gen/models/update_group.py +85 -0
- regula/facesdk/webclient/gen/py.typed +0 -0
- regula/facesdk/webclient/gen/rest.py +136 -232
- {regula_facesdk_webclient-7.2.388.dev0.dist-info → regula_facesdk_webclient-8.1.433.dev0.dist-info}/METADATA +7 -4
- regula_facesdk_webclient-8.1.433.dev0.dist-info/RECORD +125 -0
- {regula_facesdk_webclient-7.2.388.dev0.dist-info → regula_facesdk_webclient-8.1.433.dev0.dist-info}/WHEEL +1 -1
- regula/facesdk/webclient/gen/api/diagnostics_api.py +0 -162
- regula/facesdk/webclient/gen/api/liveness_2_0_api.py +0 -306
- regula/facesdk/webclient/gen/api/liveness_api.py +0 -424
- regula/facesdk/webclient/gen/apis/__init__.py +0 -22
- regula/facesdk/webclient/gen/model/__init__.py +0 -5
- regula/facesdk/webclient/gen/model/add_image_to_person_request.py +0 -261
- regula/facesdk/webclient/gen/model/add_image_to_person_request_image.py +0 -204
- regula/facesdk/webclient/gen/model/add_image_to_person_response.py +0 -262
- regula/facesdk/webclient/gen/model/attribute_config.py +0 -120
- regula/facesdk/webclient/gen/model/attribute_config_list.py +0 -92
- regula/facesdk/webclient/gen/model/crop.py +0 -180
- regula/facesdk/webclient/gen/model/detect_attributes_details.py +0 -150
- regula/facesdk/webclient/gen/model/detect_details_meta.py +0 -178
- regula/facesdk/webclient/gen/model/detect_request.py +0 -232
- regula/facesdk/webclient/gen/model/detect_request_attributes.py +0 -120
- regula/facesdk/webclient/gen/model/detect_response.py +0 -147
- regula/facesdk/webclient/gen/model/detect_response_all_of.py +0 -120
- regula/facesdk/webclient/gen/model/detect_result.py +0 -235
- regula/facesdk/webclient/gen/model/detection.py +0 -230
- regula/facesdk/webclient/gen/model/detection_attributes.py +0 -150
- regula/facesdk/webclient/gen/model/detection_face.py +0 -232
- regula/facesdk/webclient/gen/model/detection_quality.py +0 -234
- regula/facesdk/webclient/gen/model/device_info.py +0 -231
- regula/facesdk/webclient/gen/model/face_align_type_quality.py +0 -109
- regula/facesdk/webclient/gen/model/face_attribute.py +0 -133
- regula/facesdk/webclient/gen/model/face_image_quality_align_type.py +0 -109
- regula/facesdk/webclient/gen/model/face_image_quality_groups.py +0 -118
- regula/facesdk/webclient/gen/model/face_image_quality_groups_strings.py +0 -118
- regula/facesdk/webclient/gen/model/face_image_quality_status.py +0 -103
- regula/facesdk/webclient/gen/model/face_quality_config_name.py +0 -238
- regula/facesdk/webclient/gen/model/face_quality_scenarios.py +0 -124
- regula/facesdk/webclient/gen/model/face_quality_status.py +0 -103
- regula/facesdk/webclient/gen/model/face_rectangular.py +0 -92
- regula/facesdk/webclient/gen/model/face_sdk_result.py +0 -121
- regula/facesdk/webclient/gen/model/face_sdk_result_code.py +0 -217
- regula/facesdk/webclient/gen/model/faces_response.py +0 -258
- regula/facesdk/webclient/gen/model/faces_response_all_of.py +0 -148
- regula/facesdk/webclient/gen/model/filter_op.py +0 -100
- regula/facesdk/webclient/gen/model/filter_search_request.py +0 -176
- regula/facesdk/webclient/gen/model/group.py +0 -206
- regula/facesdk/webclient/gen/model/group_all_of.py +0 -150
- regula/facesdk/webclient/gen/model/group_page.py +0 -178
- regula/facesdk/webclient/gen/model/group_page_all_of.py +0 -122
- regula/facesdk/webclient/gen/model/group_response.py +0 -150
- regula/facesdk/webclient/gen/model/group_to_create.py +0 -180
- regula/facesdk/webclient/gen/model/image.py +0 -318
- regula/facesdk/webclient/gen/model/image_fields.py +0 -258
- regula/facesdk/webclient/gen/model/image_fields_image.py +0 -204
- regula/facesdk/webclient/gen/model/image_page.py +0 -176
- regula/facesdk/webclient/gen/model/image_page_all_of.py +0 -120
- regula/facesdk/webclient/gen/model/image_source.py +0 -115
- regula/facesdk/webclient/gen/model/liveness_transaction.py +0 -334
- regula/facesdk/webclient/gen/model/liveness_type.py +0 -100
- regula/facesdk/webclient/gen/model/match_and_search_request.py +0 -290
- regula/facesdk/webclient/gen/model/match_and_search_request_all_of.py +0 -234
- regula/facesdk/webclient/gen/model/match_and_search_request_all_of_images.py +0 -148
- regula/facesdk/webclient/gen/model/match_and_search_request_images.py +0 -176
- regula/facesdk/webclient/gen/model/match_and_search_response.py +0 -233
- regula/facesdk/webclient/gen/model/match_and_search_response_all_of.py +0 -206
- regula/facesdk/webclient/gen/model/match_and_search_response_all_of_detections.py +0 -176
- regula/facesdk/webclient/gen/model/match_image.py +0 -205
- regula/facesdk/webclient/gen/model/match_image_detection.py +0 -178
- regula/facesdk/webclient/gen/model/match_image_result.py +0 -316
- regula/facesdk/webclient/gen/model/match_request.py +0 -233
- regula/facesdk/webclient/gen/model/match_request_output_image_params.py +0 -148
- regula/facesdk/webclient/gen/model/match_request_output_image_params_crop.py +0 -212
- regula/facesdk/webclient/gen/model/match_response.py +0 -205
- regula/facesdk/webclient/gen/model/match_response_all_of.py +0 -178
- regula/facesdk/webclient/gen/model/operation_log.py +0 -206
- regula/facesdk/webclient/gen/model/output_image_params.py +0 -146
- regula/facesdk/webclient/gen/model/page.py +0 -150
- regula/facesdk/webclient/gen/model/person.py +0 -319
- regula/facesdk/webclient/gen/model/person_all_of.py +0 -206
- regula/facesdk/webclient/gen/model/person_created_response.py +0 -178
- regula/facesdk/webclient/gen/model/person_fields.py +0 -235
- regula/facesdk/webclient/gen/model/person_to_update_fields.py +0 -206
- regula/facesdk/webclient/gen/model/person_with_images.py +0 -347
- regula/facesdk/webclient/gen/model/person_with_images_all_of.py +0 -122
- regula/facesdk/webclient/gen/model/persons_page.py +0 -176
- regula/facesdk/webclient/gen/model/persons_page_all_of.py +0 -120
- regula/facesdk/webclient/gen/model/persons_request.py +0 -291
- regula/facesdk/webclient/gen/model/persons_request_all_of.py +0 -150
- regula/facesdk/webclient/gen/model/process_param.py +0 -226
- regula/facesdk/webclient/gen/model/process_param_attributes.py +0 -120
- regula/facesdk/webclient/gen/model/quality_config.py +0 -154
- regula/facesdk/webclient/gen/model/quality_config_list.py +0 -92
- regula/facesdk/webclient/gen/model/quality_detail.py +0 -234
- regula/facesdk/webclient/gen/model/quality_details_groups.py +0 -202
- regula/facesdk/webclient/gen/model/quality_request.py +0 -146
- regula/facesdk/webclient/gen/model/recognize_image.py +0 -374
- regula/facesdk/webclient/gen/model/recognize_image_all_of.py +0 -150
- regula/facesdk/webclient/gen/model/resize_options.py +0 -178
- regula/facesdk/webclient/gen/model/rgb.py +0 -92
- regula/facesdk/webclient/gen/model/search_bad_params.py +0 -172
- regula/facesdk/webclient/gen/model/search_detection.py +0 -398
- regula/facesdk/webclient/gen/model/search_parameters.py +0 -174
- regula/facesdk/webclient/gen/model/search_parameters_create_person.py +0 -177
- regula/facesdk/webclient/gen/model/search_person.py +0 -373
- regula/facesdk/webclient/gen/model/search_person_all_of.py +0 -148
- regula/facesdk/webclient/gen/model/search_request.py +0 -394
- regula/facesdk/webclient/gen/model/search_request_all_of.py +0 -150
- regula/facesdk/webclient/gen/model/search_result.py +0 -150
- regula/facesdk/webclient/gen/model/search_result_all_of.py +0 -122
- regula/facesdk/webclient/gen/model/transaction_config.py +0 -92
- regula/facesdk/webclient/gen/model/transaction_info.py +0 -344
- regula/facesdk/webclient/gen/model/update_group.py +0 -150
- regula/facesdk/webclient/gen/model_utils.py +0 -2037
- regula_facesdk_webclient-7.2.388.dev0.dist-info/RECORD +0 -138
- {regula_facesdk_webclient-7.2.388.dev0.dist-info → regula_facesdk_webclient-8.1.433.dev0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Generated by: https://openapi-generator.tech
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
import pprint
|
|
9
|
+
import re # noqa: F401
|
|
10
|
+
import json
|
|
11
|
+
|
|
12
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
|
13
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
14
|
+
from typing import Optional, Set
|
|
15
|
+
from typing_extensions import Self
|
|
16
|
+
from pydantic import SkipValidation, Field
|
|
17
|
+
|
|
18
|
+
class TransactionLabels(BaseModel):
|
|
19
|
+
"""
|
|
20
|
+
TransactionLabels
|
|
21
|
+
""" # noqa: E501
|
|
22
|
+
tenant: SkipValidation[Optional[str]] = Field(alias="tenant", default=None, description="A label used to group transactions by customers, applications, or other criteria.")
|
|
23
|
+
env: SkipValidation[Optional[str]] = Field(alias="env", default=None, description="A label used to differentiate transactions by development stages.")
|
|
24
|
+
__properties: ClassVar[List[str]] = ["tenant", "env"]
|
|
25
|
+
|
|
26
|
+
model_config = ConfigDict(
|
|
27
|
+
populate_by_name=True,
|
|
28
|
+
validate_assignment=True,
|
|
29
|
+
protected_namespaces=(),
|
|
30
|
+
arbitrary_types_allowed=True,
|
|
31
|
+
use_enum_values=True
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def to_str(self) -> str:
|
|
36
|
+
"""Returns the string representation of the model using alias"""
|
|
37
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
38
|
+
|
|
39
|
+
def to_json(self) -> str:
|
|
40
|
+
"""Returns the JSON representation of the model using alias"""
|
|
41
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
42
|
+
return json.dumps(self.to_dict())
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
46
|
+
"""Create an instance of TransactionLabels from a JSON string"""
|
|
47
|
+
return cls.from_dict(json.loads(json_str))
|
|
48
|
+
|
|
49
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
50
|
+
"""Return the dictionary representation of the model using alias.
|
|
51
|
+
|
|
52
|
+
This has the following differences from calling pydantic's
|
|
53
|
+
`self.model_dump(by_alias=True)`:
|
|
54
|
+
|
|
55
|
+
* `None` is only added to the output dict for nullable fields that
|
|
56
|
+
were set at model initialization. Other fields with value `None`
|
|
57
|
+
are ignored.
|
|
58
|
+
"""
|
|
59
|
+
excluded_fields: Set[str] = set([
|
|
60
|
+
])
|
|
61
|
+
|
|
62
|
+
_dict = self.model_dump(
|
|
63
|
+
by_alias=True,
|
|
64
|
+
exclude=excluded_fields,
|
|
65
|
+
exclude_none=True,
|
|
66
|
+
)
|
|
67
|
+
return _dict
|
|
68
|
+
|
|
69
|
+
@classmethod
|
|
70
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
71
|
+
"""Create an instance of TransactionLabels from a dict"""
|
|
72
|
+
if obj is None:
|
|
73
|
+
return None
|
|
74
|
+
|
|
75
|
+
if not isinstance(obj, dict):
|
|
76
|
+
return cls.model_validate(obj)
|
|
77
|
+
|
|
78
|
+
_obj = cls.model_validate({
|
|
79
|
+
"tenant": obj.get("tenant"),
|
|
80
|
+
"env": obj.get("env")
|
|
81
|
+
})
|
|
82
|
+
return _obj
|
|
83
|
+
|
|
84
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Generated by: https://openapi-generator.tech
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
import pprint
|
|
9
|
+
import re # noqa: F401
|
|
10
|
+
import json
|
|
11
|
+
|
|
12
|
+
from pydantic import BaseModel, ConfigDict, Field
|
|
13
|
+
from typing import Any, ClassVar, Dict, List, Optional
|
|
14
|
+
from uuid import UUID
|
|
15
|
+
from typing import Optional, Set
|
|
16
|
+
from typing_extensions import Self
|
|
17
|
+
from pydantic import SkipValidation, Field
|
|
18
|
+
|
|
19
|
+
class UpdateGroup(BaseModel):
|
|
20
|
+
"""
|
|
21
|
+
Update group.
|
|
22
|
+
""" # noqa: E501
|
|
23
|
+
add_items: SkipValidation[Optional[List[str]]] = Field(alias="addItems", default=None, description="Add items.")
|
|
24
|
+
remove_items: SkipValidation[Optional[List[str]]] = Field(alias="removeItems", default=None, description="Remove items.")
|
|
25
|
+
__properties: ClassVar[List[str]] = ["addItems", "removeItems"]
|
|
26
|
+
|
|
27
|
+
model_config = ConfigDict(
|
|
28
|
+
populate_by_name=True,
|
|
29
|
+
validate_assignment=True,
|
|
30
|
+
protected_namespaces=(),
|
|
31
|
+
arbitrary_types_allowed=True,
|
|
32
|
+
use_enum_values=True
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def to_str(self) -> str:
|
|
37
|
+
"""Returns the string representation of the model using alias"""
|
|
38
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
39
|
+
|
|
40
|
+
def to_json(self) -> str:
|
|
41
|
+
"""Returns the JSON representation of the model using alias"""
|
|
42
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
43
|
+
return json.dumps(self.to_dict())
|
|
44
|
+
|
|
45
|
+
@classmethod
|
|
46
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
47
|
+
"""Create an instance of UpdateGroup from a JSON string"""
|
|
48
|
+
return cls.from_dict(json.loads(json_str))
|
|
49
|
+
|
|
50
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
51
|
+
"""Return the dictionary representation of the model using alias.
|
|
52
|
+
|
|
53
|
+
This has the following differences from calling pydantic's
|
|
54
|
+
`self.model_dump(by_alias=True)`:
|
|
55
|
+
|
|
56
|
+
* `None` is only added to the output dict for nullable fields that
|
|
57
|
+
were set at model initialization. Other fields with value `None`
|
|
58
|
+
are ignored.
|
|
59
|
+
"""
|
|
60
|
+
excluded_fields: Set[str] = set([
|
|
61
|
+
])
|
|
62
|
+
|
|
63
|
+
_dict = self.model_dump(
|
|
64
|
+
by_alias=True,
|
|
65
|
+
exclude=excluded_fields,
|
|
66
|
+
exclude_none=True,
|
|
67
|
+
)
|
|
68
|
+
return _dict
|
|
69
|
+
|
|
70
|
+
@classmethod
|
|
71
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
72
|
+
"""Create an instance of UpdateGroup from a dict"""
|
|
73
|
+
if obj is None:
|
|
74
|
+
return None
|
|
75
|
+
|
|
76
|
+
if not isinstance(obj, dict):
|
|
77
|
+
return cls.model_validate(obj)
|
|
78
|
+
|
|
79
|
+
_obj = cls.model_validate({
|
|
80
|
+
"addItems": obj.get("addItems"),
|
|
81
|
+
"removeItems": obj.get("removeItems")
|
|
82
|
+
})
|
|
83
|
+
return _obj
|
|
84
|
+
|
|
85
|
+
|
|
File without changes
|
|
@@ -1,54 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
Regula Face SDK Web API
|
|
3
|
-
|
|
4
|
-
<a href=\"https://regulaforensics.com/products/face-recognition-sdk/ \" target=\"_blank\">Regula Face SDK</a> is a cross-platform biometric verification solution for a digital identity verification process and image quality assurance. The SDK enables convenient and reliable face capture on the client side (mobile, web, and desktop) and further processing on the client or server side. The Face SDK includes the following features: * <a href=\"https://docs.regulaforensics.com/develop/face-sdk/overview/introduction/#face-detection\" target=\"_blank\">Face detection and image quality assessment</a> * <a href=\"https://docs.regulaforensics.com/develop/face-sdk/overview/introduction/#face-comparison-11\" target=\"_blank\">Face match (1:1)</a> * <a href=\"https://docs.regulaforensics.com/develop/face-sdk/overview/introduction/#face-identification-1n\" target=\"_blank\">Face search (1:N)</a> * <a href=\"https://docs.regulaforensics.com/develop/face-sdk/overview/introduction/#liveness-assessment\" target=\"_blank\">Liveness detection</a> Here is the <a href=\"https://github.com/regulaforensics/FaceSDK-web-openapi \" target=\"_blank\">OpenAPI specification on GitHub</a>. ### Clients * [JavaScript](https://github.com/regulaforensics/FaceSDK-web-js-client) client for the browser and node.js based on axios * [Java](https://github.com/regulaforensics/FaceSDK-web-java-client) client compatible with jvm and android * [Python](https://github.com/regulaforensics/FaceSDK-web-python-client) 3.5+ client * [C#](https://github.com/regulaforensics/FaceSDK-web-csharp-client) client for .NET & .NET Core # noqa: E501
|
|
1
|
+
# coding: utf-8
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
"""
|
|
7
4
|
Generated by: https://openapi-generator.tech
|
|
8
5
|
"""
|
|
9
6
|
|
|
10
|
-
|
|
11
7
|
import io
|
|
12
8
|
import json
|
|
13
|
-
import logging
|
|
14
9
|
import re
|
|
15
10
|
import ssl
|
|
16
|
-
|
|
17
|
-
from urllib.parse import urlparse
|
|
18
|
-
from urllib.request import proxy_bypass_environment
|
|
11
|
+
|
|
19
12
|
import urllib3
|
|
20
|
-
import ipaddress
|
|
21
13
|
|
|
22
|
-
from regula.facesdk.webclient.gen.exceptions import ApiException,
|
|
14
|
+
from regula.facesdk.webclient.gen.exceptions import ApiException, ApiValueError
|
|
15
|
+
|
|
16
|
+
SUPPORTED_SOCKS_PROXIES = {"socks5", "socks5h", "socks4", "socks4a"}
|
|
17
|
+
RESTResponseType = urllib3.HTTPResponse
|
|
23
18
|
|
|
24
19
|
|
|
25
|
-
|
|
20
|
+
def is_socks_proxy_url(url):
|
|
21
|
+
if url is None:
|
|
22
|
+
return False
|
|
23
|
+
split_section = url.split("://")
|
|
24
|
+
if len(split_section) < 2:
|
|
25
|
+
return False
|
|
26
|
+
else:
|
|
27
|
+
return split_section[0].lower() in SUPPORTED_SOCKS_PROXIES
|
|
26
28
|
|
|
27
29
|
|
|
28
30
|
class RESTResponse(io.IOBase):
|
|
29
31
|
|
|
30
|
-
def __init__(self, resp):
|
|
31
|
-
self.
|
|
32
|
+
def __init__(self, resp) -> None:
|
|
33
|
+
self.response = resp
|
|
32
34
|
self.status = resp.status
|
|
33
35
|
self.reason = resp.reason
|
|
34
|
-
self.data =
|
|
36
|
+
self.data = None
|
|
37
|
+
|
|
38
|
+
def read(self):
|
|
39
|
+
if self.data is None:
|
|
40
|
+
self.data = self.response.data
|
|
41
|
+
return self.data
|
|
35
42
|
|
|
36
43
|
def getheaders(self):
|
|
37
44
|
"""Returns a dictionary of the response headers."""
|
|
38
|
-
return self.
|
|
45
|
+
return self.response.headers
|
|
39
46
|
|
|
40
47
|
def getheader(self, name, default=None):
|
|
41
48
|
"""Returns a given response header."""
|
|
42
|
-
return self.
|
|
49
|
+
return self.response.headers.get(name, default)
|
|
43
50
|
|
|
44
51
|
|
|
45
|
-
class RESTClientObject
|
|
52
|
+
class RESTClientObject:
|
|
46
53
|
|
|
47
|
-
def __init__(self, configuration
|
|
54
|
+
def __init__(self, configuration) -> None:
|
|
48
55
|
# urllib3.PoolManager will pass all kw parameters to connectionpool
|
|
49
56
|
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
|
|
50
57
|
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
|
|
51
|
-
# maxsize is the number of requests to host that are allowed in parallel # noqa: E501
|
|
52
58
|
# Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
|
|
53
59
|
|
|
54
60
|
# cert_reqs
|
|
@@ -57,70 +63,80 @@ class RESTClientObject(object):
|
|
|
57
63
|
else:
|
|
58
64
|
cert_reqs = ssl.CERT_NONE
|
|
59
65
|
|
|
60
|
-
|
|
66
|
+
pool_args = {
|
|
67
|
+
"cert_reqs": cert_reqs,
|
|
68
|
+
"ca_certs": configuration.ssl_ca_cert,
|
|
69
|
+
"cert_file": configuration.cert_file,
|
|
70
|
+
"key_file": configuration.key_file,
|
|
71
|
+
"ca_cert_data": configuration.ca_cert_data,
|
|
72
|
+
}
|
|
61
73
|
if configuration.assert_hostname is not None:
|
|
62
|
-
|
|
74
|
+
pool_args['assert_hostname'] = (
|
|
75
|
+
configuration.assert_hostname
|
|
76
|
+
)
|
|
63
77
|
|
|
64
78
|
if configuration.retries is not None:
|
|
65
|
-
|
|
79
|
+
pool_args['retries'] = configuration.retries
|
|
80
|
+
|
|
81
|
+
if configuration.tls_server_name:
|
|
82
|
+
pool_args['server_hostname'] = configuration.tls_server_name
|
|
83
|
+
|
|
66
84
|
|
|
67
85
|
if configuration.socket_options is not None:
|
|
68
|
-
|
|
86
|
+
pool_args['socket_options'] = configuration.socket_options
|
|
69
87
|
|
|
70
|
-
if
|
|
71
|
-
|
|
72
|
-
maxsize = configuration.connection_pool_maxsize
|
|
73
|
-
else:
|
|
74
|
-
maxsize = 4
|
|
88
|
+
if configuration.connection_pool_maxsize is not None:
|
|
89
|
+
pool_args['maxsize'] = configuration.connection_pool_maxsize
|
|
75
90
|
|
|
76
91
|
# https pool manager
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
self.pool_manager: urllib3.PoolManager
|
|
93
|
+
|
|
94
|
+
if configuration.proxy:
|
|
95
|
+
if is_socks_proxy_url(configuration.proxy):
|
|
96
|
+
from urllib3.contrib.socks import SOCKSProxyManager
|
|
97
|
+
pool_args["proxy_url"] = configuration.proxy
|
|
98
|
+
pool_args["headers"] = configuration.proxy_headers
|
|
99
|
+
self.pool_manager = SOCKSProxyManager(**pool_args)
|
|
100
|
+
else:
|
|
101
|
+
pool_args["proxy_url"] = configuration.proxy
|
|
102
|
+
pool_args["proxy_headers"] = configuration.proxy_headers
|
|
103
|
+
self.pool_manager = urllib3.ProxyManager(**pool_args)
|
|
89
104
|
else:
|
|
90
|
-
self.pool_manager = urllib3.PoolManager(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
body=None, post_params=None, _preload_content=True,
|
|
102
|
-
_request_timeout=None):
|
|
105
|
+
self.pool_manager = urllib3.PoolManager(**pool_args)
|
|
106
|
+
|
|
107
|
+
def request(
|
|
108
|
+
self,
|
|
109
|
+
method,
|
|
110
|
+
url,
|
|
111
|
+
headers=None,
|
|
112
|
+
body=None,
|
|
113
|
+
post_params=None,
|
|
114
|
+
_request_timeout=None
|
|
115
|
+
):
|
|
103
116
|
"""Perform requests.
|
|
104
117
|
|
|
105
118
|
:param method: http request method
|
|
106
119
|
:param url: http request url
|
|
107
|
-
:param query_params: query parameters in the url
|
|
108
120
|
:param headers: http request headers
|
|
109
121
|
:param body: request json body, for `application/json`
|
|
110
122
|
:param post_params: request post parameters,
|
|
111
123
|
`application/x-www-form-urlencoded`
|
|
112
124
|
and `multipart/form-data`
|
|
113
|
-
:param _preload_content: if False, the urllib3.HTTPResponse object will
|
|
114
|
-
be returned without reading/decoding response
|
|
115
|
-
data. Default is True.
|
|
116
125
|
:param _request_timeout: timeout setting for this request. If one
|
|
117
126
|
number provided, it will be total request
|
|
118
127
|
timeout. It can also be a pair (tuple) of
|
|
119
128
|
(connection, read) timeouts.
|
|
120
129
|
"""
|
|
121
130
|
method = method.upper()
|
|
122
|
-
assert method in [
|
|
123
|
-
|
|
131
|
+
assert method in [
|
|
132
|
+
'GET',
|
|
133
|
+
'HEAD',
|
|
134
|
+
'DELETE',
|
|
135
|
+
'POST',
|
|
136
|
+
'PUT',
|
|
137
|
+
'PATCH',
|
|
138
|
+
'OPTIONS'
|
|
139
|
+
]
|
|
124
140
|
|
|
125
141
|
if post_params and body:
|
|
126
142
|
raise ApiValueError(
|
|
@@ -132,60 +148,83 @@ class RESTClientObject(object):
|
|
|
132
148
|
|
|
133
149
|
timeout = None
|
|
134
150
|
if _request_timeout:
|
|
135
|
-
if isinstance(_request_timeout, (int, float)):
|
|
151
|
+
if isinstance(_request_timeout, (int, float)):
|
|
136
152
|
timeout = urllib3.Timeout(total=_request_timeout)
|
|
137
|
-
elif (
|
|
138
|
-
|
|
153
|
+
elif (
|
|
154
|
+
isinstance(_request_timeout, tuple)
|
|
155
|
+
and len(_request_timeout) == 2
|
|
156
|
+
):
|
|
139
157
|
timeout = urllib3.Timeout(
|
|
140
|
-
connect=_request_timeout[0],
|
|
158
|
+
connect=_request_timeout[0],
|
|
159
|
+
read=_request_timeout[1]
|
|
160
|
+
)
|
|
141
161
|
|
|
142
162
|
try:
|
|
143
163
|
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
|
|
144
164
|
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if
|
|
149
|
-
|
|
150
|
-
|
|
165
|
+
|
|
166
|
+
# no content type provided or payload is json
|
|
167
|
+
content_type = headers.get('Content-Type')
|
|
168
|
+
if (
|
|
169
|
+
not content_type
|
|
170
|
+
or re.search('json', content_type, re.IGNORECASE)
|
|
171
|
+
):
|
|
151
172
|
request_body = None
|
|
152
173
|
if body is not None:
|
|
153
174
|
request_body = json.dumps(body)
|
|
154
175
|
r = self.pool_manager.request(
|
|
155
|
-
method,
|
|
176
|
+
method,
|
|
177
|
+
url,
|
|
156
178
|
body=request_body,
|
|
157
|
-
preload_content=_preload_content,
|
|
158
179
|
timeout=timeout,
|
|
159
|
-
headers=headers
|
|
160
|
-
|
|
180
|
+
headers=headers,
|
|
181
|
+
preload_content=False
|
|
182
|
+
)
|
|
183
|
+
elif content_type == 'application/x-www-form-urlencoded':
|
|
161
184
|
r = self.pool_manager.request(
|
|
162
|
-
method,
|
|
185
|
+
method,
|
|
186
|
+
url,
|
|
163
187
|
fields=post_params,
|
|
164
188
|
encode_multipart=False,
|
|
165
|
-
preload_content=_preload_content,
|
|
166
189
|
timeout=timeout,
|
|
167
|
-
headers=headers
|
|
168
|
-
|
|
190
|
+
headers=headers,
|
|
191
|
+
preload_content=False
|
|
192
|
+
)
|
|
193
|
+
elif content_type == 'multipart/form-data':
|
|
169
194
|
# must del headers['Content-Type'], or the correct
|
|
170
195
|
# Content-Type which generated by urllib3 will be
|
|
171
196
|
# overwritten.
|
|
172
197
|
del headers['Content-Type']
|
|
198
|
+
# Ensures that dict objects are serialized
|
|
199
|
+
post_params = [(a, json.dumps(b)) if isinstance(b, dict) else (a,b) for a, b in post_params]
|
|
173
200
|
r = self.pool_manager.request(
|
|
174
|
-
method,
|
|
201
|
+
method,
|
|
202
|
+
url,
|
|
175
203
|
fields=post_params,
|
|
176
204
|
encode_multipart=True,
|
|
177
|
-
preload_content=_preload_content,
|
|
178
205
|
timeout=timeout,
|
|
179
|
-
headers=headers
|
|
206
|
+
headers=headers,
|
|
207
|
+
preload_content=False
|
|
208
|
+
)
|
|
180
209
|
# Pass a `string` parameter directly in the body to support
|
|
181
|
-
# other content types than
|
|
182
|
-
# provided in serialized form
|
|
210
|
+
# other content types than JSON when `body` argument is
|
|
211
|
+
# provided in serialized form.
|
|
183
212
|
elif isinstance(body, str) or isinstance(body, bytes):
|
|
184
|
-
request_body = body
|
|
185
213
|
r = self.pool_manager.request(
|
|
186
|
-
method,
|
|
214
|
+
method,
|
|
215
|
+
url,
|
|
216
|
+
body=body,
|
|
217
|
+
timeout=timeout,
|
|
218
|
+
headers=headers,
|
|
219
|
+
preload_content=False
|
|
220
|
+
)
|
|
221
|
+
elif headers['Content-Type'].startswith('text/') and isinstance(body, bool):
|
|
222
|
+
request_body = "true" if body else "false"
|
|
223
|
+
r = self.pool_manager.request(
|
|
224
|
+
method,
|
|
225
|
+
url,
|
|
187
226
|
body=request_body,
|
|
188
|
-
preload_content=
|
|
227
|
+
preload_content=False,
|
|
189
228
|
timeout=timeout,
|
|
190
229
|
headers=headers)
|
|
191
230
|
else:
|
|
@@ -196,151 +235,16 @@ class RESTClientObject(object):
|
|
|
196
235
|
raise ApiException(status=0, reason=msg)
|
|
197
236
|
# For `GET`, `HEAD`
|
|
198
237
|
else:
|
|
199
|
-
r = self.pool_manager.request(
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
238
|
+
r = self.pool_manager.request(
|
|
239
|
+
method,
|
|
240
|
+
url,
|
|
241
|
+
fields={},
|
|
242
|
+
timeout=timeout,
|
|
243
|
+
headers=headers,
|
|
244
|
+
preload_content=False
|
|
245
|
+
)
|
|
204
246
|
except urllib3.exceptions.SSLError as e:
|
|
205
|
-
msg = "
|
|
247
|
+
msg = "\n".join([type(e).__name__, str(e)])
|
|
206
248
|
raise ApiException(status=0, reason=msg)
|
|
207
249
|
|
|
208
|
-
|
|
209
|
-
r = RESTResponse(r)
|
|
210
|
-
|
|
211
|
-
# log response body
|
|
212
|
-
logger.debug("response body: %s", r.data)
|
|
213
|
-
|
|
214
|
-
if not 200 <= r.status <= 299:
|
|
215
|
-
if r.status == 401:
|
|
216
|
-
raise UnauthorizedException(http_resp=r)
|
|
217
|
-
|
|
218
|
-
if r.status == 403:
|
|
219
|
-
raise ForbiddenException(http_resp=r)
|
|
220
|
-
|
|
221
|
-
if r.status == 404:
|
|
222
|
-
raise NotFoundException(http_resp=r)
|
|
223
|
-
|
|
224
|
-
if 500 <= r.status <= 599:
|
|
225
|
-
raise ServiceException(http_resp=r)
|
|
226
|
-
|
|
227
|
-
raise ApiException(http_resp=r)
|
|
228
|
-
|
|
229
|
-
return r
|
|
230
|
-
|
|
231
|
-
def GET(self, url, headers=None, query_params=None, _preload_content=True,
|
|
232
|
-
_request_timeout=None):
|
|
233
|
-
return self.request("GET", url,
|
|
234
|
-
headers=headers,
|
|
235
|
-
_preload_content=_preload_content,
|
|
236
|
-
_request_timeout=_request_timeout,
|
|
237
|
-
query_params=query_params)
|
|
238
|
-
|
|
239
|
-
def HEAD(self, url, headers=None, query_params=None, _preload_content=True,
|
|
240
|
-
_request_timeout=None):
|
|
241
|
-
return self.request("HEAD", url,
|
|
242
|
-
headers=headers,
|
|
243
|
-
_preload_content=_preload_content,
|
|
244
|
-
_request_timeout=_request_timeout,
|
|
245
|
-
query_params=query_params)
|
|
246
|
-
|
|
247
|
-
def OPTIONS(self, url, headers=None, query_params=None, post_params=None,
|
|
248
|
-
body=None, _preload_content=True, _request_timeout=None):
|
|
249
|
-
return self.request("OPTIONS", url,
|
|
250
|
-
headers=headers,
|
|
251
|
-
query_params=query_params,
|
|
252
|
-
post_params=post_params,
|
|
253
|
-
_preload_content=_preload_content,
|
|
254
|
-
_request_timeout=_request_timeout,
|
|
255
|
-
body=body)
|
|
256
|
-
|
|
257
|
-
def DELETE(self, url, headers=None, query_params=None, body=None,
|
|
258
|
-
_preload_content=True, _request_timeout=None):
|
|
259
|
-
return self.request("DELETE", url,
|
|
260
|
-
headers=headers,
|
|
261
|
-
query_params=query_params,
|
|
262
|
-
_preload_content=_preload_content,
|
|
263
|
-
_request_timeout=_request_timeout,
|
|
264
|
-
body=body)
|
|
265
|
-
|
|
266
|
-
def POST(self, url, headers=None, query_params=None, post_params=None,
|
|
267
|
-
body=None, _preload_content=True, _request_timeout=None):
|
|
268
|
-
return self.request("POST", url,
|
|
269
|
-
headers=headers,
|
|
270
|
-
query_params=query_params,
|
|
271
|
-
post_params=post_params,
|
|
272
|
-
_preload_content=_preload_content,
|
|
273
|
-
_request_timeout=_request_timeout,
|
|
274
|
-
body=body)
|
|
275
|
-
|
|
276
|
-
def PUT(self, url, headers=None, query_params=None, post_params=None,
|
|
277
|
-
body=None, _preload_content=True, _request_timeout=None):
|
|
278
|
-
return self.request("PUT", url,
|
|
279
|
-
headers=headers,
|
|
280
|
-
query_params=query_params,
|
|
281
|
-
post_params=post_params,
|
|
282
|
-
_preload_content=_preload_content,
|
|
283
|
-
_request_timeout=_request_timeout,
|
|
284
|
-
body=body)
|
|
285
|
-
|
|
286
|
-
def PATCH(self, url, headers=None, query_params=None, post_params=None,
|
|
287
|
-
body=None, _preload_content=True, _request_timeout=None):
|
|
288
|
-
return self.request("PATCH", url,
|
|
289
|
-
headers=headers,
|
|
290
|
-
query_params=query_params,
|
|
291
|
-
post_params=post_params,
|
|
292
|
-
_preload_content=_preload_content,
|
|
293
|
-
_request_timeout=_request_timeout,
|
|
294
|
-
body=body)
|
|
295
|
-
|
|
296
|
-
# end of class RESTClientObject
|
|
297
|
-
def is_ipv4(target):
|
|
298
|
-
""" Test if IPv4 address or not
|
|
299
|
-
"""
|
|
300
|
-
try:
|
|
301
|
-
chk = ipaddress.IPv4Address(target)
|
|
302
|
-
return True
|
|
303
|
-
except ipaddress.AddressValueError:
|
|
304
|
-
return False
|
|
305
|
-
|
|
306
|
-
def in_ipv4net(target, net):
|
|
307
|
-
""" Test if target belongs to given IPv4 network
|
|
308
|
-
"""
|
|
309
|
-
try:
|
|
310
|
-
nw = ipaddress.IPv4Network(net)
|
|
311
|
-
ip = ipaddress.IPv4Address(target)
|
|
312
|
-
if ip in nw:
|
|
313
|
-
return True
|
|
314
|
-
return False
|
|
315
|
-
except ipaddress.AddressValueError:
|
|
316
|
-
return False
|
|
317
|
-
except ipaddress.NetmaskValueError:
|
|
318
|
-
return False
|
|
319
|
-
|
|
320
|
-
def should_bypass_proxies(url, no_proxy=None):
|
|
321
|
-
""" Yet another requests.should_bypass_proxies
|
|
322
|
-
Test if proxies should not be used for a particular url.
|
|
323
|
-
"""
|
|
324
|
-
|
|
325
|
-
parsed = urlparse(url)
|
|
326
|
-
|
|
327
|
-
# special cases
|
|
328
|
-
if parsed.hostname in [None, '']:
|
|
329
|
-
return True
|
|
330
|
-
|
|
331
|
-
# special cases
|
|
332
|
-
if no_proxy in [None , '']:
|
|
333
|
-
return False
|
|
334
|
-
if no_proxy == '*':
|
|
335
|
-
return True
|
|
336
|
-
|
|
337
|
-
no_proxy = no_proxy.lower().replace(' ','');
|
|
338
|
-
entries = (
|
|
339
|
-
host for host in no_proxy.split(',') if host
|
|
340
|
-
)
|
|
341
|
-
|
|
342
|
-
if is_ipv4(parsed.hostname):
|
|
343
|
-
for item in entries:
|
|
344
|
-
if in_ipv4net(parsed.hostname, item):
|
|
345
|
-
return True
|
|
346
|
-
return proxy_bypass_environment(parsed.hostname, {'no': no_proxy} )
|
|
250
|
+
return RESTResponse(r)
|