helix.fhir.client.sdk 4.2.2__tar.gz → 4.2.4__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 (228) hide show
  1. {helix_fhir_client_sdk-4.2.2/helix.fhir.client.sdk.egg-info → helix_fhir_client_sdk-4.2.4}/PKG-INFO +2 -5
  2. helix_fhir_client_sdk-4.2.4/VERSION +1 -0
  3. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4/helix.fhir.client.sdk.egg-info}/PKG-INFO +2 -5
  4. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix.fhir.client.sdk.egg-info/SOURCES.txt +1 -3
  5. helix_fhir_client_sdk-4.2.4/helix.fhir.client.sdk.egg-info/requires.txt +8 -0
  6. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/fhir_auth_mixin.py +8 -13
  7. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/fhir_client.py +48 -82
  8. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/fhir_delete_mixin.py +2 -5
  9. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/fhir_merge_mixin.py +1 -4
  10. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/fhir_merge_resources_mixin.py +2 -8
  11. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/fhir_patch_mixin.py +1 -4
  12. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/fhir_update_mixin.py +1 -4
  13. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/simulated_graph_processor_mixin.py +21 -5
  14. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/queue/request_queue_mixin.py +7 -18
  15. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/bundle_expander.py +3 -0
  16. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/fhir_client_protocol.py +1 -3
  17. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/fhir_delete_response.py +3 -0
  18. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/fhir_get_response.py +5 -1
  19. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/fhir_merge_response.py +5 -0
  20. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/fhir_response_processor.py +65 -73
  21. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/fhir_update_response.py +3 -0
  22. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/fhir_get_bundle_response.py +21 -1
  23. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/fhir_get_error_response.py +7 -0
  24. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/fhir_get_list_by_resource_type_response.py +22 -1
  25. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/fhir_get_list_response.py +20 -1
  26. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/fhir_get_response_factory.py +3 -0
  27. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/fhir_get_single_response.py +21 -1
  28. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get_result.py +4 -0
  29. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response.py +2 -0
  30. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/paging_result.py +5 -1
  31. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/resource_separator.py +1 -1
  32. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/test_fhir_get_response.py +3 -0
  33. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/async_parallel_processor/v1/async_parallel_processor.py +3 -0
  34. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/cache/request_cache.py +60 -34
  35. helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/utilities/logging_decorators.py +64 -0
  36. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/retryable_aiohttp_client.py +149 -158
  37. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/retryable_aiohttp_response.py +5 -2
  38. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/setup.py +1 -4
  39. helix_fhir_client_sdk-4.2.2/VERSION +0 -1
  40. helix_fhir_client_sdk-4.2.2/helix.fhir.client.sdk.egg-info/requires.txt +0 -11
  41. helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/open_telemetry/attribute_names.py +0 -4
  42. helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/open_telemetry/span_names.py +0 -8
  43. helix_fhir_client_sdk-4.2.2/tests_integration/__init__.py +0 -0
  44. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/LICENSE +0 -0
  45. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/MANIFEST.in +0 -0
  46. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/Makefile +0 -0
  47. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/README.md +0 -0
  48. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix.fhir.client.sdk.egg-info/dependency_links.txt +0 -0
  49. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix.fhir.client.sdk.egg-info/not-zip-safe +0 -0
  50. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix.fhir.client.sdk.egg-info/top_level.txt +0 -0
  51. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/__init__.py +0 -0
  52. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/dictionary_parser.py +0 -0
  53. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/dictionary_writer.py +0 -0
  54. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/exceptions/__init__.py +0 -0
  55. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/exceptions/fhir_get_exception.py +0 -0
  56. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/exceptions/fhir_sender_exception.py +0 -0
  57. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/exceptions/fhir_validation_exception.py +0 -0
  58. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/fhir_bundle_appender.py +0 -0
  59. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/__init__.py +0 -0
  60. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/base_filter.py +0 -0
  61. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/identifier_filter.py +0 -0
  62. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/last_updated_filter.py +0 -0
  63. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/property_filter.py +0 -0
  64. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/property_missing_filter.py +0 -0
  65. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/security_access_filter.py +0 -0
  66. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/security_owner_filter.py +0 -0
  67. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/sort_field.py +0 -0
  68. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/source_filter.py +0 -0
  69. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/filters/version_filter.py +0 -0
  70. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/function_types.py +0 -0
  71. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/__init__.py +0 -0
  72. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/fhir_graph_mixin.py +0 -0
  73. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/graph_definition.py +0 -0
  74. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/graph_link_parameters.py +0 -0
  75. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/graph_target_parameters.py +0 -0
  76. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/test/__init__.py +0 -0
  77. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/test/test_graph_mixin.py +0 -0
  78. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin.py +0 -0
  79. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin_caching.py +0 -0
  80. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/py.typed +0 -0
  81. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/open_telemetry → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/queue}/__init__.py +0 -0
  82. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/queue → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/responses}/__init__.py +0 -0
  83. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/responses → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/responses/get}/__init__.py +0 -0
  84. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/responses/get → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/responses/get/test}/__init__.py +0 -0
  85. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/test/test_get_bundle_response.py +0 -0
  86. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/test/test_get_error_response.py +0 -0
  87. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/test/test_get_list_by_resource_type_response.py +0 -0
  88. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/test/test_get_list_response.py +0 -0
  89. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/test/test_get_response_factory.py +0 -0
  90. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/get/test/test_get_single_response.py +0 -0
  91. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/responses/get/test → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/responses/merge}/__init__.py +0 -0
  92. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/merge/base_fhir_merge_resource_response_entry.py +0 -0
  93. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/merge/fhir_merge_resource_response_entry.py +0 -0
  94. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/merge/fhir_merge_response_entry_issue.py +0 -0
  95. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/responses/merge → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/responses/test}/__init__.py +0 -0
  96. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/responses/test → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/responses/test/fhir_response_processor}/__init__.py +0 -0
  97. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_expand_or_separate_bundle_async.py +0 -0
  98. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200.py +0 -0
  99. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_non_streaming.py +0 -0
  100. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_non_streaming_separate_bundle.py +0 -0
  101. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming.py +0 -0
  102. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming_separate_bundle.py +0 -0
  103. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_200_streaming_separate_bundle_ndjson.py +0 -0
  104. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/fhir_response_processor/test_handle_response_404.py +0 -0
  105. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/test_bundle_expander.py +0 -0
  106. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/responses/test/test_resource_separator.py +0 -0
  107. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/responses/test/fhir_response_processor → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/structures}/__init__.py +0 -0
  108. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/structures/get_access_token_result.py +0 -0
  109. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/structures → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/test}/__init__.py +0 -0
  110. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/test/test_delete_mixin.py +0 -0
  111. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/test/test_fhir_auth_mixin.py +0 -0
  112. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/test/test_fhir_bundle_appender.py +0 -0
  113. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/test/test_merge_mixin.py +0 -0
  114. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/test/test_merge_mixin_resources.py +0 -0
  115. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/test → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/utilities}/__init__.py +0 -0
  116. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/utilities → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/utilities/async_parallel_processor}/__init__.py +0 -0
  117. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/utilities/async_parallel_processor → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/utilities/async_parallel_processor/v1}/__init__.py +0 -0
  118. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/async_runner.py +0 -0
  119. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/utilities/async_parallel_processor/v1 → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/utilities/cache}/__init__.py +0 -0
  120. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/cache/request_cache_entry.py +0 -0
  121. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/fhir_client_logger.py +0 -0
  122. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/fhir_helper.py +0 -0
  123. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/fhir_scope_parser.py +0 -0
  124. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/fhir_scope_parser_result.py +0 -0
  125. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/fhir_server_helpers.py +0 -0
  126. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/hash_util.py +0 -0
  127. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/list_chunker.py +0 -0
  128. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/ndjson_chunk_streaming_parser.py +0 -0
  129. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/practitioner_generator.py +0 -0
  130. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/retryable_aiohttp_url_result.py +0 -0
  131. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/utilities/cache → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/utilities/size_calculator}/__init__.py +0 -0
  132. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/size_calculator/size_calculator.py +0 -0
  133. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/utilities/size_calculator → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/utilities/test}/__init__.py +0 -0
  134. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/test/test_async_runner.py +0 -0
  135. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser.py +0 -0
  136. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser_can_parse_scopes.py +0 -0
  137. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/test/test_fhir_scope_parser_correct_allow.py +0 -0
  138. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/test/test_json_helpers.py +0 -0
  139. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/test/test_list_chunker.py +0 -0
  140. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/test/test_ndjson_chunk_streaming_parser.py +0 -0
  141. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/test/test_retryable_aiohttp_client.py +0 -0
  142. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/utilities/url_checker.py +0 -0
  143. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/utilities/test → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/validators}/__init__.py +0 -0
  144. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/validators/async_fhir_validator.py +0 -0
  145. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/validators/fhir_validator.py +0 -0
  146. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/validators → helix_fhir_client_sdk-4.2.4/helix_fhir_client_sdk/validators/test}/__init__.py +0 -0
  147. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/validators/test/test_async_fhir_validator.py +0 -0
  148. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/helix_fhir_client_sdk/well_known_configuration.py +0 -0
  149. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/pyproject.toml +0 -0
  150. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/setup.cfg +0 -0
  151. {helix_fhir_client_sdk-4.2.2/helix_fhir_client_sdk/validators/test → helix_fhir_client_sdk-4.2.4/tests}/__init__.py +0 -0
  152. {helix_fhir_client_sdk-4.2.2/tests → helix_fhir_client_sdk-4.2.4/tests/async}/__init__.py +0 -0
  153. {helix_fhir_client_sdk-4.2.2/tests/async → helix_fhir_client_sdk-4.2.4/tests/async/fhir_server}/__init__.py +0 -0
  154. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/fhir_server/test_async_real_fhir_server_get_graph_large.py +0 -0
  155. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/fhir_server/test_async_real_fhir_server_get_patients_large.py +0 -0
  156. {helix_fhir_client_sdk-4.2.2/tests/async/fhir_server → helix_fhir_client_sdk-4.2.4/tests/async/graph}/__init__.py +0 -0
  157. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/graph/test_fhir_graph.py +0 -0
  158. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/graph/test_fhir_graph_multiple_ids.py +0 -0
  159. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/graph/test_fhir_graph_multiple_ids_in_batches.py +0 -0
  160. {helix_fhir_client_sdk-4.2.2/tests/async/graph → helix_fhir_client_sdk-4.2.4/tests/async/simulated_graph}/__init__.py +0 -0
  161. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_async.py +0 -0
  162. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_async.py +0 -0
  163. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_input_cache_async.py +0 -0
  164. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_input_cache_if_modified_since_async.py +0 -0
  165. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_caching_scope_parser_async.py +0 -0
  166. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_separate_resources_async.py +0 -0
  167. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_with_errors_async.py +0 -0
  168. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_with_operation_outcomes_async.py +0 -0
  169. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph/test_fhir_simulated_graph_with_url_column_async.py +0 -0
  170. {helix_fhir_client_sdk-4.2.2/tests/async/simulated_graph → helix_fhir_client_sdk-4.2.4/tests/async/simulated_graph_practitioner}/__init__.py +0 -0
  171. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_async.py +0 -0
  172. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_in_one_call_async.py +0 -0
  173. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_multiple_practitioner_in_one_call_async_with_request_size.py +0 -0
  174. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_practitioner_async.py +0 -0
  175. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/simulated_graph_practitioner/test_fhir_simulated_graph_practitioner_separate_resources_async.py +0 -0
  176. {helix_fhir_client_sdk-4.2.2/tests/async/simulated_graph_practitioner → helix_fhir_client_sdk-4.2.4/tests/async/test_async_fhir_client_bundle}/__init__.py +0 -0
  177. {helix_fhir_client_sdk-4.2.2/tests/async/test_async_fhir_client_bundle → helix_fhir_client_sdk-4.2.4/tests/async/test_async_fhir_client_bundle/not_expanded}/__init__.py +0 -0
  178. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_bundle/not_expanded/test_fhir_client_bundle_not_expanded.py +0 -0
  179. {helix_fhir_client_sdk-4.2.2/tests/async/test_async_fhir_client_bundle/not_expanded → helix_fhir_client_sdk-4.2.4/tests/async/test_async_fhir_client_bundle/not_separated}/__init__.py +0 -0
  180. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_bundle/not_separated/test_fhir_client_bundle_not_separated.py +0 -0
  181. {helix_fhir_client_sdk-4.2.2/tests/async/test_async_fhir_client_bundle/not_separated → helix_fhir_client_sdk-4.2.4/tests/async/test_async_fhir_client_bundle/separated}/__init__.py +0 -0
  182. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_bundle/separated/test_fhir_client_bundle_separated.py +0 -0
  183. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_fetch_response_in_chunks.py +0 -0
  184. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_by_id.py +0 -0
  185. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_by_identifier_missing.py +0 -0
  186. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_delete.py +0 -0
  187. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_list.py +0 -0
  188. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_list_auth_fail.py +0 -0
  189. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_list_auth_fail_retry.py +0 -0
  190. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_list_auth_fail_retry_custom_refresh_function.py +0 -0
  191. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_list_resource_streaming.py +0 -0
  192. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_list_streaming.py +0 -0
  193. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_merge.py +0 -0
  194. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_merge_with_validate.py +0 -0
  195. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_fhir_client_patient_update.py +0 -0
  196. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_real_fhir_server_get_patients.py +0 -0
  197. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/async/test_async_real_fhir_server_get_patients_error.py +0 -0
  198. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/logger_for_test.py +0 -0
  199. {helix_fhir_client_sdk-4.2.2/tests/async/test_async_fhir_client_bundle/separated → helix_fhir_client_sdk-4.2.4/tests/sync}/__init__.py +0 -0
  200. {helix_fhir_client_sdk-4.2.2/tests/sync → helix_fhir_client_sdk-4.2.4/tests/sync/graph}/__init__.py +0 -0
  201. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/graph/test_fhir_graph.py +0 -0
  202. {helix_fhir_client_sdk-4.2.2/tests/sync/graph → helix_fhir_client_sdk-4.2.4/tests/sync/test_fhir_client_bundle}/__init__.py +0 -0
  203. {helix_fhir_client_sdk-4.2.2/tests/sync/test_fhir_client_bundle → helix_fhir_client_sdk-4.2.4/tests/sync/test_fhir_client_bundle/not_expanded}/__init__.py +0 -0
  204. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_bundle/not_expanded/test_fhir_client_bundle_not_expanded.py +0 -0
  205. {helix_fhir_client_sdk-4.2.2/tests/sync/test_fhir_client_bundle/not_expanded → helix_fhir_client_sdk-4.2.4/tests/sync/test_fhir_client_bundle/not_separated}/__init__.py +0 -0
  206. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_bundle/not_separated/test_fhir_client_bundle_not_separated.py +0 -0
  207. {helix_fhir_client_sdk-4.2.2/tests/sync/test_fhir_client_bundle/not_separated → helix_fhir_client_sdk-4.2.4/tests/sync/test_fhir_client_bundle/separated}/__init__.py +0 -0
  208. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_bundle/separated/test_fhir_client_bundle_separated.py +0 -0
  209. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_logs_not_contains_secret_information.py +0 -0
  210. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_patient_by_id.py +0 -0
  211. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_patient_delete.py +0 -0
  212. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_patient_list.py +0 -0
  213. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_patient_list_auth_fail.py +0 -0
  214. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_patient_list_auth_fail_retry.py +0 -0
  215. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_patient_merge.py +0 -0
  216. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_patient_update.py +0 -0
  217. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/sync/test_fhir_client_patient_update_patch.py +0 -0
  218. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests/test_get_nested_property.py +0 -0
  219. {helix_fhir_client_sdk-4.2.2/tests/sync/test_fhir_client_bundle/separated → helix_fhir_client_sdk-4.2.4/tests_integration}/__init__.py +0 -0
  220. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests_integration/test_aetna_server_auth.py +0 -0
  221. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests_integration/test_aetna_server_auth_aiohttp.py +0 -0
  222. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests_integration/test_aetna_server_auth_httpx.py +0 -0
  223. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests_integration/test_dev_server_auth.py +0 -0
  224. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests_integration/test_dev_server_no_auth.py +0 -0
  225. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests_integration/test_emr_server_auth.py +0 -0
  226. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests_integration/test_firely_fhir.py +0 -0
  227. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/tests_integration/test_merge_vs_smart_merge_behavior.py +0 -0
  228. {helix_fhir_client_sdk-4.2.2 → helix_fhir_client_sdk-4.2.4}/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.2
