oai-statsig-python-core 0.24.0rc2__tar.gz → 0.24.1__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 (388) hide show
  1. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/Cargo.lock +6 -6
  2. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/Cargo.toml +1 -1
  3. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/PKG-INFO +1 -1
  4. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/Cargo.toml +1 -1
  5. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_logger.rs +16 -5
  6. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_logger_ops_stats.rs +49 -1
  7. oai_statsig_python_core-0.24.1/statsig-rust/src/event_logging/event_queue/batch.rs +84 -0
  8. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queue.rs +5 -3
  9. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging_adapter/statsig_http_event_logging_adapter.rs +24 -0
  10. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_metadata.rs +1 -1
  11. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/observability_client_usage_tests.rs +56 -6
  12. oai_statsig_python_core-0.24.0rc2/statsig-rust/src/event_logging/event_queue/batch.rs +0 -34
  13. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/__init__.py +0 -0
  14. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/data_store.py +0 -0
  15. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/error_boundary.py +0 -0
  16. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/event_logging_adapter.py +0 -0
  17. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/observability_client.py +0 -0
  18. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/output_logger_provider.py +0 -0
  19. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/persistent_storage.py +0 -0
  20. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/py.typed +0 -0
  21. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/requirements.txt +0 -0
  22. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/statsig.py +0 -0
  23. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/statsig_python_core.pyi +0 -0
  24. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/py_src/statsig_python_core/statsig_types.py +0 -0
  25. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/pyproject.toml +0 -0
  26. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/Cargo.toml +0 -0
  27. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/README.md +0 -0
  28. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/build.rs +0 -0
  29. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/src/lib.rs +0 -0
  30. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/src/mock_forward_proxy.rs +0 -0
  31. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/src/protos/statsig_forward_proxy.proto +0 -0
  32. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/src/statsig_forward_proxy.rs +0 -0
  33. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/src/statsig_grpc_client.rs +0 -0
  34. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-grpc/src/statsig_grpc_err.rs +0 -0
  35. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/.github/workflows/CI.yml +0 -0
  36. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/.gitignore +0 -0
  37. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/Cargo.toml +0 -0
  38. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/README.md +0 -0
  39. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/benchmarks/user_creation_benchmark.py +0 -0
  40. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/benchmarks/user_memory_benchmark.py +0 -0
  41. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/bin/stub_gen.rs +0 -0
  42. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/data_store_base_py.rs +0 -0
  43. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/event_logging_adapter_base_py.rs +0 -0
  44. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/interned_store_py.rs +0 -0
  45. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/lib.rs +0 -0
  46. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/observability_client_base_py.rs +0 -0
  47. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/output_logger_provider_base_py.rs +0 -0
  48. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/pyo_utils.rs +0 -0
  49. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/raw_evaluation_compat_py.rs +0 -0
  50. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/safe_gil.rs +0 -0
  51. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/statsig_base_py.rs +0 -0
  52. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/statsig_metadata_py.rs +0 -0
  53. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/statsig_options_py.rs +0 -0
  54. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/statsig_persistent_storage_override_adapter_py.rs +0 -0
  55. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/statsig_types_py.rs +0 -0
  56. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/statsig_user_py.rs +0 -0
  57. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/unit_id_py.rs +0 -0
  58. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/src/valid_primitives_py.rs +0 -0
  59. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/event_listener_reentrancy_subprocess.py +0 -0
  60. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/fork_runner.py +0 -0
  61. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/mock_output_logger.py +0 -0
  62. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/mock_scrapi.py +0 -0
  63. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/profile_util.py +0 -0
  64. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/shutdown_sub_proc.py +0 -0
  65. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_bulk_evaluate_gcir_parity.py +0 -0
  66. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_data_store.py +0 -0
  67. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_error_boundary.py +0 -0
  68. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_event_logging_adapter.py +0 -0
  69. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_experiment_serialization.py +0 -0
  70. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_exposure_logging.py +0 -0
  71. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_feature_gate_serialization.py +0 -0
  72. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_forking.py +0 -0
  73. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_get_dynamic_config.py +0 -0
  74. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_initialize_with_details.py +0 -0
  75. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_interned_store_preload.py +0 -0
  76. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_layer_param_exposure_sampling.py +0 -0
  77. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_layer_serialization.py +0 -0
  78. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_observability_client.py +0 -0
  79. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_output_logger_provider.py +0 -0
  80. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_override_adapter.py +0 -0
  81. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_performance.py +0 -0
  82. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_sdk_event_emitter.py +0 -0
  83. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_sec_expo_as_primary.py +0 -0
  84. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_shared_statsig.py +0 -0
  85. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_shutdown.py +0 -0
  86. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_statsig.py +0 -0
  87. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_statsig_options.py +0 -0
  88. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_statsig_user.py +0 -0
  89. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_statsig_user_json_serialization.py +0 -0
  90. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_statsig_user_none_fields.py +0 -0
  91. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_statsig_user_pickle.py +0 -0
  92. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/test_user_exposure_e2e.py +0 -0
  93. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-pyo3/tests/utils.py +0 -0
  94. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/build.rs +0 -0
  95. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/resources/ip_supalite.table +0 -0
  96. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/resources/ua_parser_regex.yaml +0 -0
  97. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/resources/ua_parser_regex_lite.yaml +0 -0
  98. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/__tests__/interned_string_tests.rs +0 -0
  99. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/__tests__/mod.rs +0 -0
  100. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/__tests__/spec_store_tests.rs +0 -0
  101. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/__tests__/statsig_options_tests.rs +0 -0
  102. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/__tests__/user_value_tests.rs +0 -0
  103. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/compression/compression_helper.rs +0 -0
  104. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/compression/mod.rs +0 -0
  105. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/console_capture/console_capture_handler.rs +0 -0
  106. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/console_capture/console_capture_instances.rs +0 -0
  107. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/console_capture/console_capture_options.rs +0 -0
  108. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/console_capture/console_log_line_levels.rs +0 -0
  109. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/console_capture/mod.rs +0 -0
  110. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/data_store_interface.rs +0 -0
  111. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/dcs_str.rs +0 -0
  112. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/__tests__/dynamic_returnable_tests.rs +0 -0
  113. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/__tests__/mod.rs +0 -0
  114. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/__tests__/rkyv_value_tests.rs +0 -0
  115. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/cmab_evaluator.rs +0 -0
  116. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/comparisons/compare_arrays.rs +0 -0
  117. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/comparisons/compare_numbers.rs +0 -0
  118. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/comparisons/compare_str_with_regex.rs +0 -0
  119. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/comparisons/compare_strings_in_array.rs +0 -0
  120. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/comparisons/compare_time.rs +0 -0
  121. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/comparisons/compare_versions.rs +0 -0
  122. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/comparisons/mod.rs +0 -0
  123. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/country_lookup.rs +0 -0
  124. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/dynamic_returnable.rs +0 -0
  125. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/dynamic_string.rs +0 -0
  126. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/dynamic_value.rs +0 -0
  127. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/evaluation_details.rs +0 -0
  128. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/evaluation_types.rs +0 -0
  129. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/evaluation_types_initialize_v2.rs +0 -0
  130. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/evaluation_types_v2.rs +0 -0
  131. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/evaluator.rs +0 -0
  132. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/evaluator_context.rs +0 -0
  133. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/evaluator_result.rs +0 -0
  134. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/evaluator_value.rs +0 -0
  135. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/get_unit_id.rs +0 -0
  136. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/mod.rs +0 -0
  137. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/rkyv_value.rs +0 -0
  138. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/secondary_exposure_key.rs +0 -0
  139. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/first_party_ua_parser.rs +0 -0
  140. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/mod.rs +0 -0
  141. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/mod.rs +0 -0
  142. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_helpers.rs +0 -0
  143. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer.rs +0 -0
  144. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_browser.rs +0 -0
  145. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_os.rs +0 -0
  146. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/mod.rs +0 -0
  147. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/tokenizer.rs +0 -0
  148. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/ua_parser.rs +0 -0
  149. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/window_iter.rs +0 -0
  150. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/third_party_ua_parser.rs +0 -0
  151. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/evaluation/user_agent_parsing/ua_parser.rs +0 -0
  152. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_emitter/statsig_event_emitter_tests.rs +0 -0
  153. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/delayed_exposure_store.rs +0 -0
  154. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_logger_constants.rs +0 -0
  155. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/mod.rs +0 -0
  156. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queued_config_expo.rs +0 -0
  157. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queued_event.rs +0 -0
  158. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queued_experiment_expo.rs +0 -0
  159. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queued_expo.rs +0 -0
  160. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queued_gate_expo.rs +0 -0
  161. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queued_layer_param_expo.rs +0 -0
  162. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queued_passthrough.rs +0 -0
  163. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/event_queue/queued_secondary_expo.rs +0 -0
  164. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/exposure_sampling.rs +0 -0
  165. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/exposure_utils.rs +0 -0
  166. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/flush_interval.rs +0 -0
  167. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/flush_type.rs +0 -0
  168. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/mod.rs +0 -0
  169. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/sec_expo_as_primary_experiment.rs +0 -0
  170. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/statsig_event.rs +0 -0
  171. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging/statsig_event_internal.rs +0 -0
  172. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging_adapter/event_logging_adapter_trait.rs +0 -0
  173. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging_adapter/log_event_payload.rs +0 -0
  174. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging_adapter/mod.rs +0 -0
  175. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/event_logging_adapter/statsig_local_file_event_logging_adapter.rs +0 -0
  176. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/dynamic_configs_processor.rs +0 -0
  177. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/feature_gates_processor.rs +0 -0
  178. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/gcir_formatter.rs +0 -0
  179. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/gcir_options.rs +0 -0
  180. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/gcir_process_iter.rs +0 -0
  181. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/layer_configs_processor.rs +0 -0
  182. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/mod.rs +0 -0
  183. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/param_stores_processor.rs +0 -0
  184. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/stringify_sec_exposures.rs +0 -0
  185. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/gcir/target_app_id_utils.rs +0 -0
  186. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/global_configs.rs +0 -0
  187. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/hashing/ahash.rs +0 -0
  188. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/hashing/djb2.rs +0 -0
  189. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/hashing/hash_util.rs +0 -0
  190. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/hashing/memo_sha_256.rs +0 -0
  191. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/hashing/mod.rs +0 -0
  192. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/id_lists_adapter/id_list.rs +0 -0
  193. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/id_lists_adapter/id_lists_adapter_trait.rs +0 -0
  194. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/id_lists_adapter/mod.rs +0 -0
  195. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/id_lists_adapter/statsig_http_id_lists_adapter.rs +0 -0
  196. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/init_details.rs +0 -0
  197. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/initialize_evaluations_response.rs +0 -0
  198. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/initialize_response.rs +0 -0
  199. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/initialize_v2_response.rs +0 -0
  200. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/instance_registry.rs +0 -0
  201. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_string.rs +0 -0
  202. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_values/__tests__/fixtures/interned_store_v1.mmap +0 -0
  203. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_values/__tests__/interned_store_eval_value_tests.rs +0 -0
  204. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_fetch_tests.rs +0 -0
  205. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_values/__tests__/interned_store_returnable_tests.rs +0 -0
  206. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_values/__tests__/interned_store_string_tests.rs +0 -0
  207. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_values/__tests__/mod.rs +0 -0
  208. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_values/interned_store.rs +0 -0
  209. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/interned_values/mod.rs +0 -0
  210. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/lib.rs +0 -0
  211. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/logging_utils.rs +0 -0
  212. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/macros.rs +0 -0
  213. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/__tests__/mod.rs +0 -0
  214. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/__tests__/response_data_tests.rs +0 -0
  215. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/http_types.rs +0 -0
  216. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/mod.rs +0 -0
  217. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/network_client.rs +0 -0
  218. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/network_error.rs +0 -0
  219. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/providers/mod.rs +0 -0
  220. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/providers/net_provider_global.rs +0 -0
  221. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/providers/net_provider_noop.rs +0 -0
  222. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/providers/net_provider_reqwest.rs +0 -0
  223. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/networking/proxy_config.rs +0 -0
  224. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/observability/console_capture_observer.rs +0 -0
  225. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/observability/diagnostics_observer.rs +0 -0
  226. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/observability/mod.rs +0 -0
  227. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/observability/observability_client_adapter.rs +0 -0
  228. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/observability/ops_stats.rs +0 -0
  229. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/observability/sdk_errors_observer.rs +0 -0
  230. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/output_logger.rs +0 -0
  231. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/override_adapter/mod.rs +0 -0
  232. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/override_adapter/override_adapter_trait.rs +0 -0
  233. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/override_adapter/statsig_local_override_adapter.rs +0 -0
  234. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/persistent_storage/__tests__/mod.rs +0 -0
  235. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/persistent_storage/__tests__/sticky_values_serialization_tests.rs +0 -0
  236. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/persistent_storage/mod.rs +0 -0
  237. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/persistent_storage/persistent_storage_trait.rs +0 -0
  238. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/persistent_storage/persistent_values_manager.rs +0 -0
  239. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/sdk_diagnostics/diagnostics.rs +0 -0
  240. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/sdk_diagnostics/diagnostics_utils.rs +0 -0
  241. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/sdk_diagnostics/marker.rs +0 -0
  242. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/sdk_diagnostics/mod.rs +0 -0
  243. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/sdk_event_emitter/event_emitter.rs +0 -0
  244. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/sdk_event_emitter/event_emitter_tests.rs +0 -0
  245. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/sdk_event_emitter/event_types.rs +0 -0
  246. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/sdk_event_emitter/mod.rs +0 -0
  247. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/spec_store.rs +0 -0
  248. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/config_spec_background_sync_metrics.rs +0 -0
  249. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/mod.rs +0 -0
  250. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/response_format.rs +0 -0
  251. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/specs_adapter_trait.rs +0 -0
  252. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/statsig_bootstrap_specs_adapter.rs +0 -0
  253. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/statsig_customized_specs_adapter.rs +0 -0
  254. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/statsig_data_store_specs_adapter.rs +0 -0
  255. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/statsig_grpc_specs_adapter.rs +0 -0
  256. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/statsig_http_specs_adapter.rs +0 -0
  257. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_adapter/statsig_local_file_specs_adapter.rs +0 -0
  258. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/__tests__/mod.rs +0 -0
  259. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/__tests__/proto_specs_syncing_tests.rs +0 -0
  260. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/__tests__/proto_specs_unknown_tests.rs +0 -0
  261. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/__tests__/proto_specs_vs_json_tests.rs +0 -0
  262. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/__tests__/proto_stream_reader_tests.rs +0 -0
  263. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/cmab_types.rs +0 -0
  264. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/explicit_params.rs +0 -0
  265. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/mod.rs +0 -0
  266. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/param_store_types.rs +0 -0
  267. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/proto_specs.rs +0 -0
  268. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/proto_stream_reader.rs +0 -0
  269. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/spec_types.rs +0 -0
  270. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/specs_hash_map.rs +0 -0
  271. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/specs_response/statsig_config_specs.rs +0 -0
  272. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig.rs +0 -0
  273. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_core_api_options.rs +0 -0
  274. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_err.rs +0 -0
  275. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_global.rs +0 -0
  276. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_options.rs +0 -0
  277. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_runtime.rs +0 -0
  278. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_type_factories.rs +0 -0
  279. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_types.rs +0 -0
  280. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/statsig_types_raw.rs +0 -0
  281. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/fast_statsig_user.rs +0 -0
  282. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/into_optional.rs +0 -0
  283. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/mod.rs +0 -0
  284. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/statsig_user.rs +0 -0
  285. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/statsig_user_builder.rs +0 -0
  286. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/statsig_user_internal.rs +0 -0
  287. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/statsig_user_loggable.rs +0 -0
  288. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/unit_id.rs +0 -0
  289. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/user_data.rs +0 -0
  290. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/user/user_value.rs +0 -0
  291. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/utils/mod.rs +0 -0
  292. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/src/value_parsing.rs +0 -0
  293. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/check_gate_tests.rs +0 -0
  294. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/customized_specs_adapter_tests.rs +0 -0
  295. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/big_number_dcs.json +0 -0
  296. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/check_gate_perf_dcs.json +0 -0
  297. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/company_id_list +0 -0
  298. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/dcs_error.json +0 -0
  299. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/dcs_missing_gates.json +0 -0
  300. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/dcs_non_case_sensitive.json +0 -0
  301. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/dcs_user_agent_versions.json +0 -0
  302. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/dcs_with_analytical_exposure_sampling.json +0 -0
  303. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/dcs_with_checksum.json +0 -0
  304. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/dcs_with_sampling.json +0 -0
  305. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/dcs_with_sdk_configs.json +0 -0
  306. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/demo_proj_dcs.json +0 -0
  307. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/demo_proj_dcs.pb.br +0 -0
  308. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/eval_proj_dcs.json +0 -0
  309. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/eval_proj_dcs.pb.br +0 -0
  310. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/get_id_lists.json +0 -0
  311. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/perf_proj_dcs.json +0 -0
  312. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/perf_proj_dcs.pb.br +0 -0
  313. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/shared_dict_dict_only.json +0 -0
  314. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/shared_dict_original_dcs.json +0 -0
  315. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/shared_dict_response_uncompressed.json +0 -0
  316. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/shared_dict_response_with_dict.json +0 -0
  317. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/shared_dict_response_without_dict.json +0 -0
  318. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/test_must_pass_user_agents.txt +0 -0
  319. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/test_user_agents.txt +0 -0
  320. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/ua_string_cases.json +0 -0
  321. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data/unknown_enum.pb.br +0 -0
  322. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data_store_bytes_adapter_tests.rs +0 -0
  323. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data_store_json_bytes_tests.rs +0 -0
  324. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data_store_json_only_no_bytes_methods_tests.rs +0 -0
  325. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data_store_lock_tests.rs +0 -0
  326. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/data_store_proto_bytes_tests.rs +0 -0
  327. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/delayed_exposure_bench.rs +0 -0
  328. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/direct_gcir_tests.rs +0 -0
  329. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/dynamic_string_tests.rs +0 -0
  330. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/dynamic_value_tests.rs +0 -0
  331. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/evaluation_details_tests.rs +0 -0
  332. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/evaluator_value_tests.rs +0 -0
  333. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/event_logger_failing_flush_tests.rs +0 -0
  334. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/event_logger_flush_tests.rs +0 -0
  335. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/event_logger_high_qps_tests.rs +0 -0
  336. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/event_logger_usage_tests.rs +0 -0
  337. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/expected_evaluation_tests.rs +0 -0
  338. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/exposure_sampling_key_tests.rs +0 -0
  339. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/exposure_tests.rs +0 -0
  340. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/flushing_tests.rs +0 -0
  341. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/gate_inversion_eval_tests.rs +0 -0
  342. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/gcir_tests.rs +0 -0
  343. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/global_configs_test.rs +0 -0
  344. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/grpc_specs_adapter_tests.rs +0 -0
  345. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/hash_util_evaluation_hash_tests.rs +0 -0
  346. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/http_specs_adapter_tests.rs +0 -0
  347. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/initialize_timeout_test.rs +0 -0
  348. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/instance_registry_tests.rs +0 -0
  349. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/layer_serialization_tests.rs +0 -0
  350. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/list_methods_tests.rs +0 -0
  351. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/network_client_streaming_tests.rs +0 -0
  352. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/network_client_tests.rs +0 -0
  353. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/network_failure_tests.rs +0 -0
  354. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/output_logger_tests.rs +0 -0
  355. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/override_adapter_tests.rs +0 -0
  356. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/perf_tests.rs +0 -0
  357. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/proto_specs_usage_tests.rs +0 -0
  358. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/spec_store_lock_tests.rs +0 -0
  359. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/spec_types_tests.rs +0 -0
  360. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_disable_network_tests.rs +0 -0
  361. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_environment_tests.rs +0 -0
  362. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_event_emitter_usage_test.rs +0 -0
  363. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_global_tests.rs +0 -0
  364. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_local_file_event_logging_adapter_tests.rs +0 -0
  365. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_local_file_specs_adapter_tests.rs +0 -0
  366. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_options_tests.rs +0 -0
  367. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_shared_tests.rs +0 -0
  368. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_tests.rs +0 -0
  369. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_user_builder_tests.rs +0 -0
  370. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_user_field_accessor_tests.rs +0 -0
  371. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_user_internal_tests.rs +0 -0
  372. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_user_loggable_tests.rs +0 -0
  373. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/statsig_user_tests.rs +0 -0
  374. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/syncing_network_failure_tests.rs +0 -0
  375. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/typed_getters_tests.rs +0 -0
  376. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/ua_parser_util_test.rs +0 -0
  377. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/user_agent_tests_first_party.rs +0 -0
  378. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/user_json_tests.rs +0 -0
  379. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/env_var_guard.rs +0 -0
  380. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/helpers.rs +0 -0
  381. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/mock_data_store.rs +0 -0
  382. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/mock_event_logging_adapter.rs +0 -0
  383. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/mock_log_provider.rs +0 -0
  384. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/mock_observability_client.rs +0 -0
  385. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/mock_scrapi.rs +0 -0
  386. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/mock_specs_adapter.rs +0 -0
  387. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/mock_specs_listener.rs +0 -0
  388. {oai_statsig_python_core-0.24.0rc2 → oai_statsig_python_core-0.24.1}/statsig-rust/tests/utils/mod.rs +0 -0
