oai-statsig-python-core 0.32.0rc7__tar.gz → 0.33.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 (478) hide show
  1. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/Cargo.lock +24 -42
  2. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/Cargo.toml +1 -1
  3. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/PKG-INFO +1 -1
  4. oai_statsig_python_core-0.33.0/statsig-pyo3/requirements-typing.txt +3 -0
  5. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/Cargo.toml +8 -3
  6. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/cmab_evaluator.rs +6 -6
  7. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging_adapter/statsig_local_file_event_logging_adapter.rs +2 -2
  8. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/id_lists_adapter/id_list.rs +7 -3
  9. oai_statsig_python_core-0.33.0/statsig-rust/src/id_lists_adapter/id_list_cursor_tests.rs +228 -0
  10. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/id_lists_adapter/id_list_propagation_tests.rs +5 -4
  11. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/id_lists_adapter/statsig_http_id_lists_adapter.rs +4 -0
  12. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/sdk_diagnostics/diagnostics.rs +3 -3
  13. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/spec_store.rs +21 -6
  14. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/__tests__/remote_config_value_hydrator_tests.rs +67 -16
  15. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/mod.rs +2 -1
  16. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/protobuf.rs +236 -14
  17. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/proto_specs.rs +203 -55
  18. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/random_user_id.rs +13 -15
  19. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/utils/mod.rs +2 -0
  20. oai_statsig_python_core-0.33.0/statsig-rust/src/utils/random.rs +21 -0
  21. oai_statsig_python_core-0.33.0/statsig-rust/tests/fork_random.rs +52 -0
  22. oai_statsig_python_core-0.33.0/statsig-rust/tests/verified_remote_value_reuse_tests.rs +855 -0
  23. oai_statsig_python_core-0.32.0rc7/statsig-pyo3/requirements-typing.txt +0 -3
  24. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/__init__.py +0 -0
  25. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/_frozen_json.py +0 -0
  26. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/data_store.py +0 -0
  27. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/error_boundary.py +0 -0
  28. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/evaluation_cache.py +0 -0
  29. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/event_logging_adapter.py +0 -0
  30. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/observability_client.py +0 -0
  31. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/output_logger_provider.py +0 -0
  32. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/persistent_storage.py +0 -0
  33. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/py.typed +0 -0
  34. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/requirements.txt +0 -0
  35. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/statsig.py +0 -0
  36. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/statsig_python_core.pyi +0 -0
  37. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/statsig_types.py +0 -0
  38. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/py_src/statsig_python_core/typed_config.py +0 -0
  39. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/pyproject.toml +0 -0
  40. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/Cargo.toml +0 -0
  41. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/README.md +0 -0
  42. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/build.rs +0 -0
  43. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/src/lib.rs +0 -0
  44. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/src/mock_forward_proxy.rs +0 -0
  45. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/src/protos/statsig_forward_proxy.proto +0 -0
  46. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/src/statsig_forward_proxy.rs +0 -0
  47. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/src/statsig_grpc_client.rs +0 -0
  48. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-grpc/src/statsig_grpc_err.rs +0 -0
  49. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/.github/workflows/CI.yml +0 -0
  50. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/.gitignore +0 -0
  51. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/Cargo.toml +0 -0
  52. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/README.md +0 -0
  53. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/benchmarks/dynamic_config_value_cache_benchmark.py +0 -0
  54. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/benchmarks/native_context_allocations.c +0 -0
  55. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/benchmarks/native_context_benchmark.py +0 -0
  56. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/benchmarks/summarize_native_context_allocations.py +0 -0
  57. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/benchmarks/user_creation_benchmark.py +0 -0
  58. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/benchmarks/user_memory_benchmark.py +0 -0
  59. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/benchmarks/wrapper_native_context_benchmark.py +0 -0
  60. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/bin/stub_gen.rs +0 -0
  61. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/data_store_base_py.rs +0 -0
  62. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/event_logging_adapter_base_py.rs +0 -0
  63. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/interned_store_py.rs +0 -0
  64. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/lib.rs +0 -0
  65. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/observability_client_base_py.rs +0 -0
  66. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/output_logger_provider_base_py.rs +0 -0
  67. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/pyo_utils.rs +0 -0
  68. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/raw_evaluation_compat_py.rs +0 -0
  69. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/safe_gil.rs +0 -0
  70. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/statsig_base_py.rs +0 -0
  71. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/statsig_metadata_py.rs +0 -0
  72. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/statsig_options_py.rs +0 -0
  73. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/statsig_persistent_storage_override_adapter_py.rs +0 -0
  74. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/statsig_types_py.rs +0 -0
  75. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/statsig_user_context_py.rs +0 -0
  76. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/statsig_user_py.rs +0 -0
  77. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/typed_config_py/tests.rs +0 -0
  78. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/typed_config_py.rs +0 -0
  79. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/unit_id_py.rs +0 -0
  80. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/src/valid_primitives_py.rs +0 -0
  81. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/event_listener_reentrancy_subprocess.py +0 -0
  82. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/fork_callback_runner.py +0 -0
  83. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/fork_runner.py +0 -0
  84. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/mock_output_logger.py +0 -0
  85. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/mock_scrapi.py +0 -0
  86. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/profile_util.py +0 -0
  87. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/shutdown_sub_proc.py +0 -0
  88. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_bulk_evaluate_gcir_parity.py +0 -0
  89. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_data_store.py +0 -0
  90. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_error_boundary.py +0 -0
  91. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_evaluation_cache.py +0 -0
  92. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_evaluation_cache_integration.py +0 -0
  93. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_evaluation_cache_pyo3.py +0 -0
  94. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_event_logging_adapter.py +0 -0
  95. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_experiment_group_targeting_exposures.py +0 -0
  96. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_experiment_serialization.py +0 -0
  97. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_exposure_logging.py +0 -0
  98. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_feature_gate_parts.py +0 -0
  99. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_feature_gate_serialization.py +0 -0
  100. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_fork_callback.py +0 -0
  101. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_forking.py +0 -0
  102. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_frozen_json.py +0 -0
  103. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_get_dynamic_config.py +0 -0
  104. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_initialize_with_details.py +0 -0
  105. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_interned_store_preload.py +0 -0
  106. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_layer_param_exposure_sampling.py +0 -0
  107. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_layer_serialization.py +0 -0
  108. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_native_context_allocations.py +0 -0
  109. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_native_context_benchmark.py +0 -0
  110. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_native_user_context.py +0 -0
  111. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_observability_client.py +0 -0
  112. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_output_logger_provider.py +0 -0
  113. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_override_adapter.py +0 -0
  114. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_partial_rollout_boost.py +0 -0
  115. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_performance.py +0 -0
  116. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_sdk_event_emitter.py +0 -0
  117. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_sec_expo_as_primary.py +0 -0
  118. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_shared_statsig.py +0 -0
  119. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_shutdown.py +0 -0
  120. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_statsig.py +0 -0
  121. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_statsig_options.py +0 -0
  122. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_statsig_user.py +0 -0
  123. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_statsig_user_json_serialization.py +0 -0
  124. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_statsig_user_none_fields.py +0 -0
  125. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_statsig_user_pickle.py +0 -0
  126. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_typed_config.py +0 -0
  127. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_typed_config_native.py +0 -0
  128. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/test_user_exposure_e2e.py +0 -0
  129. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/tests/utils.py +0 -0
  130. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-pyo3/typing_tests/typed_config.py +0 -0
  131. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/build.rs +0 -0
  132. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/resources/ip_supalite.table +0 -0
  133. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/resources/ua_parser_regex.yaml +0 -0
  134. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/resources/ua_parser_regex_lite.yaml +0 -0
  135. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/__tests__/interned_string_tests.rs +0 -0
  136. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/__tests__/mod.rs +0 -0
  137. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/__tests__/spec_store_tests.rs +0 -0
  138. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/__tests__/statsig_options_tests.rs +0 -0
  139. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/__tests__/user_value_tests.rs +0 -0
  140. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/compression/compression_helper.rs +0 -0
  141. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/compression/mod.rs +0 -0
  142. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/console_capture/console_capture_handler.rs +0 -0
  143. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/console_capture/console_capture_instances.rs +0 -0
  144. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/console_capture/console_capture_options.rs +0 -0
  145. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/console_capture/console_log_line_levels.rs +0 -0
  146. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/console_capture/mod.rs +0 -0
  147. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/data_store_interface.rs +0 -0
  148. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/dcs_str.rs +0 -0
  149. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/__tests__/dynamic_returnable_tests.rs +0 -0
  150. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/__tests__/mod.rs +0 -0
  151. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/__tests__/rkyv_value_tests.rs +0 -0
  152. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/comparisons/compare_arrays.rs +0 -0
  153. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/comparisons/compare_numbers.rs +0 -0
  154. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/comparisons/compare_str_with_regex.rs +0 -0
  155. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/comparisons/compare_strings_in_array.rs +0 -0
  156. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/comparisons/compare_time.rs +0 -0
  157. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/comparisons/compare_versions.rs +0 -0
  158. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/comparisons/mod.rs +0 -0
  159. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/country_lookup.rs +0 -0
  160. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/dynamic_returnable.rs +0 -0
  161. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/dynamic_string.rs +0 -0
  162. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/dynamic_value.rs +0 -0
  163. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluation_data.rs +0 -0
  164. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluation_details.rs +0 -0
  165. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluation_types.rs +0 -0
  166. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluation_types_initialize_v2.rs +0 -0
  167. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluation_types_v2.rs +0 -0
  168. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluator.rs +0 -0
  169. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluator_context.rs +0 -0
  170. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluator_result.rs +0 -0
  171. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/evaluator_value.rs +0 -0
  172. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/get_unit_id.rs +0 -0
  173. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/mod.rs +0 -0
  174. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/rkyv_value.rs +0 -0
  175. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/secondary_exposure_key.rs +0 -0
  176. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/first_party_ua_parser.rs +0 -0
  177. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/mod.rs +0 -0
  178. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/mod.rs +0 -0
  179. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_helpers.rs +0 -0
  180. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer.rs +0 -0
  181. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer_performance.rs +0 -0
  182. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_browser.rs +0 -0
  183. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_os.rs +0 -0
  184. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/mod.rs +0 -0
  185. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/tokenizer.rs +0 -0
  186. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/ua_parser.rs +0 -0
  187. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/window_iter.rs +0 -0
  188. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/third_party_ua_parser.rs +0 -0
  189. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation/user_agent_parsing/ua_parser.rs +0 -0
  190. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/evaluation_fixture_client.rs +0 -0
  191. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_emitter/statsig_event_emitter_tests.rs +0 -0
  192. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/delayed_exposure_store.rs +0 -0
  193. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_logger.rs +0 -0
  194. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_logger_constants.rs +0 -0
  195. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_logger_ops_stats.rs +0 -0
  196. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/batch.rs +0 -0
  197. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/mod.rs +0 -0
  198. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queue.rs +0 -0
  199. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queued_config_expo.rs +0 -0
  200. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queued_event.rs +0 -0
  201. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queued_experiment_expo.rs +0 -0
  202. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queued_expo.rs +0 -0
  203. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queued_gate_expo.rs +0 -0
  204. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queued_layer_param_expo.rs +0 -0
  205. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queued_passthrough.rs +0 -0
  206. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/event_queue/queued_secondary_expo.rs +0 -0
  207. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/exposure_sampling.rs +0 -0
  208. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/exposure_utils.rs +0 -0
  209. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/flush_interval.rs +0 -0
  210. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/flush_type.rs +0 -0
  211. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/mod.rs +0 -0
  212. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/sec_expo_as_primary_experiment.rs +0 -0
  213. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/statsig_event.rs +0 -0
  214. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging/statsig_event_internal.rs +0 -0
  215. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging_adapter/event_logging_adapter_trait.rs +0 -0
  216. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging_adapter/log_event_payload.rs +0 -0
  217. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging_adapter/mod.rs +0 -0
  218. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/event_logging_adapter/statsig_http_event_logging_adapter.rs +0 -0
  219. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/dynamic_configs_processor.rs +0 -0
  220. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/evaluation_plan.rs +0 -0
  221. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/feature_gates_processor.rs +0 -0
  222. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/gcir_formatter.rs +0 -0
  223. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/gcir_options.rs +0 -0
  224. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/gcir_process_iter.rs +0 -0
  225. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/layer_configs_processor.rs +0 -0
  226. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/mod.rs +0 -0
  227. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/param_stores_processor.rs +0 -0
  228. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/secondary_exposure_hashing.rs +0 -0
  229. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/stringify_sec_exposures.rs +0 -0
  230. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/target_app_id_utils.rs +0 -0
  231. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/gcir/timing.rs +0 -0
  232. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/global_configs.rs +0 -0
  233. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/hashing/ahash.rs +0 -0
  234. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/hashing/djb2.rs +0 -0
  235. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/hashing/hash_util.rs +0 -0
  236. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/hashing/memo_sha_256.rs +0 -0
  237. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/hashing/mod.rs +0 -0
  238. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/id_lists_adapter/id_list_download_concurrency_tests.rs +0 -0
  239. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/id_lists_adapter/id_list_propagation.rs +0 -0
  240. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/id_lists_adapter/id_lists_adapter_trait.rs +0 -0
  241. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/id_lists_adapter/id_lists_refresh_tests.rs +0 -0
  242. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/id_lists_adapter/mod.rs +0 -0
  243. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/init_details.rs +0 -0
  244. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/initialize_evaluations_response.rs +0 -0
  245. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/initialize_response.rs +0 -0
  246. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/initialize_v2_response.rs +0 -0
  247. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/instance_registry.rs +0 -0
  248. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_string.rs +0 -0
  249. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/__tests__/interned_store_eval_value_tests.rs +0 -0
  250. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_fetch_tests.rs +0 -0
  251. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_v2_tests.rs +0 -0
  252. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/__tests__/interned_store_preload_remote_tests.rs +0 -0
  253. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/__tests__/interned_store_returnable_tests.rs +0 -0
  254. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/__tests__/interned_store_string_tests.rs +0 -0
  255. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/__tests__/mod.rs +0 -0
  256. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/interned_store/mmap_artifact.rs +0 -0
  257. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/interned_store/mmap_manifest.rs +0 -0
  258. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/interned_store/mmap_reader/materialize.rs +0 -0
  259. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/interned_store/mmap_reader/memory.rs +0 -0
  260. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/interned_store/mmap_reader.rs +0 -0
  261. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/interned_store/mmap_writer.rs +0 -0
  262. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/interned_store.rs +0 -0
  263. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/mmap_data_v2/evaluator_value.rs +0 -0
  264. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/mmap_data_v2/spec.rs +0 -0
  265. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/mmap_data_v2/spec_content_hash.rs +0 -0
  266. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/mmap_data_v2.rs +0 -0
  267. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/mmap_sync.rs +0 -0
  268. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/interned_values/mod.rs +0 -0
  269. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/lib.rs +0 -0
  270. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/logging_utils.rs +0 -0
  271. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/macros.rs +0 -0
  272. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/__tests__/http2_test_helpers.rs +0 -0
  273. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/__tests__/mod.rs +0 -0
  274. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/__tests__/net_provider_reqwest_http2_tests.rs +0 -0
  275. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/__tests__/network_client_http2_tests.rs +0 -0
  276. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/__tests__/network_client_latency_tests.rs +0 -0
  277. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/__tests__/response_data_tests.rs +0 -0
  278. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/http2.rs +0 -0
  279. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/http_types.rs +0 -0
  280. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/mod.rs +0 -0
  281. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/network_client.rs +0 -0
  282. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/network_error.rs +0 -0
  283. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/providers/mod.rs +0 -0
  284. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/providers/net_provider_global.rs +0 -0
  285. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/providers/net_provider_noop.rs +0 -0
  286. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/providers/net_provider_reqwest.rs +0 -0
  287. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/proxy_config.rs +0 -0
  288. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/networking/statsig_url.rs +0 -0
  289. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/observability/console_capture_observer.rs +0 -0
  290. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/observability/diagnostics_observer.rs +0 -0
  291. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/observability/mod.rs +0 -0
  292. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/observability/observability_client_adapter.rs +0 -0
  293. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/observability/ops_stats.rs +0 -0
  294. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/observability/sdk_errors_observer.rs +0 -0
  295. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/output_logger.rs +0 -0
  296. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/output_policy.rs +0 -0
  297. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/override_adapter/mod.rs +0 -0
  298. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/override_adapter/override_adapter_trait.rs +0 -0
  299. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/override_adapter/statsig_local_override_adapter.rs +0 -0
  300. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/persistent_storage/__tests__/mod.rs +0 -0
  301. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/persistent_storage/__tests__/sticky_values_serialization_tests.rs +0 -0
  302. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/persistent_storage/mod.rs +0 -0
  303. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/persistent_storage/persistent_storage_trait.rs +0 -0
  304. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/persistent_storage/persistent_values_manager.rs +0 -0
  305. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/scoped_evaluation_request.rs +0 -0
  306. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/scoped_id_list_membership_service.rs +0 -0
  307. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/scoped_snapshot_registry.rs +0 -0
  308. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/sdk_diagnostics/diagnostics_utils.rs +0 -0
  309. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/sdk_diagnostics/marker.rs +0 -0
  310. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/sdk_diagnostics/mod.rs +0 -0
  311. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/sdk_event_emitter/event_emitter.rs +0 -0
  312. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/sdk_event_emitter/event_emitter_tests.rs +0 -0
  313. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/sdk_event_emitter/event_types.rs +0 -0
  314. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/sdk_event_emitter/mod.rs +0 -0
  315. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/snapshot_evaluation_session.rs +0 -0
  316. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/__tests__/hydration_phase_tests.rs +0 -0
  317. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/config_spec_background_sync_metrics.rs +0 -0
  318. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/mod.rs +0 -0
  319. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/download.rs +0 -0
  320. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/errors.rs +0 -0
  321. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/json.rs +0 -0
  322. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/metadata.rs +0 -0
  323. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/telemetry.rs +0 -0
  324. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/response_format.rs +0 -0
  325. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/scoped_source_specs_adapter.rs +0 -0
  326. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/specs_adapter_trait.rs +0 -0
  327. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/statsig_bootstrap_specs_adapter.rs +0 -0
  328. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/statsig_customized_specs_adapter.rs +0 -0
  329. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/statsig_data_store_specs_adapter.rs +0 -0
  330. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/statsig_grpc_specs_adapter.rs +0 -0
  331. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/statsig_http_specs_adapter.rs +0 -0
  332. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_adapter/statsig_local_file_specs_adapter.rs +0 -0
  333. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/__tests__/mod.rs +0 -0
  334. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/__tests__/proto_specs_syncing_tests.rs +0 -0
  335. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/__tests__/proto_specs_tests.rs +0 -0
  336. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/__tests__/proto_specs_unknown_tests.rs +0 -0
  337. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/__tests__/proto_specs_vs_json_tests.rs +0 -0
  338. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/__tests__/proto_stream_reader_tests.rs +0 -0
  339. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/cmab_types.rs +0 -0
  340. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/explicit_params.rs +0 -0
  341. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/mod.rs +0 -0
  342. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/param_store_types.rs +0 -0
  343. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/parse_options.rs +0 -0
  344. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/proto_compression.rs +0 -0
  345. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/proto_specs/parser.rs +0 -0
  346. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/proto_stream_reader.rs +0 -0
  347. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/spec_types.rs +0 -0
  348. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/specs_hash_map.rs +0 -0
  349. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/specs_response/statsig_config_specs.rs +0 -0
  350. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig/typed_config_tests.rs +0 -0
  351. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig.rs +0 -0
  352. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_core_api_options.rs +0 -0
  353. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_err.rs +0 -0
  354. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_global.rs +0 -0
  355. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_metadata.rs +0 -0
  356. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_options.rs +0 -0
  357. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_runtime.rs +0 -0
  358. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_type_factories.rs +0 -0
  359. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_types.rs +0 -0
  360. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/statsig_types_raw.rs +0 -0
  361. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/typed_config/tests.rs +0 -0
  362. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/typed_config.rs +0 -0
  363. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/fast_statsig_user.rs +0 -0
  364. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/into_optional.rs +0 -0
  365. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/mod.rs +0 -0
  366. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/prepared_user.rs +0 -0
  367. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/statsig_user.rs +0 -0
  368. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/statsig_user_builder.rs +0 -0
  369. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/statsig_user_internal.rs +0 -0
  370. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/statsig_user_loggable.rs +0 -0
  371. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/unit_id.rs +0 -0
  372. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/user_data.rs +0 -0
  373. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/user/user_value.rs +0 -0
  374. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/src/value_parsing.rs +0 -0
  375. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/check_gate_tests.rs +0 -0
  376. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/customized_specs_adapter_tests.rs +0 -0
  377. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/big_number_dcs.json +0 -0
  378. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/check_gate_perf_dcs.json +0 -0
  379. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/company_id_list +0 -0
  380. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/dcs_error.json +0 -0
  381. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/dcs_missing_gates.json +0 -0
  382. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/dcs_non_case_sensitive.json +0 -0
  383. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/dcs_user_agent_versions.json +0 -0
  384. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/dcs_with_analytical_exposure_sampling.json +0 -0
  385. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/dcs_with_checksum.json +0 -0
  386. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/dcs_with_sampling.json +0 -0
  387. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/dcs_with_sdk_configs.json +0 -0
  388. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/demo_proj_dcs.json +0 -0
  389. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/demo_proj_dcs.pb.br +0 -0
  390. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/eval_proj_dcs.json +0 -0
  391. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/eval_proj_dcs.pb.br +0 -0
  392. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/experiment_group_condition.pb.br +0 -0
  393. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/get_id_lists.json +0 -0
  394. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/perf_proj_dcs.json +0 -0
  395. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/perf_proj_dcs.pb.br +0 -0
  396. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/shared_dict_dict_only.json +0 -0
  397. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/shared_dict_original_dcs.json +0 -0
  398. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/shared_dict_response_uncompressed.json +0 -0
  399. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/shared_dict_response_with_dict.json +0 -0
  400. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/shared_dict_response_without_dict.json +0 -0
  401. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/test_must_pass_user_agents.txt +0 -0
  402. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/test_user_agents.txt +0 -0
  403. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/ua_string_cases.json +0 -0
  404. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data/unknown_enum.pb.br +0 -0
  405. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data_store_bytes_adapter_tests.rs +0 -0
  406. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data_store_json_bytes_tests.rs +0 -0
  407. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data_store_json_only_no_bytes_methods_tests.rs +0 -0
  408. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data_store_lock_tests.rs +0 -0
  409. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/data_store_proto_bytes_tests.rs +0 -0
  410. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/delayed_exposure_bench.rs +0 -0
  411. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/direct_gcir_tests.rs +0 -0
  412. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/dynamic_string_tests.rs +0 -0
  413. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/dynamic_value_tests.rs +0 -0
  414. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/evaluation_details_tests.rs +0 -0
  415. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/evaluator_value_tests.rs +0 -0
  416. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/event_logger_failing_flush_tests.rs +0 -0
  417. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/event_logger_flush_tests.rs +0 -0
  418. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/event_logger_high_qps_tests.rs +0 -0
  419. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/event_logger_usage_tests.rs +0 -0
  420. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/expected_evaluation_tests.rs +0 -0
  421. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/exposure_sampling_key_tests.rs +0 -0
  422. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/exposure_tests.rs +0 -0
  423. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/flushing_tests.rs +0 -0
  424. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/gate_inversion_eval_tests.rs +0 -0
  425. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/gcir_plan_expansion_bench.rs +0 -0
  426. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/gcir_tests.rs +0 -0
  427. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/global_configs_test.rs +0 -0
  428. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/grpc_specs_adapter_tests.rs +0 -0
  429. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/hash_util_evaluation_hash_tests.rs +0 -0
  430. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/http_specs_adapter_tests.rs +0 -0
  431. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/initialize_timeout_test.rs +0 -0
  432. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/instance_registry_tests.rs +0 -0
  433. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/interner_contention_bench.rs +0 -0
  434. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/layer_serialization_tests.rs +0 -0
  435. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/list_methods_tests.rs +0 -0
  436. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/network_client_streaming_tests.rs +0 -0
  437. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/network_client_tests.rs +0 -0
  438. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/network_failure_tests.rs +0 -0
  439. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/observability_client_usage_tests.rs +0 -0
  440. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/output_logger_tests.rs +0 -0
  441. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/override_adapter_tests.rs +0 -0
  442. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/perf_tests.rs +0 -0
  443. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/proto_specs_usage_tests.rs +0 -0
  444. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/protobuf_copy_bench.rs +0 -0
  445. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/remote_config_preload_hydration_tests.rs +0 -0
  446. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/remote_config_value_hydration_tests.rs +0 -0
  447. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/spec_store_lock_tests.rs +0 -0
  448. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/spec_types_tests.rs +0 -0
  449. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_disable_network_tests.rs +0 -0
  450. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_environment_tests.rs +0 -0
  451. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_event_emitter_usage_test.rs +0 -0
  452. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_global_tests.rs +0 -0
  453. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_local_file_event_logging_adapter_tests.rs +0 -0
  454. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_local_file_specs_adapter_tests.rs +0 -0
  455. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_options_tests.rs +0 -0
  456. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_shared_tests.rs +0 -0
  457. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_tests.rs +0 -0
  458. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_user_builder_tests.rs +0 -0
  459. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_user_field_accessor_tests.rs +0 -0
  460. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_user_internal_tests.rs +0 -0
  461. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_user_loggable_tests.rs +0 -0
  462. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/statsig_user_tests.rs +0 -0
  463. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/substring_search_bench.rs +0 -0
  464. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/syncing_network_failure_tests.rs +0 -0
  465. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/typed_getters_tests.rs +0 -0
  466. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/ua_parser_util_test.rs +0 -0
  467. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/user_agent_tests_first_party.rs +0 -0
  468. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/user_json_tests.rs +0 -0
  469. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/env_var_guard.rs +0 -0
  470. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/helpers.rs +0 -0
  471. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/mock_data_store.rs +0 -0
  472. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/mock_event_logging_adapter.rs +0 -0
  473. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/mock_log_provider.rs +0 -0
  474. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/mock_observability_client.rs +0 -0
  475. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/mock_scrapi.rs +0 -0
  476. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/mock_specs_adapter.rs +0 -0
  477. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/mock_specs_listener.rs +0 -0
  478. {oai_statsig_python_core-0.32.0rc7 → oai_statsig_python_core-0.33.0}/statsig-rust/tests/utils/mod.rs +0 -0
