ul-api-utils 7.10.7__tar.gz → 7.11.1__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 (160) hide show
  1. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/PKG-INFO +1 -1
  2. ul-api-utils-7.11.1/example/redis_repository.py +22 -0
  3. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/routes/api_some.py +15 -0
  4. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/setup.py +1 -1
  5. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/socketio.py +0 -2
  6. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_three_specifier.py +56 -19
  7. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/memory_db/repository.py +7 -1
  8. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils.egg-info/PKG-INFO +1 -1
  9. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils.egg-info/SOURCES.txt +1 -0
  10. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/LICENSE +0 -0
  11. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/README.md +0 -0
  12. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/__init__.py +0 -0
  13. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/conf.py +0 -0
  14. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/main.py +0 -0
  15. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/models/__init__.py +0 -0
  16. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/permissions.py +0 -0
  17. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/pure_flask_example.py +0 -0
  18. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/rate_limit_load.py +0 -0
  19. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/routes/__init__.py +0 -0
  20. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/sockets/__init__.py +0 -0
  21. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/sockets/on_connect.py +0 -0
  22. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/sockets/on_disconnect.py +0 -0
  23. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/sockets/on_json.py +0 -0
  24. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/sockets/on_message.py +0 -0
  25. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/sockets/on_open.py +0 -0
  26. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/workers/__init__.py +0 -0
  27. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/example/workers/worker.py +0 -0
  28. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/setup.cfg +0 -0
  29. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/__init__.py +0 -0
  30. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/access/__init__.py +0 -0
  31. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/__init__.py +0 -0
  32. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_request.py +0 -0
  33. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_resource.py +0 -0
  34. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_resource_config.py +0 -0
  35. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_resource_error_handling.py +0 -0
  36. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_resource_fn_typing.py +0 -0
  37. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_resource_type.py +0 -0
  38. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_response.py +0 -0
  39. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_response_db.py +0 -0
  40. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/api_response_payload_alias.py +0 -0
  41. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/db_types.py +0 -0
  42. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/api_resource/signature_check.py +0 -0
  43. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/__init__.py +0 -0
  44. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/cmd_enc_keys.py +0 -0
  45. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/cmd_gen_api_user_token.py +0 -0
  46. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/cmd_gen_new_api_user.py +0 -0
  47. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/cmd_generate_api_docs.py +0 -0
  48. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/cmd_start.py +0 -0
  49. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/cmd_worker_start.py +0 -0
  50. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/start/__init__.py +0 -0
  51. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/start/gunicorn.conf.py +0 -0
  52. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/commands/start/wsgi.py +0 -0
  53. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/conf/ul-debugger-main.js +0 -0
  54. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/conf/ul-debugger-ui.js +0 -0
  55. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/conf.py +0 -0
  56. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/const.py +0 -0
  57. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/debug/__init__.py +0 -0
  58. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/debug/debugger.py +0 -0
  59. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/debug/malloc.py +0 -0
  60. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/debug/stat.py +0 -0
  61. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/encrypt/__init__.py +0 -0
  62. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/encrypt/encrypt_decrypt_abstract.py +0 -0
  63. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/encrypt/encrypt_decrypt_aes_xtea.py +0 -0
  64. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/errors.py +0 -0
  65. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/internal_api/__init__.py +0 -0
  66. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/internal_api/__tests__/__init__.py +0 -0
  67. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/internal_api/__tests__/internal_api.py +0 -0
  68. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/internal_api/__tests__/internal_api_content_type.py +0 -0
  69. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/internal_api/internal_api.py +0 -0
  70. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/internal_api/internal_api_check_context.py +0 -0
  71. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/internal_api/internal_api_error.py +0 -0
  72. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/internal_api/internal_api_response.py +0 -0
  73. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/main.py +0 -0
  74. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/__init__.py +0 -0
  75. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/__tests__/__init__.py +0 -0
  76. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/__tests__/test_api_sdk_jwt.py +0 -0
  77. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/api_sdk.py +0 -0
  78. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/api_sdk_config.py +0 -0
  79. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/api_sdk_jwt.py +0 -0
  80. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/intermediate_state.py +0 -0
  81. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/worker_context.py +0 -0
  82. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/worker_sdk.py +0 -0
  83. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/modules/worker_sdk_config.py +0 -0
  84. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/py.typed +0 -0
  85. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/__init__.py +0 -0
  86. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/caching.py +0 -0
  87. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/debugger_scripts.py +0 -0
  88. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/health_check/__init__.py +0 -0
  89. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/health_check/const.py +0 -0
  90. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/health_check/health_check.py +0 -0
  91. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/health_check/health_check_template.py +0 -0
  92. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/health_check/resource.py +0 -0
  93. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/not_implemented.py +0 -0
  94. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/permissions.py +0 -0
  95. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/rate_limitter.py +0 -0
  96. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/swagger.py +0 -0
  97. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/web_forms/__init__.py +0 -0
  98. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/web_forms/custom_fields/__init__.py +0 -0
  99. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/web_forms/custom_fields/custom_checkbox_select.py +0 -0
  100. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/web_forms/custom_widgets/__init__.py +0 -0
  101. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/web_forms/custom_widgets/custom_select_widget.py +0 -0
  102. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/web_forms/custom_widgets/custom_text_input_widget.py +0 -0
  103. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/resources/web_forms/uni_form.py +0 -0
  104. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/sentry.py +0 -0
  105. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/__init__.py +0 -0
  106. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/__tests__/__init__.py +0 -0
  107. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/__tests__/api_path_version.py +0 -0
  108. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/__tests__/unwrap_typing.py +0 -0
  109. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/api_encoding.py +0 -0
  110. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/api_format.py +0 -0
  111. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/api_method.py +0 -0
  112. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/api_pagination.py +0 -0
  113. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/api_path_version.py +0 -0
  114. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/api_request_info.py +0 -0
  115. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/avro.py +0 -0
  116. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/broker_topics_message_count.py +0 -0
  117. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/cached_per_request.py +0 -0
  118. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/colors.py +0 -0
  119. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/constants.py +0 -0
  120. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/decode_base64.py +0 -0
  121. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/deprecated.py +0 -0
  122. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flags.py +0 -0
  123. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/__init__.py +0 -0
  124. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/conf.py +0 -0
  125. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/exceptions.py +0 -0
  126. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/specifiers/__init__.py +0 -0
  127. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_models.py +0 -0
  128. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_specifier.py +0 -0
  129. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_version.py +0 -0
  130. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/utils/__init__.py +0 -0
  131. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/utils/input_type.py +0 -0
  132. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/utils/parameter_type.py +0 -0
  133. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/utils/replace_in_dict.py +0 -0
  134. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/utils/request_type.py +0 -0
  135. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/utils/schema_type.py +0 -0
  136. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/flask_swagger_generator/utils/security_type.py +0 -0
  137. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/imports.py +0 -0
  138. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/instance_checks.py +0 -0
  139. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/jinja/__init__.py +0 -0
  140. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/jinja/t_url_for.py +0 -0
  141. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/jinja/to_pretty_json.py +0 -0
  142. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/json_encoder.py +0 -0
  143. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/load_modules.py +0 -0
  144. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/memory_db/__init__.py +0 -0
  145. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/memory_db/__tests__/__init__.py +0 -0
  146. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/memory_db/errors.py +0 -0
  147. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/token_check.py +0 -0
  148. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/token_check_through_request.py +0 -0
  149. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/unwrap_typing.py +0 -0
  150. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/utils/uuid_converter.py +0 -0
  151. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/validators/__init__.py +0 -0
  152. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/validators/__tests__/__init__.py +0 -0
  153. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/validators/__tests__/test_custom_fields.py +0 -0
  154. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/validators/custom_fields.py +0 -0
  155. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/validators/validate_empty_object.py +0 -0
  156. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils/validators/validate_uuid.py +0 -0
  157. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils.egg-info/dependency_links.txt +0 -0
  158. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils.egg-info/entry_points.txt +0 -0
  159. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/ul_api_utils.egg-info/requires.txt +0 -0
  160. {ul-api-utils-7.10.7 → ul-api-utils-7.11.1}/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: 7.10.7
