regula-documentreader-webclient 8.1.349rc0__py3-none-any.whl → 8.1.351.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.

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 +0 -1
  2. regula/documentreader/webclient/ext/api/document_reader_api.py +2 -2
  3. regula/documentreader/webclient/ext/models/__init__.py +0 -2
  4. regula/documentreader/webclient/ext/models/authenticity/authenticity_check_list.py +64 -19
  5. regula/documentreader/webclient/ext/models/authenticity/fiber.py +7 -7
  6. regula/documentreader/webclient/ext/models/authenticity/ident.py +10 -9
  7. regula/documentreader/webclient/ext/models/authenticity/image_ident.py +8 -7
  8. regula/documentreader/webclient/ext/models/authenticity/ocr_security_text.py +7 -7
  9. regula/documentreader/webclient/ext/models/authenticity/security_feature.py +10 -8
  10. regula/documentreader/webclient/ext/models/images.py +4 -4
  11. regula/documentreader/webclient/ext/models/recognition_request.py +23 -24
  12. regula/documentreader/webclient/ext/models/recognition_response.py +6 -8
  13. regula/documentreader/webclient/ext/models/text.py +7 -12
  14. regula/documentreader/webclient/gen/__init__.py +100 -26
  15. regula/documentreader/webclient/gen/api/__init__.py +1 -2
  16. regula/documentreader/webclient/gen/api/healthcheck_api.py +687 -298
  17. regula/documentreader/webclient/gen/api/process_api.py +270 -125
  18. regula/documentreader/webclient/gen/api/transaction_api.py +1472 -673
  19. regula/documentreader/webclient/gen/api_client.py +583 -462
  20. regula/documentreader/webclient/gen/api_response.py +21 -0
  21. regula/documentreader/webclient/gen/configuration.py +222 -99
  22. regula/documentreader/webclient/gen/exceptions.py +81 -30
  23. regula/documentreader/webclient/gen/models/__init__.py +98 -25
  24. regula/documentreader/webclient/gen/models/area_array.py +85 -131
  25. regula/documentreader/webclient/gen/models/area_container.py +85 -157
  26. regula/documentreader/webclient/gen/models/auth_params.py +100 -526
  27. regula/documentreader/webclient/gen/models/authenticity_check_list.py +75 -136
  28. regula/documentreader/webclient/gen/models/authenticity_check_list_item.py +83 -0
  29. regula/documentreader/webclient/gen/models/authenticity_check_result.py +81 -160
  30. regula/documentreader/webclient/gen/models/authenticity_check_result_item.py +154 -217
  31. regula/documentreader/webclient/gen/models/authenticity_check_result_list_inner.py +174 -0
  32. regula/documentreader/webclient/gen/models/authenticity_result.py +68 -231
  33. regula/documentreader/webclient/gen/models/authenticity_result_type.py +35 -123
  34. regula/documentreader/webclient/gen/models/bar_code_module_type.py +32 -0
  35. regula/documentreader/webclient/gen/models/barcode_type.py +47 -0
  36. regula/documentreader/webclient/gen/models/bc_pdf417_info.py +75 -235
  37. regula/documentreader/webclient/gen/models/bc_roidetect.py +71 -183
  38. regula/documentreader/webclient/gen/models/binary_data.py +218 -0
  39. regula/documentreader/webclient/gen/models/byte_array_item.py +79 -0
  40. regula/documentreader/webclient/gen/models/byte_array_result.py +64 -233
  41. regula/documentreader/webclient/gen/models/candidates_list_item.py +83 -0
  42. regula/documentreader/webclient/gen/models/certificate_data.py +81 -0
  43. regula/documentreader/webclient/gen/models/check_diagnose.py +138 -329
  44. regula/documentreader/webclient/gen/models/check_result.py +15 -84
  45. regula/documentreader/webclient/gen/models/chosen_document_type.py +94 -334
  46. regula/documentreader/webclient/gen/models/chosen_document_type_result.py +80 -264
  47. regula/documentreader/webclient/gen/models/container_list.py +75 -134
  48. regula/documentreader/webclient/gen/models/container_list_list_inner.py +426 -0
  49. regula/documentreader/webclient/gen/models/critical.py +14 -82
  50. regula/documentreader/webclient/gen/models/cross_source_value_comparison.py +67 -156
  51. regula/documentreader/webclient/gen/models/data_module.py +74 -209
  52. regula/documentreader/webclient/gen/models/details_optical.py +83 -298
  53. regula/documentreader/webclient/gen/models/details_rfid.py +78 -268
  54. regula/documentreader/webclient/gen/models/device_info.py +76 -235
  55. regula/documentreader/webclient/gen/models/doc_bar_code_info.py +68 -230
  56. regula/documentreader/webclient/gen/models/doc_bar_code_info_fields_list.py +75 -135
  57. regula/documentreader/webclient/gen/models/doc_bar_code_info_item.py +83 -0
  58. regula/documentreader/webclient/gen/models/doc_graphics_info_item.py +83 -0
  59. regula/documentreader/webclient/gen/models/doc_visual_extended_field.py +105 -301
  60. regula/documentreader/webclient/gen/models/doc_visual_extended_field_item.py +83 -0
  61. regula/documentreader/webclient/gen/models/doc_visual_extended_info.py +75 -106
  62. regula/documentreader/webclient/gen/models/doc_visual_extended_info_item.py +83 -0
  63. regula/documentreader/webclient/gen/models/document_binary_info_result.py +90 -0
  64. regula/documentreader/webclient/gen/models/document_format.py +27 -105
  65. regula/documentreader/webclient/gen/models/document_image.py +63 -132
  66. regula/documentreader/webclient/gen/models/document_image_result.py +68 -231
  67. regula/documentreader/webclient/gen/models/document_position.py +111 -340
  68. regula/documentreader/webclient/gen/models/document_position_item.py +83 -0
  69. regula/documentreader/webclient/gen/models/document_position_result.py +68 -230
  70. regula/documentreader/webclient/gen/models/document_type.py +243 -539
  71. regula/documentreader/webclient/gen/models/document_type_recognition_result.py +15 -84
  72. regula/documentreader/webclient/gen/models/document_types_candidates.py +76 -131
  73. regula/documentreader/webclient/gen/models/document_types_candidates_list.py +76 -131
  74. regula/documentreader/webclient/gen/models/document_types_candidates_result.py +68 -230
  75. regula/documentreader/webclient/gen/models/documents_database.py +71 -191
  76. regula/documentreader/webclient/gen/models/encrypted_rcl_item.py +79 -0
  77. regula/documentreader/webclient/gen/models/encrypted_rcl_result.py +64 -233
  78. regula/documentreader/webclient/gen/models/error_coordinates.py +85 -0
  79. regula/documentreader/webclient/gen/models/face_api.py +88 -358
  80. regula/documentreader/webclient/gen/models/face_api_search.py +65 -159
  81. regula/documentreader/webclient/gen/models/face_detection.py +95 -0
  82. regula/documentreader/webclient/gen/models/face_detection_item.py +83 -0
  83. regula/documentreader/webclient/gen/models/face_detection_result.py +90 -0
  84. regula/documentreader/webclient/gen/models/face_item.py +109 -0
  85. regula/documentreader/webclient/gen/models/fdsid_list.py +91 -390
  86. regula/documentreader/webclient/gen/models/fiber_item.py +106 -0
  87. regula/documentreader/webclient/gen/models/fiber_result.py +103 -439
  88. regula/documentreader/webclient/gen/models/field_item.py +89 -0
  89. regula/documentreader/webclient/gen/models/file_image.py +81 -0
  90. regula/documentreader/webclient/gen/models/get_transactions_by_tag_response.py +66 -159
  91. regula/documentreader/webclient/gen/models/graph_data.py +95 -0
  92. regula/documentreader/webclient/gen/models/graphic_field.py +80 -271
  93. regula/documentreader/webclient/gen/models/graphic_field_type.py +40 -131
  94. regula/documentreader/webclient/gen/models/graphic_fields_list.py +75 -106
  95. regula/documentreader/webclient/gen/models/graphics_result.py +68 -231
  96. regula/documentreader/webclient/gen/models/healthcheck.py +117 -297
  97. regula/documentreader/webclient/gen/models/healthcheck_documents_database.py +91 -187
  98. regula/documentreader/webclient/gen/models/ident_item.py +110 -0
  99. regula/documentreader/webclient/gen/models/ident_result.py +107 -345
  100. regula/documentreader/webclient/gen/models/image_data.py +63 -132
  101. regula/documentreader/webclient/gen/models/image_qa.py +83 -304
  102. regula/documentreader/webclient/gen/models/image_quality_check.py +86 -263
  103. regula/documentreader/webclient/gen/models/image_quality_check_list.py +78 -133
  104. regula/documentreader/webclient/gen/models/image_quality_check_list_item.py +83 -0
  105. regula/documentreader/webclient/gen/models/image_quality_check_type.py +22 -97
  106. regula/documentreader/webclient/gen/models/image_quality_result.py +68 -231
  107. regula/documentreader/webclient/gen/models/image_transaction_data.py +61 -97
  108. regula/documentreader/webclient/gen/models/images.py +87 -133
  109. regula/documentreader/webclient/gen/models/images_available_source.py +64 -130
  110. regula/documentreader/webclient/gen/models/images_field.py +80 -162
  111. regula/documentreader/webclient/gen/models/images_field_value.py +94 -331
  112. regula/documentreader/webclient/gen/models/images_item.py +83 -0
  113. regula/documentreader/webclient/gen/models/images_result.py +68 -231
  114. regula/documentreader/webclient/gen/models/in_data.py +79 -131
  115. regula/documentreader/webclient/gen/models/in_data_transaction_images_field_value.py +72 -187
  116. regula/documentreader/webclient/gen/models/in_data_video.py +63 -131
  117. regula/documentreader/webclient/gen/models/input_barcode_type.py +33 -119
  118. regula/documentreader/webclient/gen/models/input_image_quality_checks.py +22 -97
  119. regula/documentreader/webclient/gen/models/lcid.py +179 -402
  120. regula/documentreader/webclient/gen/models/lexical_analysis_result.py +68 -234
  121. regula/documentreader/webclient/gen/models/license_item.py +79 -0
  122. regula/documentreader/webclient/gen/models/license_result.py +64 -233
  123. regula/documentreader/webclient/gen/models/light.py +61 -87
  124. regula/documentreader/webclient/gen/models/list_transactions_by_tag_response.py +75 -131
  125. regula/documentreader/webclient/gen/models/list_verified_fields.py +77 -105
  126. regula/documentreader/webclient/gen/models/list_verified_fields_item.py +83 -0
  127. regula/documentreader/webclient/gen/models/liveness_params.py +77 -247
  128. regula/documentreader/webclient/gen/models/log_level.py +17 -88
  129. regula/documentreader/webclient/gen/models/measure_system.py +14 -82
  130. regula/documentreader/webclient/gen/models/mrz_detect_mode_enum.py +15 -84
  131. regula/documentreader/webclient/gen/models/mrz_detector_result.py +90 -0
  132. regula/documentreader/webclient/gen/models/mrz_format.py +18 -90
  133. regula/documentreader/webclient/gen/models/mrz_position.py +124 -0
  134. regula/documentreader/webclient/gen/models/mrz_position_item.py +83 -0
  135. regula/documentreader/webclient/gen/models/mrz_position_result.py +90 -0
  136. regula/documentreader/webclient/gen/models/mrz_rows_item.py +91 -0
  137. regula/documentreader/webclient/gen/models/mrz_test_quality.py +105 -0
  138. regula/documentreader/webclient/gen/models/mrz_test_quality_item.py +83 -0
  139. regula/documentreader/webclient/gen/models/mrz_test_quality_result.py +90 -0
  140. regula/documentreader/webclient/gen/models/ocr_security_text_item.py +110 -0
  141. regula/documentreader/webclient/gen/models/ocr_security_text_result.py +107 -449
  142. regula/documentreader/webclient/gen/models/one_candidate.py +94 -334
  143. regula/documentreader/webclient/gen/models/one_candidate_item.py +87 -0
  144. regula/documentreader/webclient/gen/models/original_symbol.py +74 -167
  145. regula/documentreader/webclient/gen/models/out_data.py +75 -133
  146. regula/documentreader/webclient/gen/models/out_data_transaction_images_field_value.py +75 -213
  147. regula/documentreader/webclient/gen/models/p_array_field.py +103 -342
  148. regula/documentreader/webclient/gen/models/parsed_data.py +79 -0
  149. regula/documentreader/webclient/gen/models/parsing_error_codes.py +153 -0
  150. regula/documentreader/webclient/gen/models/parsing_notification_codes.py +235 -523
  151. regula/documentreader/webclient/gen/models/per_document_config.py +63 -131
  152. regula/documentreader/webclient/gen/models/photo_ident_item.py +110 -0
  153. regula/documentreader/webclient/gen/models/photo_ident_result.py +107 -423
  154. regula/documentreader/webclient/gen/models/point.py +63 -127
  155. regula/documentreader/webclient/gen/models/point_array.py +65 -97
  156. regula/documentreader/webclient/gen/models/points_container.py +75 -131
  157. regula/documentreader/webclient/gen/models/process_params.py +229 -1743
  158. regula/documentreader/webclient/gen/models/process_params_rfid.py +56 -97
  159. regula/documentreader/webclient/gen/models/process_request.py +113 -411
  160. regula/documentreader/webclient/gen/models/process_request_image.py +74 -159
  161. regula/documentreader/webclient/gen/models/process_response.py +96 -299
  162. regula/documentreader/webclient/gen/models/process_system_info.py +63 -131
  163. regula/documentreader/webclient/gen/models/processing_status.py +15 -84
  164. regula/documentreader/webclient/gen/models/raw_image_container_item.py +83 -0
  165. regula/documentreader/webclient/gen/models/raw_image_container_list.py +75 -131
  166. regula/documentreader/webclient/gen/models/rectangle_coordinates.py +71 -187
  167. regula/documentreader/webclient/gen/models/result.py +49 -133
  168. regula/documentreader/webclient/gen/models/result_item.py +195 -245
  169. regula/documentreader/webclient/gen/models/result_mrz_detector.py +93 -0
  170. regula/documentreader/webclient/gen/models/result_mrz_detector_item.py +83 -0
  171. regula/documentreader/webclient/gen/models/rfid_a_chip.py +33 -0
  172. regula/documentreader/webclient/gen/models/rfid_access_control_info.py +90 -0
  173. regula/documentreader/webclient/gen/models/rfid_access_control_procedure_type.py +35 -0
  174. regula/documentreader/webclient/gen/models/rfid_access_key.py +87 -0
  175. regula/documentreader/webclient/gen/models/rfid_application.py +101 -0
  176. regula/documentreader/webclient/gen/models/rfid_application_type.py +37 -0
  177. regula/documentreader/webclient/gen/models/rfid_attribute_data.py +81 -0
  178. regula/documentreader/webclient/gen/models/rfid_attribute_name.py +85 -0
  179. regula/documentreader/webclient/gen/models/rfid_authentication_procedure_type.py +31 -0
  180. regula/documentreader/webclient/gen/models/rfid_baud_rate.py +32 -0
  181. regula/documentreader/webclient/gen/models/rfid_card_properties_ext.py +123 -0
  182. regula/documentreader/webclient/gen/models/rfid_certificate_ex.py +130 -0
  183. regula/documentreader/webclient/gen/models/rfid_certificate_origin.py +36 -0
  184. regula/documentreader/webclient/gen/models/rfid_certificate_type.py +35 -0
  185. regula/documentreader/webclient/gen/models/rfid_data_file.py +118 -0
  186. regula/documentreader/webclient/gen/models/rfid_data_file_type.py +119 -0
  187. regula/documentreader/webclient/gen/models/rfid_data_group_type_tag.py +82 -0
  188. regula/documentreader/webclient/gen/models/rfid_dg1.py +111 -0
  189. regula/documentreader/webclient/gen/models/rfid_distinguished_name.py +95 -0
  190. regula/documentreader/webclient/gen/models/rfid_doc_visual_extended_field.py +120 -0
  191. regula/documentreader/webclient/gen/models/rfid_doc_visual_extended_field_item.py +85 -0
  192. regula/documentreader/webclient/gen/models/rfid_doc_visual_extended_info.py +89 -0
  193. regula/documentreader/webclient/gen/models/rfid_doc_visual_extended_info_item.py +83 -0
  194. regula/documentreader/webclient/gen/models/rfid_error_codes.py +141 -0
  195. regula/documentreader/webclient/gen/models/rfid_graphics_info_result.py +90 -0
  196. regula/documentreader/webclient/gen/models/rfid_location.py +15 -84
  197. regula/documentreader/webclient/gen/models/rfid_origin.py +71 -192
  198. regula/documentreader/webclient/gen/models/rfid_password_type.py +34 -0
  199. regula/documentreader/webclient/gen/models/rfid_pki_extension.py +81 -0
  200. regula/documentreader/webclient/gen/models/rfid_raw_data.py +81 -0
  201. regula/documentreader/webclient/gen/models/rfid_security_object.py +96 -0
  202. regula/documentreader/webclient/gen/models/rfid_session_data.py +150 -0
  203. regula/documentreader/webclient/gen/models/rfid_signer_info_ex.py +133 -0
  204. regula/documentreader/webclient/gen/models/rfid_terminal.py +84 -0
  205. regula/documentreader/webclient/gen/models/rfid_terminal_type.py +32 -0
  206. regula/documentreader/webclient/gen/models/rfid_text_data_result.py +90 -0
  207. regula/documentreader/webclient/gen/models/rfid_type.py +30 -0
  208. regula/documentreader/webclient/gen/models/rfid_validity.py +88 -0
  209. regula/documentreader/webclient/gen/models/rfidpkd_resource_type.py +35 -0
  210. regula/documentreader/webclient/gen/models/scenario.py +33 -117
  211. regula/documentreader/webclient/gen/models/security_feature_item.py +102 -0
  212. regula/documentreader/webclient/gen/models/security_feature_result.py +99 -345
  213. regula/documentreader/webclient/gen/models/security_feature_type.py +68 -185
  214. regula/documentreader/webclient/gen/models/security_object_certificates.py +83 -0
  215. regula/documentreader/webclient/gen/models/source.py +18 -88
  216. regula/documentreader/webclient/gen/models/source_validity.py +65 -129
  217. regula/documentreader/webclient/gen/models/status.py +86 -264
  218. regula/documentreader/webclient/gen/models/status_item.py +83 -0
  219. regula/documentreader/webclient/gen/models/status_result.py +68 -231
  220. regula/documentreader/webclient/gen/models/string_item.py +135 -0
  221. regula/documentreader/webclient/gen/models/string_recognition_result.py +81 -108
  222. regula/documentreader/webclient/gen/models/symbol.py +79 -0
  223. regula/documentreader/webclient/gen/models/symbol_candidate.py +72 -143
  224. regula/documentreader/webclient/gen/models/symbol_estimation_item.py +115 -0
  225. regula/documentreader/webclient/gen/models/symbol_recognition_result.py +87 -135
  226. regula/documentreader/webclient/gen/models/t_doc_binary_info.py +93 -0
  227. regula/documentreader/webclient/gen/models/t_doc_binary_info_item.py +83 -0
  228. regula/documentreader/webclient/gen/models/t_original_rfid_graphics_info.py +87 -0
  229. regula/documentreader/webclient/gen/models/t_original_rfid_graphics_info_item.py +83 -0
  230. regula/documentreader/webclient/gen/models/text.py +92 -214
  231. regula/documentreader/webclient/gen/models/text_available_source.py +67 -157
  232. regula/documentreader/webclient/gen/models/text_data_result.py +68 -230
  233. regula/documentreader/webclient/gen/models/text_field.py +115 -357
  234. regula/documentreader/webclient/gen/models/text_field_type.py +661 -1368
  235. regula/documentreader/webclient/gen/models/text_field_value.py +105 -307
  236. regula/documentreader/webclient/gen/models/text_item.py +83 -0
  237. regula/documentreader/webclient/gen/models/text_post_processing.py +16 -86
  238. regula/documentreader/webclient/gen/models/text_result.py +68 -231
  239. regula/documentreader/webclient/gen/models/transaction_image.py +61 -97
  240. regula/documentreader/webclient/gen/models/transaction_info.py +84 -302
  241. regula/documentreader/webclient/gen/models/transaction_process_get_response.py +79 -183
  242. regula/documentreader/webclient/gen/models/transaction_process_request.py +108 -299
  243. regula/documentreader/webclient/gen/models/transaction_process_response.py +107 -0
  244. regula/documentreader/webclient/gen/models/transaction_process_response_item.py +79 -0
  245. regula/documentreader/webclient/gen/models/transaction_process_result.py +93 -0
  246. regula/documentreader/webclient/gen/models/trf_ft_bytes.py +90 -0
  247. regula/documentreader/webclient/gen/models/trf_ft_string.py +85 -0
  248. regula/documentreader/webclient/gen/models/verification_result.py +17 -88
  249. regula/documentreader/webclient/gen/models/verified_field_map.py +85 -273
  250. regula/documentreader/webclient/gen/models/visibility.py +17 -88
  251. regula/documentreader/webclient/gen/models/visual_extended_field_item.py +112 -0
  252. regula/documentreader/webclient/gen/py.typed +0 -0
  253. regula/documentreader/webclient/gen/rest.py +132 -174
  254. {regula_documentreader_webclient-8.1.349rc0.dist-info → regula_documentreader_webclient-8.1.351.dev0.dist-info}/METADATA +6 -4
  255. regula_documentreader_webclient-8.1.351.dev0.dist-info/RECORD +263 -0
  256. regula/documentreader/webclient/ext/models/raw_authenticity_result_item.py +0 -27
  257. regula/documentreader/webclient/ext/models/raw_result_item.py +0 -26
  258. regula/documentreader/webclient/gen/api/default_api.py +0 -160
  259. regula/documentreader/webclient/gen/models/authenticity_result_all_of.py +0 -120
  260. regula/documentreader/webclient/gen/models/byte_array_result_all_of.py +0 -122
  261. regula/documentreader/webclient/gen/models/chosen_document_type_result_all_of.py +0 -145
  262. regula/documentreader/webclient/gen/models/device_info2.py +0 -275
  263. regula/documentreader/webclient/gen/models/doc_bar_code_info_all_of.py +0 -119
  264. regula/documentreader/webclient/gen/models/document_image_result_all_of.py +0 -120
  265. regula/documentreader/webclient/gen/models/document_position_result_all_of.py +0 -119
  266. regula/documentreader/webclient/gen/models/document_types_candidates_result_all_of.py +0 -119
  267. regula/documentreader/webclient/gen/models/encrypted_rcl_result_all_of.py +0 -122
  268. regula/documentreader/webclient/gen/models/fiber_result_all_of.py +0 -343
  269. regula/documentreader/webclient/gen/models/graphics_result_all_of.py +0 -119
  270. regula/documentreader/webclient/gen/models/ident_result_all_of.py +0 -249
  271. regula/documentreader/webclient/gen/models/image_quality_result_all_of.py +0 -120
  272. regula/documentreader/webclient/gen/models/images_result_all_of.py +0 -120
  273. regula/documentreader/webclient/gen/models/in_data_rfid_session.py +0 -121
  274. regula/documentreader/webclient/gen/models/inline_response200.py +0 -197
  275. regula/documentreader/webclient/gen/models/inline_response2001.py +0 -333
  276. regula/documentreader/webclient/gen/models/lexical_analysis_result_all_of.py +0 -119
  277. regula/documentreader/webclient/gen/models/license_result_all_of.py +0 -122
  278. regula/documentreader/webclient/gen/models/ocr_security_text_result_all_of.py +0 -353
  279. regula/documentreader/webclient/gen/models/photo_ident_result_all_of.py +0 -327
  280. regula/documentreader/webclient/gen/models/security_feature_result_all_of.py +0 -249
  281. regula/documentreader/webclient/gen/models/status_result_all_of.py +0 -120
  282. regula/documentreader/webclient/gen/models/text_data_result_all_of.py +0 -119
  283. regula/documentreader/webclient/gen/models/text_result_all_of.py +0 -120
  284. regula/documentreader/webclient/gen/models/tfdsid_list.py +0 -372
  285. regula/documentreader/webclient/gen/models/transaction_images_field_value.py +0 -227
  286. regula/documentreader/webclient/gen/models/transaction_scenario_request.py +0 -119
  287. regula_documentreader_webclient-8.1.349rc0.dist-info/RECORD +0 -192
  288. {regula_documentreader_webclient-8.1.349rc0.dist-info → regula_documentreader_webclient-8.1.351.dev0.dist-info}/WHEEL +0 -0
  289. {regula_documentreader_webclient-8.1.349rc0.dist-info → regula_documentreader_webclient-8.1.351.dev0.dist-info}/top_level.txt +0 -0
