ul-api-utils 9.0.0a2__tar.gz → 9.0.0a4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ul-api-utils might be problematic. Click here for more details.

Files changed (161) hide show
  1. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/PKG-INFO +1 -1
  2. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/setup.py +2 -2
  3. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_request.py +8 -5
  4. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource.py +0 -6
  5. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_response.py +0 -6
  6. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/api_sdk.py +2 -2
  7. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/json_encoder.py +20 -11
  8. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/PKG-INFO +1 -1
  9. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/LICENSE +0 -0
  10. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/README.md +0 -0
  11. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/__init__.py +0 -0
  12. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/conf.py +0 -0
  13. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/main.py +0 -0
  14. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/models/__init__.py +0 -0
  15. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/permissions.py +0 -0
  16. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/pure_flask_example.py +0 -0
  17. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/rate_limit_load.py +0 -0
  18. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/redis_repository.py +0 -0
  19. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/routes/__init__.py +0 -0
  20. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/routes/api_some.py +0 -0
  21. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/__init__.py +0 -0
  22. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_connect.py +0 -0
  23. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_disconnect.py +0 -0
  24. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_json.py +0 -0
  25. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_message.py +0 -0
  26. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_open.py +0 -0
  27. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/workers/__init__.py +0 -0
  28. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/workers/worker.py +0 -0
  29. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/setup.cfg +0 -0
  30. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/__init__.py +0 -0
  31. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/access/__init__.py +0 -0
  32. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/__init__.py +0 -0
  33. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_config.py +0 -0
  34. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_error_handling.py +0 -0
  35. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_fn_typing.py +0 -0
  36. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_type.py +0 -0
  37. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_response_db.py +0 -0
  38. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_response_payload_alias.py +0 -0
  39. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/db_types.py +0 -0
  40. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/signature_check.py +0 -0
  41. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/__init__.py +0 -0
  42. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_enc_keys.py +0 -0
  43. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_gen_api_user_token.py +0 -0
  44. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_gen_new_api_user.py +0 -0
  45. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_generate_api_docs.py +0 -0
  46. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_start.py +0 -0
  47. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_worker_start.py +0 -0
  48. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/__init__.py +0 -0
  49. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/gunicorn.conf.local.py +0 -0
  50. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/gunicorn.conf.py +0 -0
  51. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/wsgi.py +0 -0
  52. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/conf/ul-debugger-main.js +0 -0
  53. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/conf/ul-debugger-ui.js +0 -0
  54. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/conf.py +0 -0
  55. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/const.py +0 -0
  56. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/debug/__init__.py +0 -0
  57. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/debug/debugger.py +0 -0
  58. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/debug/malloc.py +0 -0
  59. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/debug/stat.py +0 -0
  60. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/encrypt/__init__.py +0 -0
  61. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/encrypt/encrypt_decrypt_abstract.py +0 -0
  62. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/encrypt/encrypt_decrypt_aes_xtea.py +0 -0
  63. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/errors.py +0 -0
  64. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__init__.py +0 -0
  65. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__tests__/__init__.py +0 -0
  66. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__tests__/internal_api.py +0 -0
  67. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__tests__/internal_api_content_type.py +0 -0
  68. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api.py +0 -0
  69. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api_check_context.py +0 -0
  70. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api_error.py +0 -0
  71. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api_response.py +0 -0
  72. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/main.py +0 -0
  73. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/__init__.py +0 -0
  74. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/__tests__/__init__.py +0 -0
  75. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/__tests__/test_api_sdk_jwt.py +0 -0
  76. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/api_sdk_config.py +0 -0
  77. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/api_sdk_jwt.py +0 -0
  78. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/intermediate_state.py +0 -0
  79. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/worker_context.py +0 -0
  80. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/worker_sdk.py +0 -0
  81. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/worker_sdk_config.py +0 -0
  82. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/py.typed +0 -0
  83. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/__init__.py +0 -0
  84. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/caching.py +0 -0
  85. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/debugger_scripts.py +0 -0
  86. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/__init__.py +0 -0
  87. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/const.py +0 -0
  88. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/health_check.py +0 -0
  89. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/health_check_template.py +0 -0
  90. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/resource.py +0 -0
  91. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/not_implemented.py +0 -0
  92. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/permissions.py +0 -0
  93. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/rate_limitter.py +0 -0
  94. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/socketio.py +0 -0
  95. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/swagger.py +0 -0
  96. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/__init__.py +0 -0
  97. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/custom_fields/__init__.py +0 -0
  98. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/custom_fields/custom_checkbox_select.py +0 -0
  99. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/custom_widgets/__init__.py +0 -0
  100. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/custom_widgets/custom_select_widget.py +0 -0
  101. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/custom_widgets/custom_text_input_widget.py +0 -0
  102. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/uni_form.py +0 -0
  103. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/sentry.py +0 -0
  104. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/__init__.py +0 -0
  105. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/__tests__/__init__.py +0 -0
  106. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/__tests__/api_path_version.py +0 -0
  107. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/__tests__/unwrap_typing.py +0 -0
  108. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_encoding.py +0 -0
  109. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_format.py +0 -0
  110. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_method.py +0 -0
  111. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_pagination.py +0 -0
  112. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_path_version.py +0 -0
  113. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_request_info.py +0 -0
  114. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/avro.py +0 -0
  115. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/broker_topics_message_count.py +0 -0
  116. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/cached_per_request.py +0 -0
  117. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/colors.py +0 -0
  118. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/constants.py +0 -0
  119. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/decode_base64.py +0 -0
  120. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/deprecated.py +0 -0
  121. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flags.py +0 -0
  122. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/__init__.py +0 -0
  123. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/conf.py +0 -0
  124. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/exceptions.py +0 -0
  125. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/specifiers/__init__.py +0 -0
  126. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_models.py +0 -0
  127. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_specifier.py +0 -0
  128. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_three_specifier.py +0 -0
  129. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_version.py +0 -0
  130. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/utils/__init__.py +0 -0
  131. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/utils/input_type.py +0 -0
  132. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/utils/parameter_type.py +0 -0
  133. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/utils/replace_in_dict.py +0 -0
  134. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/utils/request_type.py +0 -0
  135. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/utils/schema_type.py +0 -0
  136. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/utils/security_type.py +0 -0
  137. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/imports.py +0 -0
  138. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/instance_checks.py +0 -0
  139. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/jinja/__init__.py +0 -0
  140. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/jinja/t_url_for.py +0 -0
  141. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/jinja/to_pretty_json.py +0 -0
  142. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/load_modules.py +0 -0
  143. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/__init__.py +0 -0
  144. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/__tests__/__init__.py +0 -0
  145. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/errors.py +0 -0
  146. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/repository.py +0 -0
  147. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/token_check.py +0 -0
  148. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/token_check_through_request.py +0 -0
  149. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/unwrap_typing.py +0 -0
  150. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/uuid_converter.py +0 -0
  151. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/__init__.py +0 -0
  152. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/__tests__/__init__.py +0 -0
  153. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/__tests__/test_custom_fields.py +0 -0
  154. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/custom_fields.py +0 -0
  155. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/validate_empty_object.py +0 -0
  156. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/validate_uuid.py +0 -0
  157. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/SOURCES.txt +0 -0
  158. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/dependency_links.txt +0 -0
  159. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/entry_points.txt +0 -0
  160. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/requires.txt +0 -0
  161. {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ul-api-utils
3
- Version: 9.0.0a2
3
+ Version: 9.0.0a4
4
4
  Summary: Python api utils
5
5
  Author: Unic-lab
6
6
  Author-email:
@@ -9,7 +9,7 @@ with open(path.join(HERE, 'README.md'), encoding='utf-8') as f:
9
9
 
10
10
  setup(
11
11
  name='ul-api-utils',
12
- version='9.0.0a2',
12
+ version='9.0.0a4',
13
13
  description='Python api utils',
14
14
  author='Unic-lab',
15
15
  long_description=long_description,
@@ -87,7 +87,7 @@ setup(
87
87
  # "opentelemetry-instrumentation-requests==0.27b0",
88
88
  # "opentelemetry-exporter-jaeger==1.8.0",
89
89
  # "opentelemetry-instrumentation-sqlalchemy==0.27b0",
90
- # "ul-db-utils==5.0.0a3", # ACTUALIZE, BUT DO NOT UNCOMMENT PLEASE
90
+ # "ul-db-utils==5.0.0a5", # ACTUALIZE, BUT DO NOT UNCOMMENT PLEASE
91
91
  # "ul-py-tool==2.1.3", # ACTUALIZE, BUT DO NOT UNCOMMENT PLEASE
92
92
  ],
93
93
  )
@@ -1,6 +1,7 @@
1
1
  import json
2
2
  from typing import NamedTuple, Iterable, Any, List, Tuple, Dict, Optional
3
3
 
4
+ from flask_sqlalchemy.query import Query
4
5
  from pydantic import model_validator, BaseModel
5
6
 
6
7
  from ul_api_utils.errors import SimpleValidateApiError
@@ -14,11 +15,7 @@ class ApiRequestQueryPagination(NamedTuple):
14
15
  offset: int
15
16
  per_page: int
16
17
 
17
- def mk_sqlalchemy_pagination(self, items: Iterable[Any], total: int, query: Any = None) -> 'ApiPagination':
18
- if has_already_imported_db():
19
- from flask_sqlalchemy import Pagination
20
- return Pagination(total=total, query=query, per_page=self.per_page, page=self.page, items=items) # type: ignore
21
- assert query is None
18
+ def mk_item_pagination(self, items: Iterable[Any], total: int) -> ApiPagination:
22
19
  return ApiPagination(
23
20
  total=total,
24
21
  per_page=self.per_page,
@@ -26,6 +23,12 @@ class ApiRequestQueryPagination(NamedTuple):
26
23
  items=items,
27
24
  )
28
25
 
26
+ # TODO: Not sure that is worked. Check it if will be found usages
27
+ def mk_sqlalchemy_pagination(self, items: Iterable[Any], total: int, query: Query = None) -> 'ApiPagination':
28
+ if has_already_imported_db() and query:
29
+ return query.paginate(total=total, query=query, per_page=self.per_page, page=self.page, items=items) # type: ignore
30
+ return self.mk_item_pagination(items, total)
31
+
29
32
 
30
33
  class ApiRequestQuerySortBy(NamedTuple):
31
34
  params: List[Tuple[str, str]]
@@ -293,13 +293,10 @@ class ApiResource:
293
293
  mimetype: Optional[str], # it will be auto-detected by extension if mimetype==None
294
294
  as_attachment: bool = False,
295
295
  download_name: Optional[str] = None,
296
- attachment_filename: Optional[str] = None,
297
296
  conditional: bool = True,
298
297
  etag: Union[bool, str] = True,
299
- add_etags: Optional[bool] = None,
300
298
  last_modified: Optional[Union[datetime, int, float]] = None,
301
299
  max_age: Optional[Union[int, Callable[[Optional[str]], Optional[int]]]] = None,
302
- cache_timeout: Optional[int] = None,
303
300
  ) -> FileApiResponse:
304
301
  ApiResourceType.FILE.validate(self._type)
305
302
  if isinstance(path_or_file, str) and not os.path.exists(path_or_file):
@@ -311,13 +308,10 @@ class ApiResource:
311
308
  mimetype=mimetype,
312
309
  as_attachment=as_attachment,
313
310
  download_name=download_name,
314
- attachment_filename=attachment_filename,
315
311
  conditional=conditional,
316
312
  etag=etag,
317
- add_etags=add_etags,
318
313
  last_modified=last_modified,
319
314
  max_age=max_age,
320
- cache_timeout=cache_timeout,
321
315
  )
322
316
 
323
317
  def response_created_ok(self, payload: 'TPayloadInputUnion', total_count: Optional[int] = None) -> JsonApiResponse[Any]:
@@ -93,13 +93,10 @@ class FileApiResponse(ApiResponse):
93
93
  mimetype: Optional[str] = None # it will be auto-detected by extension if mimetype==None
94
94
  as_attachment: bool = False
95
95
  download_name: Optional[str] = None
96
- attachment_filename: Optional[str] = None
97
96
  conditional: bool = True
98
97
  etag: Union[bool, str] = True
99
- add_etags: Optional[bool] = None
100
98
  last_modified: Optional[Union[datetime, int, float]] = None