3
+ Version: 7.11.1
4
4
  Summary: Python api utils
5
5
  Author: Unic-lab
6
6
  Author-email:
@@ -0,0 +1,22 @@
1
+ from typing import Any
2
+
3
+ import redis
4
+ from pydantic import BaseModel, UUID4
5
+ from uuid import uuid4
6
+ from ul_api_utils.utils.memory_db.repository import BaseMemoryDbRepository
7
+
8
+ redis_client: Any = redis.StrictRedis.from_url("redis://172.19.0.2:6379")
9
+ redis_db = BaseMemoryDbRepository(redis_client=redis_client)
10
+
11
+
12
+ class Person(BaseModel):
13
+ id: UUID4
14
+ name: str = 'Slava'
15
+
16
+
17
+ slava = Person(id=uuid4())
18
+
19
+
20
+ redis_db['slava'] = 35
21
+ value = redis_db['slava', Person]
22
+ value2 = redis_db.get('slava', default=1)
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ from enum import IntEnum, Enum
2
3
  from time import sleep
3
4
  from datetime import datetime, timedelta
4
5
  from typing import List, Optional, Tuple
@@ -43,13 +44,20 @@ class RespObject(JsonApiResponsePayload):
43
44
  notes: str = ''
44
45
 
45
46
 
