kameleoon-client-python 3.13.0__tar.gz → 3.14.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kameleoon-client-python-3.13.0/kameleoon_client_python.egg-info → kameleoon-client-python-3.14.0}/PKG-INFO +1 -1
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/custom_data_info.py +7 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/data_file.py +19 -4
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/feature_flag.py +8 -8
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/rule.py +7 -10
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/kameleoon_client.py +29 -30
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/data_service_impl.py +1 -1
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/url_provider.py +1 -1
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/sdk_version.py +1 -1
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0/kameleoon_client_python.egg-info}/PKG-INFO +1 -1
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/MANIFEST.in +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/README.md +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/client_readiness/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/client_readiness/async_readiness.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/client_readiness/threading_readiness.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/experiment.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/me_group.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/rule_type.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/settings.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/variable.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/variation.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/variation_by_exposition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/browser.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/cbscores.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/conversion.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/cookie.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/custom_data.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/data.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/device.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/geolocation.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/kcs_heat.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/assigned_variation.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/forced_experiment_variation.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/forced_feature_variation.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/forced_variation.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/page_view_visit.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/visitor.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/visitor_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/visitor_slot.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/mapping_identifier.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/operating_system.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/page_view.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/personalization.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/unique_identifier.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/user_agent.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/visitor_visits.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/defaults.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/exceptions.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/domain.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/functions.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/hasher.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/logger.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/multi_threading.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/nonce.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/repeat_timer.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/scheduler.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/string_utils.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/visitor_code.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/hybrid/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/hybrid/hybrid_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/hybrid/hybrid_manager_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/kameleoon_client_config.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/kameleoon_client_factory.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/logging/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/logging/kameleoon_logger.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/logging/log_level.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/logging/logger.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/asyncexec/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/asyncexec/async_executor.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/data/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/data/data_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/evaluation/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/evaluation/evaluated_experiment.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/remote_data/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/remote_data/remote_data_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/remote_data/remote_visitor_data.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/tracking/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/tracking/tracking_builder.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/tracking/tracking_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/tracking/visitor_tracking_registry.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/warehouse/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/warehouse/warehouse_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/middleware.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/access_token_source.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/access_token_source_factory.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/activity_event.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/cookie/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/cookie/cookie_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/net_provider.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/net_provider_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/network_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/network_manager_factory.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/network_manager_factory_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/network_manager_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/query_builder.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/query_encodable.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/sendable.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/service_initialize_context.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/service_initialize_context_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/automation_service.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/automation_service_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/configuration_service.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/configuration_service_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/data_service.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/service.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/services/service_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/uri_helper.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/real_time/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/real_time/real_time_configuration_service.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/real_time/real_time_event.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/cache.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/cache_factory.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/cache_factory_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/cache_impl.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/browser_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/constants.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/conversion_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/cookie_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/custom_datum.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/device_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/exclusive_experiment_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/geolocation_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/kcs_heat_range_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/number_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/operating_system_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/page_title_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/page_url_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/page_view_number_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/previous_page_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/sdk_language_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/segment_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/string_value_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/target_experiment_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/target_feature_flag_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/target_personalization_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/targeting_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/time_elapsed_since_visit_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/unknown_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/visit_number_today_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/visit_number_total_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/visitor_code_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/conditions/visitor_new_return_condition.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/models.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/targeting_manager.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/tree_builder.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/tree_condition_factory.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/types/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/types/remote_visitor_data_filter.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/types/variable.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/types/variation.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon_client_python.egg-info/SOURCES.txt +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon_client_python.egg-info/dependency_links.txt +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon_client_python.egg-info/requires.txt +14 -14
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon_client_python.egg-info/top_level.txt +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/setup.cfg +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/setup.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/kameleoon_app/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/kameleoon_app/admin.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/kameleoon_app/apps.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/kameleoon_app/migrations/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/kameleoon_app/models.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/kameleoon_app/tests.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/kameleoon_app/views.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/manage.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/proj/__init__.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/proj/asgi.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/proj/settings.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/proj/urls.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/proj/wsgi.py +0 -0
- {kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/resources/config.yml +0 -0
|
@@ -17,6 +17,7 @@ class CustomDataInfo:
|
|
|
17
17
|
self.__mapping_identifier_index = None
|
|
18
18
|
self.__local_only = set()
|
|
19
19
|
self.__visitor_scope = set()
|
|
20
|
+
self.__custom_data_index_by_id = {}
|
|
20
21
|
if custom_data is not None:
|
|
21
22
|
for data in custom_data:
|
|
22
23
|
index = data.get("index")
|
|
@@ -26,6 +27,8 @@ class CustomDataInfo:
|
|
|
26
27
|
self.__local_only.add(index)
|
|
27
28
|
if data.get("scope") == self.SCOPE_VISITOR:
|
|
28
29
|
self.__visitor_scope.add(index)
|
|
30
|
+
if (id_ := data.get("id")) is not None:
|
|
31
|
+
self.__custom_data_index_by_id[id_] = index
|
|
29
32
|
if data.get("isMappingIdentifier"):
|
|
30
33
|
if bool(self.__mapping_identifier_index is not None):
|
|
31
34
|
KameleoonLogger.warning(
|
|
@@ -50,3 +53,7 @@ class CustomDataInfo:
|
|
|
50
53
|
def mapping_identifier_index(self) -> Optional[int]:
|
|
51
54
|
"""Take mapping identifier index"""
|
|
52
55
|
return self.__mapping_identifier_index
|
|
56
|
+
|
|
57
|
+
def get_custom_data_index_by_id(self, custom_data_id: int) -> Optional[int]:
|
|
58
|
+
"""Get corresponding custom data id by custom data index"""
|
|
59
|
+
return self.__custom_data_index_by_id.get(custom_data_id)
|
|
@@ -11,6 +11,7 @@ from kameleoon.configuration.settings import Settings
|
|
|
11
11
|
from kameleoon.configuration.variation_by_exposition import VariationByExposition
|
|
12
12
|
from kameleoon.exceptions import FeatureNotFound, FeatureEnvironmentDisabled
|
|
13
13
|
from kameleoon.logging.kameleoon_logger import KameleoonLogger
|
|
14
|
+
from kameleoon.targeting.models import Segment
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class DataFile:
|
|
@@ -28,15 +29,29 @@ class DataFile:
|
|
|
28
29
|
) -> "DataFile":
|
|
29
30
|
"""Creates new instance of `DataFile` initialized from the specified configuration JSON"""
|
|
30
31
|
settings = Settings(configuration.get("configuration"))
|
|
31
|
-
|
|
32
|
-
(feature_flag := FeatureFlag(jobj)).feature_key: feature_flag
|
|
33
|
-
for jobj in configuration.get("featureFlags") or []
|
|
34
|
-
}
|
|
32
|
+
segments = DataFile.__parse_segments(configuration)
|
|
35
33
|
custom_data_info = CustomDataInfo(configuration.get("customData"))
|
|
34
|
+
feature_flags = DataFile.__parse_feature_flags(configuration, segments, custom_data_info)
|
|
36
35
|
holdout = Experiment.from_json(configuration["holdout"]) if "holdout" in configuration else None
|
|
37
36
|
data_file = DataFile(environment, last_modified, settings, feature_flags, custom_data_info, holdout)
|
|
38
37
|
return data_file
|
|
39
38
|
|
|
39
|
+
@staticmethod
|
|
40
|
+
def __parse_segments(configuration: Dict[str, Any]) -> Dict[int, Segment]:
|
|
41
|
+
return {
|
|
42
|
+
(seg := Segment(jobj)).id_: seg
|
|
43
|
+
for jobj in configuration.get("segments") or []
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@staticmethod
|
|
47
|
+
def __parse_feature_flags(
|
|
48
|
+
configuration: Dict[str, Any], segments: Dict[int, Segment], cdi: CustomDataInfo
|
|
49
|
+
) -> Dict[str, FeatureFlag]:
|
|
50
|
+
return {
|
|
51
|
+
(ff := FeatureFlag(jobj, segments, cdi)).feature_key: ff # pylint: disable=C0103
|
|
52
|
+
for jobj in configuration.get("featureFlags") or []
|
|
53
|
+
}
|
|
54
|
+
|
|
40
55
|
# pylint: disable=R0913
|
|
41
56
|
def __init__(
|
|
42
57
|
self,
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from typing import Any, List, Dict, Optional
|
|
4
4
|
|
|
5
|
+
from kameleoon.configuration.custom_data_info import CustomDataInfo
|
|
5
6
|
from kameleoon.configuration.rule import Rule
|
|
6
7
|
from kameleoon.configuration.variation import Variation
|
|
7
8
|
from kameleoon.helpers.string_utils import StringUtils
|
|
9
|
+
from kameleoon.targeting.models import Segment
|
|
8
10
|
|
|
9
11
|
|
|
10
12
|
class FeatureFlag:
|
|
@@ -12,12 +14,7 @@ class FeatureFlag:
|
|
|
12
14
|
FeatureFlag is used for operating feature flags with rules
|
|
13
15
|
"""
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
def from_array(array: List[Dict[str, Any]]) -> List["FeatureFlag"]:
|
|
17
|
-
"""Create a list of FeatureFlags from the json array"""
|
|
18
|
-
return [FeatureFlag(item) for item in array]
|
|
19
|
-
|
|
20
|
-
def __init__(self, dict_json: Dict[str, Any]) -> None:
|
|
17
|
+
def __init__(self, dict_json: Dict[str, Any], segments: Dict[int, Segment], cdi: CustomDataInfo) -> None:
|
|
21
18
|
self.id_: int = dict_json.get("id", 0)
|
|
22
19
|
self.feature_key: str = dict_json.get("featureKey", "")
|
|
23
20
|
self.default_variation_key: str = dict_json.get("defaultVariationKey", "")
|
|
@@ -26,7 +23,9 @@ class FeatureFlag:
|
|
|
26
23
|
dict_json.get("variations", [])
|
|
27
24
|
)
|
|
28
25
|
self.environment_enabled = dict_json.get("environmentEnabled", False)
|
|
29
|
-
self.rules: List[Rule] = Rule.from_array(dict_json.get("rules", []))
|
|
26
|
+
self.rules: List[Rule] = Rule.from_array(dict_json.get("rules", []), segments)
|
|
27
|
+
bucketing_cd_id = dict_json.get("bucketingCustomDataId")
|
|
28
|
+
self.bucketing_custom_data_index = cdi.get_custom_data_index_by_id(bucketing_cd_id) if bucketing_cd_id else None
|
|
30
29
|
|
|
31
30
|
def get_variation(self, key: str) -> Optional[Variation]:
|
|
32
31
|
"""Retrun a variation for the given key"""
|
|
@@ -41,6 +40,7 @@ class FeatureFlag:
|
|
|
41
40
|
f"variations:{StringUtils.object_to_string(self.variations)},"
|
|
42
41
|
f"default_variation_key:'{self.default_variation_key}',"
|
|
43
42
|
f"me_group_name:'{self.me_group_name}',"
|
|
44
|
-
f"rules:{len(self.rules)}"
|
|
43
|
+
f"rules:{len(self.rules)},"
|
|
44
|
+
f"bucketing_custom_data_index:{self.bucketing_custom_data_index}"
|
|
45
45
|
f"}}"
|
|
46
46
|
)
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/configuration/rule.py
RENAMED
|
@@ -12,12 +12,11 @@ class Rule:
|
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
14
|
@staticmethod
|
|
15
|
-
def from_array(array: List[Dict[str, Any]]) -> List["Rule"]:
|
|
15
|
+
def from_array(array: List[Dict[str, Any]], segments: Dict[int, Segment]) -> List["Rule"]:
|
|
16
16
|
"""Create a list of Rules from the json array"""
|
|
17
|
+
return [Rule(item, segments) for item in array]
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def __init__(self, dict_json: Dict[str, Any]):
|
|
19
|
+
def __init__(self, dict_json: Dict[str, Any], segments: Dict[int, Segment]) -> None:
|
|
21
20
|
self.id_: int = dict_json["id"]
|
|
22
21
|
self.order: int = dict_json.get("order", 0)
|
|
23
22
|
type_literal: str = dict_json.get("type", "")
|
|
@@ -25,21 +24,19 @@ class Rule:
|
|
|
25
24
|
self.exposition: float = dict_json.get("exposition", 0.0)
|
|
26
25
|
self.experiment = Experiment.from_json(dict_json)
|
|
27
26
|
self.respool_time: Optional[int] = dict_json.get("respoolTime", None)
|
|
28
|
-
|
|
29
|
-
self.
|
|
30
|
-
self.
|
|
27
|
+
segment_id = dict_json.get("segmentId")
|
|
28
|
+
self.segment_id: int = segment_id or -1
|
|
29
|
+
self.targeting_segment: Optional[Segment] = segments.get(segment_id) if segment_id else None
|
|
31
30
|
|
|
32
31
|
@property
|
|
33
32
|
def is_experimentation(self) -> bool:
|
|
34
33
|
"""Return `true` if rule is `experimentation` type"""
|
|
35
|
-
|
|
36
34
|
return self.type == RuleType.EXPERIMENTATION
|
|
37
35
|
|
|
38
36
|
@property
|
|
39
37
|
def is_targeted_delivery(self) -> bool:
|
|
40
38
|
"""Return `true` if rule is `targeted delivery` type"""
|
|
41
|
-
|
|
42
39
|
return self.type == RuleType.TARGETED_DELIVERY
|
|
43
40
|
|
|
44
|
-
def __str__(self):
|
|
41
|
+
def __str__(self) -> str:
|
|
45
42
|
return f"Rule{{id:{self.id_}}}"
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/kameleoon_client.py
RENAMED
|
@@ -674,7 +674,7 @@ class KameleoonClient:
|
|
|
674
674
|
if forced_variation:
|
|
675
675
|
eval_exp = EvaluatedExperiment.from_forced_variation(forced_variation)
|
|
676
676
|
elif self.__is_visitor_not_in_holdout(
|
|
677
|
-
visitor, visitor_code, track, save
|
|
677
|
+
visitor, visitor_code, track, save, feature_flag.bucketing_custom_data_index
|
|
678
678
|
) and self.__is_ff_unrestricted_by_me_group(visitor, visitor_code, feature_flag):
|
|
679
679
|
eval_exp = self.__calculate_variation_rule_for_feature(visitor_code, feature_flag)
|
|
680
680
|
if save and not (forced_variation and forced_variation.simulated):
|
|
@@ -703,7 +703,7 @@ class KameleoonClient:
|
|
|
703
703
|
unrestricted = True
|
|
704
704
|
me_group = self._data_manager.data_file.me_groups.get(feature_flag.me_group_name)
|
|
705
705
|
if me_group:
|
|
706
|
-
code_for_hash = self.__get_code_for_hash(visitor, visitor_code)
|
|
706
|
+
code_for_hash = self.__get_code_for_hash(visitor, visitor_code, feature_flag.bucketing_custom_data_index)
|
|
707
707
|
me_group_hash = Hasher.obtain_hash_for_me_group(code_for_hash, feature_flag.me_group_name)
|
|
708
708
|
KameleoonLogger.debug(
|
|
709
709
|
"Calculated ME group hash %s for code: %s, meGroup: %s",
|
|
@@ -722,20 +722,18 @@ class KameleoonClient:
|
|
|
722
722
|
return unrestricted
|
|
723
723
|
|
|
724
724
|
def __is_visitor_not_in_holdout(
|
|
725
|
-
self, visitor: Optional[Visitor], visitor_code: str, track: bool, save: bool
|
|
725
|
+
self, visitor: Optional[Visitor], visitor_code: str, track: bool, save: bool, bucketing_cd_index: Optional[int]
|
|
726
726
|
) -> bool:
|
|
727
727
|
holdout = self._data_manager.data_file.holdout
|
|
728
728
|
if holdout is None:
|
|
729
729
|
return True
|
|
730
730
|
in_holdout_variation_key = "in-holdout"
|
|
731
731
|
KameleoonLogger.debug(
|
|
732
|
-
"CALL: KameleoonClient.__is_visitor_not_in_holdout(visitor, visitor_code: %s, track: %s, save: %s
|
|
733
|
-
visitor_code,
|
|
734
|
-
track,
|
|
735
|
-
save,
|
|
732
|
+
"CALL: KameleoonClient.__is_visitor_not_in_holdout(visitor, visitor_code: %s, track: %s, save: %s, "
|
|
733
|
+
"bucketing_cd_index: %s)", visitor_code, track, save, bucketing_cd_index
|
|
736
734
|
)
|
|
737
735
|
is_not_in_holdout = True
|
|
738
|
-
code_for_hash = self.__get_code_for_hash(visitor, visitor_code)
|
|
736
|
+
code_for_hash = self.__get_code_for_hash(visitor, visitor_code, bucketing_cd_index)
|
|
739
737
|
variation_hash = Hasher.obtain(code_for_hash, holdout.id_)
|
|
740
738
|
KameleoonLogger.debug("Calculated holdout hash %s for code %s", variation_hash, code_for_hash)
|
|
741
739
|
var_by_exp = holdout.get_variation(variation_hash)
|
|
@@ -745,12 +743,9 @@ class KameleoonClient:
|
|
|
745
743
|
eval_exp = EvaluatedExperiment(var_by_exp, holdout, RuleType.EXPERIMENTATION)
|
|
746
744
|
self.__save_variation(visitor_code, eval_exp)
|
|
747
745
|
KameleoonLogger.debug(
|
|
748
|
-
"RETURN: KameleoonClient.__is_visitor_not_in_holdout(visitor, visitor_code: %s, track: %s, save: %s
|
|
749
|
-
" -> (is_not_in_holdout: %s)",
|
|
750
|
-
visitor_code,
|
|
751
|
-
track,
|
|
752
|
-
save,
|
|
753
|
-
is_not_in_holdout,
|
|
746
|
+
"RETURN: KameleoonClient.__is_visitor_not_in_holdout(visitor, visitor_code: %s, track: %s, save: %s, "
|
|
747
|
+
"bucketing_cd_index: %s) -> (is_not_in_holdout: %s)",
|
|
748
|
+
visitor_code, track, save, bucketing_cd_index, is_not_in_holdout
|
|
754
749
|
)
|
|
755
750
|
return is_not_in_holdout
|
|
756
751
|
|
|
@@ -1601,21 +1596,25 @@ class KameleoonClient:
|
|
|
1601
1596
|
)
|
|
1602
1597
|
|
|
1603
1598
|
@staticmethod
|
|
1604
|
-
def __get_code_for_hash(visitor: Optional[Visitor], visitor_code: str) -> str:
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1599
|
+
def __get_code_for_hash(visitor: Optional[Visitor], visitor_code: str, bucketing_cd_index: Optional[int]) -> str:
|
|
1600
|
+
if visitor is None:
|
|
1601
|
+
return visitor_code
|
|
1602
|
+
# 1. Try to use the bucketing custom data's value if bucketingCustomDataId is defined
|
|
1603
|
+
if bucketing_cd_index:
|
|
1604
|
+
bucketing_custom_data = visitor.custom_data.get(bucketing_cd_index)
|
|
1605
|
+
if bucketing_custom_data and (len(bucketing_custom_data.values) > 0):
|
|
1606
|
+
return bucketing_custom_data.values[0]
|
|
1607
|
+
# 2. Use mappingIdentifier instead of visitorCode if it was set up
|
|
1608
|
+
return visitor.mapping_identifier or visitor_code
|
|
1611
1609
|
|
|
1612
1610
|
def __evaluate_cbscores(
|
|
1613
|
-
self, visitor: Optional[Visitor], visitor_code: str, rule: Rule
|
|
1611
|
+
self, visitor: Optional[Visitor], visitor_code: str, rule: Rule, bucketing_cd_index: Optional[int]
|
|
1614
1612
|
) -> Optional[EvaluatedExperiment]:
|
|
1615
1613
|
if (visitor is None) or (visitor.cbscores is None):
|
|
1616
1614
|
return None
|
|
1617
1615
|
KameleoonLogger.debug(
|
|
1618
|
-
"CALL: KameleoonClient.__evaluate_cbscores(visitor, visitor_code: %s, rule: %s)",
|
|
1616
|
+
"CALL: KameleoonClient.__evaluate_cbscores(visitor, visitor_code: %s, rule: %s, bucketing_cd_index: %s)",
|
|
1617
|
+
visitor_code, rule, bucketing_cd_index
|
|
1619
1618
|
)
|
|
1620
1619
|
eval_exp = None
|
|
1621
1620
|
var_id_group_by_scores = visitor.cbscores.values.get(rule.experiment.id_)
|
|
@@ -1633,16 +1632,14 @@ class KameleoonClient:
|
|
|
1633
1632
|
size = len(var_by_exp_in_cbs)
|
|
1634
1633
|
idx = 0
|
|
1635
1634
|
if size > 1:
|
|
1636
|
-
code_for_hash = self.__get_code_for_hash(visitor, visitor_code)
|
|
1635
|
+
code_for_hash = self.__get_code_for_hash(visitor, visitor_code, bucketing_cd_index)
|
|
1637
1636
|
variation_hash = Hasher.obtain(code_for_hash, rule.experiment.id_, rule.respool_time)
|
|
1638
1637
|
KameleoonLogger.debug("Calculated CBS hash %s for code %s", variation_hash, code_for_hash)
|
|
1639
1638
|
idx = min(int(variation_hash * size), size - 1)
|
|
1640
1639
|
eval_exp = EvaluatedExperiment.from_var_by_exp_rule(var_by_exp_in_cbs[idx], rule)
|
|
1641
1640
|
KameleoonLogger.debug(
|
|
1642
|
-
"RETURN: KameleoonClient.__evaluate_cbscores(visitor, visitor_code: %s, rule: %s
|
|
1643
|
-
visitor_code,
|
|
1644
|
-
rule,
|
|
1645
|
-
eval_exp,
|
|
1641
|
+
"RETURN: KameleoonClient.__evaluate_cbscores(visitor, visitor_code: %s, rule: %s, bucketing_cd_index: %s)"
|
|
1642
|
+
" -> (eval_exp: %s)", visitor_code, rule, bucketing_cd_index, eval_exp
|
|
1646
1643
|
)
|
|
1647
1644
|
return eval_exp
|
|
1648
1645
|
|
|
@@ -1656,7 +1653,7 @@ class KameleoonClient:
|
|
|
1656
1653
|
feature_flag,
|
|
1657
1654
|
)
|
|
1658
1655
|
visitor = self._visitor_manager.get_visitor(visitor_code)
|
|
1659
|
-
code_for_hash = self.__get_code_for_hash(visitor, visitor_code)
|
|
1656
|
+
code_for_hash = self.__get_code_for_hash(visitor, visitor_code, feature_flag.bucketing_custom_data_index)
|
|
1660
1657
|
eval_exp = None
|
|
1661
1658
|
for rule in feature_flag.rules:
|
|
1662
1659
|
forced_variation = visitor.get_forced_experiment_variation(rule.experiment.id_) if visitor else None
|
|
@@ -1676,7 +1673,9 @@ class KameleoonClient:
|
|
|
1676
1673
|
KameleoonLogger.debug("Calculated rule hash %s for code %s", hash_rule, code_for_hash)
|
|
1677
1674
|
# check main expostion for rule with hashRule
|
|
1678
1675
|
if hash_rule <= rule.exposition:
|
|
1679
|
-
eval_exp = self.__evaluate_cbscores(
|
|
1676
|
+
eval_exp = self.__evaluate_cbscores(
|
|
1677
|
+
visitor, visitor_code, rule, feature_flag.bucketing_custom_data_index
|
|
1678
|
+
)
|
|
1680
1679
|
if eval_exp:
|
|
1681
1680
|
break
|
|
1682
1681
|
if rule.is_targeted_delivery:
|
|
@@ -23,7 +23,7 @@ class DataServiceImpl(DataService, ServiceImpl):
|
|
|
23
23
|
if timeout is None:
|
|
24
24
|
timeout = self.network_manager.call_timeout
|
|
25
25
|
url = self.network_manager.url_provider.make_tracking_url()
|
|
26
|
-
request = Request(HttpMethod.POST, url, timeout, body=lines)
|
|
26
|
+
request = Request(HttpMethod.POST, url, timeout, body=lines, headers={"Content-Type": "*/*"})
|
|
27
27
|
response = self._make_call(
|
|
28
28
|
request, True, self.NUMBER_OF_RECONNECTION_ON_FAILURE_UNCRITICAL, self._TRACKING_CALL_RETRY_DELAY
|
|
29
29
|
)
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/url_provider.py
RENAMED
|
@@ -14,7 +14,7 @@ class UrlProvider:
|
|
|
14
14
|
_EXPERIMENTS_CONFIGURATIONS_PATH = "/visit/experimentsConfigurations"
|
|
15
15
|
_GET_DATA_PATH = "/map/map"
|
|
16
16
|
_POST_DATA_PATH = "/map/maps"
|
|
17
|
-
_CONFIGURATION_API_URL_FORMAT = "https://{0}/{1}"
|
|
17
|
+
_CONFIGURATION_API_URL_FORMAT = "https://{0}/v3/{1}"
|
|
18
18
|
_RT_CONFIGURATION_URL_FORMAT = "https://{0}:8110/sse?{1}"
|
|
19
19
|
_ACCESS_TOKEN_URL_FORMAT = "https://{0}/oauth/token"
|
|
20
20
|
_DATA_API_URL_FORMAT = "https://{0}{1}?{2}"
|
|
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
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/cbscores.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/conversion.py
RENAMED
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/custom_data.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/geolocation.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/kcs_heat.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/manager/visitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/operating_system.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/page_view.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/personalization.py
RENAMED
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/user_agent.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/data/visitor_visits.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/__init__.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/domain.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/functions.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/hasher.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/logger.py
RENAMED
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/nonce.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/repeat_timer.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/scheduler.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/string_utils.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/helpers/visitor_code.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/hybrid/__init__.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/hybrid/hybrid_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/logging/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/logging/log_level.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/logging/logger.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/managers/__init__.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
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/net_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/query_builder.py
RENAMED
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/sendable.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
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/network/uri_helper.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/real_time/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/__init__.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/cache.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/cache_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/storage/cache_impl.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/__init__.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
|
|
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
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/targeting/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/types/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/types/variable.py
RENAMED
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/kameleoon/types/variation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -4,24 +4,24 @@ sseclient-py<1.9.0,>=1.7.0
|
|
|
4
4
|
aiohttp<4.0.0,>=3.8.0
|
|
5
5
|
|
|
6
6
|
[test]
|
|
7
|
-
pytest-asyncio==0.21.*
|
|
8
|
-
pylint==2.12.*
|
|
9
|
-
flake8==4.0.1
|
|
10
|
-
aioresponses==0.7.*
|
|
11
|
-
types-python-dateutil==2.8.2
|
|
12
|
-
mypy==0.991
|
|
13
|
-
sseclient-py<1.9.0,>=1.7.0
|
|
14
|
-
types-PyYAML==5.4.3
|
|
15
7
|
twine==3.4.1
|
|
16
8
|
Django==3.2.4
|
|
17
|
-
freezegun==1.1.0
|
|
18
9
|
requests<3.0.0,>=2.25
|
|
10
|
+
types-requests==2.25.0
|
|
11
|
+
flake8==4.0.1
|
|
12
|
+
sseclient-py<1.9.0,>=1.7.0
|
|
13
|
+
pytest-django==4.4.0
|
|
14
|
+
pyyaml<6.1.0,>=5.4.0
|
|
15
|
+
pytest-asyncio==0.21.*
|
|
16
|
+
types-python-dateutil==2.8.2
|
|
17
|
+
aioresponses==0.7.*
|
|
18
|
+
pylint==2.12.*
|
|
19
|
+
pytest-cov==2.12.1
|
|
20
|
+
types-PyYAML==5.4.3
|
|
19
21
|
wheel==0.36.2
|
|
20
|
-
aiohttp<4.0.0,>=3.8.0
|
|
21
22
|
pytest-pythonpath==0.7.3
|
|
22
23
|
Werkzeug==2.0.1
|
|
23
24
|
pytest-ordering==0.6
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
pyyaml<6.1.0,>=5.4.0
|
|
25
|
+
freezegun==1.1.0
|
|
26
|
+
mypy==0.991
|
|
27
|
+
aiohttp<4.0.0,>=3.8.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/__init__.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
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/integration/proj/manage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kameleoon-client-python-3.13.0 → kameleoon-client-python-3.14.0}/tests/resources/config.yml
RENAMED
|
File without changes
|