leaf-common 1.2.43__tar.gz → 1.2.44__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 (267) hide show
  1. leaf_common-1.2.44/.github/workflows/checkmarx.yml +27 -0
  2. {leaf_common-1.2.43 → leaf_common-1.2.44}/PKG-INFO +1 -1
  3. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/asyncio/asyncio_executor.py +3 -1
  4. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/asyncio/asyncio_executor_pool.py +6 -3
  5. leaf_common-1.2.44/leaf_common/logging/sensitive_logger.py +143 -0
  6. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/mechanism/local_file_persistence_mechanism.py +3 -0
  7. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/mechanism/s3_file_persistence_mechanism.py +6 -4
  8. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/grpc_channel_security.py +5 -3
  9. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/grpc_client_retry.py +9 -7
  10. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common.egg-info/PKG-INFO +1 -1
  11. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common.egg-info/SOURCES.txt +2 -0
  12. {leaf_common-1.2.43 → leaf_common-1.2.44}/.coveragerc +0 -0
  13. {leaf_common-1.2.43 → leaf_common-1.2.44}/.flake8 +0 -0
  14. {leaf_common-1.2.43 → leaf_common-1.2.44}/.github/workflows/publish.yml +0 -0
  15. {leaf_common-1.2.43 → leaf_common-1.2.44}/.github/workflows/tests.yml +0 -0
  16. {leaf_common-1.2.43 → leaf_common-1.2.44}/.gitignore +0 -0
  17. {leaf_common-1.2.43 → leaf_common-1.2.44}/.pylintrc +0 -0
  18. {leaf_common-1.2.43 → leaf_common-1.2.44}/CODE_OF_CONDUCT.md +0 -0
  19. {leaf_common-1.2.43 → leaf_common-1.2.44}/CONTRIBUTING.md +0 -0
  20. {leaf_common-1.2.43 → leaf_common-1.2.44}/LICENSE.txt +0 -0
  21. {leaf_common-1.2.43 → leaf_common-1.2.44}/Makefile +0 -0
  22. {leaf_common-1.2.43 → leaf_common-1.2.44}/NOTICE.txt +0 -0
  23. {leaf_common-1.2.43 → leaf_common-1.2.44}/README.md +0 -0
  24. {leaf_common-1.2.43 → leaf_common-1.2.44}/SECURITY.md +0 -0
  25. {leaf_common-1.2.43 → leaf_common-1.2.44}/SUPPORT.md +0 -0
  26. {leaf_common-1.2.43 → leaf_common-1.2.44}/build_scripts/copyright_config.json +0 -0
  27. {leaf_common-1.2.43 → leaf_common-1.2.44}/build_scripts/run_flake8.sh +0 -0
  28. {leaf_common-1.2.43 → leaf_common-1.2.44}/build_scripts/run_pylint.sh +0 -0
  29. {leaf_common-1.2.43 → leaf_common-1.2.44}/build_scripts/source_available_copyright.txt +0 -0
  30. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/__init__.py +0 -0
  31. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/asyncio/__init__.py +0 -0
  32. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/asyncio/async_to_sync_generator.py +0 -0
  33. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/asyncio/asyncio_threadpool_executor.py +0 -0
  34. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/asyncio/event_loop_factory.py +0 -0
  35. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/asyncio/task_executor.py +0 -0
  36. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/candidates/__init__.py +0 -0
  37. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/candidates/constants.py +0 -0
  38. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/candidates/representation_types.py +0 -0
  39. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/__init__.py +0 -0
  40. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/config_filter.py +0 -0
  41. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/config_filter_chain.py +0 -0
  42. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/config_handler.py +0 -0
  43. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/dictionary_overlay.py +0 -0
  44. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/environment_defaults.py +0 -0
  45. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/file_of_class.py +0 -0
  46. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/resolver.py +0 -0
  47. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/config/resolver_util.py +0 -0
  48. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/evaluation/__init__.py +0 -0
  49. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/evaluation/component_evaluator.py +0 -0
  50. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/evaluation/metrics_merger.py +0 -0
  51. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/filters/__init__.py +0 -0
  52. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/filters/composite_string_filter.py +0 -0
  53. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/filters/inclusionary_replacement_string_filter.py +0 -0
  54. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/filters/replacement_string_filter.py +0 -0
  55. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/filters/sanitizer_util.py +0 -0
  56. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/filters/string_filter.py +0 -0
  57. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/filters/strip_whitespace_string_filter.py +0 -0
  58. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/filters/tensorflow_field_name_filter.py +0 -0
  59. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/__init__.py +0 -0
  60. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/candidate_metrics_provider.py +0 -0
  61. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/cmp_to_key.py +0 -0
  62. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/comparator.py +0 -0
  63. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/fitness_objective.py +0 -0
  64. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/fitness_objectives.py +0 -0
  65. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/fitness_objectives_builder.py +0 -0
  66. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/fitness_objectives_from_config.py +0 -0
  67. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/metrics_based_individual_comparator.py +0 -0
  68. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/metrics_provider.py +0 -0
  69. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/none_comparator.py +0 -0
  70. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/number_comparator.py +0 -0
  71. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/fitness/reversed_comparator.py +0 -0
  72. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/log_utils/__init__.py +0 -0
  73. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/log_utils/message_type.py +0 -0
  74. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/log_utils/structured_message.py +0 -0
  75. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/logging/__init__.py +0 -0
  76. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/logging/example_logging_config.hocon +0 -0
  77. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/logging/logging_setup.py +0 -0
  78. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/logging/stream_to_logger.py +0 -0
  79. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/__init__.py +0 -0
  80. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/boolean_list_parser.py +0 -0
  81. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/boolean_parser.py +0 -0
  82. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/canonical_multi_config_parser.py +0 -0
  83. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/dictionary_extractor.py +0 -0
  84. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/field_extractor.py +0 -0
  85. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/list_parser.py +0 -0
  86. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/parser.py +0 -0
  87. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/parsers/string_parser.py +0 -0
  88. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/__init__.py +0 -0
  89. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/easy/__init__.py +0 -0
  90. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/easy/abstract_easy_persistence.py +0 -0
  91. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/easy/composite_persistor.py +0 -0
  92. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/easy/easy_hocon_persistence.py +0 -0
  93. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/easy/easy_json_persistence.py +0 -0
  94. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/easy/easy_txt_persistence.py +0 -0
  95. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/easy/easy_yaml_persistence.py +0 -0
  96. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/README.md +0 -0
  97. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/__init__.py +0 -0
  98. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/abstract_persistence.py +0 -0
  99. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/hocon_persistence.py +0 -0
  100. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/json_gzip_persistence.py +0 -0
  101. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/json_persistence.py +0 -0
  102. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/null_persistence.py +0 -0
  103. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/override_file_extension_provider.py +0 -0
  104. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/persistence_factory.py +0 -0
  105. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/raw_bytes_persistence.py +0 -0
  106. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/reference_helper.py +0 -0
  107. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/simple_file_persistence.py +0 -0
  108. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/text_persistence.py +0 -0
  109. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/factory/yaml_persistence.py +0 -0
  110. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/interface/__init__.py +0 -0
  111. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/interface/persistence.py +0 -0
  112. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/interface/persistence_mechanism.py +0 -0
  113. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/interface/persistor.py +0 -0
  114. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/interface/restorer.py +0 -0
  115. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/mechanism/__init__.py +0 -0
  116. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/mechanism/abstract_persistence_mechanism.py +0 -0
  117. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/mechanism/persistence_mechanism_factory.py +0 -0
  118. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/persistence/mechanism/persistence_mechanisms.py +0 -0
  119. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/progress/__init__.py +0 -0
  120. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/progress/composite_progress_reporter.py +0 -0
  121. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/progress/iterating_progress_reporter.py +0 -0
  122. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/progress/json_progress_reporter.py +0 -0
  123. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/progress/progress_reporter.py +0 -0
  124. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/progress/status_dict_progress_reporter.py +0 -0
  125. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/progress/worker_progress_reporter.py +0 -0
  126. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/__init__.py +0 -0
  127. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/registry/__init__.py +0 -0
  128. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/registry/representation_file_extension_provider_registry.py +0 -0
  129. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/registry/representation_persistence_registry.py +0 -0
  130. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/registry/representation_serialization_format_registry.py +0 -0
  131. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/registry/self_identifying_restorer.py +0 -0
  132. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/__init__.py +0 -0
  133. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/config/__init__.py +0 -0
  134. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/config/rule_set_config_helper.py +0 -0
  135. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/data/__init__.py +0 -0
  136. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/data/condition.py +0 -0
  137. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/data/features.py +0 -0
  138. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/data/rule.py +0 -0
  139. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/data/rule_set.py +0 -0
  140. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/data/rule_set_binding.py +0 -0
  141. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/data/rules_constants.py +0 -0
  142. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/evaluation/__init__.py +0 -0
  143. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/evaluation/condition_evaluator.py +0 -0
  144. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/evaluation/rule_evaluator.py +0 -0
  145. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/evaluation/rule_metrics_merger.py +0 -0
  146. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/evaluation/rule_set_binding_evaluator.py +0 -0
  147. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/evaluation/rule_set_evaluator.py +0 -0
  148. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/evaluation/rule_set_metrics_merger.py +0 -0
  149. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/persistence/__init__.py +0 -0
  150. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/persistence/rule_set_binding_file_persistence.py +0 -0
  151. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/persistence/rule_set_file_persistence.py +0 -0
  152. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/serialization/__init__.py +0 -0
  153. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/serialization/condition_dictionary_converter.py +0 -0
  154. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/serialization/rule_dictionary_converter.py +0 -0
  155. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/serialization/rule_set_binding_dictionary_converter.py +0 -0
  156. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/serialization/rule_set_dictionary_converter.py +0 -0
  157. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/representation/rule_based/serialization/rule_set_serialization_format.py +0 -0
  158. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/__init__.py +0 -0
  159. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/service/__init__.py +0 -0
  160. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/service/auth0_direct_service_accessor.py +0 -0
  161. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/service/leaf_service_access.py +0 -0
  162. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/service/service_accessor.py +0 -0
  163. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/service/service_accessor_factory.py +0 -0
  164. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/service/static_token_service_accessor.py +0 -0
  165. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/service/vault_dynamic_token_service_accessor.py +0 -0
  166. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/vault/__init__.py +0 -0
  167. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/vault/github_vault_login.py +0 -0
  168. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/vault/kubernetes_vault_login.py +0 -0
  169. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/vault/token_vault_login.py +0 -0
  170. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/vault/vault_login.py +0 -0
  171. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/security/vault/vault_login_factory.py +0 -0
  172. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/__init__.py +0 -0
  173. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/__init__.py +0 -0
  174. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/buffered_gzip_serialization_format.py +0 -0
  175. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/chained_serialization_format.py +0 -0
  176. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/conversion_policy.py +0 -0
  177. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/gzip_serialization_format.py +0 -0
  178. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/hocon_serialization_format.py +0 -0
  179. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/json_serialization_format.py +0 -0
  180. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/raw_bytes_serialization_format.py +0 -0
  181. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/serialization_formats.py +0 -0
  182. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/text_serialization_format.py +0 -0
  183. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/format/yaml_serialization_format.py +0 -0
  184. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/interface/__init__.py +0 -0
  185. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/interface/deserializer.py +0 -0
  186. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/interface/dictionary_converter.py +0 -0
  187. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/interface/file_extension_provider.py +0 -0
  188. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/interface/reference_pruner.py +0 -0
  189. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/interface/self_identifying_representation_error.py +0 -0
  190. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/interface/serialization_format.py +0 -0
  191. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/interface/serializer.py +0 -0
  192. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/prep/__init__.py +0 -0
  193. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/prep/empty_dictionary_converter.py +0 -0
  194. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/prep/metrics_dictionary_converter.py +0 -0
  195. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/prep/pass_through_dictionary_converter.py +0 -0
  196. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/prep/pass_through_reference_pruner.py +0 -0
  197. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/prep/redactor_dictionary_converter.py +0 -0
  198. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/util/__init__.py +0 -0
  199. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/util/bytes_decoder.py +0 -0
  200. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/serialization/util/text_file_reader.py +0 -0
  201. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/__init__.py +0 -0
  202. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/abstract_service_session.py +0 -0
  203. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/async_abstract_service_session.py +0 -0
  204. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/async_grpc_client_retry.py +0 -0
  205. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/extension_packaging.py +0 -0
  206. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/grpc_metadata_util.py +0 -0
  207. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/population_response_dictionary_converter.py +0 -0
  208. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/population_session.py +0 -0
  209. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/population_session_factory.py +0 -0
  210. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/session/response_candidate_dictionary_converter.py +0 -0
  211. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/time/__init__.py +0 -0
  212. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/time/time_util.py +0 -0
  213. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/time/timeout.py +0 -0
  214. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/time/timeout_reached_exception.py +0 -0
  215. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/utils/__init__.py +0 -0
  216. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/utils/async_atomic_counter.py +0 -0
  217. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common/utils/atomic_counter.py +0 -0
  218. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common.egg-info/dependency_links.txt +0 -0
  219. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common.egg-info/requires.txt +0 -0
  220. {leaf_common-1.2.43 → leaf_common-1.2.44}/leaf_common.egg-info/top_level.txt +0 -0
  221. {leaf_common-1.2.43 → leaf_common-1.2.44}/pyproject.toml +0 -0
  222. {leaf_common-1.2.43 → leaf_common-1.2.44}/requirements-build.txt +0 -0
  223. {leaf_common-1.2.43 → leaf_common-1.2.44}/requirements.txt +0 -0
  224. {leaf_common-1.2.43 → leaf_common-1.2.44}/setup.cfg +0 -0
  225. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/__init__.py +0 -0
  226. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/__init__.py +0 -0
  227. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/async_test_helpers.py +0 -0
  228. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/asyncio_executor_metrics_test.py +0 -0
  229. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/asyncio_executor_not_started_test.py +0 -0
  230. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/asyncio_executor_pool_gc_test.py +0 -0
  231. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/asyncio_executor_pool_metrics_test.py +0 -0
  232. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/asyncio_executor_started_test.py +0 -0
  233. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/asyncio_threadpool_executor_metrics_test.py +0 -0
  234. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/callable_class.py +0 -0
  235. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/event_loop_factory_test.py +0 -0
  236. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/asyncio/sync_test_helpers.py +0 -0
  237. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/candidates/__init__.py +0 -0
  238. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/candidates/test_representation_types.py +0 -0
  239. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/config/__init__.py +0 -0
  240. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/config/dictionary_overlay_test.py +0 -0
  241. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/config/resolver_util_test.py +0 -0
  242. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/filters/__init__.py +0 -0
  243. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/filters/test_sanitizer_util.py +0 -0
  244. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/filters/test_tensorflow_field_name_filter.py +0 -0
  245. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/fitness/__init__.py +0 -0
  246. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/fitness/fitness_objectives_from_config_test.py +0 -0
  247. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/fixtures/saved_rule_set.rules +0 -0
  248. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/fixtures/saved_rules_model.json +0 -0
  249. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/parsers/__init__.py +0 -0
  250. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/parsers/canonical_multi_config_parser_test.py +0 -0
  251. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/progress/__init__.py +0 -0
  252. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/progress/test_status_dict_progress_reporter.py +0 -0
  253. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/representation/__init__.py +0 -0
  254. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/representation/rule_based/__init__.py +0 -0
  255. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/representation/rule_based/test_condition.py +0 -0
  256. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/representation/rule_based/test_rule.py +0 -0
  257. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/representation/rule_based/test_rule_set.py +0 -0
  258. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/serialization/__init__.py +0 -0
  259. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/serialization/encoding/__init__.py +0 -0
  260. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/serialization/encoding/decode_text_test.py +0 -0
  261. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/serialization/encoding/text_file_reader_test.py +0 -0
  262. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/serialization/prep/__init__.py +0 -0
  263. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/serialization/prep/redactor_dictionary_converter_test.py +0 -0
  264. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/session/__init__.py +0 -0
  265. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/session/test_extension_packaging.py +0 -0
  266. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/time/__init__.py +0 -0
  267. {leaf_common-1.2.43 → leaf_common-1.2.44}/tests/time/timeout_test.py +0 -0
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: Checkmarx One
3
+
4
+ on:
5
+ schedule:
6
+ # M-F at 2 am UTC
7
+ - cron: '0 2 * * 1-5'
8
+ workflow_dispatch:
9
+ release:
10
+ types:
11
+ - published
12
+
13
+ jobs:
14
+ checkmarx:
15
+ # 1.0.8
16
+ uses: cognizant-ai-lab/build-common/.github/workflows/_checkmarx.yml@30321843331e00848309b34e08b839e1f6490ba2
17
+ with:
18
+ base-uri: ${{ vars.CX_BASE_URI }}
19
+ cx-tenant: ${{ vars.CX_TENANT }}
20
+ cx-client-id: ${{ vars.CX_CLIENT_ID }}
21
+ scan-params: '--sast-preset-name "Checkmarx Default" --threshold "sast-critical=1;sast-high=1"'
22
+ secrets:
23
+ CX_CLIENT_SECRET: ${{ secrets.CX_CLIENT_SECRET }}
24
+ SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
25
+ permissions:
26
+ contents: write
27
+ security-events: write
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: leaf-common
3
- Version: 1.2.43
3
+ Version: 1.2.44
4
4
  Summary: LEAF team common code library