@@ -1,225 +1,40 @@
1
1
  # coding: utf-8
2
+
2
3
  """
3
4
  Generated by: https://openapi-generator.tech
4
5
  """
5
- from __future__ import absolute_import
6
6
 
7
- import atexit
8
7
  import datetime
9
- from copy import copy
10
8
  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
14
13
  import os
15
14
  import re
15
+ import tempfile
16
16
 
17
- # python 2 and python 3 compatibility library
18
- import six
19
- from six.moves.urllib.parse import quote
17
+ from urllib.parse import quote
18
+ from typing import Tuple, Optional, List, Dict, Union
19
+ from pydantic import SecretStr
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
22
23
  import regula.documentreader.webclient.gen.models
23
24
  from regula.documentreader.webclient.gen import rest
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):
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:
223
38
  """Generic API client for OpenAPI client library builds.
224
39
 
225
40
  OpenAPI generic API client. This client handles the client-
@@ -227,28 +42,39 @@ class ApiClient(ModelSerDe, object):
227
42
  the methods and models for each application are generated from the OpenAPI
228
43
  templates.
229
44
 
230
- NOTE: This class is auto generated by OpenAPI Generator.
231
- Ref: https://openapi-generator.tech
232
- Do not edit the class manually.
233
-
234
45
  :param configuration: .Configuration object for this client
235
46
  :param header_name: a header to pass when making calls to the API.
236
47
  :param header_value: a header value to pass when making calls to
237
48
  the API.
238
49
  :param cookie: a cookie to include in the header when making calls
239
50
  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.
242
51
  """
