oai-statsig-python-core 0.37.0rc1__tar.gz → 0.37.0rc2__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 (526) hide show
  1. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/Cargo.lock +5 -5
  2. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/Cargo.toml +1 -1
  3. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/PKG-INFO +1 -1
  4. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/Cargo.toml +1 -1
  5. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_fetch_tests.rs +47 -116
  6. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/interned_store/mmap_artifact.rs +26 -41
  7. oai_statsig_python_core-0.37.0rc2/statsig-rust/src/interned_values/interned_store/mmap_manifest/virtiofs/tests.rs +107 -0
  8. oai_statsig_python_core-0.37.0rc2/statsig-rust/src/interned_values/interned_store/mmap_manifest/virtiofs.rs +108 -0
  9. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/interned_store/mmap_manifest.rs +45 -82
  10. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/interned_store/mmap_writer.rs +1 -1
  11. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/interned_store.rs +11 -27
  12. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/json_hydration_preparation_tests.rs +3 -0
  13. oai_statsig_python_core-0.37.0rc2/statsig-rust/src/specs_adapter/__tests__/realistic_json_hydration_benchmark.rs +384 -0
  14. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/__init__.py +0 -0
  15. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/_frozen_json.py +0 -0
  16. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/data_store.py +0 -0
  17. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/error_boundary.py +0 -0
  18. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/evaluation_cache.py +0 -0
  19. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/event_logging_adapter.py +0 -0
  20. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/observability_client.py +0 -0
  21. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/output_logger_provider.py +0 -0
  22. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/persistent_storage.py +0 -0
  23. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/py.typed +0 -0
  24. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/requirements.txt +0 -0
  25. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/statsig.py +0 -0
  26. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/statsig_python_core.pyi +0 -0
  27. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/statsig_types.py +0 -0
  28. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/py_src/statsig_python_core/typed_config.py +0 -0
  29. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/pyproject.toml +0 -0
  30. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/Cargo.toml +0 -0
  31. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/README.md +0 -0
  32. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/build.rs +0 -0
  33. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/src/lib.rs +0 -0
  34. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/src/mock_forward_proxy.rs +0 -0
  35. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/src/protos/statsig_forward_proxy.proto +0 -0
  36. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/src/statsig_forward_proxy.rs +0 -0
  37. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/src/statsig_grpc_client.rs +0 -0
  38. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-grpc/src/statsig_grpc_err.rs +0 -0
  39. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/.github/workflows/CI.yml +0 -0
  40. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/.gitignore +0 -0
  41. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/Cargo.toml +0 -0
  42. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/README.md +0 -0
  43. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/benchmarks/dynamic_config_value_cache_benchmark.py +0 -0
  44. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/benchmarks/native_context_allocations.c +0 -0
  45. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/benchmarks/native_context_benchmark.py +0 -0
  46. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/benchmarks/summarize_native_context_allocations.py +0 -0
  47. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/benchmarks/user_creation_benchmark.py +0 -0
  48. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/benchmarks/user_memory_benchmark.py +0 -0
  49. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/benchmarks/wrapper_native_context_benchmark.py +0 -0
  50. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/requirements-typing.txt +0 -0
  51. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/bin/stub_gen.rs +0 -0
  52. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/data_store_base_py.rs +0 -0
  53. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/event_logging_adapter_base_py.rs +0 -0
  54. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/interned_store_py.rs +0 -0
  55. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/lib.rs +0 -0
  56. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/observability_client_base_py.rs +0 -0
  57. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/output_logger_provider_base_py.rs +0 -0
  58. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/pyo_utils.rs +0 -0
  59. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/raw_evaluation_compat_py.rs +0 -0
  60. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/safe_gil.rs +0 -0
  61. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/statsig_base_py.rs +0 -0
  62. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/statsig_metadata_py.rs +0 -0
  63. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/statsig_options_py.rs +0 -0
  64. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/statsig_persistent_storage_override_adapter_py.rs +0 -0
  65. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/statsig_types_py.rs +0 -0
  66. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/statsig_user_context_py.rs +0 -0
  67. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/statsig_user_py.rs +0 -0
  68. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/typed_config_py/tests.rs +0 -0
  69. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/typed_config_py.rs +0 -0
  70. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/unit_id_py.rs +0 -0
  71. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/src/valid_primitives_py.rs +0 -0
  72. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/event_listener_reentrancy_subprocess.py +0 -0
  73. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/fork_callback_runner.py +0 -0
  74. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/fork_runner.py +0 -0
  75. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/mock_output_logger.py +0 -0
  76. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/mock_scrapi.py +0 -0
  77. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/packaged_config_fixture.py +0 -0
  78. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/profile_util.py +0 -0
  79. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/shutdown_sub_proc.py +0 -0
  80. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_bulk_evaluate_gcir_parity.py +0 -0
  81. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_data_store.py +0 -0
  82. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_error_boundary.py +0 -0
  83. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_evaluation_cache.py +0 -0
  84. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_evaluation_cache_integration.py +0 -0
  85. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_evaluation_cache_pyo3.py +0 -0
  86. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_event_logging_adapter.py +0 -0
  87. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_experiment_group_targeting_exposures.py +0 -0
  88. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_experiment_serialization.py +0 -0
  89. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_exposure_logging.py +0 -0
  90. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_feature_gate_parts.py +0 -0
  91. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_feature_gate_serialization.py +0 -0
  92. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_fork_callback.py +0 -0
  93. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_forking.py +0 -0
  94. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_frozen_json.py +0 -0
  95. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_get_dynamic_config.py +0 -0
  96. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_id_list_updates.py +0 -0
  97. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_initialize_with_details.py +0 -0
  98. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_interned_store_preload.py +0 -0
  99. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_layer_param_exposure_sampling.py +0 -0
  100. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_layer_serialization.py +0 -0
  101. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_native_context_allocations.py +0 -0
  102. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_native_context_benchmark.py +0 -0
  103. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_native_user_context.py +0 -0
  104. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_observability_client.py +0 -0
  105. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_output_logger_gc.py +0 -0
  106. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_output_logger_provider.py +0 -0
  107. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_override_adapter.py +0 -0
  108. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_partial_rollout_boost.py +0 -0
  109. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_performance.py +0 -0
  110. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_sdk_event_emitter.py +0 -0
  111. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_sec_expo_as_primary.py +0 -0
  112. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_shared_statsig.py +0 -0
  113. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_shutdown.py +0 -0
  114. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_state_read_primary_attempts.py +0 -0
  115. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_statsig.py +0 -0
  116. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_statsig_options.py +0 -0
  117. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_statsig_user.py +0 -0
  118. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_statsig_user_json_serialization.py +0 -0
  119. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_statsig_user_none_fields.py +0 -0
  120. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_statsig_user_pickle.py +0 -0
  121. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_typed_config.py +0 -0
  122. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_typed_config_native.py +0 -0
  123. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/test_user_exposure_e2e.py +0 -0
  124. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/tests/utils.py +0 -0
  125. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-pyo3/typing_tests/typed_config.py +0 -0
  126. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/benches/evaluation/case_sensitive_target_bench.rs +0 -0
  127. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/build.rs +0 -0
  128. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/resources/ip_supalite.table +0 -0
  129. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/resources/ua_parser_regex.yaml +0 -0
  130. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/resources/ua_parser_regex_lite.yaml +0 -0
  131. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/__tests__/interned_string_tests.rs +0 -0
  132. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/__tests__/mod.rs +0 -0
  133. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/__tests__/spec_store_tests.rs +0 -0
  134. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/__tests__/state_read_initialization_tests.rs +0 -0
  135. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/__tests__/statsig_options_tests.rs +0 -0
  136. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/__tests__/user_value_tests.rs +0 -0
  137. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/compression/compression_helper.rs +0 -0
  138. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/compression/mod.rs +0 -0
  139. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/console_capture/console_capture_handler.rs +0 -0
  140. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/console_capture/console_capture_instances.rs +0 -0
  141. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/console_capture/console_capture_options.rs +0 -0
  142. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/console_capture/console_log_line_levels.rs +0 -0
  143. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/console_capture/mod.rs +0 -0
  144. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/data_store_interface.rs +0 -0
  145. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/dcs_str.rs +0 -0
  146. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/__tests__/array_optimization_bench.rs +0 -0
  147. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/__tests__/array_optimization_tests.rs +0 -0
  148. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/__tests__/case_sensitive_target_spellings_tests.rs +0 -0
  149. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/__tests__/dynamic_returnable_tests.rs +0 -0
  150. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/__tests__/mod.rs +0 -0
  151. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/__tests__/rkyv_value_tests.rs +0 -0
  152. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/cmab_evaluator.rs +0 -0
  153. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/comparisons/compare_arrays.rs +0 -0
  154. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/comparisons/compare_case_sensitive_strings_in_array.rs +0 -0
  155. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/comparisons/compare_numbers.rs +0 -0
  156. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/comparisons/compare_str_with_regex.rs +0 -0
  157. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/comparisons/compare_strings_in_array.rs +0 -0
  158. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/comparisons/compare_time.rs +0 -0
  159. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/comparisons/compare_versions.rs +0 -0
  160. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/comparisons/mod.rs +0 -0
  161. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/country_lookup.rs +0 -0
  162. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/dynamic_returnable.rs +0 -0
  163. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/dynamic_string.rs +0 -0
  164. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/dynamic_value.rs +0 -0
  165. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluation_data.rs +0 -0
  166. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluation_details.rs +0 -0
  167. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluation_types.rs +0 -0
  168. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluation_types_initialize_v2.rs +0 -0
  169. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluation_types_v2.rs +0 -0
  170. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluator.rs +0 -0
  171. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluator_context.rs +0 -0
  172. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluator_result.rs +0 -0
  173. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/evaluator_value.rs +0 -0
  174. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/get_unit_id.rs +0 -0
  175. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/mod.rs +0 -0
  176. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/rkyv_value.rs +0 -0
  177. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/secondary_exposure_key.rs +0 -0
  178. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/first_party_ua_parser.rs +0 -0
  179. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/mod.rs +0 -0
  180. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/mod.rs +0 -0
  181. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_helpers.rs +0 -0
  182. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer.rs +0 -0
  183. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer_performance.rs +0 -0
  184. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_browser.rs +0 -0
  185. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_os.rs +0 -0
  186. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/mod.rs +0 -0
  187. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/tokenizer.rs +0 -0
  188. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/ua_parser.rs +0 -0
  189. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/window_iter.rs +0 -0
  190. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/third_party_ua_parser.rs +0 -0
  191. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation/user_agent_parsing/ua_parser.rs +0 -0
  192. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/evaluation_fixture_client.rs +0 -0
  193. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_emitter/statsig_event_emitter_tests.rs +0 -0
  194. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/delayed_exposure_store.rs +0 -0
  195. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_logger.rs +0 -0
  196. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_logger_constants.rs +0 -0
  197. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_logger_ops_stats.rs +0 -0
  198. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/batch.rs +0 -0
  199. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/mod.rs +0 -0
  200. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queue.rs +0 -0
  201. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queued_config_expo.rs +0 -0
  202. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queued_event.rs +0 -0
  203. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queued_experiment_expo.rs +0 -0
  204. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queued_expo.rs +0 -0
  205. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queued_gate_expo.rs +0 -0
  206. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queued_layer_param_expo.rs +0 -0
  207. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queued_passthrough.rs +0 -0
  208. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/event_queue/queued_secondary_expo.rs +0 -0
  209. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/exposure_sampling.rs +0 -0
  210. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/exposure_utils.rs +0 -0
  211. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/flush_interval.rs +0 -0
  212. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/flush_type.rs +0 -0
  213. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/mod.rs +0 -0
  214. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/sec_expo_as_primary_experiment.rs +0 -0
  215. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/statsig_event.rs +0 -0
  216. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging/statsig_event_internal.rs +0 -0
  217. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging_adapter/event_logging_adapter_trait.rs +0 -0
  218. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging_adapter/log_event_payload.rs +0 -0
  219. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging_adapter/mod.rs +0 -0
  220. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging_adapter/statsig_http_event_logging_adapter.rs +0 -0
  221. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/event_logging_adapter/statsig_local_file_event_logging_adapter.rs +0 -0
  222. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/dynamic_configs_processor.rs +0 -0
  223. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/evaluation_plan.rs +0 -0
  224. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/feature_gates_processor.rs +0 -0
  225. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/gcir_formatter.rs +0 -0
  226. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/gcir_options.rs +0 -0
  227. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/gcir_process_iter.rs +0 -0
  228. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/layer_configs_processor.rs +0 -0
  229. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/mod.rs +0 -0
  230. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/param_stores_processor.rs +0 -0
  231. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/secondary_exposure_hashing.rs +0 -0
  232. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/stringify_sec_exposures.rs +0 -0
  233. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/target_app_id_utils.rs +0 -0
  234. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/gcir/timing.rs +0 -0
  235. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/global_configs.rs +0 -0
  236. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/hashing/ahash.rs +0 -0
  237. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/hashing/djb2.rs +0 -0
  238. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/hashing/hash_util.rs +0 -0
  239. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/hashing/memo_sha_256.rs +0 -0
  240. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/hashing/mod.rs +0 -0
  241. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/compact_id_list_tests.rs +0 -0
  242. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/id_list_cursor_tests.rs +0 -0
  243. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/id_list_download_concurrency_tests.rs +0 -0
  244. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/id_list_propagation_state_tests.rs +0 -0
  245. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/id_list_propagation_tests.rs +0 -0
  246. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/id_list_range_tests.rs +0 -0
  247. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/id_list_tests.rs +0 -0
  248. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/id_lists_refresh_tests.rs +0 -0
  249. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/state_read_retry_tests.rs +0 -0
  250. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/__tests__/statsig_http_id_lists_adapter_tests.rs +0 -0
  251. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/id_list.rs +0 -0
  252. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/id_list_ids.rs +0 -0
  253. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/id_list_propagation.rs +0 -0
  254. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/id_lists_adapter_trait.rs +0 -0
  255. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/id_lists_memory_benchmark.rs +0 -0
  256. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/mod.rs +0 -0
  257. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/id_lists_adapter/statsig_http_id_lists_adapter.rs +0 -0
  258. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/init_details.rs +0 -0
  259. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/initialize_evaluations_response.rs +0 -0
  260. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/initialize_response.rs +0 -0
  261. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/initialize_v2_response.rs +0 -0
  262. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/instance_registry.rs +0 -0
  263. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_string.rs +0 -0
  264. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/__tests__/interned_store_eval_value_tests.rs +0 -0
  265. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_v2_tests.rs +0 -0
  266. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/__tests__/interned_store_preload_remote_tests.rs +0 -0
  267. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/__tests__/interned_store_returnable_tests.rs +0 -0
  268. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/__tests__/interned_store_string_tests.rs +0 -0
  269. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/__tests__/mod.rs +0 -0
  270. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/__tests__/mutable_store_metadata_tests.rs +0 -0
  271. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/interned_store/mmap_reader/materialize.rs +0 -0
  272. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/interned_store/mmap_reader/memory.rs +0 -0
  273. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/interned_store/mmap_reader.rs +0 -0
  274. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/mmap_data_v2/evaluator_value.rs +0 -0
  275. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/mmap_data_v2/spec.rs +0 -0
  276. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/mmap_data_v2/spec_content_hash.rs +0 -0
  277. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/mmap_data_v2.rs +0 -0
  278. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/mmap_sync.rs +0 -0
  279. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/interned_values/mod.rs +0 -0
  280. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/lib.rs +0 -0
  281. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/logging_utils.rs +0 -0
  282. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/macros.rs +0 -0
  283. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/http2_test_helpers.rs +0 -0
  284. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/mod.rs +0 -0
  285. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/net_provider_reqwest_http2_tests.rs +0 -0
  286. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/net_provider_reqwest_shared_bytes_tests.rs +0 -0
  287. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/network_client_http2_tests.rs +0 -0
  288. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/network_client_latency_tests.rs +0 -0
  289. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/network_client_request_body_tests.rs +0 -0
  290. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/response_data_tests.rs +0 -0
  291. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/__tests__/retry_tests.rs +0 -0
  292. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/http2.rs +0 -0
  293. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/http_types.rs +0 -0
  294. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/mod.rs +0 -0
  295. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/network_client.rs +0 -0
  296. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/network_error.rs +0 -0
  297. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/providers/mod.rs +0 -0
  298. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/providers/net_provider_global.rs +0 -0
  299. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/providers/net_provider_noop.rs +0 -0
  300. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/providers/net_provider_reqwest.rs +0 -0
  301. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/proxy_config.rs +0 -0
  302. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/retry.rs +0 -0
  303. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/networking/statsig_url.rs +0 -0
  304. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/observability/console_capture_observer.rs +0 -0
  305. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/observability/diagnostics_observer.rs +0 -0
  306. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/observability/mod.rs +0 -0
  307. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/observability/observability_client_adapter.rs +0 -0
  308. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/observability/ops_stats.rs +0 -0
  309. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/observability/sdk_errors_observer.rs +0 -0
  310. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/output_logger.rs +0 -0
  311. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/output_policy.rs +0 -0
  312. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/override_adapter/mod.rs +0 -0
  313. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/override_adapter/override_adapter_trait.rs +0 -0
  314. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/override_adapter/statsig_local_override_adapter.rs +0 -0
  315. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/persistent_storage/__tests__/mod.rs +0 -0
  316. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/persistent_storage/__tests__/sticky_values_serialization_tests.rs +0 -0
  317. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/persistent_storage/mod.rs +0 -0
  318. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/persistent_storage/persistent_storage_trait.rs +0 -0
  319. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/persistent_storage/persistent_values_manager.rs +0 -0
  320. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/scoped_evaluation_request.rs +0 -0
  321. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/scoped_id_list_membership_service.rs +0 -0
  322. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/scoped_snapshot_registry.rs +0 -0
  323. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/sdk_diagnostics/diagnostics.rs +0 -0
  324. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/sdk_diagnostics/diagnostics_utils.rs +0 -0
  325. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/sdk_diagnostics/marker.rs +0 -0
  326. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/sdk_diagnostics/mod.rs +0 -0
  327. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/sdk_event_emitter/event_emitter.rs +0 -0
  328. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/sdk_event_emitter/event_emitter_tests.rs +0 -0
  329. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/sdk_event_emitter/event_types.rs +0 -0
  330. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/sdk_event_emitter/mod.rs +0 -0
  331. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/snapshot_evaluation_session.rs +0 -0
  332. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/spec_store.rs +0 -0
  333. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/config_spec_background_sync_metrics_tests.rs +0 -0
  334. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/hydration_phase_tests.rs +0 -0
  335. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/hydration_telemetry_context_tests.rs +0 -0
  336. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/json_hydration_discovery_filter_tests.rs +0 -0
  337. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/json_raw_config_handoff_tests.rs +0 -0
  338. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/protobuf_hydration_budget_tests.rs +0 -0
  339. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/remote_config_full_inline_reuse_tests.rs +0 -0
  340. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/remote_config_inline_probe_edge_tests.rs +0 -0
  341. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/remote_config_value_hydrator_tests.rs +0 -0
  342. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/response_metrics_reuse_tests.rs +0 -0
  343. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/__tests__/state_read_retry_tests.rs +0 -0
  344. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/config_spec_background_sync_metrics.rs +0 -0
  345. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/mod.rs +0 -0
  346. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/download.rs +0 -0
  347. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/errors.rs +0 -0
  348. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/json.rs +0 -0
  349. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/metadata.rs +0 -0
  350. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/mod.rs +0 -0
  351. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/protobuf.rs +0 -0
  352. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/telemetry.rs +0 -0
  353. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/verified_values.rs +0 -0
  354. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/response_format.rs +0 -0
  355. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/scoped_source_specs_adapter.rs +0 -0
  356. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/specs_adapter_trait.rs +0 -0
  357. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/statsig_bootstrap_specs_adapter.rs +0 -0
  358. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/statsig_customized_specs_adapter.rs +0 -0
  359. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/statsig_data_store_specs_adapter.rs +0 -0
  360. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/statsig_grpc_specs_adapter.rs +0 -0
  361. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/statsig_http_specs_adapter.rs +0 -0
  362. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_adapter/statsig_local_file_specs_adapter.rs +0 -0
  363. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/__tests__/mod.rs +0 -0
  364. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/__tests__/proto_specs_syncing_tests.rs +0 -0
  365. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/__tests__/proto_specs_tests.rs +0 -0
  366. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/__tests__/proto_specs_unknown_tests.rs +0 -0
  367. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/__tests__/proto_specs_vs_json_tests.rs +0 -0
  368. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/__tests__/proto_stream_reader_tests.rs +0 -0
  369. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/cmab_types.rs +0 -0
  370. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/explicit_params.rs +0 -0
  371. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/mod.rs +0 -0
  372. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/param_store_types.rs +0 -0
  373. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/parse_options.rs +0 -0
  374. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/proto_compression.rs +0 -0
  375. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/proto_specs/parser.rs +0 -0
  376. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/proto_specs.rs +0 -0
  377. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/proto_stream_reader.rs +0 -0
  378. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/spec_types.rs +0 -0
  379. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/specs_hash_map.rs +0 -0
  380. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/specs_response/statsig_config_specs.rs +0 -0
  381. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig/typed_config_tests.rs +0 -0
  382. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig.rs +0 -0
  383. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_core_api_options.rs +0 -0
  384. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_err.rs +0 -0
  385. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_global.rs +0 -0
  386. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_metadata.rs +0 -0
  387. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_options.rs +0 -0
  388. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_runtime.rs +0 -0
  389. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_type_factories.rs +0 -0
  390. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_types.rs +0 -0
  391. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/statsig_types_raw.rs +0 -0
  392. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/typed_config/tests.rs +0 -0
  393. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/typed_config.rs +0 -0
  394. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/fast_statsig_user.rs +0 -0
  395. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/into_optional.rs +0 -0
  396. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/mod.rs +0 -0
  397. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/prepared_user.rs +0 -0
  398. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/random_user_id.rs +0 -0
  399. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/statsig_user.rs +0 -0
  400. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/statsig_user_builder.rs +0 -0
  401. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/statsig_user_internal.rs +0 -0
  402. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/statsig_user_loggable.rs +0 -0
  403. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/unit_id.rs +0 -0
  404. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/user_data.rs +0 -0
  405. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/user/user_value.rs +0 -0
  406. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/utils/mod.rs +0 -0
  407. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/utils/random.rs +0 -0
  408. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/src/value_parsing.rs +0 -0
  409. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/check_gate_tests.rs +0 -0
  410. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/customized_specs_adapter_tests.rs +0 -0
  411. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/big_number_dcs.json +0 -0
  412. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/check_gate_perf_dcs.json +0 -0
  413. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/company_id_list +0 -0
  414. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/dcs_error.json +0 -0
  415. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/dcs_missing_gates.json +0 -0
  416. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/dcs_non_case_sensitive.json +0 -0
  417. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/dcs_user_agent_versions.json +0 -0
  418. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/dcs_with_analytical_exposure_sampling.json +0 -0
  419. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/dcs_with_checksum.json +0 -0
  420. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/dcs_with_sampling.json +0 -0
  421. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/dcs_with_sdk_configs.json +0 -0
  422. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/demo_proj_dcs.json +0 -0
  423. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/demo_proj_dcs.pb.br +0 -0
  424. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/eval_proj_dcs.json +0 -0
  425. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/eval_proj_dcs.pb.br +0 -0
  426. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/experiment_group_condition.pb.br +0 -0
  427. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/get_id_lists.json +0 -0
  428. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/perf_proj_dcs.json +0 -0
  429. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/perf_proj_dcs.pb.br +0 -0
  430. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/shared_dict_dict_only.json +0 -0
  431. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/shared_dict_original_dcs.json +0 -0
  432. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/shared_dict_response_uncompressed.json +0 -0
  433. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/shared_dict_response_with_dict.json +0 -0
  434. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/shared_dict_response_without_dict.json +0 -0
  435. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/test_must_pass_user_agents.txt +0 -0
  436. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/test_user_agents.txt +0 -0
  437. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/ua_string_cases.json +0 -0
  438. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data/unknown_enum.pb.br +0 -0
  439. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data_store_bytes_adapter_tests.rs +0 -0
  440. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data_store_json_bytes_tests.rs +0 -0
  441. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data_store_json_only_no_bytes_methods_tests.rs +0 -0
  442. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data_store_lock_tests.rs +0 -0
  443. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/data_store_proto_bytes_tests.rs +0 -0
  444. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/delayed_exposure_bench.rs +0 -0
  445. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/direct_gcir_tests.rs +0 -0
  446. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/dynamic_string_tests.rs +0 -0
  447. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/dynamic_value_tests.rs +0 -0
  448. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/evaluation_details_tests.rs +0 -0
  449. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/evaluator_value_tests.rs +0 -0
  450. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/event_logger_constants_tests.rs +0 -0
  451. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/event_logger_failing_flush_tests.rs +0 -0
  452. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/event_logger_flush_tests.rs +0 -0
  453. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/event_logger_high_qps_tests.rs +0 -0
  454. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/event_logger_usage_tests.rs +0 -0
  455. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/expected_evaluation_tests.rs +0 -0
  456. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/exposure_sampling_key_tests.rs +0 -0
  457. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/exposure_tests.rs +0 -0
  458. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/flushing_tests.rs +0 -0
  459. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/fork_lifecycle.rs +0 -0
  460. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/fork_pid_change.rs +0 -0
  461. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/fork_random.rs +0 -0
  462. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/gate_inversion_eval_tests.rs +0 -0
  463. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/gcir_plan_expansion_bench.rs +0 -0
  464. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/gcir_tests.rs +0 -0
  465. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/global_configs_test.rs +0 -0
  466. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/grpc_specs_adapter_tests.rs +0 -0
  467. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/hash_util_evaluation_hash_tests.rs +0 -0
  468. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/http_specs_adapter_tests.rs +0 -0
  469. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/hydration_cohort_tests.rs +0 -0
  470. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/id_list_storage_api_tests.rs +0 -0
  471. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/initialize_timeout_test.rs +0 -0
  472. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/instance_registry_tests.rs +0 -0
  473. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/interner_contention_bench.rs +0 -0
  474. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/json_remote_value_mmap_reuse_tests.rs +0 -0
  475. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/json_remote_value_reuse_tests.rs +0 -0
  476. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/layer_serialization_tests.rs +0 -0
  477. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/list_methods_tests.rs +0 -0
  478. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/nested_gate_sampling_memo_tests.rs +0 -0
  479. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/network_client_streaming_tests.rs +0 -0
  480. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/network_client_tests.rs +0 -0
  481. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/network_failure_tests.rs +0 -0
  482. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/observability_client_usage_tests.rs +0 -0
  483. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/output_logger_reentrancy_tests.rs +0 -0
  484. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/output_logger_tests.rs +0 -0
  485. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/override_adapter_tests.rs +0 -0
  486. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/perf_tests.rs +0 -0
  487. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/proto_specs_usage_tests.rs +0 -0
  488. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/protobuf_copy_bench.rs +0 -0
  489. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/remote_config_preload_hydration_tests.rs +0 -0
  490. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/remote_config_value_hydration_tests.rs +0 -0
  491. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/spec_store_lock_tests.rs +0 -0
  492. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/spec_types_tests.rs +0 -0
  493. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_disable_network_tests.rs +0 -0
  494. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_environment_tests.rs +0 -0
  495. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_event_emitter_usage_test.rs +0 -0
  496. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_global_tests.rs +0 -0
  497. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_local_file_event_logging_adapter_tests.rs +0 -0
  498. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_local_file_specs_adapter_tests.rs +0 -0
  499. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_options_tests.rs +0 -0
  500. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_shared_tests.rs +0 -0
  501. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_tests.rs +0 -0
  502. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_user_builder_tests.rs +0 -0
  503. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_user_field_accessor_tests.rs +0 -0
  504. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_user_internal_tests.rs +0 -0
  505. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_user_loggable_tests.rs +0 -0
  506. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/statsig_user_tests.rs +0 -0
  507. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/substring_search_bench.rs +0 -0
  508. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/syncing_network_failure_tests.rs +0 -0
  509. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/typed_getters_tests.rs +0 -0
  510. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/typed_packaged_fallback_tests.rs +0 -0
  511. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/typed_packaged_initialization_race_tests.rs +0 -0
  512. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/ua_parser_util_test.rs +0 -0
  513. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/user_agent_tests_first_party.rs +0 -0
  514. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/user_json_tests.rs +0 -0
  515. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/env_var_guard.rs +0 -0
  516. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/fork_runtime.rs +0 -0
  517. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/helpers.rs +0 -0
  518. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/mock_data_store.rs +0 -0
  519. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/mock_event_logging_adapter.rs +0 -0
  520. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/mock_log_provider.rs +0 -0
  521. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/mock_observability_client.rs +0 -0
  522. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/mock_scrapi.rs +0 -0
  523. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/mock_specs_adapter.rs +0 -0
  524. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/mock_specs_listener.rs +0 -0
  525. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/utils/mod.rs +0 -0
  526. {oai_statsig_python_core-0.37.0rc1 → oai_statsig_python_core-0.37.0rc2}/statsig-rust/tests/verified_remote_value_reuse_tests.rs +0 -0
