helix.fhir.client.sdk 4.2.16__tar.gz → 4.2.17__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.
Files changed (230) hide show
  1. {helix_fhir_client_sdk-4.2.16/helix.fhir.client.sdk.egg-info → helix_fhir_client_sdk-4.2.17}/PKG-INFO +1 -1
  2. helix_fhir_client_sdk-4.2.17/VERSION +1 -0
  3. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17/helix.fhir.client.sdk.egg-info}/PKG-INFO +1 -1
  4. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/fhir_auth_mixin.py +4 -2
  5. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/fhir_client.py +5 -8
  6. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/fhir_delete_mixin.py +4 -2
  7. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/fhir_merge_mixin.py +6 -3
  8. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/fhir_merge_resources_mixin.py +8 -4
  9. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/fhir_patch_mixin.py +2 -1
  10. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/fhir_update_mixin.py +4 -2
  11. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/queue/request_queue_mixin.py +4 -2
  12. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/retryable_aiohttp_client.py +9 -6
  13. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/validators/async_fhir_validator.py +3 -0
  14. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_retryable_client_session_management.py +7 -3
  15. helix_fhir_client_sdk-4.2.16/VERSION +0 -1
  16. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/LICENSE +0 -0
  17. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/MANIFEST.in +0 -0
  18. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/Makefile +0 -0
  19. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/README.md +0 -0
  20. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix.fhir.client.sdk.egg-info/SOURCES.txt +0 -0
  21. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix.fhir.client.sdk.egg-info/dependency_links.txt +0 -0
  22. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix.fhir.client.sdk.egg-info/not-zip-safe +0 -0
  23. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix.fhir.client.sdk.egg-info/requires.txt +0 -0
  24. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix.fhir.client.sdk.egg-info/top_level.txt +0 -0
  25. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/__init__.py +0 -0
  26. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/dictionary_parser.py +0 -0
  27. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/dictionary_writer.py +0 -0
  28. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/exceptions/__init__.py +0 -0
  29. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/exceptions/fhir_get_exception.py +0 -0
  30. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/exceptions/fhir_sender_exception.py +0 -0
  31. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/exceptions/fhir_validation_exception.py +0 -0
  32. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/fhir_bundle_appender.py +0 -0
  33. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/__init__.py +0 -0
  34. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/base_filter.py +0 -0
  35. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/identifier_filter.py +0 -0
  36. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/last_updated_filter.py +0 -0
  37. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/property_filter.py +0 -0
  38. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/property_missing_filter.py +0 -0
  39. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/security_access_filter.py +0 -0
  40. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/security_owner_filter.py +0 -0
  41. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/sort_field.py +0 -0
  42. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/source_filter.py +0 -0
  43. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/filters/version_filter.py +0 -0
  44. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/function_types.py +0 -0
  45. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/__init__.py +0 -0
  46. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/fhir_graph_mixin.py +0 -0
  47. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/graph_definition.py +0 -0
  48. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/graph_link_parameters.py +0 -0
  49. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/graph_target_parameters.py +0 -0
  50. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/simulated_graph_processor_mixin.py +0 -0
  51. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/test/__init__.py +0 -0
  52. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/test/test_graph_mixin.py +0 -0
  53. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin.py +0 -0
  54. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin_caching.py +0 -0
  55. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/open_telemetry/__init__.py +0 -0
  56. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/open_telemetry/attribute_names.py +0 -0
  57. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/open_telemetry/span_names.py +0 -0
  58. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/py.typed +0 -0
  59. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/queue/__init__.py +0 -0
  60. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/__init__.py +0 -0
  61. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/bundle_expander.py +0 -0
  62. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/fhir_client_protocol.py +0 -0
  63. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/fhir_delete_response.py +0 -0
  64. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/fhir_get_response.py +0 -0
  65. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/fhir_merge_response.py +0 -0
  66. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/fhir_response_processor.py +0 -0
  67. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/fhir_update_response.py +0 -0
  68. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/__init__.py +0 -0
  69. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/fhir_get_bundle_response.py +0 -0
  70. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/fhir_get_error_response.py +0 -0
  71. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/fhir_get_list_by_resource_type_response.py +0 -0
  72. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/fhir_get_list_response.py +0 -0
  73. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/fhir_get_response_factory.py +0 -0
  74. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/fhir_get_single_response.py +0 -0
  75. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/test/__init__.py +0 -0
  76. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/test/test_get_bundle_response.py +0 -0
  77. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/test/test_get_error_response.py +0 -0
  78. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/test/test_get_list_by_resource_type_response.py +0 -0
  79. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/test/test_get_list_response.py +0 -0
  80. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/test/test_get_response_factory.py +0 -0
  81. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get/test/test_get_single_response.py +0 -0
  82. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/get_result.py +0 -0
  83. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/merge/__init__.py +0 -0
  84. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/merge/base_fhir_merge_resource_response_entry.py +0 -0
  85. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response.py +0 -0
  86. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response_entry.py +0 -0
  87. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/merge/fhir_merge_response_entry_issue.py +0 -0
  88. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/paging_result.py +0 -0
  89. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/resource_separator.py +0 -0
  90. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/__init__.py +0 -0
  91. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/__init__.py +0 -0
  92. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_expand_or_separate_bundle_async.py +0 -0
  93. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200.py +0 -0
  94. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_non_streaming.py +0 -0
  95. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_non_streaming_separate_bundle.py +0 -0
  96. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming.py +0 -0
  97. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming_separate_bundle.py +0 -0
  98. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming_separate_bundle_ndjson.py +0 -0
  99. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_404.py +0 -0
  100. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/test_bundle_expander.py +0 -0
  101. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/test_fhir_get_response.py +0 -0
  102. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/responses/test/test_resource_separator.py +0 -0
  103. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/structures/__init__.py +0 -0
  104. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/structures/get_access_token_result.py +0 -0
  105. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/test/__init__.py +0 -0
  106. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/test/test_delete_mixin.py +0 -0
  107. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/test/test_fhir_auth_mixin.py +0 -0
  108. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/test/test_fhir_bundle_appender.py +0 -0
  109. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/test/test_merge_mixin.py +0 -0
  110. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/test/test_merge_mixin_resources.py +0 -0
  111. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/__init__.py +0 -0
  112. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/async_parallel_processor/__init__.py +0 -0
  113. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/async_parallel_processor/v1/__init__.py +0 -0
  114. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/async_parallel_processor/v1/async_parallel_processor.py +0 -0
  115. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/async_runner.py +0 -0
  116. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/cache/__init__.py +0 -0
  117. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/cache/request_cache.py +0 -0
  118. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/cache/request_cache_entry.py +0 -0
  119. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/fhir_client_logger.py +0 -0
  120. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/fhir_helper.py +0 -0
  121. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/fhir_scope_parser.py +0 -0
  122. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/fhir_scope_parser_result.py +0 -0
  123. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/fhir_server_helpers.py +0 -0
  124. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/hash_util.py +0 -0
  125. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/list_chunker.py +0 -0
  126. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/ndjson_chunk_streaming_parser.py +0 -0
  127. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/practitioner_generator.py +0 -0
  128. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/retryable_aiohttp_response.py +0 -0
  129. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/retryable_aiohttp_url_result.py +0 -0
  130. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/size_calculator/__init__.py +0 -0
  131. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/size_calculator/size_calculator.py +0 -0
  132. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/__init__.py +0 -0
  133. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/test_async_runner.py +0 -0
  134. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser.py +0 -0
  135. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser_can_parse_scopes.py +0 -0
  136. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser_correct_allow.py +0 -0
  137. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/test_json_helpers.py +0 -0
  138. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/test_list_chunker.py +0 -0
  139. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/test_ndjson_chunk_streaming_parser.py +0 -0
  140. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/test/test_retryable_aiohttp_client.py +0 -0
  141. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/utilities/url_checker.py +0 -0
  142. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/validators/__init__.py +0 -0
  143. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/validators/fhir_validator.py +0 -0
  144. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/validators/test/__init__.py +0 -0
  145. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/validators/test/test_async_fhir_validator.py +0 -0
  146. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/helix_fhir_client_sdk/well_known_configuration.py +0 -0
  147. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/pyproject.toml +0 -0
  148. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/setup.cfg +0 -0
  149. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/setup.py +0 -0
  150. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/__init__.py +0 -0
  151. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/__init__.py +0 -0
  152. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/fhir_server/__init__.py +0 -0
  153. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/fhir_server/test_async_real_fhir_server_get_graph_large.py +0 -0
  154. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/fhir_server/test_async_real_fhir_server_get_patients_large.py +0 -0
  155. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/graph/__init__.py +0 -0
  156. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/graph/test_fhir_graph.py +0 -0
  157. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/graph/test_fhir_graph_multiple_ids.py +0 -0
  158. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/graph/test_fhir_graph_multiple_ids_in_batches.py +0 -0
  159. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/__init__.py +0 -0
  160. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_async.py +0 -0
  161. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_async.py +0 -0
  162. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_input_cache_async.py +0 -0
  163. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_input_cache_if_modified_since_async.py +0 -0
  164. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_scope_parser_async.py +0 -0
  165. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_separate_resources_async.py +0 -0
  166. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_with_errors_async.py +0 -0
  167. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_with_operation_outcomes_async.py +0 -0
  168. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph/test_fhir_simulated_graph_with_url_column_async.py +0 -0
  169. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph_practitioner/__init__.py +0 -0
  170. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_async.py +0 -0
  171. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_in_one_call_async.py +0 -0
  172. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_in_one_call_async_with_request_size.py +0 -0
  173. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_practitioner_async.py +0 -0
  174. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_practitioner_separate_resources_async.py +0 -0
  175. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_bundle/__init__.py +0 -0
  176. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_bundle/not_expanded/__init__.py +0 -0
  177. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_bundle/not_expanded/test_fhir_client_bundle_not_expanded.py +0 -0
  178. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_bundle/not_separated/__init__.py +0 -0
  179. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_bundle/not_separated/test_fhir_client_bundle_not_separated.py +0 -0
  180. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_bundle/separated/__init__.py +0 -0
  181. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_bundle/separated/test_fhir_client_bundle_separated.py +0 -0
  182. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_fetch_response_in_chunks.py +0 -0
  183. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_by_id.py +0 -0
  184. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_by_identifier_missing.py +0 -0
  185. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_delete.py +0 -0
  186. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_list.py +0 -0
  187. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_list_auth_fail.py +0 -0
  188. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_list_auth_fail_retry.py +0 -0
  189. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_list_auth_fail_retry_custom_refresh_function.py +0 -0
  190. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_list_resource_streaming.py +0 -0
  191. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_list_streaming.py +0 -0
  192. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_merge.py +0 -0
  193. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_merge_with_validate.py +0 -0
  194. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_fhir_client_patient_update.py +0 -0
  195. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_real_fhir_server_get_patients.py +0 -0
  196. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_async_real_fhir_server_get_patients_error.py +0 -0
  197. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_benchmark_compress.py +0 -0
  198. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/async/test_benchmark_merge.py +0 -0
  199. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/logger_for_test.py +0 -0
  200. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/__init__.py +0 -0
  201. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/graph/__init__.py +0 -0
  202. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/graph/test_fhir_graph.py +0 -0
  203. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_bundle/__init__.py +0 -0
  204. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_bundle/not_expanded/__init__.py +0 -0
  205. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_bundle/not_expanded/test_fhir_client_bundle_not_expanded.py +0 -0
  206. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_bundle/not_separated/__init__.py +0 -0
  207. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_bundle/not_separated/test_fhir_client_bundle_not_separated.py +0 -0
  208. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_bundle/separated/__init__.py +0 -0
  209. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_bundle/separated/test_fhir_client_bundle_separated.py +0 -0
  210. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_logs_not_contains_secret_information.py +0 -0
  211. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_patient_by_id.py +0 -0
  212. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_patient_delete.py +0 -0
  213. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_patient_list.py +0 -0
  214. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_patient_list_auth_fail.py +0 -0
  215. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_patient_list_auth_fail_retry.py +0 -0
  216. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_patient_merge.py +0 -0
  217. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_patient_update.py +0 -0
  218. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/sync/test_fhir_client_patient_update_patch.py +0 -0
  219. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/test_fhir_client_clone.py +0 -0
  220. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests/test_get_nested_property.py +0 -0
  221. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/__init__.py +0 -0
  222. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_aetna_server_auth.py +0 -0
  223. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_aetna_server_auth_aiohttp.py +0 -0
  224. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_aetna_server_auth_httpx.py +0 -0
  225. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_dev_server_auth.py +0 -0
  226. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_dev_server_no_auth.py +0 -0
  227. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_emr_server_auth.py +0 -0
  228. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_firely_fhir.py +0 -0
  229. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_merge_vs_smart_merge_behavior.py +0 -0
  230. {helix_fhir_client_sdk-4.2.16 → helix_fhir_client_sdk-4.2.17}/tests_integration/test_staging_server_graph.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: helix.fhir.client.sdk
