regula-documentreader-webclient 8.1.354.dev0__py3-none-any.whl → 8.1.355rc0__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.

Potentially problematic release.


This version of regula-documentreader-webclient might be problematic. Click here for more details.

Files changed (289) hide show
  1. regula/documentreader/webclient/ext/__init__.py +1 -0
  2. regula/documentreader/webclient/ext/api/document_reader_api.py +2 -2
  3. regula/documentreader/webclient/ext/models/__init__.py +2 -0
  4. regula/documentreader/webclient/ext/models/authenticity/authenticity_check_list.py +19 -64
  5. regula/documentreader/webclient/ext/models/authenticity/fiber.py +7 -7
  6. regula/documentreader/webclient/ext/models/authenticity/ident.py +9 -10
  7. regula/documentreader/webclient/ext/models/authenticity/image_ident.py +7 -8
  8. regula/documentreader/webclient/ext/models/authenticity/ocr_security_text.py +7 -7
  9. regula/documentreader/webclient/ext/models/authenticity/security_feature.py +8 -10
  10. regula/documentreader/webclient/ext/models/images.py +4 -4
  11. regula/documentreader/webclient/ext/models/raw_authenticity_result_item.py +27 -0
  12. regula/documentreader/webclient/ext/models/raw_result_item.py +26 -0
  13. regula/documentreader/webclient/ext/models/recognition_request.py +24 -23
  14. regula/documentreader/webclient/ext/models/recognition_response.py +8 -6
  15. regula/documentreader/webclient/ext/models/text.py +12 -7
  16. regula/documentreader/webclient/gen/__init__.py +26 -100
  17. regula/documentreader/webclient/gen/api/__init__.py +2 -1
  18. regula/documentreader/webclient/gen/api/default_api.py +160 -0
  19. regula/documentreader/webclient/gen/api/healthcheck_api.py +298 -687
  20. regula/documentreader/webclient/gen/api/process_api.py +125 -270
  21. regula/documentreader/webclient/gen/api/transaction_api.py +673 -1472
  22. regula/documentreader/webclient/gen/api_client.py +462 -583
  23. regula/documentreader/webclient/gen/configuration.py +99 -222
  24. regula/documentreader/webclient/gen/exceptions.py +30 -81
  25. regula/documentreader/webclient/gen/models/__init__.py +25 -98
  26. regula/documentreader/webclient/gen/models/area_array.py +131 -85
  27. regula/documentreader/webclient/gen/models/area_container.py +157 -85
  28. regula/documentreader/webclient/gen/models/auth_params.py +526 -100
  29. regula/documentreader/webclient/gen/models/authenticity_check_list.py +136 -75
  30. regula/documentreader/webclient/gen/models/authenticity_check_result.py +160 -81
  31. regula/documentreader/webclient/gen/models/authenticity_check_result_item.py +217 -154
  32. regula/documentreader/webclient/gen/models/authenticity_result.py +231 -68
  33. regula/documentreader/webclient/gen/models/authenticity_result_all_of.py +120 -0
  34. regula/documentreader/webclient/gen/models/authenticity_result_type.py +123 -35
  35. regula/documentreader/webclient/gen/models/bc_pdf417_info.py +235 -75
  36. regula/documentreader/webclient/gen/models/bc_roidetect.py +183 -71
  37. regula/documentreader/webclient/gen/models/byte_array_result.py +233 -64
  38. regula/documentreader/webclient/gen/models/byte_array_result_all_of.py +122 -0
  39. regula/documentreader/webclient/gen/models/check_diagnose.py +329 -138
  40. regula/documentreader/webclient/gen/models/check_result.py +84 -15
  41. regula/documentreader/webclient/gen/models/chosen_document_type.py +334 -94
  42. regula/documentreader/webclient/gen/models/chosen_document_type_result.py +264 -80
  43. regula/documentreader/webclient/gen/models/chosen_document_type_result_all_of.py +145 -0
  44. regula/documentreader/webclient/gen/models/container_list.py +134 -75
  45. regula/documentreader/webclient/gen/models/critical.py +82 -14
  46. regula/documentreader/webclient/gen/models/cross_source_value_comparison.py +156 -67
  47. regula/documentreader/webclient/gen/models/data_module.py +209 -74
  48. regula/documentreader/webclient/gen/models/details_optical.py +298 -83
  49. regula/documentreader/webclient/gen/models/details_rfid.py +268 -78
  50. regula/documentreader/webclient/gen/models/device_info.py +235 -76
  51. regula/documentreader/webclient/gen/models/device_info2.py +275 -0
  52. regula/documentreader/webclient/gen/models/doc_bar_code_info.py +230 -68
  53. regula/documentreader/webclient/gen/models/doc_bar_code_info_all_of.py +119 -0
  54. regula/documentreader/webclient/gen/models/doc_bar_code_info_fields_list.py +135 -75
  55. regula/documentreader/webclient/gen/models/doc_visual_extended_field.py +301 -105
  56. regula/documentreader/webclient/gen/models/doc_visual_extended_info.py +106 -75
  57. regula/documentreader/webclient/gen/models/document_format.py +105 -27
  58. regula/documentreader/webclient/gen/models/document_image.py +132 -63
  59. regula/documentreader/webclient/gen/models/document_image_result.py +231 -68
  60. regula/documentreader/webclient/gen/models/document_image_result_all_of.py +120 -0
  61. regula/documentreader/webclient/gen/models/document_position.py +340 -111
  62. regula/documentreader/webclient/gen/models/document_position_result.py +230 -68
  63. regula/documentreader/webclient/gen/models/document_position_result_all_of.py +119 -0
  64. regula/documentreader/webclient/gen/models/document_type.py +539 -243
  65. regula/documentreader/webclient/gen/models/document_type_recognition_result.py +84 -15
  66. regula/documentreader/webclient/gen/models/document_types_candidates.py +131 -76
  67. regula/documentreader/webclient/gen/models/document_types_candidates_list.py +131 -76
  68. regula/documentreader/webclient/gen/models/document_types_candidates_result.py +230 -68
  69. regula/documentreader/webclient/gen/models/document_types_candidates_result_all_of.py +119 -0
  70. regula/documentreader/webclient/gen/models/documents_database.py +191 -71
  71. regula/documentreader/webclient/gen/models/encrypted_rcl_result.py +233 -64
  72. regula/documentreader/webclient/gen/models/encrypted_rcl_result_all_of.py +122 -0
  73. regula/documentreader/webclient/gen/models/face_api.py +358 -88
  74. regula/documentreader/webclient/gen/models/face_api_search.py +159 -65
  75. regula/documentreader/webclient/gen/models/fdsid_list.py +390 -91
  76. regula/documentreader/webclient/gen/models/fiber_result.py +439 -103
  77. regula/documentreader/webclient/gen/models/fiber_result_all_of.py +343 -0
  78. regula/documentreader/webclient/gen/models/get_transactions_by_tag_response.py +159 -66
  79. regula/documentreader/webclient/gen/models/graphic_field.py +271 -80
  80. regula/documentreader/webclient/gen/models/graphic_field_type.py +131 -40
  81. regula/documentreader/webclient/gen/models/graphic_fields_list.py +106 -75
  82. regula/documentreader/webclient/gen/models/graphics_result.py +231 -68
  83. regula/documentreader/webclient/gen/models/graphics_result_all_of.py +119 -0
  84. regula/documentreader/webclient/gen/models/healthcheck.py +297 -117
  85. regula/documentreader/webclient/gen/models/healthcheck_documents_database.py +187 -91
  86. regula/documentreader/webclient/gen/models/ident_result.py +345 -107
  87. regula/documentreader/webclient/gen/models/ident_result_all_of.py +249 -0
  88. regula/documentreader/webclient/gen/models/image_data.py +132 -63
  89. regula/documentreader/webclient/gen/models/image_qa.py +304 -83
  90. regula/documentreader/webclient/gen/models/image_quality_check.py +263 -86
  91. regula/documentreader/webclient/gen/models/image_quality_check_list.py +133 -78
  92. regula/documentreader/webclient/gen/models/image_quality_check_type.py +97 -22
  93. regula/documentreader/webclient/gen/models/image_quality_result.py +231 -68
  94. regula/documentreader/webclient/gen/models/image_quality_result_all_of.py +120 -0
  95. regula/documentreader/webclient/gen/models/image_transaction_data.py +97 -61
  96. regula/documentreader/webclient/gen/models/images.py +133 -87
  97. regula/documentreader/webclient/gen/models/images_available_source.py +130 -64
  98. regula/documentreader/webclient/gen/models/images_field.py +162 -80
  99. regula/documentreader/webclient/gen/models/images_field_value.py +331 -94
  100. regula/documentreader/webclient/gen/models/images_result.py +231 -68
  101. regula/documentreader/webclient/gen/models/images_result_all_of.py +120 -0
  102. regula/documentreader/webclient/gen/models/in_data.py +131 -79
  103. regula/documentreader/webclient/gen/models/in_data_rfid_session.py +121 -0
  104. regula/documentreader/webclient/gen/models/in_data_transaction_images_field_value.py +187 -72
  105. regula/documentreader/webclient/gen/models/in_data_video.py +131 -63
  106. regula/documentreader/webclient/gen/models/inline_response200.py +197 -0
  107. regula/documentreader/webclient/gen/models/inline_response2001.py +333 -0
  108. regula/documentreader/webclient/gen/models/input_barcode_type.py +119 -33
  109. regula/documentreader/webclient/gen/models/input_image_quality_checks.py +97 -22
  110. regula/documentreader/webclient/gen/models/lcid.py +402 -179
  111. regula/documentreader/webclient/gen/models/lexical_analysis_result.py +234 -68
  112. regula/documentreader/webclient/gen/models/lexical_analysis_result_all_of.py +119 -0
  113. regula/documentreader/webclient/gen/models/license_result.py +233 -64
  114. regula/documentreader/webclient/gen/models/license_result_all_of.py +122 -0
  115. regula/documentreader/webclient/gen/models/light.py +87 -61
  116. regula/documentreader/webclient/gen/models/list_transactions_by_tag_response.py +131 -75
  117. regula/documentreader/webclient/gen/models/list_verified_fields.py +105 -77
  118. regula/documentreader/webclient/gen/models/liveness_params.py +247 -77
  119. regula/documentreader/webclient/gen/models/log_level.py +88 -17
  120. regula/documentreader/webclient/gen/models/measure_system.py +82 -14
  121. regula/documentreader/webclient/gen/models/mrz_detect_mode_enum.py +84 -15
  122. regula/documentreader/webclient/gen/models/mrz_format.py +90 -18
  123. regula/documentreader/webclient/gen/models/ocr_security_text_result.py +449 -107
  124. regula/documentreader/webclient/gen/models/ocr_security_text_result_all_of.py +353 -0
  125. regula/documentreader/webclient/gen/models/one_candidate.py +334 -94
  126. regula/documentreader/webclient/gen/models/original_symbol.py +167 -74
  127. regula/documentreader/webclient/gen/models/out_data.py +133 -75
  128. regula/documentreader/webclient/gen/models/out_data_transaction_images_field_value.py +213 -75
  129. regula/documentreader/webclient/gen/models/p_array_field.py +342 -103
  130. regula/documentreader/webclient/gen/models/parsing_notification_codes.py +523 -235
  131. regula/documentreader/webclient/gen/models/per_document_config.py +131 -63
  132. regula/documentreader/webclient/gen/models/photo_ident_result.py +423 -107
  133. regula/documentreader/webclient/gen/models/photo_ident_result_all_of.py +327 -0
  134. regula/documentreader/webclient/gen/models/point.py +127 -63
  135. regula/documentreader/webclient/gen/models/point_array.py +97 -65
  136. regula/documentreader/webclient/gen/models/points_container.py +131 -75
  137. regula/documentreader/webclient/gen/models/process_params.py +1743 -229
  138. regula/documentreader/webclient/gen/models/process_params_rfid.py +97 -56
  139. regula/documentreader/webclient/gen/models/process_request.py +411 -113
  140. regula/documentreader/webclient/gen/models/process_request_image.py +159 -74
  141. regula/documentreader/webclient/gen/models/process_response.py +299 -96
  142. regula/documentreader/webclient/gen/models/process_system_info.py +131 -63
  143. regula/documentreader/webclient/gen/models/processing_status.py +84 -15
  144. regula/documentreader/webclient/gen/models/raw_image_container_list.py +131 -75
  145. regula/documentreader/webclient/gen/models/rectangle_coordinates.py +187 -71
  146. regula/documentreader/webclient/gen/models/result.py +133 -49
  147. regula/documentreader/webclient/gen/models/result_item.py +245 -195
  148. regula/documentreader/webclient/gen/models/rfid_location.py +84 -15
  149. regula/documentreader/webclient/gen/models/rfid_origin.py +192 -71
  150. regula/documentreader/webclient/gen/models/scenario.py +117 -33
  151. regula/documentreader/webclient/gen/models/security_feature_result.py +345 -99
  152. regula/documentreader/webclient/gen/models/security_feature_result_all_of.py +249 -0
  153. regula/documentreader/webclient/gen/models/security_feature_type.py +185 -68
  154. regula/documentreader/webclient/gen/models/source.py +88 -18
  155. regula/documentreader/webclient/gen/models/source_validity.py +129 -65
  156. regula/documentreader/webclient/gen/models/status.py +264 -86
  157. regula/documentreader/webclient/gen/models/status_result.py +231 -68
  158. regula/documentreader/webclient/gen/models/status_result_all_of.py +120 -0
  159. regula/documentreader/webclient/gen/models/string_recognition_result.py +108 -81
  160. regula/documentreader/webclient/gen/models/symbol_candidate.py +143 -72
  161. regula/documentreader/webclient/gen/models/symbol_recognition_result.py +135 -87
  162. regula/documentreader/webclient/gen/models/text.py +214 -92
  163. regula/documentreader/webclient/gen/models/text_available_source.py +157 -67
  164. regula/documentreader/webclient/gen/models/text_data_result.py +230 -68
  165. regula/documentreader/webclient/gen/models/text_data_result_all_of.py +119 -0
  166. regula/documentreader/webclient/gen/models/text_field.py +357 -115
  167. regula/documentreader/webclient/gen/models/text_field_type.py +1367 -660
  168. regula/documentreader/webclient/gen/models/text_field_value.py +307 -105
  169. regula/documentreader/webclient/gen/models/text_post_processing.py +86 -16
  170. regula/documentreader/webclient/gen/models/text_result.py +231 -68
  171. regula/documentreader/webclient/gen/models/text_result_all_of.py +120 -0
  172. regula/documentreader/webclient/gen/models/tfdsid_list.py +372 -0
  173. regula/documentreader/webclient/gen/models/transaction_image.py +97 -61
  174. regula/documentreader/webclient/gen/models/transaction_images_field_value.py +227 -0
  175. regula/documentreader/webclient/gen/models/transaction_info.py +302 -84
  176. regula/documentreader/webclient/gen/models/transaction_process_get_response.py +183 -79
  177. regula/documentreader/webclient/gen/models/transaction_process_request.py +299 -108
  178. regula/documentreader/webclient/gen/models/transaction_scenario_request.py +119 -0
  179. regula/documentreader/webclient/gen/models/verification_result.py +88 -17
  180. regula/documentreader/webclient/gen/models/verified_field_map.py +273 -85
  181. regula/documentreader/webclient/gen/models/visibility.py +88 -17
  182. regula/documentreader/webclient/gen/rest.py +174 -132
  183. {regula_documentreader_webclient-8.1.354.dev0.dist-info → regula_documentreader_webclient-8.1.355rc0.dist-info}/METADATA +4 -6
  184. regula_documentreader_webclient-8.1.355rc0.dist-info/RECORD +192 -0
  185. regula/documentreader/webclient/gen/api_response.py +0 -21
  186. regula/documentreader/webclient/gen/models/authenticity_check_list_item.py +0 -83
  187. regula/documentreader/webclient/gen/models/authenticity_check_result_list_inner.py +0 -174
  188. regula/documentreader/webclient/gen/models/bar_code_module_type.py +0 -32
  189. regula/documentreader/webclient/gen/models/barcode_type.py +0 -47
  190. regula/documentreader/webclient/gen/models/binary_data.py +0 -218
  191. regula/documentreader/webclient/gen/models/byte_array_item.py +0 -79
  192. regula/documentreader/webclient/gen/models/candidates_list_item.py +0 -83
  193. regula/documentreader/webclient/gen/models/certificate_data.py +0 -81
  194. regula/documentreader/webclient/gen/models/container_list_list_inner.py +0 -426
  195. regula/documentreader/webclient/gen/models/doc_bar_code_info_item.py +0 -83
  196. regula/documentreader/webclient/gen/models/doc_graphics_info_item.py +0 -83
  197. regula/documentreader/webclient/gen/models/doc_visual_extended_field_item.py +0 -83
  198. regula/documentreader/webclient/gen/models/doc_visual_extended_info_item.py +0 -83
  199. regula/documentreader/webclient/gen/models/document_binary_info_result.py +0 -90
  200. regula/documentreader/webclient/gen/models/document_position_item.py +0 -83
  201. regula/documentreader/webclient/gen/models/encrypted_rcl_item.py +0 -79
  202. regula/documentreader/webclient/gen/models/error_coordinates.py +0 -85
  203. regula/documentreader/webclient/gen/models/face_detection.py +0 -95
  204. regula/documentreader/webclient/gen/models/face_detection_item.py +0 -83
  205. regula/documentreader/webclient/gen/models/face_detection_result.py +0 -90
  206. regula/documentreader/webclient/gen/models/face_item.py +0 -109
  207. regula/documentreader/webclient/gen/models/fiber_item.py +0 -106
  208. regula/documentreader/webclient/gen/models/field_item.py +0 -89
  209. regula/documentreader/webclient/gen/models/file_image.py +0 -81
  210. regula/documentreader/webclient/gen/models/graph_data.py +0 -95
  211. regula/documentreader/webclient/gen/models/ident_item.py +0 -110
  212. regula/documentreader/webclient/gen/models/image_quality_check_list_item.py +0 -83
  213. regula/documentreader/webclient/gen/models/images_item.py +0 -83
  214. regula/documentreader/webclient/gen/models/license_item.py +0 -79
  215. regula/documentreader/webclient/gen/models/list_verified_fields_item.py +0 -83
  216. regula/documentreader/webclient/gen/models/mrz_detector_result.py +0 -90
  217. regula/documentreader/webclient/gen/models/mrz_position.py +0 -124
  218. regula/documentreader/webclient/gen/models/mrz_position_item.py +0 -83
  219. regula/documentreader/webclient/gen/models/mrz_position_result.py +0 -90
  220. regula/documentreader/webclient/gen/models/mrz_rows_item.py +0 -91
  221. regula/documentreader/webclient/gen/models/mrz_test_quality.py +0 -105
  222. regula/documentreader/webclient/gen/models/mrz_test_quality_item.py +0 -83
  223. regula/documentreader/webclient/gen/models/mrz_test_quality_result.py +0 -90
  224. regula/documentreader/webclient/gen/models/ocr_security_text_item.py +0 -110
  225. regula/documentreader/webclient/gen/models/one_candidate_item.py +0 -87
  226. regula/documentreader/webclient/gen/models/parsed_data.py +0 -79
  227. regula/documentreader/webclient/gen/models/parsing_error_codes.py +0 -153
  228. regula/documentreader/webclient/gen/models/photo_ident_item.py +0 -110
  229. regula/documentreader/webclient/gen/models/raw_image_container_item.py +0 -83
  230. regula/documentreader/webclient/gen/models/result_mrz_detector.py +0 -93
  231. regula/documentreader/webclient/gen/models/result_mrz_detector_item.py +0 -83
  232. regula/documentreader/webclient/gen/models/rfid_a_chip.py +0 -33
  233. regula/documentreader/webclient/gen/models/rfid_access_control_info.py +0 -90
  234. regula/documentreader/webclient/gen/models/rfid_access_control_procedure_type.py +0 -35
  235. regula/documentreader/webclient/gen/models/rfid_access_key.py +0 -87
  236. regula/documentreader/webclient/gen/models/rfid_application.py +0 -101
  237. regula/documentreader/webclient/gen/models/rfid_application_type.py +0 -37
  238. regula/documentreader/webclient/gen/models/rfid_attribute_data.py +0 -81
  239. regula/documentreader/webclient/gen/models/rfid_attribute_name.py +0 -85
  240. regula/documentreader/webclient/gen/models/rfid_authentication_procedure_type.py +0 -31
  241. regula/documentreader/webclient/gen/models/rfid_baud_rate.py +0 -32
  242. regula/documentreader/webclient/gen/models/rfid_card_properties_ext.py +0 -123
  243. regula/documentreader/webclient/gen/models/rfid_certificate_ex.py +0 -130
  244. regula/documentreader/webclient/gen/models/rfid_certificate_origin.py +0 -36
  245. regula/documentreader/webclient/gen/models/rfid_certificate_type.py +0 -35
  246. regula/documentreader/webclient/gen/models/rfid_data_file.py +0 -118
  247. regula/documentreader/webclient/gen/models/rfid_data_file_type.py +0 -119
  248. regula/documentreader/webclient/gen/models/rfid_data_group_type_tag.py +0 -82
  249. regula/documentreader/webclient/gen/models/rfid_dg1.py +0 -111
  250. regula/documentreader/webclient/gen/models/rfid_distinguished_name.py +0 -95
  251. regula/documentreader/webclient/gen/models/rfid_doc_visual_extended_field.py +0 -120
  252. regula/documentreader/webclient/gen/models/rfid_doc_visual_extended_field_item.py +0 -85
  253. regula/documentreader/webclient/gen/models/rfid_doc_visual_extended_info.py +0 -89
  254. regula/documentreader/webclient/gen/models/rfid_doc_visual_extended_info_item.py +0 -83
  255. regula/documentreader/webclient/gen/models/rfid_error_codes.py +0 -141
  256. regula/documentreader/webclient/gen/models/rfid_graphics_info_result.py +0 -90
  257. regula/documentreader/webclient/gen/models/rfid_password_type.py +0 -34
  258. regula/documentreader/webclient/gen/models/rfid_pki_extension.py +0 -81
  259. regula/documentreader/webclient/gen/models/rfid_raw_data.py +0 -81
  260. regula/documentreader/webclient/gen/models/rfid_security_object.py +0 -96
  261. regula/documentreader/webclient/gen/models/rfid_session_data.py +0 -150
  262. regula/documentreader/webclient/gen/models/rfid_signer_info_ex.py +0 -133
  263. regula/documentreader/webclient/gen/models/rfid_terminal.py +0 -84
  264. regula/documentreader/webclient/gen/models/rfid_terminal_type.py +0 -32
  265. regula/documentreader/webclient/gen/models/rfid_text_data_result.py +0 -90
  266. regula/documentreader/webclient/gen/models/rfid_type.py +0 -30
  267. regula/documentreader/webclient/gen/models/rfid_validity.py +0 -88
  268. regula/documentreader/webclient/gen/models/rfidpkd_resource_type.py +0 -35
  269. regula/documentreader/webclient/gen/models/security_feature_item.py +0 -102
  270. regula/documentreader/webclient/gen/models/security_object_certificates.py +0 -83
  271. regula/documentreader/webclient/gen/models/status_item.py +0 -83
  272. regula/documentreader/webclient/gen/models/string_item.py +0 -135
  273. regula/documentreader/webclient/gen/models/symbol.py +0 -79
  274. regula/documentreader/webclient/gen/models/symbol_estimation_item.py +0 -115
  275. regula/documentreader/webclient/gen/models/t_doc_binary_info.py +0 -93
  276. regula/documentreader/webclient/gen/models/t_doc_binary_info_item.py +0 -83
  277. regula/documentreader/webclient/gen/models/t_original_rfid_graphics_info.py +0 -87
  278. regula/documentreader/webclient/gen/models/t_original_rfid_graphics_info_item.py +0 -83
  279. regula/documentreader/webclient/gen/models/text_item.py +0 -83
  280. regula/documentreader/webclient/gen/models/transaction_process_response.py +0 -107
  281. regula/documentreader/webclient/gen/models/transaction_process_response_item.py +0 -79
  282. regula/documentreader/webclient/gen/models/transaction_process_result.py +0 -93
  283. regula/documentreader/webclient/gen/models/trf_ft_bytes.py +0 -90
  284. regula/documentreader/webclient/gen/models/trf_ft_string.py +0 -85
  285. regula/documentreader/webclient/gen/models/visual_extended_field_item.py +0 -112
  286. regula/documentreader/webclient/gen/py.typed +0 -0
  287. regula_documentreader_webclient-8.1.354.dev0.dist-info/RECORD +0 -263
  288. {regula_documentreader_webclient-8.1.354.dev0.dist-info → regula_documentreader_webclient-8.1.355rc0.dist-info}/WHEEL +0 -0
  289. {regula_documentreader_webclient-8.1.354.dev0.dist-info → regula_documentreader_webclient-8.1.355rc0.dist-info}/top_level.txt +0 -0
