oai-statsig-python-core 0.34.0rc2__tar.gz → 0.34.0rc4__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.

Potentially problematic release.


This version of oai-statsig-python-core might be problematic. Click here for more details.

Files changed (490) hide show
  1. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/Cargo.lock +5 -5
  2. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/Cargo.toml +1 -1
  3. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/PKG-INFO +9 -4
  4. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/statsig_python_core.pyi +2 -2
  5. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/typed_config.py +1 -1
  6. {oai_statsig_python_core-0.34.0rc2/statsig-pyo3 → oai_statsig_python_core-0.34.0rc4/statsig-grpc}/README.md +8 -3
  7. {oai_statsig_python_core-0.34.0rc2/statsig-grpc → oai_statsig_python_core-0.34.0rc4/statsig-pyo3}/README.md +8 -3
  8. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/statsig_options_py.rs +1 -1
  9. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_typed_config.py +42 -1
  10. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/Cargo.toml +1 -1
  11. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/__tests__/statsig_options_tests.rs +3 -3
  12. oai_statsig_python_core-0.34.0rc4/statsig-rust/src/id_lists_adapter/id_list_fallback_range_tests.rs +252 -0
  13. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_list_propagation.rs +2 -1
  14. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/statsig_http_id_lists_adapter.rs +117 -19
  15. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/__tests__/net_provider_reqwest_http2_tests.rs +13 -8
  16. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/__tests__/network_client_http2_tests.rs +3 -3
  17. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/http2.rs +1 -1
  18. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/proto_stream_reader.rs +7 -5
  19. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_options.rs +2 -2
  20. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/__init__.py +0 -0
  21. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/_frozen_json.py +0 -0
  22. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/data_store.py +0 -0
  23. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/error_boundary.py +0 -0
  24. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/evaluation_cache.py +0 -0
  25. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/event_logging_adapter.py +0 -0
  26. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/observability_client.py +0 -0
  27. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/output_logger_provider.py +0 -0
  28. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/persistent_storage.py +0 -0
  29. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/py.typed +0 -0
  30. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/requirements.txt +0 -0
  31. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/statsig.py +0 -0
  32. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/py_src/statsig_python_core/statsig_types.py +0 -0
  33. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/pyproject.toml +0 -0
  34. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-grpc/Cargo.toml +0 -0
  35. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-grpc/build.rs +0 -0
  36. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-grpc/src/lib.rs +0 -0
  37. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-grpc/src/mock_forward_proxy.rs +0 -0
  38. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-grpc/src/protos/statsig_forward_proxy.proto +0 -0
  39. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-grpc/src/statsig_forward_proxy.rs +0 -0
  40. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-grpc/src/statsig_grpc_client.rs +0 -0
  41. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-grpc/src/statsig_grpc_err.rs +0 -0
  42. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/.github/workflows/CI.yml +0 -0
  43. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/.gitignore +0 -0
  44. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/Cargo.toml +0 -0
  45. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/benchmarks/dynamic_config_value_cache_benchmark.py +0 -0
  46. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/benchmarks/native_context_allocations.c +0 -0
  47. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/benchmarks/native_context_benchmark.py +0 -0
  48. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/benchmarks/summarize_native_context_allocations.py +0 -0
  49. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/benchmarks/user_creation_benchmark.py +0 -0
  50. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/benchmarks/user_memory_benchmark.py +0 -0
  51. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/benchmarks/wrapper_native_context_benchmark.py +0 -0
  52. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/requirements-typing.txt +0 -0
  53. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/bin/stub_gen.rs +0 -0
  54. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/data_store_base_py.rs +0 -0
  55. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/event_logging_adapter_base_py.rs +0 -0
  56. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/interned_store_py.rs +0 -0
  57. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/lib.rs +0 -0
  58. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/observability_client_base_py.rs +0 -0
  59. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/output_logger_provider_base_py.rs +0 -0
  60. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/pyo_utils.rs +0 -0
  61. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/raw_evaluation_compat_py.rs +0 -0
  62. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/safe_gil.rs +0 -0
  63. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/statsig_base_py.rs +0 -0
  64. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/statsig_metadata_py.rs +0 -0
  65. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/statsig_persistent_storage_override_adapter_py.rs +0 -0
  66. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/statsig_types_py.rs +0 -0
  67. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/statsig_user_context_py.rs +0 -0
  68. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/statsig_user_py.rs +0 -0
  69. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/typed_config_py/tests.rs +0 -0
  70. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/typed_config_py.rs +0 -0
  71. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/unit_id_py.rs +0 -0
  72. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/src/valid_primitives_py.rs +0 -0
  73. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/event_listener_reentrancy_subprocess.py +0 -0
  74. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/fork_callback_runner.py +0 -0
  75. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/fork_runner.py +0 -0
  76. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/mock_output_logger.py +0 -0
  77. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/mock_scrapi.py +0 -0
  78. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/profile_util.py +0 -0
  79. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/shutdown_sub_proc.py +0 -0
  80. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_bulk_evaluate_gcir_parity.py +0 -0
  81. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_data_store.py +0 -0
  82. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_error_boundary.py +0 -0
  83. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_evaluation_cache.py +0 -0
  84. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_evaluation_cache_integration.py +0 -0
  85. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_evaluation_cache_pyo3.py +0 -0
  86. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_event_logging_adapter.py +0 -0
  87. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_experiment_group_targeting_exposures.py +0 -0
  88. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_experiment_serialization.py +0 -0
  89. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_exposure_logging.py +0 -0
  90. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_feature_gate_parts.py +0 -0
  91. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_feature_gate_serialization.py +0 -0
  92. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_fork_callback.py +0 -0
  93. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_forking.py +0 -0
  94. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_frozen_json.py +0 -0
  95. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_get_dynamic_config.py +0 -0
  96. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_id_list_updates.py +0 -0
  97. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_initialize_with_details.py +0 -0
  98. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_interned_store_preload.py +0 -0
  99. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_layer_param_exposure_sampling.py +0 -0
  100. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_layer_serialization.py +0 -0
  101. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_native_context_allocations.py +0 -0
  102. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_native_context_benchmark.py +0 -0
  103. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_native_user_context.py +0 -0
  104. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_observability_client.py +0 -0
  105. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_output_logger_gc.py +0 -0
  106. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_output_logger_provider.py +0 -0
  107. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_override_adapter.py +0 -0
  108. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_partial_rollout_boost.py +0 -0
  109. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_performance.py +0 -0
  110. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_sdk_event_emitter.py +0 -0
  111. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_sec_expo_as_primary.py +0 -0
  112. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_shared_statsig.py +0 -0
  113. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_shutdown.py +0 -0
  114. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_statsig.py +0 -0
  115. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_statsig_options.py +0 -0
  116. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_statsig_user.py +0 -0
  117. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_statsig_user_json_serialization.py +0 -0
  118. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_statsig_user_none_fields.py +0 -0
  119. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_statsig_user_pickle.py +0 -0
  120. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_typed_config_native.py +0 -0
  121. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/test_user_exposure_e2e.py +0 -0
  122. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/tests/utils.py +0 -0
  123. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-pyo3/typing_tests/typed_config.py +0 -0
  124. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/benches/evaluation/case_sensitive_target_bench.rs +0 -0
  125. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/build.rs +0 -0
  126. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/resources/ip_supalite.table +0 -0
  127. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/resources/ua_parser_regex.yaml +0 -0
  128. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/resources/ua_parser_regex_lite.yaml +0 -0
  129. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/__tests__/interned_string_tests.rs +0 -0
  130. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/__tests__/mod.rs +0 -0
  131. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/__tests__/spec_store_tests.rs +0 -0
  132. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/__tests__/user_value_tests.rs +0 -0
  133. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/compression/compression_helper.rs +0 -0
  134. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/compression/mod.rs +0 -0
  135. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/console_capture/console_capture_handler.rs +0 -0
  136. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/console_capture/console_capture_instances.rs +0 -0
  137. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/console_capture/console_capture_options.rs +0 -0
  138. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/console_capture/console_log_line_levels.rs +0 -0
  139. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/console_capture/mod.rs +0 -0
  140. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/data_store_interface.rs +0 -0
  141. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/dcs_str.rs +0 -0
  142. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/__tests__/array_optimization_bench.rs +0 -0
  143. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/__tests__/array_optimization_tests.rs +0 -0
  144. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/__tests__/case_sensitive_target_spellings_tests.rs +0 -0
  145. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/__tests__/dynamic_returnable_tests.rs +0 -0
  146. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/__tests__/mod.rs +0 -0
  147. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/__tests__/rkyv_value_tests.rs +0 -0
  148. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/cmab_evaluator.rs +0 -0
  149. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/comparisons/compare_arrays.rs +0 -0
  150. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/comparisons/compare_case_sensitive_strings_in_array.rs +0 -0
  151. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/comparisons/compare_numbers.rs +0 -0
  152. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/comparisons/compare_str_with_regex.rs +0 -0
  153. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/comparisons/compare_strings_in_array.rs +0 -0
  154. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/comparisons/compare_time.rs +0 -0
  155. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/comparisons/compare_versions.rs +0 -0
  156. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/comparisons/mod.rs +0 -0
  157. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/country_lookup.rs +0 -0
  158. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/dynamic_returnable.rs +0 -0
  159. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/dynamic_string.rs +0 -0
  160. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/dynamic_value.rs +0 -0
  161. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluation_data.rs +0 -0
  162. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluation_details.rs +0 -0
  163. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluation_types.rs +0 -0
  164. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluation_types_initialize_v2.rs +0 -0
  165. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluation_types_v2.rs +0 -0
  166. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluator.rs +0 -0
  167. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluator_context.rs +0 -0
  168. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluator_result.rs +0 -0
  169. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/evaluator_value.rs +0 -0
  170. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/get_unit_id.rs +0 -0
  171. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/mod.rs +0 -0
  172. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/rkyv_value.rs +0 -0
  173. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/secondary_exposure_key.rs +0 -0
  174. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/first_party_ua_parser.rs +0 -0
  175. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/mod.rs +0 -0
  176. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/mod.rs +0 -0
  177. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_helpers.rs +0 -0
  178. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer.rs +0 -0
  179. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer_performance.rs +0 -0
  180. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_browser.rs +0 -0
  181. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_os.rs +0 -0
  182. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/mod.rs +0 -0
  183. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/tokenizer.rs +0 -0
  184. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/ua_parser.rs +0 -0
  185. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/window_iter.rs +0 -0
  186. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/third_party_ua_parser.rs +0 -0
  187. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation/user_agent_parsing/ua_parser.rs +0 -0
  188. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/evaluation_fixture_client.rs +0 -0
  189. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_emitter/statsig_event_emitter_tests.rs +0 -0
  190. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/delayed_exposure_store.rs +0 -0
  191. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_logger.rs +0 -0
  192. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_logger_constants.rs +0 -0
  193. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_logger_ops_stats.rs +0 -0
  194. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/batch.rs +0 -0
  195. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/mod.rs +0 -0
  196. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queue.rs +0 -0
  197. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queued_config_expo.rs +0 -0
  198. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queued_event.rs +0 -0
  199. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queued_experiment_expo.rs +0 -0
  200. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queued_expo.rs +0 -0
  201. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queued_gate_expo.rs +0 -0
  202. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queued_layer_param_expo.rs +0 -0
  203. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queued_passthrough.rs +0 -0
  204. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/event_queue/queued_secondary_expo.rs +0 -0
  205. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/exposure_sampling.rs +0 -0
  206. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/exposure_utils.rs +0 -0
  207. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/flush_interval.rs +0 -0
  208. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/flush_type.rs +0 -0
  209. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/mod.rs +0 -0
  210. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/sec_expo_as_primary_experiment.rs +0 -0
  211. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/statsig_event.rs +0 -0
  212. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging/statsig_event_internal.rs +0 -0
  213. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging_adapter/event_logging_adapter_trait.rs +0 -0
  214. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging_adapter/log_event_payload.rs +0 -0
  215. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging_adapter/mod.rs +0 -0
  216. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging_adapter/statsig_http_event_logging_adapter.rs +0 -0
  217. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/event_logging_adapter/statsig_local_file_event_logging_adapter.rs +0 -0
  218. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/dynamic_configs_processor.rs +0 -0
  219. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/evaluation_plan.rs +0 -0
  220. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/feature_gates_processor.rs +0 -0
  221. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/gcir_formatter.rs +0 -0
  222. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/gcir_options.rs +0 -0
  223. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/gcir_process_iter.rs +0 -0
  224. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/layer_configs_processor.rs +0 -0
  225. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/mod.rs +0 -0
  226. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/param_stores_processor.rs +0 -0
  227. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/secondary_exposure_hashing.rs +0 -0
  228. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/stringify_sec_exposures.rs +0 -0
  229. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/target_app_id_utils.rs +0 -0
  230. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/gcir/timing.rs +0 -0
  231. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/global_configs.rs +0 -0
  232. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/hashing/ahash.rs +0 -0
  233. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/hashing/djb2.rs +0 -0
  234. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/hashing/hash_util.rs +0 -0
  235. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/hashing/memo_sha_256.rs +0 -0
  236. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/hashing/mod.rs +0 -0
  237. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/compact_id_list_tests.rs +0 -0
  238. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_list.rs +0 -0
  239. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_list_cursor_tests.rs +0 -0
  240. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_list_download_concurrency_tests.rs +0 -0
  241. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_list_ids.rs +0 -0
  242. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_list_propagation_tests.rs +0 -0
  243. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_lists_adapter_trait.rs +0 -0
  244. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_lists_memory_benchmark.rs +0 -0
  245. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/id_lists_refresh_tests.rs +0 -0
  246. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/id_lists_adapter/mod.rs +0 -0
  247. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/init_details.rs +0 -0
  248. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/initialize_evaluations_response.rs +0 -0
  249. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/initialize_response.rs +0 -0
  250. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/initialize_v2_response.rs +0 -0
  251. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/instance_registry.rs +0 -0
  252. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_string.rs +0 -0
  253. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/__tests__/interned_store_eval_value_tests.rs +0 -0
  254. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_fetch_tests.rs +0 -0
  255. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_v2_tests.rs +0 -0
  256. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/__tests__/interned_store_preload_remote_tests.rs +0 -0
  257. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/__tests__/interned_store_returnable_tests.rs +0 -0
  258. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/__tests__/interned_store_string_tests.rs +0 -0
  259. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/__tests__/mod.rs +0 -0
  260. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/interned_store/mmap_artifact.rs +0 -0
  261. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/interned_store/mmap_manifest.rs +0 -0
  262. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/interned_store/mmap_reader/materialize.rs +0 -0
  263. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/interned_store/mmap_reader/memory.rs +0 -0
  264. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/interned_store/mmap_reader.rs +0 -0
  265. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/interned_store/mmap_writer.rs +0 -0
  266. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/interned_store.rs +0 -0
  267. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/mmap_data_v2/evaluator_value.rs +0 -0
  268. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/mmap_data_v2/spec.rs +0 -0
  269. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/mmap_data_v2/spec_content_hash.rs +0 -0
  270. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/mmap_data_v2.rs +0 -0
  271. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/mmap_sync.rs +0 -0
  272. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/interned_values/mod.rs +0 -0
  273. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/lib.rs +0 -0
  274. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/logging_utils.rs +0 -0
  275. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/macros.rs +0 -0
  276. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/__tests__/http2_test_helpers.rs +0 -0
  277. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/__tests__/mod.rs +0 -0
  278. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/__tests__/network_client_latency_tests.rs +0 -0
  279. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/__tests__/response_data_tests.rs +0 -0
  280. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/http_types.rs +0 -0
  281. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/mod.rs +0 -0
  282. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/network_client.rs +0 -0
  283. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/network_error.rs +0 -0
  284. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/providers/mod.rs +0 -0
  285. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/providers/net_provider_global.rs +0 -0
  286. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/providers/net_provider_noop.rs +0 -0
  287. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/providers/net_provider_reqwest.rs +0 -0
  288. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/proxy_config.rs +0 -0
  289. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/networking/statsig_url.rs +0 -0
  290. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/observability/console_capture_observer.rs +0 -0
  291. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/observability/diagnostics_observer.rs +0 -0
  292. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/observability/mod.rs +0 -0
  293. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/observability/observability_client_adapter.rs +0 -0
  294. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/observability/ops_stats.rs +0 -0
  295. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/observability/sdk_errors_observer.rs +0 -0
  296. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/output_logger.rs +0 -0
  297. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/output_policy.rs +0 -0
  298. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/override_adapter/mod.rs +0 -0
  299. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/override_adapter/override_adapter_trait.rs +0 -0
  300. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/override_adapter/statsig_local_override_adapter.rs +0 -0
  301. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/persistent_storage/__tests__/mod.rs +0 -0
  302. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/persistent_storage/__tests__/sticky_values_serialization_tests.rs +0 -0
  303. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/persistent_storage/mod.rs +0 -0
  304. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/persistent_storage/persistent_storage_trait.rs +0 -0
  305. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/persistent_storage/persistent_values_manager.rs +0 -0
  306. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/scoped_evaluation_request.rs +0 -0
  307. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/scoped_id_list_membership_service.rs +0 -0
  308. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/scoped_snapshot_registry.rs +0 -0
  309. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/sdk_diagnostics/diagnostics.rs +0 -0
  310. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/sdk_diagnostics/diagnostics_utils.rs +0 -0
  311. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/sdk_diagnostics/marker.rs +0 -0
  312. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/sdk_diagnostics/mod.rs +0 -0
  313. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/sdk_event_emitter/event_emitter.rs +0 -0
  314. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/sdk_event_emitter/event_emitter_tests.rs +0 -0
  315. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/sdk_event_emitter/event_types.rs +0 -0
  316. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/sdk_event_emitter/mod.rs +0 -0
  317. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/snapshot_evaluation_session.rs +0 -0
  318. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/spec_store.rs +0 -0
  319. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/__tests__/hydration_phase_tests.rs +0 -0
  320. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/__tests__/remote_config_value_hydrator_tests.rs +0 -0
  321. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/config_spec_background_sync_metrics.rs +0 -0
  322. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/mod.rs +0 -0
  323. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/download.rs +0 -0
  324. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/errors.rs +0 -0
  325. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/json.rs +0 -0
  326. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/metadata.rs +0 -0
  327. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/mod.rs +0 -0
  328. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/protobuf.rs +0 -0
  329. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/telemetry.rs +0 -0
  330. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/response_format.rs +0 -0
  331. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/scoped_source_specs_adapter.rs +0 -0
  332. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/specs_adapter_trait.rs +0 -0
  333. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/statsig_bootstrap_specs_adapter.rs +0 -0
  334. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/statsig_customized_specs_adapter.rs +0 -0
  335. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/statsig_data_store_specs_adapter.rs +0 -0
  336. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/statsig_grpc_specs_adapter.rs +0 -0
  337. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/statsig_http_specs_adapter.rs +0 -0
  338. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_adapter/statsig_local_file_specs_adapter.rs +0 -0
  339. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/__tests__/mod.rs +0 -0
  340. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/__tests__/proto_specs_syncing_tests.rs +0 -0
  341. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/__tests__/proto_specs_tests.rs +0 -0
  342. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/__tests__/proto_specs_unknown_tests.rs +0 -0
  343. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/__tests__/proto_specs_vs_json_tests.rs +0 -0
  344. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/__tests__/proto_stream_reader_tests.rs +0 -0
  345. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/cmab_types.rs +0 -0
  346. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/explicit_params.rs +0 -0
  347. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/mod.rs +0 -0
  348. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/param_store_types.rs +0 -0
  349. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/parse_options.rs +0 -0
  350. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/proto_compression.rs +0 -0
  351. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/proto_specs/parser.rs +0 -0
  352. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/proto_specs.rs +0 -0
  353. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/spec_types.rs +0 -0
  354. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/specs_hash_map.rs +0 -0
  355. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/specs_response/statsig_config_specs.rs +0 -0
  356. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig/typed_config_tests.rs +0 -0
  357. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig.rs +0 -0
  358. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_core_api_options.rs +0 -0
  359. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_err.rs +0 -0
  360. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_global.rs +0 -0
  361. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_metadata.rs +0 -0
  362. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_runtime.rs +0 -0
  363. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_type_factories.rs +0 -0
  364. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_types.rs +0 -0
  365. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/statsig_types_raw.rs +0 -0
  366. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/typed_config/tests.rs +0 -0
  367. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/typed_config.rs +0 -0
  368. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/fast_statsig_user.rs +0 -0
  369. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/into_optional.rs +0 -0
  370. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/mod.rs +0 -0
  371. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/prepared_user.rs +0 -0
  372. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/random_user_id.rs +0 -0
  373. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/statsig_user.rs +0 -0
  374. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/statsig_user_builder.rs +0 -0
  375. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/statsig_user_internal.rs +0 -0
  376. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/statsig_user_loggable.rs +0 -0
  377. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/unit_id.rs +0 -0
  378. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/user_data.rs +0 -0
  379. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/user/user_value.rs +0 -0
  380. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/utils/mod.rs +0 -0
  381. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/utils/random.rs +0 -0
  382. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/src/value_parsing.rs +0 -0
  383. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/check_gate_tests.rs +0 -0
  384. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/customized_specs_adapter_tests.rs +0 -0
  385. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/big_number_dcs.json +0 -0
  386. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/check_gate_perf_dcs.json +0 -0
  387. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/company_id_list +0 -0
  388. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/dcs_error.json +0 -0
  389. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/dcs_missing_gates.json +0 -0
  390. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/dcs_non_case_sensitive.json +0 -0
  391. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/dcs_user_agent_versions.json +0 -0
  392. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/dcs_with_analytical_exposure_sampling.json +0 -0
  393. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/dcs_with_checksum.json +0 -0
  394. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/dcs_with_sampling.json +0 -0
  395. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/dcs_with_sdk_configs.json +0 -0
  396. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/demo_proj_dcs.json +0 -0
  397. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/demo_proj_dcs.pb.br +0 -0
  398. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/eval_proj_dcs.json +0 -0
  399. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/eval_proj_dcs.pb.br +0 -0
  400. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/experiment_group_condition.pb.br +0 -0
  401. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/get_id_lists.json +0 -0
  402. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/perf_proj_dcs.json +0 -0
  403. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/perf_proj_dcs.pb.br +0 -0
  404. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/shared_dict_dict_only.json +0 -0
  405. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/shared_dict_original_dcs.json +0 -0
  406. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/shared_dict_response_uncompressed.json +0 -0
  407. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/shared_dict_response_with_dict.json +0 -0
  408. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/shared_dict_response_without_dict.json +0 -0
  409. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/test_must_pass_user_agents.txt +0 -0
  410. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/test_user_agents.txt +0 -0
  411. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/ua_string_cases.json +0 -0
  412. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data/unknown_enum.pb.br +0 -0
  413. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data_store_bytes_adapter_tests.rs +0 -0
  414. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data_store_json_bytes_tests.rs +0 -0
  415. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data_store_json_only_no_bytes_methods_tests.rs +0 -0
  416. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data_store_lock_tests.rs +0 -0
  417. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/data_store_proto_bytes_tests.rs +0 -0
  418. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/delayed_exposure_bench.rs +0 -0
  419. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/direct_gcir_tests.rs +0 -0
  420. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/dynamic_string_tests.rs +0 -0
  421. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/dynamic_value_tests.rs +0 -0
  422. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/evaluation_details_tests.rs +0 -0
  423. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/evaluator_value_tests.rs +0 -0
  424. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/event_logger_failing_flush_tests.rs +0 -0
  425. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/event_logger_flush_tests.rs +0 -0
  426. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/event_logger_high_qps_tests.rs +0 -0
  427. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/event_logger_usage_tests.rs +0 -0
  428. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/expected_evaluation_tests.rs +0 -0
  429. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/exposure_sampling_key_tests.rs +0 -0
  430. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/exposure_tests.rs +0 -0
  431. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/flushing_tests.rs +0 -0
  432. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/fork_random.rs +0 -0
  433. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/gate_inversion_eval_tests.rs +0 -0
  434. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/gcir_plan_expansion_bench.rs +0 -0
  435. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/gcir_tests.rs +0 -0
  436. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/global_configs_test.rs +0 -0
  437. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/grpc_specs_adapter_tests.rs +0 -0
  438. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/hash_util_evaluation_hash_tests.rs +0 -0
  439. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/http_specs_adapter_tests.rs +0 -0
  440. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/id_list_storage_api_tests.rs +0 -0
  441. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/initialize_timeout_test.rs +0 -0
  442. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/instance_registry_tests.rs +0 -0
  443. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/interner_contention_bench.rs +0 -0
  444. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/layer_serialization_tests.rs +0 -0
  445. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/list_methods_tests.rs +0 -0
  446. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/network_client_streaming_tests.rs +0 -0
  447. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/network_client_tests.rs +0 -0
  448. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/network_failure_tests.rs +0 -0
  449. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/observability_client_usage_tests.rs +0 -0
  450. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/output_logger_reentrancy_tests.rs +0 -0
  451. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/output_logger_tests.rs +0 -0
  452. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/override_adapter_tests.rs +0 -0
  453. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/perf_tests.rs +0 -0
  454. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/proto_specs_usage_tests.rs +0 -0
  455. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/protobuf_copy_bench.rs +0 -0
  456. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/remote_config_preload_hydration_tests.rs +0 -0
  457. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/remote_config_value_hydration_tests.rs +0 -0
  458. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/spec_store_lock_tests.rs +0 -0
  459. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/spec_types_tests.rs +0 -0
  460. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_disable_network_tests.rs +0 -0
  461. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_environment_tests.rs +0 -0
  462. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_event_emitter_usage_test.rs +0 -0
  463. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_global_tests.rs +0 -0
  464. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_local_file_event_logging_adapter_tests.rs +0 -0
  465. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_local_file_specs_adapter_tests.rs +0 -0
  466. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_options_tests.rs +0 -0
  467. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_shared_tests.rs +0 -0
  468. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_tests.rs +0 -0
  469. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_user_builder_tests.rs +0 -0
  470. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_user_field_accessor_tests.rs +0 -0
  471. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_user_internal_tests.rs +0 -0
  472. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_user_loggable_tests.rs +0 -0
  473. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/statsig_user_tests.rs +0 -0
  474. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/substring_search_bench.rs +0 -0
  475. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/syncing_network_failure_tests.rs +0 -0
  476. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/typed_getters_tests.rs +0 -0
  477. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/ua_parser_util_test.rs +0 -0
  478. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/user_agent_tests_first_party.rs +0 -0
  479. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/user_json_tests.rs +0 -0
  480. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/env_var_guard.rs +0 -0
  481. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/helpers.rs +0 -0
  482. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/mock_data_store.rs +0 -0
  483. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/mock_event_logging_adapter.rs +0 -0
  484. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/mock_log_provider.rs +0 -0
  485. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/mock_observability_client.rs +0 -0
  486. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/mock_scrapi.rs +0 -0
  487. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/mock_specs_adapter.rs +0 -0
  488. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/mock_specs_listener.rs +0 -0
  489. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/statsig-rust/tests/utils/mod.rs +0 -0
  490. {oai_statsig_python_core-0.34.0rc2 → oai_statsig_python_core-0.34.0rc4}/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.34.0-rc.2"