@@ -1853,7 +1853,7 @@ dependencies = [
1853
1853
 
1854
1854
  [[package]]
1855
1855
  name = "oai-statsig-grpc"
1856
- version = "0.37.0-rc.1"
1856
+ version = "0.37.0-rc.2"
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.37.0-rc.1"
1872
+ version = "0.37.0-rc.2"
1873
1873
  dependencies = [
1874
1874
  "ahash",
1875
1875
  "arc-swap",
@@ -3102,7 +3102,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
3102
3102
 
3103
3103
  [[package]]
3104
3104
  name = "statsig-node"
3105
- version = "0.37.0-rc.1"
3105
+ version = "0.37.0-rc.2"
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.37.0-rc.1"
3120
+ version = "0.37.0-rc.2"
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.37.0-rc.1"
3135
+ version = "0.37.0-rc.2"
3136
3136
  dependencies = [
3137
3137
  "async-trait",
3138
3138
  "cbindgen",
@@ -27,7 +27,7 @@ exclude = [
27
27
  [workspace.package]
28
28
  edition = "2021"
29
29
  license = "ISC"
30
- version = "0.37.0-rc.1"
30
+ version = "0.37.0-rc.2"
31
31
  homepage = "https://statsig.com/"
32
32
  authors = ["Statsig", "Daniel Loomb <daniel@statsig.com>"]
33
33
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oai_statsig_python_core
3
- Version: 0.37.0rc1
3
+ Version: 0.37.0rc2
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -47,7 +47,7 @@ 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.37.0-rc.1", optional = true }
50
+ oai-statsig-grpc = { path = "../statsig-grpc", version = "0.37.0-rc.2", 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"] }
@@ -7,11 +7,9 @@ use crate::{
7
7
  interned_values::{
8
8
  InternedStore, MmapArtifactState, MmapPreloadOptions, MmapSyncCursor, MmapWriteOutcome,
9
9
  interned_store::{
10
- LEGACY_MMAP_FORMAT_VERSION, acquire_mmap_write_lock_for_test,
11
- legacy_mmap_v1_path_for_sdk_key, mmap_lock_path_for_sdk_key,
10
+ acquire_mmap_write_lock_for_test, mmap_lock_path_for_sdk_key,
12
11
  mmap_manifest_path_for_sdk_key, mmap_v2_path_for_sdk_key, validate_mmap_v2_for_test,
13
12
  write_mmap_manifest_for_test, write_mmap_v2_for_test,
14
- write_mmap_v2_only_manifest_for_test,
15
13
  },
16
14
  mmap_data_v2::{ArchivedMmapDataV2, MmapDataV2},
17
15
  },
@@ -68,7 +66,6 @@ const MMAP_CONCURRENT_SAME_KEY: &str = "interned-store-concurrent-same-key";
68
66
  const EVAL_PROJ_JSON: &str = include_str!("../../../tests/data/eval_proj_dcs.json");
69
67
  const EVAL_PROJ_PROTO: &[u8] = include_bytes!("../../../tests/data/eval_proj_dcs.pb.br");
70
68
  const BIG_NUMBER_JSON: &str = include_str!("../../../tests/data/big_number_dcs.json");
71
- const LEGACY_V1_TEST_BYTES: &[u8] = b"legacy v1 artifact";
72
69
  const DOWNLOAD_PATH_PREFIX: &str = "/v1/dynamic_config_value/";
73
70
 
74
71
  fn config_json_with_cursor(lcut: u64, checksum: Option<&str>) -> String {
@@ -182,8 +179,6 @@ fn query_params(request: &Request) -> HashMap<String, String> {
182
179
  #[tokio::test]
183
180
  async fn fetch_and_write_mmap_uses_header_auth_and_authoritative_storage_key() {
184
181
  let server = MockServer::start().await;
185
- let v1_path = legacy_mmap_v1_path_for_sdk_key(MMAP_FETCH_SDK_KEY);
186
- let _ = fs::remove_file(&v1_path);
187
182
  Mock::given(method("GET"))
188
183
  .and(path("/v2/download_config_specs"))
189
184
  .and(header("statsig-api-key", MMAP_FETCH_SDK_KEY))
@@ -208,7 +203,6 @@ async fn fetch_and_write_mmap_uses_header_auth_and_authoritative_storage_key() {
208
203
  "{}_v2_interned_store.mmap",
209
204
  hashing::djb2(MMAP_FETCH_SDK_KEY)
210
205
  );
211
- assert!(!v1_path.exists());
212
206
  assert_eq!(
213
207
  v2_path.file_name().and_then(|name| name.to_str()),
214
208
  Some(expected_v2_filename.as_str())
@@ -1033,7 +1027,7 @@ rusty_fork_test! {
1033
1027
 
1034
1028
  #[cfg(unix)]
1035
1029
  #[tokio::test]
1036
- async fn fetch_and_write_mmap_replaces_v2_and_leaves_v1_untouched() {
1030
+ async fn fetch_and_write_mmap_atomically_replaces_v2() {
1037
1031
  let server = MockServer::start().await;
1038
1032
  Mock::given(method("GET"))
1039
1033
  .and(path("/v2/download_config_specs"))
@@ -1045,12 +1039,9 @@ async fn fetch_and_write_mmap_replaces_v2_and_leaves_v1_untouched() {
1045
1039
  .mount(&server)
1046
1040
  .await;
1047
1041
 
1048
- let v1_path = legacy_mmap_v1_path_for_sdk_key(MMAP_REPLACE_SDK_KEY);
1049
1042
  let v2_path = mmap_v2_path_for_sdk_key(MMAP_REPLACE_SDK_KEY);
1050
- fs::create_dir_all(v1_path.parent().unwrap()).unwrap();
1051
- fs::write(&v1_path, b"previous v1 artifact").unwrap();
1043
+ fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1052
1044
  fs::write(&v2_path, b"previous v2 artifact").unwrap();
1053
- let mut previous_v1_artifact = File::open(&v1_path).unwrap();
1054
1045
  let mut previous_v2_artifact = File::open(&v2_path).unwrap();
1055
1046
 
1056
1047
  InternedStore::fetch_and_write_mmap_with_specs_url(
@@ -1060,18 +1051,12 @@ async fn fetch_and_write_mmap_replaces_v2_and_leaves_v1_untouched() {
1060
1051
  .await
1061
1052
  .unwrap();
1062
1053
 
1063
- let mut previous_v1_contents = Vec::new();
1064
- previous_v1_artifact
1065
- .read_to_end(&mut previous_v1_contents)
1066
- .unwrap();
1067
- assert_eq!(previous_v1_contents, b"previous v1 artifact");
1068
1054
  let mut previous_v2_contents = Vec::new();
1069
1055
  previous_v2_artifact
1070
1056
  .read_to_end(&mut previous_v2_contents)
1071
1057
  .unwrap();
1072
1058
  assert_eq!(previous_v2_contents, b"previous v2 artifact");
1073
1059
 
1074
- assert_eq!(fs::read(&v1_path).unwrap(), b"previous v1 artifact");
1075
1060
  let published_v2 = fs::read(&v2_path).unwrap();
1076
1061
  assert_ne!(published_v2, b"previous v2 artifact");
1077
1062
  rkyv::access::<ArchivedMmapDataV2, rkyv::rancor::Error>(&published_v2).unwrap();
@@ -1187,10 +1172,6 @@ async fn uid_10001_can_preload_artifact_written_by_uid_1000() {
1187
1172
 
1188
1173
  #[test]
1189
1174
  fn mmap_paths_are_scoped_by_sdk_key() {
1190
- assert_ne!(
1191
- legacy_mmap_v1_path_for_sdk_key(MMAP_FETCH_SDK_KEY),
1192
- legacy_mmap_v1_path_for_sdk_key(OTHER_MMAP_FETCH_SDK_KEY)
1193
- );
1194
1175
  assert_ne!(
1195
1176
  mmap_v2_path_for_sdk_key(MMAP_FETCH_SDK_KEY),
1196
1177
  mmap_v2_path_for_sdk_key(OTHER_MMAP_FETCH_SDK_KEY)
@@ -1206,9 +1187,14 @@ fn mmap_paths_are_scoped_by_sdk_key() {
1206
1187
  }
1207
1188
 
1208
1189
  #[test]
1209
- fn inspect_mmap_artifact_reports_missing_and_legacy_v1() {
1210
- let sdk_key = "interned-store-inspect-legacy-v1";
1190
+ fn inspect_mmap_artifact_ignores_retired_v1_artifacts() {
1191
+ let sdk_key = "interned-store-inspect-retired-v1";
1211
1192
  remove_mmap_artifacts(sdk_key);
1193
+ let retired_path = std::env::temp_dir()
1194
+ .join("statsig-interned-store")
1195
+ .join(format!("{}_v1_interned_store.mmap", hashing::djb2(sdk_key)));
1196
+ fs::create_dir_all(retired_path.parent().unwrap()).unwrap();
1197
+ fs::write(&retired_path, b"retired artifact is ignored").unwrap();
1212
1198
 
1213
1199
  let missing = InternedStore::inspect_mmap_artifact(sdk_key).unwrap();
1214
1200
  assert_eq!(missing.state, MmapArtifactState::Missing);
@@ -1219,21 +1205,8 @@ fn inspect_mmap_artifact_reports_missing_and_legacy_v1() {
1219
1205
  assert_eq!(missing.manifest_bytes, None);
1220
1206
  assert_eq!(missing.total_linked_bytes, 0);
1221
1207
  assert_eq!(missing.linked_file_count, 0);
1222
-
1223
- let v1_path = legacy_mmap_v1_path_for_sdk_key(sdk_key);
1224
- fs::create_dir_all(v1_path.parent().unwrap()).unwrap();
1225
- fs::write(&v1_path, LEGACY_V1_TEST_BYTES).unwrap();
1226
-
1227
- let legacy = InternedStore::inspect_mmap_artifact(sdk_key).unwrap();
1228
- assert_eq!(legacy.state, MmapArtifactState::LegacyV1);
1229
- assert_eq!(legacy.state.as_str(), "legacy_v1");
1230
- assert_eq!(legacy.format_version, Some(LEGACY_MMAP_FORMAT_VERSION));
1231
- assert_eq!(legacy.v1_bytes, Some(LEGACY_V1_TEST_BYTES.len() as u64));
1232
- assert_eq!(legacy.v2_bytes, None);
1233
- assert_eq!(legacy.manifest_bytes, None);
1234
- assert_eq!(legacy.total_linked_bytes, LEGACY_V1_TEST_BYTES.len() as u64);
1235
- assert_eq!(legacy.linked_file_count, 1);
1236
- assert!(legacy.newest_linked_modified_unix_seconds.is_some());
1208
+ assert_eq!(missing.newest_linked_modified_unix_seconds, None);
1209
+ fs::remove_file(retired_path).unwrap();
1237
1210
  }
1238
1211
 
1239
1212
  #[test]
@@ -1244,7 +1217,7 @@ fn inspect_mmap_artifact_reports_committed_and_incomplete_v2() {
1244
1217
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1245
1218
  fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1246
1219
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1247
- write_mmap_v2_only_manifest_for_test(&manifest_path, &v2_path).unwrap();
1220
+ write_mmap_manifest_for_test(&manifest_path, &v2_path).unwrap();
1248
1221
 
1249
1222
  let committed = InternedStore::inspect_mmap_artifact(sdk_key).unwrap();
1250
1223
  let v2_bytes = fs::metadata(&v2_path).unwrap().len();
@@ -1283,39 +1256,25 @@ fn inspect_mmap_artifact_reports_committed_and_incomplete_v2() {
1283
1256
  }
1284
1257
 
1285
1258
  #[test]
1286
- fn inspect_mmap_artifact_reports_v1_fallback_after_identity_failure() {
1287
- let sdk_key = "interned-store-inspect-v1-fallback";
1259
+ fn inspect_mmap_artifact_reports_invalid_manifest() {
1260
+ let sdk_key = "interned-store-inspect-invalid-manifest";
1288
1261
  remove_mmap_artifacts(sdk_key);
1289
- let v1_path = legacy_mmap_v1_path_for_sdk_key(sdk_key);
1290
1262
  let v2_path = mmap_v2_path_for_sdk_key(sdk_key);
1291
1263
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1292
- fs::create_dir_all(v1_path.parent().unwrap()).unwrap();
1293
- fs::write(&v1_path, LEGACY_V1_TEST_BYTES).unwrap();
1264
+ fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1294
1265
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1295
- write_mmap_manifest_for_test(&manifest_path, &v1_path, &v2_path).unwrap();
1296
-
1297
- let replacement = tempfile::NamedTempFile::new_in(v2_path.parent().unwrap()).unwrap();
1298
- fs::write(replacement.path(), b"replacement v2 generation").unwrap();
1299
- replacement.persist(&v2_path).unwrap();
1300
-
1301
- let fallback = InternedStore::inspect_mmap_artifact(sdk_key).unwrap();
1302
- assert_eq!(fallback.state, MmapArtifactState::FallbackV1);
1303
- assert_eq!(fallback.state.as_str(), "fallback_v1");
1304
- assert_eq!(fallback.format_version, Some(LEGACY_MMAP_FORMAT_VERSION));
1305
- assert_eq!(fallback.v1_bytes, Some(LEGACY_V1_TEST_BYTES.len() as u64));
1306
- assert_eq!(
1307
- fallback.v2_bytes,
1308
- Some(b"replacement v2 generation".len() as u64)
1309
- );
1310
- assert!(fallback.manifest_bytes.is_some());
1311
- assert_eq!(fallback.linked_file_count, 3);
1266
+ fs::write(&manifest_path, b"invalid manifest").unwrap();
1312
1267
 
1313
- fs::remove_file(v1_path).unwrap();
1314
1268
  let invalid = InternedStore::inspect_mmap_artifact(sdk_key).unwrap();
1315
1269
  assert_eq!(invalid.state, MmapArtifactState::Invalid);
1316
1270
  assert_eq!(invalid.state.as_str(), "invalid");
1317
1271
  assert_eq!(invalid.format_version, None);
1318
1272
  assert_eq!(invalid.v1_bytes, None);
1273
+ assert_eq!(invalid.v2_bytes, Some(fs::metadata(v2_path).unwrap().len()));
1274
+ assert_eq!(
1275
+ invalid.manifest_bytes,
1276
+ Some(b"invalid manifest".len() as u64)
1277
+ );
1319
1278
  assert_eq!(invalid.linked_file_count, 2);
1320
1279
  }
1321
1280
 
@@ -1353,7 +1312,6 @@ fn sdk_key_write_lock_rejects_a_second_file_handle() {
1353
1312
 
1354
1313
  fn remove_mmap_artifacts(sdk_key: &str) {
1355
1314
  for path in [
1356
- legacy_mmap_v1_path_for_sdk_key(sdk_key),
1357
1315
  mmap_v2_path_for_sdk_key(sdk_key),
1358
1316
  mmap_manifest_path_for_sdk_key(sdk_key),
1359
1317
  mmap_lock_path_for_sdk_key(sdk_key),
@@ -1366,15 +1324,13 @@ fn remove_mmap_artifacts(sdk_key: &str) {
1366
1324
  #[test]
1367
1325
  fn committed_v2_validation_keeps_the_validated_file_handle() {
1368
1326
  let sdk_key = "interned-store-open-handle";
1369
- let v1_path = legacy_mmap_v1_path_for_sdk_key(sdk_key);
1370
1327
  let v2_path = mmap_v2_path_for_sdk_key(sdk_key);
1371
1328
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1372
- fs::create_dir_all(v1_path.parent().unwrap()).unwrap();
1373
- fs::write(&v1_path, b"paired v1 generation").unwrap();
1329
+ fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1374
1330
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1375
- write_mmap_manifest_for_test(&manifest_path, &v1_path, &v2_path).unwrap();
1331
+ write_mmap_manifest_for_test(&manifest_path, &v2_path).unwrap();
1376
1332
 
1377
- let validated = open_committed_mmap_v2_for_test(&manifest_path, &v1_path, &v2_path)
1333
+ let validated = open_committed_mmap_v2_for_test(&manifest_path, &v2_path)
1378
1334
  .unwrap()
1379
1335
  .unwrap();
1380
1336
  let replacement = tempfile::NamedTempFile::new_in(v2_path.parent().unwrap()).unwrap();
@@ -1388,15 +1344,18 @@ fn committed_v2_validation_keeps_the_validated_file_handle() {
1388
1344
 
1389
1345
  rusty_fork_test! {
1390
1346
  #[test]
1391
- fn preload_mmap_prefers_v2_when_both_artifacts_exist() {
1392
- let sdk_key = "interned-store-prefer-v2";
1393
- let v1_path = legacy_mmap_v1_path_for_sdk_key(sdk_key);
1347
+ fn preload_mmap_ignores_retired_manifest_metadata() {
1348
+ let sdk_key = "interned-store-retired-manifest-metadata";
1394
1349
  let v2_path = mmap_v2_path_for_sdk_key(sdk_key);
1395
1350
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1396
- fs::create_dir_all(v1_path.parent().unwrap()).unwrap();
1397
- fs::write(&v1_path, b"malformed v1 that must not be read").unwrap();
1351
+ fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1398
1352
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1399
- write_mmap_manifest_for_test(&manifest_path, &v1_path, &v2_path).unwrap();
1353
+ write_mmap_manifest_for_test(&manifest_path, &v2_path).unwrap();
1354
+ let mut manifest: serde_json::Value =
1355
+ serde_json::from_slice(&fs::read(&manifest_path).unwrap()).unwrap();
1356
+ // Old paired manifests remain readable without a V1 artifact.
1357
+ manifest["v1"] = manifest["v2"].clone();
1358
+ fs::write(&manifest_path, serde_json::to_vec(&manifest).unwrap()).unwrap();
1400
1359
 
1401
1360
  InternedStore::preload_mmap(sdk_key).unwrap();
1402
1361
  let specs: SpecsResponseFull = serde_json::from_str(EVAL_PROJ_JSON).unwrap();
@@ -1406,15 +1365,13 @@ rusty_fork_test! {
1406
1365
  }
1407
1366
 
1408
1367
  #[test]
1409
- fn preload_mmap_accepts_v2_only_manifest_without_v1() {
1368
+ fn preload_mmap_accepts_committed_v2_manifest() {
1410
1369
  let sdk_key = "interned-store-v2-only-manifest";
1411
- let v1_path = legacy_mmap_v1_path_for_sdk_key(sdk_key);
1412
1370
  let v2_path = mmap_v2_path_for_sdk_key(sdk_key);
1413
1371
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1414
1372
  fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1415
- let _ = fs::remove_file(v1_path);
1416
1373
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1417
- write_mmap_v2_only_manifest_for_test(&manifest_path, &v2_path).unwrap();
1374
+ write_mmap_manifest_for_test(&manifest_path, &v2_path).unwrap();
1418
1375
 
1419
1376
  let report = InternedStore::preload_mmap_with_options(
1420
1377
  sdk_key,
@@ -1430,20 +1387,16 @@ rusty_fork_test! {
1430
1387
  }
1431
1388
 
1432
1389
  #[test]
1433
- fn preload_mmap_multi_rejects_a_legacy_only_required_key() {
1434
- let required_key = "interned-store-multi-legacy-only-required";
1390
+ fn preload_mmap_multi_rejects_a_missing_required_key() {
1391
+ let required_key = "interned-store-multi-missing-required";
1435
1392
  let optional_key = "interned-store-multi-committed-optional";
1436
1393
  remove_mmap_artifacts(required_key);
1437
1394
  remove_mmap_artifacts(optional_key);
1438
1395
 
1439
- let required_v1_path = legacy_mmap_v1_path_for_sdk_key(required_key);
1440
- fs::create_dir_all(required_v1_path.parent().unwrap()).unwrap();
1441
- fs::write(&required_v1_path, b"legacy artifact must not be preloaded").unwrap();
1442
-
1443
1396
  let optional_v2_path = mmap_v2_path_for_sdk_key(optional_key);
1444
1397
  let optional_manifest_path = mmap_manifest_path_for_sdk_key(optional_key);
1445
1398
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &optional_v2_path).unwrap();
1446
- write_mmap_v2_only_manifest_for_test(&optional_manifest_path, &optional_v2_path)
1399
+ write_mmap_manifest_for_test(&optional_manifest_path, &optional_v2_path)
1447
1400
  .unwrap();
1448
1401
 
1449
1402
  assert!(matches!(
@@ -1461,7 +1414,7 @@ rusty_fork_test! {
1461
1414
  let manifest_path = mmap_manifest_path_for_sdk_key(required_key);
1462
1415
  fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1463
1416
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1464
- write_mmap_v2_only_manifest_for_test(&manifest_path, &v2_path).unwrap();
1417
+ write_mmap_manifest_for_test(&manifest_path, &v2_path).unwrap();
1465
1418
  let _ = fs::remove_file(mmap_manifest_path_for_sdk_key(optional_key));
1466
1419
 
1467
1420
  let report =
@@ -1475,15 +1428,13 @@ rusty_fork_test! {
1475
1428
  }
1476
1429
 
1477
1430
  #[test]
1478
- fn preload_mmap_retries_during_v2_only_refresh() {
1431
+ fn preload_mmap_retries_during_refresh() {
1479
1432
  let sdk_key = "interned-store-v2-only-refresh";
1480
- let v1_path = legacy_mmap_v1_path_for_sdk_key(sdk_key);
1481
1433
  let v2_path = mmap_v2_path_for_sdk_key(sdk_key);
1482
1434
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1483
- fs::create_dir_all(v1_path.parent().unwrap()).unwrap();
1484
- fs::write(&v1_path, b"stale v1 generation").unwrap();
1435
+ fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1485
1436
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1486
- write_mmap_v2_only_manifest_for_test(&manifest_path, &v2_path).unwrap();
1437
+ write_mmap_manifest_for_test(&manifest_path, &v2_path).unwrap();
1487
1438
 
1488
1439
  let replacement = tempfile::NamedTempFile::new_in(v2_path.parent().unwrap()).unwrap();
1489
1440
  fs::write(replacement.path(), b"next v2 generation").unwrap();
@@ -1496,26 +1447,6 @@ rusty_fork_test! {
1496
1447
  ));
1497
1448
  }
1498
1449
 
1499
- #[test]
1500
- fn preload_mmap_rejects_v2_when_paired_v1_was_replaced() {
1501
- let sdk_key = "interned-store-v1-only-refresh";
1502
- let v1_path = legacy_mmap_v1_path_for_sdk_key(sdk_key);
1503
- let v2_path = mmap_v2_path_for_sdk_key(sdk_key);
1504
- let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1505
- fs::create_dir_all(v1_path.parent().unwrap()).unwrap();
1506
- fs::write(&v1_path, b"old v1 generation").unwrap();
1507
- write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1508
- write_mmap_manifest_for_test(&manifest_path, &v1_path, &v2_path).unwrap();
1509
-
1510
- fs::write(&v1_path, b"replacement v1 generation").unwrap();
1511
-
1512
- assert!(matches!(
1513
- InternedStore::preload_mmap(sdk_key),
1514
- Err(StatsigErr::InvalidOperation(message))
1515
- if message == "No committed interned mmap V2 artifact was found"
1516
- ));
1517
- }
1518
-
1519
1450
  #[cfg(target_os = "linux")]
1520
1451
  #[test]
1521
1452
  fn mmap_reader_memory_snapshot_tracks_deleted_loaded_generation() {
@@ -1525,7 +1456,7 @@ rusty_fork_test! {
1525
1456
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1526
1457
  fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1527
1458
  write_mmap_v2_for_test(EVAL_PROJ_JSON.as_bytes(), &v2_path).unwrap();
1528
- write_mmap_v2_only_manifest_for_test(&manifest_path, &v2_path).unwrap();
1459
+ write_mmap_manifest_for_test(&manifest_path, &v2_path).unwrap();
1529
1460
  let expected_mapped_bytes = fs::metadata(&v2_path).unwrap().len();
1530
1461
 
1531
1462
  InternedStore::preload_mmap(sdk_key).unwrap();
@@ -1560,7 +1491,7 @@ rusty_fork_test! {
1560
1491
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1561
1492
  fs::create_dir_all(v2_path.parent().unwrap()).unwrap();
1562
1493
  fs::write(&v2_path, b"malformed v2").unwrap();
1563
- write_mmap_v2_only_manifest_for_test(&manifest_path, &v2_path).unwrap();
1494
+ write_mmap_manifest_for_test(&manifest_path, &v2_path).unwrap();
1564
1495
 
1565
1496
  assert!(matches!(
1566
1497
  InternedStore::preload_mmap(sdk_key),
@@ -1576,7 +1507,7 @@ fn preload_mmap_rejects_malformed_archive() {
1576
1507
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
1577
1508
  fs::create_dir_all(path.parent().unwrap()).unwrap();
1578
1509
  fs::write(&path, b"not an rkyv archive").unwrap();
1579
- write_mmap_v2_only_manifest_for_test(&manifest_path, &path).unwrap();
1510
+ write_mmap_manifest_for_test(&manifest_path, &path).unwrap();
1580
1511
 
1581
1512
  assert!(matches!(
1582
1513
  InternedStore::preload_mmap(sdk_key),
@@ -1597,7 +1528,7 @@ fn preload_mmap_rejects_unsupported_format_version() {
1597
1528
  };
1598
1529
  let archived = rkyv::to_bytes::<rkyv::rancor::Error>(&mmap_data).unwrap();
1599
1530
  fs::write(&path, archived).unwrap();
1600
- write_mmap_v2_only_manifest_for_test(&manifest_path, &path).unwrap();
1531
+ write_mmap_manifest_for_test(&manifest_path, &path).unwrap();
1601
1532
 
1602
1533
  assert!(matches!(
1603
1534
  InternedStore::preload_mmap(sdk_key),
@@ -3,7 +3,7 @@ use std::{fs::Metadata, path::Path, time::UNIX_EPOCH};
3
3
  use crate::StatsigErr;
4
4
 
5
5
  use super::{
6
- InternedStore, LEGACY_MMAP_FORMAT_VERSION, legacy_mmap_v1_path_for_sdk_key,
6
+ InternedStore,
7
7
  mmap_manifest::{MmapV2Publication, inspect_mmap_v2_publication},
8
8
  mmap_manifest_path_for_sdk_key, mmap_v2_path_for_sdk_key,
9
9
  };
@@ -11,24 +11,24 @@ use super::{
11
11
  /// Describes the interned mmap artifacts linked at the SDK-owned location.
12
12
  ///
13
13
  /// This intentionally omits the SDK key, filesystem path, and platform-specific
14
- /// file identity used to validate publication. V1 states are informational;
15
- /// the V2-only reader rejects them.
14
+ /// file identity used to validate publication.
16
15
  #[non_exhaustive]
17
16
  #[derive(Clone, Copy, Debug, Eq, PartialEq)]
18
17
  pub enum MmapArtifactState {
19
- /// No V1 artifact or V2 publication is linked at the SDK-owned location.
18
+ /// No V2 publication is linked at the SDK-owned location.
20
19
  Missing,
21
- /// A legacy V1 artifact is linked and no V2 publication was observed.
20
+ /// Retained for source compatibility. Artifact inspection no longer returns
21
+ /// this state because V1 artifacts are unsupported.
22
22
  LegacyV1,
23
- /// A V2 publication failed manifest identity validation while a legacy V1
24
- /// artifact remains linked.
23
+ /// Retained for source compatibility. Artifact inspection no longer returns
24
+ /// this state because V1 artifacts are unsupported.
25
25
  FallbackV1,
26
26
  /// The V2 artifact and manifest identities match.
27
27
  CommittedV2,
28
- /// A V2-only artifact and manifest do not form a committed identity, so
29
- /// readers must retry rather than fall back.
28
+ /// The V2 artifact and manifest do not form a committed identity, so
29
+ /// readers must retry.
30
30
  IncompleteV2,
31
- /// V2 publication validation failed and no V1 fallback is linked.
31
+ /// V2 publication validation failed.
32
32
  Invalid,
33
33
  }
34
34
 
@@ -48,21 +48,22 @@ impl MmapArtifactState {
48
48
 
49
49
  /// Safe metadata for an SDK-owned interned mmap artifact.
50
50
  ///
51
- /// Byte counts cover only currently linked V1, V2, and manifest files. They do
51
+ /// Byte counts cover only currently linked V2 and manifest files. They do
52
52
  /// not include unlinked generations that remain mapped by readers or transient
53
53
  /// writer files. State and format reflect a reader-selectable publication
54
54
  /// observed during inspection. Linked file sizes and modification times are
55
55
  /// best-effort and may span a concurrent atomic publication. Filesystem
56
56
  /// capacity is best-effort and is omitted on unsupported platforms or when the
57
- /// backing filesystem cannot be inspected. A reported V1 format is not
58
- /// selectable by the V2-only reader.
57
+ /// backing filesystem cannot be inspected.
59
58
  #[non_exhaustive]
60
59
  #[derive(Clone, Debug, Eq, PartialEq)]
61
60
  pub struct MmapArtifactSnapshot {
62
61
  pub state: MmapArtifactState,
63
- /// Format of the linked legacy or committed artifact. Unavailable or
62
+ /// Format of the committed artifact. Unavailable or
64
63
  /// invalid artifacts report `None`.
65
64
  pub format_version: Option<u32>,
65
+ /// Retained for source compatibility. Always `None`; V1 artifacts are no
66
+ /// longer inspected or included in linked file totals.
66
67
  pub v1_bytes: Option<u64>,
67
68
  pub v2_bytes: Option<u64>,
68
69
  pub manifest_bytes: Option<u64>,
@@ -80,22 +81,15 @@ impl InternedStore {
80
81
  ///
81
82
  /// V2 state uses the same committed-manifest identity validation as
82
83
  /// `preload_mmap`. The snapshot is informational and does not map or parse
83
- /// either archived config payload.
84
+ /// the archived config payload.
84
85
  pub fn inspect_mmap_artifact(sdk_key: &str) -> Result<MmapArtifactSnapshot, StatsigErr> {
85
- let v1_path = legacy_mmap_v1_path_for_sdk_key(sdk_key);
86
86
  let v2_path = mmap_v2_path_for_sdk_key(sdk_key);
87
87
  let manifest_path = mmap_manifest_path_for_sdk_key(sdk_key);
88
88
 
89
- let publication = inspect_mmap_v2_publication(&manifest_path, &v1_path, &v2_path)?;
90
- let v1_metadata = metadata_if_linked(&v1_path)?;
89
+ let publication = inspect_mmap_v2_publication(&manifest_path, &v2_path)?;
91
90
  let manifest_metadata = metadata_if_linked(&manifest_path)?;
92
91
 
93
92
  let (state, format_version, committed_v2_metadata) = match publication {
94
- MmapV2Publication::Absent if v1_metadata.is_some() => (
95
- MmapArtifactState::LegacyV1,
96
- Some(LEGACY_MMAP_FORMAT_VERSION),
97
- None,
98
- ),
99
93
  MmapV2Publication::Absent => (MmapArtifactState::Missing, None, None),
100
94
  MmapV2Publication::Committed(file) => {
101
95
  let metadata = file
@@ -108,11 +102,6 @@ impl InternedStore {
108
102
  )
109
103
  }
110
104
  MmapV2Publication::Incomplete => (MmapArtifactState::IncompleteV2, None, None),
111
- MmapV2Publication::Invalid(_) if v1_metadata.is_some() => (
112
- MmapArtifactState::FallbackV1,
113
- Some(LEGACY_MMAP_FORMAT_VERSION),
114
- None,
115
- ),
116
105
  MmapV2Publication::Invalid(_) => (MmapArtifactState::Invalid, None, None),
117
106
  };
118
107
 
@@ -120,26 +109,22 @@ impl InternedStore {
120
109
  Some(metadata) => Some(metadata),
121
110
  None => metadata_if_linked(&v2_path)?,
122
111
  };
123
- let v1_bytes = v1_metadata.as_ref().map(Metadata::len);
124
112
  let v2_bytes = v2_metadata.as_ref().map(Metadata::len);
125
113
  let manifest_bytes = manifest_metadata.as_ref().map(Metadata::len);
126
- let total_linked_bytes = [v1_bytes, v2_bytes, manifest_bytes]
114
+ let total_linked_bytes = [v2_bytes, manifest_bytes]
127
115
  .into_iter()
128
116
  .flatten()
129
117
  .fold(0_u64, u64::saturating_add);
130
- let linked_file_count = [v1_bytes, v2_bytes, manifest_bytes]
118
+ let linked_file_count = [v2_bytes, manifest_bytes]
131
119
  .into_iter()
132
120
  .filter(Option::is_some)
133
121
  .count() as u64;
134
- let newest_linked_modified_unix_seconds = [
135
- v1_metadata.as_ref(),
136
- v2_metadata.as_ref(),
137
- manifest_metadata.as_ref(),
138
- ]
139
- .into_iter()
140
- .flatten()
141
- .filter_map(modified_unix_seconds)
142
- .max();
122
+ let newest_linked_modified_unix_seconds =
123
+ [v2_metadata.as_ref(), manifest_metadata.as_ref()]
124
+ .into_iter()
125
+ .flatten()
126
+ .filter_map(modified_unix_seconds)
127
+ .max();
143
128
  let (filesystem_capacity_bytes, filesystem_available_bytes) = manifest_path
144
129
  .parent()
145
130
  .map(filesystem_space)
@@ -148,7 +133,7 @@ impl InternedStore {
148
133
  Ok(MmapArtifactSnapshot {
149
134
  state,
150
135
  format_version,
151
- v1_bytes,
136
+ v1_bytes: None,
152
137
  v2_bytes,
153
138
  manifest_bytes,
154
139
  total_linked_bytes,