3
+ Version: 4.2.4
4
4
  Summary: helix.fhir.client.sdk
5
5
  Home-page: https://github.com/icanbwell/helix.fhir.client.sdk
6
6
  Author: Imran Qureshi
@@ -19,10 +19,7 @@ Requires-Dist: chardet
19
19
  Requires-Dist: aiohttp
20
20
  Requires-Dist: async-timeout>=4.0.3
21
21
  Requires-Dist: python-dateutil
22
- Requires-Dist: compressedfhir>=1.0.13
23
- Requires-Dist: certifi>=2025.1.31
24
- Requires-Dist: opentelemetry-api>=1.39
25
- Requires-Dist: multidict>=6
22
+ Requires-Dist: compressedfhir>=1.0.3
26
23
  Dynamic: author
27
24
  Dynamic: author-email
28
25
  Dynamic: classifier
@@ -0,0 +1 @@
1
+ 4.2.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: helix.fhir.client.sdk
3
- Version: 4.2.2
3
+ Version: 4.2.4
4
4
  Summary: helix.fhir.client.sdk
5
5
  Home-page: https://github.com/icanbwell/helix.fhir.client.sdk
6
6
  Author: Imran Qureshi
@@ -19,10 +19,7 @@ Requires-Dist: chardet
19
19
  Requires-Dist: aiohttp