1856
+ version = "0.34.0-rc.4"
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.34.0-rc.2"
1872
+ version = "0.34.0-rc.4"
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.34.0-rc.2"
3105
+ version = "0.34.0-rc.4"
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.34.0-rc.2"
3120
+ version = "0.34.0-rc.4"
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.34.0-rc.2"
3135
+ version = "0.34.0-rc.4"
3136
3136
  dependencies = [
3137
3137
  "async-trait",
3138
3138
  "cbindgen",
@@ -26,7 +26,7 @@ exclude = [
26
26
  [workspace.package]
27
27
  edition = "2021"
28
28
  license = "ISC"
29
- version = "0.34.0-rc.2"
29
+ version = "0.34.0-rc.4"
30
30
  homepage = "https://statsig.com/"
31
31
  authors = ["Statsig", "Daniel Loomb <daniel@statsig.com>"]
32
32
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oai_statsig_python_core
3
- Version: 0.34.0rc2
3
+ Version: 0.34.0rc4
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -67,9 +67,14 @@ explicit `:443`. Fallback sends no request or SDK credentials to other manifest
67
67
  origins; the original request error is returned. Fallback does not follow redirects.
68
68
  Custom network providers must implement `send_without_redirects`; otherwise the
69
69
  fallback returns an error without sending a request. Fallback preserves the URL's
70
- path and query, the file identity, and the byte offset for incremental updates.
71
- Each destination uses its own range protocol: a `range` query for the OpenAI CDN, or `Range` and
72
- `statsig-id-list-file-size` headers for other hosts.
70
+ path and query except for legacy `range` parameters. It sends `Range`,
71
+ `statsig-id-list-file-size`, and `Accept-Encoding: identity` headers, preserving
72
+ the file identity and byte offset for incremental updates. A `206` response must
73
+ have a valid `Content-Range` matching the requested offset and cover the advertised
74
+ file size. If the CDN returns a full `200` response, the SDK applies only the bytes
75
+ after that offset. Stale or inconsistent responses use the remaining retry budget
76
+ without publishing the refresh. Direct CDN downloads that do not use fallback
77
+ retain the existing `range` query protocol.
73
78
 
74
79
  Set `fallback_to_statsig_api` to `Some(false)` or leave it unset to keep file
75
80
  downloads strictly on the selected destination. There is no second attempt when
@@ -359,12 +359,12 @@ class StatsigOptions:
359
359
  @property
360
360
  def prefer_http2(self) -> typing.Optional[builtins.bool]:
361
361
  r"""
362
- Prefer HTTP/2 while allowing HTTP/1.1. Unset enables it; False restores the existing transport.
362
+ Prefer HTTP/2 while allowing HTTP/1.1. Disabled by default; True opts in.
363
363
  """
364
364
  @prefer_http2.setter
365
365
  def prefer_http2(self, value: typing.Optional[builtins.bool]) -> None:
366
366
  r"""
367
- Prefer HTTP/2 while allowing HTTP/1.1. Unset enables it; False restores the existing transport.
367
+ Prefer HTTP/2 while allowing HTTP/1.1. Disabled by default; True opts in.
368
368
  """
369
369
  @property
370
370
  def event_logging_flush_interval_ms(self) -> typing.Optional[builtins.int]: ...
@@ -122,7 +122,7 @@ class _TypedConfigs:
122
122
  from google.protobuf.json_format import ParseDict
123
123
 
124
124
  try:
125
- value = ParseDict(raw["value"], message_type())
125
+ value = ParseDict(raw["value"], message_type(), ignore_unknown_fields=True)
126
126
  except Exception as error:
127
127
  raise TypedConfigConversionError(
128
128
  f"Failed to convert typed config {name!r}"
@@ -45,9 +45,14 @@ explicit `:443`. Fallback sends no request or SDK credentials to other manifest
45
45
  origins; the original request error is returned. Fallback does not follow redirects.
46
46
  Custom network providers must implement `send_without_redirects`; otherwise the
47
47
  fallback returns an error without sending a request. Fallback preserves the URL's
48
- path and query, the file identity, and the byte offset for incremental updates.
49
- Each destination uses its own range protocol: a `range` query for the OpenAI CDN, or `Range` and
50
- `statsig-id-list-file-size` headers for other hosts.
48
+ path and query except for legacy `range` parameters. It sends `Range`,
49
+ `statsig-id-list-file-size`, and `Accept-Encoding: identity` headers, preserving
50
+ the file identity and byte offset for incremental updates. A `206` response must
51
+ have a valid `Content-Range` matching the requested offset and cover the advertised
52
+ file size. If the CDN returns a full `200` response, the SDK applies only the bytes
53
+ after that offset. Stale or inconsistent responses use the remaining retry budget
54
+ without publishing the refresh. Direct CDN downloads that do not use fallback
55
+ retain the existing `range` query protocol.
51
56
 
52
57
  Set `fallback_to_statsig_api` to `Some(false)` or leave it unset to keep file
53
58
  downloads strictly on the selected destination. There is no second attempt when
@@ -45,9 +45,14 @@ explicit `:443`. Fallback sends no request or SDK credentials to other manifest
45
45
  origins; the original request error is returned. Fallback does not follow redirects.
46
46
  Custom network providers must implement `send_without_redirects`; otherwise the
47
47
  fallback returns an error without sending a request. Fallback preserves the URL's
48
- path and query, the file identity, and the byte offset for incremental updates.
49
- Each destination uses its own range protocol: a `range` query for the OpenAI CDN, or `Range` and
50
- `statsig-id-list-file-size` headers for other hosts.
48
+ path and query except for legacy `range` parameters. It sends `Range`,
49
+ `statsig-id-list-file-size`, and `Accept-Encoding: identity` headers, preserving
50
+ the file identity and byte offset for incremental updates. A `206` response must
51
+ have a valid `Content-Range` matching the requested offset and cover the advertised
52
+ file size. If the CDN returns a full `200` response, the SDK applies only the bytes
53
+ after that offset. Stale or inconsistent responses use the remaining retry budget
54
+ without publishing the refresh. Direct CDN downloads that do not use fallback
55
+ retain the existing `range` query protocol.
51
56
 
52
57
  Set `fallback_to_statsig_api` to `Some(false)` or leave it unset to keep file
53
58
  downloads strictly on the selected destination. There is no second attempt when
@@ -128,7 +128,7 @@ pub struct StatsigOptionsPy {
128
128
  pub disable_network: Option<bool>,
129
129
  #[pyo3(get, set)]
130
130
  pub log_event_connection_reuse: Option<bool>,
131
- /// Prefer HTTP/2 while allowing HTTP/1.1. Unset enables it; False restores the existing transport.
131
+ /// Prefer HTTP/2 while allowing HTTP/1.1. Disabled by default; True opts in.
132
132
  #[pyo3(get, set)]
133
133
  pub prefer_http2: Option<bool>,
134
134
  #[pyo3(get, set)]
@@ -274,9 +274,50 @@ def test_unavailable_never_substitutes_previous_value(sdk, payload_state):
274
274
  assert sdk.get().value == {}
275
275
 
276
276
 
277
+ def test_conversion_ignores_unknown_fields_and_enum_names(sdk):
278
+ sdk.raw = selected(
279
+ 2,
280
+ {
281
+ "number": 7,
282
+ "type": "NEW_UNKNOWN_ENUM_VALUE",
283
+ "newField": {"enabled": True},
284
+ "options": {"deprecated": True, "newNestedField": 42},
285
+ },
286
+ )
287
+
288
+ result = sdk.get(message_type=FieldDescriptorProto)
289
+
290
+ assert result.value == FieldDescriptorProto(number=7, options={"deprecated": True})
291
+ assert result.details.version == 2
292
+
293
+
294
+ def test_callback_conversion_ignores_unknown_fields(sdk):
295
+ callbacks = Queue()
296
+ sdk.raw = selected(1, {"number": 1, "newField": True})
297
+ sdk.register(callbacks.put, message_type=FieldDescriptorProto)
298
+ assert sdk._typed_configs.observers[0].revision == 1
299
+ assert callbacks.empty()
300
+
301
+ sdk.publish(
302
+ selected(
303
+ 2,
304
+ {
305
+ "number": 2,
306
+ "newField": True,
307
+ "options": {"deprecated": True, "newNestedField": 42},
308
+ },
309
+ )
310
+ )
311
+ result = callbacks.get(timeout=5)
312
+ assert result.value == FieldDescriptorProto(number=2, options={"deprecated": True})
313
+ assert result.details.version == 2
314
+ sdk.wait_for_observation()
315
+ assert sdk._typed_configs.observers[0].error is None
316
+
317
+
277
318
  def test_conversion_failure_is_explicit_with_cause_for_each_user(sdk):
278
319
  sdk.get()
279
- sdk.raw = selected(2, {"number": "invalid"})
320
+ sdk.raw = selected(2, {"number": "invalid", "newField": True})
280
321
  for user in (sdk.user, StatsigUser("other")):
281
322
  with pytest.raises(TypedConfigConversionError) as caught:
282
323
  sdk.get(user=user, message_type=FieldDescriptorProto)
@@ -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.34.0-rc.2", optional = true }
50
+ oai-statsig-grpc = { path = "../statsig-grpc", version = "0.34.0-rc.4", 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"] }
@@ -4,8 +4,8 @@ use crate::StatsigOptions;
4
4
  fn test_prefer_http2_supported_option() {
5
5
  use crate::networking::http2::http2_enabled;
6
6
 
7
- assert!(http2_enabled(None));
8
- assert!(http2_enabled(Some(&StatsigOptions::default())));
7
+ assert!(!http2_enabled(None));
8
+ assert!(!http2_enabled(Some(&StatsigOptions::default())));
9
9
  for enabled in [true, false] {
10
10
  let options = StatsigOptions::builder()
11
11
  .prefer_http2(Some(enabled))
@@ -22,7 +22,7 @@ fn test_prefer_http2_supported_option() {
22
22
  experimental_flags: Some(["prefer_http2".to_string()].into()),
23
23
  ..Default::default()
24
24
  };
25
- assert!(http2_enabled(Some(&old_flag_only)));
25
+ assert!(!http2_enabled(Some(&old_flag_only)));
26
26
  let explicit_off = StatsigOptions {
27
27
  prefer_http2: Some(false),
28
28
  ..old_flag_only
@@ -0,0 +1,252 @@
1
+ #[cfg(not(feature = "custom_network_provider"))]
2
+ use super::tests::{TestIdListsUpdateListener, with_local_cdn};
3
+ use super::*;
4
+ #[cfg(not(feature = "custom_network_provider"))]
5
+ use mockito::Server;
6
+
7
+ const CDN_FILE: &str =
8
+ "https://statsigcdn.openai.com/v1/download_id_list_file/company%2Fids?private=true";
9
+ #[cfg(not(feature = "custom_network_provider"))]
10
+ const PATH: &str = "/v1/download_id_list_file/company%2Fids?private=true";
11
+
12
+ #[test]
13
+ fn fallback_range_rejects_invalid_or_stale_responses() {
14
+ for (status, range, start, size, body) in [
15
+ (206, None, 3, 6, "+b\n"),
16
+ (206, Some("invalid"), 3, 6, "+b\n"),
17
+ (206, Some("bytes 0-2/6"), 3, 6, "+b\n"),
18
+ (206, Some("bytes 3-5/6"), 3, 6, "+b"),
19
+ (206, Some("bytes 3-5/5"), 3, 6, "+b\n"),
20
+ (206, Some("bytes 3-5/*"), 3, 6, "+b\n"),
21
+ (206, Some("bytes 3-5/6"), 3, 9, "+b\n"),
22
+ (206, Some("bytes 3-18446744073709551615/6"), 3, 6, "+b\n"),
23
+ (200, None, 3, 6, "+a\n"),
24
+ (200, None, 9, 6, "+a\n+b\n"),
25
+ (200, Some("bytes 3-5/6"), 3, 6, "+b\n"),
26
+ (200, None, 2, 4, "+é\n"),
27
+ (204, None, 0, 0, ""),
28
+ ] {
29
+ assert!(
30
+ normalize_fallback_download(Some(status), range, start, size, body.into()).is_err(),
31
+ "accepted {status} {range:?} at {start} for size {size}"
32
+ );
33
+ }
34
+ }
35
+
36
+ #[test]
37
+ fn fallback_range_handles_empty_files_and_growth_past_manifest() {
38
+ for (status, header, start, size, body, expected, end) in [
39
+ (200, None, 0, 0, "", "", 0),
40
+ (200, None, 0, 3, "+a\n+b\n", "+a\n+b\n", 6),
41
+ (200, None, 3, 6, "+a\n+b\n+c\n", "+b\n+c\n", 9),
42
+ (206, Some("bytes 3-8/9"), 3, 6, "+b\n+c\n", "+b\n+c\n", 9),
43
+ ] {
44
+ let (delta, range) =
45
+ normalize_fallback_download(Some(status), header, start, size, body.into()).unwrap();
46
+ assert_eq!(delta, expected);
47
+ assert_eq!(range, start..end);
48
+ }
49
+ }
50
+
51
+ #[test]
52
+ fn fallback_range_removes_legacy_query_ranges_without_losing_other_parameters() {
53
+ let request = StatsigHttpIdListsAdapter::id_list_file_request_args(
54
+ &format!("{CDN_FILE}&range=0-&token=a%2Bb&Range=10-"),
55
+ 17,
56
+ 42,
57
+ None,
58
+ true,
59
+ );
60
+ let url = url::Url::parse(&request.url).unwrap();
61
+ let params: HashMap<_, _> = url.query_pairs().collect();
62
+ assert_eq!(params.len(), 2);
63
+ assert_eq!(params["private"], "true");
64
+ assert_eq!(params["token"], "a+b");
65
+ assert_eq!(url.path(), "/v1/download_id_list_file/company%2Fids");
66
+ assert!(request.query_params.is_none());
67
+ assert_eq!(request.headers.as_ref().unwrap()["Range"], "bytes=17-");
68
+ assert_eq!(
69
+ request.headers.as_ref().unwrap()["statsig-id-list-file-size"],
70
+ "42"
71
+ );
72
+ }
73
+
74
+ #[tokio::test]
75
+ #[cfg(not(feature = "custom_network_provider"))]
76
+ async fn fallback_range_preserves_membership_and_offsets_across_growth_and_replacement() {
77
+ for partial in [false, true] {
78
+ let mut manifest = Server::new_async().await;
79
+ let mut proxy = Server::new_async().await;
80
+ let mut origin = Server::new_async().await;
81
+ let adapter = StatsigHttpIdListsAdapter::new(
82
+ "secret-key",
83
+ &StatsigOptions {
84
+ id_lists_url: Some(format!("{}/lists", manifest.url())),
85
+ download_id_list_file_api: Some(proxy.url()),
86
+ fallback_to_statsig_api: Some(true),
87
+ ..StatsigOptions::default()
88
+ },
89
+ );
90
+ let (adapter, _provider) = with_local_cdn(adapter, &origin);
91
+ let listener = Arc::new(TestIdListsUpdateListener {
92
+ id_lists: RwLock::new(HashMap::new()),
93
+ });
94
+ adapter.set_listener(listener.clone());
95
+
96
+ // The third update catches offset overshoot after a full-body incremental
97
+ // response. Replacement must discard the previous generation's members.
98
+ for (generation, start, body, expected) in [
99
+ (1, 0, "+a\n+b\n", vec!["a", "b"]),
100
+ (1, 6, "+a\n+b\n-a\n+c\n", vec!["b", "c"]),
101
+ (1, 12, "+a\n+b\n-a\n+c\n-b\n+d\n", vec!["c", "d"]),
102
+ (2, 0, "+replacement\n", vec!["replacement"]),
103
+ ] {
104
+ let size = body.len();
105
+ let manifest_request = manifest
106
+ .mock("POST", "/lists")
107
+ .with_body(
108
+ serde_json::json!({"list": {
109
+ "name": "list", "size": size, "url": CDN_FILE,
110
+ "creationTime": generation, "fileID": format!("file-{generation}")
111
+ }})
112
+ .to_string(),
113
+ )
114
+ .expect(1)
115
+ .create_async()
116
+ .await;
117
+ let proxy_request = proxy
118
+ .mock("GET", PATH)
119
+ .match_header("range", format!("bytes={start}-").as_str())
120
+ .with_status(503)
121
+ .expect(1)
122
+ .create_async()
123
+ .await;
124
+ let mut fallback = origin
125
+ .mock("GET", PATH)
126
+ .match_header("range", format!("bytes={start}-").as_str())
127
+ .match_header("statsig-id-list-file-size", size.to_string().as_str())
128
+ .match_header("statsig-api-key", "secret-key")
129
+ .match_header("accept-encoding", "identity")
130
+ .with_status(if partial { 206 } else { 200 })
131
+ .with_body(if partial { &body[start..] } else { body })
132
+ .expect(1);
133
+ if partial {
134
+ fallback = fallback.with_header(
135
+ "content-range",
136
+ &format!("bytes {start}-{}/{size}", size - 1),
137
+ );
138
+ }
139
+ let fallback = fallback.create_async().await;
140
+ adapter.sync_id_lists().await.unwrap();
141
+ manifest_request.assert_async().await;
142
+ proxy_request.assert_async().await;
143
+ fallback.assert_async().await;
144
+ let lists = listener.id_lists.read();
145
+ let list = &lists["list"];
146
+ assert_eq!(list.metadata.size, size as u64);
147
+ assert_eq!(
148
+ *list.ids,
149
+ expected
150
+ .into_iter()
151
+ .map(str::to_string)
152
+ .collect::<crate::id_lists_adapter::IdListIds>()
153
+ );
154
+ }
155
+ }
156
+ }
157
+
158
+ #[tokio::test]
159
+ #[cfg(not(feature = "custom_network_provider"))]
160
+ async fn fallback_range_retries_invalid_data_without_publishing_or_advancing() {
161
+ for (status, header, body) in [
162
+ (200, None, "+a\n"),
163
+ (206, Some("bytes 0-2/6"), "+b\n"),
164
+ (206, Some("bytes 3-5/6"), "+b"),
165
+ (416, None, ""),
166
+ ] {
167
+ let mut manifest = Server::new_async().await;
168
+ let mut proxy = Server::new_async().await;
169
+ let mut origin = Server::new_async().await;
170
+ let metadata = IdListMetadata {
171
+ name: "list".into(),
172
+ url: CDN_FILE.into(),
173
+ size: 6,
174
+ file_id: Some("file-1".into()),
175
+ creation_time: 1,
176
+ };
177
+ let mut list = crate::id_lists_adapter::IdList::new(metadata.clone());
178
+ list.apply_update(IdListUpdate {
179
+ raw_changeset: Some("+a\n".into()),
180
+ new_metadata: metadata,
181
+ });
182
+ let listener = Arc::new(TestIdListsUpdateListener {
183
+ id_lists: RwLock::new(HashMap::from([("list".into(), list)])),
184
+ });
185
+ let manifest_request = manifest
186
+ .mock("POST", "/lists")
187
+ .with_body(
188
+ serde_json::json!({"list": {
189
+ "name": "list", "size": 6, "url": CDN_FILE,
190
+ "creationTime": 1, "fileID": "file-1"
191
+ }})
192
+ .to_string(),
193
+ )
194
+ .expect(2)
195
+ .create_async()
196
+ .await;
197
+ let proxy_request = proxy
198
+ .mock("GET", PATH)
199
+ .match_header("range", "bytes=3-")
200
+ .with_status(503)
201
+ .expect(2)
202
+ .create_async()
203
+ .await;
204
+ let mut invalid = origin
205
+ .mock("GET", PATH)
206
+ .match_header("range", "bytes=3-")
207
+ .with_status(status)
208
+ .with_body(body)
209
+ .expect(2);
210
+ if let Some(header) = header {
211
+ invalid = invalid.with_header("content-range", header);
212
+ }
213
+ let invalid = invalid.create_async().await;
214
+ let adapter = StatsigHttpIdListsAdapter::new(
215
+ "secret-key",
216
+ &StatsigOptions {
217
+ id_lists_url: Some(format!("{}/lists", manifest.url())),
218
+ download_id_list_file_api: Some(proxy.url()),
219
+ fallback_to_statsig_api: Some(true),
220
+ ..StatsigOptions::default()
221
+ },
222
+ );
223
+ let (adapter, _provider) = with_local_cdn(adapter, &origin);
224
+ adapter.set_listener(listener.clone());
225
+ let error = adapter.sync_id_lists().await.unwrap_err();
226
+ assert!(matches!(
227
+ error,
228
+ StatsigErr::NetworkError(NetworkError::RetriesExhausted(_, _, 3, _))
229
+ ));
230
+ invalid.assert_async().await;
231
+ assert_eq!(listener.id_lists.read()["list"].metadata.size, 3);
232
+ assert_eq!(
233
+ *listener.id_lists.read()["list"].ids,
234
+ crate::id_lists_adapter::IdListIds::from([String::from("a")])
235
+ );
236
+ invalid.remove_async().await;
237
+ let recovered = origin
238
+ .mock("GET", PATH)
239
+ .match_header("range", "bytes=3-")
240
+ .with_status(200)
241
+ .with_body("+a\n+b\n")
242
+ .expect(1)
243
+ .create_async()
244
+ .await;
245
+ adapter.sync_id_lists().await.unwrap();
246
+ assert_eq!(listener.id_lists.read()["list"].metadata.size, 6);
247
+ assert!(listener.id_lists.read()["list"].ids.contains("b"));
248
+ recovered.assert_async().await;
249
+ proxy_request.assert_async().await;
250
+ manifest_request.assert_async().await;
251
+ }
252
+ }
@@ -103,7 +103,8 @@ impl IdListPropagationState {
103
103
  }
104
104
  }
105
105
 
106
- // This proof is only for telemetry. An absent/invalid range never fails a download.
106
+ // Legacy downloads use this proof only for telemetry. Header-based CDN fallback
107
+ // also validates the interval before applying the bytes as an incremental update.
107
108
  pub(super) fn downloaded_range(
108
109
  status: Option<u16>,
109
110
  content_range: Option<&str>,