@@ -1722,7 +1722,7 @@ dependencies = [
1722
1722
 
1723
1723
  [[package]]
1724
1724
  name = "oai-statsig-grpc"
1725
- version = "0.24.0-rc.2"
1725
+ version = "0.24.1"
1726
1726
  dependencies = [
1727
1727
  "async-trait",
1728
1728
  "chrono",
@@ -1737,7 +1737,7 @@ dependencies = [
1737
1737
 
1738
1738
  [[package]]
1739
1739
  name = "oai-statsig-rust"
1740
- version = "0.24.0-rc.2"
1740
+ version = "0.24.1"
1741
1741
  dependencies = [
1742
1742
  "ahash",
1743
1743
  "arc-swap",
@@ -3011,7 +3011,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
3011
3011
 
3012
3012
  [[package]]
3013
3013
  name = "statsig-node"
3014
- version = "0.24.0-rc.2"
3014
+ version = "0.24.1"
3015
3015
  dependencies = [
3016
3016
  "async-trait",
3017
3017
  "napi",
@@ -3026,7 +3026,7 @@ dependencies = [
3026
3026
 
3027
3027
  [[package]]
3028
3028
  name = "statsig-pyo3"
3029
- version = "0.24.0-rc.2"
3029
+ version = "0.24.1"
3030
3030
  dependencies = [
3031
3031
  "async-trait",
3032
3032
  "lazy_static",
@@ -3041,7 +3041,7 @@ dependencies = [
3041
3041
 
3042
3042
  [[package]]
3043
3043
  name = "statsig_elixir"
3044
- version = "0.24.0-rc.2"
3044
+ version = "0.24.1"
3045
3045
  dependencies = [
3046
3046
  "async-trait",
3047
3047
  "oai-statsig-rust",
@@ -3054,7 +3054,7 @@ dependencies = [
3054
3054
 
3055
3055
  [[package]]
3056
3056
  name = "statsig_ffi"
3057
- version = "0.24.0-rc.2"
3057
+ version = "0.24.1"
3058
3058
  dependencies = [
3059
3059
  "async-trait",
3060
3060
  "cbindgen",
@@ -20,7 +20,7 @@ exclude = [
20
20
  [workspace.package]
21
21
  edition = "2021"
22
22
  license = "ISC"
23
- version = "0.24.0-rc.2"
23
+ version = "0.24.1"
24
24
  homepage = "https://statsig.com/"
25
25
  authors = ["Statsig", "Daniel Loomb <daniel@statsig.com>"]
26
26
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oai_statsig_python_core
3
- Version: 0.24.0rc2
3
+ Version: 0.24.1
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -43,7 +43,7 @@ serde_json = { version = "1.0.143", features = [
43
43
  ] }
44
44
  serde_with = "3.4.0"
45
45
  sha2 = "0.10.8"
46
- oai-statsig-grpc = { path = "../statsig-grpc", version = "0.24.0-rc.2", optional = true }
46
+ oai-statsig-grpc = { path = "../statsig-grpc", version = "0.24.1", optional = true }
47
47
  simple_logger = { version = "5.0.0" }
48
48
  tempfile = "3.8.1"
49
49
  tokio = { version = "1.39.1", features = ["full"] }
@@ -21,6 +21,7 @@ use crate::{
21
21
  statsig_metadata::StatsigMetadata,
22
22
  write_lock_or_noop, EventLoggingAdapter, StatsigErr, StatsigOptions, StatsigRuntime,
23
23
  };
24
+ use chrono::Utc;
24
25
  use parking_lot::RwLock;
25
26
  use std::{collections::HashMap, sync::Arc};
26
27
  use std::{
@@ -387,10 +388,19 @@ impl EventLogger {
387
388
  flush_type.to_string(),
388
389
  );
389
390
 
390
- let result = self
391
- .logging_adapter
392
- .log_events(batch.get_log_event_request(statsig_metadata))
393
- .await;
391
+ let request = batch.get_log_event_request(statsig_metadata);
392
+ let max_event_queue_time_ms =
393
+ batch.get_max_event_queue_time_ms(Utc::now().timestamp_millis() as u64);
394
+ let observability_tags = self.logging_adapter.get_observability_tags();
395
+
396
+ self.ops_stats.log_event_request_batch_stats(
397
+ batch.events.len(),
398
+ max_event_queue_time_ms,
399
+ flush_type,
400
+ observability_tags.clone(),
401
+ );
402
+
403
+ let result = self.logging_adapter.log_events(request).await;
394
404
 
395
405
  batch.attempts += 1;
396
406
 
@@ -398,7 +408,8 @@ impl EventLogger {
398
408
  Ok(true) => {
399
409
  self.ops_stats.log_event_request_success(
400
410
  batch.events.len(),
401
- self.logging_adapter.get_observability_tags(),
411
+ flush_type,
412
+ observability_tags,
402
413
  );
403
414
  Ok(())
404
415
  }
@@ -27,16 +27,55 @@ impl OpsStatsForInstance {
27
27
  });
28
28
  }
29
29
 
30
+ pub fn log_event_request_batch_stats(
31
+ &self,
32
+ event_count: usize,
33
+ max_event_queue_time_ms: u64,
34
+ flush_type: FlushType,
35
+ tags: Option<HashMap<String, String>>,
36
+ ) {
37
+ let tags = Some(get_event_request_tags(tags, flush_type));
38
+
39
+ self.log(OpsStatsEvent::Observability(ObservabilityEvent {
40
+ metric_type: MetricType::Dist,
41
+ metric_name: "log_event_request_event_count".to_string(),
42
+ value: event_count as f64,
43
+ tags: tags.clone(),
44
+ }));
45
+
46
+ self.log(OpsStatsEvent::Observability(ObservabilityEvent {
47
+ metric_type: MetricType::Dist,
48
+ metric_name: "log_event_request_max_event_queue_time_ms".to_string(),
49
+ value: max_event_queue_time_ms as f64,
50
+ tags,
51
+ }));
52
+ }
53
+
30
54
  pub fn log_event_request_success(
31
55
  &self,
32
56
  event_count: usize,
57
+ flush_type: FlushType,
33
58
  tags: Option<HashMap<String, String>>,
34
59
  ) {
35
60
  self.log(OpsStatsEvent::Observability(ObservabilityEvent {
36
61
  metric_type: MetricType::Increment,
37
62
  metric_name: "events_successfully_sent_count".to_string(),
38
63
  value: event_count as f64,
39
- tags,
64
+ tags: Some(get_event_request_tags(tags, flush_type)),
65
+ }))
66
+ }
67
+
68
+ pub fn log_event_request_uncompressed_body_size_bytes(
69
+ &self,
70
+ uncompressed_body_size_bytes: usize,
71
+ flush_type: String,
72
+ tags: Option<HashMap<String, String>>,
73
+ ) {
74
+ self.log(OpsStatsEvent::Observability(ObservabilityEvent {
75
+ metric_type: MetricType::Dist,
76
+ metric_name: "log_event_request_uncompressed_body_size_bytes".to_string(),
77
+ value: uncompressed_body_size_bytes as f64,
78
+ tags: Some(get_event_request_tags(tags, flush_type)),
40
79
  }))
41
80
  }
42
81
 
@@ -74,3 +113,12 @@ impl OpsStatsForInstance {
74
113
  });
75
114
  }
76
115
  }
116
+
117
+ fn get_event_request_tags(
118
+ tags: Option<HashMap<String, String>>,
119
+ flush_type: impl ToString,
120
+ ) -> HashMap<String, String> {
121
+ let mut tags = tags.unwrap_or_default();
122
+ tags.insert("flush_type".to_string(), flush_type.to_string());
123
+ tags
124
+ }
@@ -0,0 +1,84 @@
1
+ use crate::event_logging::statsig_event_internal::StatsigEventInternal;
2
+ use crate::log_event_payload::{LogEventPayload, LogEventRequest};
3
+ use crate::statsig_metadata::StatsigMetadataWithLogEventExtras;
4
+ use serde_json::json;
5
+
6
+ pub struct EventBatch {
7
+ pub attempts: u8,
8
+ pub events: Vec<StatsigEventInternal>,
9
+ first_event_time_ms: Option<u64>,
10
+ }
11
+
12
+ impl EventBatch {
13
+ pub fn new(events: Vec<StatsigEventInternal>) -> Self {
14
+ let first_event_time_ms = events.first().map(|event| event.time);
15
+ Self {
16
+ events,
17
+ attempts: 0,
18
+ first_event_time_ms,
19
+ }
20
+ }
21
+
22
+ pub fn get_max_event_queue_time_ms(&self, now_ms: u64) -> u64 {
23
+ self.first_event_time_ms
24
+ .map(|first_event_time_ms| now_ms.saturating_sub(first_event_time_ms))
25
+ .unwrap_or_default()
26
+ }
27
+
28
+ pub fn get_log_event_request(
29
+ &self,
30
+ statsig_metadata: StatsigMetadataWithLogEventExtras,
31
+ ) -> LogEventRequest {
32
+ let payload = LogEventPayload {
33
+ events: json!(self.events),
34
+ statsig_metadata: json!(statsig_metadata),
35
+ };
36
+
37
+ LogEventRequest {
38
+ payload,
39
+ event_count: self.events.len() as u64,
40
+ retries: self.attempts as u32,
41
+ }
42
+ }
43
+ }
44
+
45
+ #[cfg(test)]
46
+ mod tests {
47
+ use super::*;
48
+ use crate::{event_logging::statsig_event::StatsigEvent, user::StatsigUserLoggable};
49
+
50
+ fn make_event(time: u64) -> StatsigEventInternal {
51
+ StatsigEventInternal::new(
52
+ time,
53
+ StatsigUserLoggable::null(),
54
+ StatsigEvent {
55
+ event_name: "test_event".to_string(),
56
+ value: None,
57
+ metadata: None,
58
+ statsig_metadata: None,
59
+ },
60
+ None,
61
+ )
62
+ }
63
+
64
+ #[test]
65
+ fn max_event_queue_time_uses_cached_first_event_time() {
66
+ let batch = EventBatch::new(vec![make_event(100), make_event(200)]);
67
+
68
+ assert_eq!(batch.get_max_event_queue_time_ms(350), 250);
69
+ }
70
+
71
+ #[test]
72
+ fn max_event_queue_time_saturates_at_zero() {
73
+ let batch = EventBatch::new(vec![make_event(200)]);
74
+
75
+ assert_eq!(batch.get_max_event_queue_time_ms(100), 0);
76
+ }
77
+
78
+ #[test]
79
+ fn max_event_queue_time_defaults_for_empty_batch() {
80
+ let batch = EventBatch::new(Vec::new());
81
+
82
+ assert_eq!(batch.get_max_event_queue_time_ms(100), 0);
83
+ }
84
+ }
@@ -122,7 +122,7 @@ impl EventQueue {
122
122
  }
123
123
 
124
124
  pub fn reconcile_batching(&self) -> QueueReconcileResult {
125
- let mut pending_events: VecDeque<StatsigEventInternal> = self
125
+ let pending_events: VecDeque<StatsigEventInternal> = self
126
126
  .take_all_pending_events()
127
127
  .into_iter()
128
128
  .map(|evt| evt.into_statsig_event_internal())
@@ -140,11 +140,13 @@ impl EventQueue {
140
140
  .into_iter()
141
141
  .partition(|batch| batch.events.len() >= self.batch_size);
142
142
 
143
+ let mut events_to_batch = VecDeque::new();
143
144
  for batch in partial_batches {
144
- pending_events.extend(batch.events);
145
+ events_to_batch.extend(batch.events);
145
146
  }
147
+ events_to_batch.extend(pending_events);
146
148
 
147
- let new_batches = self.create_batches(pending_events);
149
+ let new_batches = self.create_batches(events_to_batch);
148
150
 
149
151
  batches.extend(full_batches);
150
152
  batches.extend(new_batches);
@@ -2,6 +2,7 @@ use crate::compression::compression_helper::{compress_data, get_compression_form
2
2
  use crate::event_logging_adapter::EventLoggingAdapter;
3
3
  use crate::log_event_payload::LogEventRequest;
4
4
  use crate::networking::{NetworkClient, NetworkError, RequestArgs};
5
+ use crate::observability::ops_stats::{OpsStatsForInstance, OPS_STATS};
5
6
  use crate::statsig_metadata::StatsigMetadata;
6
7
  use crate::{log_d, StatsigErr, StatsigOptions, StatsigRuntime};
7
8
  use async_trait::async_trait;
@@ -22,6 +23,7 @@ const TAG: &str = stringify!(StatsigHttpEventLoggingAdapter);
22
23
  pub struct StatsigHttpEventLoggingAdapter {
23
24
  log_event_url: String,
24
25
  network: NetworkClient,
26
+ ops_stats: Arc<OpsStatsForInstance>,
25
27
  }
26
28
 
27
29
  impl StatsigHttpEventLoggingAdapter {
@@ -37,9 +39,14 @@ impl StatsigHttpEventLoggingAdapter {
37
39
  .map(|u| u.to_string())
38
40
  .unwrap_or_else(|| DEFAULT_LOG_EVENT_URL.to_string());
39
41
 
42
+ let sdk_instance_id = options
43
+ .map(|opts| opts.get_sdk_instance_id(sdk_key))
44
+ .unwrap_or(sdk_key);
45
+
40
46
  Self {
41
47
  log_event_url,
42
48
  network: NetworkClient::new(sdk_key, Some(headers), options),
49
+ ops_stats: OPS_STATS.get_for_instance(sdk_instance_id),
43
50
  }
44
51
  }
45
52
 
@@ -70,6 +77,13 @@ impl StatsigHttpEventLoggingAdapter {
70
77
  // Compress data before sending it
71
78
  let bytes = serde_json::to_vec(&request.payload)
72
79
  .map_err(|e| StatsigErr::SerializationError(e.to_string()))?;
80
+ self.ops_stats
81
+ .log_event_request_uncompressed_body_size_bytes(
82
+ bytes.len(),
83
+ get_request_flush_type(request),
84
+ self.get_observability_tags(),
85
+ );
86
+
73
87
  let compressed = match compress_data(&bytes) {
74
88
  Ok(c) => c,
75
89
  Err(e) => return Err(e),
@@ -118,6 +132,16 @@ impl StatsigHttpEventLoggingAdapter {
118
132
  }
119
133
  }
120
134
 
135
+ fn get_request_flush_type(request: &LogEventRequest) -> String {
136
+ request
137
+ .payload
138
+ .statsig_metadata
139
+ .get("flushType")
140
+ .and_then(|value| value.as_str())
141
+ .unwrap_or("unknown")
142
+ .to_string()
143
+ }
144
+
121
145
  #[async_trait]
122
146
  impl EventLoggingAdapter for StatsigHttpEventLoggingAdapter {
123
147
  async fn start(&self, _statsig_runtime: &Arc<StatsigRuntime>) -> Result<(), StatsigErr> {
@@ -11,7 +11,7 @@ lazy_static! {
11
11
  }
12
12
 
13
13
  /// Canonical SDK release version embedded in shared-core metadata.
14
- pub const SDK_VERSION: &str = env!("CARGO_PKG_VERSION");
14
+ pub const SDK_VERSION: &str = "0.24.1";
15
15
 
16
16
  const TAG: &str = stringify!(StatsigMetadata);
17
17
 
@@ -351,7 +351,7 @@ async fn test_sdk_initialization_dist_recorded() {
351
351
 
352
352
  #[tokio::test]
353
353
  #[serial]
354
- async fn test_event_success_count_includes_log_event_endpoint() {
354
+ async fn test_event_logging_metrics_include_request_context() {
355
355
  let obs_client = Arc::new(MockObservabilityClient {
356
356
  calls: Mutex::new(Vec::new()),
357
357
  });
@@ -369,22 +369,60 @@ async fn test_event_success_count_includes_log_event_endpoint() {
369
369
 
370
370
  let expected_source_api = mock_scrapi.url_for_endpoint(Endpoint::LogEvent);
371
371
  let deadline = Instant::now() + Duration::from_secs(1);
372
- let mut found_metric = false;
372
+ let mut found_success_count = false;
373
+ let mut found_event_count = false;
374
+ let mut found_uncompressed_body_size = false;
375
+ let mut found_max_event_queue_time = false;
373
376
 
374
377
  while Instant::now() < deadline {
375
378
  {
376
379
  let calls = obs_client.calls.lock().unwrap();
377
- found_metric = calls.iter().any(|call| match call {
380
+ found_success_count = calls.iter().any(|call| match call {
378
381
  RecordedCall::Increment(metric_name, value, Some(tags)) => {
379
382
  metric_name == "statsig.sdk.events_successfully_sent_count"
380
383
  && *value > 0.0
381
384
  && tags.get("source_api") == Some(&expected_source_api)
385
+ && tags.get("flush_type").map(String::as_str) == Some("manual")
386
+ }
387
+ _ => false,
388
+ });
389
+
390
+ found_event_count = calls.iter().any(|call| match call {
391
+ RecordedCall::Dist(metric_name, value, Some(tags)) => {
392
+ metric_name == "statsig.sdk.log_event_request_event_count"
393
+ && *value > 0.0
394
+ && tags.get("source_api") == Some(&expected_source_api)
395
+ && tags.get("flush_type").map(String::as_str) == Some("manual")
396
+ }
397
+ _ => false,
398
+ });
399
+
400
+ found_uncompressed_body_size = calls.iter().any(|call| match call {
401
+ RecordedCall::Dist(metric_name, value, Some(tags)) => {
402
+ metric_name == "statsig.sdk.log_event_request_uncompressed_body_size_bytes"
403
+ && *value > 0.0
404
+ && tags.get("source_api") == Some(&expected_source_api)
405
+ && tags.get("flush_type").map(String::as_str) == Some("manual")
406
+ }
407
+ _ => false,
408
+ });
409
+
410
+ found_max_event_queue_time = calls.iter().any(|call| match call {
411
+ RecordedCall::Dist(metric_name, value, Some(tags)) => {
412
+ metric_name == "statsig.sdk.log_event_request_max_event_queue_time_ms"
413
+ && *value >= 0.0
414
+ && tags.get("source_api") == Some(&expected_source_api)
415
+ && tags.get("flush_type").map(String::as_str) == Some("manual")
382
416
  }
383
417
  _ => false,
384
418
  });
385
419
  }
386
420
 
387
- if found_metric {
421
+ if found_success_count
422
+ && found_event_count
423
+ && found_uncompressed_body_size
424
+ && found_max_event_queue_time
425
+ {
388
426
  break;
389
427
  }
390
428
 
@@ -392,8 +430,20 @@ async fn test_event_success_count_includes_log_event_endpoint() {
392
430
  }
393
431
 
394
432
  assert!(
395
- found_metric,
396
- "Expected events_successfully_sent_count to include source_api"
433
+ found_success_count,
434
+ "Expected events_successfully_sent_count to include source_api and flush_type"
435
+ );
436
+ assert!(
437
+ found_event_count,
438
+ "Expected log_event_request_event_count to include request context"
439
+ );
440
+ assert!(
441
+ found_uncompressed_body_size,
442
+ "Expected log_event_request_uncompressed_body_size_bytes to include request context"
443
+ );
444
+ assert!(
445
+ found_max_event_queue_time,
446
+ "Expected log_event_request_max_event_queue_time_ms to include request context"
397
447
  );
398
448
  }
399
449
 
@@ -1,34 +0,0 @@
1
- use crate::event_logging::statsig_event_internal::StatsigEventInternal;
2
- use crate::log_event_payload::{LogEventPayload, LogEventRequest};
3
- use crate::statsig_metadata::StatsigMetadataWithLogEventExtras;
4
- use serde_json::json;
5
-
6
- pub struct EventBatch {
7
- pub attempts: u8,
8
- pub events: Vec<StatsigEventInternal>,
9
- }
10
-
11
- impl EventBatch {
12
- pub fn new(events: Vec<StatsigEventInternal>) -> Self {
13
- Self {
14
- events,
15
- attempts: 0,
16
- }
17
- }
18
-
19
- pub fn get_log_event_request(
20
- &self,
21
- statsig_metadata: StatsigMetadataWithLogEventExtras,
22
- ) -> LogEventRequest {
23
- let payload = LogEventPayload {
24
- events: json!(self.events),
25
- statsig_metadata: json!(statsig_metadata),
26
- };
27
-
28
- LogEventRequest {
29
- payload,
30
- event_count: self.events.len() as u64,
31
- retries: self.attempts as u32,
32
- }
33
- }
34
- }