oai-statsig-python-core 0.32.0rc2__tar.gz → 0.32.0rc5__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 (476) hide show
  1. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/Cargo.lock +5 -5
  2. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/Cargo.toml +1 -1
  3. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/PKG-INFO +1 -1
  4. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/statsig.py +77 -2
  5. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/statsig_python_core.pyi +11 -1
  6. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/typed_config.py +5 -7
  7. oai_statsig_python_core-0.32.0rc5/statsig-pyo3/requirements-typing.txt +3 -0
  8. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/statsig_options_py.rs +7 -0
  9. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_feature_gate_parts.py +90 -19
  10. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_statsig_options.py +11 -0
  11. oai_statsig_python_core-0.32.0rc5/statsig-pyo3/typing_tests/typed_config.py +39 -0
  12. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/Cargo.toml +1 -1
  13. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/__tests__/statsig_options_tests.rs +50 -0
  14. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging_adapter/statsig_http_event_logging_adapter.rs +21 -16
  15. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/networking/__tests__/http2_test_helpers.rs +54 -0
  16. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/networking/__tests__/mod.rs +3 -0
  17. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/networking/__tests__/net_provider_reqwest_http2_tests.rs +718 -0
  18. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/networking/__tests__/network_client_http2_tests.rs +347 -0
  19. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/__tests__/network_client_latency_tests.rs +2 -1
  20. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/networking/http2.rs +7 -0
  21. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/http_types.rs +20 -0
  22. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/mod.rs +1 -0
  23. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/network_client.rs +17 -79
  24. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/providers/net_provider_reqwest.rs +356 -5
  25. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/specs_adapter/__tests__/hydration_phase_tests.rs +178 -0
  26. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/__tests__/remote_config_value_hydrator_tests.rs +15 -0
  27. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/specs_adapter/remote_config_value_hydrator/download.rs +445 -0
  28. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/specs_adapter/remote_config_value_hydrator/errors.rs +136 -0
  29. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/json.rs +11 -4
  30. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/specs_adapter/remote_config_value_hydrator/metadata.rs +363 -0
  31. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/specs_adapter/remote_config_value_hydrator/mod.rs +137 -0
  32. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/remote_config_value_hydrator/protobuf.rs +139 -110
  33. oai_statsig_python_core-0.32.0rc5/statsig-rust/src/specs_adapter/remote_config_value_hydrator/telemetry.rs +215 -0
  34. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/proto_specs.rs +6 -1
  35. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_options.rs +10 -0
  36. oai_statsig_python_core-0.32.0rc2/statsig-rust/src/__tests__/statsig_options_tests.rs +0 -20
  37. oai_statsig_python_core-0.32.0rc2/statsig-rust/src/networking/__tests__/mod.rs +0 -1
  38. oai_statsig_python_core-0.32.0rc2/statsig-rust/src/specs_adapter/remote_config_value_hydrator/mod.rs +0 -1138
  39. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/__init__.py +0 -0
  40. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/_frozen_json.py +0 -0
  41. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/data_store.py +0 -0
  42. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/error_boundary.py +0 -0
  43. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/evaluation_cache.py +0 -0
  44. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/event_logging_adapter.py +0 -0
  45. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/observability_client.py +0 -0
  46. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/output_logger_provider.py +0 -0
  47. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/persistent_storage.py +0 -0
  48. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/py.typed +0 -0
  49. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/requirements.txt +0 -0
  50. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/py_src/statsig_python_core/statsig_types.py +0 -0
  51. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/pyproject.toml +0 -0
  52. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/Cargo.toml +0 -0
  53. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/README.md +0 -0
  54. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/build.rs +0 -0
  55. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/src/lib.rs +0 -0
  56. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/src/mock_forward_proxy.rs +0 -0
  57. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/src/protos/statsig_forward_proxy.proto +0 -0
  58. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/src/statsig_forward_proxy.rs +0 -0
  59. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/src/statsig_grpc_client.rs +0 -0
  60. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-grpc/src/statsig_grpc_err.rs +0 -0
  61. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/.github/workflows/CI.yml +0 -0
  62. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/.gitignore +0 -0
  63. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/Cargo.toml +0 -0
  64. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/README.md +0 -0
  65. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/benchmarks/dynamic_config_value_cache_benchmark.py +0 -0
  66. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/benchmarks/native_context_allocations.c +0 -0
  67. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/benchmarks/native_context_benchmark.py +0 -0
  68. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/benchmarks/summarize_native_context_allocations.py +0 -0
  69. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/benchmarks/user_creation_benchmark.py +0 -0
  70. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/benchmarks/user_memory_benchmark.py +0 -0
  71. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/benchmarks/wrapper_native_context_benchmark.py +0 -0
  72. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/bin/stub_gen.rs +0 -0
  73. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/data_store_base_py.rs +0 -0
  74. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/event_logging_adapter_base_py.rs +0 -0
  75. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/interned_store_py.rs +0 -0
  76. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/lib.rs +0 -0
  77. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/observability_client_base_py.rs +0 -0
  78. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/output_logger_provider_base_py.rs +0 -0
  79. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/pyo_utils.rs +0 -0
  80. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/raw_evaluation_compat_py.rs +0 -0
  81. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/safe_gil.rs +0 -0
  82. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/statsig_base_py.rs +0 -0
  83. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/statsig_metadata_py.rs +0 -0
  84. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/statsig_persistent_storage_override_adapter_py.rs +0 -0
  85. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/statsig_types_py.rs +0 -0
  86. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/statsig_user_context_py.rs +0 -0
  87. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/statsig_user_py.rs +0 -0
  88. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/typed_config_py/tests.rs +0 -0
  89. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/typed_config_py.rs +0 -0
  90. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/unit_id_py.rs +0 -0
  91. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/src/valid_primitives_py.rs +0 -0
  92. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/event_listener_reentrancy_subprocess.py +0 -0
  93. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/fork_callback_runner.py +0 -0
  94. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/fork_runner.py +0 -0
  95. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/mock_output_logger.py +0 -0
  96. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/mock_scrapi.py +0 -0
  97. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/profile_util.py +0 -0
  98. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/shutdown_sub_proc.py +0 -0
  99. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_bulk_evaluate_gcir_parity.py +0 -0
  100. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_data_store.py +0 -0
  101. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_error_boundary.py +0 -0
  102. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_evaluation_cache.py +0 -0
  103. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_evaluation_cache_integration.py +0 -0
  104. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_evaluation_cache_pyo3.py +0 -0
  105. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_event_logging_adapter.py +0 -0
  106. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_experiment_group_targeting_exposures.py +0 -0
  107. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_experiment_serialization.py +0 -0
  108. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_exposure_logging.py +0 -0
  109. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_feature_gate_serialization.py +0 -0
  110. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_fork_callback.py +0 -0
  111. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_forking.py +0 -0
  112. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_frozen_json.py +0 -0
  113. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_get_dynamic_config.py +0 -0
  114. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_initialize_with_details.py +0 -0
  115. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_interned_store_preload.py +0 -0
  116. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_layer_param_exposure_sampling.py +0 -0
  117. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_layer_serialization.py +0 -0
  118. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_native_context_allocations.py +0 -0
  119. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_native_context_benchmark.py +0 -0
  120. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_native_user_context.py +0 -0
  121. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_observability_client.py +0 -0
  122. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_output_logger_provider.py +0 -0
  123. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_override_adapter.py +0 -0
  124. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_partial_rollout_boost.py +0 -0
  125. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_performance.py +0 -0
  126. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_sdk_event_emitter.py +0 -0
  127. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_sec_expo_as_primary.py +0 -0
  128. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_shared_statsig.py +0 -0
  129. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_shutdown.py +0 -0
  130. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_statsig.py +0 -0
  131. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_statsig_user.py +0 -0
  132. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_statsig_user_json_serialization.py +0 -0
  133. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_statsig_user_none_fields.py +0 -0
  134. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_statsig_user_pickle.py +0 -0
  135. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_typed_config.py +0 -0
  136. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_typed_config_native.py +0 -0
  137. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/test_user_exposure_e2e.py +0 -0
  138. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-pyo3/tests/utils.py +0 -0
  139. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/build.rs +0 -0
  140. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/resources/ip_supalite.table +0 -0
  141. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/resources/ua_parser_regex.yaml +0 -0
  142. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/resources/ua_parser_regex_lite.yaml +0 -0
  143. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/__tests__/interned_string_tests.rs +0 -0
  144. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/__tests__/mod.rs +0 -0
  145. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/__tests__/spec_store_tests.rs +0 -0
  146. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/__tests__/user_value_tests.rs +0 -0
  147. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/compression/compression_helper.rs +0 -0
  148. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/compression/mod.rs +0 -0
  149. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/console_capture/console_capture_handler.rs +0 -0
  150. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/console_capture/console_capture_instances.rs +0 -0
  151. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/console_capture/console_capture_options.rs +0 -0
  152. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/console_capture/console_log_line_levels.rs +0 -0
  153. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/console_capture/mod.rs +0 -0
  154. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/data_store_interface.rs +0 -0
  155. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/dcs_str.rs +0 -0
  156. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/__tests__/dynamic_returnable_tests.rs +0 -0
  157. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/__tests__/mod.rs +0 -0
  158. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/__tests__/rkyv_value_tests.rs +0 -0
  159. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/cmab_evaluator.rs +0 -0
  160. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/comparisons/compare_arrays.rs +0 -0
  161. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/comparisons/compare_numbers.rs +0 -0
  162. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/comparisons/compare_str_with_regex.rs +0 -0
  163. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/comparisons/compare_strings_in_array.rs +0 -0
  164. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/comparisons/compare_time.rs +0 -0
  165. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/comparisons/compare_versions.rs +0 -0
  166. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/comparisons/mod.rs +0 -0
  167. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/country_lookup.rs +0 -0
  168. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/dynamic_returnable.rs +0 -0
  169. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/dynamic_string.rs +0 -0
  170. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/dynamic_value.rs +0 -0
  171. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluation_data.rs +0 -0
  172. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluation_details.rs +0 -0
  173. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluation_types.rs +0 -0
  174. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluation_types_initialize_v2.rs +0 -0
  175. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluation_types_v2.rs +0 -0
  176. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluator.rs +0 -0
  177. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluator_context.rs +0 -0
  178. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluator_result.rs +0 -0
  179. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/evaluator_value.rs +0 -0
  180. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/get_unit_id.rs +0 -0
  181. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/mod.rs +0 -0
  182. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/rkyv_value.rs +0 -0
  183. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/secondary_exposure_key.rs +0 -0
  184. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/first_party_ua_parser.rs +0 -0
  185. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/mod.rs +0 -0
  186. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/mod.rs +0 -0
  187. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_helpers.rs +0 -0
  188. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer.rs +0 -0
  189. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer_performance.rs +0 -0
  190. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_browser.rs +0 -0
  191. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_os.rs +0 -0
  192. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/mod.rs +0 -0
  193. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/tokenizer.rs +0 -0
  194. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/ua_parser.rs +0 -0
  195. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/window_iter.rs +0 -0
  196. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/third_party_ua_parser.rs +0 -0
  197. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation/user_agent_parsing/ua_parser.rs +0 -0
  198. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/evaluation_fixture_client.rs +0 -0
  199. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_emitter/statsig_event_emitter_tests.rs +0 -0
  200. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/delayed_exposure_store.rs +0 -0
  201. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_logger.rs +0 -0
  202. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_logger_constants.rs +0 -0
  203. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_logger_ops_stats.rs +0 -0
  204. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/batch.rs +0 -0
  205. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/mod.rs +0 -0
  206. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queue.rs +0 -0
  207. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queued_config_expo.rs +0 -0
  208. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queued_event.rs +0 -0
  209. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queued_experiment_expo.rs +0 -0
  210. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queued_expo.rs +0 -0
  211. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queued_gate_expo.rs +0 -0
  212. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queued_layer_param_expo.rs +0 -0
  213. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queued_passthrough.rs +0 -0
  214. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/event_queue/queued_secondary_expo.rs +0 -0
  215. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/exposure_sampling.rs +0 -0
  216. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/exposure_utils.rs +0 -0
  217. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/flush_interval.rs +0 -0
  218. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/flush_type.rs +0 -0
  219. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/mod.rs +0 -0
  220. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/sec_expo_as_primary_experiment.rs +0 -0
  221. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/statsig_event.rs +0 -0
  222. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging/statsig_event_internal.rs +0 -0
  223. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging_adapter/event_logging_adapter_trait.rs +0 -0
  224. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging_adapter/log_event_payload.rs +0 -0
  225. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging_adapter/mod.rs +0 -0
  226. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/event_logging_adapter/statsig_local_file_event_logging_adapter.rs +0 -0
  227. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/dynamic_configs_processor.rs +0 -0
  228. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/evaluation_plan.rs +0 -0
  229. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/feature_gates_processor.rs +0 -0
  230. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/gcir_formatter.rs +0 -0
  231. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/gcir_options.rs +0 -0
  232. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/gcir_process_iter.rs +0 -0
  233. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/layer_configs_processor.rs +0 -0
  234. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/mod.rs +0 -0
  235. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/param_stores_processor.rs +0 -0
  236. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/secondary_exposure_hashing.rs +0 -0
  237. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/stringify_sec_exposures.rs +0 -0
  238. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/target_app_id_utils.rs +0 -0
  239. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/gcir/timing.rs +0 -0
  240. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/global_configs.rs +0 -0
  241. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/hashing/ahash.rs +0 -0
  242. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/hashing/djb2.rs +0 -0
  243. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/hashing/hash_util.rs +0 -0
  244. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/hashing/memo_sha_256.rs +0 -0
  245. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/hashing/mod.rs +0 -0
  246. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/id_lists_adapter/id_list.rs +0 -0
  247. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/id_lists_adapter/id_list_download_concurrency_tests.rs +0 -0
  248. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/id_lists_adapter/id_list_propagation.rs +0 -0
  249. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/id_lists_adapter/id_list_propagation_tests.rs +0 -0
  250. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/id_lists_adapter/id_lists_adapter_trait.rs +0 -0
  251. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/id_lists_adapter/id_lists_refresh_tests.rs +0 -0
  252. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/id_lists_adapter/mod.rs +0 -0
  253. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/id_lists_adapter/statsig_http_id_lists_adapter.rs +0 -0
  254. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/init_details.rs +0 -0
  255. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/initialize_evaluations_response.rs +0 -0
  256. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/initialize_response.rs +0 -0
  257. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/initialize_v2_response.rs +0 -0
  258. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/instance_registry.rs +0 -0
  259. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_string.rs +0 -0
  260. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/__tests__/interned_store_eval_value_tests.rs +0 -0
  261. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_fetch_tests.rs +0 -0
  262. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/__tests__/interned_store_mmap_v2_tests.rs +0 -0
  263. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/__tests__/interned_store_preload_remote_tests.rs +0 -0
  264. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/__tests__/interned_store_returnable_tests.rs +0 -0
  265. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/__tests__/interned_store_string_tests.rs +0 -0
  266. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/__tests__/mod.rs +0 -0
  267. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/interned_store/mmap_artifact.rs +0 -0
  268. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/interned_store/mmap_manifest.rs +0 -0
  269. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/interned_store/mmap_reader/materialize.rs +0 -0
  270. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/interned_store/mmap_reader/memory.rs +0 -0
  271. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/interned_store/mmap_reader.rs +0 -0
  272. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/interned_store/mmap_writer.rs +0 -0
  273. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/interned_store.rs +0 -0
  274. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/mmap_data_v2/evaluator_value.rs +0 -0
  275. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/mmap_data_v2/spec.rs +0 -0
  276. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/mmap_data_v2/spec_content_hash.rs +0 -0
  277. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/mmap_data_v2.rs +0 -0
  278. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/mmap_sync.rs +0 -0
  279. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/interned_values/mod.rs +0 -0
  280. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/lib.rs +0 -0
  281. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/logging_utils.rs +0 -0
  282. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/macros.rs +0 -0
  283. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/__tests__/response_data_tests.rs +0 -0
  284. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/network_error.rs +0 -0
  285. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/providers/mod.rs +0 -0
  286. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/providers/net_provider_global.rs +0 -0
  287. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/providers/net_provider_noop.rs +0 -0
  288. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/proxy_config.rs +0 -0
  289. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/networking/statsig_url.rs +0 -0
  290. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/observability/console_capture_observer.rs +0 -0
  291. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/observability/diagnostics_observer.rs +0 -0
  292. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/observability/mod.rs +0 -0
  293. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/observability/observability_client_adapter.rs +0 -0
  294. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/observability/ops_stats.rs +0 -0
  295. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/observability/sdk_errors_observer.rs +0 -0
  296. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/output_logger.rs +0 -0
  297. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/output_policy.rs +0 -0
  298. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/override_adapter/mod.rs +0 -0
  299. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/override_adapter/override_adapter_trait.rs +0 -0
  300. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/override_adapter/statsig_local_override_adapter.rs +0 -0
  301. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/persistent_storage/__tests__/mod.rs +0 -0
  302. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/persistent_storage/__tests__/sticky_values_serialization_tests.rs +0 -0
  303. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/persistent_storage/mod.rs +0 -0
  304. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/persistent_storage/persistent_storage_trait.rs +0 -0
  305. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/persistent_storage/persistent_values_manager.rs +0 -0
  306. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/scoped_evaluation_request.rs +0 -0
  307. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/scoped_id_list_membership_service.rs +0 -0
  308. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/scoped_snapshot_registry.rs +0 -0
  309. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/sdk_diagnostics/diagnostics.rs +0 -0
  310. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/sdk_diagnostics/diagnostics_utils.rs +0 -0
  311. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/sdk_diagnostics/marker.rs +0 -0
  312. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/sdk_diagnostics/mod.rs +0 -0
  313. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/sdk_event_emitter/event_emitter.rs +0 -0
  314. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/sdk_event_emitter/event_emitter_tests.rs +0 -0
  315. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/sdk_event_emitter/event_types.rs +0 -0
  316. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/sdk_event_emitter/mod.rs +0 -0
  317. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/snapshot_evaluation_session.rs +0 -0
  318. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/spec_store.rs +0 -0
  319. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/config_spec_background_sync_metrics.rs +0 -0
  320. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/mod.rs +0 -0
  321. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/response_format.rs +0 -0
  322. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/scoped_source_specs_adapter.rs +0 -0
  323. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/specs_adapter_trait.rs +0 -0
  324. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/statsig_bootstrap_specs_adapter.rs +0 -0
  325. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/statsig_customized_specs_adapter.rs +0 -0
  326. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/statsig_data_store_specs_adapter.rs +0 -0
  327. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/statsig_grpc_specs_adapter.rs +0 -0
  328. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/statsig_http_specs_adapter.rs +0 -0
  329. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_adapter/statsig_local_file_specs_adapter.rs +0 -0
  330. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/__tests__/mod.rs +0 -0
  331. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/__tests__/proto_specs_syncing_tests.rs +0 -0
  332. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/__tests__/proto_specs_tests.rs +0 -0
  333. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/__tests__/proto_specs_unknown_tests.rs +0 -0
  334. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/__tests__/proto_specs_vs_json_tests.rs +0 -0
  335. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/__tests__/proto_stream_reader_tests.rs +0 -0
  336. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/cmab_types.rs +0 -0
  337. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/explicit_params.rs +0 -0
  338. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/mod.rs +0 -0
  339. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/param_store_types.rs +0 -0
  340. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/parse_options.rs +0 -0
  341. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/proto_compression.rs +0 -0
  342. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/proto_specs/parser.rs +0 -0
  343. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/proto_stream_reader.rs +0 -0
  344. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/spec_types.rs +0 -0
  345. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/specs_hash_map.rs +0 -0
  346. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/specs_response/statsig_config_specs.rs +0 -0
  347. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig/typed_config_tests.rs +0 -0
  348. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig.rs +0 -0
  349. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_core_api_options.rs +0 -0
  350. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_err.rs +0 -0
  351. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_global.rs +0 -0
  352. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_metadata.rs +0 -0
  353. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_runtime.rs +0 -0
  354. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_type_factories.rs +0 -0
  355. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_types.rs +0 -0
  356. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/statsig_types_raw.rs +0 -0
  357. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/typed_config/tests.rs +0 -0
  358. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/typed_config.rs +0 -0
  359. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/fast_statsig_user.rs +0 -0
  360. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/into_optional.rs +0 -0
  361. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/mod.rs +0 -0
  362. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/prepared_user.rs +0 -0
  363. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/random_user_id.rs +0 -0
  364. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/statsig_user.rs +0 -0
  365. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/statsig_user_builder.rs +0 -0
  366. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/statsig_user_internal.rs +0 -0
  367. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/statsig_user_loggable.rs +0 -0
  368. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/unit_id.rs +0 -0
  369. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/user_data.rs +0 -0
  370. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/user/user_value.rs +0 -0
  371. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/utils/mod.rs +0 -0
  372. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/src/value_parsing.rs +0 -0
  373. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/check_gate_tests.rs +0 -0
  374. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/customized_specs_adapter_tests.rs +0 -0
  375. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/big_number_dcs.json +0 -0
  376. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/check_gate_perf_dcs.json +0 -0
  377. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/company_id_list +0 -0
  378. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/dcs_error.json +0 -0
  379. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/dcs_missing_gates.json +0 -0
  380. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/dcs_non_case_sensitive.json +0 -0
  381. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/dcs_user_agent_versions.json +0 -0
  382. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/dcs_with_analytical_exposure_sampling.json +0 -0
  383. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/dcs_with_checksum.json +0 -0
  384. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/dcs_with_sampling.json +0 -0
  385. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/dcs_with_sdk_configs.json +0 -0
  386. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/demo_proj_dcs.json +0 -0
  387. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/demo_proj_dcs.pb.br +0 -0
  388. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/eval_proj_dcs.json +0 -0
  389. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/eval_proj_dcs.pb.br +0 -0
  390. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/experiment_group_condition.pb.br +0 -0
  391. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/get_id_lists.json +0 -0
  392. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/perf_proj_dcs.json +0 -0
  393. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/perf_proj_dcs.pb.br +0 -0
  394. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/shared_dict_dict_only.json +0 -0
  395. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/shared_dict_original_dcs.json +0 -0
  396. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/shared_dict_response_uncompressed.json +0 -0
  397. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/shared_dict_response_with_dict.json +0 -0
  398. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/shared_dict_response_without_dict.json +0 -0
  399. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/test_must_pass_user_agents.txt +0 -0
  400. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/test_user_agents.txt +0 -0
  401. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/ua_string_cases.json +0 -0
  402. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data/unknown_enum.pb.br +0 -0
  403. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data_store_bytes_adapter_tests.rs +0 -0
  404. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data_store_json_bytes_tests.rs +0 -0
  405. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data_store_json_only_no_bytes_methods_tests.rs +0 -0
  406. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data_store_lock_tests.rs +0 -0
  407. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/data_store_proto_bytes_tests.rs +0 -0
  408. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/delayed_exposure_bench.rs +0 -0
  409. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/direct_gcir_tests.rs +0 -0
  410. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/dynamic_string_tests.rs +0 -0
  411. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/dynamic_value_tests.rs +0 -0
  412. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/evaluation_details_tests.rs +0 -0
  413. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/evaluator_value_tests.rs +0 -0
  414. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/event_logger_failing_flush_tests.rs +0 -0
  415. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/event_logger_flush_tests.rs +0 -0
  416. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/event_logger_high_qps_tests.rs +0 -0
  417. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/event_logger_usage_tests.rs +0 -0
  418. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/expected_evaluation_tests.rs +0 -0
  419. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/exposure_sampling_key_tests.rs +0 -0
  420. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/exposure_tests.rs +0 -0
  421. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/flushing_tests.rs +0 -0
  422. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/gate_inversion_eval_tests.rs +0 -0
  423. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/gcir_plan_expansion_bench.rs +0 -0
  424. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/gcir_tests.rs +0 -0
  425. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/global_configs_test.rs +0 -0
  426. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/grpc_specs_adapter_tests.rs +0 -0
  427. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/hash_util_evaluation_hash_tests.rs +0 -0
  428. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/http_specs_adapter_tests.rs +0 -0
  429. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/initialize_timeout_test.rs +0 -0
  430. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/instance_registry_tests.rs +0 -0
  431. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/interner_contention_bench.rs +0 -0
  432. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/layer_serialization_tests.rs +0 -0
  433. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/list_methods_tests.rs +0 -0
  434. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/network_client_streaming_tests.rs +0 -0
  435. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/network_client_tests.rs +0 -0
  436. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/network_failure_tests.rs +0 -0
  437. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/observability_client_usage_tests.rs +0 -0
  438. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/output_logger_tests.rs +0 -0
  439. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/override_adapter_tests.rs +0 -0
  440. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/perf_tests.rs +0 -0
  441. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/proto_specs_usage_tests.rs +0 -0
  442. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/protobuf_copy_bench.rs +0 -0
  443. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/remote_config_preload_hydration_tests.rs +0 -0
  444. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/remote_config_value_hydration_tests.rs +0 -0
  445. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/spec_store_lock_tests.rs +0 -0
  446. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/spec_types_tests.rs +0 -0
  447. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_disable_network_tests.rs +0 -0
  448. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_environment_tests.rs +0 -0
  449. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_event_emitter_usage_test.rs +0 -0
  450. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_global_tests.rs +0 -0
  451. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_local_file_event_logging_adapter_tests.rs +0 -0
  452. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_local_file_specs_adapter_tests.rs +0 -0
  453. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_options_tests.rs +0 -0
  454. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_shared_tests.rs +0 -0
  455. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_tests.rs +0 -0
  456. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_user_builder_tests.rs +0 -0
  457. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_user_field_accessor_tests.rs +0 -0
  458. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_user_internal_tests.rs +0 -0
  459. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_user_loggable_tests.rs +0 -0
  460. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/statsig_user_tests.rs +0 -0
  461. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/substring_search_bench.rs +0 -0
  462. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/syncing_network_failure_tests.rs +0 -0
  463. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/typed_getters_tests.rs +0 -0
  464. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/ua_parser_util_test.rs +0 -0
  465. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/user_agent_tests_first_party.rs +0 -0
  466. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/user_json_tests.rs +0 -0
  467. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/env_var_guard.rs +0 -0
  468. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/helpers.rs +0 -0
  469. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/mock_data_store.rs +0 -0
  470. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/mock_event_logging_adapter.rs +0 -0
  471. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/mock_log_provider.rs +0 -0
  472. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/mock_observability_client.rs +0 -0
  473. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/mock_scrapi.rs +0 -0
  474. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/mock_specs_adapter.rs +0 -0
  475. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/mock_specs_listener.rs +0 -0
  476. {oai_statsig_python_core-0.32.0rc2 → oai_statsig_python_core-0.32.0rc5}/statsig-rust/tests/utils/mod.rs +0 -0