@@ -1,40 +1,225 @@
1
1
  # coding: utf-8
2
-
3
2
  """
4
3
  Generated by: https://openapi-generator.tech
5
4
  """
5
+ from __future__ import absolute_import
6
6
 
7
+ import atexit
7
8
  import datetime
9
+ from copy import copy
8
10
  from dateutil.parser import parse
9
- from enum import Enum
10
- import decimal
11
11
  import json
12
12
  import mimetypes
13
+ from multiprocessing.pool import ThreadPool
13
14
  import os
14
15
  import re
15
- import tempfile
16
16
 
17
- from urllib.parse import quote
18
- from typing import Tuple, Optional, List, Dict, Union
19
- from pydantic import SecretStr
17
+ # python 2 and python 3 compatibility library
18
+ import six
19
+ from six.moves.urllib.parse import quote
20
20
 
21
21
  from regula.documentreader.webclient.gen.configuration import Configuration
22
- from regula.documentreader.webclient.gen.api_response import ApiResponse, T as ApiResponseT
23
22
  import regula.documentreader.webclient.gen.models
24
23
  from regula.documentreader.webclient.gen import rest
25
- from regula.documentreader.webclient.gen.exceptions import (
26
- ApiValueError,
27
- ApiException,
28
- BadRequestException,
29
- UnauthorizedException,
30
- ForbiddenException,
31
- NotFoundException,
32
- ServiceException
33
- )
34
-
35
- RequestSerialized = Tuple[str, str, Dict[str, str], Optional[str], List[str]]
36
-
37
- class ApiClient:
24
+ from regula.documentreader.webclient.gen.exceptions import ApiValueError, ApiException
25
+
26
+
27
+ class ModelSerDe:
28
+
29
+ PRIMITIVE_TYPES = (float, bool, bytes, six.text_type) + six.integer_types
30
+ NATIVE_TYPES_MAPPING = {
31
+ 'int': int,
32
+ 'long': int if six.PY3 else long, # noqa: F821
33
+ 'float': float,
34
+ 'str': str,
35
+ 'bool': bool,
36
+ 'date': datetime.date,
37
+ 'datetime': datetime.datetime,
38
+ 'object': object,
39
+ }
40
+
41
+ def sanitize_for_serialization(self, obj):
42
+ """Builds a JSON POST object.
43
+
44
+ If obj is None, return None.
45
+ If obj is str, int, long, float, bool, return directly.
46
+ If obj is datetime.datetime, datetime.date
47
+ convert to string in iso8601 format.
48
+ If obj is list, sanitize each element in the list.
49
+ If obj is dict, return the dict.
50
+ If obj is OpenAPI model, return the properties dict.
51
+
52
+ :param obj: The data to serialize.
53
+ :return: The serialized form of data.
54
+ """
55
+ if obj is None:
56
+ return None
57
+ elif isinstance(obj, self.PRIMITIVE_TYPES):
58
+ return obj
59
+ elif isinstance(obj, list):
60
+ return [self.sanitize_for_serialization(sub_obj)
61
+ for sub_obj in obj]
62
+ elif isinstance(obj, tuple):
63
+ return tuple(self.sanitize_for_serialization(sub_obj)
64
+ for sub_obj in obj)
65
+ elif isinstance(obj, (datetime.datetime, datetime.date)):
66
+ return obj.isoformat()
67
+
68
+ if isinstance(obj, regula.documentreader.webclient.ext.models.RawResultItem):
69
+ obj_dict = obj.raw
70
+ elif isinstance(obj, dict):
71
+ obj_dict = obj
72
+ else:
73
+ # Convert model obj to dict except
74
+ # attributes `openapi_types`, `attribute_map`
75
+ # and attributes which value is not None.
76
+ # Convert attribute name to json key in
77
+ # model definition for request.
78
+ obj_dict = {obj.attribute_map[attr]: getattr(obj, attr)
79
+ for attr, _ in six.iteritems(obj.openapi_types)
80
+ if getattr(obj, attr) is not None}
81
+
82
+ return {key: self.sanitize_for_serialization(val)
83
+ for key, val in six.iteritems(obj_dict)}
84
+
85
+ def deserialize_raw(self, data, klass):
86
+ """Deserializes dict, list, str into an object.
87
+
88
+ :param data: dict, list or str.
89
+ :param klass: class literal, or string of class name.
90
+
91
+ :return: object.
92
+ """
93
+ if data is None:
94
+ return None
95
+
96
+ if type(klass) == str:
97
+ if klass.startswith('list['):
98
+ sub_kls = re.match(r'list\[(.*)\]', klass).group(1)
99
+ return [self.deserialize_raw(sub_data, sub_kls)
100
+ for sub_data in data]
101
+
102
+ if klass.startswith('dict('):
103
+ sub_kls = re.match(r'dict\(([^,]*), (.*)\)', klass).group(2)
104
+ return {k: self.deserialize_raw(v, sub_kls)
105
+ for k, v in six.iteritems(data)}
106
+
107
+ # convert str to class
108
+ if klass in self.NATIVE_TYPES_MAPPING:
109
+ klass = self.NATIVE_TYPES_MAPPING[klass]
110
+ elif hasattr(regula.documentreader.webclient.ext.models, klass):
111
+ klass = getattr(regula.documentreader.webclient.ext.models, klass)
112
+ else:
113
+ klass = getattr(regula.documentreader.webclient.gen.models, klass)
114
+
115
+ if klass in self.PRIMITIVE_TYPES:
116
+ return self.__deserialize_primitive(data, klass)
117
+ elif klass == object:
118
+ return self.__deserialize_object(data)
119
+ elif klass == datetime.date:
120
+ return self.__deserialize_date(data)
121
+ elif klass == datetime.datetime:
122
+ return self.__deserialize_datetime(data)
123
+ else:
124
+ return self.__deserialize_model(data, klass)
125
+
126
+ def __deserialize_primitive(self, data, klass):
127
+ """Deserializes string to primitive type.
128
+
129
+ :param data: str.
130
+ :param klass: class literal.
131
+
132
+ :return: int, long, float, str, bool.
133
+ """
134
+ try:
135
+ return klass(data)
136
+ except UnicodeEncodeError:
137
+ return six.text_type(data)
138
+ except TypeError:
139
+ return data
140
+
141
+ def __deserialize_object(self, value):
142
+ """Return an original value.
143
+
144
+ :return: object.
145
+ """
146
+ return value
147
+
148
+ def __deserialize_date(self, string):
149
+ """Deserializes string to date.
150
+
151
+ :param string: str.
152
+ :return: date.
153
+ """
154
+ try:
155
+ return parse(string).date()
156
+ except ImportError:
157
+ return string
158
+ except ValueError:
159
+ raise rest.ApiException(
160
+ status=0,
161
+ reason="Failed to parse `{0}` as date object".format(string)
162
+ )
163
+
164
+ def __deserialize_datetime(self, string):
165
+ """Deserializes string to datetime.
166
+
167
+ The string should be in iso8601 datetime format.
168
+
169
+ :param string: str.
170
+ :return: datetime.
171
+ """
172
+ try:
173
+ return parse(string)
174
+ except ImportError:
175
+ return string
176
+ except ValueError:
177
+ raise rest.ApiException(
178
+ status=0,
179
+ reason=(
180
+ "Failed to parse `{0}` as datetime object"
181
+ .format(string)
182
+ )
183
+ )
184
+
185
+ def __deserialize_model(self, data, klass):
186
+ """Deserializes list or dict to model.
187
+
188
+ :param data: dict, list.
189
+ :param klass: class literal.
190
+ :return: model object.
191
+ """
192
+ has_discriminator = False
193
+ if (hasattr(klass, 'get_real_child_model')
194
+ and klass.discriminator_value_class_map):
195
+ has_discriminator = True
196
+
197
+ if not klass.openapi_types and has_discriminator is False:
198
+ return data
199
+
200
+ kwargs = {}
201
+ if (data is not None and
202
+ klass.openapi_types is not None and
203
+ isinstance(data, (list, dict))):
204
+
205
+ if "raw" in six.iterkeys(klass.openapi_types):
206
+ kwargs[klass.attribute_map["raw"]] = copy(data)
207
+
208
+ for attr, attr_type in six.iteritems(klass.openapi_types):
209
+ if klass.attribute_map[attr] in data:
210
+ value = data[klass.attribute_map[attr]]
211
+ kwargs[attr] = self.deserialize_raw(value, attr_type)
212
+
213
+ instance = klass(**kwargs)
214
+
215
+ if has_discriminator:
216
+ klass_name = instance.get_real_child_model(data)
217
+ if klass_name:
218
+ instance = self.deserialize_raw(data, klass_name)
219
+ return instance
220
+
221
+
222
+ class ApiClient(ModelSerDe, object):
38
223
  """Generic API client for OpenAPI client library builds.
39
224
 
40
225
  OpenAPI generic API client. This client handles the client-
@@ -42,39 +227,28 @@ class ApiClient:
42
227
  the methods and models for each application are generated from the OpenAPI
43
228
  templates.
44
229
 
230
+ NOTE: This class is auto generated by OpenAPI Generator.
231
+ Ref: https://openapi-generator.tech
232
+ Do not edit the class manually.
233
+
45
234
  :param configuration: .Configuration object for this client
46
235
  :param header_name: a header to pass when making calls to the API.
47
236
  :param header_value: a header value to pass when making calls to
48
237
  the API.
49
238
  :param cookie: a cookie to include in the header when making calls
50
239
  to the API
240
+ :param pool_threads: The number of threads to use for async requests
241
+ to the API. More threads means more concurrent API requests.
51
242
  """