243
52
 
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
+ }
244
65
  _pool = None
245
66
 
246
- def __init__(self, configuration=None, header_name=None, header_value=None,
247
- cookie=None, pool_threads=1):
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
248
75
  if configuration is None:
249
- configuration = Configuration.get_default_copy()
76
+ configuration = Configuration.get_default()
250
77
  self.configuration = configuration
251
- self.pool_threads = pool_threads
252
78
 
253
79
  self.rest_client = rest.RESTClientObject(configuration)
254
80
  self.default_headers = {}
@@ -263,25 +89,7 @@ class ApiClient(ModelSerDe, object):
263
89
  return self
264
90
 
265
91
  def __exit__(self, exc_type, exc_value, traceback):
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
92
+ pass
285
93
 
286
94
  @property
287
95
  def user_agent(self):
@@ -295,13 +103,69 @@ class ApiClient(ModelSerDe, object):
295
103
  def set_default_header(self, header_name, header_value):
296
104
  self.default_headers[header_name] = header_value
297
105
 
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):
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
+ """
305
169
 
306
170
  config = self.configuration
307
171
 
@@ -312,14 +176,17 @@ class ApiClient(ModelSerDe, object):
312
176
  header_params['Cookie'] = self.cookie
313
177
  if header_params:
314
178
  header_params = self.sanitize_for_serialization(header_params)
315
- header_params = dict(self.parameters_to_tuples(header_params,
316
- collection_formats))
179
+ header_params = dict(
180
+ self.parameters_to_tuples(header_params,collection_formats)
181
+ )
317
182
 
318
183
  # path parameters
319
184
  if path_params:
320
185
  path_params = self.sanitize_for_serialization(path_params)
321
- path_params = self.parameters_to_tuples(path_params,
322
- collection_formats)
186
+ path_params = self.parameters_to_tuples(
187
+ path_params,
188
+ collection_formats
189
+ )
323
190
  for k, v in path_params:
324
191
  # specified safe chars, encode everything
325
192
  resource_path = resource_path.replace(
@@ -327,219 +194,269 @@ class ApiClient(ModelSerDe, object):
327
194
  quote(str(v), safe=config.safe_chars_for_path_param)
328
195
  )
329
196
 
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
-
336
197
  # post parameters
337
198
  if post_params or files:
338
199
  post_params = post_params if post_params else []
339
200
  post_params = self.sanitize_for_serialization(post_params)
340
- post_params = self.parameters_to_tuples(post_params,
341
- collection_formats)
342
- post_params.extend(self.files_parameters(files))
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))
343
207
 
344
208
  # auth setting
345
209
  self.update_params_for_auth(
346
- header_params, query_params, auth_settings,
347
- request_auth=_request_auth)
210
+ header_params,
211
+ query_params,
212
+ auth_settings,
213
+ resource_path,
214
+ method,
215
+ body,
216
+ request_auth=_request_auth
217
+ )
348
218
 
349
219
  # body
350
220
  if body:
351
221
  body = self.sanitize_for_serialization(body)
352
222
 
353
223
  # request url
354
- if _host is None:
224
+ if _host is None or self.configuration.ignore_operation_servers:
355
225
  url = self.configuration.host + resource_path
356
226
  else:
357
227
  # use server/host defined in path or operation instead
358
228
  url = _host + resource_path
359
229
 
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
+
360
263
  try:
361
264
  # perform request and return response
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)
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
+
367
272
  except ApiException as e:
368
- e.body = e.body.decode('utf-8') if six.PY3 else e.body
369
273
  raise e
370
274
 
371
- self.last_response = response_data
372
-
373
- return_data = response_data
275
+ return response_data
374
276
 
375
- if not _preload_content:
376
- return return_data
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
+ """
377
287
 