5
5
  Author-email: Dan Fink <Daniel.Fink@cognizant.com>
6
6
  License-Expression: Apache-2.0
@@ -39,6 +39,7 @@ from concurrent import futures
39
39
  from leaf_common.asyncio.event_loop_factory import EventLoopFactory
40
40
  from leaf_common.asyncio.task_executor import TaskExecutor
41
41
  from leaf_common.asyncio.asyncio_threadpool_executor import AsyncioThreadPoolExecutor
42
+ from leaf_common.logging.sensitive_logger import SensitiveLogger
42
43
 
43
44
  EXECUTOR_START_TIMEOUT_SECONDS: int = 5
44
45
 
@@ -444,7 +445,8 @@ class AsyncioExecutor(TaskExecutor):
444
445
  for line in formatted_exception:
445
446
  if line.endswith("\n"):
446
447
  line = line[:-1]
447
- self.logger.info("%s", line)
448
+ sensitive_logger = SensitiveLogger(self.logger)
449
+ sensitive_logger.info("%s", line)
448
450
 
449
451
  # As a last gesture, remove the background task from the map
450
452
  # we use to keep its reference around. Do it safely:
@@ -29,6 +29,7 @@ import threading
29
29
  import time
30
30
 
31
31
  from leaf_common.asyncio.asyncio_executor import AsyncioExecutor