52
243
 
53
- PRIMITIVE_TYPES = (float, bool, bytes, str, int)
54
- NATIVE_TYPES_MAPPING = {
55
- 'int': int,
56
- 'long': int, # TODO remove as only py3 is supported?
57
- 'float': float,
58
- 'str': str,
59
- 'bool': bool,
60
- 'date': datetime.date,
61
- 'datetime': datetime.datetime,
62
- 'decimal': decimal.Decimal,
63
- 'object': object,
64
- }
65
244
  _pool = None
66
245
 
67
- def __init__(
68
- self,
69
- configuration=None,
70
- header_name=None,
71
- header_value=None,
72
- cookie=None
73
- ) -> None:
74
- # use default configuration if none is provided
246
+ def __init__(self, configuration=None, header_name=None, header_value=None,
247
+ cookie=None, pool_threads=1):
75
248
  if configuration is None:
76
- configuration = Configuration.get_default()
249
+ configuration = Configuration.get_default_copy()
77
250
  self.configuration = configuration
251
+ self.pool_threads = pool_threads
78
252
 
79
253
  self.rest_client = rest.RESTClientObject(configuration)
80
254
  self.default_headers = {}
@@ -89,7 +263,25 @@ class ApiClient:
89
263
  return self
90
264
 
91
265
  def __exit__(self, exc_type, exc_value, traceback):
92
- pass
266
+ self.close()
267
+
268
+ def close(self):
269
+ if self._pool:
270
+ self._pool.close()
271
+ self._pool.join()
272
+ self._pool = None
273
+ if hasattr(atexit, 'unregister'):
274
+ atexit.unregister(self.close)
275
+
276
+ @property
277
+ def pool(self):
278
+ """Create thread pool on first request
279
+ avoids instantiating unused threadpool for blocking clients.
280
+ """
281
+ if self._pool is None:
282
+ atexit.register(self.close)
283
+ self._pool = ThreadPool(self.pool_threads)
284
+ return self._pool
93
285
 
94
286
  @property
95
287
  def user_agent(self):
@@ -103,69 +295,13 @@ class ApiClient:
103
295
  def set_default_header(self, header_name, header_value):
104
296
  self.default_headers[header_name] = header_value
105
297
 
106
-
107
- _default = None
108
-
109
- @classmethod
110
- def get_default(cls):
111
- """Return new instance of ApiClient.
112
-
113
- This method returns newly created, based on default constructor,
114
- object of ApiClient class or returns a copy of default
115
- ApiClient.
116
-
117
- :return: The ApiClient object.
118
- """
119
- if cls._default is None:
120
- cls._default = ApiClient()
121
- return cls._default
122
-
123
- @classmethod
124
- def set_default(cls, default):
125
- """Set default instance of ApiClient.
126
-
127
- It stores default ApiClient.
128
-
129
- :param default: object of ApiClient.
130
- """
131
- cls._default = default
132
-
133
- def param_serialize(
134
- self,
135
- method,
136
- resource_path,
137
- path_params=None,
138
- query_params=None,
139
- header_params=None,
140
- body=None,
141
- post_params=None,
142
- files=None, auth_settings=None,
143
- collection_formats=None,
144
- _host=None,
145
- _request_auth=None
146
- ) -> RequestSerialized:
147
-
148
- """Builds the HTTP request params needed by the request.
149
- :param method: Method to call.
150
- :param resource_path: Path to method endpoint.
151
- :param path_params: Path parameters in the url.
152
- :param query_params: Query parameters in the url.
153
- :param header_params: Header parameters to be
154
- placed in the request header.
155
- :param body: Request body.
156
- :param post_params dict: Request post form parameters,
157
- for `application/x-www-form-urlencoded`, `multipart/form-data`.
158
- :param auth_settings list: Auth Settings names for the request.
159
- :param files dict: key -> filename, value -> filepath,
160
- for `multipart/form-data`.
161
- :param collection_formats: dict of collection formats for path, query,
162
- header, and post parameters.
163
- :param _request_auth: set to override the auth_settings for an a single
164
- request; this effectively ignores the authentication
165
- in the spec for a single request.
166
- :return: tuple of form (path, http_method, query_params, header_params,
167
- body, post_params, files)
168
- """
298
+ def __call_api(
299
+ self, resource_path, method, path_params=None,
300
+ query_params=None, header_params=None, body=None, post_params=None,
301
+ files=None, response_types_map=None, auth_settings=None,
302
+ _return_http_data_only=None, collection_formats=None,
303
+ _preload_content=True, _request_timeout=None, _host=None,
304
+ _request_auth=None):
169
305
 