101
99
  max_age: Optional[Union[int, Callable[[Optional[str]], Optional[int]]]] = None
102
- cache_timeout: Optional[int] = None
103
100
 
104
101
  @classmethod
105
102
  def _internal_use__mk_schema(cls, inner_type: Optional[Type[BaseModel]]) -> Type[BaseModel]:
@@ -113,13 +110,10 @@ class FileApiResponse(ApiResponse):
113
110
  mimetype=self.mimetype,
114
111
  as_attachment=self.as_attachment,
115
112
  download_name=self.download_name,
116
- attachment_filename=self.attachment_filename,
117
113
  conditional=self.conditional,
118
114
  etag=self.etag,
119
- add_etags=self.add_etags,
120
115
  last_modified=self.last_modified,
121
116
  max_age=self.max_age,
122
- cache_timeout=self.cache_timeout,
123
117
  )
124
118
 
125
119
  resp.headers.update(self.headers)
@@ -45,7 +45,7 @@ from ul_api_utils.utils.cached_per_request import cached_per_request
45
45
  from ul_api_utils.utils.constants import TKwargs
46
46
  from ul_api_utils.utils.jinja.t_url_for import t_url_for
47
47
  from ul_api_utils.utils.jinja.to_pretty_json import to_pretty_json
48
- from ul_api_utils.utils.json_encoder import CustomJSONEncoder, SocketIOJsonWrapper
48
+ from ul_api_utils.utils.json_encoder import CustomJSONProvider, SocketIOJsonWrapper
49
49
  from ul_api_utils.utils.load_modules import load_modules_by_template