32
+ from leaf_common.logging.sensitive_logger import SensitiveLogger
32
33
 
33
34
 
34
35
  class AsyncioExecutorPool:
@@ -214,17 +215,19 @@ class AsyncioExecutorPool:
214
215
  try:
215
216
  self._sweep_once()
216
217
  except Exception as exc: # pylint: disable=broad-exception-caught
217
- self.logger.warning("GC: sweep raised %s; continuing", exc, exc_info=True)
218
+ sensitive_logger = SensitiveLogger(self.logger)
219
+ sensitive_logger.warning("GC: sweep raised %s; continuing", exc, exc_info=True)
218
220
  # Sleep until the next sweep tick or until shutdown is signaled.
219
221
  self._gc_stop_event.wait(timeout=self.gc_sweep_interval_seconds)
220
222
 
221
223
  def _collect_executors(self, executors: Sequence[AsyncioExecutor]) -> None:
224
+ sensitive_logger = SensitiveLogger(self.logger)
222
225
  for executor in executors:
223
226
  try:
224
- self.logger.debug("GC: shutting down idle AsyncioExecutor %s", id(executor))
227
+ sensitive_logger.debug("GC: shutting down idle AsyncioExecutor %s", id(executor))
225
228
  executor.shutdown(wait=True)
226
229
  except Exception as exc: # pylint: disable=broad-exception-caught