170
306
  config = self.configuration
171
307
 
@@ -176,17 +312,14 @@ class ApiClient:
176
312
  header_params['Cookie'] = self.cookie
177
313
  if header_params:
178
314
  header_params = self.sanitize_for_serialization(header_params)
179
- header_params = dict(
180
- self.parameters_to_tuples(header_params,collection_formats)
181
- )
315
+ header_params = dict(self.parameters_to_tuples(header_params,
316
+ collection_formats))
182
317
 
183
318
  # path parameters
184
319
  if path_params:
185
320
  path_params = self.sanitize_for_serialization(path_params)
186
- path_params = self.parameters_to_tuples(
187
- path_params,
188
- collection_formats
189
- )
321
+ path_params = self.parameters_to_tuples(path_params,
322
+ collection_formats)
190
323
  for k, v in path_params:
191
324
  # specified safe chars, encode everything
192
325
  resource_path = resource_path.replace(
@@ -194,269 +327,219 @@ class ApiClient:
194
327
  quote(str(v), safe=config.safe_chars_for_path_param)
195
328
  )
196
329
 
330
+ # query parameters
331
+ if query_params:
332
+ query_params = self.sanitize_for_serialization(query_params)
333
+ query_params = self.parameters_to_tuples(query_params,
334
+ collection_formats)
335
+
197
336
  # post parameters
198
337
  if post_params or files:
199
338
  post_params = post_params if post_params else []
200
339
  post_params = self.sanitize_for_serialization(post_params)
201
- post_params = self.parameters_to_tuples(
202
- post_params,
203
- collection_formats
204
- )
205
- if files:
206
- post_params.extend(self.files_parameters(files))
340
+ post_params = self.parameters_to_tuples(post_params,
341
+ collection_formats)
342
+ post_params.extend(self.files_parameters(files))
207
343
 
208
344
  # auth setting
209
345
  self.update_params_for_auth(
210
- header_params,
211
- query_params,
212
- auth_settings,
213
- resource_path,
214
- method,
215
- body,
216
- request_auth=_request_auth
217
- )
346
+ header_params, query_params, auth_settings,
347
+ request_auth=_request_auth)
218
348
 
219
349
  # body
220
350
  if body:
221
351
  body = self.sanitize_for_serialization(body)
222
352
 
223
353
  # request url
224
- if _host is None or self.configuration.ignore_operation_servers:
354
+ if _host is None:
225
355
  url = self.configuration.host + resource_path
226
356
  else:
227
357
  # use server/host defined in path or operation instead
228
358
  url = _host + resource_path
229
359
 
230
- # query parameters
231
- if query_params:
232
- query_params = self.sanitize_for_serialization(query_params)
233
- url_query = self.parameters_to_url_query(
234
- query_params,
235
- collection_formats
236
- )
237
- url += "?" + url_query
238
-
239
- return method, url, header_params, body, post_params
240
-
241
-
242
- def call_api(
243
- self,
244
- method,
245
- url,
246
- header_params=None,
247
- body=None,
248
- post_params=None,
249
- _request_timeout=None
250
- ) -> rest.RESTResponse:
251
- """Makes the HTTP request (synchronous)
252
- :param method: Method to call.
253
- :param url: Path to method endpoint.
254
- :param header_params: Header parameters to be
255
- placed in the request header.
256
- :param body: Request body.
257
- :param post_params dict: Request post form parameters,
258
- for `application/x-www-form-urlencoded`, `multipart/form-data`.
259
- :param _request_timeout: timeout setting for this request.
260
- :return: RESTResponse
261
- """
262
-
263
360
  try:
264
361
  # perform request and return response
265
- response_data = self.rest_client.request(
266
- method, url,
267
- headers=header_params,
268
- body=body, post_params=post_params,
269
- _request_timeout=_request_timeout
270
- )
271
-
362
+ response_data = self.request(
363
+ method, url, query_params=query_params, headers=header_params,
364
+ post_params=post_params, body=body,
365
+ _preload_content=_preload_content,
366
+ _request_timeout=_request_timeout)
272
367
  except ApiException as e:
368
+ e.body = e.body.decode('utf-8') if six.PY3 else e.body
273
369
  raise e
274
370
 
275
- return response_data
371
+ self.last_response = response_data
276
372
 
277
- def response_deserialize(
278
- self,
279
- response_data: rest.RESTResponse,
280
- response_types_map: Optional[Dict[str, ApiResponseT]]=None
281
- ) -> ApiResponse[ApiResponseT]:
282
- """Deserializes response into an object.
283
- :param response_data: RESTResponse object to be deserialized.
284
- :param response_types_map: dict of response types.
285
- :return: ApiResponse
286
- """
373
+ return_data = response_data
287
374
 
288
- msg = "RESTResponse.read() must be called before passing it to response_deserialize()"
289
- assert response_data.data is not None, msg
375
+ if not _preload_content:
376
+ return return_data
290
377
 
291
- response_type = response_types_map.get(str(response_data.status), None)
292
- if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599:
293
- # if not found, look for '1XX', '2XX', etc.
294
- response_type = response_types_map.get(str(response_data.status)[0] + "XX", None)
378
+ response_type = response_types_map.get(response_data.status, None)
295
379
 
296
- # deserialize response data
297
- response_text = None
298
- return_data = None
299
- try:
300
- if response_type == "bytearray":
301
- return_data = response_data.data
302
- elif response_type == "file":
303
- return_data = self.__deserialize_file(response_data)
304
- elif response_type is not None:
305
- match = None
306
- content_type = response_data.getheader('content-type')
307
- if content_type is not None:
308
- match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
309
- encoding = match.group(1) if match else "utf-8"
310
- response_text = response_data.data.decode(encoding)
311
- return_data = self.deserialize(response_text, response_type, content_type)
312
- finally:
313
- if not 200 <= response_data.status <= 299:
314
- raise ApiException.from_response(
315
- http_resp=response_data,
316
- body=response_text,
317
- data=return_data,
318
- )
319
-
320
- return ApiResponse(
321
- status_code = response_data.status,
322
- data = return_data,
323
- headers = response_data.getheaders(),
324
- raw_data = response_data.data
325
- )
326
-
327
- def sanitize_for_serialization(self, obj):
328
- """Builds a JSON POST object.
329
-
330
- If obj is None, return None.
331
- If obj is SecretStr, return obj.get_secret_value()
332
- If obj is str, int, long, float, bool, return directly.
333
- If obj is datetime.datetime, datetime.date
334
- convert to string in iso8601 format.
335
- If obj is decimal.Decimal return string representation.
336
- If obj is list, sanitize each element in the list.
337
- If obj is dict, return the dict.
338
- If obj is OpenAPI model, return the properties dict.
380
+ if six.PY3 and response_type not in ["file", "bytes"]:
381
+ match = None
382
+ content_type = response_data.getheader('content-type')
383
+ if content_type is not None:
384
+ match = re.search(r"charset=([a-zA-Z\-\d]+)[\s\;]?", content_type)
385
+ encoding = match.group(1) if match else "utf-8"
386
+ response_data.data = response_data.data.decode(encoding)
339
387
 
340
- :param obj: The data to serialize.
341
- :return: The serialized form of data.
342
- """
343
- if obj is None:
344
- return None
345
- elif isinstance(obj, Enum):
346
- return obj.value
347
- elif isinstance(obj, SecretStr):
348
- return obj.get_secret_value()
349
- elif isinstance(obj, self.PRIMITIVE_TYPES):
350
- return obj
351
- elif isinstance(obj, list):
352
- return [
353
- self.sanitize_for_serialization(sub_obj) for sub_obj in obj
354
- ]
355
- elif isinstance(obj, tuple):
356
- return tuple(
357
- self.sanitize_for_serialization(sub_obj) for sub_obj in obj
358
- )
359
- elif isinstance(obj, (datetime.datetime, datetime.date)):
360
- return obj.isoformat()
361
- elif isinstance(obj, decimal.Decimal):
362
- return str(obj)
388
+ # deserialize response data
363
389
 
364
- elif isinstance(obj, dict):
365
- obj_dict = obj
390
+ if response_type:
391
+ return_data = self.deserialize(response_data, response_type)
366
392
  else:
367
- # Convert model obj to dict except
368
- # attributes `openapi_types`, `attribute_map`
369
- # and attributes which value is not None.
370
- # Convert attribute name to json key in
371
- # model definition for request.
372
- if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
373
- obj_dict = obj.to_dict()
374
- else:
375
- obj_dict = obj.__dict__
393
+ return_data = None
376
394
 
377
- return {
378
- key: self.sanitize_for_serialization(val)
379
- for key, val in obj_dict.items()
380
- }
395
+ if _return_http_data_only:
396
+ return (return_data)
397
+ else:
398
+ return (return_data, response_data.status,
399
+ response_data.getheaders())
381
400
 
382
- def deserialize(self, response_text: str, response_type: str, content_type: Optional[str]):
401
+ def deserialize(self, response, response_type):
383
402
  """Deserializes response into an object.
384
403
 
385
404
  :param response: RESTResponse object to be deserialized.
386
405
  :param response_type: class literal for
387
406
  deserialized object, or string of class name.
388
- :param content_type: content type of response.
389
407
 
390
408
  :return: deserialized object.
391
409
  """
410
+ try:
411
+ data = json.loads(response.data)
412
+ except ValueError:
413
+ data = response.data
414
+ return self.deserialize_raw(data, response_type)
392
415
 
393
- # fetch data from response object
394
- if content_type is None:
395
- try:
396
- data = json.loads(response_text)
397
- except ValueError:
398
- data = response_text
399
- elif re.match(r'^application/(json|[\w!#$&.+-^_]+\+json)\s*(;|$)', content_type, re.IGNORECASE):
400
- if response_text == "":
401
- data = ""
402
- else:
403
- data = json.loads(response_text)
404
- elif re.match(r'^text\/[a-z.+-]+\s*(;|$)', content_type, re.IGNORECASE):
405
- data = response_text
406
- else:
407
- raise ApiException(
408
- status=0,
409
- reason="Unsupported content type: {0}".format(content_type)
410
- )
411
-
412
- return self.__deserialize(data, response_type)
416
+ def call_api(self, resource_path, method,
417
+ path_params=None, query_params=None, header_params=None,
418
+ body=None, post_params=None, files=None,
419
+ response_types_map=None, auth_settings=None,
420
+ async_req=None, _return_http_data_only=None,
421
+ collection_formats=None,_preload_content=True,
422
+ _request_timeout=None, _host=None, _request_auth=None):
423
+ """Makes the HTTP request (synchronous) and returns deserialized data.
413
424
 
414
- def __deserialize(self, data, klass):
415
- """Deserializes dict, list, str into an object.
425
+ To make an async_req request, set the async_req parameter.
416
426
 