@@ -1853,7 +1853,7 @@ dependencies = [
1853
1853
 
1854
1854
  [[package]]
1855
1855
  name = "oai-statsig-grpc"
1856
- version = "0.32.0-rc.2"
1856
+ version = "0.32.0-rc.5"
1857
1857
  dependencies = [
1858
1858
  "async-trait",
1859
1859
  "chrono",
@@ -1869,7 +1869,7 @@ dependencies = [
1869
1869
 
1870
1870
  [[package]]
1871
1871
  name = "oai-statsig-rust"
1872
- version = "0.32.0-rc.2"
1872
+ version = "0.32.0-rc.5"
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.32.0-rc.2"
3105
+ version = "0.32.0-rc.5"
3106
3106
  dependencies = [
3107
3107
  "async-trait",
3108
3108
  "napi",
@@ -3117,7 +3117,7 @@ dependencies = [
3117
3117
 
3118
3118
  [[package]]
3119
3119
  name = "statsig-pyo3"
3120
- version = "0.32.0-rc.2"
3120
+ version = "0.32.0-rc.5"
3121
3121
  dependencies = [
3122
3122
  "async-trait",
3123
3123
  "lazy_static",
@@ -3132,7 +3132,7 @@ dependencies = [
3132
3132
 
3133
3133
  [[package]]
3134
3134
  name = "statsig_ffi"
3135
- version = "0.32.0-rc.2"
3135
+ version = "0.32.0-rc.5"
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.32.0-rc.2"
29
+ version = "0.32.0-rc.5"
30
30
  homepage = "https://statsig.com/"
31
31
  authors = ["Statsig", "Daniel Loomb <daniel@statsig.com>"]
32
32
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oai_statsig_python_core
3
- Version: 0.32.0rc2
3
+ Version: 0.32.0rc5
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -27,10 +27,18 @@ from .evaluation_cache import (
27
27
  _EvaluationCacheKeys,
28
28
  _get_evaluation_cache,
29
29
  )
30
- from .statsig_types import DynamicConfig, Experiment, FeatureGate, Layer, TypedDynamicConfig
30
+ from .statsig_types import (
31
+ DynamicConfig,
32
+ Experiment,
33
+ FeatureGate,
34
+ Layer,
35
+ TypedDynamicConfig,
36
+ )
31
37
  from .typed_config import _TypedConfigs
32
38
 
33
39
  if TYPE_CHECKING:
40
+ from google.protobuf.message import Message
41
+
34
42
  from .statsig_python_core import AttributesDict, CustomIdsDict
35
43
 
36
44
 
@@ -48,7 +56,7 @@ _DEFAULT_EXPOSURE_CALLSITE_IGNORED_MODULE_PREFIXES: tuple[str, ...] = (
48
56
  )
49
57
  _EXPERIMENT_EXPOSURE_CALLSITE_SDK_CONFIG_PREFIX = "expo_callsite_logging_experiment::"
50
58
  _LAYER_EXPOSURE_CALLSITE_SDK_CONFIG_PREFIX = "expo_callsite_logging_layer::"
51
- _TypedConfigValue = TypeVar("_TypedConfigValue")
59
+ _TypedConfigValue = TypeVar("_TypedConfigValue", bound="Message")
52
60
 
53
61
 
54
62
  def handle_fork():
@@ -252,6 +260,39 @@ class Statsig(StatsigBasePy):
252
260
  )
253
261
  return FeatureGate._from_parts(name, parts)
254
262
 
263
+ def get_feature_gate_fields_anonymous(
264
+ self,
265
+ name: str,
266
+ id_options: StatsigRandomUserID,
267
+ *,
268
+ context: Optional[StatsigUserContext] = None,
269
+ custom: Optional["AttributesDict"] = None,
270
+ custom_ids: Optional["CustomIdsDict"] = None,
271
+ ip: Optional[str] = None,
272
+ country: Optional[str] = None,
273
+ locale: Optional[str] = None,
274
+ user_agent: Optional[str] = None,
275
+ options: Optional[FeatureGateEvaluationOptions] = None,
276
+ ) -> Optional[tuple[bool, str]]:
277
+ """Return (value, reason), with a fresh anonymous identity per call.
278
+
279
+ Options, callbacks and exposures match get_feature_gate_anonymous.
280
+ The SDK error boundary returns None if the call fails.
281
+ """
282
+ parts = super()._INTERNAL_get_feature_gate_anonymous_parts(
283
+ name,
284
+ id_options,
285
+ context,
286
+ custom,
287
+ custom_ids,
288
+ ip,
289
+ country,
290
+ locale,
291
+ user_agent,
292
+ options,
293
+ )
294
+ return parts[0], parts[3]
295
+
255
296
  def get_layer_anonymous(
256
297
  self,
257
298
  name: str,
@@ -307,6 +348,24 @@ class Statsig(StatsigBasePy):
307
348
  )
308
349
  return FeatureGate._from_parts(name, parts)
309
350
 
351
+ def get_feature_gate_fields_with_context(
352
+ self,
353
+ context: Optional[StatsigUserContext],
354
+ name: str,
355
+ user_id: Optional[str] = None,
356
+ custom: Optional["AttributesDict"] = None,
357
+ options: Optional[FeatureGateEvaluationOptions] = None,
358
+ ) -> Optional[tuple[bool, str]]:
359
+ """Return (value, reason) without constructing a FeatureGate.
360
+
361
+ Options, callbacks and exposures match get_feature_gate_with_context.
362
+ The SDK error boundary returns None if the call fails.
363
+ """
364
+ parts = super()._INTERNAL_get_feature_gate_with_context_parts(
365
+ context, name, user_id, custom, options
366
+ )
367
+ return parts[0], parts[3]
368
+
310
369
  def get_dynamic_config_with_context(
311
370
  self,
312
371
  context: Optional[StatsigUserContext],
@@ -357,6 +416,22 @@ class Statsig(StatsigBasePy):
357
416
  parts = super()._INTERNAL_get_feature_gate_parts(user, name, options)
358
417
  return FeatureGate._from_parts(name, parts)
359
418
 
419
+ def get_feature_gate_fields(
420
+ self,
421
+ user: StatsigUser,
422
+ name: str,
423
+ options: Optional[FeatureGateEvaluationOptions] = None,
424
+ ) -> Optional[tuple[bool, str]]:
425
+ """Return (value, reason) without constructing a FeatureGate.
426
+
427
+ The reason is identical to get_feature_gate(...).details.reason,
428
+ including uninitialized, unrecognized and local override results.
429
+ Options, callbacks and exposures are unchanged. The SDK error boundary
430
+ returns None if the call fails.
431
+ """
432
+ parts = super()._INTERNAL_get_feature_gate_parts(user, name, options)
433
+ return parts[0], parts[3]
434
+
360
435
  def get_dynamic_config(
361
436
  self,
362
437
  user: StatsigUser,
@@ -351,6 +351,16 @@ class StatsigOptions:
351
351
  @log_event_connection_reuse.setter
352
352
  def log_event_connection_reuse(self, value: typing.Optional[builtins.bool]) -> None: ...
353
353
  @property
354
+ def prefer_http2(self) -> typing.Optional[builtins.bool]:
355
+ r"""
356
+ Prefer HTTP/2 while allowing HTTP/1.1. Unset enables it; False restores the existing transport.
357
+ """
358
+ @prefer_http2.setter
359
+ def prefer_http2(self, value: typing.Optional[builtins.bool]) -> None:
360
+ r"""
361
+ Prefer HTTP/2 while allowing HTTP/1.1. Unset enables it; False restores the existing transport.
362
+ """
363
+ @property
354
364
  def event_logging_flush_interval_ms(self) -> typing.Optional[builtins.int]: ...
355
365
  @event_logging_flush_interval_ms.setter
356
366
  def event_logging_flush_interval_ms(self, value: typing.Optional[builtins.int]) -> None: ...
@@ -478,7 +488,7 @@ class StatsigOptions:
478
488
  def evaluation_cache(self) -> typing.Optional[_statsig_python_core.evaluation_cache.EvaluationCache]: ...
479
489
  @evaluation_cache.setter
480
490
  def evaluation_cache(self, value: typing.Optional[_statsig_python_core.evaluation_cache.EvaluationCache]) -> None: ...
481
- def __new__(cls, specs_url: typing.Optional[builtins.str] = None, specs_sync_interval_ms: typing.Optional[builtins.int] = None, init_timeout_ms: typing.Optional[builtins.int] = None, log_event_url: typing.Optional[builtins.str] = None, disable_all_logging: typing.Optional[builtins.bool] = None, disable_network: typing.Optional[builtins.bool] = None, log_event_connection_reuse: typing.Optional[builtins.bool] = None, event_logging_flush_interval_ms: typing.Optional[builtins.int] = None, event_logging_max_queue_size: typing.Optional[builtins.int] = None, event_logging_max_pending_batch_queue_size: typing.Optional[builtins.int] = None, enable_id_lists: typing.Optional[builtins.bool] = None, enable_dcs_deltas: typing.Optional[builtins.bool] = None, wait_for_user_agent_init: typing.Optional[builtins.bool] = None, wait_for_country_lookup_init: typing.Optional[builtins.bool] = None, disable_country_lookup: typing.Optional[builtins.bool] = None, id_lists_url: typing.Optional[builtins.str] = None, download_id_list_file_api: typing.Optional[builtins.str] = None, id_lists_sync_interval_ms: typing.Optional[builtins.int] = None, fallback_to_statsig_api: typing.Optional[builtins.bool] = None, environment: typing.Optional[builtins.str] = None, service_name: typing.Optional[builtins.str] = None, sdk_instance_id: typing.Optional[builtins.str] = None, sdk_runtime_thread_count: typing.Optional[builtins.int] = None, runtime_thread_start_callback: typing.Optional[typing.Callable[[], None]] = None, output_log_level: typing.Optional[builtins.str] = None, global_custom_fields: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.int, builtins.float, builtins.bool, typing.List[typing.Optional[typing.Union[builtins.str, builtins.int, builtins.float, builtins.bool]]]]]] = None, observability_client: typing.Optional[ObservabilityClientBase] = None, data_store: typing.Optional[DataStoreBase] = None, data_store_key_schema_version: typing.Optional[builtins.str] = None, persistent_storage: typing.Optional[PersistentStorageBaseClass] = None, config_compression_mode: typing.Optional[builtins.str] = None, proxy_config: typing.Optional[ProxyConfig] = None, output_logger_provider: typing.Optional[OutputLoggerProviderBase] = None, spec_adapter_configs: typing.Optional[list] = None, use_third_party_ua_parser: typing.Optional[builtins.bool] = None, disable_disk_access: typing.Optional[builtins.bool] = None, experimental_flags: typing.Optional[builtins.set[builtins.str]] = None, event_logging_adapter: typing.Optional[EventLoggingAdapterBase] = None, evaluation_cache: typing.Optional[_statsig_python_core.evaluation_cache.EvaluationCache] = None) -> StatsigOptions: ...
491
+ def __new__(cls, specs_url: typing.Optional[builtins.str] = None, specs_sync_interval_ms: typing.Optional[builtins.int] = None, init_timeout_ms: typing.Optional[builtins.int] = None, log_event_url: typing.Optional[builtins.str] = None, disable_all_logging: typing.Optional[builtins.bool] = None, disable_network: typing.Optional[builtins.bool] = None, log_event_connection_reuse: typing.Optional[builtins.bool] = None, event_logging_flush_interval_ms: typing.Optional[builtins.int] = None, event_logging_max_queue_size: typing.Optional[builtins.int] = None, event_logging_max_pending_batch_queue_size: typing.Optional[builtins.int] = None, enable_id_lists: typing.Optional[builtins.bool] = None, enable_dcs_deltas: typing.Optional[builtins.bool] = None, wait_for_user_agent_init: typing.Optional[builtins.bool] = None, wait_for_country_lookup_init: typing.Optional[builtins.bool] = None, disable_country_lookup: typing.Optional[builtins.bool] = None, id_lists_url: typing.Optional[builtins.str] = None, download_id_list_file_api: typing.Optional[builtins.str] = None, id_lists_sync_interval_ms: typing.Optional[builtins.int] = None, fallback_to_statsig_api: typing.Optional[builtins.bool] = None, environment: typing.Optional[builtins.str] = None, service_name: typing.Optional[builtins.str] = None, sdk_instance_id: typing.Optional[builtins.str] = None, sdk_runtime_thread_count: typing.Optional[builtins.int] = None, runtime_thread_start_callback: typing.Optional[typing.Callable[[], None]] = None, output_log_level: typing.Optional[builtins.str] = None, global_custom_fields: typing.Optional[typing.Mapping[builtins.str, typing.Union[builtins.str, builtins.int, builtins.float, builtins.bool, typing.List[typing.Optional[typing.Union[builtins.str, builtins.int, builtins.float, builtins.bool]]]]]] = None, observability_client: typing.Optional[ObservabilityClientBase] = None, data_store: typing.Optional[DataStoreBase] = None, data_store_key_schema_version: typing.Optional[builtins.str] = None, persistent_storage: typing.Optional[PersistentStorageBaseClass] = None, config_compression_mode: typing.Optional[builtins.str] = None, proxy_config: typing.Optional[ProxyConfig] = None, output_logger_provider: typing.Optional[OutputLoggerProviderBase] = None, spec_adapter_configs: typing.Optional[list] = None, use_third_party_ua_parser: typing.Optional[builtins.bool] = None, disable_disk_access: typing.Optional[builtins.bool] = None, experimental_flags: typing.Optional[builtins.set[builtins.str]] = None, event_logging_adapter: typing.Optional[EventLoggingAdapterBase] = None, evaluation_cache: typing.Optional[_statsig_python_core.evaluation_cache.EvaluationCache] = None, prefer_http2: typing.Optional[builtins.bool] = None) -> StatsigOptions: ...
482
492
 
483
493
  @typing.final
484
494
  class StatsigRandomUserID:
@@ -3,7 +3,7 @@
3
3
  import logging
4
4
  from dataclasses import dataclass
5
5
  from threading import Condition, Lock, Thread, current_thread
6
- from typing import TYPE_CHECKING, Any, Callable, Optional, TypeVar, cast
6
+ from typing import TYPE_CHECKING, Any, Callable, Optional, TypeVar
7
7
  from weakref import ref
8
8
 
9
9
  from .evaluation_cache import _VALUE_CACHE_HIT_FIELD
@@ -13,7 +13,7 @@ if TYPE_CHECKING:
13
13
  from google.protobuf.message import Message
14
14
 
15
15
 
16
- T = TypeVar("T")
16
+ T = TypeVar("T", bound="Message")
17
17
  _LOGGER = logging.getLogger(__name__)
18
18
 
19
19
 
@@ -36,7 +36,7 @@ def _validate_message_type(message_type: type[T]) -> None:
36
36
  class _Observer:
37
37
  name: str
38
38
  native: Any
39
- message_type: type
39
+ message_type: type["Message"]
40
40
  callback: Callable
41
41
  revision: Any = None
42
42
  error: Optional[str] = None
@@ -122,9 +122,7 @@ class _TypedConfigs:
122
122
  from google.protobuf.json_format import ParseDict
123
123
 
124
124
  try:
125
- value = message_type()
126
- # Public entry points validate the protobuf class before conversion.
127
- ParseDict(raw["value"], cast("Message", value))
125
+ value = ParseDict(raw["value"], message_type())
128
126
  except Exception as error:
129
127
  raise TypedConfigConversionError(
130
128
  f"Failed to convert typed config {name!r}"
@@ -136,7 +134,7 @@ class _TypedConfigs:
136
134
  if self._closed:
137
135
  return
138
136
  try:
139
- result: TypedDynamicConfig[Any] = self._convert(
137
+ result = self._convert(
140
138
  observer.name,
141
139
  observer.native.get_evaluation(),
142
140
  observer.message_type,
@@ -0,0 +1,3 @@
1
+ mypy==2.3.0
2
+ types-requests==2.33.0.20260712
3
+ types-protobuf==6.32.1.20260221
@@ -128,6 +128,9 @@ 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.
132
+ #[pyo3(get, set)]
133
+ pub prefer_http2: Option<bool>,
131
134
  #[pyo3(get, set)]
132
135
  pub event_logging_flush_interval_ms: Option<u32>,
133
136
  #[pyo3(get, set)]
@@ -237,6 +240,7 @@ impl StatsigOptionsPy {
237
240
  experimental_flags=None,
238
241
  event_logging_adapter=None,
239
242
  evaluation_cache=None,
243
+ prefer_http2=None,
240
244
  ))]
241
245
  #[allow(clippy::too_many_arguments)]
242
246
  pub fn new(
@@ -289,6 +293,7 @@ impl StatsigOptionsPy {
289
293
  imports = ("typing", "statsig_python_core as _statsig_python_core", "statsig_python_core.evaluation_cache")
290
294
  ))]
291
295
  evaluation_cache: Option<Py<PyAny>>,
296
+ prefer_http2: Option<bool>,
292
297
  ) -> Self {
293
298
  Self {
294
299
  specs_url,
@@ -297,6 +302,7 @@ impl StatsigOptionsPy {
297
302
  log_event_url,
298
303
  disable_all_logging,
299
304
  log_event_connection_reuse,
305
+ prefer_http2,
300
306
  event_logging_flush_interval_ms,
301
307
  event_logging_max_queue_size,
302
308
  event_logging_max_pending_batch_queue_size,
@@ -487,6 +493,7 @@ fn create_inner_statsig_options(
487
493
  global_custom_fields,
488
494
  disable_network: opts.disable_network,
489
495
  log_event_connection_reuse: opts.log_event_connection_reuse,
496
+ prefer_http2: opts.prefer_http2,
490
497
  disable_country_lookup: opts.disable_country_lookup,
491
498
  persistent_storage: opts.persistent_storage.as_ref().map(|s| {
492
499
  Arc::new(StatsigPersistentStorageOverrideAdapter::new(
@@ -52,6 +52,13 @@ def _assert_gate(actual, expected):
52
52
  }
53
53
 
54
54
 
55
+ def _assert_fields(actual, expected):
56
+ assert type(actual) is tuple
57
+ assert actual == (expected.value, expected.details.reason)
58
+ assert type(actual[0]) is bool
59
+ assert type(actual[1]) is str
60
+
61
+
55
62
  def _assert_parts(name, parts, raw):
56
63
  assert type(parts) is tuple
57
64
  assert len(parts) == 7
@@ -133,6 +140,13 @@ def test_all_fixture_gates_match_dictionary_results(make_sdk, user_id, with_cont
133
140
  ),
134
141
  expected,
135
142
  )
143
+ _assert_fields(sdk.get_feature_gate_fields(user, name, options), expected)
144
+ _assert_fields(
145
+ sdk.get_feature_gate_fields_with_context(
146
+ context, name, user_id, overlay, options
147
+ ),
148
+ expected,
149
+ )
136
150
 
137
151
 
138
152
  def test_missing_and_uninitialized_results_preserve_optional_metadata(make_sdk):
@@ -174,6 +188,17 @@ def test_missing_and_uninitialized_results_preserve_optional_metadata(make_sdk):
174
188
  _assert_gate(
175
189
  sdk.get_feature_gate_anonymous(name, policy, options=options), expected
176
190
  )
191
+ _assert_fields(sdk.get_feature_gate_fields(user, name, options), expected)
192
+ _assert_fields(
193
+ sdk.get_feature_gate_fields_with_context(
194
+ context, name, user.user_id, options=options
195
+ ),
196
+ expected,
197
+ )
198
+ _assert_fields(
199
+ sdk.get_feature_gate_fields_anonymous(name, policy, options=options),
200
+ expected,
201
+ )
177
202
  if not initialized:
178
203
  assert expected.details.to_dict() == {
179
204
  "reason": "Uninitialized",
@@ -244,6 +269,17 @@ def test_overrides_errors_and_zero_version_keep_native_metadata(make_sdk):
244
269
  _assert_gate(
245
270
  sdk.get_feature_gate_anonymous(name, policy, options=options), expected
246
271
  )
272
+ _assert_fields(sdk.get_feature_gate_fields(user, name, options), expected)
273
+ _assert_fields(
274
+ sdk.get_feature_gate_fields_with_context(
275
+ context, name, user.user_id, options=options
276
+ ),
277
+ expected,
278
+ )
279
+ _assert_fields(
280
+ sdk.get_feature_gate_fields_anonymous(name, policy, options=options),
281
+ expected,
282
+ )
247
283
  if name == "parts_unsupported":
248
284
  assert expected.details.reason.endswith(":Unsupported")
249
285
  elif name == "parts_cycle":
@@ -325,7 +361,7 @@ def test_factory_preserves_defaults_and_ordinary_mutable_objects(parts):
325
361
  _assert_gate(second, expected)
326
362
 
327
363
 
328
- @pytest.mark.parametrize("entrypoint", ["parts", "public"])
364
+ @pytest.mark.parametrize("entrypoint", ["parts", "public", "fields"])
329
365
  @pytest.mark.parametrize("with_request", [False, True])
330
366
  def test_anonymous_results_replay_each_logged_identity(
331
367
  make_sdk, entrypoint, with_request
@@ -369,9 +405,12 @@ def test_anonymous_results_replay_each_logged_identity(
369
405
  name, policy, context=context, custom=custom, **request
370
406
  )
371
407
  else:
372
- result = sdk.get_feature_gate_anonymous(
373
- name, policy, context=context, custom=custom, **request
408
+ method = (
409
+ sdk.get_feature_gate_fields_anonymous
410
+ if entrypoint == "fields"
411
+ else sdk.get_feature_gate_anonymous
374
412
  )
413
+ result = method(name, policy, context=context, custom=custom, **request)
375
414
  saved.append((name, result, metadata))
376
415
  custom["nested"].append("mutated-after-evaluation")
377
416
  assert sdk.flush_events().wait(10)
@@ -392,6 +431,8 @@ def test_anonymous_results_replay_each_logged_identity(
392
431
  raw = sdk._INTERNAL_get_feature_gate(user, name, _disabled())
393
432
  if entrypoint == "parts":
394
433
  _assert_parts(name, result, raw)
434
+ elif entrypoint == "fields":
435
+ _assert_fields(result, FeatureGate(name, raw))
395
436
  else:
396
437
  _assert_gate(result, FeatureGate(name, raw))
397
438
  assert event["metadata"]["gateValue"] == str(raw["value"]).lower()
@@ -402,7 +443,7 @@ def test_anonymous_results_replay_each_logged_identity(
402
443
 
403
444
  @pytest.mark.parametrize("anonymous", [False, True])
404
445
  @pytest.mark.parametrize("with_context", [False, True])
405
- @pytest.mark.parametrize("entrypoint", ["parts", "public"])
446
+ @pytest.mark.parametrize("entrypoint", ["parts", "public", "fields"])
406
447
  def test_empty_custom_and_absent_custom_remain_distinct_in_exposures(
407
448
  make_sdk, anonymous, with_context, entrypoint
408
449
  ):
@@ -410,11 +451,11 @@ def test_empty_custom_and_absent_custom_remain_distinct_in_exposures(
410
451
  context = StatsigUserContext() if with_context else None
411
452
  for label, custom in (("absent", None), ("empty", {})):
412
453
  if anonymous:
413
- method = (
414
- sdk._INTERNAL_get_feature_gate_anonymous_parts
415
- if entrypoint == "parts"
416
- else sdk.get_feature_gate_anonymous
417
- )
454
+ method = {
455
+ "parts": sdk._INTERNAL_get_feature_gate_anonymous_parts,
456
+ "public": sdk.get_feature_gate_anonymous,
457
+ "fields": sdk.get_feature_gate_fields_anonymous,
458
+ }[entrypoint]
418
459
  method(
419
460
  "test_public",
420
461
  StatsigRandomUserID(label, 16),
@@ -422,11 +463,11 @@ def test_empty_custom_and_absent_custom_remain_distinct_in_exposures(
422
463
  custom=custom,
423
464
  )
424
465
  else:
425
- method = (
426
- sdk._INTERNAL_get_feature_gate_with_context_parts
427
- if entrypoint == "parts"
428
- else sdk.get_feature_gate_with_context
429
- )
466
+ method = {
467
+ "parts": sdk._INTERNAL_get_feature_gate_with_context_parts,
468
+ "public": sdk.get_feature_gate_with_context,
469
+ "fields": sdk.get_feature_gate_fields_with_context,
470
+ }[entrypoint]
430
471
  method(context, "test_public", user_id=label, custom=custom)
431
472
  assert sdk.flush_events().wait(10)
432
473
  events = _exposures(logs)
@@ -456,6 +497,7 @@ def test_callbacks_fire_once_per_call_and_exposures_keep_deduplication(make_sdk,
456
497
  "raw": sdk._INTERNAL_get_feature_gate,
457
498
  "parts": sdk._INTERNAL_get_feature_gate_parts,
458
499
  "public": sdk.get_feature_gate,
500
+ "fields": sdk.get_feature_gate_fields,
459
501
  }
460
502
  return methods[entrypoint](user, name, options)
461
503
  if kind == "context":
@@ -463,24 +505,26 @@ def test_callbacks_fire_once_per_call_and_exposures_keep_deduplication(make_sdk,
463
505
  "raw": sdk._INTERNAL_get_feature_gate_with_context,
464
506
  "parts": sdk._INTERNAL_get_feature_gate_with_context_parts,
465
507
  "public": sdk.get_feature_gate_with_context,
508
+ "fields": sdk.get_feature_gate_fields_with_context,
466
509
  }
467
510
  return methods[entrypoint](context, name, user.user_id, options=options)
468
511
  methods = {
469
512
  "parts": sdk._INTERNAL_get_feature_gate_anonymous_parts,
470
513
  "public": sdk.get_feature_gate_anonymous,
514
+ "fields": sdk.get_feature_gate_fields_anonymous,
471
515
  }
472
516
  return methods[entrypoint](name, policy, options=options)
473
517
 
474
- for entrypoint in ("parts", "public"):
518
+ for entrypoint in ("parts", "public", "fields"):
475
519
  evaluate(entrypoint, _disabled())
476
- assert len(callbacks) == 2
520
+ assert len(callbacks) == 3
477
521
  assert sdk.flush_events().wait(10)
478
522
  assert _exposures(logs) == []
479
523
  if kind != "anonymous":
480
524
  assert evaluate("raw") == raw
481
- for entrypoint in ("parts", "public", "parts", "public"):
525
+ for entrypoint in ("parts", "public", "fields") * 2:
482
526
  evaluate(entrypoint)
483
- assert len(callbacks) == (6 if kind == "anonymous" else 7)
527
+ assert len(callbacks) == (9 if kind == "anonymous" else 10)
484
528
  for event in callbacks:
485
529
  assert event["event_name"] == "gate_evaluated"
486
530
  assert event["data"] == {
@@ -491,5 +535,32 @@ def test_callbacks_fire_once_per_call_and_exposures_keep_deduplication(make_sdk,
491
535
  }
492
536
  assert sdk.flush_events().wait(10)
493
537
  events = _exposures(logs)
494
- assert len(events) == (4 if kind == "anonymous" else 1)
538
+ assert len(events) == (6 if kind == "anonymous" else 1)
495
539
  assert len({event["user"]["userID"] for event in events}) == len(events)
540
+
541
+
542
+ @pytest.mark.parametrize("kind", ["ordinary", "context", "anonymous"])
543
+ def test_fields_preserve_error_boundary_and_skip_rich_results(
544
+ make_sdk, monkeypatch, capsys, kind
545
+ ):
546
+ sdk, _, _ = make_sdk()
547
+
548
+ def reject_rich_result(*args):
549
+ raise AssertionError("fields APIs must not construct rich gate results")
550
+
551
+ monkeypatch.setattr(FeatureGate, "_from_parts", reject_rich_result)
552
+ if kind == "ordinary":
553
+ method = sdk.get_feature_gate_fields
554
+ valid = (StatsigUser("fields-user"), "test_public")
555
+ invalid = (object(), "test_public")
556
+ elif kind == "context":
557
+ method = sdk.get_feature_gate_fields_with_context
558
+ valid = (StatsigUserContext(), "test_public", "fields-user")
559
+ invalid = (object(), "test_public", "fields-user")
560
+ else:
561
+ method = sdk.get_feature_gate_fields_anonymous
562
+ valid = ("test_public", StatsigRandomUserID("fields", 16))
563
+ invalid = ("test_public", object())
564
+ assert method(*valid, options=_disabled()) == (True, "Network:Recognized")
565
+ assert method(*invalid, options=_disabled()) is None
566
+ assert "Error" in capsys.readouterr().out
@@ -8,6 +8,17 @@ def test_default_statsig_options():
8
8
  assert options.service_name is None
9
9
  assert options.runtime_thread_start_callback is None
10
10
  assert options.evaluation_cache is None
11
+ assert options.prefer_http2 is None
12
+
13
+
14
+ def test_prefer_http2_supported_option():
15
+ options = StatsigOptions(prefer_http2=True)
16
+ assert options.prefer_http2 is True
17
+ assert options.experimental_flags is None
18
+ options.prefer_http2 = False
19
+ assert options.prefer_http2 is False
20
+ options.prefer_http2 = None
21
+ assert options.prefer_http2 is None
11
22
 
12
23
 
13
24
  def test_initialize_partial_statsig_options():
@@ -0,0 +1,39 @@
1
+ """Static-only API contracts; checked with mypy --warn-unused-ignores."""
2
+
3
+ from typing import TypeVar
4
+
5
+ from google.protobuf.message import Message
6
+ from google.protobuf.struct_pb2 import Struct
7
+ from typing_extensions import assert_type
8
+
9
+ from statsig_python_core import Statsig, StatsigUser, TypedDynamicConfig
10
+
11
+ M = TypeVar("M", bound=Message)
12
+ T = TypeVar("T")
13
+
14
+
15
+ def wrapper(sdk: Statsig, user: StatsigUser, cls: type[M]) -> TypedDynamicConfig[M]:
16
+ return sdk.get_typed_config("config", user, message_type=cls)
17
+
18
+
19
+ def valid_calls(sdk: Statsig, user: StatsigUser) -> None:
20
+ assert_type(wrapper(sdk, user, Struct), TypedDynamicConfig[Struct])
21
+ assert_type(
22
+ sdk.get_typed_config("config", user, message_type=Struct),
23
+ TypedDynamicConfig[Struct],
24
+ )
25
+
26
+ def callback(result: TypedDynamicConfig[Struct]) -> None:
27
+ assert_type(result.value, Struct)
28
+
29
+ sdk.register_typed_config_callback("config", user, callback, message_type=Struct)
30
+
31
+
32
+ def unbounded_wrapper(sdk: Statsig, user: StatsigUser, cls: type[T]) -> None:
33
+ # Removing the Message bound must make these ignores fail as unused.
34
+ sdk.get_typed_config("config", user, message_type=cls) # type: ignore[type-var]
35
+ sdk.register_typed_config_callback("config", user, lambda result: None, message_type=cls) # type: ignore[type-var]
36
+
37
+
38
+ def invalid_class(sdk: Statsig, user: StatsigUser) -> None:
39
+ sdk.get_typed_config("config", user, message_type=dict) # type: ignore[type-var]
@@ -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.32.0-rc.2", optional = true }
50
+ oai-statsig-grpc = { path = "../statsig-grpc", version = "0.32.0-rc.5", 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"] }
@@ -0,0 +1,50 @@
1
+ use crate::StatsigOptions;
2
+
3
+ #[test]
4
+ fn test_prefer_http2_supported_option() {
5
+ use crate::networking::http2::http2_enabled;
6
+
7
+ assert!(http2_enabled(None));
8
+ assert!(http2_enabled(Some(&StatsigOptions::default())));
9
+ for enabled in [true, false] {
10
+ let options = StatsigOptions::builder()
11
+ .prefer_http2(Some(enabled))
12
+ .build();
13
+ assert_eq!(http2_enabled(Some(&options)), enabled);
14
+ assert_eq!(
15
+ serde_json::to_value(&options).unwrap()["prefer_http2"],
16
+ enabled
17
+ );
18
+ assert!(options.experimental_flags.is_none());
19
+ }
20
+
21
+ let old_flag_only = StatsigOptions {
22
+ experimental_flags: Some(["prefer_http2".to_string()].into()),
23
+ ..Default::default()
24
+ };
25
+ assert!(http2_enabled(Some(&old_flag_only)));
26
+ let explicit_off = StatsigOptions {
27
+ prefer_http2: Some(false),
28
+ ..old_flag_only
29
+ };
30
+ assert!(!http2_enabled(Some(&explicit_off)));
31
+ }
32
+
33
+ #[test]
34
+ fn test_sdk_instance_id_defaults_to_sdk_key() {
35
+ let options = StatsigOptions::new();
36
+
37
+ assert_eq!(options.get_sdk_instance_id("secret-key"), "secret-key");
38
+ }
39
+
40
+ #[test]
41
+ fn test_sdk_instance_id_can_be_overridden() {
42
+ let options = StatsigOptions::builder()
43
+ .sdk_instance_id(Some("validator:route:target".to_string()))
44
+ .build();
45
+
46
+ assert_eq!(
47
+ options.get_sdk_instance_id("secret-key"),
48
+ "validator:route:target"
49
+ );
50
+ }