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.
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/PKG-INFO +1 -1
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/setup.py +2 -2
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_request.py +8 -5
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource.py +0 -6
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_response.py +0 -6
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/api_sdk.py +2 -2
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/json_encoder.py +20 -11
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/PKG-INFO +1 -1
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/LICENSE +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/README.md +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/conf.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/main.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/models/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/permissions.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/pure_flask_example.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/rate_limit_load.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/redis_repository.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/routes/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/routes/api_some.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_connect.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_disconnect.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_json.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_message.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/sockets/on_open.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/workers/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/example/workers/worker.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/setup.cfg +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/access/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_config.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_error_handling.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_fn_typing.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_type.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_response_db.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_response_payload_alias.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/db_types.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/signature_check.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_enc_keys.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_gen_api_user_token.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_gen_new_api_user.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_generate_api_docs.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_start.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_worker_start.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/gunicorn.conf.local.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/gunicorn.conf.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/wsgi.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/conf/ul-debugger-main.js +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/conf/ul-debugger-ui.js +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/conf.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/const.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/debug/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/debug/debugger.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/debug/malloc.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/debug/stat.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/encrypt/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/encrypt/encrypt_decrypt_abstract.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/encrypt/encrypt_decrypt_aes_xtea.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/errors.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__tests__/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__tests__/internal_api.py +0 -0
- {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
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api_check_context.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api_error.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api_response.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/main.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/__tests__/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/__tests__/test_api_sdk_jwt.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/api_sdk_config.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/api_sdk_jwt.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/intermediate_state.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/worker_context.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/worker_sdk.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/modules/worker_sdk_config.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/py.typed +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/caching.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/debugger_scripts.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/const.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/health_check.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/health_check_template.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/resource.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/not_implemented.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/permissions.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/rate_limitter.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/socketio.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/swagger.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/custom_fields/__init__.py +0 -0
- {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
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/custom_widgets/__init__.py +0 -0
- {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
- {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
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/web_forms/uni_form.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/sentry.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/__tests__/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/__tests__/api_path_version.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/__tests__/unwrap_typing.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_encoding.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_format.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_method.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_pagination.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_path_version.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/api_request_info.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/avro.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/broker_topics_message_count.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/cached_per_request.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/colors.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/constants.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/decode_base64.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/deprecated.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flags.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/conf.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/exceptions.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/specifiers/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/utils/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/imports.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/instance_checks.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/jinja/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/jinja/t_url_for.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/jinja/to_pretty_json.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/load_modules.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/__tests__/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/errors.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/repository.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/token_check.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/token_check_through_request.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/unwrap_typing.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/uuid_converter.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/__tests__/__init__.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/__tests__/test_custom_fields.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/custom_fields.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/validate_empty_object.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/validators/validate_uuid.py +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/SOURCES.txt +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/dependency_links.txt +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/entry_points.txt +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/requires.txt +0 -0
- {ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils.egg-info/top_level.txt +0 -0
|
@@ -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.
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
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,
|
|
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,
|
|
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)
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_config.py
RENAMED
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_fn_typing.py
RENAMED
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/api_resource/api_resource_type.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-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_gen_api_user_token.py
RENAMED
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/cmd_generate_api_docs.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/commands/start/gunicorn.conf.local.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
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/encrypt/encrypt_decrypt_abstract.py
RENAMED
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/encrypt/encrypt_decrypt_aes_xtea.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__tests__/__init__.py
RENAMED
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/__tests__/internal_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/internal_api/internal_api_error.py
RENAMED
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/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-9.0.0a2 → ul-api-utils-9.0.0a4}/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
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/health_check.py
RENAMED
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/resources/health_check/resource.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
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/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-9.0.0a2 → ul-api-utils-9.0.0a4}/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-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/__init__.py
RENAMED
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/flask_swagger_generator/conf.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-9.0.0a2 → ul-api-utils-9.0.0a4}/ul_api_utils/utils/memory_db/__tests__/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/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
|
|
File without changes
|
|
File without changes
|
{ul-api-utils-9.0.0a2 → ul-api-utils-9.0.0a4}/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
|
|
File without changes
|