417
- :param data: dict, list or str.
418
- :param klass: class literal, or string of class name.
419
-
420
- :return: object.
427
+ :param resource_path: Path to method endpoint.
428
+ :param method: Method to call.
429
+ :param path_params: Path parameters in the url.
430
+ :param query_params: Query parameters in the url.
431
+ :param header_params: Header parameters to be
432
+ placed in the request header.
433
+ :param body: Request body.
434
+ :param post_params dict: Request post form parameters,
435
+ for `application/x-www-form-urlencoded`, `multipart/form-data`.
436
+ :param auth_settings list: Auth Settings names for the request.
437
+ :param response: Response data type.
438
+ :param files dict: key -> filename, value -> filepath,
439
+ for `multipart/form-data`.
440
+ :param async_req bool: execute request asynchronously
441
+ :param _return_http_data_only: response data without head status code
442
+ and headers
443
+ :param collection_formats: dict of collection formats for path, query,
444
+ header, and post parameters.
445
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
446
+ be returned without reading/decoding response
447
+ data. Default is True.
448
+ :param _request_timeout: timeout setting for this request. If one
449
+ number provided, it will be total request
450
+ timeout. It can also be a pair (tuple) of
451
+ (connection, read) timeouts.
452
+ :param _request_auth: set to override the auth_settings for an a single
453
+ request; this effectively ignores the authentication
454
+ in the spec for a single request.
455
+ :type _request_token: dict, optional
456
+ :return:
457
+ If async_req parameter is True,
458
+ the request will be called asynchronously.
459
+ The method will return the request thread.
460
+ If parameter async_req is False or missing,
461
+ then the method will return the response directly.
421
462
  """
422
- if data is None:
423
- return None
424
-
425
- if isinstance(klass, str):
426
- if klass.startswith('List['):
427
- m = re.match(r'List\[(.*)]', klass)
428
- assert m is not None, "Malformed List type definition"
429
- sub_kls = m.group(1)
430
- return [self.__deserialize(sub_data, sub_kls)
431
- for sub_data in data]
432
-
433
- if klass.startswith('Dict['):
434
- m = re.match(r'Dict\[([^,]*), (.*)]', klass)
435
- assert m is not None, "Malformed Dict type definition"
436
- sub_kls = m.group(2)
437
- return {k: self.__deserialize(v, sub_kls)
438
- for k, v in data.items()}
439
-
440
- # convert str to class
441
- if klass in self.NATIVE_TYPES_MAPPING:
442
- klass = self.NATIVE_TYPES_MAPPING[klass]
443
- else:
444
- klass = getattr(regula.documentreader.webclient.gen.models, klass)
445
-
446
- if klass in self.PRIMITIVE_TYPES:
447
- return self.__deserialize_primitive(data, klass)
448
- elif klass == object:
449
- return self.__deserialize_object(data)
450
- elif klass == datetime.date:
451
- return self.__deserialize_date(data)
452
- elif klass == datetime.datetime:
453
- return self.__deserialize_datetime(data)
454
- elif klass == decimal.Decimal:
455
- return decimal.Decimal(data)
456
- elif issubclass(klass, Enum):
457
- return self.__deserialize_enum(data, klass)
463
+ if not async_req:
464
+ return self.__call_api(resource_path, method,
465
+ path_params, query_params, header_params,
466
+ body, post_params, files,
467
+ response_types_map, auth_settings,
468
+ _return_http_data_only, collection_formats,
469
+ _preload_content, _request_timeout, _host,
470
+ _request_auth)
471
+
472
+ return self.pool.apply_async(self.__call_api, (resource_path,
473
+ method, path_params,
474
+ query_params,
475
+ header_params, body,
476
+ post_params, files,
477
+ response_types_map,
478
+ auth_settings,
479
+ _return_http_data_only,
480
+ collection_formats,
481
+ _preload_content,
482
+ _request_timeout,
483
+ _host, _request_auth))
484
+
485
+ def request(self, method, url, query_params=None, headers=None,
486
+ post_params=None, body=None, _preload_content=True,
487
+ _request_timeout=None):
488
+ """Makes the HTTP request using RESTClient."""
489
+ if method == "GET":
490
+ return self.rest_client.GET(url,
491
+ query_params=query_params,
492
+ _preload_content=_preload_content,
493
+ _request_timeout=_request_timeout,
494
+ headers=headers)
495
+ elif method == "HEAD":
496
+ return self.rest_client.HEAD(url,
497
+ query_params=query_params,
498
+ _preload_content=_preload_content,
499
+ _request_timeout=_request_timeout,
500
+ headers=headers)
501
+ elif method == "OPTIONS":
502
+ return self.rest_client.OPTIONS(url,
503
+ query_params=query_params,
504
+ headers=headers,
505
+ _preload_content=_preload_content,
506
+ _request_timeout=_request_timeout)
507
+ elif method == "POST":
508
+ return self.rest_client.POST(url,
509
+ query_params=query_params,
510
+ headers=headers,
511
+ post_params=post_params,
512
+ _preload_content=_preload_content,
513
+ _request_timeout=_request_timeout,
514
+ body=body)
515
+ elif method == "PUT":
516
+ return self.rest_client.PUT(url,
517
+ query_params=query_params,
518
+ headers=headers,
519
+ post_params=post_params,
520
+ _preload_content=_preload_content,
521
+ _request_timeout=_request_timeout,
522
+ body=body)
523
+ elif method == "PATCH":
524
+ return self.rest_client.PATCH(url,
525
+ query_params=query_params,
526
+ headers=headers,
527
+ post_params=post_params,
528
+ _preload_content=_preload_content,
529
+ _request_timeout=_request_timeout,
530
+ body=body)
531
+ elif method == "DELETE":
532
+ return self.rest_client.DELETE(url,
533
+ query_params=query_params,
534
+ headers=headers,
535
+ _preload_content=_preload_content,
536
+ _request_timeout=_request_timeout,
537
+ body=body)
458
538
  else:
459
- return self.__deserialize_model(data, klass)
539
+ raise ApiValueError(
540
+ "http method must be `GET`, `HEAD`, `OPTIONS`,"
541
+ " `POST`, `PATCH`, `PUT` or `DELETE`."
542
+ )
460
543
 
461
544
  def parameters_to_tuples(self, params, collection_formats):
462
545
  """Get parameters as list of tuples, formatting collections.
@@ -465,10 +548,10 @@ class ApiClient:
465
548
  :param dict collection_formats: Parameter collection formats
466
549
  :return: Parameters as list of tuples, collections formatted
467
550
  """
468
- new_params: List[Tuple[str, str]] = []
551
+ new_params = []
469
552
  if collection_formats is None:
470
553
  collection_formats = {}
471
- for k, v in params.items() if isinstance(params, dict) else params:
554
+ for k, v in six.iteritems(params) if isinstance(params, dict) else params: # noqa: E501
472
555
  if k in collection_formats:
473
556
  collection_format = collection_formats[k]
474
557
  if collection_format == 'multi':
@@ -488,94 +571,45 @@ class ApiClient:
488
571
  new_params.append((k, v))
489
572
  return new_params
490
573
 
491
- def parameters_to_url_query(self, params, collection_formats):
492
- """Get parameters as list of tuples, formatting collections.
493
-
494
- :param params: Parameters as dict or list of two-tuples
495
- :param dict collection_formats: Parameter collection formats
496
- :return: URL query string (e.g. a=Hello%20World&b=123)
497
- """
498
- new_params: List[Tuple[str, str]] = []
499
- if collection_formats is None:
500
- collection_formats = {}
501
- for k, v in params.items() if isinstance(params, dict) else params:
502
- if isinstance(v, bool):
503
- v = str(v).lower()
504
- if isinstance(v, (int, float)):
505
- v = str(v)
506
- if isinstance(v, dict):
507
- v = json.dumps(v)
508
-
509
- if k in collection_formats:
510
- collection_format = collection_formats[k]
511
- if collection_format == 'multi':
512
- new_params.extend((k, quote(str(value))) for value in v)
513
- else:
514
- if collection_format == 'ssv':
515
- delimiter = ' '
516
- elif collection_format == 'tsv':
517
- delimiter = '\t'
518
- elif collection_format == 'pipes':
519
- delimiter = '|'
520
- else: # csv is the default
521
- delimiter = ','
522
- new_params.append(
523
- (k, delimiter.join(quote(str(value)) for value in v))
524
- )
525
- else:
526
- new_params.append((k, quote(str(v))))
527
-
528
- return "&".join(["=".join(map(str, item)) for item in new_params])
529
-
530
- def files_parameters(
531
- self,
532
- files: Dict[str, Union[str, bytes, List[str], List[bytes], Tuple[str, bytes]]],
533
- ):
574
+ def files_parameters(self, files=None):
534
575
  """Builds form parameters.
535
576
 
536
577
  :param files: File parameters.
537
578
  :return: Form parameters with files.
