oai-statsig-python-core 0.23.1__tar.gz → 0.24.0__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.23.1 → oai_statsig_python_core-0.24.0}/Cargo.lock +6 -6
  2. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/Cargo.toml +2 -1
  3. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/PKG-INFO +1 -1
  4. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/statsig_python_core.pyi +6 -1
  5. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/statsig_base_py.rs +22 -6
  6. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/statsig_options_py.rs +6 -0
  7. oai_statsig_python_core-0.24.0/statsig-pyo3/tests/event_listener_reentrancy_subprocess.py +13 -0
  8. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_initialize_with_details.py +18 -0
  9. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_interned_store_preload.py +27 -0
  10. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_sdk_event_emitter.py +14 -0
  11. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/Cargo.toml +2 -2
  12. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/__tests__/mod.rs +1 -0
  13. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/__tests__/spec_store_tests.rs +44 -2
  14. oai_statsig_python_core-0.24.0/statsig-rust/src/__tests__/statsig_options_tests.rs +20 -0
  15. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/console_capture/console_capture_instances.rs +6 -3
  16. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/evaluation_types.rs +33 -2
  17. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/evaluation_types_v2.rs +9 -3
  18. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/evaluator_result.rs +2 -0
  19. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_logger.rs +4 -3
  20. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/exposure_sampling.rs +2 -2
  21. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/sec_expo_as_primary_experiment.rs +2 -2
  22. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/id_lists_adapter/statsig_http_id_lists_adapter.rs +3 -1
  23. oai_statsig_python_core-0.24.0/statsig-rust/src/interned_values/__tests__/fixtures/interned_store_v1.mmap +0 -0
  24. oai_statsig_python_core-0.24.0/statsig-rust/src/interned_values/__tests__/interned_store_mmap_fetch_tests.rs +111 -0
  25. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/interned_values/interned_store.rs +60 -9
  26. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/network_client.rs +48 -5
  27. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/network_error.rs +9 -0
  28. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/observability/observability_client_adapter.rs +61 -16
  29. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/persistent_storage/persistent_values_manager.rs +2 -0
  30. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/sdk_diagnostics/diagnostics.rs +2 -2
  31. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/sdk_event_emitter/event_emitter.rs +135 -21
  32. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/sdk_event_emitter/event_emitter_tests.rs +74 -1
  33. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/spec_store.rs +53 -39
  34. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/statsig_data_store_specs_adapter.rs +3 -1
  35. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/statsig_grpc_specs_adapter.rs +4 -1
  36. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/statsig_http_specs_adapter.rs +3 -1
  37. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig.rs +13 -8
  38. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_metadata.rs +2 -1
  39. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_options.rs +14 -2
  40. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/gcir_tests.rs +101 -1
  41. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/observability_client_usage_tests.rs +24 -5
  42. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/proto_specs_usage_tests.rs +3 -1
  43. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/mock_specs_adapter.rs +24 -4
  44. oai_statsig_python_core-0.23.1/statsig-rust/src/interned_values/__tests__/interned_store_mmap_fetch_tests.rs +0 -41
  45. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/__init__.py +0 -0
  46. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/data_store.py +0 -0
  47. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/error_boundary.py +0 -0
  48. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/event_logging_adapter.py +0 -0
  49. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/observability_client.py +0 -0
  50. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/output_logger_provider.py +0 -0
  51. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/persistent_storage.py +0 -0
  52. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/py.typed +0 -0
  53. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/requirements.txt +0 -0
  54. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/statsig.py +0 -0
  55. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/py_src/statsig_python_core/statsig_types.py +0 -0
  56. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/pyproject.toml +0 -0
  57. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/Cargo.toml +0 -0
  58. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/README.md +0 -0
  59. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/build.rs +0 -0
  60. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/src/lib.rs +0 -0
  61. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/src/mock_forward_proxy.rs +0 -0
  62. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/src/protos/statsig_forward_proxy.proto +0 -0
  63. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/src/statsig_forward_proxy.rs +0 -0
  64. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/src/statsig_grpc_client.rs +0 -0
  65. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-grpc/src/statsig_grpc_err.rs +0 -0
  66. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/.github/workflows/CI.yml +0 -0
  67. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/.gitignore +0 -0
  68. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/Cargo.toml +0 -0
  69. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/README.md +0 -0
  70. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/benchmarks/user_creation_benchmark.py +0 -0
  71. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/benchmarks/user_memory_benchmark.py +0 -0
  72. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/bin/stub_gen.rs +0 -0
  73. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/data_store_base_py.rs +0 -0
  74. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/event_logging_adapter_base_py.rs +0 -0
  75. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/interned_store_py.rs +0 -0
  76. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/lib.rs +0 -0
  77. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/observability_client_base_py.rs +0 -0
  78. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/output_logger_provider_base_py.rs +0 -0
  79. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/pyo_utils.rs +0 -0
  80. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/raw_evaluation_compat_py.rs +0 -0
  81. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/safe_gil.rs +0 -0
  82. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/statsig_metadata_py.rs +0 -0
  83. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/statsig_persistent_storage_override_adapter_py.rs +0 -0
  84. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/statsig_types_py.rs +0 -0
  85. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/statsig_user_py.rs +0 -0
  86. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/unit_id_py.rs +0 -0
  87. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/src/valid_primitives_py.rs +0 -0
  88. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/fork_runner.py +0 -0
  89. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/mock_output_logger.py +0 -0
  90. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/mock_scrapi.py +0 -0
  91. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/profile_util.py +0 -0
  92. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/shutdown_sub_proc.py +0 -0
  93. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_bulk_evaluate_gcir_parity.py +0 -0
  94. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_data_store.py +0 -0
  95. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_error_boundary.py +0 -0
  96. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_event_logging_adapter.py +0 -0
  97. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_experiment_serialization.py +0 -0
  98. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_exposure_logging.py +0 -0
  99. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_feature_gate_serialization.py +0 -0
  100. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_forking.py +0 -0
  101. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_get_dynamic_config.py +0 -0
  102. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_layer_param_exposure_sampling.py +0 -0
  103. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_layer_serialization.py +0 -0
  104. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_observability_client.py +0 -0
  105. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_output_logger_provider.py +0 -0
  106. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_override_adapter.py +0 -0
  107. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_performance.py +0 -0
  108. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_sec_expo_as_primary.py +0 -0
  109. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_shared_statsig.py +0 -0
  110. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_shutdown.py +0 -0
  111. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_statsig.py +0 -0
  112. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_statsig_options.py +0 -0
  113. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_statsig_user.py +0 -0
  114. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_statsig_user_json_serialization.py +0 -0
  115. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_statsig_user_none_fields.py +0 -0
  116. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_statsig_user_pickle.py +0 -0
  117. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/test_user_exposure_e2e.py +0 -0
  118. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-pyo3/tests/utils.py +0 -0
  119. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/build.rs +0 -0
  120. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/resources/ip_supalite.table +0 -0
  121. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/resources/ua_parser_regex.yaml +0 -0
  122. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/resources/ua_parser_regex_lite.yaml +0 -0
  123. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/__tests__/interned_string_tests.rs +0 -0
  124. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/__tests__/user_value_tests.rs +0 -0
  125. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/compression/compression_helper.rs +0 -0
  126. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/compression/mod.rs +0 -0
  127. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/console_capture/console_capture_handler.rs +0 -0
  128. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/console_capture/console_capture_options.rs +0 -0
  129. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/console_capture/console_log_line_levels.rs +0 -0
  130. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/console_capture/mod.rs +0 -0
  131. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/data_store_interface.rs +0 -0
  132. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/dcs_str.rs +0 -0
  133. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/__tests__/dynamic_returnable_tests.rs +0 -0
  134. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/__tests__/mod.rs +0 -0
  135. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/__tests__/rkyv_value_tests.rs +0 -0
  136. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/cmab_evaluator.rs +0 -0
  137. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/comparisons/compare_arrays.rs +0 -0
  138. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/comparisons/compare_numbers.rs +0 -0
  139. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/comparisons/compare_str_with_regex.rs +0 -0
  140. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/comparisons/compare_strings_in_array.rs +0 -0
  141. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/comparisons/compare_time.rs +0 -0
  142. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/comparisons/compare_versions.rs +0 -0
  143. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/comparisons/mod.rs +0 -0
  144. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/country_lookup.rs +0 -0
  145. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/dynamic_returnable.rs +0 -0
  146. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/dynamic_string.rs +0 -0
  147. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/dynamic_value.rs +0 -0
  148. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/evaluation_details.rs +0 -0
  149. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/evaluation_types_initialize_v2.rs +0 -0
  150. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/evaluator.rs +0 -0
  151. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/evaluator_context.rs +0 -0
  152. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/evaluator_value.rs +0 -0
  153. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/get_unit_id.rs +0 -0
  154. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/mod.rs +0 -0
  155. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/rkyv_value.rs +0 -0
  156. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/secondary_exposure_key.rs +0 -0
  157. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/first_party_ua_parser.rs +0 -0
  158. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/mod.rs +0 -0
  159. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/mod.rs +0 -0
  160. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_helpers.rs +0 -0
  161. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer.rs +0 -0
  162. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_browser.rs +0 -0
  163. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_os.rs +0 -0
  164. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/mod.rs +0 -0
  165. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/tokenizer.rs +0 -0
  166. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/ua_parser.rs +0 -0
  167. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/window_iter.rs +0 -0
  168. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/third_party_ua_parser.rs +0 -0
  169. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/evaluation/user_agent_parsing/ua_parser.rs +0 -0
  170. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_emitter/statsig_event_emitter_tests.rs +0 -0
  171. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/delayed_exposure_store.rs +0 -0
  172. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_logger_constants.rs +0 -0
  173. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_logger_ops_stats.rs +0 -0
  174. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/batch.rs +0 -0
  175. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/mod.rs +0 -0
  176. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queue.rs +0 -0
  177. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queued_config_expo.rs +0 -0
  178. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queued_event.rs +0 -0
  179. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queued_experiment_expo.rs +0 -0
  180. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queued_expo.rs +0 -0
  181. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queued_gate_expo.rs +0 -0
  182. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queued_layer_param_expo.rs +0 -0
  183. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queued_passthrough.rs +0 -0
  184. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/event_queue/queued_secondary_expo.rs +0 -0
  185. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/exposure_utils.rs +0 -0
  186. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/flush_interval.rs +0 -0
  187. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/flush_type.rs +0 -0
  188. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/mod.rs +0 -0
  189. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/statsig_event.rs +0 -0
  190. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging/statsig_event_internal.rs +0 -0
  191. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging_adapter/event_logging_adapter_trait.rs +0 -0
  192. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging_adapter/log_event_payload.rs +0 -0
  193. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging_adapter/mod.rs +0 -0
  194. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging_adapter/statsig_http_event_logging_adapter.rs +0 -0
  195. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/event_logging_adapter/statsig_local_file_event_logging_adapter.rs +0 -0
  196. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/dynamic_configs_processor.rs +0 -0
  197. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/feature_gates_processor.rs +0 -0
  198. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/gcir_formatter.rs +0 -0
  199. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/gcir_options.rs +0 -0
  200. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/gcir_process_iter.rs +0 -0
  201. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/layer_configs_processor.rs +0 -0
  202. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/mod.rs +0 -0
  203. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/param_stores_processor.rs +0 -0
  204. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/stringify_sec_exposures.rs +0 -0
  205. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/gcir/target_app_id_utils.rs +0 -0
  206. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/global_configs.rs +0 -0
  207. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/hashing/ahash.rs +0 -0
  208. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/hashing/djb2.rs +0 -0
  209. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/hashing/hash_util.rs +0 -0
  210. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/hashing/memo_sha_256.rs +0 -0
  211. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/hashing/mod.rs +0 -0
  212. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/id_lists_adapter/id_list.rs +0 -0
  213. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/id_lists_adapter/id_lists_adapter_trait.rs +0 -0
  214. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/id_lists_adapter/mod.rs +0 -0
  215. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/init_details.rs +0 -0
  216. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/initialize_evaluations_response.rs +0 -0
  217. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/initialize_response.rs +0 -0
  218. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/initialize_v2_response.rs +0 -0
  219. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/instance_registry.rs +0 -0
  220. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/interned_string.rs +0 -0
  221. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/interned_values/__tests__/interned_store_eval_value_tests.rs +0 -0
  222. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/interned_values/__tests__/interned_store_returnable_tests.rs +0 -0
  223. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/interned_values/__tests__/interned_store_string_tests.rs +0 -0
  224. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/interned_values/__tests__/mod.rs +0 -0
  225. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/interned_values/mod.rs +0 -0
  226. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/lib.rs +0 -0
  227. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/logging_utils.rs +0 -0
  228. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/macros.rs +0 -0
  229. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/__tests__/mod.rs +0 -0
  230. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/__tests__/response_data_tests.rs +0 -0
  231. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/http_types.rs +0 -0
  232. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/mod.rs +0 -0
  233. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/providers/mod.rs +0 -0
  234. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/providers/net_provider_global.rs +0 -0
  235. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/providers/net_provider_noop.rs +0 -0
  236. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/providers/net_provider_reqwest.rs +0 -0
  237. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/networking/proxy_config.rs +0 -0
  238. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/observability/console_capture_observer.rs +0 -0
  239. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/observability/diagnostics_observer.rs +0 -0
  240. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/observability/mod.rs +0 -0
  241. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/observability/ops_stats.rs +0 -0
  242. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/observability/sdk_errors_observer.rs +0 -0
  243. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/output_logger.rs +0 -0
  244. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/override_adapter/mod.rs +0 -0
  245. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/override_adapter/override_adapter_trait.rs +0 -0
  246. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/override_adapter/statsig_local_override_adapter.rs +0 -0
  247. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/persistent_storage/__tests__/mod.rs +0 -0
  248. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/persistent_storage/__tests__/sticky_values_serialization_tests.rs +0 -0
  249. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/persistent_storage/mod.rs +0 -0
  250. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/persistent_storage/persistent_storage_trait.rs +0 -0
  251. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/sdk_diagnostics/diagnostics_utils.rs +0 -0
  252. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/sdk_diagnostics/marker.rs +0 -0
  253. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/sdk_diagnostics/mod.rs +0 -0
  254. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/sdk_event_emitter/event_types.rs +0 -0
  255. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/sdk_event_emitter/mod.rs +0 -0
  256. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/config_spec_background_sync_metrics.rs +0 -0
  257. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/mod.rs +0 -0
  258. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/response_format.rs +0 -0
  259. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/specs_adapter_trait.rs +0 -0
  260. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/statsig_bootstrap_specs_adapter.rs +0 -0
  261. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/statsig_customized_specs_adapter.rs +0 -0
  262. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_adapter/statsig_local_file_specs_adapter.rs +0 -0
  263. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/__tests__/mod.rs +0 -0
  264. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/__tests__/proto_specs_syncing_tests.rs +0 -0
  265. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/__tests__/proto_specs_unknown_tests.rs +0 -0
  266. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/__tests__/proto_specs_vs_json_tests.rs +0 -0
  267. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/__tests__/proto_stream_reader_tests.rs +0 -0
  268. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/cmab_types.rs +0 -0
  269. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/explicit_params.rs +0 -0
  270. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/mod.rs +0 -0
  271. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/param_store_types.rs +0 -0
  272. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/proto_specs.rs +0 -0
  273. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/proto_stream_reader.rs +0 -0
  274. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/spec_types.rs +0 -0
  275. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/specs_hash_map.rs +0 -0
  276. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/specs_response/statsig_config_specs.rs +0 -0
  277. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_core_api_options.rs +0 -0
  278. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_err.rs +0 -0
  279. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_global.rs +0 -0
  280. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_runtime.rs +0 -0
  281. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_type_factories.rs +0 -0
  282. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_types.rs +0 -0
  283. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/statsig_types_raw.rs +0 -0
  284. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/fast_statsig_user.rs +0 -0
  285. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/into_optional.rs +0 -0
  286. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/mod.rs +0 -0
  287. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/statsig_user.rs +0 -0
  288. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/statsig_user_builder.rs +0 -0
  289. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/statsig_user_internal.rs +0 -0
  290. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/statsig_user_loggable.rs +0 -0
  291. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/unit_id.rs +0 -0
  292. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/user_data.rs +0 -0
  293. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/user/user_value.rs +0 -0
  294. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/utils/mod.rs +0 -0
  295. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/src/value_parsing.rs +0 -0
  296. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/check_gate_tests.rs +0 -0
  297. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/customized_specs_adapter_tests.rs +0 -0
  298. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/big_number_dcs.json +0 -0
  299. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/check_gate_perf_dcs.json +0 -0
  300. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/company_id_list +0 -0
  301. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/dcs_error.json +0 -0
  302. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/dcs_missing_gates.json +0 -0
  303. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/dcs_non_case_sensitive.json +0 -0
  304. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/dcs_user_agent_versions.json +0 -0
  305. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/dcs_with_analytical_exposure_sampling.json +0 -0
  306. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/dcs_with_checksum.json +0 -0
  307. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/dcs_with_sampling.json +0 -0
  308. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/dcs_with_sdk_configs.json +0 -0
  309. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/demo_proj_dcs.json +0 -0
  310. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/demo_proj_dcs.pb.br +0 -0
  311. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/eval_proj_dcs.json +0 -0
  312. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/eval_proj_dcs.pb.br +0 -0
  313. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/get_id_lists.json +0 -0
  314. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/perf_proj_dcs.json +0 -0
  315. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/perf_proj_dcs.pb.br +0 -0
  316. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/shared_dict_dict_only.json +0 -0
  317. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/shared_dict_original_dcs.json +0 -0
  318. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/shared_dict_response_uncompressed.json +0 -0
  319. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/shared_dict_response_with_dict.json +0 -0
  320. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/shared_dict_response_without_dict.json +0 -0
  321. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/test_must_pass_user_agents.txt +0 -0
  322. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/test_user_agents.txt +0 -0
  323. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/ua_string_cases.json +0 -0
  324. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data/unknown_enum.pb.br +0 -0
  325. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data_store_bytes_adapter_tests.rs +0 -0
  326. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data_store_json_bytes_tests.rs +0 -0
  327. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data_store_json_only_no_bytes_methods_tests.rs +0 -0
  328. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data_store_lock_tests.rs +0 -0
  329. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/data_store_proto_bytes_tests.rs +0 -0
  330. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/delayed_exposure_bench.rs +0 -0
  331. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/direct_gcir_tests.rs +0 -0
  332. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/dynamic_string_tests.rs +0 -0
  333. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/dynamic_value_tests.rs +0 -0
  334. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/evaluation_details_tests.rs +0 -0
  335. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/evaluator_value_tests.rs +0 -0
  336. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/event_logger_failing_flush_tests.rs +0 -0
  337. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/event_logger_flush_tests.rs +0 -0
  338. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/event_logger_high_qps_tests.rs +0 -0
  339. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/event_logger_usage_tests.rs +0 -0
  340. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/expected_evaluation_tests.rs +0 -0
  341. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/exposure_sampling_key_tests.rs +0 -0
  342. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/exposure_tests.rs +0 -0
  343. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/flushing_tests.rs +0 -0
  344. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/gate_inversion_eval_tests.rs +0 -0
  345. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/global_configs_test.rs +0 -0
  346. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/grpc_specs_adapter_tests.rs +0 -0
  347. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/hash_util_evaluation_hash_tests.rs +0 -0
  348. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/http_specs_adapter_tests.rs +0 -0
  349. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/initialize_timeout_test.rs +0 -0
  350. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/instance_registry_tests.rs +0 -0
  351. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/layer_serialization_tests.rs +0 -0
  352. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/list_methods_tests.rs +0 -0
  353. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/network_client_streaming_tests.rs +0 -0
  354. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/network_client_tests.rs +0 -0
  355. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/network_failure_tests.rs +0 -0
  356. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/output_logger_tests.rs +0 -0
  357. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/override_adapter_tests.rs +0 -0
  358. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/perf_tests.rs +0 -0
  359. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/spec_store_lock_tests.rs +0 -0
  360. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/spec_types_tests.rs +0 -0
  361. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_disable_network_tests.rs +0 -0
  362. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_environment_tests.rs +0 -0
  363. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_event_emitter_usage_test.rs +0 -0
  364. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_global_tests.rs +0 -0
  365. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_local_file_event_logging_adapter_tests.rs +0 -0
  366. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_local_file_specs_adapter_tests.rs +0 -0
  367. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_options_tests.rs +0 -0
  368. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_shared_tests.rs +0 -0
  369. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_tests.rs +0 -0
  370. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_user_builder_tests.rs +0 -0
  371. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_user_field_accessor_tests.rs +0 -0
  372. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_user_internal_tests.rs +0 -0
  373. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_user_loggable_tests.rs +0 -0
  374. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/statsig_user_tests.rs +0 -0
  375. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/syncing_network_failure_tests.rs +0 -0
  376. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/typed_getters_tests.rs +0 -0
  377. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/ua_parser_util_test.rs +0 -0
  378. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/user_agent_tests_first_party.rs +0 -0
  379. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/user_json_tests.rs +0 -0
  380. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/env_var_guard.rs +0 -0
  381. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/helpers.rs +0 -0
  382. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/mock_data_store.rs +0 -0
  383. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/mock_event_logging_adapter.rs +0 -0
  384. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/mock_log_provider.rs +0 -0
  385. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/mock_observability_client.rs +0 -0
  386. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/mock_scrapi.rs +0 -0
  387. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/statsig-rust/tests/utils/mock_specs_listener.rs +0 -0
  388. {oai_statsig_python_core-0.23.1 → oai_statsig_python_core-0.24.0}/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.23.1"
