helix.fhir.client.sdk 4.2.16__tar.gz → 4.2.18__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.
- {helix_fhir_client_sdk-4.2.16/helix.fhir.client.sdk.egg-info → helix_fhir_client_sdk-4.2.18}/PKG-INFO +1 -1
- helix_fhir_client_sdk-4.2.18/VERSION +1 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18/helix.fhir.client.sdk.egg-info}/PKG-INFO +1 -1
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_auth_mixin.py +4 -2
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_client.py +5 -8
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_delete_mixin.py +4 -2
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_merge_mixin.py +6 -3
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_merge_resources_mixin.py +8 -4
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_patch_mixin.py +2 -1
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_update_mixin.py +4 -2
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/queue/request_queue_mixin.py +4 -2
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/retryable_aiohttp_client.py +9 -6
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/validators/async_fhir_validator.py +3 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_retryable_client_session_management.py +7 -3
- helix_fhir_client_sdk-4.2.16/VERSION +0 -1
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/LICENSE +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/MANIFEST.in +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/Makefile +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/README.md +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix.fhir.client.sdk.egg-info/SOURCES.txt +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix.fhir.client.sdk.egg-info/dependency_links.txt +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix.fhir.client.sdk.egg-info/not-zip-safe +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix.fhir.client.sdk.egg-info/requires.txt +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix.fhir.client.sdk.egg-info/top_level.txt +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/dictionary_parser.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/dictionary_writer.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/exceptions/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/exceptions/fhir_get_exception.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/exceptions/fhir_sender_exception.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/exceptions/fhir_validation_exception.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_bundle_appender.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/base_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/identifier_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/last_updated_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/property_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/property_missing_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/security_access_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/security_owner_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/sort_field.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/source_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/filters/version_filter.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/function_types.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/fhir_graph_mixin.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/graph_definition.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/graph_link_parameters.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/graph_target_parameters.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/simulated_graph_processor_mixin.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/test/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/test/test_graph_mixin.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin_caching.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/open_telemetry/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/open_telemetry/attribute_names.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/open_telemetry/span_names.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/py.typed +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/queue/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/bundle_expander.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/fhir_client_protocol.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/fhir_delete_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/fhir_get_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/fhir_merge_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/fhir_response_processor.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/fhir_update_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/fhir_get_bundle_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/fhir_get_error_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/fhir_get_list_by_resource_type_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/fhir_get_list_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/fhir_get_response_factory.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/fhir_get_single_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/test/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/test/test_get_bundle_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/test/test_get_error_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/test/test_get_list_by_resource_type_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/test/test_get_list_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/test/test_get_response_factory.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get/test/test_get_single_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/get_result.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/merge/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/merge/base_fhir_merge_resource_response_entry.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response_entry.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/merge/fhir_merge_response_entry_issue.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/paging_result.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/resource_separator.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_expand_or_separate_bundle_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_non_streaming.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_non_streaming_separate_bundle.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming_separate_bundle.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming_separate_bundle_ndjson.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_404.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/test_bundle_expander.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/test_fhir_get_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/responses/test/test_resource_separator.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/structures/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/structures/get_access_token_result.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/test/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/test/test_delete_mixin.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/test/test_fhir_auth_mixin.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/test/test_fhir_bundle_appender.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/test/test_merge_mixin.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/test/test_merge_mixin_resources.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/async_parallel_processor/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/async_parallel_processor/v1/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/async_parallel_processor/v1/async_parallel_processor.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/async_runner.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/cache/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/cache/request_cache.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/cache/request_cache_entry.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/fhir_client_logger.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/fhir_helper.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/fhir_scope_parser.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/fhir_scope_parser_result.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/fhir_server_helpers.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/hash_util.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/list_chunker.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/ndjson_chunk_streaming_parser.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/practitioner_generator.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/retryable_aiohttp_response.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/retryable_aiohttp_url_result.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/size_calculator/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/size_calculator/size_calculator.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/test_async_runner.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser_can_parse_scopes.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser_correct_allow.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/test_json_helpers.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/test_list_chunker.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/test_ndjson_chunk_streaming_parser.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/test/test_retryable_aiohttp_client.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/utilities/url_checker.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/validators/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/validators/fhir_validator.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/validators/test/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/validators/test/test_async_fhir_validator.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/well_known_configuration.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/pyproject.toml +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/setup.cfg +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/setup.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/fhir_server/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/fhir_server/test_async_real_fhir_server_get_graph_large.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/fhir_server/test_async_real_fhir_server_get_patients_large.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/graph/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/graph/test_fhir_graph.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/graph/test_fhir_graph_multiple_ids.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/graph/test_fhir_graph_multiple_ids_in_batches.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_input_cache_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_input_cache_if_modified_since_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_scope_parser_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_separate_resources_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_with_errors_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_with_operation_outcomes_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph/test_fhir_simulated_graph_with_url_column_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph_practitioner/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_in_one_call_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_in_one_call_async_with_request_size.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_practitioner_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_practitioner_separate_resources_async.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_bundle/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_bundle/not_expanded/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_bundle/not_expanded/test_fhir_client_bundle_not_expanded.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_bundle/not_separated/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_bundle/not_separated/test_fhir_client_bundle_not_separated.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_bundle/separated/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_bundle/separated/test_fhir_client_bundle_separated.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_fetch_response_in_chunks.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_by_id.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_by_identifier_missing.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_delete.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_list.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_list_auth_fail.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_list_auth_fail_retry.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_list_auth_fail_retry_custom_refresh_function.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_list_resource_streaming.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_list_streaming.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_merge.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_merge_with_validate.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_fhir_client_patient_update.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_real_fhir_server_get_patients.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_async_real_fhir_server_get_patients_error.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_benchmark_compress.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/async/test_benchmark_merge.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/logger_for_test.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/graph/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/graph/test_fhir_graph.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_bundle/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_bundle/not_expanded/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_bundle/not_expanded/test_fhir_client_bundle_not_expanded.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_bundle/not_separated/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_bundle/not_separated/test_fhir_client_bundle_not_separated.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_bundle/separated/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_bundle/separated/test_fhir_client_bundle_separated.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_logs_not_contains_secret_information.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_patient_by_id.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_patient_delete.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_patient_list.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_patient_list_auth_fail.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_patient_list_auth_fail_retry.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_patient_merge.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_patient_update.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/sync/test_fhir_client_patient_update_patch.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/test_fhir_client_clone.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests/test_get_nested_property.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/__init__.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_aetna_server_auth.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_aetna_server_auth_aiohttp.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_aetna_server_auth_httpx.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_dev_server_auth.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_dev_server_no_auth.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_emr_server_auth.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_firely_fhir.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_merge_vs_smart_merge_behavior.py +0 -0
- {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/tests_integration/test_staging_server_graph.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.2.18
|
|
@@ -170,7 +170,8 @@ class FhirAuthMixin(FhirClientProtocol):
|
|
|
170
170
|
:return: auth server url or None
|
|
171
171
|
"""
|
|
172
172
|
async with RetryableAioHttpClient(
|
|
173
|
-
fn_get_session=
|
|
173
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
174
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
174
175
|
exclude_status_codes_from_retry=[404],
|
|
175
176
|
throw_exception_on_error=False,
|
|
176
177
|
use_data_streaming=False,
|
|
@@ -272,7 +273,8 @@ class FhirAuthMixin(FhirClientProtocol):
|
|
|
272
273
|
}
|
|
273
274
|
|
|
274
275
|
async with RetryableAioHttpClient(
|
|
275
|
-
fn_get_session=
|
|
276
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
277
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
276
278
|
use_data_streaming=False,
|
|
277
279
|
compress=False,
|
|
278
280
|
exclude_status_codes_from_retry=None,
|
{helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/fhir_client.py
RENAMED
|
@@ -846,16 +846,13 @@ class FhirClient(
|
|
|
846
846
|
|
|
847
847
|
def create_http_session(self) -> ClientSession:
|
|
848
848
|
"""
|
|
849
|
-
Creates
|
|
849
|
+
Creates the SDK's default HTTP Session.
|
|
850
850
|
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
"""
|
|
854
|
-
# Use a custom session factory if provided
|
|
855
|
-
if self._fn_create_http_session is not None:
|
|
856
|
-
return self._fn_create_http_session()
|
|
851
|
+
This method always creates a new aiohttp ClientSession with standard configuration.
|
|
852
|
+
The SDK manages the lifecycle of sessions created by this method.
|
|
857
853
|
|
|
858
|
-
|
|
854
|
+
Note: If you want to provide your own session factory, use use_http_session() instead.
|
|
855
|
+
"""
|
|
859
856
|
trace_config = aiohttp.TraceConfig()
|
|
860
857
|
# trace_config.on_request_start.append(on_request_start)
|
|
861
858
|
if self._log_level == "DEBUG":
|
|
@@ -56,7 +56,8 @@ class FhirDeleteMixin(FhirClientProtocol):
|
|
|
56
56
|
headers["Authorization"] = f"Bearer {access_token}"
|
|
57
57
|
|
|
58
58
|
async with RetryableAioHttpClient(
|
|
59
|
-
fn_get_session=
|
|
59
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
60
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
60
61
|
refresh_token_func=self._refresh_token_function,
|
|
61
62
|
retries=self._retry_count,
|
|
62
63
|
exclude_status_codes_from_retry=self._exclude_status_codes_from_retry,
|
|
@@ -129,7 +130,8 @@ class FhirDeleteMixin(FhirClientProtocol):
|
|
|
129
130
|
headers["Authorization"] = f"Bearer {access_token}"
|
|
130
131
|
|
|
131
132
|
async with RetryableAioHttpClient(
|
|
132
|
-
fn_get_session=
|
|
133
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
134
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
133
135
|
refresh_token_func=self._refresh_token_function,
|
|
134
136
|
retries=self._retry_count,
|
|
135
137
|
exclude_status_codes_from_retry=self._exclude_status_codes_from_retry,
|
|
@@ -54,11 +54,12 @@ class FhirMergeMixin(FhirClientProtocol):
|
|
|
54
54
|
access_token: str | None = access_token_result.access_token
|
|
55
55
|
|
|
56
56
|
await AsyncFhirValidator.validate_fhir_resource(
|
|
57
|
-
fn_get_session=
|
|
57
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
58
58
|
json_data=json.dumps(resource_json),
|
|
59
59
|
resource_name=cast(str | None, resource_json.get("resourceType")) or self._resource or "",
|
|
60
60
|
validation_server_url=self._validation_server_url,
|
|
61
61
|
access_token=access_token,
|
|
62
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
62
63
|
)
|
|
63
64
|
resource_json_list_clean.append(resource_json)
|
|
64
65
|
except FhirValidationException as e:
|
|
@@ -75,11 +76,12 @@ class FhirMergeMixin(FhirClientProtocol):
|
|
|
75
76
|
access_token_result1: GetAccessTokenResult = await self.get_access_token_async()
|
|
76
77
|
access_token1: str | None = access_token_result1.access_token
|
|
77
78
|
await AsyncFhirValidator.validate_fhir_resource(
|
|
78
|
-
fn_get_session=
|
|
79
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
79
80
|
json_data=json.dumps(resource_json),
|
|
80
81
|
resource_name=resource_json.get("resourceType") or self._resource or "",
|
|
81
82
|
validation_server_url=self._validation_server_url,
|
|
82
83
|
access_token=access_token1,
|
|
84
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
83
85
|
)
|
|
84
86
|
resource_json_list_clean.append(resource_json)
|
|
85
87
|
except FhirValidationException as e:
|
|
@@ -183,7 +185,8 @@ class FhirMergeMixin(FhirClientProtocol):
|
|
|
183
185
|
response_text: str | None = None
|
|
184
186
|
try:
|
|
185
187
|
async with RetryableAioHttpClient(
|
|
186
|
-
fn_get_session=
|
|
188
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
189
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
187
190
|
refresh_token_func=self._refresh_token_function,
|
|
188
191
|
tracer_request_func=self._trace_request_function,
|
|
189
192
|
retries=self._retry_count,
|
|
@@ -299,7 +299,8 @@ class FhirMergeResourcesMixin(FhirClientProtocol):
|
|
|
299
299
|
response_text: str | None = None
|
|
300
300
|
try:
|
|
301
301
|
async with RetryableAioHttpClient(
|
|
302
|
-
fn_get_session=
|
|
302
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
303
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
303
304
|
refresh_token_func=self._refresh_token_function,
|
|
304
305
|
tracer_request_func=self._trace_request_function,
|
|
305
306
|
retries=self._retry_count,
|
|
@@ -515,7 +516,8 @@ class FhirMergeResourcesMixin(FhirClientProtocol):
|
|
|
515
516
|
response_text: str | None = None
|
|
516
517
|
try:
|
|
517
518
|
async with RetryableAioHttpClient(
|
|
518
|
-
fn_get_session=
|
|
519
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
520
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
519
521
|
refresh_token_func=self._refresh_token_function,
|
|
520
522
|
tracer_request_func=self._trace_request_function,
|
|
521
523
|
retries=self._retry_count,
|
|
@@ -675,11 +677,12 @@ class FhirMergeResourcesMixin(FhirClientProtocol):
|
|
|
675
677
|
access_token: str | None = access_token_result.access_token
|
|
676
678
|
|
|
677
679
|
await AsyncFhirValidator.validate_fhir_resource(
|
|
678
|
-
fn_get_session=
|
|
680
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
679
681
|
json_data=resource.json(),
|
|
680
682
|
resource_name=cast(str | None, resource.get("resourceType")) or self._resource or "",
|
|
681
683
|
validation_server_url=self._validation_server_url,
|
|
682
684
|
access_token=access_token,
|
|
685
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
683
686
|
)
|
|
684
687
|
resource_json_list_clean.append(resource)
|
|
685
688
|
except FhirValidationException as e:
|
|
@@ -700,11 +703,12 @@ class FhirMergeResourcesMixin(FhirClientProtocol):
|
|
|
700
703
|
try:
|
|
701
704
|
with resource.transaction():
|
|
702
705
|
await AsyncFhirValidator.validate_fhir_resource(
|
|
703
|
-
fn_get_session=
|
|
706
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
704
707
|
json_data=resource.json(),
|
|
705
708
|
resource_name=resource.get("resourceType") or self._resource or "",
|
|
706
709
|
validation_server_url=self._validation_server_url,
|
|
707
710
|
access_token=access_token1,
|
|
711
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
708
712
|
)
|
|
709
713
|
resource_json_list_clean.append(resource)
|
|
710
714
|
except FhirValidationException as e:
|
|
@@ -71,7 +71,8 @@ class FhirPatchMixin(FhirClientProtocol):
|
|
|
71
71
|
deserialized_data = json.loads(data)
|
|
72
72
|
# actually make the request
|
|
73
73
|
async with RetryableAioHttpClient(
|
|
74
|
-
fn_get_session=
|
|
74
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
75
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
75
76
|
refresh_token_func=self._refresh_token_function,
|
|
76
77
|
tracer_request_func=self._trace_request_function,
|
|
77
78
|
retries=self._retry_count,
|
|
@@ -96,16 +96,18 @@ class FhirUpdateMixin(FhirClientProtocol):
|
|
|
96
96
|
|
|
97
97
|
if self._validation_server_url:
|
|
98
98
|
await AsyncFhirValidator.validate_fhir_resource(
|
|
99
|
-
fn_get_session=
|
|
99
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
100
100
|
json_data=json_data,
|
|
101
101
|
resource_name=self._resource,
|
|
102
102
|
validation_server_url=self._validation_server_url,
|
|
103
103
|
access_token=access_token,
|
|
104
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
104
105
|
)
|
|
105
106
|
|
|
106
107
|
# actually make the request
|
|
107
108
|
async with RetryableAioHttpClient(
|
|
108
|
-
fn_get_session=
|
|
109
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
110
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
109
111
|
refresh_token_func=self._refresh_token_function,
|
|
110
112
|
tracer_request_func=self._trace_request_function,
|
|
111
113
|
retries=self._retry_count,
|
|
@@ -119,7 +119,8 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
|
|
|
119
119
|
)
|
|
120
120
|
|
|
121
121
|
async with RetryableAioHttpClient(
|
|
122
|
-
fn_get_session=
|
|
122
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
123
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
123
124
|
refresh_token_func=self._refresh_token_function,
|
|
124
125
|
tracer_request_func=self._trace_request_function,
|
|
125
126
|
retries=self._retry_count,
|
|
@@ -287,7 +288,8 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
|
|
|
287
288
|
)
|
|
288
289
|
|
|
289
290
|
async with RetryableAioHttpClient(
|
|
290
|
-
fn_get_session=
|
|
291
|
+
fn_get_session=self._fn_create_http_session or self.create_http_session,
|
|
292
|
+
caller_managed_session=self._fn_create_http_session is not None,
|
|
291
293
|
refresh_token_func=self._refresh_token_function,
|
|
292
294
|
tracer_request_func=self._trace_request_function,
|
|
293
295
|
retries=self._retry_count,
|
|
@@ -37,6 +37,7 @@ class RetryableAioHttpClient:
|
|
|
37
37
|
refresh_token_func: RefreshTokenFunction | None,
|
|
38
38
|
tracer_request_func: TraceRequestFunction | None,
|
|
39
39
|
fn_get_session: Callable[[], ClientSession] | None = None,
|
|
40
|
+
caller_managed_session: bool = False,
|
|
40
41
|
exclude_status_codes_from_retry: list[int] | None = None,
|
|
41
42
|
use_data_streaming: bool | None,
|
|
42
43
|
compress: bool | None = False,
|
|
@@ -50,9 +51,9 @@ class RetryableAioHttpClient:
|
|
|
50
51
|
RetryableClient provides a way to make HTTP calls with automatic retry and automatic refreshing of access tokens.
|
|
51
52
|
|
|
52
53
|
Session Lifecycle Management:
|
|
53
|
-
- If
|
|
54
|
+
- If caller_managed_session is False (default): The SDK manages the session lifecycle.
|
|
54
55
|
The session will be automatically closed when exiting the context manager.
|
|
55
|
-
- If
|
|
56
|
+
- If caller_managed_session is True: The caller is responsible for managing the session lifecycle.
|
|
56
57
|
The SDK will NOT close the session - the caller must close it themselves.
|
|
57
58
|
|
|
58
59
|
:param retries: Number of retry attempts for failed requests
|
|
@@ -61,8 +62,10 @@ class RetryableAioHttpClient:
|
|
|
61
62
|
:param retry_status_codes: HTTP status codes that trigger a retry
|
|
62
63
|
:param refresh_token_func: Function to refresh authentication tokens
|
|
63
64
|
:param tracer_request_func: Function to trace/log requests
|
|
64
|
-
:param fn_get_session: Optional callable that returns a ClientSession. If
|
|
65
|
-
|
|
65
|
+
:param fn_get_session: Optional callable that returns a ClientSession. If None, a basic
|
|
66
|
+
ClientSession will be created internally.
|
|
67
|
+
:param caller_managed_session: If True, the caller is responsible for closing the session.
|
|
68
|
+
If False (default), the SDK will close the session on exit.
|
|
66
69
|
:param exclude_status_codes_from_retry: Status codes to exclude from retry logic
|
|
67
70
|
:param use_data_streaming: Whether to stream response data
|
|
68
71
|
:param compress: Whether to compress request data
|
|
@@ -80,8 +83,8 @@ class RetryableAioHttpClient:
|
|
|
80
83
|
)
|
|
81
84
|
self.refresh_token_func_async: RefreshTokenFunction | None = refresh_token_func
|
|
82
85
|
self.trace_function_async: TraceRequestFunction | None = tracer_request_func
|
|
83
|
-
|
|
84
|
-
|
|
86
|
+
self._caller_managed_session: bool = caller_managed_session
|
|
87
|
+
# If no session factory provided, use a default one that creates a basic ClientSession
|
|
85
88
|
self.fn_get_session: Callable[[], ClientSession] = (
|
|
86
89
|
fn_get_session if fn_get_session is not None else lambda: ClientSession()
|
|
87
90
|
)
|
|
@@ -23,6 +23,7 @@ class AsyncFhirValidator:
|
|
|
23
23
|
resource_name: str,
|
|
24
24
|
validation_server_url: str,
|
|
25
25
|
access_token: str | None,
|
|
26
|
+
caller_managed_session: bool = False,
|
|
26
27
|
) -> None:
|
|
27
28
|
"""
|
|
28
29
|
Calls the validation server url to validate the given resource
|
|
@@ -32,6 +33,7 @@ class AsyncFhirValidator:
|
|
|
32
33
|
:param resource_name: name of resource
|
|
33
34
|
:param validation_server_url: url to validation server
|
|
34
35
|
:param access_token: access token to use
|
|
36
|
+
:param caller_managed_session: if True, the caller is responsible for closing the session
|
|
35
37
|
"""
|
|
36
38
|
# check each resource against the validation server
|
|
37
39
|
headers = {"Content-Type": "application/fhir+json"}
|
|
@@ -42,6 +44,7 @@ class AsyncFhirValidator:
|
|
|
42
44
|
full_validation_uri /= "$validate"
|
|
43
45
|
async with RetryableAioHttpClient(
|
|
44
46
|
fn_get_session=fn_get_session,
|
|
47
|
+
caller_managed_session=caller_managed_session,
|
|
45
48
|
use_data_streaming=False,
|
|
46
49
|
access_token=access_token,
|
|
47
50
|
access_token_expiry_date=None,
|
|
@@ -42,12 +42,13 @@ async def test_user_provided_session_is_not_closed_after_exit() -> None:
|
|
|
42
42
|
|
|
43
43
|
try:
|
|
44
44
|
# Provide a factory that returns the user's session
|
|
45
|
-
#
|
|
45
|
+
# Set caller_managed_session=True so SDK will NOT close the session
|
|
46
46
|
client = RetryableAioHttpClient(
|
|
47
47
|
retries=1,
|
|
48
48
|
refresh_token_func=None,
|
|
49
49
|
tracer_request_func=None,
|
|
50
50
|
fn_get_session=lambda: user_session, # User provides a custom factory
|
|
51
|
+
caller_managed_session=True, # User manages session lifecycle
|
|
51
52
|
use_data_streaming=False,
|
|
52
53
|
access_token=None,
|
|
53
54
|
access_token_expiry_date=None,
|
|
@@ -59,7 +60,7 @@ async def test_user_provided_session_is_not_closed_after_exit() -> None:
|
|
|
59
60
|
assert not client.session.closed
|
|
60
61
|
|
|
61
62
|
# After exiting context, the user's session should still be open
|
|
62
|
-
# because
|
|
63
|
+
# because caller_managed_session=True (caller manages session lifecycle)
|
|
63
64
|
assert not user_session.closed
|
|
64
65
|
|
|
65
66
|
finally:
|
|
@@ -81,6 +82,7 @@ async def test_multiple_clients_can_share_user_session() -> None:
|
|
|
81
82
|
refresh_token_func=None,
|
|
82
83
|
tracer_request_func=None,
|
|
83
84
|
fn_get_session=lambda: shared_session,
|
|
85
|
+
caller_managed_session=True, # User manages session lifecycle
|
|
84
86
|
use_data_streaming=False,
|
|
85
87
|
access_token=None,
|
|
86
88
|
access_token_expiry_date=None,
|
|
@@ -97,6 +99,7 @@ async def test_multiple_clients_can_share_user_session() -> None:
|
|
|
97
99
|
refresh_token_func=None,
|
|
98
100
|
tracer_request_func=None,
|
|
99
101
|
fn_get_session=lambda: shared_session,
|
|
102
|
+
caller_managed_session=True, # User manages session lifecycle
|
|
100
103
|
use_data_streaming=False,
|
|
101
104
|
access_token=None,
|
|
102
105
|
access_token_expiry_date=None,
|
|
@@ -132,6 +135,7 @@ async def test_user_can_recreate_closed_session_via_factory() -> None:
|
|
|
132
135
|
refresh_token_func=None,
|
|
133
136
|
tracer_request_func=None,
|
|
134
137
|
fn_get_session=session_factory,
|
|
138
|
+
caller_managed_session=True, # User manages session lifecycle
|
|
135
139
|
use_data_streaming=False,
|
|
136
140
|
access_token=None,
|
|
137
141
|
access_token_expiry_date=None,
|
|
@@ -140,7 +144,7 @@ async def test_user_can_recreate_closed_session_via_factory() -> None:
|
|
|
140
144
|
created_sessions.append(client1.session)
|
|
141
145
|
assert call_count == 1 # Factory called once in __aenter__
|
|
142
146
|
|
|
143
|
-
# SDK doesn't close session (
|
|
147
|
+
# SDK doesn't close session (caller_managed_session=True)
|
|
144
148
|
assert created_sessions[0] is not None
|
|
145
149
|
assert not created_sessions[0].closed
|
|
146
150
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.2.16
|
|
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
|
{helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/__init__.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
|
|
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
|
{helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/py.typed
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
|
|
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
|
|
File without changes
|
|
File without changes
|
{helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.18}/helix_fhir_client_sdk/test/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|