statsig-python-core 0.19.5rc2606050349__tar.gz → 0.19.6__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.
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/Cargo.lock +6 -6
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/Cargo.toml +1 -1
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/PKG-INFO +1 -1
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/Cargo.toml +1 -1
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_logger.rs +27 -4
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig.rs +5 -2
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_metadata.rs +1 -1
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/event_logger_flush_tests.rs +81 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/mock_event_logging_adapter.rs +10 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/__init__.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/data_store.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/error_boundary.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/observability_client.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/output_logger_provider.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/persistent_storage.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/py.typed +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/requirements.txt +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/statsig.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/statsig_python_core.pyi +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/py_src/statsig_python_core/statsig_types.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/pyproject.toml +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/Cargo.toml +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/README.md +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/build.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/src/lib.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/src/mock_forward_proxy.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/src/protos/statsig_forward_proxy.proto +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/src/statsig_forward_proxy.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/src/statsig_grpc_client.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/src/statsig_grpc_err.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/.github/workflows/CI.yml +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/.gitignore +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/Cargo.toml +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/README.md +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/bin/stub_gen.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/data_store_base_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/interned_store_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/lib.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/observability_client_base_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/output_logger_provider_base_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/pyo_utils.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/raw_evaluation_compat_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/safe_gil.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/statsig_base_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/statsig_metadata_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/statsig_options_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/statsig_persistent_storage_override_adapter_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/statsig_types_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/statsig_user_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/unit_id_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/valid_primitives_py.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/fork_runner.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/mock_output_logger.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/mock_scrapi.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/profile_util.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/shutdown_sub_proc.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_data_store.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_error_boundary.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_experiment_serialization.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_exposure_logging.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_feature_gate_serialization.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_forking.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_get_dynamic_config.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_initialize_with_details.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_interned_store_preload.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_layer_param_exposure_sampling.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_layer_serialization.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_observability_client.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_output_logger_provider.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_override_adapter.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_performance.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_sec_expo_as_primary.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_shared_statsig.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_shutdown.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_statsig.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_statsig_options.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_statsig_user.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_statsig_user_json_serialization.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_statsig_user_none_fields.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_statsig_user_pickle.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/test_user_exposure_e2e.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/utils.py +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/build.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/resources/ip_supalite.table +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/resources/ua_parser_regex.yaml +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/resources/ua_parser_regex_lite.yaml +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/__tests__/interned_string_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/__tests__/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/__tests__/spec_store_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/compression/compression_helper.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/compression/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/console_capture/console_capture_handler.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/console_capture/console_capture_instances.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/console_capture/console_capture_options.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/console_capture/console_log_line_levels.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/console_capture/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/data_store_interface.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/dcs_str.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/__tests__/dynamic_returnable_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/__tests__/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/__tests__/rkyv_value_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/cmab_evaluator.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/comparisons/compare_arrays.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/comparisons/compare_numbers.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/comparisons/compare_str_with_regex.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/comparisons/compare_strings_in_array.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/comparisons/compare_time.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/comparisons/compare_versions.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/comparisons/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/country_lookup.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/dynamic_returnable.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/dynamic_string.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/dynamic_value.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/evaluation_details.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/evaluation_types.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/evaluation_types_initialize_v2.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/evaluation_types_v2.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/evaluator.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/evaluator_context.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/evaluator_result.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/evaluator_value.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/get_unit_id.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/rkyv_value.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/secondary_exposure_key.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/first_party_ua_parser.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_helpers.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_tokenizer.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_browser.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/__tests__/test_ua_parser_os.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/tokenizer.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/ua_parser.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/statsig_uaparser/window_iter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/third_party_ua_parser.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/evaluation/user_agent_parsing/ua_parser.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_emitter/statsig_event_emitter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_logger_constants.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_logger_ops_stats.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/batch.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queue.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queued_config_expo.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queued_event.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queued_experiment_expo.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queued_expo.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queued_gate_expo.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queued_layer_param_expo.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queued_passthrough.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/event_queue/queued_secondary_expo.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/exposure_sampling.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/exposure_utils.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/flush_interval.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/flush_type.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/sec_expo_as_primary_experiment.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/statsig_event.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging/statsig_event_internal.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging_adapter/event_logging_adapter_trait.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging_adapter/log_event_payload.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging_adapter/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging_adapter/statsig_http_event_logging_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/event_logging_adapter/statsig_local_file_event_logging_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/dynamic_configs_processor.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/feature_gates_processor.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/gcir_formatter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/gcir_options.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/gcir_process_iter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/layer_configs_processor.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/param_stores_processor.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/stringify_sec_exposures.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/gcir/target_app_id_utils.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/global_configs.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/hashing/ahash.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/hashing/djb2.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/hashing/hash_util.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/hashing/memo_sha_256.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/hashing/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/id_lists_adapter/id_list.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/id_lists_adapter/id_lists_adapter_trait.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/id_lists_adapter/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/id_lists_adapter/statsig_http_id_lists_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/init_details.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/initialize_evaluations_response.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/initialize_response.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/initialize_v2_response.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/instance_registry.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/interned_string.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/interned_values/__tests__/interned_store_eval_value_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/interned_values/__tests__/interned_store_returnable_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/interned_values/__tests__/interned_store_string_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/interned_values/__tests__/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/interned_values/interned_store.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/interned_values/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/lib.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/logging_utils.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/macros.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/__tests__/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/__tests__/response_data_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/http_types.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/network_client.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/network_error.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/providers/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/providers/net_provider_global.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/providers/net_provider_noop.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/providers/net_provider_reqwest.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/networking/proxy_config.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/observability/console_capture_observer.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/observability/diagnostics_observer.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/observability/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/observability/observability_client_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/observability/ops_stats.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/observability/sdk_errors_observer.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/output_logger.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/override_adapter/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/override_adapter/override_adapter_trait.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/override_adapter/statsig_local_override_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/persistent_storage/__tests__/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/persistent_storage/__tests__/sticky_values_serialization_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/persistent_storage/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/persistent_storage/persistent_storage_trait.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/persistent_storage/persistent_values_manager.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/sdk_diagnostics/diagnostics.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/sdk_diagnostics/diagnostics_utils.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/sdk_diagnostics/marker.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/sdk_diagnostics/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/sdk_event_emitter/event_emitter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/sdk_event_emitter/event_emitter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/sdk_event_emitter/event_types.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/sdk_event_emitter/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/spec_store.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/config_spec_background_sync_metrics.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/response_format.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/specs_adapter_trait.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/statsig_bootstrap_specs_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/statsig_customized_specs_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/statsig_data_store_specs_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/statsig_grpc_specs_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/statsig_http_specs_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_adapter/statsig_local_file_specs_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/__tests__/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/__tests__/proto_specs_syncing_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/__tests__/proto_specs_unknown_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/__tests__/proto_specs_vs_json_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/__tests__/proto_stream_reader_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/cmab_types.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/explicit_params.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/param_store_types.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/proto_specs.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/proto_stream_reader.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/spec_types.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/specs_hash_map.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/specs_response/statsig_config_specs.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_core_api_options.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_err.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_global.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_options.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_runtime.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_type_factories.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_types.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig_types_raw.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/user/into_optional.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/user/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/user/statsig_user.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/user/statsig_user_builder.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/user/statsig_user_internal.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/user/statsig_user_loggable.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/user/unit_id.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/user/user_data.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/utils/mod.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/check_gate_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/customized_specs_adapter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/big_number_dcs.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/check_gate_perf_dcs.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/company_id_list +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/dcs_error.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/dcs_missing_gates.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/dcs_non_case_sensitive.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/dcs_user_agent_versions.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/dcs_with_analytical_exposure_sampling.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/dcs_with_checksum.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/dcs_with_sampling.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/dcs_with_sdk_configs.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/demo_proj_dcs.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/demo_proj_dcs.pb.br +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/eval_proj_dcs.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/eval_proj_dcs.pb.br +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/get_id_lists.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/perf_proj_dcs.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/perf_proj_dcs.pb.br +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/shared_dict_dict_only.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/shared_dict_original_dcs.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/shared_dict_response_uncompressed.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/shared_dict_response_with_dict.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/shared_dict_response_without_dict.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/test_must_pass_user_agents.txt +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/test_user_agents.txt +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/ua_string_cases.json +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data/unknown_enum.pb.br +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data_store_bytes_adapter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data_store_json_bytes_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data_store_json_only_no_bytes_methods_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data_store_lock_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/data_store_proto_bytes_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/direct_gcir_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/dynamic_string_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/dynamic_value_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/evaluation_details_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/evaluator_value_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/event_logger_failing_flush_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/event_logger_high_qps_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/event_logger_usage_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/expected_evaluation_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/exposure_sampling_key_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/exposure_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/flushing_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/gate_inversion_eval_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/gcir_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/global_configs_test.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/grpc_specs_adapter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/hash_util_evaluation_hash_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/http_specs_adapter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/initialize_timeout_test.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/instance_registry_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/layer_serialization_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/list_methods_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/memory_leak_per_request_users_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/network_client_streaming_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/network_client_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/network_failure_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/observability_client_usage_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/output_logger_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/override_adapter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/perf_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/proto_specs_usage_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/spec_store_lock_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/spec_types_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_disable_network_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_environment_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_event_emitter_usage_test.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_global_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_local_file_event_logging_adapter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_local_file_specs_adapter_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_options_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_shared_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_user_builder_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_user_field_accessor_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_user_internal_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_user_loggable_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/statsig_user_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/syncing_network_failure_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/typed_getters_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/ua_parser_util_test.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/user_agent_tests_first_party.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/user_json_tests.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/env_var_guard.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/helpers.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/mock_data_store.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/mock_log_provider.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/mock_observability_client.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/mock_scrapi.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/mock_specs_adapter.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/mock_specs_listener.rs +0 -0
- {statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/tests/utils/mod.rs +0 -0
|
@@ -2902,7 +2902,7 @@ dependencies = [
|
|
|
2902
2902
|
|
|
2903
2903
|
[[package]]
|
|
2904
2904
|
name = "sigstat-grpc"
|
|
2905
|
-
version = "0.19.
|
|
2905
|
+
version = "0.19.6"
|
|
2906
2906
|
dependencies = [
|
|
2907
2907
|
"async-trait",
|
|
2908
2908
|
"chrono",
|
|
@@ -2994,7 +2994,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|
|
2994
2994
|
|
|
2995
2995
|
[[package]]
|
|
2996
2996
|
name = "statsig-node"
|
|
2997
|
-
version = "0.19.
|
|
2997
|
+
version = "0.19.6"
|
|
2998
2998
|
dependencies = [
|
|
2999
2999
|
"async-trait",
|
|
3000
3000
|
"napi",
|
|
@@ -3009,7 +3009,7 @@ dependencies = [
|
|
|
3009
3009
|
|
|
3010
3010
|
[[package]]
|
|
3011
3011
|
name = "statsig-pyo3"
|
|
3012
|
-
version = "0.19.
|
|
3012
|
+
version = "0.19.6"
|
|
3013
3013
|
dependencies = [
|
|
3014
3014
|
"async-trait",
|
|
3015
3015
|
"lazy_static",
|
|
@@ -3024,7 +3024,7 @@ dependencies = [
|
|
|
3024
3024
|
|
|
3025
3025
|
[[package]]
|
|
3026
3026
|
name = "statsig-rust"
|
|
3027
|
-
version = "0.19.
|
|
3027
|
+
version = "0.19.6"
|
|
3028
3028
|
dependencies = [
|
|
3029
3029
|
"ahash",
|
|
3030
3030
|
"arc-swap",
|
|
@@ -3075,7 +3075,7 @@ dependencies = [
|
|
|
3075
3075
|
|
|
3076
3076
|
[[package]]
|
|
3077
3077
|
name = "statsig_elixir"
|
|
3078
|
-
version = "0.19.
|
|
3078
|
+
version = "0.19.6"
|
|
3079
3079
|
dependencies = [
|
|
3080
3080
|
"async-trait",
|
|
3081
3081
|
"parking_lot",
|
|
@@ -3088,7 +3088,7 @@ dependencies = [
|
|
|
3088
3088
|
|
|
3089
3089
|
[[package]]
|
|
3090
3090
|
name = "statsig_ffi"
|
|
3091
|
-
version = "0.19.
|
|
3091
|
+
version = "0.19.6"
|
|
3092
3092
|
dependencies = [
|
|
3093
3093
|
"async-trait",
|
|
3094
3094
|
"cbindgen",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: statsig_python_core
|
|
3
|
-
Version: 0.19.
|
|
3
|
+
Version: 0.19.6
|
|
4
4
|
Classifier: Programming Language :: Rust
|
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/Cargo.toml
RENAMED
|
@@ -41,7 +41,7 @@ serde_json = { version = "1.0.143", features = [
|
|
|
41
41
|
] }
|
|
42
42
|
serde_with = "3.4.0"
|
|
43
43
|
sha2 = "0.10.8"
|
|
44
|
-
sigstat-grpc = { path = "../statsig-grpc", version = "0.19.
|
|
44
|
+
sigstat-grpc = { path = "../statsig-grpc", version = "0.19.6", optional = true }
|
|
45
45
|
simple_logger = { version = "5.0.0" }
|
|
46
46
|
tempfile = "3.8.1"
|
|
47
47
|
tokio = { version = "1.39.1", features = ["full"] }
|
|
@@ -194,14 +194,37 @@ impl EventLogger {
|
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
pub async fn flush_all_pending_events(
|
|
197
|
+
pub async fn flush_all_pending_events(
|
|
198
|
+
&self,
|
|
199
|
+
statsig_rt: &Arc<StatsigRuntime>,
|
|
200
|
+
) -> Result<(), StatsigErr> {
|
|
201
|
+
// Wait for any background limit-flush tasks that are already in flight.
|
|
202
|
+
// They dequeue their batch before the network call, so those events are
|
|
203
|
+
// no longer in the queue and would otherwise not be awaited by a manual
|
|
204
|
+
// flush. Without this, flush_events() can return while exposures are
|
|
205
|
+
// still being delivered (or, on shutdown, get aborted and dropped).
|
|
206
|
+
// Scheduled flushes run inline in the bg loop (not as LIMIT_FLUSH_TAG
|
|
207
|
+
// tasks), so a manual flush can still return while one is in flight;
|
|
208
|
+
// shutdown() stops and awaits the bg loop, covering flush-then-shutdown.
|
|
209
|
+
statsig_rt.await_tasks_with_tag(LIMIT_FLUSH_TAG).await;
|
|
210
|
+
|
|
198
211
|
self.try_flush_all_pending_events(FlushType::Manual).await
|
|
199
212
|
}
|
|
200
213
|
|
|
201
|
-
pub async fn shutdown(&self) -> Result<(), StatsigErr> {
|
|
202
|
-
|
|
214
|
+
pub async fn shutdown(&self, statsig_rt: &Arc<StatsigRuntime>) -> Result<(), StatsigErr> {
|
|
215
|
+
// Stop the background loop so it won't spawn new limit-flush tasks while
|
|
216
|
+
// we are draining.
|
|
203
217
|
self.shutdown_notify.notify_one();
|
|
204
|
-
|
|
218
|
+
|
|
219
|
+
// Wait for the background loop (which may be mid scheduled-flush) and any
|
|
220
|
+
// in-flight limit-flush tasks to finish before we let the runtime abort
|
|
221
|
+
// tasks. Each of these can hold a batch it already dequeued; aborting
|
|
222
|
+
// them mid network-request silently drops those exposures.
|
|
223
|
+
statsig_rt.await_tasks_with_tag(BG_LOOP_TAG).await;
|
|
224
|
+
statsig_rt.await_tasks_with_tag(LIMIT_FLUSH_TAG).await;
|
|
225
|
+
|
|
226
|
+
// Finally flush whatever remains in the queue.
|
|
227
|
+
self.try_flush_all_pending_events(FlushType::Shutdown).await
|
|
205
228
|
}
|
|
206
229
|
|
|
207
230
|
pub fn force_shutdown(&self) {
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/statsig.rs
RENAMED
|
@@ -354,7 +354,7 @@ impl Statsig {
|
|
|
354
354
|
|
|
355
355
|
try_join!(
|
|
356
356
|
id_list_shutdown,
|
|
357
|
-
self.event_logger.shutdown(),
|
|
357
|
+
self.event_logger.shutdown(&self.statsig_runtime),
|
|
358
358
|
self.specs_adapter.inner.shutdown(timeout, &self.statsig_runtime),
|
|
359
359
|
)
|
|
360
360
|
} => {
|
|
@@ -677,7 +677,10 @@ impl Statsig {
|
|
|
677
677
|
}
|
|
678
678
|
|
|
679
679
|
pub async fn flush_events(&self) {
|
|
680
|
-
let _ = self
|
|
680
|
+
let _ = self
|
|
681
|
+
.event_logger
|
|
682
|
+
.flush_all_pending_events(&self.statsig_runtime)
|
|
683
|
+
.await;
|
|
681
684
|
}
|
|
682
685
|
}
|
|
683
686
|
|
|
@@ -10,7 +10,7 @@ lazy_static! {
|
|
|
10
10
|
static ref STATSIG_METADATA: RwLock<StatsigMetadata> = RwLock::new(StatsigMetadata::new());
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
pub const SDK_VERSION: &str = "0.19.
|
|
13
|
+
pub const SDK_VERSION: &str = "0.19.6";
|
|
14
14
|
|
|
15
15
|
const TAG: &str = stringify!(StatsigMetadata);
|
|
16
16
|
|
|
@@ -78,6 +78,87 @@ async fn test_limit_flushing() {
|
|
|
78
78
|
teardown(Some(statsig)).await;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
#[tokio::test]
|
|
82
|
+
#[serial]
|
|
83
|
+
async fn test_shutdown_waits_for_inflight_limit_flush() {
|
|
84
|
+
let mut options = StatsigOptions::new();
|
|
85
|
+
options.event_logging_max_queue_size = Some(10);
|
|
86
|
+
options.event_logging_max_pending_batch_queue_size = Some(60);
|
|
87
|
+
|
|
88
|
+
let (statsig, logging_adapter, _) = setup(options).await;
|
|
89
|
+
|
|
90
|
+
// Drain any events queued during initialization (e.g. diagnostics) so the
|
|
91
|
+
// queue is empty before we set up the in-flight scenario.
|
|
92
|
+
statsig.flush_events().await;
|
|
93
|
+
logging_adapter
|
|
94
|
+
.no_diagnostics_logged_event_count
|
|
95
|
+
.store(0, Ordering::SeqCst);
|
|
96
|
+
|
|
97
|
+
// Make the network call slow so the background limit-flush task is still
|
|
98
|
+
// in flight (it has already dequeued its batch) when we call shutdown.
|
|
99
|
+
logging_adapter.log_delay_ms.store(500, Ordering::SeqCst);
|
|
100
|
+
|
|
101
|
+
// Exactly one full batch triggers exactly one limit flush, which dequeues
|
|
102
|
+
// all 10 events and leaves the queue empty.
|
|
103
|
+
let baseline = logging_adapter.times_called.load(Ordering::SeqCst);
|
|
104
|
+
log_some_events(&statsig, 10);
|
|
105
|
+
|
|
106
|
+
// Wait until the limit-flush task has entered the (slow) network call.
|
|
107
|
+
// Use times_called (incremented before the sleep) rather than on_log_notify,
|
|
108
|
+
// which can have a stale permit left by the drain flush_events() above.
|
|
109
|
+
assert_eventually!(|| logging_adapter.times_called.load(Ordering::SeqCst) > baseline);
|
|
110
|
+
|
|
111
|
+
// Shutdown while the limit flush is in flight. The queue is empty, so the
|
|
112
|
+
// only events in the system are the ones held by the in-flight background
|
|
113
|
+
// task. Before the fix, runtime shutdown aborted that task mid-request and
|
|
114
|
+
// those 10 exposures were silently dropped.
|
|
115
|
+
statsig.shutdown().await.unwrap();
|
|
116
|
+
|
|
117
|
+
assert_eq!(
|
|
118
|
+
logging_adapter
|
|
119
|
+
.no_diagnostics_logged_event_count
|
|
120
|
+
.load(Ordering::SeqCst),
|
|
121
|
+
10
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
teardown(Some(statsig)).await;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
#[tokio::test]
|
|
128
|
+
#[serial]
|
|
129
|
+
async fn test_flush_events_waits_for_inflight_limit_flush() {
|
|
130
|
+
let mut options = StatsigOptions::new();
|
|
131
|
+
options.event_logging_max_queue_size = Some(10);
|
|
132
|
+
options.event_logging_max_pending_batch_queue_size = Some(60);
|
|
133
|
+
|
|
134
|
+
let (statsig, logging_adapter, _) = setup(options).await;
|
|
135
|
+
|
|
136
|
+
statsig.flush_events().await;
|
|
137
|
+
logging_adapter
|
|
138
|
+
.no_diagnostics_logged_event_count
|
|
139
|
+
.store(0, Ordering::SeqCst);
|
|
140
|
+
|
|
141
|
+
logging_adapter.log_delay_ms.store(500, Ordering::SeqCst);
|
|
142
|
+
|
|
143
|
+
let baseline = logging_adapter.times_called.load(Ordering::SeqCst);
|
|
144
|
+
log_some_events(&statsig, 10);
|
|
145
|
+
|
|
146
|
+
assert_eventually!(|| logging_adapter.times_called.load(Ordering::SeqCst) > baseline);
|
|
147
|
+
|
|
148
|
+
// A manual flush must also await background limit-flush tasks already in
|
|
149
|
+
// flight, not just the batches currently in the queue.
|
|
150
|
+
statsig.flush_events().await;
|
|
151
|
+
|
|
152
|
+
assert_eq!(
|
|
153
|
+
logging_adapter
|
|
154
|
+
.no_diagnostics_logged_event_count
|
|
155
|
+
.load(Ordering::SeqCst),
|
|
156
|
+
10
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
teardown(Some(statsig)).await;
|
|
160
|
+
}
|
|
161
|
+
|
|
81
162
|
#[tokio::test]
|
|
82
163
|
#[serial]
|
|
83
164
|
async fn test_scheduled_flush_batch_size() {
|
|
@@ -5,6 +5,7 @@ use statsig_rust::{EventLoggingAdapter, StatsigErr, StatsigRuntime};
|
|
|
5
5
|
use std::collections::HashMap;
|
|
6
6
|
use std::sync::atomic::{AtomicU64, Ordering};
|
|
7
7
|
use std::sync::{Arc, Mutex};
|
|
8
|
+
use std::time::Duration;
|
|
8
9
|
use tokio::sync::Notify;
|
|
9
10
|
|
|
10
11
|
pub struct MockEventLoggingAdapter {
|
|
@@ -14,6 +15,9 @@ pub struct MockEventLoggingAdapter {
|
|
|
14
15
|
pub logged_payloads: Mutex<Vec<LogEventPayload>>,
|
|
15
16
|
pub mocked_log_events_result: Mutex<Result<bool, StatsigErr>>,
|
|
16
17
|
pub on_log_notify: Notify,
|
|
18
|
+
// When > 0, log_events sleeps this long (simulating a slow network call)
|
|
19
|
+
// after signalling on_log_notify but before recording the events.
|
|
20
|
+
pub log_delay_ms: AtomicU64,
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
impl Default for MockEventLoggingAdapter {
|
|
@@ -31,6 +35,7 @@ impl MockEventLoggingAdapter {
|
|
|
31
35
|
logged_payloads: Mutex::new(Vec::new()),
|
|
32
36
|
mocked_log_events_result: Mutex::new(Ok(true)),
|
|
33
37
|
on_log_notify: Notify::new(),
|
|
38
|
+
log_delay_ms: AtomicU64::new(0),
|
|
34
39
|
}
|
|
35
40
|
}
|
|
36
41
|
|
|
@@ -99,6 +104,11 @@ impl EventLoggingAdapter for MockEventLoggingAdapter {
|
|
|
99
104
|
self.times_called.fetch_add(1, Ordering::SeqCst);
|
|
100
105
|
self.on_log_notify.notify_one();
|
|
101
106
|
|
|
107
|
+
let delay_ms = self.log_delay_ms.load(Ordering::SeqCst);
|
|
108
|
+
if delay_ms > 0 {
|
|
109
|
+
tokio::time::sleep(Duration::from_millis(delay_ms)).await;
|
|
110
|
+
}
|
|
111
|
+
|
|
102
112
|
let result = self.mocked_log_events_result.lock().unwrap().clone()?;
|
|
103
113
|
let mut payloads = self.logged_payloads.lock().unwrap();
|
|
104
114
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/Cargo.toml
RENAMED
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/README.md
RENAMED
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-grpc/src/lib.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/.gitignore
RENAMED
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/Cargo.toml
RENAMED
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/lib.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/pyo_utils.rs
RENAMED
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/safe_gil.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/src/unit_id_py.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-pyo3/tests/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{statsig_python_core-0.19.5rc2606050349 → statsig_python_core-0.19.6}/statsig-rust/src/dcs_str.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|