378
- response_type = response_types_map.get(response_data.status, None)
288
+ msg = "RESTResponse.read() must be called before passing it to response_deserialize()"
289
+ assert response_data.data is not None, msg
379
290
 
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)
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)
387
295
 
388
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
+ )
389
319
 
390
- if response_type:
391
- return_data = self.deserialize(response_data, response_type)
392
- else:
393
- return_data = None
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.
339
+
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)
394
363
 
395
- if _return_http_data_only:
396
- return (return_data)
364
+ elif isinstance(obj, dict):
365
+ obj_dict = obj
397
366
  else:
398
- return (return_data, response_data.status,
399
- response_data.getheaders())
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__
376
+
377
+ return {
378
+ key: self.sanitize_for_serialization(val)
379
+ for key, val in obj_dict.items()
380
+ }
400
381
 
401
- def deserialize(self, response, response_type):
382
+ def deserialize(self, response_text: str, response_type: str, content_type: Optional[str]):
402
383
  """Deserializes response into an object.
403
384
 
404
385
  :param response: RESTResponse object to be deserialized.
405
386
  :param response_type: class literal for
406
387
  deserialized object, or string of class name.
388
+ :param content_type: content type of response.
407
389
 
408
390
  :return: deserialized object.
409
391
  """
410
- try:
411
- data = json.loads(response.data)
412
- except ValueError:
413
- data = response.data
414
- return self.deserialize_raw(data, response_type)
415
392
 
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.
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
+ )
424
411
 