20
20
  Requires-Dist: async-timeout>=4.0.3
21
21
  Requires-Dist: python-dateutil
22
- Requires-Dist: compressedfhir>=1.0.13
23
- Requires-Dist: certifi>=2025.1.31
24
- Requires-Dist: opentelemetry-api>=1.39
25
- Requires-Dist: multidict>=6
22
+ Requires-Dist: compressedfhir>=1.0.3
26
23
  Dynamic: author
27
24
  Dynamic: author-email
28
25
  Dynamic: classifier
@@ -51,9 +51,6 @@ helix_fhir_client_sdk/graph/test/__init__.py
51
51
  helix_fhir_client_sdk/graph/test/test_graph_mixin.py
52
52
  helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin.py
53
53
  helix_fhir_client_sdk/graph/test/test_simulate_graph_processor_mixin_caching.py
54
- helix_fhir_client_sdk/open_telemetry/__init__.py
55
- helix_fhir_client_sdk/open_telemetry/attribute_names.py
56
- helix_fhir_client_sdk/open_telemetry/span_names.py
57
54
  helix_fhir_client_sdk/queue/__init__.py
58
55
  helix_fhir_client_sdk/queue/request_queue_mixin.py
59
56
  helix_fhir_client_sdk/responses/__init__.py
@@ -116,6 +113,7 @@ helix_fhir_client_sdk/utilities/fhir_scope_parser_result.py
116
113
  helix_fhir_client_sdk/utilities/fhir_server_helpers.py