538
579
  """
539
580
  params = []
540
- for k, v in files.items():
541
- if isinstance(v, str):
542
- with open(v, 'rb') as f:
543
- filename = os.path.basename(f.name)
544
- filedata = f.read()
545
- elif isinstance(v, bytes):
546
- filename = k
547
- filedata = v
548
- elif isinstance(v, tuple):
549
- filename, filedata = v
550
- elif isinstance(v, list):
551
- for file_param in v:
552
- params.extend(self.files_parameters({k: file_param}))
553
- continue
554
- else:
555
- raise ValueError("Unsupported file value")
556
- mimetype = (
557
- mimetypes.guess_type(filename)[0]
558
- or 'application/octet-stream'
559
- )
560
- params.append(
561
- tuple([k, tuple([filename, filedata, mimetype])])
562
- )
581
+
582
+ if files:
583
+ for k, v in six.iteritems(files):
584
+ if not v:
585
+ continue
586
+ file_names = v if type(v) is list else [v]
587
+ for n in file_names:
588
+ with open(n, 'rb') as f:
589
+ filename = os.path.basename(f.name)
590
+ filedata = f.read()
591
+ mimetype = (mimetypes.guess_type(filename)[0] or
592
+ 'application/octet-stream')
593
+ params.append(
594
+ tuple([k, tuple([filename, filedata, mimetype])]))
595
+
563
596
  return params
564
597
 
565
- def select_header_accept(self, accepts: List[str]) -> Optional[str]:
598
+ def select_header_accept(self, accepts):
566
599
  """Returns `Accept` based on an array of accepts provided.
567
600
 
568
601
  :param accepts: List of headers.
569
602
  :return: Accept (e.g. application/json).
570
603
  """
571
604
  if not accepts:
572
- return None
605
+ return
573
606
 
574
- for accept in accepts:
575
- if re.search('json', accept, re.IGNORECASE):
576
- return accept
607
+ accepts = [x.lower() for x in accepts]
577
608
 
578
- return accepts[0]
609
+ if 'application/json' in accepts:
610
+ return 'application/json'
611
+ else:
612
+ return ', '.join(accepts)
579
613
 
580
614
  def select_header_content_type(self, content_types):
581
615
  """Returns `Content-Type` based on an array of content_types provided.
@@ -584,33 +618,22 @@ class ApiClient:
584
618
  :return: Content-Type (e.g. application/json).
585
619
  """
586
620
  if not content_types:
587
- return None
621
+ return 'application/json'
622
+
623
+ content_types = [x.lower() for x in content_types]
588
624
 
589
- for content_type in content_types:
590
- if re.search('json', content_type, re.IGNORECASE):
591
- return content_type
592
-
593
- return content_types[0]
594
-
595
- def update_params_for_auth(
596
- self,
597
- headers,
598
- queries,
599
- auth_settings,
600
- resource_path,
601
- method,
602
- body,
603
- request_auth=None
604
- ) -> None:
625
+ if 'application/json' in content_types or '*/*' in content_types:
626
+ return 'application/json'
627
+ else:
628
+ return content_types[0]
629
+
630
+ def update_params_for_auth(self, headers, querys, auth_settings,
631
+ request_auth=None):
605
632
  """Updates header and query params based on authentication setting.
606
633
 
607
634
  :param headers: Header parameters dict to be updated.
608
- :param queries: Query parameters tuple list to be updated.
635
+ :param querys: Query parameters tuple list to be updated.
609
636
  :param auth_settings: Authentication setting identifiers list.
610
- :resource_path: A string representation of the HTTP request resource path.
611
- :method: A string representation of the HTTP request method.
612
- :body: A object representing the body of the HTTP request.
613
- The object type is the return value of sanitize_for_serialization().
614
637
  :param request_auth: if set, the provided settings will
615
638
  override the token in the configuration.
616
639
  """
@@ -618,172 +641,28 @@ class ApiClient:
618
641
  return
619
642
 
620
643
  if request_auth:
621
- self._apply_auth_params(
622
- headers,
623
- queries,
624
- resource_path,
625
- method,
626
- body,
627
- request_auth
628
- )
629
- else:
630
- for auth in auth_settings:
631
- auth_setting = self.configuration.auth_settings().get(auth)
632
- if auth_setting:
633
- self._apply_auth_params(
634
- headers,
635
- queries,
636
- resource_path,
637
- method,
638
- body,
639
- auth_setting
640
- )
641
-
642
- def _apply_auth_params(
643
- self,
644
- headers,
645
- queries,
646
- resource_path,
647
- method,
648
- body,
649
- auth_setting
650
- ) -> None:
644
+ self._apply_auth_params(headers, querys, request_auth)
645
+ return
646
+
647
+ for auth in auth_settings:
648
+ auth_setting = self.configuration.auth_settings().get(auth)
649
+ if auth_setting:
650
+ self._apply_auth_params(headers, querys, auth_setting)
651
+
652
+ def _apply_auth_params(self, headers, querys, auth_setting):
651
653
  """Updates the request parameters based on a single auth_setting
652
654
 
653
655
  :param headers: Header parameters dict to be updated.
654
- :param queries: Query parameters tuple list to be updated.
655
- :resource_path: A string representation of the HTTP request resource path.
656
- :method: A string representation of the HTTP request method.
657
- :body: A object representing the body of the HTTP request.
658
- The object type is the return value of sanitize_for_serialization().
656
+ :param querys: Query parameters tuple list to be updated.
659
657
  :param auth_setting: auth settings for the endpoint
660
658
  """
661
659
  if auth_setting['in'] == 'cookie':
662
660
  headers['Cookie'] = auth_setting['value']
663
661
  elif auth_setting['in'] == 'header':
664
- if auth_setting['type'] != 'http-signature':
665
- headers[auth_setting['key']] = auth_setting['value']
662
+ headers[auth_setting['key']] = auth_setting['value']
666
663
  elif auth_setting['in'] == 'query':
667
- queries.append((auth_setting['key'], auth_setting['value']))
664
+ querys.append((auth_setting['key'], auth_setting['value']))
668
665
  else:
669
666
  raise ApiValueError(
670
667
  'Authentication token must be in `query` or `header`'
671
668
  )
672
-
673
- def __deserialize_file(self, response):
674
- """Deserializes body to file
675
-
676
- Saves response body into a file in a temporary folder,
677
- using the filename from the `Content-Disposition` header if provided.
678
-
679
- handle file downloading
680
- save response body into a tmp file and return the instance
681
-
682
- :param response: RESTResponse.
683
- :return: file path.
684
- """
685
- fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path)
686
- os.close(fd)
687
- os.remove(path)
688
-
689
- content_disposition = response.getheader("Content-Disposition")
690
- if content_disposition:
691
- m = re.search(
692
- r'filename=[\'"]?([^\'"\s]+)[\'"]?',
693
- content_disposition
694
- )
695
- assert m is not None, "Unexpected 'content-disposition' header value"
696
- filename = m.group(1)
697
- path = os.path.join(os.path.dirname(path), filename)
698
-
699
- with open(path, "wb") as f:
700
- f.write(response.data)
701
-
702
- return path
703
-
704
- def __deserialize_primitive(self, data, klass):
705
- """Deserializes string to primitive type.
706
-
707
- :param data: str.
708
- :param klass: class literal.
709
-
710
- :return: int, long, float, str, bool.
711
- """
712
- try:
713
- return klass(data)
714
- except UnicodeEncodeError:
715
- return str(data)
716
- except TypeError:
717
- return data
718
-
719
- def __deserialize_object(self, value):
720
- """Return an original value.
721
-
722
- :return: object.
723
- """
724
- return value
725
-
726
- def __deserialize_date(self, string):
727
- """Deserializes string to date.
728
-
729
- :param string: str.
730
- :return: date.
731
- """
732
- try:
733
- return parse(string).date()
734
- except ImportError:
735
- return string
736
- except ValueError:
737
- raise rest.ApiException(
738
- status=0,
739
- reason="Failed to parse `{0}` as date object".format(string)
740
- )
741
-
742
- def __deserialize_datetime(self, string):
743
- """Deserializes string to datetime.
744
-
745
- The string should be in iso8601 datetime format.
746
-
747
- :param string: str.
748
- :return: datetime.
749
- """
750
- try:
751
- return parse(string)
752
- except ImportError:
753
- return string
754
- except ValueError:
755
- raise rest.ApiException(
756
- status=0,
757
- reason=(
758
- "Failed to parse `{0}` as datetime object"
759
- .format(string)
760
- )
761
- )
762
-
763
- def __deserialize_enum(self, data, klass):
764
- """Deserializes primitive type to enum.
765
-
766
- :param data: primitive type.
767
- :param klass: class literal.
768
- :return: enum value.
769
- """
770
- try:
771
- return klass(data)
772
- except ValueError:
773
- raise rest.ApiException(
774
- status=0,
775
- reason=(
776
- "Failed to parse `{0}` as `{1}`"
777
- .format(data, klass)
778
- )
779
- )
780
-
781
- def __deserialize_model(self, data, klass):
782
- """Deserializes list or dict to model.
783
-
784
- :param data: dict, list.
785
- :param klass: class literal.
786
- :return: model object.
787
- """
788
-
789
- return klass.from_dict(data)