47
+ class Eeenum(IntEnum):
48
+ one = 1
49
+ two = 2
50
+
51
+
46
52
  class SomeBody(BaseModel):
47
53
  seconds: float
54
+ eenum: Optional[Eeenum]
48
55
 
49
56
 
50
57
  class Some2Query(ApiRequestQuery):
51
58
  sleep: float = 0.4
52
59
  some: QueryParamsSeparatedList[str] = '' # type: ignore
60
+ eenum: Optional[Eeenum]
53
61
 
54
62
 
55
63
  logger = logging.getLogger(__name__)
@@ -79,8 +87,15 @@ def some5(api_resource: ApiResource, body: SomeBody) -> JsonApiResponse[List[Res
79
87
  ], 2)
80
88
 
81
89
 
90
+ class Eennum(Enum):
91
+ one = 'one'
92
+ two = 'two'
93
+
94
+
82
95
  class Some7Query(ApiRequestQuery):
83
96
  need_redirect: int
97
+ eenum: Optional[Eeenum]
98
+ eennum: Optional[Eennum]
84
99
 
85
100
 
86
101
  @sdk.rest_api('POST', '/example-resource-simple-any', access=sdk.ACCESS_PUBLIC)
@@ -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='7.10.7',
12
+ version='7.11.1',
13
13
  description='Python api utils',
14
14
  author='Unic-lab',
15
15
  long_description=long_description,
@@ -48,9 +48,7 @@ def init_socket_io(config: SocketIOConfig | None) -> SocketIO | None:
48
48
  if config.app_type is SocketIOConfigType.EXTERNAL_PROCESS:
49
49
  socket_io = SocketIO(
50
50
  message_queue=config.message_queue,
51
- async_mode=SocketAsyncModesEnum.GEVENT.value,
52
51
  channel=config.channel,
53
- cors_allowed_origins=config.cors_allowed_origins,
54
52
  logger=config.logs_enabled,
55
53
  engineio_logger=config.engineio_logs_enabled,
56
54
  )
@@ -378,6 +378,7 @@ class SwaggerQueryParameter(SwaggerModel):
378
378
  name: Optional[str] = None,
379
379
  description: Optional[str] = None,
380
380
  required: bool = True,
381
+ enum: Optional[list] = None, # type: ignore
381
382
  ) -> None:
382
383
  super(SwaggerQueryParameter, self).__init__()
383
384
  self.input_type = InputType.from_string(input_type) # type: ignore
@@ -386,6 +387,7 @@ class SwaggerQueryParameter(SwaggerModel):
386
387
  self.name = name
387
388
  self.description = f'description: {description}' if description else ''
388
389
  self.required = required
390
+ self.enum = enum
389
391
 
390
392
  def perform_write(self, file) -> None: # type: ignore
391
393
  if self.input_type.value == InputType.UUID:
@@ -407,25 +409,48 @@ class SwaggerQueryParameter(SwaggerModel):
407
409
  ),
408
410
  )
409
411
  else:
410
- parameter_entry = inspect.cleandoc(
411
- """
412
- - in: query
413
- name: {name}
414
- schema:
415
- type: {input_type}
416
- {input_format}
417
- {default_value}
418
- {description}
419
- required: {required}
420
- """.format(
421
- name=self.name,
422
- required=self.required,
423
- description=self.description,
424
- input_type=self.input_type.value,
425
- input_format=self.input_format,
426
- default_value=self.default_value,
427
- ),
428
- )
412
+ if self.enum is not None:
413
+ parameter_entry = inspect.cleandoc(
414
+ """
415
+ - in: query
416
+ name: {name}
417
+ schema:
418
+ type: {input_type}
419
+ {input_format}
420
+ enum: {enum}
421
+ {default_value}
422
+ {description}
423
+ required: {required}
424
+ """.format(
425
+ name=self.name,
426
+ required=self.required,
427
+ description=self.description,
428
+ input_type=self.input_type.value,
429
+ input_format=self.input_format,
430
+ default_value=self.default_value,
431
+ enum=self.enum,
432
+ ),
433
+ )
434
+ else:
435
+ parameter_entry = inspect.cleandoc(
436
+ """
437
+ - in: query
438
+ name: {name}
439
+ schema:
440
+ type: {input_type}
441
+ {input_format}
442
+ {default_value}
443
+ {description}
444
+ required: {required}
445
+ """.format(
446
+ name=self.name,
447
+ required=self.required,
448
+ description=self.description,
449
+ input_type=self.input_type.value,
450
+ input_format=self.input_format,
451
+ default_value=self.default_value,
452
+ ),
453
+ )
429
454
 