50
50
  from ul_api_utils.utils.uuid_converter import UUID4Converter
51
51
 
@@ -225,7 +225,7 @@ class ApiSdk:
225
225
  )
226
226
  self._flask_app_cache = flask_app
227
227
 
228
- flask_app.json_encoder = CustomJSONEncoder # type: ignore
228
+ flask_app.json = CustomJSONProvider(flask_app) # type: ignore
229
229
 
230
230
  flask_app.url_map.converters['uuid'] = UUID4Converter
231
231
 
@@ -7,9 +7,18 @@ from enum import Enum
7
7
  from json import JSONEncoder
8
8
  from typing import Dict, Any, Union, List, Optional, TYPE_CHECKING
9
9
  from uuid import UUID
10
+
11
+ from flask.json.provider import DefaultJSONProvider
10
12
  from frozendict import frozendict
11
13
  from pydantic import BaseModel
12
14
 
15
+ from flask_sqlalchemy.query import Query
16
+ from flask_sqlalchemy.model import Model, DefaultMeta
17
+
18
+ from sqlalchemy.orm import Query, registry
19
+
20
+ from ul_db_utils.modules.postgres_modules.db import DbModel
21
+ from ul_db_utils.model.base_model import BaseModel as DbBaseModel
13
22
  from ul_api_utils.utils.imports import has_already_imported_db
14
23
 
15
24
  if TYPE_CHECKING:
@@ -26,11 +35,6 @@ def to_dict(obj: 'TDictable') -> Optional[Dict[str, Any]]:
26
35
  if isinstance(obj, BaseModel):
27
36
  return obj.model_dump()
28
37
  if has_already_imported_db():
29
- from ul_db_utils.modules.postgres_modules.db import DbModel
30
- from flask_sqlalchemy import BaseQuery, Model
31
- from sqlalchemy.orm import registry
32
- from ul_db_utils.model.base_model import BaseModel as DbBaseModel
33
-
34
38
  if isinstance(obj, DbBaseModel) or isinstance(obj, DbModel):
35
39
  return obj.to_dict()
36
40
  if isinstance(obj, Model):
@@ -38,7 +42,7 @@ def to_dict(obj: 'TDictable') -> Optional[Dict[str, Any]]:
38
42
  for field in (x for x in dir(obj) if not x.startswith('_') and x != 'metadata'):
39
43
  val = obj.__getattribute__(field)
40
44
  # is this field method defination, or an SQLalchemy object
41
- if not hasattr(val, "__call__") and not isinstance(val, BaseQuery): # noqa: B004
45
+ if not hasattr(val, "__call__") and not isinstance(val, Query): # noqa: B004
42
46
  if isinstance(val, datetime):
43
47
  val = str(val.isoformat())
44
48
  if isinstance(val, UUID):
@@ -76,10 +80,6 @@ class CustomJSONEncoder(JSONEncoder):
76
80
  return str(obj.__html__())
77
81
 
78
82
  if has_already_imported_db():
79
- from ul_db_utils.model.base_model import BaseModel as DbBaseModel
80
- from flask_sqlalchemy import BaseQuery, Model, DefaultMeta
81
- from sqlalchemy.orm import Query, registry
82
-
83
83
  if isinstance(obj, DbBaseModel):
84
84
  return obj.to_dict()
85
85
  if isinstance(obj, Query) or isinstance(obj, DefaultMeta):
@@ -89,7 +89,7 @@ class CustomJSONEncoder(JSONEncoder):
89
89
  for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']:
90
90
  val = obj.__getattribute__(field)
91
91
  # is this field method defination, or an SQLalchemy object
92
- if not hasattr(val, "__call__") and not isinstance(val, BaseQuery): # noqa: B004
92
+ if not hasattr(val, "__call__") and not isinstance(val, Query): # noqa: B004
93
93
  if isinstance(val, datetime):
94
94
  val = str(val.isoformat())
95
95
  if isinstance(val, UUID):
@@ -113,3 +113,12 @@ class SocketIOJsonWrapper:
113
113
  @staticmethod
114
114
  def loads(*args: Any, **kwargs: Any) -> Any:
115
115
  return json.loads(*args, **kwargs)
116
+
117
+
118
+ class CustomJSONProvider(DefaultJSONProvider):
119
+ def __init__(self, app):
120
+ super().__init__(app)
121
+ self.encoder = CustomJSONEncoder()
122
+
123
+ def default(self, obj) -> Union[str, Dict[str, Any], List[Any], None]:
124
+ return self.encoder.default(obj)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ul-api-utils
3
- Version: 9.0.0a2
3
+ Version: 9.0.0a4
4
4
  Summary: Python api utils
5
5
  Author: Unic-lab
6
6
  Author-email:
File without changes
File without changes
File without changes