117
114
  helix_fhir_client_sdk/utilities/hash_util.py
118
115
  helix_fhir_client_sdk/utilities/list_chunker.py
116
+ helix_fhir_client_sdk/utilities/logging_decorators.py
119
117
  helix_fhir_client_sdk/utilities/ndjson_chunk_streaming_parser.py
120
118
  helix_fhir_client_sdk/utilities/practitioner_generator.py
121
119
  helix_fhir_client_sdk/utilities/retryable_aiohttp_client.py
@@ -0,0 +1,8 @@
1
+ furl
2
+ requests
3
+ urllib3
4
+ chardet
5
+ aiohttp
6
+ async-timeout>=4.0.3
7
+ python-dateutil
8
+ compressedfhir>=1.0.3
@@ -8,13 +8,11 @@ from threading import Lock
8
8
  from typing import TYPE_CHECKING, Any, cast
9
9
 
10
10
  from furl import furl
11
- from opentelemetry import trace
12
11
 
13
12
  from helix_fhir_client_sdk.function_types import (
14
13
  RefreshTokenFunction,
15
14
  RefreshTokenResult,
16
15
  )
17
- from helix_fhir_client_sdk.open_telemetry.span_names import FhirClientSdkOpenTelemetrySpanNames
18
16
  from helix_fhir_client_sdk.responses.fhir_client_protocol import FhirClientProtocol
19
17
  from helix_fhir_client_sdk.structures.get_access_token_result import (
20
18
  GetAccessTokenResult,
@@ -33,9 +31,6 @@ if TYPE_CHECKING:
33
31
  from helix_fhir_client_sdk.fhir_client import FhirClient
34
32
 
35
33
 
36
- TRACER = trace.get_tracer(__name__)
37
-
38
-
39
34
  class FhirAuthMixin(FhirClientProtocol):
40
35
  _time_to_live_in_secs_for_cache: int = 10 * 60
41
36
 
@@ -124,15 +119,15 @@ class FhirAuthMixin(FhirClientProtocol):
124
119
  access_token=self._access_token,
125
120
  expiry_date=self._access_token_expiry_date,
126
121
  )
127
- with TRACER.start_as_current_span(FhirClientSdkOpenTelemetrySpanNames.GET_ACCESS_TOKEN):
128
- refresh_token_result: RefreshTokenResult = await self._refresh_token_function(
129
- url=None, status_code=0, current_token=None, expiry_date=None, retry_count=0
130
- )
131
- assert isinstance(refresh_token_result, RefreshTokenResult)
132
122
 
133
- self.set_access_token(refresh_token_result.access_token)
134
- self.set_access_token_expiry_date(refresh_token_result.expiry_date)
135
- return GetAccessTokenResult(access_token=self._access_token, expiry_date=self._access_token_expiry_date)
123
+ refresh_token_result: RefreshTokenResult = await self._refresh_token_function(
124
+ url=None, status_code=0, current_token=None, expiry_date=None, retry_count=0
125
+ )
126
+ assert isinstance(refresh_token_result, RefreshTokenResult)
127
+
128
+ self.set_access_token(refresh_token_result.access_token)
129
+ self.set_access_token_expiry_date(refresh_token_result.expiry_date)
130
+ return GetAccessTokenResult(access_token=self._access_token, expiry_date=self._access_token_expiry_date)
136
131
 
137
132
  def authenticate_async_wrapper(self) -> RefreshTokenFunction:
138
133
  """
@@ -26,8 +26,6 @@ from compressedfhir.utilities.compressed_dict.v1.compressed_dict_storage_mode im
26
26
  CompressedDictStorageMode,
27
27
  )
28
28
  from furl import furl
29
- from opentelemetry import trace
30
- from opentelemetry.trace import Status, StatusCode
31
29
  from requests.adapters import BaseAdapter
32
30
 
33
31
  from helix_fhir_client_sdk.dictionary_writer import convert_dict_to_str
@@ -48,7 +46,6 @@ from helix_fhir_client_sdk.graph.fhir_graph_mixin import FhirGraphMixin
48
46
  from helix_fhir_client_sdk.graph.simulated_graph_processor_mixin import (
49
47
  SimulatedGraphProcessorMixin,
50
48
  )
51
- from helix_fhir_client_sdk.open_telemetry.span_names import FhirClientSdkOpenTelemetrySpanNames
52
49
  from helix_fhir_client_sdk.queue.request_queue_mixin import RequestQueueMixin
53
50
  from helix_fhir_client_sdk.responses.fhir_client_protocol import FhirClientProtocol
54
51
  from helix_fhir_client_sdk.responses.fhir_get_response import FhirGetResponse
@@ -58,8 +55,6 @@ from helix_fhir_client_sdk.structures.get_access_token_result import (
58
55
  from helix_fhir_client_sdk.utilities.async_runner import AsyncRunner
59
56
  from helix_fhir_client_sdk.utilities.fhir_client_logger import FhirClientLogger
60
57
 
61
- TRACER = trace.get_tracer(__name__)
62
-
63
58
 
64
59
  class FhirClient(
65
60
  SimulatedGraphProcessorMixin,
@@ -471,24 +466,6 @@ class FhirClient(
471
466
  self._throw_exception_on_error = throw_exception_on_error
472
467
  return self
473
468
 
474
- def set_persistent_session(self, session: ClientSession | None) -> FhirClient:
475
- """
476
- Sets the persistent session to use for requests
477
-
478
- :param session: persistent session
479
- """
480
- self._persistent_session = session
481
- return self
482
-
483
- def use_persistent_session(self, value: bool) -> FhirClient:
484
- """
485
- Sets the use_persistent_session flag
486
-
487
- :param value: whether to use the persistent session
488
- """
489
- self._use_persistent_session = value
490
- return self
491
-
492
469
  def close_session_after_request(self, value: bool) -> FhirClient:
493
470
  """
494
471
  Sets the _close_session flag (default is True)