425
- To make an async_req request, set the async_req parameter.
412
+ return self.__deserialize(data, response_type)
426
413
 
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.
414
+ def __deserialize(self, data, klass):
415
+ """Deserializes dict, list, str into an object.
416
+
417
+ :param data: dict, list or str.
418
+ :param klass: class literal, or string of class name.
419
+
420
+ :return: object.
462
421
  """
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)
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)
538
458
  else:
539
- raise ApiValueError(
540
- "http method must be `GET`, `HEAD`, `OPTIONS`,"
541
- " `POST`, `PATCH`, `PUT` or `DELETE`."
542
- )
459
+ return self.__deserialize_model(data, klass)
543
460
 
544
461
  def parameters_to_tuples(self, params, collection_formats):
545
462
  """Get parameters as list of tuples, formatting collections.
@@ -548,10 +465,10 @@ class ApiClient(ModelSerDe, object):
548
465
  :param dict collection_formats: Parameter collection formats
549
466
  :return: Parameters as list of tuples, collections formatted
550
467
  """
551
- new_params = []
468
+ new_params: List[Tuple[str, str]] = []
552
469
  if collection_formats is None:
553
470
  collection_formats = {}
554
- for k, v in six.iteritems(params) if isinstance(params, dict) else params: # noqa: E501
471
+ for k, v in params.items() if isinstance(params, dict) else params:
555
472
  if k in collection_formats:
556
473
  collection_format = collection_formats[k]
557
474
  if collection_format == 'multi':
@@ -571,45 +488,94 @@ class ApiClient(ModelSerDe, object):
571
488
  new_params.append((k, v))
572
489
  return new_params
573
490
 
574
- def files_parameters(self, files=None):
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
+ ):
575
534
  """Builds form parameters.
576
535
 
577
536
  :param files: File parameters.
578
537
  :return: Form parameters with files.
579
538
  """
580
539
  params = []
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
-
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
+ )
596
563
  return params
597
564
 
598
- def select_header_accept(self, accepts):
565
+ def select_header_accept(self, accepts: List[str]) -> Optional[str]:
599
566
  """Returns `Accept` based on an array of accepts provided.
600
567
 
601
568
  :param accepts: List of headers.
602
569
  :return: Accept (e.g. application/json).
603
570
  """
604
571
  if not accepts:
605
- return
572
+ return None
606
573
 
607
- accepts = [x.lower() for x in accepts]
574
+ for accept in accepts:
575
+ if re.search('json', accept, re.IGNORECASE):
576
+ return accept
608
577
 
609
- if 'application/json' in accepts:
610
- return 'application/json'
611
- else:
612
- return ', '.join(accepts)
578
+ return accepts[0]
613
579
 