430
455
  param = self.indent(parameter_entry, 3 * self.TAB)
431
456
  file.write(param)
@@ -484,6 +509,7 @@ class SwaggerPath(SwaggerModel):
484
509
  swagger_request_type.add_swagger_model(parameters)
485
510
  query_schema = query_model.schema()
486
511
  query_required_fields = set(query_schema.get('required')) if query_schema.get('required') is not None else set()
512
+ query_definitions = query_schema.get('definitions')
487
513
  for parameter_name, parameter_spec in query_schema.get('properties').items():
488
514
  if parameter_spec.get('type') is not None:
489
515
  parameter_models.add(SwaggerQueryParameter(
@@ -494,6 +520,17 @@ class SwaggerPath(SwaggerModel):
494
520
  description=parameter_spec.get('description'),
495
521
  required=parameter_name in query_required_fields,
496
522
  ))
523
+ elif parameter_spec.get('$ref') is not None:
524
+ definition = query_definitions.get(parameter_spec.get('$ref', '').split('/')[-1], {})
525
+ parameter_models.add(SwaggerQueryParameter(
526
+ input_type=definition.get('type', 'string'),
527
+ input_format=definition.get('format'),
528
+ default_value=definition.get('default'),
529
+ name=parameter_name,
530
+ description=definition.get('description'),
531
+ enum=definition.get('enum'),
532
+ required=parameter_name in query_required_fields,
533
+ ))
497
534
  if isinstance(parameters, SwaggerModel):
498
535
  parameters.add_swagger_models(parameter_models)
499
536
  elif isinstance(parameters, list):
@@ -1,4 +1,6 @@
1
1
  import decimal
2
+ from datetime import timedelta
3
+
2
4
  import redis
3
5
  import ormsgpack
4
6
  import collections
@@ -13,6 +15,7 @@ CompositeKeyT = tuple[str, Type[BaseModel]]
13
15
  AnyKeyT = str | CompositeKeyT
14
16
  AnyT = Any
15
17
  RedisClientT = redis.StrictRedis | redis.Redis
18
+ ExpiryT = int | timedelta | None
16
19
 
17
20
 
18
21
  class BaseMemoryDbRepository(collections.abc.MutableMapping[str, AnyT]):
@@ -32,6 +35,10 @@ class BaseMemoryDbRepository(collections.abc.MutableMapping[str, AnyT]):
32
35
  except KeyError:
33
36
  return default
34
37
 
38
+ def set(self, __key: str, value: AnyT, *, expires: ExpiryT = None) -> None:
39
+ packed_value = ormsgpack.packb(value, option=ormsgpack.OPT_SERIALIZE_PYDANTIC, default=self._default_serializer)
40
+ self._db.set(__key, packed_value, ex=expires)
41
+
35
42
  @overload
36
43
  def __getitem__(self, key: str) -> AnyT:
37
44
  ...
@@ -48,7 +55,6 @@ class BaseMemoryDbRepository(collections.abc.MutableMapping[str, AnyT]):
48
55
  return ormsgpack.unpackb(self._db[single_key])
49
56
 
50
57
  composite_key = cast(CompositeKeyT, key)
51
-
52
58
  if len(composite_key) > self._composite_key_max_length:
53
59
  raise CompositeKeyError(f"Can't retrieve an item with {key=}. Composite key should have only two arguments.")
54
60
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ul-api-utils
3
- Version: 7.10.7
3
+ Version: 7.11.1
4
4
  Summary: Python api utils
5
5
  Author: Unic-lab
6
6
  Author-email:
@@ -7,6 +7,7 @@ example/main.py
7
7
  example/permissions.py
8
8
  example/pure_flask_example.py
9
9
  example/rate_limit_load.py
10
+ example/redis_repository.py
10
11
  example/models/__init__.py
11
12
  example/routes/__init__.py
12
13
  example/routes/api_some.py
File without changes
File without changes
File without changes