@@ -611,34 +588,33 @@ class FhirClient(
611
588
 
612
589
  :return: response
613
590
  """
614
- with TRACER.start_as_current_span(FhirClientSdkOpenTelemetrySpanNames.GET):
615
- instance_variables_text = convert_dict_to_str(FhirClientLogger.get_variables_to_log(vars(self)))
616
- if self._logger:
617
- # self._logger.info(f"LOGLEVEL: {self._log_level}")
618
- self._logger.debug(f"parameters: {instance_variables_text}")
619
- else:
620
- self._internal_logger.debug(f"LOGLEVEL (InternalLogger): {self._log_level}")
621
- self._internal_logger.debug(f"parameters: {instance_variables_text}")
622
- ids: list[str] | None = None
623
- if self._id:
624
- ids = self._id if isinstance(self._id, list) else [self._id]
625
- # actually make the request
626
- full_response: FhirGetResponse | None = None
627
- async for response in self._get_with_session_async(
628
- ids=ids,
629
- fn_handle_streaming_chunk=data_chunk_handler,
630
- page_number=None,
631
- id_above=None,
632
- additional_parameters=None,
633
- resource_type=None,
634
- ):
635
- if response:
636
- if full_response:
637
- full_response = full_response.append(response)
638
- else:
639
- full_response = response
640
- assert full_response
641
- return full_response
591
+ instance_variables_text = convert_dict_to_str(FhirClientLogger.get_variables_to_log(vars(self)))
592
+ if self._logger:
593
+ # self._logger.info(f"LOGLEVEL: {self._log_level}")
594
+ self._logger.debug(f"parameters: {instance_variables_text}")
595
+ else:
596
+ self._internal_logger.debug(f"LOGLEVEL (InternalLogger): {self._log_level}")
597
+ self._internal_logger.debug(f"parameters: {instance_variables_text}")
598
+ ids: list[str] | None = None
599
+ if self._id:
600
+ ids = self._id if isinstance(self._id, list) else [self._id]
601
+ # actually make the request
602
+ full_response: FhirGetResponse | None = None
603
+ async for response in self._get_with_session_async(
604
+ ids=ids,
605
+ fn_handle_streaming_chunk=data_chunk_handler,
606
+ page_number=None,
607
+ id_above=None,
608
+ additional_parameters=None,
609
+ resource_type=None,
610
+ ):
611
+ if response:
612
+ if full_response:
613
+ full_response = full_response.append(response)
614
+ else:
615
+ full_response = response
616
+ assert full_response
617
+ return full_response
642
618
 
643
619
  async def get_raw_resources_async(
644
620
  self,
@@ -679,37 +655,27 @@ class FhirClient(
679
655
 
680
656
  :return: async generator of responses
681
657
  """
682
- span = TRACER.start_span(FhirClientSdkOpenTelemetrySpanNames.GET_STREAMING)
683
- try:
684
- instance_variables_text = convert_dict_to_str(FhirClientLogger.get_variables_to_log(vars(self)))
685
- if self._logger:
686
- # self._logger.info(f"LOGLEVEL: {self._log_level}")
687
- self._logger.info(f"parameters: {instance_variables_text}")
688
- else:
689
- self._internal_logger.info(f"LOGLEVEL (InternalLogger): {self._log_level}")
690
- self._internal_logger.info(f"parameters: {instance_variables_text}")
691
- ids: list[str] | None = None
692
- if self._id:
693
- ids = self._id if isinstance(self._id, list) else [self._id]
694
- # actually make the request
695
- response: FhirGetResponse | None
696
- async for response in self._get_with_session_async(
697
- ids=ids,
698
- fn_handle_streaming_chunk=data_chunk_handler,
699
- page_number=None,
700
- id_above=None,
701
- additional_parameters=None,
702
- resource_type=None,
703
- ):
704
- yield response
705
- except BaseException as exc: # propagate cancellation/errors but keep span informative
706
- # Record exception in span
707
- span.record_exception(exc)
708
- span.set_status(Status(StatusCode.ERROR, str(exc)))
709
- raise
710
- finally:
711
- # Ensure span is ended after generator is exhausted or error occurs
712
- span.end()
658
+ instance_variables_text = convert_dict_to_str(FhirClientLogger.get_variables_to_log(vars(self)))
659
+ if self._logger:
660
+ # self._logger.info(f"LOGLEVEL: {self._log_level}")
661
+ self._logger.info(f"parameters: {instance_variables_text}")
662
+ else:
663
+ self._internal_logger.info(f"LOGLEVEL (InternalLogger): {self._log_level}")
664
+ self._internal_logger.info(f"parameters: {instance_variables_text}")
665
+ ids: list[str] | None = None
666
+ if self._id:
667
+ ids = self._id if isinstance(self._id, list) else [self._id]
668
+ # actually make the request
669
+ response: FhirGetResponse | None
670
+ async for response in self._get_with_session_async(
671
+ ids=ids,
672
+ fn_handle_streaming_chunk=data_chunk_handler,
673
+ page_number=None,
674
+ id_above=None,
675
+ additional_parameters=None,
676
+ resource_type=None,
677
+ ):
678
+ yield response
713
679
 
714
680
  def get(self) -> FhirGetResponse:
715
681
  """
@@ -56,13 +56,10 @@ class FhirDeleteMixin(FhirClientProtocol):
56
56
  access_token=self._access_token,
57
57
  access_token_expiry_date=self._access_token_expiry_date,
58
58
  tracer_request_func=self._trace_request_function,
59
- persistent_session=self._persistent_session,
60
- use_persistent_session=self._use_persistent_session,
61
- close_session_on_exit=self._close_session,
62
59
  ) as client:
63
60
  response: RetryableAioHttpResponse = await client.delete(url=full_uri.tostr(), headers=headers)
64
61
  request_id = response.response_headers.get("X-Request-ID", None)
65
- self._internal_logger.debug(f"X-Request-ID={request_id}")
62
+ self._internal_logger.info(f"X-Request-ID={request_id}")
66
63
  if response.status == 200:
67
64
  if self._logger:
68
65
  self._logger.info(f"Successfully deleted: {full_uri}")
@@ -131,7 +128,7 @@ class FhirDeleteMixin(FhirClientProtocol):
131
128
  ) as client:
132
129
  response: RetryableAioHttpResponse = await client.delete(url=full_url, headers=headers)
133
130
  request_id = response.response_headers.get("X-Request-ID", None)
134
- self._internal_logger.debug(f"X-Request-ID={request_id}")
131
+ self._internal_logger.info(f"X-Request-ID={request_id}")
135
132
  if response.status == 200:
136
133
  if self._logger:
137
134
  self._logger.info(f"Successfully deleted: {full_uri}")
@@ -181,9 +181,6 @@ class FhirMergeMixin(FhirClientProtocol):
181
181
  log_all_url_results=self._log_all_response_urls,
182
182
  access_token=self._access_token,
183
183
  access_token_expiry_date=self._access_token_expiry_date,
184
- persistent_session=self._persistent_session,
185
- use_persistent_session=self._use_persistent_session,
186
- close_session_on_exit=self._close_session,
187
184
  ) as client:
188
185
  # should we check if it exists and do a POST then?
189
186
  response: RetryableAioHttpResponse = await client.post(
@@ -193,7 +190,7 @@ class FhirMergeMixin(FhirClientProtocol):
193
190
  )
194
191
  response_status = response.status
195
192
  request_id = response.response_headers.get("X-Request-ID", None)
196
- self._internal_logger.debug(f"X-Request-ID={request_id}")
193
+ self._internal_logger.info(f"X-Request-ID={request_id}")
197
194
  if response and response.status == 200:
198
195
  response_text = await response.get_text_async()
199
196
  if response_text:
@@ -124,9 +124,6 @@ class FhirMergeResourcesMixin(FhirClientProtocol):
124
124
  log_all_url_results=self._log_all_response_urls,
125
125
  access_token=self._access_token,
126
126
  access_token_expiry_date=self._access_token_expiry_date,
127
- persistent_session=self._persistent_session,
128
- use_persistent_session=self._use_persistent_session,
129
- close_session_on_exit=self._close_session,
130
127
  ) as client:
131
128
  # should we check if it exists and do a POST then?
132
129
  response: RetryableAioHttpResponse = await client.post(
@@ -136,7 +133,7 @@ class FhirMergeResourcesMixin(FhirClientProtocol):
136
133
  )
137
134
  response_status = response.status
138
135
  request_id = response.response_headers.get("X-Request-ID", None)
139
- self._internal_logger.debug(f"X-Request-ID={request_id}")
136
+ self._internal_logger.info(f"X-Request-ID={request_id}")
140
137
  if response and response.status == 200:
141
138
  response_text = await response.get_text_async()
142
139
  if response_text:
@@ -343,9 +340,6 @@ class FhirMergeResourcesMixin(FhirClientProtocol):
343
340
  log_all_url_results=self._log_all_response_urls,
344
341
  access_token=self._access_token,
345
342
  access_token_expiry_date=self._access_token_expiry_date,
346
- close_session_on_exit=self._close_session,
347
- persistent_session=self._persistent_session,
348
- use_persistent_session=self._use_persistent_session,
349
343
  ) as client:
350
344
  # should we check if it exists and do a POST then?
351
345
  response: RetryableAioHttpResponse = await client.post(
@@ -355,7 +349,7 @@ class FhirMergeResourcesMixin(FhirClientProtocol):
355
349
  )
356
350
  response_status = response.status
357
351
  request_id = response.response_headers.get("X-Request-ID", None)
358
- self._internal_logger.debug(f"X-Request-ID={request_id}")
352
+ self._internal_logger.info(f"X-Request-ID={request_id}")
359
353
  if response and response.status == 200:
360
354
  response_text = await response.get_text_async()
361
355
  if response_text:
@@ -72,9 +72,6 @@ class FhirPatchMixin(FhirClientProtocol):
72
72
  log_all_url_results=self._log_all_response_urls,
73
73
  access_token=self._access_token,
74
74
  access_token_expiry_date=self._access_token_expiry_date,
75
- persistent_session=self._persistent_session,
76
- use_persistent_session=self._use_persistent_session,
77
- close_session_on_exit=self._close_session,
78
75
  ) as client:
79
76
  response: RetryableAioHttpResponse = await client.patch(
80
77
  url=full_uri.url, json=deserialized_data, headers=headers
@@ -82,7 +79,7 @@ class FhirPatchMixin(FhirClientProtocol):
82
79
  response_status = response.status
83
80
  response_text = await response.get_text_async()
84
81
  request_id = response.response_headers.get("X-Request-ID", None)
85
- self._internal_logger.debug(f"X-Request-ID={request_id}")
82
+ self._internal_logger.info(f"X-Request-ID={request_id}")
86
83
 
87
84
  if response_status == 200:
88
85
  if self._logger:
@@ -106,13 +106,10 @@ class FhirUpdateMixin(FhirClientProtocol):
106
106
  log_all_url_results=self._log_all_response_urls,
107
107
  access_token=self._access_token,
108
108
  access_token_expiry_date=self._access_token_expiry_date,
109
- persistent_session=self._persistent_session,
110
- use_persistent_session=self._use_persistent_session,
111
- close_session_on_exit=self._close_session,
112
109
  ) as client:
113
110
  response = await client.put(url=full_uri.url, data=json_data, headers=headers)
114
111
  request_id = response.response_headers.get("X-Request-ID", None)
115
- self._internal_logger.debug(f"X-Request-ID={request_id}")
112
+ self._internal_logger.info(f"X-Request-ID={request_id}")
116
113
  if response.status == 200:
117
114
  if self._logger:
118
115
  self._logger.info(f"Successfully updated: {full_uri}")
@@ -3,6 +3,7 @@ from abc import ABC
3
3
  from collections.abc import AsyncGenerator
4
4
  from datetime import UTC, datetime
5
5
  from logging import Logger
6
+ import logging
6
7
  from typing import Any, cast
7
8
  from urllib.parse import quote
8
9
 
@@ -43,6 +44,7 @@ from helix_fhir_client_sdk.utilities.cache.request_cache import RequestCache
43
44
  from helix_fhir_client_sdk.utilities.cache.request_cache_entry import RequestCacheEntry
44
45
  from helix_fhir_client_sdk.utilities.fhir_scope_parser import FhirScopeParser
45
46
  from helix_fhir_client_sdk.utilities.hash_util import ResourceHash
47
+ from helix_fhir_client_sdk.utilities.logging_decorators import log_execution_time, log_execution_time_asyncgen
46
48
 
47
49
 
48
50
  class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
@@ -57,6 +59,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
57
59
  """
58
60
 
59
61
  # noinspection PyPep8Naming,PyUnusedLocal
62
+ @log_execution_time_asyncgen
60
63
  async def process_simulate_graph_async(
61
64
  self,
62
65
  *,
@@ -247,26 +250,30 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
247
250
 
248
251
  # Update parent link map for next iteration
249
252
  parent_link_map = new_parent_link_map
250
-
253
+ logging.info(f"# Combine and process responses")
251
254
  # Combine and process responses
252
- parent_response = cast(FhirGetBundleResponse, parent_response.extend(child_responses))
253
255
 
256
+ parent_response = cast(FhirGetBundleResponse, parent_response.extend(child_responses))
257
+ logging.info(f"# if sort_resources:")
254
258
  # Optional resource sorting
255
259
  if sort_resources:
256
260
  parent_response = parent_response.sort_resources()
257
-
261
+ logging.info(f"# full_response: FhirGetResponse")
258
262
  # Prepare final response based on bundling preferences
259
263
  full_response: FhirGetResponse
260
264
  if separate_bundle_resources:
265
+ logging.info(f"# if separate_bundle_resources:")
261
266
  full_response = FhirGetListByResourceTypeResponse.from_response(other_response=parent_response)
262
267
  elif expand_fhir_bundle:
268
+ logging.info(f"# elif expand_fhir_bundle:")
263
269
  full_response = FhirGetListResponse.from_response(other_response=parent_response)
264
270
  else:
271
+ logging.info(f"# else:")
265
272
  full_response = parent_response
266
-
273
+ logging.info(f"full_response.url = url or parent_response.url")
267
274
  # Set response URL
268
275
  full_response.url = url or parent_response.url
269
-
276
+ logging.info(f"# Log cache performance")
270
277
  # Log cache performance
271
278
  if logger:
272
279
  logger.info(
@@ -287,6 +294,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
287
294
  self.create_http_session = original_create_http_session # type: ignore[method-assign]
288
295
 
289
296
  # noinspection PyUnusedLocal
297
+ @log_execution_time
290
298
  async def process_link_async_parallel_function(
291
299
  self,
292
300
  context: ParallelFunctionContext,
@@ -381,6 +389,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
381
389
  # Return the list of retrieved responses
382
390
  return result
383
391
 
392
+ @log_execution_time_asyncgen
384
393
  async def _process_link_async(
385
394
  self,
386
395
  *,
@@ -465,6 +474,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
465
474
  yield target_response
466
475
 
467
476
  # noinspection PyUnusedLocal
477
+ @log_execution_time
468
478
  async def process_target_async_parallel_function(
469
479
  self,
470
480
  context: ParallelFunctionContext,
@@ -536,6 +546,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
536
546
  # Return the list of retrieved responses
537
547
  return result
538
548
 
549
+ @log_execution_time
539
550
  async def _process_child_group(
540
551
  self,
541
552
  *,
@@ -617,6 +628,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
617
628
  # Return the retrieved child resources
618
629
  return child_response
619
630
 
631
+ @log_execution_time_asyncgen
620
632
  async def _process_target_async(
621
633
  self,
622
634
  *,
@@ -852,6 +864,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
852
864
  if target.link:
853
865
  parent_link_map.append((target.link, children))
854
866
 
867
+ @log_execution_time
855
868
  async def _get_resources_by_id_one_by_one_async(
856
869
  self,
857
870
  *,
@@ -928,6 +941,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
928
941
 
929
942
  return result
930
943
 
944
+ @log_execution_time
931
945
  async def _get_resources_by_parameters_async(
932
946
  self,
933
947
  *,
@@ -1153,6 +1167,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
1153
1167
  return bundle_response, cache.cache_hits
1154
1168
 
1155
1169
  # noinspection PyPep8Naming
1170
+ @log_execution_time
1156
1171
  async def simulate_graph_async(
1157
1172
  self,
1158
1173
  *,
@@ -1233,6 +1248,7 @@ class SimulatedGraphProcessorMixin(ABC, FhirClientProtocol):
1233
1248
  return result
1234
1249
 
1235
1250
  # noinspection PyPep8Naming
1251
+ @log_execution_time_asyncgen
1236
1252
  async def simulate_graph_streaming_async(
1237
1253
  self,
1238
1254
  *,
@@ -49,6 +49,9 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
49
49
  self._max_concurrent_requests_semaphore = Semaphore(max_concurrent_requests)
50
50
  return self
51
51
 
52
+ from helix_fhir_client_sdk.utilities.logging_decorators import log_execution_time_asyncgen
53
+
54
+ @log_execution_time_asyncgen
52
55
  async def _get_with_session_async(
53
56
  self,
54
57
  page_number: int | None,
@@ -74,15 +77,6 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
74
77
  request_id: str | None = None
75
78
  total_results = 0 # total number of resources returned so far
76
79
 
77
- limit_count: int | None = self._limit
78
-
79
- # if _count parameter is present in additional_parameters then set limit_count to it
80
- if additional_parameters:
81
- for param in additional_parameters:
82
- if self._limit is None:
83
- if param.startswith("_count="):
84
- limit_count = int(param.split("=")[1])
85
-
86
80
  # create url and query to request from FHIR server
87
81
  resources_json: str = ""
88
82
  full_url = await self.build_url(
@@ -131,8 +125,6 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
131
125
  access_token=self._access_token,
132
126
  access_token_expiry_date=self._access_token_expiry_date,
133
127
  close_session_on_exit=self._close_session,
134
- persistent_session=self._persistent_session,
135
- use_persistent_session=self._use_persistent_session,
136
128
  ) as client:
137
129
  while next_url:
138
130
  # set access token in request if present
@@ -177,7 +169,7 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
177
169
  )
178
170
 
179
171
  request_id = response.response_headers.get("X-Request-ID", None)
180
- self._internal_logger.debug(f"X-Request-ID={request_id}")
172
+ self._internal_logger.info(f"X-Request-ID={request_id}")
181
173
 
182
174
  async for r in FhirResponseProcessor.handle_response(
183
175
  internal_logger=self._internal_logger,
@@ -207,9 +199,9 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
207
199
  total_results += resource_count
208
200
 
209
201
  # Stop if limit reached
210
- if limit_count and total_results >= limit_count:
202
+ if self._limit and total_results >= self._limit:
211
203
  self._internal_logger.info(
212
- f"Reached limit={limit_count} after collecting {total_results} "
204
+ f"Reached limit={self._limit} after collecting {total_results} "
213
205
  f"resources, stopping pagination"
214
206
  )
215
207
  return
@@ -301,9 +293,6 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
301
293
  log_all_url_results=self._log_all_response_urls,
302
294
  access_token=self._access_token,
303
295
  access_token_expiry_date=self._access_token_expiry_date,
304
- close_session_on_exit=self._close_session,
305
- persistent_session=self._persistent_session,
306
- use_persistent_session=self._use_persistent_session,
307
296
  ) as client:
308
297
  while next_url:
309
298
  # set access token in request if present
@@ -348,7 +337,7 @@ class RequestQueueMixin(ABC, FhirClientProtocol):
348
337
  )
349
338
 
350
339
  request_id = response.response_headers.get("X-Request-ID", None)
351
- self._internal_logger.debug(f"X-Request-ID={request_id}")
340
+ self._internal_logger.info(f"X-Request-ID={request_id}")
352
341
 
353
342
  if response.status == 200:
354
343
  response_next_url = None
@@ -1,6 +1,8 @@
1
1
  import dataclasses
2
2
  from typing import Any
3
3
 
4
+ from helix_fhir_client_sdk.utilities.logging_decorators import log_execution_time
5
+
4
6
 
5
7
  @dataclasses.dataclass(slots=True)
6
8
  class BundleExpanderResult:
@@ -10,6 +12,7 @@ class BundleExpanderResult:
10
12
 
11
13
  class BundleExpander:
12
14
  @staticmethod
15
+ @log_execution_time
13
16
  async def expand_bundle_async(
14
17
  *,
15
18
  bundle: dict[str, Any],
@@ -89,8 +89,6 @@ class FhirClientProtocol(Protocol):
89
89
  _send_data_as_chunked: bool = False
90
90
  _last_page_lock: Lock
91
91
 
92
- _persistent_session: ClientSession | None = None
93
- _use_persistent_session: bool = False
94
92
  _close_session: bool = True
95
93
 
96
94
  _use_post_for_search: bool = False
@@ -124,7 +122,7 @@ class FhirClientProtocol(Protocol):
124
122
 
125
123
  _log_all_response_urls: bool
126
124
 
127
- _storage_mode: CompressedDictStorageMode
125
+ _storage_mode: CompressedDictStorageMode = CompressedDictStorageMode.raw()
128
126
  """ storage mode to store the responses """
129
127
 
130
128
  _create_operation_outcome_for_error: bool | None