3
- Version: 4.2.16
3
+ Version: 4.2.17
4
4
  Summary: helix.fhir.client.sdk
5
5
  Home-page: https://github.com/icanbwell/helix.fhir.client.sdk
6
6
  Author: Imran Qureshi
@@ -0,0 +1 @@
1
+ 4.2.17
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: helix.fhir.client.sdk
3
- Version: 4.2.16
3
+ Version: 4.2.17
4
4
  Summary: helix.fhir.client.sdk
5
5
  Home-page: https://github.com/icanbwell/helix.fhir.client.sdk
6
6
  Author: Imran Qureshi
@@ -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=lambda: self.create_http_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=lambda: self.create_http_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,
@@ -846,16 +846,13 @@ class FhirClient(
846
846
 
847
847
  def create_http_session(self) -> ClientSession:
848
848
  """
849
- Creates an HTTP Session.
849
+ Creates the SDK's default HTTP Session.
850
850
 
851
- If a custom session factory was set via use_http_session(), it will be used.
852
- Otherwise, creates a default aiohttp ClientSession with standard configuration.
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
- # Default implementation
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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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=lambda: self.create_http_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 fn_get_session is None (default): The SDK creates and manages the session lifecycle.
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 fn_get_session is provided: The caller is responsible for managing the session lifecycle.
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 provided,
65
- the caller is responsible for closing the session.
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
- # Automatically determine if a session is caller-managed based on whether fn_get_session is provided
84
- self._caller_managed_session: bool = fn_get_session is not None
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
- # Since fn_get_session is provided, SDK will NOT close the session
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 fn_get_session was provided (caller manages session lifecycle)
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 (caller provided fn_get_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