1725
+ version = "0.24.0"
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.23.1"
1740
+ version = "0.24.0"
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.23.1"
3014
+ version = "0.24.0"
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.23.1"
3029
+ version = "0.24.0"
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.23.1"
3044
+ version = "0.24.0"
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.23.1"
3057
+ version = "0.24.0"
3058
3058
  dependencies = [
3059
3059
  "async-trait",
3060
3060
  "cbindgen",
@@ -8,6 +8,7 @@ strip = true
8
8
  members = ["statsig-rust", "statsig-grpc", "statsig-pyo3"]
9
9
  resolver = "2"
10
10
  exclude = [
11
+ "photon_rust",
11
12
  "examples/rust/sample-usage",
12
13
  "examples/rust/perf-monitor",
13
14
  "examples/rust/mem-bench",
@@ -19,7 +20,7 @@ exclude = [
19
20
  [workspace.package]
20
21
  edition = "2021"
21
22
  license = "ISC"
22
- version = "0.23.1"
23
+ version = "0.24.0"
23
24
  homepage = "https://statsig.com/"
24
25
  authors = ["Statsig", "Daniel Loomb <daniel@statsig.com>"]
25
26
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oai_statsig_python_core
3
- Version: 0.23.1
3
+ Version: 0.24.0
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -213,6 +213,7 @@ class StatsigBasePy:
213
213
  def initialize_with_details(self) -> typing.Any: ...
214
214
  def get_initialize_details(self) -> InitializeDetails: ...
215
215
  def is_initialized(self) -> builtins.bool: ...
216
+ def is_config_spec_ready(self) -> builtins.bool: ...
216
217
  def flush_events(self) -> typing.Any: ...
217
218
  def shutdown(self) -> typing.Any: ...
218
219
  def _INTERNAL_subscribe(self, event_name: builtins.str, callback: typing.Any) -> builtins.str: ...
@@ -345,6 +346,10 @@ class StatsigOptions:
345
346
  @service_name.setter
346
347
  def service_name(self, value: typing.Optional[builtins.str]) -> None: ...
347
348
  @property
349
+ def sdk_instance_id(self) -> typing.Optional[builtins.str]: ...
350
+ @sdk_instance_id.setter
351
+ def sdk_instance_id(self, value: typing.Optional[builtins.str]) -> None: ...
352
+ @property
348
353
  def output_log_level(self) -> typing.Optional[builtins.str]: ...
349
354
  @output_log_level.setter
350
355
  def output_log_level(self, value: typing.Optional[builtins.str]) -> None: ...
@@ -400,7 +405,7 @@ class StatsigOptions:
400
405
  def experimental_flags(self) -> typing.Optional[builtins.set[builtins.str]]: ...
401
406
  @experimental_flags.setter
402
407
  def experimental_flags(self, value: typing.Optional[builtins.set[builtins.str]]) -> None: ...
403
- def __new__(cls, specs_url: typing.Optional[builtins.str] = None, specs_sync_interval_ms: typing.Optional[builtins.int] = None, init_timeout_ms: typing.Optional[builtins.int] = None, log_event_url: typing.Optional[builtins.str] = None, disable_all_logging: typing.Optional[builtins.bool] = None, disable_network: typing.Optional[builtins.bool] = None, log_event_connection_reuse: typing.Optional[builtins.bool] = None, event_logging_flush_interval_ms: typing.Optional[builtins.int] = None, event_logging_max_queue_size: typing.Optional[builtins.int] = None, event_logging_max_pending_batch_queue_size: typing.Optional[builtins.int] = None, enable_id_lists: typing.Optional[builtins.bool] = None, enable_dcs_deltas: typing.Optional[builtins.bool] = None, wait_for_user_agent_init: typing.Optional[builtins.bool] = None, wait_for_country_lookup_init: typing.Optional[builtins.bool] = None, disable_country_lookup: typing.Optional[builtins.bool] = None, id_lists_url: typing.Optional[builtins.str] = None, download_id_list_file_api: typing.Optional[builtins.str] = None, id_lists_sync_interval_ms: typing.Optional[builtins.int] = None, fallback_to_statsig_api: typing.Optional[builtins.bool] = None, environment: typing.Optional[builtins.str] = None, service_name: typing.Optional[builtins.str] = None, output_log_level: typing.Optional[builtins.str] = None, global_custom_fields: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.int, builtins.float, builtins.bool, typing.List[typing.Optional[typing.Union[builtins.str, builtins.int, builtins.float, builtins.bool]]]]]] = None, observability_client: typing.Optional[ObservabilityClientBase] = None, data_store: typing.Optional[DataStoreBase] = None, data_store_key_schema_version: typing.Optional[builtins.str] = None, persistent_storage: typing.Optional[PersistentStorageBaseClass] = None, config_compression_mode: typing.Optional[builtins.str] = None, proxy_config: typing.Optional[ProxyConfig] = None, output_logger_provider: typing.Optional[OutputLoggerProviderBase] = None, spec_adapter_configs: typing.Optional[list] = None, use_third_party_ua_parser: typing.Optional[builtins.bool] = None, disable_disk_access: typing.Optional[builtins.bool] = None, experimental_flags: typing.Optional[builtins.set[builtins.str]] = None, event_logging_adapter: typing.Optional[EventLoggingAdapterBase] = None) -> StatsigOptions: ...
408
+ def __new__(cls, specs_url: typing.Optional[builtins.str] = None, specs_sync_interval_ms: typing.Optional[builtins.int] = None, init_timeout_ms: typing.Optional[builtins.int] = None, log_event_url: typing.Optional[builtins.str] = None, disable_all_logging: typing.Optional[builtins.bool] = None, disable_network: typing.Optional[builtins.bool] = None, log_event_connection_reuse: typing.Optional[builtins.bool] = None, event_logging_flush_interval_ms: typing.Optional[builtins.int] = None, event_logging_max_queue_size: typing.Optional[builtins.int] = None, event_logging_max_pending_batch_queue_size: typing.Optional[builtins.int] = None, enable_id_lists: typing.Optional[builtins.bool] = None, enable_dcs_deltas: typing.Optional[builtins.bool] = None, wait_for_user_agent_init: typing.Optional[builtins.bool] = None, wait_for_country_lookup_init: typing.Optional[builtins.bool] = None, disable_country_lookup: typing.Optional[builtins.bool] = None, id_lists_url: typing.Optional[builtins.str] = None, download_id_list_file_api: typing.Optional[builtins.str] = None, id_lists_sync_interval_ms: typing.Optional[builtins.int] = None, fallback_to_statsig_api: typing.Optional[builtins.bool] = None, environment: typing.Optional[builtins.str] = None, service_name: typing.Optional[builtins.str] = None, sdk_instance_id: typing.Optional[builtins.str] = None, output_log_level: typing.Optional[builtins.str] = None, global_custom_fields: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.int, builtins.float, builtins.bool, typing.List[typing.Optional[typing.Union[builtins.str, builtins.int, builtins.float, builtins.bool]]]]]] = None, observability_client: typing.Optional[ObservabilityClientBase] = None, data_store: typing.Optional[DataStoreBase] = None, data_store_key_schema_version: typing.Optional[builtins.str] = None, persistent_storage: typing.Optional[PersistentStorageBaseClass] = None, config_compression_mode: typing.Optional[builtins.str] = None, proxy_config: typing.Optional[ProxyConfig] = None, output_logger_provider: typing.Optional[OutputLoggerProviderBase] = None, spec_adapter_configs: typing.Optional[list] = None, use_third_party_ua_parser: typing.Optional[builtins.bool] = None, disable_disk_access: typing.Optional[builtins.bool] = None, experimental_flags: typing.Optional[builtins.set[builtins.str]] = None, event_logging_adapter: typing.Optional[EventLoggingAdapterBase] = None) -> StatsigOptions: ...
404
409
 