614
580
  def select_header_content_type(self, content_types):
615
581
  """Returns `Content-Type` based on an array of content_types provided.
@@ -618,22 +584,33 @@ class ApiClient(ModelSerDe, object):
618
584
  :return: Content-Type (e.g. application/json).
619
585
  """
620
586
  if not content_types:
621
- return 'application/json'
622
-
623
- content_types = [x.lower() for x in content_types]
624
-
625
- if 'application/json' in content_types or '*/*' in content_types:
626
- return 'application/json'
627
- else:
628
- return content_types[0]
587
+ return None
629
588
 
630
- def update_params_for_auth(self, headers, querys, auth_settings,
631
- request_auth=None):
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:
632
605
  """Updates header and query params based on authentication setting.
633
606
 
634
607
  :param headers: Header parameters dict to be updated.
635
- :param querys: Query parameters tuple list to be updated.
608
+ :param queries: Query parameters tuple list to be updated.
636
609
  :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().
637
614
  :param request_auth: if set, the provided settings will
638
615
  override the token in the configuration.
639
616
  """
@@ -641,28 +618,172 @@ class ApiClient(ModelSerDe, object):
641
618
  return
642
619
 
643
620
  if request_auth:
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):
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:
653
651
  """Updates the request parameters based on a single auth_setting
654
652
 
655
653
  :param headers: Header parameters dict to be updated.
656
- :param querys: Query parameters tuple list 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().
657
659
  :param auth_setting: auth settings for the endpoint
658
660
  """
659
661
  if auth_setting['in'] == 'cookie':
660
662
  headers['Cookie'] = auth_setting['value']
661
663
  elif auth_setting['in'] == 'header':
662
- headers[auth_setting['key']] = auth_setting['value']
664
+ if auth_setting['type'] != 'http-signature':
665
+ headers[auth_setting['key']] = auth_setting['value']
663
666
  elif auth_setting['in'] == 'query':
664
- querys.append((auth_setting['key'], auth_setting['value']))
667
+ queries.append((auth_setting['key'], auth_setting['value']))
665
668
  else:
666
669
  raise ApiValueError(
667
670
  'Authentication token must be in `query` or `header`'
668
671
  )
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)