@@ -498,8 +498,8 @@ dependencies = [
498
498
  "compression-core",
499
499
  "flate2",
500
500
  "memchr",
501
- "zstd 0.14.0",
502
- "zstd-safe 8.0.0",
501
+ "zstd",
502
+ "zstd-safe",
503
503
  ]
504
504
 
505
505
  [[package]]
@@ -1692,9 +1692,9 @@ dependencies = [
1692
1692
 
1693
1693
  [[package]]
1694
1694
  name = "napi"
1695
- version = "3.12.4"
1695
+ version = "3.13.0"
1696
1696
  source = "registry+https://github.com/rust-lang/crates.io-index"
1697
- checksum = "3d2c1d080c842ec1347ebf3cfb9347c15f8c2262f143cc30eea41ddf1c7da720"
1697
+ checksum = "3b12638855cec016784a7e17cc4ecbdee7ca8b0a3456aa50640d0ee5ed1a42f8"
1698
1698
  dependencies = [
1699
1699
  "anyhow",
1700
1700
  "bitflags 2.13.2",
@@ -1712,15 +1712,15 @@ dependencies = [
1712
1712
 
1713
1713
  [[package]]
1714
1714
  name = "napi-build"
1715
- version = "2.4.2"
1715
+ version = "2.5.0"
1716
1716
  source = "registry+https://github.com/rust-lang/crates.io-index"
1717
- checksum = "860e7c40864f95cfb83cde99f9ebadd88ef3d9bdccd7dd2cee0cc96a2dd4ffa7"
1717
+ checksum = "0941983559cd62bfa7f04646a16428967a847365adeef27711e4e3927046bbed"
1718
1718
 
1719
1719
  [[package]]
1720
1720
  name = "napi-derive"
1721
- version = "3.6.5"
1721
+ version = "3.6.9"
1722
1722
  source = "registry+https://github.com/rust-lang/crates.io-index"
1723
- checksum = "350057056a30368aa76c11a0d406b0aa61321710be2c36656ab4f6efe0b785a2"
1723
+ checksum = "6b1d232c24dc6754979b27efdf2047a5849efc7c92c1245de87e6bedbb9f5c3c"
1724
1724
  dependencies = [
1725
1725
  "convert_case 0.12.0",
1726
1726
  "ctor",
@@ -1732,9 +1732,9 @@ dependencies = [
1732
1732
 
1733
1733
  [[package]]
1734
1734
  name = "napi-derive-backend"
1735
- version = "6.1.3"
1735
+ version = "6.1.4"
1736
1736
  source = "registry+https://github.com/rust-lang/crates.io-index"
1737
- checksum = "4c1c87a71568f3fe5c736b10878ff55064b250bb4ea4b48c8055713e07b9e463"
1737
+ checksum = "fd6856fe1686867da90ed0dc292d7c0c87a695eb7c578b913360f33619ee01e3"
1738
1738
  dependencies = [
1739
1739
  "convert_case 0.12.0",
1740
1740
  "proc-macro2",
@@ -1745,9 +1745,9 @@ dependencies = [
1745
1745
 
1746
1746
  [[package]]
1747
1747
  name = "napi-sys"
1748
- version = "3.3.1"
1748
+ version = "3.3.2"
1749
1749
  source = "registry+https://github.com/rust-lang/crates.io-index"
1750
- checksum = "4d29a242104e456960e6c6479847570be731c1a92b8f8c05ddfb5439e5c09915"
1750
+ checksum = "6801fc65ba4d7035636e93635e281113f00410401a237dcd4f55b1565ead2115"
1751
1751
  dependencies = [
1752
1752
  "libloading",
1753
1753
  ]
@@ -1853,7 +1853,7 @@ dependencies = [
1853
1853
 
1854
1854
  [[package]]
1855
1855
  name = "oai-statsig-grpc"
1856
- version = "0.32.0-rc.7"
1856
+ version = "0.33.0"
1857
1857
  dependencies = [
1858
1858
  "async-trait",
1859
1859
  "chrono",
@@ -1869,7 +1869,7 @@ dependencies = [
1869
1869
 
1870
1870
  [[package]]
1871
1871
  name = "oai-statsig-rust"
1872
- version = "0.32.0-rc.7"
1872
+ version = "0.33.0"
1873
1873
  dependencies = [
1874
1874
  "ahash",
1875
1875
  "arc-swap",
@@ -1899,7 +1899,7 @@ dependencies = [
1899
1899
  "percent-encoding",
1900
1900
  "pin-project-lite",
1901
1901
  "prost",
1902
- "rand 0.8.8",
1902
+ "rand 0.10.3",
1903
1903
  "reqwest",
1904
1904
  "rkyv",
1905
1905
  "rusty-fork",
@@ -1919,7 +1919,7 @@ dependencies = [
1919
1919
  "uuid",
1920
1920
  "windows-sys 0.61.2",
1921
1921
  "wiremock",
1922
- "zstd 0.13.3",
1922
+ "zstd",
1923
1923
  ]
1924
1924
 
1925
1925
  [[package]]
@@ -2373,7 +2373,7 @@ dependencies = [
2373
2373
  "bytes",
2374
2374
  "getrandom 0.4.3",
2375
2375
  "lru-slab",
2376
- "rand 0.10.2",
2376
+ "rand 0.10.3",
2377
2377
  "rand_pcg",
2378
2378
  "ring",
2379
2379
  "rustc-hash 2.1.3",
@@ -2453,9 +2453,9 @@ dependencies = [
2453
2453
 
2454
2454
  [[package]]
2455
2455
  name = "rand"
2456
- version = "0.10.2"
2456
+ version = "0.10.3"
2457
2457
  source = "registry+https://github.com/rust-lang/crates.io-index"
2458
- checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
2458
+ checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af"
2459
2459
  dependencies = [
2460
2460
  "chacha20",
2461
2461
  "getrandom 0.4.3",
@@ -3102,7 +3102,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
3102
3102
 
3103
3103
  [[package]]
3104
3104
  name = "statsig-node"
3105
- version = "0.32.0-rc.7"
3105
+ version = "0.33.0"
3106
3106
  dependencies = [
3107
3107
  "async-trait",
3108
3108
  "napi",
@@ -3117,7 +3117,7 @@ dependencies = [
3117
3117
 
3118
3118
  [[package]]
3119
3119
  name = "statsig-pyo3"
3120
- version = "0.32.0-rc.7"
3120
+ version = "0.33.0"
3121
3121
  dependencies = [
3122
3122
  "async-trait",
3123
3123
  "lazy_static",
@@ -3132,7 +3132,7 @@ dependencies = [
3132
3132
 
3133
3133
  [[package]]
3134
3134
  name = "statsig_ffi"
3135
- version = "0.32.0-rc.7"
3135
+ version = "0.33.0"
3136
3136
  dependencies = [
3137
3137
  "async-trait",
3138
3138
  "cbindgen",
@@ -3793,7 +3793,7 @@ checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce"
3793
3793
  dependencies = [
3794
3794
  "getrandom 0.4.3",
3795
3795
  "js-sys",
3796
- "rand 0.10.2",
3796
+ "rand 0.10.3",
3797
3797
  "wasm-bindgen",
3798
3798
  ]
3799
3799
 
@@ -4347,31 +4347,13 @@ version = "1.0.23"
4347
4347
  source = "registry+https://github.com/rust-lang/crates.io-index"
4348
4348
  checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
4349
4349
 
4350
- [[package]]
4351
- name = "zstd"
4352
- version = "0.13.3"
4353
- source = "registry+https://github.com/rust-lang/crates.io-index"
4354
- checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
4355
- dependencies = [
4356
- "zstd-safe 7.3.0",
4357
- ]
4358
-
4359
4350
  [[package]]
4360
4351
  name = "zstd"
4361
4352
  version = "0.14.0"
4362
4353
  source = "registry+https://github.com/rust-lang/crates.io-index"
4363
4354
  checksum = "bf06bd8162af0734b344780deb55b42a2429ae430870d13fcc12f238e880fe6e"
4364
4355
  dependencies = [
4365
- "zstd-safe 8.0.0",
4366
- ]
4367
-
4368
- [[package]]
4369
- name = "zstd-safe"
4370
- version = "7.3.0"
4371
- source = "registry+https://github.com/rust-lang/crates.io-index"
4372
- checksum = "64d80649ab6db9d9f6f9c80a40becd948eda4714a0a5ac8c4d157a32231c7882"
4373
- dependencies = [
4374
- "zstd-sys",
4356
+ "zstd-safe",
4375
4357
  ]
4376
4358
 
4377
4359
  [[package]]
@@ -26,7 +26,7 @@ exclude = [
26
26
  [workspace.package]
27
27
  edition = "2021"
28
28
  license = "ISC"
29
- version = "0.32.0-rc.7"
29
+ version = "0.33.0"
30
30
  homepage = "https://statsig.com/"
31
31
  authors = ["Statsig", "Daniel Loomb <daniel@statsig.com>"]
32
32
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oai_statsig_python_core
3
- Version: 0.32.0rc7
3
+ Version: 0.33.0
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -0,0 +1,3 @@
1
+ mypy==2.3.1
2
+ types-requests==2.33.0.20260906
3
+ types-protobuf==6.32.1.20260221
@@ -28,7 +28,7 @@ memchr = "2.8.3"
28
28
  parking_lot = "0.12.5"
29
29
  pin-project-lite = "0.2.17"
30
30
  percent-encoding = "2.3.2"
31
- rand = "0.8.8"
31
+ rand = "0.10.3"
32
32
  fancy-regex = "0.17.0"
33
33
  reqwest = { version = "0.12.28", features = [
34
34
  "json",
@@ -47,14 +47,14 @@ serde_json = { version = "1.0.151", features = [
47
47
  ] }
48
48
  serde_with = "3.23.0"
49
49
  sha2 = "0.11.0"
50
- oai-statsig-grpc = { path = "../statsig-grpc", version = "0.32.0-rc.7", optional = true }
50
+ oai-statsig-grpc = { path = "../statsig-grpc", version = "0.33.0", optional = true }
51
51
  simple_logger = { version = "5.2.0" }
52
52
  tempfile = "3.27.0"
53
53
  tokio = { version = "1.53.1", features = ["full"] }
54
54
  url = "2.5.8"
55
55
  uaparser = "0.6.4"
56
56
  uuid = { version = "1.26.1", features = ["v4", "fast-rng"] }
57
- zstd = { version = "0.13.3", features = ["zdict_builder"] }
57
+ zstd = { version = "0.14.0", features = ["zdict_builder"] }
58
58
  tonic = "0.14.6"
59
59
  brotli = "9.0.0"
60
60
  bytes = "1.12.1"
@@ -99,3 +99,8 @@ with_zstd = []
99
99
  pyo3_event_zstd = []
100
100
  ffi-support = []
101
101
  ordered_user_data_maps = ["dep:indexmap"]
102
+
103
+ [[test]]
104
+ name = "fork_random"
105
+ path = "tests/fork_random.rs"
106
+ harness = false
@@ -8,7 +8,7 @@ use crate::interned_string::InternedString;
8
8
  use crate::specs_response::cmab_types::{CMABConfig, CMABGroup, CMABGroupConfig};
9
9
  use crate::unwrap_or_return;
10
10
  use lazy_static::lazy_static;
11
- use rand::Rng;
11
+ use rand::RngExt;
12
12
  use rand::seq::SliceRandom;
13
13
  use serde::{Deserialize, Serialize};
14
14
  use serde_json::Value;
@@ -200,7 +200,7 @@ fn get_passes_targeting<'a>(ctx: &mut EvaluatorContext<'a>, cmab: &'a CMABConfig
200
200
 
201
201
  fn get_shuffled_groups(cmab: &CMABConfig) -> Vec<&CMABGroup> {
202
202
  let mut groups = cmab.groups.iter().collect::<Vec<&CMABGroup>>();
203
- let mut rng = rand::thread_rng();
203
+ let mut rng = crate::utils::random::rng();
204
204
  groups.shuffle(&mut rng);
205
205
  groups
206
206
  }
@@ -241,8 +241,8 @@ fn apply_sampling_group<'a>(
241
241
  }
242
242
 
243
243
  let mut sum: f64 = 0.0;
244
- let mut rng = rand::thread_rng();
245
- let value: f64 = rng.gen::<f64>();
244
+ let mut rng = crate::utils::random::rng();
245
+ let value: f64 = rng.random::<f64>();
246
246
  for group in &cmab.groups {
247
247
  let cur_count = match config.get(group.id.as_str()) {
248
248
  Some(config_for_group) => config_for_group.records + 1,
@@ -289,8 +289,8 @@ fn apply_best_group<'a>(
289
289
 
290
290
  // if we had no score for any group randomly select one
291
291
  if !has_score {
292
- let mut rng = rand::thread_rng();
293
- let random: f64 = rng.gen::<f64>();
292
+ let mut rng = crate::utils::random::rng();
293
+ let random: f64 = rng.random::<f64>();
294
294
  best_group = &cmab.groups[(random * cmab.groups.len() as f64).floor() as usize];
295
295
  }
296
296
  ctx.result.bool_value = true;
@@ -13,7 +13,7 @@ use crate::{
13
13
  };
14
14
  use async_trait::async_trait;
15
15
  use file_guard::Lock;
16
- use rand::Rng;
16
+ use rand::RngExt;
17
17
  use serde::{Deserialize, Serialize};
18
18
  use serde_json::json;
19
19
 
@@ -196,7 +196,7 @@ fn create_merge_key(event: &StatsigEventInternal) -> String {
196
196
  // PHP initializes per request, so we get a diagnostics event per request.
197
197
  // This samples quite aggressively to compensate for that
198
198
  fn should_sample_sdk_diagnostics() -> bool {
199
- let random_number = rand::thread_rng().gen_range(0..10000);
199
+ let random_number = crate::utils::random::rng().random_range(0..10000);
200
200
  random_number < 1
201
201
  }
202
202
 
@@ -26,16 +26,20 @@ impl IdList {
26
26
  }
27
27
 
28
28
  pub fn apply_update(&mut self, update: IdListUpdate) {
29
+ let changeset_data = unwrap_or_noop!(&update.raw_changeset);
29
30
  let updated_meta = update.new_metadata;
30
31
  let current_meta = &self.metadata;
31
32
 
32
- if updated_meta.file_id != current_meta.file_id
33
- && updated_meta.creation_time >= current_meta.creation_time
33
+ // The HTTP adapter downloads from byte zero when creationTime advances,
34
+ // even if the file ID is unchanged. Apply that body as a full replay so
35
+ // the consumed cursor and timestamp match the next manifest poll.
36
+ if updated_meta.creation_time > current_meta.creation_time
37
+ || (updated_meta.file_id != current_meta.file_id
38
+ && updated_meta.creation_time >= current_meta.creation_time)
34
39
  {
35
40
  self.update_metadata(updated_meta);
36
41
  }
37
42
 
38
- let changeset_data = unwrap_or_noop!(&update.raw_changeset);
39
43
  let ids = Arc::make_mut(&mut self.ids);
40
44
 
41
45
  for change in changeset_data.lines() {
@@ -0,0 +1,228 @@
1
+ use super::*;
2
+ use crate::SpecStore;
3
+ use crate::id_lists_adapter::IdList;
4
+ use crate::sdk_event_emitter::SdkEventEmitter;
5
+ use mockito::Server;
6
+ use std::collections::HashSet;
7
+
8
+ fn metadata() -> IdListMetadata {
9
+ IdListMetadata {
10
+ name: "employees".into(),
11
+ url: "https://example.com/employees".into(),
12
+ file_id: Some("file-1".into()),
13
+ size: 0,
14
+ creation_time: 1,
15
+ }
16
+ }
17
+
18
+ #[test]
19
+ fn same_file_and_creation_time_appends_changes() {
20
+ let mut list = IdList::new(metadata());
21
+ list.apply_update(IdListUpdate {
22
+ raw_changeset: Some("+alice\n+bob\n".to_string()),
23
+ new_metadata: metadata(),
24
+ });
25
+ list.apply_update(IdListUpdate {
26
+ raw_changeset: Some("-alice\n+carol\n".to_string()),
27
+ new_metadata: metadata(),
28
+ });
29
+
30
+ assert_eq!(
31
+ *list.ids,
32
+ HashSet::from(["bob".to_string(), "carol".to_string()])
33
+ );
34
+ assert_eq!(
35
+ list.metadata.size,
36
+ "+alice\n+bob\n-alice\n+carol\n".len() as u64
37
+ );
38
+ }
39
+
40
+ #[test]
41
+ fn new_file_at_same_or_newer_creation_time_replaces_members_and_cursor() {
42
+ for creation_time in [1, 2] {
43
+ let mut list = IdList::new(metadata());
44
+ list.apply_update(IdListUpdate {
45
+ raw_changeset: Some("+alice\n".to_string()),
46
+ new_metadata: metadata(),
47
+ });
48
+ let mut replacement = metadata();
49
+ replacement.file_id = Some("file-2".to_string());
50
+ replacement.creation_time = creation_time;
51
+ list.apply_update(IdListUpdate {
52
+ raw_changeset: Some("+bob\n".to_string()),
53
+ new_metadata: replacement,
54
+ });
55
+
56
+ assert_eq!(*list.ids, HashSet::from(["bob".to_string()]));
57
+ assert_eq!(list.metadata.size, "+bob\n".len() as u64);
58
+ assert_eq!(list.metadata.file_id.as_deref(), Some("file-2"));
59
+ assert_eq!(list.metadata.creation_time, creation_time);
60
+ }
61
+ }
62
+
63
+ #[test]
64
+ fn missing_body_preserves_members_cursor_and_generation() {
65
+ for file_id in ["file-1", "file-2"] {
66
+ let mut list = IdList::new(metadata());
67
+ list.apply_update(IdListUpdate {
68
+ raw_changeset: Some("+alice\n".into()),
69
+ new_metadata: metadata(),
70
+ });
71
+ let previous = list.clone();
72
+ let mut next = metadata();
73
+ next.file_id = Some(file_id.into());
74
+ next.creation_time = 2;
75
+ list.apply_update(IdListUpdate {
76
+ raw_changeset: None,
77
+ new_metadata: next,
78
+ });
79
+ assert_eq!(*list.ids, *previous.ids);
80
+ assert!(Arc::ptr_eq(&list.ids, &previous.ids));
81
+ assert_eq!(list.metadata.creation_time, previous.metadata.creation_time);
82
+ assert_eq!(list.metadata.file_id, previous.metadata.file_id);
83
+ assert_eq!(list.metadata.size, previous.metadata.size);
84
+ }
85
+ }
86
+
87
+ #[test]
88
+ fn same_file_full_replay_can_replace_members_with_an_empty_set() {
89
+ let mut list = IdList::new(metadata());
90
+ list.apply_update(IdListUpdate {
91
+ raw_changeset: Some("+alice\n".into()),
92
+ new_metadata: metadata(),
93
+ });
94
+ let previous = list.clone();
95
+ let mut next = metadata();
96
+ next.creation_time = 2;
97
+ list.apply_update(IdListUpdate {
98
+ raw_changeset: Some(String::new()),
99
+ new_metadata: next,
100
+ });
101
+ assert!(list.ids.is_empty());
102
+ assert_eq!(list.metadata.creation_time, 2);
103
+ assert_eq!(list.metadata.size, 0);
104
+ assert!(previous.ids.contains("alice"));
105
+ }
106
+
107
+ #[tokio::test]
108
+ async fn test_same_file_full_replay_updates_cursor_and_only_downloads_once() {
109
+ let mut server = Server::new_async().await;
110
+ let list_name = "employees";
111
+ let initial_body = "+alice\n+bob\n";
112
+ let full_body = "+alice\n+bob\n-alice\n+carol\n";
113
+ let appended_body = "+dan\n";
114
+ let mut metadata = IdListMetadata {
115
+ name: list_name.to_string(),
116
+ url: format!("{}/employees", server.url()),
117
+ file_id: Some("file-a".to_string()),
118
+ size: initial_body.len() as u64,
119
+ creation_time: 1,
120
+ };
121
+ let listener = Arc::new(SpecStore::new(
122
+ "secret-cursor-test",
123
+ "cursor-test".into(),
124
+ StatsigRuntime::get_runtime(),
125
+ Arc::new(SdkEventEmitter::default()),
126
+ None,
127
+ ));
128
+ // Seed the overcounted cursor left by repeated full replays in an older SDK.
129
+ listener.did_receive_id_list_updates(HashMap::from([(
130
+ list_name.to_string(),
131
+ IdListUpdate {
132
+ raw_changeset: Some(initial_body.repeat(3)),
133
+ new_metadata: metadata.clone(),
134
+ },
135
+ )]));
136
+ let original = listener.load_data();
137
+ assert_eq!(
138
+ original.id_lists[list_name].metadata.size,
139
+ 3 * initial_body.len() as u64
140
+ );
141
+ let adapter = StatsigHttpIdListsAdapter::new(
142
+ "secret-key",
143
+ &StatsigOptions {
144
+ id_lists_url: Some(format!("{}/get_id_lists", server.url())),
145
+ ..StatsigOptions::default()
146
+ },
147
+ );
148
+ adapter.set_listener(listener.clone());
149
+
150
+ metadata.creation_time = 2;
151
+ metadata.size = full_body.len() as u64;
152
+ let manifest = server
153
+ .mock("POST", "/get_id_lists")
154
+ .with_status(200)
155
+ .with_body(serde_json::to_string(&HashMap::from([(list_name, &metadata)])).unwrap())
156
+ .expect(2)
157
+ .create_async()
158
+ .await;
159
+ let full_download = server
160
+ .mock("GET", "/employees")
161
+ .match_header("range", "bytes=0-")
162
+ .with_status(206)
163
+ .with_body(full_body)
164
+ .expect(1)
165
+ .create_async()
166
+ .await;
167
+
168
+ adapter.sync_id_lists().await.unwrap();
169
+ adapter.sync_id_lists().await.unwrap();
170
+
171
+ manifest.assert_async().await;
172
+ full_download.assert_async().await;
173
+ let current = listener.get_current_id_list_metadata();
174
+ assert_eq!(current[list_name].creation_time, 2);
175
+ assert_eq!(current[list_name].size, full_body.len() as u64);
176
+ assert!(
177
+ !listener.load_data().id_lists[list_name]
178
+ .ids
179
+ .contains("alice")
180
+ );
181
+ assert!(listener.load_data().id_lists[list_name].ids.contains("bob"));
182
+ assert!(
183
+ listener.load_data().id_lists[list_name]
184
+ .ids
185
+ .contains("carol")
186
+ );
187
+
188
+ assert!(original.id_lists[list_name].ids.contains("alice"));
189
+ assert!(!original.id_lists[list_name].ids.contains("carol"));
190
+ let replayed = listener.load_data();
191
+
192
+ // With unchanged creationTime, subsequent growth must read just the tail.
193
+ manifest.remove_async().await;
194
+ metadata.size += appended_body.len() as u64;
195
+ let manifest = server
196
+ .mock("POST", "/get_id_lists")
197
+ .with_status(200)
198
+ .with_body(serde_json::to_string(&HashMap::from([(list_name, &metadata)])).unwrap())
199
+ .expect(1)
200
+ .create_async()
201
+ .await;
202
+ let tail_download = server
203
+ .mock("GET", "/employees")
204
+ .match_header("range", format!("bytes={}-", full_body.len()).as_str())
205
+ .with_status(206)
206
+ .with_body(appended_body)
207
+ .expect(1)
208
+ .create_async()
209
+ .await;
210
+
211
+ adapter.sync_id_lists().await.unwrap();
212
+
213
+ manifest.assert_async().await;
214
+ tail_download.assert_async().await;
215
+ full_download.assert_async().await;
216
+ assert_eq!(
217
+ listener.get_current_id_list_metadata()[list_name].size,
218
+ metadata.size
219
+ );
220
+ assert!(listener.load_data().id_lists[list_name].ids.contains("dan"));
221
+ assert!(listener.load_data().id_lists[list_name].ids.contains("bob"));
222
+ assert!(
223
+ !listener.load_data().id_lists[list_name]
224
+ .ids
225
+ .contains("alice")
226
+ );
227
+ assert!(!replayed.id_lists[list_name].ids.contains("dan"));
228
+ }
@@ -377,9 +377,10 @@ async fn id_list_propagation_replay_cannot_invent_contiguous_coverage() {
377
377
  fixture.set("users", "A", 2, 0, "+a\n", Some(old));
378
378
  fixture.adapter.sync_id_lists().await.unwrap();
379
379
  assert!(fixture.metrics().is_empty());
380
- // Preserve the existing cursor behavior: replay counts bytes again. Telemetry must not.
381
- assert_eq!(fixture.store.load_data().id_lists["users"].metadata.size, 6);
382
- fixture.set("users", "A", 1, 6, "+p\n", Some(new));
380
+ // Full replay installs the byte count once. A later response that skips
381
+ // bytes must still not invent contiguous coverage for telemetry.
382
+ assert_eq!(fixture.store.load_data().id_lists["users"].metadata.size, 3);
383
+ fixture.set("users", "A", 2, 6, "+p\n", Some(new));
383
384
  fixture.adapter.sync_id_lists().await.unwrap();
384
385
  assert!(
385
386
  fixture.metrics().is_empty(),
@@ -390,7 +391,7 @@ async fn id_list_propagation_replay_cannot_invent_contiguous_coverage() {
390
391
  .ids
391
392
  .contains("p")
392
393
  );
393
- assert_eq!(fixture.ranges(), ["bytes=0-", "bytes=0-", "bytes=6-"]);
394
+ assert_eq!(fixture.ranges(), ["bytes=0-", "bytes=0-", "bytes=3-"]);
394
395
  }
395
396
 
396
397
  #[tokio::test]
@@ -1744,3 +1744,7 @@ mod refresh_tests;
1744
1744
  #[cfg(all(test, feature = "custom_network_provider"))]
1745
1745
  #[path = "id_list_propagation_tests.rs"]
1746
1746
  mod propagation_tests;
1747
+
1748
+ #[cfg(test)]
1749
+ #[path = "id_list_cursor_tests.rs"]
1750
+ mod cursor_tests;
@@ -9,7 +9,7 @@ use crate::log_w;
9
9
 
10
10
  use crate::event_logging::event_logger::EventLogger;
11
11
  use parking_lot::Mutex;
12
- use rand::Rng;
12
+ use rand::RngExt;
13
13
  use serde::Serialize;
14
14
  use std::collections::HashMap;
15
15
  use std::fmt;
@@ -148,8 +148,8 @@ impl Diagnostics {
148
148
 
149
149
  pub fn should_sample(&self, context: &ContextType, key: Option<KeyType>) -> bool {
150
150
  fn check_sampling_rate(sampling_rate: Option<&f64>) -> bool {
151
- let mut rng = rand::thread_rng();
152
- let rand_value = rng.gen::<f64>() * MAX_SAMPLING_RATE;
151
+ let mut rng = crate::utils::random::rng();
152
+ let rand_value = rng.random::<f64>() * MAX_SAMPLING_RATE;
153
153
 
154
154
  match sampling_rate {
155
155
  Some(sampling_rate) => rand_value < *sampling_rate,