227
- self.logger.warning(
230
+ sensitive_logger.warning(
228
231
  "GC: shutdown failed for AsyncioExecutor %s: %s", id(executor), exc, exc_info=True)
229
232
 
230
233
  def _sweep_once(self, now: Optional[float] = None) -> None:
@@ -0,0 +1,143 @@
1
+
2
+ # Copyright © 2019-2026 Cognizant Technology Solutions Corp, www.cognizant.com.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ # END COPYRIGHT
17
+ """
18
+ See class comment for details.
19
+ """
20
+
21
+ from logging import Logger
22
+ from os import getenv
23
+
24
+
25
+ class SensitiveLogger:
26
+ """
27
+ Wraps a logger to mask sensitive information.
28
+ Uses the same general Logger interface as the whole world already uses.
29
+
30
+ We assume that any information coming in to this logger is considered sensitive information.
31
+ Turning off senstive logging information can be done by setting the LEAF_LOG_SENSTIVE to "false".
32
+ By default this is turned on, allowing developers to see sensitive information.
33
+ Strongly consider turning this off for production deployments.
34
+ """
35
+
36
+ def __init__(self, logger: Logger):
37
+ """
38
+ Constructor.
39
+
40
+ :param logger: The wrapped logger to redirect write() calls to.
41
+ """
42
+ self.logger: Logger = logger
43
+ self._should_log: bool = getenv('LEAF_LOG_SENSITIVE', 'true').lower() == 'true'
44
+
45
+ def should_log(self) -> bool:
46
+ """
47
+ :return: True if this logger should log
48
+ """
49
+ return self._should_log
50
+
51
+ def debug(self, msg, *args, **kwargs):
52
+ """
53
+ Log 'msg % args' with severity 'DEBUG'.
54
+
55
+ To pass exception information, use the keyword argument exc_info with
56
+ a true value, e.g.
57
+
58
+ logger.debug("Houston, we have a %s", "thorny problem", exc_info=True)
59
+ """
60
+ if not self.should_log():
61
+ return
62
+ self.logger.debug(msg, *args, **kwargs)
63
+
64
+ def info(self, msg, *args, **kwargs):
65
+ """
66
+ Log 'msg % args' with severity 'INFO'.
67
+
68
+ To pass exception information, use the keyword argument exc_info with
69
+ a true value, e.g.
70
+
71
+ logger.info("Houston, we have a %s", "notable problem", exc_info=True)
72
+ """
73
+ if not self.should_log():
74
+ return
75
+ self.logger.info(msg, *args, **kwargs)
76
+
77
+ def warning(self, msg, *args, **kwargs):
78
+ """
79
+ Log 'msg % args' with severity 'WARNING'.
80
+
81
+ To pass exception information, use the keyword argument exc_info with
82
+ a true value, e.g.
83
+
84
+ logger.warning("Houston, we have a %s", "bit of a problem", exc_info=True)
85
+ """
86
+ if not self.should_log():
87
+ return
88
+ self.logger.warning(msg, *args, **kwargs)
89
+
90
+ def error(self, msg, *args, **kwargs):
91
+ """
92
+ Log 'msg % args' with severity 'ERROR'.
93
+
94
+ To pass exception information, use the keyword argument exc_info with
95
+ a true value, e.g.
96
+
97
+ logger.error("Houston, we have a %s", "major problem", exc_info=True)
98
+ """
99
+ if not self.should_log():
100
+ return
101
+ self.logger.error(msg, *args, **kwargs)
102
+
103
+ def exception(self, msg, *args, exc_info=True, **kwargs):
104
+ """
105
+ Convenience method for logging an ERROR with exception information.
106
+ """
107
+ if not self.should_log():
108
+ return
109
+ self.logger.exception(msg, *args, exc_info=exc_info, **kwargs)
110
+
111
+ def critical(self, msg, *args, **kwargs):
112
+ """
113
+ Log 'msg % args' with severity 'CRITICAL'.
114
+
115
+ To pass exception information, use the keyword argument exc_info with
116
+ a true value, e.g.
117
+
118
+ logger.critical("Houston, we have a %s", "major disaster", exc_info=True)
119
+ """
120
+ if not self.should_log():
121
+ return
122
+ self.logger.critical(msg, *args, **kwargs)
123
+
124
+ def fatal(self, msg, *args, **kwargs):
125
+ """
126
+ Don't use this method, use critical() instead.
127
+ """
128
+ if not self.should_log():
129
+ return
130
+ self.logger.fatal(msg, *args, **kwargs)
131
+
132
+ def log(self, level, msg, *args, **kwargs):
133
+ """
134
+ Log 'msg % args' with the integer severity 'level'.
135
+
136
+ To pass exception information, use the keyword argument exc_info with
137
+ a true value, e.g.
138
+
139
+ logger.log(level, "We have a %s", "mysterious problem", exc_info=True)
140
+ """
141
+ if not self.should_log():
142
+ return
143
+ self.logger.log(level, msg, *args, **kwargs)
@@ -66,6 +66,9 @@ class LocalFilePersistenceMechanism(AbstractPersistenceMechanism):
66
66
  if self.must_exist():
67
67
  raise ex
68
68
 
69
+ # CheckMarx false-positive. This is flagged as an Improper Resource Shutdown or Release
70
+ # This is simply how the contract works with these classes.
71
+ # We return a fileobj so a higher-level abstract API can close it.
69
72
  return fileobj
70
73
 
71
74
  def open_dest_for_write(self, send_from_fileobj,
@@ -20,6 +20,7 @@ See class comment for details.
20
20
  import logging
21
21
  import os
22
22
 
23
+ from leaf_common.logging.sensitive_logger import SensitiveLogger
23
24
  from leaf_common.persistence.mechanism.abstract_persistence_mechanism \
24
25
  import AbstractPersistenceMechanism
25
26
 
@@ -103,10 +104,11 @@ class S3FilePersistenceMechanism(AbstractPersistenceMechanism):
103
104
  return_fileobj = None
104
105
  else:
105
106
  # Something else has gone wrong
106
- logger.error("S3 file read %s %s some other error happened %s",
107
- str(self.bucket_base),
108
- str(key),
109
- str(exception.response['Error']['Code']))
107
+ sensitive_logger = SensitiveLogger(logger)
108
+ sensitive_logger.error("S3 file read %s %s some other error happened %s",
109
+ str(self.bucket_base),
110
+ str(key),
111
+ str(exception.response['Error']['Code']))
110
112
  raise
111
113
 
112
114
  return return_fileobj
@@ -33,6 +33,7 @@ from grpc import composite_call_credentials
33
33
  from grpc import composite_channel_credentials
34
34
  from grpc import ssl_channel_credentials
35
35
 
36
+ from leaf_common.logging.sensitive_logger import SensitiveLogger
36
37
  from leaf_common.time.timeout import Timeout
37
38
  from leaf_common.security.service.service_accessor_factory \
38
39
  import ServiceAccessorFactory
@@ -206,9 +207,10 @@ class GrpcChannelSecurity():
206
207
  except Exception as err:
207
208
  frameinfo = getframeinfo(currentframe())
208
209
  logger = logging.getLogger(__name__)
209
- logger.warning("%s %s %s", str(err),
210
- str(frameinfo.filename),
211
- str(frameinfo.lineno))
210
+ sensitive_logger = SensitiveLogger(logger)
211
+ sensitive_logger.warning("%s %s %s", str(err),
212
+ str(frameinfo.filename),
213
+ str(frameinfo.lineno))
212
214
  raise err
213
215
 
214
216
  # Any one of the certs provided can be None.
@@ -32,10 +32,10 @@ from grpc import channel_ready_future
32
32
  from grpc import insecure_channel
33
33
  from grpc import secure_channel
34
34
 
35
- from leaf_common.time.timeout import Timeout
36
-
35
+ from leaf_common.logging.sensitive_logger import SensitiveLogger
37
36
  from leaf_common.session.grpc_channel_security import GrpcChannelSecurity
38
37
  from leaf_common.session.grpc_metadata_util import GrpcMetadataUtil
38
+ from leaf_common.time.timeout import Timeout
39
39
 
40
40
 
41
41
  class GrpcClientRetry():
@@ -195,7 +195,7 @@ class GrpcClientRetry():
195
195
 
196
196
  return stub_instance
197
197
 
198
- # pylint: disable=too-many-branches
198
+ # pylint: disable=too-many-branches,too-many-locals
199
199
  def must_have_response(self, method_name, rpc_call_from_stub, *args): # noqa: C901
200
200
  """
201
201
  Keeps trying to connect to the gRPC service to make a single
@@ -270,9 +270,10 @@ class GrpcClientRetry():
270
270
  # See if the error is an RpcError with status codes
271
271
  # that are registered as limited-retry.
272
272
  if self.debug:
273
- self.logger.error(exception)
273
+ sensitive_logger = SensitiveLogger(self.logger)
274
+ sensitive_logger.error(exception)
274
275
  error = traceback.format_exc()
275
- self.logger.error(error)
276
+ sensitive_logger.error(error)
276
277
 
277
278
  log_exception = True
278
279
  exception_str = str(exception)
@@ -331,8 +332,9 @@ class GrpcClientRetry():
331
332
  # Log the problem and wait to try again.
332
333
  info = "Info: Exception when calling %s: %s. " + \
333
334
  "Retrying in %s secs."
334
- self.logger.warning(info, str(method_name), exception_str,
335
- str(self.poll_interval_seconds))
335
+ sensitive_logger = SensitiveLogger(self.logger)
336
+ sensitive_logger.warning(info, str(method_name), exception_str,
337
+ str(self.poll_interval_seconds))
336
338
 
337
339
  # Close the channel before sleep to tidy up sooner
338
340
  # We do not necessarily want a new token just
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: leaf-common
3
- Version: 1.2.43
3
+ Version: 1.2.44
4
4
  Summary: LEAF team common code library
5
5
  Author-email: Dan Fink <Daniel.Fink@cognizant.com>
6
6
  License-Expression: Apache-2.0
@@ -13,6 +13,7 @@ SUPPORT.md
13
13
  pyproject.toml
14
14
  requirements-build.txt
15
15
  requirements.txt
16
+ .github/workflows/checkmarx.yml
16
17
  .github/workflows/publish.yml
17
18
  .github/workflows/tests.yml
18
19
  build_scripts/copyright_config.json
@@ -74,6 +75,7 @@ leaf_common/log_utils/structured_message.py
74
75
  leaf_common/logging/__init__.py
75
76
  leaf_common/logging/example_logging_config.hocon
76
77
  leaf_common/logging/logging_setup.py
78
+ leaf_common/logging/sensitive_logger.py
77
79
  leaf_common/logging/stream_to_logger.py
78
80
  leaf_common/parsers/__init__.py
79
81
  leaf_common/parsers/boolean_list_parser.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes