ul-api-utils 7.10.3__tar.gz → 7.10.5__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.
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/PKG-INFO +1 -1
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/conf.py +5 -7
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/main.py +2 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/sockets/on_message.py +6 -2
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/workers/worker.py +9 -1
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/setup.py +4 -4
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/cmd_start.py +12 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/api_sdk.py +9 -9
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/api_sdk_config.py +4 -39
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/worker_sdk.py +10 -1
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/worker_sdk_config.py +3 -0
- ul-api-utils-7.10.5/ul_api_utils/resources/socketio.py +57 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils.egg-info/PKG-INFO +1 -1
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils.egg-info/requires.txt +2 -2
- ul-api-utils-7.10.3/ul_api_utils/resources/socketio.py +0 -20
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/LICENSE +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/README.md +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/models/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/permissions.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/pure_flask_example.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/rate_limit_load.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/routes/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/routes/api_some.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/sockets/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/sockets/on_connect.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/sockets/on_disconnect.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/sockets/on_json.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/sockets/on_open.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/example/workers/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/setup.cfg +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/access/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_request.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_resource.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_resource_config.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_resource_error_handling.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_resource_fn_typing.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_resource_type.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_response.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_response_db.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_response_payload_alias.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/db_types.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/signature_check.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/cmd_enc_keys.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/cmd_gen_api_user_token.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/cmd_gen_new_api_user.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/cmd_generate_api_docs.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/cmd_worker_start.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/start/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/start/gunicorn.conf.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/commands/start/wsgi.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/conf/ul-debugger-main.js +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/conf/ul-debugger-ui.js +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/conf.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/const.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/debug/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/debug/debugger.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/debug/malloc.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/debug/stat.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/encrypt/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/encrypt/encrypt_decrypt_abstract.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/encrypt/encrypt_decrypt_aes_xtea.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/errors.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/__tests__/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/__tests__/internal_api.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/__tests__/internal_api_content_type.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/internal_api.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/internal_api_check_context.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/internal_api_error.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/internal_api_response.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/main.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/__tests__/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/__tests__/test_api_sdk_jwt.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/api_sdk_jwt.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/intermediate_state.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/worker_context.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/py.typed +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/caching.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/debugger_scripts.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/health_check/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/health_check/const.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/health_check/health_check.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/health_check/health_check_template.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/health_check/resource.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/not_implemented.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/permissions.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/rate_limitter.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/swagger.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/web_forms/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/web_forms/custom_fields/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/web_forms/custom_fields/custom_checkbox_select.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/web_forms/custom_widgets/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/web_forms/custom_widgets/custom_select_widget.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/web_forms/custom_widgets/custom_text_input_widget.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/web_forms/uni_form.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/sentry.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/__tests__/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/__tests__/api_path_version.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/__tests__/unwrap_typing.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/api_encoding.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/api_format.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/api_method.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/api_pagination.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/api_path_version.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/api_request_info.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/avro.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/broker_topics_message_count.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/cached_per_request.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/colors.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/constants.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/decode_base64.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/deprecated.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flags.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/conf.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/exceptions.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/specifiers/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_models.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_specifier.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_three_specifier.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/specifiers/swagger_version.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/utils/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/utils/input_type.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/utils/parameter_type.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/utils/replace_in_dict.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/utils/request_type.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/utils/schema_type.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/utils/security_type.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/imports.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/jinja/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/jinja/t_url_for.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/jinja/to_pretty_json.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/json_encoder.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/load_modules.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/token_check.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/token_check_through_request.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/unwrap_typing.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/uuid_converter.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/validators/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/validators/__tests__/__init__.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/validators/__tests__/test_custom_fields.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/validators/custom_fields.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/validators/validate_empty_object.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/validators/validate_uuid.py +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils.egg-info/SOURCES.txt +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils.egg-info/dependency_links.txt +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils.egg-info/entry_points.txt +0 -0
- {ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils.egg-info/top_level.txt +0 -0
|
@@ -4,20 +4,18 @@ from ul_db_utils.modules.postgres_modules.db import DbConfig
|
|
|
4
4
|
|
|
5
5
|
from ul_api_utils.modules.api_sdk import ApiSdk
|
|
6
6
|
from ul_api_utils.modules.api_sdk_config import ApiSdkConfig, ApiSdkIdentifyTypeEnum, \
|
|
7
|
-
ApiSdkFlaskDebuggingPluginsEnabled
|
|
7
|
+
ApiSdkFlaskDebuggingPluginsEnabled
|
|
8
8
|
from example.permissions import permissions
|
|
9
|
+
from ul_api_utils.resources.socketio import SocketIOConfigType, SocketIOConfig
|
|
10
|
+
|
|
9
11
|
|
|
10
12
|
sdk = ApiSdk(ApiSdkConfig(
|
|
11
|
-
|
|
13
|
+
socket_config=SocketIOConfig(
|
|
14
|
+
app_type=SocketIOConfigType.EXTERNAL_PROCESS,
|
|
12
15
|
message_queue='redis://localhost:16379',
|
|
13
16
|
logs_enabled=True,
|
|
14
17
|
engineio_logs_enabled=False,
|
|
15
18
|
),
|
|
16
|
-
# client_socketio_config=SocketIOConfig(
|
|
17
|
-
# message_queue='redis://localhost:16379',
|
|
18
|
-
# logs_enabled=True,
|
|
19
|
-
# engineio_logs_enabled=False,
|
|
20
|
-
# ),
|
|
21
19
|
service_name='example_service',
|
|
22
20
|
permissions=permissions,
|
|
23
21
|
cache_storage_uri='redis://localhost:16379',
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import logging
|
|
1
2
|
from typing import Any
|
|
2
3
|
|
|
3
4
|
from example.conf import sdk
|
|
4
5
|
|
|
5
6
|
|
|
7
|
+
logger = logging.getLogger(__name__)
|
|
8
|
+
|
|
9
|
+
|
|
6
10
|
@sdk.socket.on('message')
|
|
7
11
|
def handle_message(data: Any) -> None:
|
|
8
|
-
|
|
9
|
-
|
|
12
|
+
logger.info('received message: ')
|
|
13
|
+
logger.info(data)
|
|
@@ -5,8 +5,16 @@ from unipipeline.worker.uni_worker_consumer_message import UniWorkerConsumerMess
|
|
|
5
5
|
from ul_api_utils.modules.worker_context import WorkerContext
|
|
6
6
|
from ul_api_utils.modules.worker_sdk import WorkerSdk
|
|
7
7
|
from ul_api_utils.modules.worker_sdk_config import WorkerSdkConfig
|
|
8
|
+
from ul_api_utils.resources.socketio import SocketIOConfig, SocketIOConfigType
|
|
8
9
|
|
|
9
|
-
initialized_worker = WorkerSdk(WorkerSdkConfig(
|
|
10
|
+
initialized_worker = WorkerSdk(WorkerSdkConfig(
|
|
11
|
+
socket_config=SocketIOConfig(
|
|
12
|
+
app_type=SocketIOConfigType.EXTERNAL_PROCESS,
|
|
13
|
+
message_queue='redis://localhost:16379',
|
|
14
|
+
logs_enabled=True,
|
|
15
|
+
engineio_logs_enabled=False,
|
|
16
|
+
),
|
|
17
|
+
))
|
|
10
18
|
|
|
11
19
|
|
|
12
20
|
class Msg(UniMessage):
|
|
@@ -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.
|
|
12
|
+
version='7.10.5',
|
|
13
13
|
description='Python api utils',
|
|
14
14
|
author='Unic-lab',
|
|
15
15
|
long_description=long_description,
|
|
@@ -67,12 +67,12 @@ setup(
|
|
|
67
67
|
"requests==2.28.1",
|
|
68
68
|
"cryptography==38.0.1",
|
|
69
69
|
"colored==1.4.3",
|
|
70
|
-
"
|
|
70
|
+
"flask-socketio==5.3.6",
|
|
71
71
|
"ormsgpack==1.4.1",
|
|
72
72
|
"msgpack==1.0.4",
|
|
73
73
|
"msgpack-types==0.2.0",
|
|
74
74
|
"fastavro==1.7.0",
|
|
75
|
-
"
|
|
75
|
+
"factory-boy==3.3.0",
|
|
76
76
|
"sentry-sdk[flask]==1.9.2",
|
|
77
77
|
"faker==24.8.0",
|
|
78
78
|
"types-requests==2.28.8",
|
|
@@ -89,7 +89,7 @@ setup(
|
|
|
89
89
|
# "opentelemetry-instrumentation-requests==0.27b0",
|
|
90
90
|
# "opentelemetry-exporter-jaeger==1.8.0",
|
|
91
91
|
# "opentelemetry-instrumentation-sqlalchemy==0.27b0",
|
|
92
|
-
# "ul-db-utils==3.2.
|
|
92
|
+
# "ul-db-utils==3.2.2", # ACTUALIZE, BUT DO NOT UNCOMMENT PLEASE
|
|
93
93
|
# "ul-py-tool==1.15.42", # ACTUALIZE, BUT DO NOT UNCOMMENT PLEASE
|
|
94
94
|
],
|
|
95
95
|
)
|
|
@@ -4,6 +4,7 @@ import re
|
|
|
4
4
|
import subprocess
|
|
5
5
|
import sys
|
|
6
6
|
from datetime import datetime
|
|
7
|
+
from typing import Optional
|
|
7
8
|
|
|
8
9
|
from ul_py_tool.commands.cmd import Cmd
|
|
9
10
|
from ul_py_tool.utils.arg_str2bool import arg_str2bool
|
|
@@ -26,6 +27,8 @@ class CmdStart(Cmd):
|
|
|
26
27
|
max_requests: int
|
|
27
28
|
max_requests_jitter: int
|
|
28
29
|
worker_class: str
|
|
30
|
+
statsd_endpoint: Optional[str]
|
|
31
|
+
statsd_prefix: Optional[str]
|
|
29
32
|
|
|
30
33
|
@property
|
|
31
34
|
def app_rel_dir(self) -> str:
|
|
@@ -51,6 +54,8 @@ class CmdStart(Cmd):
|
|
|
51
54
|
parser.add_argument('--max-requests', dest='max_requests', type=int, default=1000, required=False)
|
|
52
55
|
parser.add_argument('--max-requests-jitter', dest='max_requests_jitter', type=int, default=50, required=False)
|
|
53
56
|
parser.add_argument('--worker-class', dest='worker_class', type=str, default='sync', required=False)
|
|
57
|
+
parser.add_argument('--statsd_endpoint', dest='statsd_endpoint', type=str, default=None, required=False)
|
|
58
|
+
parser.add_argument('--statsd_prefix', dest='statsd_prefix', type=str, default=None, required=False)
|
|
54
59
|
|
|
55
60
|
def run(self) -> None:
|
|
56
61
|
env = os.environ.copy()
|
|
@@ -84,6 +89,13 @@ class CmdStart(Cmd):
|
|
|
84
89
|
*(['--reload'] if debug else ['--preload']),
|
|
85
90
|
f'{self.app_module}:{self.app_name}',
|
|
86
91
|
]
|
|
92
|
+
|
|
93
|
+
if self.statsd_endpoint and self.env != ENV_LOCAL:
|
|
94
|
+
if self.statsd_prefix:
|
|
95
|
+
args.extend([f'--statsd-host={self.statsd_endpoint}', f"--statsd-prefix={self.statsd_prefix}"])
|
|
96
|
+
else:
|
|
97
|
+
args.extend([f'--statsd-host={self.statsd_endpoint}', f"--statsd-prefix={self.app_module.split('.')[1]}_{self.env}"])
|
|
98
|
+
|
|
87
99
|
write_stdout(f'name={name}')
|
|
88
100
|
write_stdout(f'args={args}')
|
|
89
101
|
subprocess.run(['gunicorn', '--check-config', '--print-config', *args], cwd=os.getcwd(), stdout=sys.stdout, stderr=sys.stderr, text=True, env=env)
|
|
@@ -26,7 +26,7 @@ from ul_api_utils.debug import stat
|
|
|
26
26
|
from ul_api_utils.debug.debugger import Debugger
|
|
27
27
|
from ul_api_utils.errors import UserAbstractApiError, ResourceRuntimeApiError, ResponseTypeRuntimeApiError
|
|
28
28
|
from ul_api_utils.internal_api.internal_api_check_context import internal_api_check_context
|
|
29
|
-
from ul_api_utils.modules.api_sdk_config import ApiSdkConfig
|
|
29
|
+
from ul_api_utils.modules.api_sdk_config import ApiSdkConfig
|
|
30
30
|
from ul_api_utils.modules.intermediate_state import try_init, try_configure
|
|
31
31
|
from ul_api_utils.resources.caching import ULCache, TCacheMode, ULCacheMode, ULCacheConfig
|
|
32
32
|
from ul_api_utils.resources.debugger_scripts import load_debugger_static_scripts
|
|
@@ -35,7 +35,7 @@ from ul_api_utils.resources.health_check.resource import init_health_check_resou
|
|
|
35
35
|
from ul_api_utils.resources.not_implemented import not_implemented_handler
|
|
36
36
|
from ul_api_utils.resources.permissions import load_permissions
|
|
37
37
|
from ul_api_utils.resources.rate_limitter import init_rate_limiter
|
|
38
|
-
from ul_api_utils.resources.socketio import
|
|
38
|
+
from ul_api_utils.resources.socketio import init_socket_io, SocketAsyncModesEnum, SocketIOConfigType
|
|
39
39
|
from ul_api_utils.resources.swagger import load_swagger, ApiSdkResource
|
|
40
40
|
from ul_api_utils.sentry import sentry
|
|
41
41
|
from ul_api_utils.utils.api_encoding import ApiEncoding
|
|
@@ -139,7 +139,7 @@ class ApiSdk:
|
|
|
139
139
|
|
|
140
140
|
def init_with_flask(self, app_name: str, *, db_config: Optional['MongoDbConfig'] | Optional['DbConfig'] = None) -> Flask:
|
|
141
141
|
self._initialized_flask_name = try_init(self, app_name)
|
|
142
|
-
self._sio =
|
|
142
|
+
self._sio = init_socket_io(config=self._config.socket_config)
|
|
143
143
|
|
|
144
144
|
if db_config is not None and type(db_config).__name__ == 'MongoDbConfig':
|
|
145
145
|
from ul_db_utils.utils.waiting_for_mongo import waiting_for_mongo
|
|
@@ -254,16 +254,16 @@ class ApiSdk:
|
|
|
254
254
|
debugger_enabled=self._debugger_enabled_with_pin,
|
|
255
255
|
))
|
|
256
256
|
|
|
257
|
-
if self._config.
|
|
257
|
+
if self._config.socket_config and self._config.socket_config.app_type is SocketIOConfigType.SERVER:
|
|
258
258
|
assert self._sio # mypy
|
|
259
259
|
self._sio.init_app(
|
|
260
260
|
flask_app,
|
|
261
|
-
message_queue=self._config.
|
|
261
|
+
message_queue=self._config.socket_config.message_queue,
|
|
262
262
|
async_mode=SocketAsyncModesEnum.GEVENT.value,
|
|
263
|
-
channel=self._config.
|
|
264
|
-
cors_allowed_origins=self._config.
|
|
265
|
-
logger=self._config.
|
|
266
|
-
engineio_logger=self._config.
|
|
263
|
+
channel=self._config.socket_config.channel,
|
|
264
|
+
cors_allowed_origins=self._config.socket_config.cors_allowed_origins,
|
|
265
|
+
logger=self._config.socket_config.logs_enabled,
|
|
266
|
+
engineio_logger=self._config.socket_config.engineio_logs_enabled,
|
|
267
267
|
)
|
|
268
268
|
load_modules_by_template([os.path.join(APPLICATION_DIR, 'sockets', '*')])
|
|
269
269
|
|
|
@@ -1,23 +1,17 @@
|
|
|
1
1
|
from enum import Enum
|
|
2
|
-
from typing import List, Optional, Callable, Union
|
|
2
|
+
from typing import List, Optional, Callable, Union
|
|
3
3
|
|
|
4
|
-
from pydantic import BaseModel, Extra
|
|
4
|
+
from pydantic import BaseModel, Extra
|
|
5
5
|
|
|
6
6
|
from ul_api_utils.access import PermissionRegistry, PermissionDefinition
|
|
7
7
|
from ul_api_utils.modules.api_sdk_jwt import ApiSdkJwt
|
|
8
|
+
from ul_api_utils.resources.socketio import SocketIOConfig
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
def join_route_paths(prev_sect: str, next_sect: str) -> str:
|
|
11
12
|
return prev_sect.rstrip('/') + '/' + next_sect.lstrip('/')
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
class SocketAsyncModesEnum(Enum):
|
|
15
|
-
THREADING = 'threading'
|
|
16
|
-
GEVENT = 'gevent'
|
|
17
|
-
EVENTLET = 'eventlet'
|
|
18
|
-
GEVENT_UWSGI = 'gevent_uwsgi'
|
|
19
|
-
|
|
20
|
-
|
|
21
15
|
class ApiSdkIdentifyTypeEnum(Enum):
|
|
22
16
|
DISABLED = 'DISABLED'
|
|
23
17
|
CLIENT_IP = 'IP'
|
|
@@ -36,14 +30,6 @@ class ApiSdkFlaskDebuggingPluginsEnabled(BaseModel):
|
|
|
36
30
|
flask_monitoring_dashboard: bool = False
|
|
37
31
|
|
|
38
32
|
|
|
39
|
-
class SocketIOConfig(BaseModel):
|
|
40
|
-
message_queue: str
|
|
41
|
-
channel: Optional[str] = "flask-socketio"
|
|
42
|
-
cors_allowed_origins: Optional[str] = "*"
|
|
43
|
-
logs_enabled: Optional[bool] = False
|
|
44
|
-
engineio_logs_enabled: Optional[bool] = False
|
|
45
|
-
|
|
46
|
-
|
|
47
33
|
class ApiSdkConfig(BaseModel):
|
|
48
34
|
service_name: str
|
|
49
35
|
permissions: Optional[Union[Callable[[], PermissionRegistry], PermissionRegistry]] = None
|
|
@@ -56,8 +42,7 @@ class ApiSdkConfig(BaseModel):
|
|
|
56
42
|
http_auth: Optional[ApiSdkHttpAuth] = None
|
|
57
43
|
|
|
58
44
|
static_url_path: Optional[str] = None
|
|
59
|
-
|
|
60
|
-
client_socketio_config: Optional[SocketIOConfig] = None
|
|
45
|
+
socket_config: Optional[SocketIOConfig] = None
|
|
61
46
|
web_error_template: Optional[str] = None
|
|
62
47
|
|
|
63
48
|
rate_limit: Union[str, List[str]] = '100/minute' # [count (int)] [per|/] [second|minute|hour|day|month|year][s]
|
|
@@ -71,26 +56,6 @@ class ApiSdkConfig(BaseModel):
|
|
|
71
56
|
|
|
72
57
|
api_route_path_prefix: str = '/api'
|
|
73
58
|
|
|
74
|
-
@staticmethod
|
|
75
|
-
def validate_socketio(values: dict[str, Any]) -> None:
|
|
76
|
-
"""
|
|
77
|
-
ApiSdk instance could be either a Socket.IO server or Socket.IO client.
|
|
78
|
-
Client do not need the flask_app process attached to it, but server does.
|
|
79
|
-
|
|
80
|
-
Client should use the same config as server (message_queue).
|
|
81
|
-
Validate that ApiSdk instance couldn't be a server and a client simultaneously.
|
|
82
|
-
"""
|
|
83
|
-
server_conf, client_conf = values.get("server_socketio_config"), values.get("client_socketio_config")
|
|
84
|
-
service = values["service_name"]
|
|
85
|
-
error_msg = f"Can't create ApiSdkConfig for {service}. ApiSdk cannot be a socketio server and client simultaneously"
|
|
86
|
-
if all([server_conf, client_conf]):
|
|
87
|
-
raise AssertionError(error_msg)
|
|
88
|
-
|
|
89
|
-
@root_validator
|
|
90
|
-
def validator(cls, values: dict[str, Any]) -> dict[str, Any]:
|
|
91
|
-
cls.validate_socketio(values)
|
|
92
|
-
return values
|
|
93
|
-
|
|
94
59
|
class Config:
|
|
95
60
|
extra = Extra.forbid
|
|
96
61
|
allow_mutation = False
|
|
@@ -12,9 +12,11 @@ from ul_api_utils.conf import APPLICATION_START_DT
|
|
|
12
12
|
from ul_api_utils.modules.intermediate_state import try_init, try_configure
|
|
13
13
|
from ul_api_utils.modules.worker_context import WorkerContext
|
|
14
14
|
from ul_api_utils.modules.worker_sdk_config import WorkerSdkConfig
|
|
15
|
+
from ul_api_utils.resources.socketio import init_socket_io
|
|
15
16
|
from ul_api_utils.sentry import sentry
|
|
16
17
|
|
|
17
18
|
if TYPE_CHECKING:
|
|
19
|
+
import flask_socketio # type: ignore # lib without mypy stubs
|
|
18
20
|
from ul_db_utils.modules.postgres_modules.db import DbConfig
|
|
19
21
|
|
|
20
22
|
TI = TypeVar('TI', bound=UniMessage)
|
|
@@ -27,6 +29,7 @@ class WorkerSdk:
|
|
|
27
29
|
'_config',
|
|
28
30
|
'_db_initialized',
|
|
29
31
|
'_flask_app_cache',
|
|
32
|
+
'_sio',
|
|
30
33
|
)
|
|
31
34
|
|
|
32
35
|
def __init__(self, config: WorkerSdkConfig) -> None:
|
|
@@ -35,6 +38,12 @@ class WorkerSdk:
|
|
|
35
38
|
self._config = config
|
|
36
39
|
self._db_initialized = False
|
|
37
40
|
self._flask_app_cache: Optional[Flask] = None
|
|
41
|
+
self._sio: Optional['flask_socketio.SocketIO'] = None
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def socket(self) -> 'flask_socketio.SocketIO':
|
|
45
|
+
assert self._sio is not None, "SocketIO client is not configured, try adding SocketIOConfig to your WorkerSdk first."
|
|
46
|
+
return self._sio
|
|
38
47
|
|
|
39
48
|
@property
|
|
40
49
|
def _flask_app(self) -> Flask:
|
|
@@ -50,7 +59,7 @@ class WorkerSdk:
|
|
|
50
59
|
|
|
51
60
|
def init(self, app_name: str, *, db_config: Optional['DbConfig'] = None) -> 'WorkerSdk':
|
|
52
61
|
self._initialized_flask_name = try_init(self, app_name)
|
|
53
|
-
|
|
62
|
+
self._sio = init_socket_io(config=self._config.socket_config)
|
|
54
63
|
if db_config is not None:
|
|
55
64
|
from ul_db_utils.utils.waiting_for_postgres import waiting_for_postgres
|
|
56
65
|
self._db_initialized = True
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
from flask_socketio import SocketIO # type: ignore
|
|
4
|
+
from pydantic import BaseModel
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SocketIOConfigType(Enum):
|
|
8
|
+
"""
|
|
9
|
+
Defines two basic approaches of creating Socket.IO instance:
|
|
10
|
+
1. SERVER - Socket.IO instance is being attached to the Flask App,
|
|
11
|
+
async gunicorn workers (gevent, eventlet), requires monkey-patching of
|
|
12
|
+
psycopg and default library. Socket application.
|
|
13
|
+
2. EXTERNAL_PROCESS - Socket.IO instance isn't attached to Flask App,
|
|
14
|
+
sync gunicorn workers, doesn't require monkey-patching. Could be any
|
|
15
|
+
API, worker, etc. Used only to submit events from an external process
|
|
16
|
+
to the server clients.
|
|
17
|
+
|
|
18
|
+
Further reading: https://flask-socketio.readthedocs.io/en/latest/deployment.html#emitting-from-an-external-process
|
|
19
|
+
"""
|
|
20
|
+
SERVER = "SERVER"
|
|
21
|
+
EXTERNAL_PROCESS = "EXTERNAL_PROCESS"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class SocketIOConfig(BaseModel):
|
|
25
|
+
app_type: SocketIOConfigType = SocketIOConfigType.SERVER
|
|
26
|
+
message_queue: str
|
|
27
|
+
channel: str | None = "flask-socketio"
|
|
28
|
+
cors_allowed_origins: str | None = "*"
|
|
29
|
+
logs_enabled: bool | None = False
|
|
30
|
+
engineio_logs_enabled: bool | None = False
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class SocketAsyncModesEnum(Enum):
|
|
34
|
+
THREADING = 'threading'
|
|
35
|
+
GEVENT = 'gevent'
|
|
36
|
+
EVENTLET = 'eventlet'
|
|
37
|
+
GEVENT_UWSGI = 'gevent_uwsgi'
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def init_socket_io(config: SocketIOConfig | None) -> SocketIO | None:
|
|
41
|
+
socket_io = None
|
|
42
|
+
if config is None:
|
|
43
|
+
return None
|
|
44
|
+
|
|
45
|
+
if config.app_type is SocketIOConfigType.SERVER:
|
|
46
|
+
socket_io = SocketIO()
|
|
47
|
+
|
|
48
|
+
if config.app_type is SocketIOConfigType.EXTERNAL_PROCESS:
|
|
49
|
+
socket_io = SocketIO(
|
|
50
|
+
message_queue=config.message_queue,
|
|
51
|
+
async_mode=SocketAsyncModesEnum.GEVENT.value,
|
|
52
|
+
channel=config.channel,
|
|
53
|
+
cors_allowed_origins=config.cors_allowed_origins,
|
|
54
|
+
logger=config.logs_enabled,
|
|
55
|
+
engineio_logger=config.engineio_logs_enabled,
|
|
56
|
+
)
|
|
57
|
+
return socket_io
|
|
@@ -17,12 +17,12 @@ pyyaml==6.0
|
|
|
17
17
|
requests==2.28.1
|
|
18
18
|
cryptography==38.0.1
|
|
19
19
|
colored==1.4.3
|
|
20
|
-
|
|
20
|
+
flask-socketio==5.3.6
|
|
21
21
|
ormsgpack==1.4.1
|
|
22
22
|
msgpack==1.0.4
|
|
23
23
|
msgpack-types==0.2.0
|
|
24
24
|
fastavro==1.7.0
|
|
25
|
-
|
|
25
|
+
factory-boy==3.3.0
|
|
26
26
|
sentry-sdk[flask]==1.9.2
|
|
27
27
|
faker==24.8.0
|
|
28
28
|
types-requests==2.28.8
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
from flask_socketio import SocketIO # type: ignore
|
|
2
|
-
|
|
3
|
-
from ul_api_utils.modules.api_sdk_config import SocketIOConfig, SocketAsyncModesEnum
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def init_socketio(server_config: SocketIOConfig | None, client_config: SocketIOConfig | None) -> SocketIO | None:
|
|
7
|
-
socketio = None
|
|
8
|
-
if server_config is not None:
|
|
9
|
-
socketio = SocketIO()
|
|
10
|
-
|
|
11
|
-
if client_config is not None:
|
|
12
|
-
socketio = SocketIO(
|
|
13
|
-
message_queue=client_config.message_queue,
|
|
14
|
-
async_mode=SocketAsyncModesEnum.GEVENT.value,
|
|
15
|
-
channel=client_config.channel,
|
|
16
|
-
cors_allowed_origins=client_config.cors_allowed_origins,
|
|
17
|
-
logger=client_config.logs_enabled,
|
|
18
|
-
engineio_logger=client_config.engineio_logs_enabled,
|
|
19
|
-
)
|
|
20
|
-
return socketio
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_resource_config.py
RENAMED
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_resource_error_handling.py
RENAMED
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_resource_fn_typing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/api_resource/api_response_payload_alias.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/encrypt/encrypt_decrypt_abstract.py
RENAMED
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/encrypt/encrypt_decrypt_aes_xtea.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/__tests__/internal_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/internal_api_check_context.py
RENAMED
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/internal_api/internal_api_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/modules/__tests__/test_api_sdk_jwt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/resources/health_check/health_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/__tests__/api_path_version.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/broker_topics_message_count.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/__init__.py
RENAMED
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/conf.py
RENAMED
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/flask_swagger_generator/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/utils/token_check_through_request.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/validators/__tests__/test_custom_fields.py
RENAMED
|
File without changes
|
|
File without changes
|
{ul-api-utils-7.10.3 → ul-api-utils-7.10.5}/ul_api_utils/validators/validate_empty_object.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|