405
410
  @typing.final
406
411
  class StatsigUser:
@@ -26,6 +26,7 @@ use pyo3::{
26
26
  use pyo3_stub_gen::derive::*;
27
27
  use serde_json::Value;
28
28
  use statsig_rust::interned_string::InternedString;
29
+ use statsig_rust::user::fast_statsig_user::FastStatsigUser;
29
30
  use statsig_rust::user::StatsigUserInternal;
30
31
  use statsig_rust::{
31
32
  log_e, sdk_event_emitter::SubscriptionID, BulkEvaluationOptions, ClientInitResponseOptions,
@@ -139,6 +140,10 @@ impl StatsigBasePy {
139
140
  self.inner.is_initialized()
140
141
  }
141
142
 
143
+ pub fn is_config_spec_ready(&self) -> bool {
144
+ self.inner.is_config_spec_ready()
145
+ }
146
+
142
147
  pub fn flush_events(&self, py: Python) -> PyResult<Py<PyAny>> {
143
148
  let (completion_event, event_clone) = get_completion_event(py)?;
144
149
 
@@ -315,16 +320,17 @@ impl StatsigBasePy {
315
320
  #[pyo3(signature = (user, name, options=None))]
316
321
  pub fn check_gate(
317
322
  &self,
323
+ py: Python<'_>,
318
324
  user: &StatsigUserPy,
319
325
  name: &str,
320
326
  options: Option<FeatureGateEvaluationOptionsPy>,
321
327
  ) -> bool {
322
- let user_internal = StatsigUserInternal::from_fast_user(&user.inner, Some(&self.inner));
323
- self.inner.check_gate_with_options_for_internal_user(
324
- &user_internal,
325
- name,
326
- options.map_or(FeatureGateEvaluationOptions::default(), |o| o.into()),
327
- )
328
+ let statsig = self.inner.clone();
329
+ let user = user.inner.clone();
330
+ let name = name.to_string();
331
+ let options = options.map_or(FeatureGateEvaluationOptions::default(), |o| o.into());
332
+
333
+ py.detach(move || check_gate_for_python(statsig.as_ref(), &user, &name, options))
328
334
  }
329
335
 
330
336
  #[pyo3(name="_INTERNAL_get_feature_gate", signature = (user, name, options=None))]
@@ -784,6 +790,16 @@ fn extract_event_metadata(metadata: Option<Bound<PyDict>>) -> Option<HashMap<Str
784
790
  metadata.map(|m| py_dict_to_json_value_map(&m))
785
791
  }
786
792
 
793
+ fn check_gate_for_python(
794
+ statsig: &Statsig,
795
+ user: &FastStatsigUser,
796
+ name: &str,
797
+ options: FeatureGateEvaluationOptions,
798
+ ) -> bool {
799
+ let user_internal = StatsigUserInternal::from_fast_user(user, Some(statsig));
800
+ statsig.check_gate_with_options_for_internal_user(&user_internal, name, options)
801
+ }
802
+
787
803
  fn bulk_evaluate_to_py_dict(
788
804
  py: Python,
789
805
  statsig: &Statsig,
@@ -156,6 +156,8 @@ pub struct StatsigOptionsPy {
156
156
  #[pyo3(get, set)]
157
157
  pub service_name: Option<String>,
158
158
  #[pyo3(get, set)]
159
+ pub sdk_instance_id: Option<String>,
160
+ #[pyo3(get, set)]
159
161
  pub output_log_level: Option<String>,
160
162
  #[pyo3(get, set)]
161
163
  pub global_custom_fields: Option<HashMap<String, ValidPrimitivesPy>>,
@@ -211,6 +213,7 @@ impl StatsigOptionsPy {
211
213
  fallback_to_statsig_api=None,
212
214
  environment=None,
213
215
  service_name=None,
216
+ sdk_instance_id=None,
214
217
  output_log_level=None,
215
218
  global_custom_fields=None,
216
219
  observability_client=None,
@@ -249,6 +252,7 @@ impl StatsigOptionsPy {
249
252
  fallback_to_statsig_api: Option<bool>,
250
253
  environment: Option<String>,
251
254
  service_name: Option<String>,
255
+ sdk_instance_id: Option<String>,
252
256
  output_log_level: Option<String>,
253
257
  global_custom_fields: Option<HashMap<String, ValidPrimitivesPy>>,
254
258
  observability_client: Option<Py<ObservabilityClientBasePy>>,
@@ -285,6 +289,7 @@ impl StatsigOptionsPy {
285
289
  fallback_to_statsig_api,
286
290
  environment,
287
291
  service_name,
292
+ sdk_instance_id,
288
293
  output_log_level,
289
294
  global_custom_fields,
290
295
  observability_client,
@@ -381,6 +386,7 @@ fn create_inner_statsig_options(
381
386
  fallback_to_statsig_api: opts.fallback_to_statsig_api,
382
387
  environment: opts.environment.clone(),
383
388
  service_name: opts.service_name.clone(),
389
+ sdk_instance_id: opts.sdk_instance_id.clone(),
384
390
  id_lists_adapter: None,
385
391
  override_adapter: None,
386
392
  output_log_level: opts
@@ -0,0 +1,13 @@
1
+ from statsig_python_core import Statsig, StatsigUser
2
+
3
+
4
+ statsig = Statsig("secret-key")
5
+
6
+
7
+ def unsubscribe_from_callback(_event):
8
+ statsig.unsubscribe("gate_evaluated")
9
+
10
+
11
+ statsig.subscribe("gate_evaluated", unsubscribe_from_callback)
12
+ statsig.check_gate(StatsigUser("a-user"), "test_gate")
13
+ statsig.shutdown().wait(timeout=1)
@@ -40,6 +40,24 @@ def test_initialize_with_details_success(statsig_setup):
40
40
  assert init_details.failure_details is None
41
41
 
42
42
 
43
+ def test_is_config_spec_ready_reports_current_specs_state(statsig_setup):
44
+ mock_server = statsig_setup
45
+ options = StatsigOptions(
46
+ specs_url=mock_server.url_for("/v2/download_config_specs"),
47
+ log_event_url=mock_server.url_for("/v1/log_event"),
48
+ )
49
+ statsig = Statsig("secret-key", options)
50
+
51
+ try:
52
+ assert not statsig.is_config_spec_ready()
53
+
54
+ statsig.initialize().wait()
55
+
56
+ assert statsig.is_config_spec_ready()
57
+ finally:
58
+ statsig.shutdown().wait()
59
+
60
+
43
61
  def test_initialize_with_details_failure(statsig_setup):
44
62
  mock_server = statsig_setup
45
63
  options = StatsigOptions(
@@ -48,3 +48,30 @@ def test_interned_store_preload(server_setup):
48
48
 
49
49
  assert gate.details.reason == "Network:Recognized"
50
50
  assert log_provider.error_count == 0
51
+
52
+
53
+ def test_interned_store_mmap_preload(server_setup):
54
+ specs_url, log_event_url = server_setup
55
+ sdk_key = "secret-key"
56
+
57
+ fetch_complete = InternedStore.fetch_and_write_mmap(sdk_key, specs_url)
58
+ assert fetch_complete.wait(5)
59
+ InternedStore.preload_mmap(sdk_key)
60
+
61
+ log_provider = MockOutputLoggerProvider()
62
+ log_provider.logs = []
63
+
64
+ statsig = Statsig(
65
+ sdk_key,
66
+ StatsigOptions(
67
+ specs_url=specs_url,
68
+ log_event_url=log_event_url,
69
+ output_logger_provider=log_provider,
70
+ ),
71
+ )
72
+ statsig.initialize().wait()
73
+ gate = statsig.get_feature_gate(StatsigUser("a-user"), "test_public")
74
+ statsig.shutdown().wait()
75
+
76
+ assert gate.details.reason == "Network:Recognized"
77
+ assert log_provider.error_count == 0
@@ -1,6 +1,9 @@
1
1
  import gc
2
2
  import json
3
+ import subprocess
4
+ import sys
3
5
  from threading import Event
6
+ from pathlib import Path
4
7
  from time import monotonic, sleep
5
8
  from weakref import ref
6
9
 
@@ -11,6 +14,9 @@ from werkzeug import Response
11
14
  from utils import get_test_data_resource
12
15
 
13
16
 
17
+ TESTS_DIR = Path(__file__).parent
18
+
19
+
14
20
  def test_subscribe_receives_gate_event():
15
21
  statsig = Statsig("secret-key")
16
22
  received_events = []
@@ -230,6 +236,14 @@ def test_unsubscribe_by_id_stops_callback_delivery():
230
236
  statsig.shutdown().wait()
231
237
 
232
238
 
239
+ def test_listener_can_unsubscribe_from_callback_without_deadlocking():
240
+ subprocess.run(
241
+ [sys.executable, TESTS_DIR / "event_listener_reentrancy_subprocess.py"],
242
+ check=True,
243
+ timeout=2,
244
+ )
245
+
246
+
233
247
  def test_unsubscribe_by_event_stops_callback_delivery():
234
248
  statsig = Statsig("secret-key")
235
249
  received_events = []
@@ -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.23.1", optional = true }
46
+ oai-statsig-grpc = { path = "../statsig-grpc", version = "0.24.0", 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"] }
@@ -55,7 +55,7 @@ brotli = "8.0.2"
55
55
  bytes = "1.7.0"
56
56
  prost = { version = "0.14", features = ["derive"] }
57
57
  memmap2 = "0.9"
58
- rkyv = "0.8"
58
+ rkyv = { version = "0.8", features = ["aligned", "little_endian", "pointer_width_32"] }
59
59
  ouroboros = "0.18.0"
60
60
 
61
61
  [target.'cfg(target_env = "gnu")'.dependencies]
@@ -1,3 +1,4 @@
1
1
  mod interned_string_tests;
2
2
  mod spec_store_tests;
3
+ mod statsig_options_tests;
3
4
  mod user_value_tests;
@@ -1,5 +1,6 @@
1
1
  use std::collections::HashMap;
2
- use std::sync::Arc;
2
+ use std::sync::{mpsc, Arc};
3
+ use std::time::Duration;
3
4
 
4
5
  use async_trait::async_trait;
5
6
  use parking_lot::Mutex;
@@ -11,7 +12,7 @@ use crate::{
11
12
  output_logger::{
12
13
  initialize_output_logger, shutdown_output_logger, LogLevel, OutputLogProvider,
13
14
  },
14
- sdk_event_emitter::SdkEventEmitter,
15
+ sdk_event_emitter::{SdkEvent, SdkEventEmitter},
15
16
  SpecStore, SpecsSource, SpecsUpdate, StatsigErr, StatsigOptions, StatsigRuntime,
16
17
  };
17
18
 
@@ -381,3 +382,44 @@ fn test_no_updates_update_field_short_circuit_parse() {
381
382
 
382
383
  assert!(update_result.is_ok())
383
384
  }
385
+
386
+ #[test]
387
+ fn test_specs_updated_callback_runs_without_holding_store_lock() {
388
+ let event_emitter = Arc::new(SdkEventEmitter::default());
389
+ let spec_store = Arc::new(SpecStore::new(
390
+ "test",
391
+ "test".to_string(),
392
+ StatsigRuntime::get_runtime(),
393
+ event_emitter.clone(),
394
+ None,
395
+ ));
396
+ let callback_store = spec_store.clone();
397
+
398
+ event_emitter.subscribe(SdkEvent::SPECS_UPDATED, move |event| {
399
+ let SdkEvent::SpecsUpdated { source, values, .. } = event else {
400
+ panic!("expected a specs updated event");
401
+ };
402
+ assert_eq!(source, &SpecsSource::Network);
403
+ assert!(values.time > 0);
404
+
405
+ callback_store.set_source(SpecsSource::Bootstrap);
406
+ });
407
+
408
+ let (completed_tx, completed_rx) = mpsc::channel();
409
+ std::thread::spawn(move || {
410
+ let contents = include_bytes!("../../tests/data/eval_proj_dcs.json");
411
+ let result = spec_store.set_values(SpecsUpdate {
412
+ data: ResponseData::from_bytes(contents.to_vec()),
413
+ source: SpecsSource::Network,
414
+ received_at: 2000,
415
+ source_api: None,
416
+ has_updates: None,
417
+ });
418
+ completed_tx.send(result).unwrap();
419
+ });
420
+
421
+ let result = completed_rx
422
+ .recv_timeout(Duration::from_millis(500))
423
+ .expect("specs updated callback deadlocked while re-entering the spec store");
424
+ assert!(result.is_ok());
425
+ }
@@ -0,0 +1,20 @@
1
+ use crate::StatsigOptions;
2
+
3
+ #[test]
4
+ fn test_sdk_instance_id_defaults_to_sdk_key() {
5
+ let options = StatsigOptions::new();
6
+
7
+ assert_eq!(options.get_sdk_instance_id("secret-key"), "secret-key");
8
+ }
9
+
10
+ #[test]
11
+ fn test_sdk_instance_id_can_be_overridden() {
12
+ let options = StatsigOptions::builder()
13
+ .sdk_instance_id(Some("validator:route:target".to_string()))
14
+ .build();
15
+
16
+ assert_eq!(
17
+ options.get_sdk_instance_id("secret-key"),
18
+ "validator:route:target"
19
+ );
20
+ }
@@ -42,7 +42,8 @@ impl ConsoleCaptureInstance {
42
42
  .clone()
43
43
  .unwrap_or_default();
44
44
  let enabled = console_capture_options.enabled;
45
- let ops_stats_instance = OPS_STATS.get_for_instance(sdk_key);
45
+ let sdk_instance_id = statsig_options.get_sdk_instance_id(sdk_key);
46
+ let ops_stats_instance = OPS_STATS.get_for_instance(sdk_instance_id);
46
47
  let allowed_log_levels = console_capture_options
47
48
  .log_levels
48
49
  .filter(|levels| !levels.is_empty())
@@ -95,7 +96,8 @@ impl ConsoleCaptureRegistry {
95
96
  .try_read_for(std::time::Duration::from_secs(5))
96
97
  {
97
98
  Some(read_guard) => {
98
- if let Some(instance) = read_guard.get(sdk_key) {
99
+ let sdk_instance_id = options.get_sdk_instance_id(sdk_key);
100
+ if let Some(instance) = read_guard.get(sdk_instance_id) {
99
101
  if let Some(instance) = instance.upgrade() {
100
102
  return instance.clone();
101
103
  }
@@ -115,7 +117,8 @@ impl ConsoleCaptureRegistry {
115
117
  .try_write_for(std::time::Duration::from_secs(5))
116
118
  {
117
119
  Some(mut write_guard) => {
118
- write_guard.insert(sdk_key.into(), Arc::downgrade(&instance));
120
+ let sdk_instance_id = options.get_sdk_instance_id(sdk_key);
121
+ write_guard.insert(sdk_instance_id.into(), Arc::downgrade(&instance));
119
122
  }
120
123
  None => {
121
124
  log_e!(
@@ -67,6 +67,7 @@ pub struct BaseEvaluation {
67
67
  pub name: InternedString,
68
68
  pub rule_id: InternedString,
69
69
  pub secondary_exposures: Vec<SecondaryExposure>,
70
+ pub version: Option<u32>,
70
71
 
71
72
  #[serde(skip_serializing)]
72
73
  pub(crate) exposure_info: Option<ExtraExposureInfo>,
@@ -133,12 +134,13 @@ pub struct GateEvaluation {
133
134
 
134
135
  impl GCIRHashable for GateEvaluation {
135
136
  fn create_hash(&self, name: &InternedString) -> u64 {
136
- let hash_array = vec![
137
+ let mut hash_array = vec![
137
138
  name.hash,
138
139
  self.value as u64,
139
140
  self.base.rule_id.hash,
140
141
  hash_secondary_exposures(&self.base.secondary_exposures),
141
142
  ];
143
+ push_optional_version_hash_values(&mut hash_array, &self.base.version);
142
144
  hashing::hash_one(hash_array)
143
145
  }
144
146
  }
@@ -159,13 +161,14 @@ pub struct DynamicConfigEvaluation {
159
161
 
160
162
  impl GCIRHashable for DynamicConfigEvaluation {
161
163
  fn create_hash(&self, name: &InternedString) -> u64 {
162
- let hash_array = vec![
164
+ let mut hash_array = vec![
163
165
  name.hash,
164
166
  self.value.get_hash(),
165
167
  self.base.rule_id.hash,
166
168
  hash_secondary_exposures(&self.base.secondary_exposures),
167
169
  self.passed as u64,
168
170
  ];
171
+ push_optional_version_hash_values(&mut hash_array, &self.base.version);
169
172
  hashing::hash_one(hash_array)
170
173
  }
171
174
  }
@@ -208,6 +211,7 @@ impl GCIRHashable for ExperimentEvaluation {
208
211
  hash_secondary_exposures(&self.base.secondary_exposures),
209
212
  self.is_in_layer as u64,
210
213
  ];
214
+ push_optional_version_hash_values(&mut hash_array, &self.base.version);
211
215
  let mut explicit_params_hashes = Vec::new();
212
216
  if let Some(explicit_parameters) = &self.explicit_parameters {
213
217
  for value in explicit_parameters.to_vec_interned() {
@@ -284,6 +288,7 @@ impl GCIRHashable for LayerEvaluation {
284
288
  .as_ref()
285
289
  .map_or(0, |n| n.hash),
286
290
  ];
291
+ push_optional_version_hash_values(&mut hash_array, &self.base.version);
287
292
  let mut explicit_params_hashes = Vec::new();
288
293
  for value in self.explicit_parameters.to_vec_interned() {
289
294
  explicit_params_hashes.push(value.hash);
@@ -316,3 +321,29 @@ fn hash_secondary_exposures(exposures: &Vec<SecondaryExposure>) -> u64 {
316
321
  }
317
322
  hashing::hash_one(secondary_exposure_hashes)
318
323
  }
324
+
325
+ pub(crate) fn push_optional_version_hash_values(hash_array: &mut Vec<u64>, version: &Option<u32>) {
326
+ hash_array.push(version.is_some() as u64);
327
+ hash_array.push(version.map_or(0, u64::from));
328
+ }
329
+
330
+ #[cfg(test)]
331
+ mod tests {
332
+ use super::push_optional_version_hash_values;
333
+
334
+ #[test]
335
+ fn optional_version_hash_values_distinguish_missing_from_zero() {
336
+ let mut missing = Vec::new();
337
+ push_optional_version_hash_values(&mut missing, &None);
338
+
339
+ let mut zero = Vec::new();
340
+ push_optional_version_hash_values(&mut zero, &Some(0));
341
+
342
+ let mut one = Vec::new();
343
+ push_optional_version_hash_values(&mut one, &Some(1));
344
+
345
+ assert_eq!(missing, vec![0, 0]);
346
+ assert_eq!(zero, vec![1, 0]);
347
+ assert_eq!(one, vec![1, 1]);
348
+ }
349
+ }
@@ -3,7 +3,8 @@ use crate::gcir::gcir_formatter::GCIRHashable;
3
3
  use crate::hashing::opt_bool_to_hashable;
4
4
  use crate::interned_string::InternedString;
5
5
  use crate::{
6
- evaluation::evaluation_types::is_false, specs_response::explicit_params::ExplicitParameters,
6
+ evaluation::evaluation_types::{is_false, push_optional_version_hash_values},
7
+ specs_response::explicit_params::ExplicitParameters,
7
8
  };
8
9
  use crate::{hashing, SecondaryExposure};
9
10
  use serde::{Deserialize, Serialize};
@@ -13,6 +14,7 @@ pub struct BaseEvaluationV2 {
13
14
  pub name: String,
14
15
  pub rule_id: InternedString,
15
16
  pub secondary_exposures: Vec<String>,
17
+ pub version: Option<u32>,
16
18
  }
17
19
 
18
20
  #[derive(Serialize, Deserialize, Clone)]
@@ -27,12 +29,13 @@ pub struct GateEvaluationV2 {
27
29
 
28
30
  impl GCIRHashable for GateEvaluationV2 {
29
31
  fn create_hash(&self, name: &InternedString) -> u64 {
30
- let hash_array = vec![
32
+ let mut hash_array = vec![
31
33
  name.hash,
32
34
  self.value as u64,
33
35
  self.base.rule_id.hash,
34
36
  hash_secondary_exposures(&self.base.secondary_exposures),
35
37
  ];
38
+ push_optional_version_hash_values(&mut hash_array, &self.base.version);
36
39
  hashing::hash_one(hash_array)
37
40
  }
38
41
  }
@@ -53,13 +56,14 @@ pub struct DynamicConfigEvaluationV2 {
53
56
 
54
57
  impl GCIRHashable for DynamicConfigEvaluationV2 {
55
58
  fn create_hash(&self, name: &InternedString) -> u64 {
56
- let hash_array = vec![
59
+ let mut hash_array = vec![
57
60
  name.hash,
58
61
  self.value.get_hash(),
59
62
  self.base.rule_id.hash,
60
63
  hash_secondary_exposures(&self.base.secondary_exposures),
61
64
  self.passed as u64,
62
65
  ];
66
+ push_optional_version_hash_values(&mut hash_array, &self.base.version);
63
67
  hashing::hash_one(hash_array)
64
68
  }
65
69
  }
@@ -102,6 +106,7 @@ impl GCIRHashable for ExperimentEvaluationV2 {
102
106
  hash_secondary_exposures(&self.base.secondary_exposures),
103
107
  self.is_in_layer as u64,
104
108
  ];
109
+ push_optional_version_hash_values(&mut hash_array, &self.base.version);
105
110
  let mut explicit_params_hashes = Vec::new();
106
111
  if let Some(explicit_parameters) = &self.explicit_parameters {
107
112
  for value in explicit_parameters.to_vec_interned() {
@@ -175,6 +180,7 @@ impl GCIRHashable for LayerEvaluationV2 {
175
180
  .as_ref()
176
181
  .map_or(0, |n| n.hash),
177
182
  ];
183
+ push_optional_version_hash_values(&mut hash_array, &self.base.version);
178
184
  let mut explicit_params_hashes = Vec::new();
179
185
  for value in self.explicit_parameters.to_vec_interned() {
180
186
  explicit_params_hashes.push(value.hash);
@@ -560,6 +560,7 @@ fn result_to_base_eval(spec_name: &str, result: &mut EvaluatorResult) -> BaseEva
560
560
  name,
561
561
  rule_id,
562
562
  secondary_exposures: std::mem::take(&mut result.secondary_exposures),
563
+ version: result.version,
563
564
  exposure_info: Some(exposure_info),
564
565
  }
565
566
  }
@@ -598,6 +599,7 @@ fn result_to_base_eval_v2(
598
599
  name: spec_name.to_string(),
599
600
  rule_id,
600
601
  secondary_exposures: exposures,
602
+ version: result.version,
601
603
  }
602
604
  }
603
605
 
@@ -74,6 +74,7 @@ impl EventLogger {
74
74
  event_logging_adapter: &Arc<dyn EventLoggingAdapter>,
75
75
  statsig_rt: &Arc<StatsigRuntime>,
76
76
  ) -> Arc<Self> {
77
+ let sdk_instance_id = options.get_sdk_instance_id(sdk_key);
77
78
  let me = Arc::new(Self {
78
79
  queue: EventQueue::new(
79
80
  options
@@ -83,7 +84,7 @@ impl EventLogger {
83
84
  .event_logging_max_pending_batch_queue_size
84
85
  .unwrap_or(DEFAULT_PENDING_BATCH_COUNT_MAX),
85
86
  ),
86
- event_sampler: ExposureSampling::new(sdk_key),
87
+ event_sampler: ExposureSampling::new(sdk_instance_id),
87
88
  flush_interval: FlushInterval::new(),
88
89
  options: options.clone(),
89
90
  logging_adapter: event_logging_adapter.clone(),
@@ -91,8 +92,8 @@ impl EventLogger {
91
92
  shutdown_notify: Notify::new(),
92
93
  limit_flush_notify: Notify::new(),
93
94
  limit_flush_semaphore: Arc::new(Semaphore::new(MAX_LIMIT_FLUSH_TASKS)),
94
- ops_stats: OPS_STATS.get_for_instance(sdk_key),
95
- sec_expo_experiment: SecExpoAsPrimaryExperiment::new(sdk_key, options),
95
+ ops_stats: OPS_STATS.get_for_instance(sdk_instance_id),
96
+ sec_expo_experiment: SecExpoAsPrimaryExperiment::new(sdk_instance_id, options),
96
97
  enqueue_dropped_events_count: AtomicU64::new(0),
97
98
  });
98
99
 
@@ -53,7 +53,7 @@ pub struct ExposureSampling {
53
53
  }
54
54
 
55
55
  impl ExposureSampling {
56
- pub fn new(sdk_key: &str) -> Self {
56
+ pub fn new(sdk_instance_id: &str) -> Self {
57
57
  let now = Utc::now().timestamp_millis() as u64;
58
58
 
59
59
  Self {
@@ -63,7 +63,7 @@ impl ExposureSampling {
63
63
  exposure_dedupe_set: RwLock::from(AHashSet::default()),
64
64
  last_exposure_dedupe_reset: AtomicU64::from(now),
65
65
 
66
- global_configs: GlobalConfigs::get_instance(sdk_key),
66
+ global_configs: GlobalConfigs::get_instance(sdk_instance_id),
67
67
  }
68
68
  }
69
69