payi 0.1.0a99__tar.gz → 0.1.0a101__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of payi might be problematic. Click here for more details.
- payi-0.1.0a101/.release-please-manifest.json +3 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/CHANGELOG.md +16 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/PKG-INFO +1 -1
- {payi-0.1.0a99 → payi-0.1.0a101}/pyproject.toml +1 -1
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_version.py +1 -1
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/instrument.py +112 -22
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/ingest.py +14 -10
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/ingest_units_params.py +0 -2
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/test_ingest.py +0 -4
- payi-0.1.0a99/.release-please-manifest.json +0 -3
- {payi-0.1.0a99 → payi-0.1.0a101}/.gitignore +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/CONTRIBUTING.md +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/LICENSE +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/README.md +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/SECURITY.md +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/api.md +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/bin/check-release-environment +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/bin/publish-pypi +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/examples/.keep +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/mypy.ini +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/noxfile.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/release-please-config.json +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/requirements-dev.lock +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/requirements.lock +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_base_client.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_client.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_compat.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_constants.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_exceptions.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_files.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_models.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_qs.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_resource.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_streaming.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_types.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_logs.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_proxy.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_reflection.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_resources_proxy.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_streams.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_sync.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_transform.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_typing.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/_utils/_utils.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/.keep +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/AnthropicInstrumentor.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/BedrockInstrumentor.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/GoogleGenAiInstrumentor.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/OpenAIInstrumentor.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/Stopwatch.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/VertexInstrumentor.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/VertexRequest.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/helpers.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/lib/version_helper.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/pagination.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/py.typed +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/categories/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/categories/categories.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/categories/fixed_cost_resources.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/categories/resources.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/limits/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/limits/limits.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/limits/tags.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/requests/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/requests/properties.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/requests/requests.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/requests/result.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/definitions/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/definitions/definitions.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/definitions/kpis.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/definitions/limit_config.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/definitions/version.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/kpis.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/properties.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/resources/use_cases/use_cases.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/bulk_ingest_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/categories/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/categories/fixed_cost_resource_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/categories/resource_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/categories/resource_list_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/category_delete_resource_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/category_delete_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/category_list_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/category_list_resources_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/category_resource_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/category_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/cost_data.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/cost_details.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/default_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/ingest_bulk_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/ingest_event_param.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/ingest_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limit_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limit_history_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limit_list_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limit_list_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limit_reset_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limit_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limit_update_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/limit_tags.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/tag_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/tag_create_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/tag_delete_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/tag_list_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/tag_remove_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/tag_remove_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/tag_update_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/limits/tag_update_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/pay_i_common_models_api_router_header_info_param.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/requests/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/requests/property_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/requests/request_result.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/requests_data.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared/evaluation_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared/ingest_units.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared/pay_i_common_models_budget_management_cost_details_base.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared/pay_i_common_models_budget_management_create_limit_base.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared/properties_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared/xproxy_error.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared/xproxy_result.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared_params/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared_params/ingest_units.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/shared_params/pay_i_common_models_budget_management_create_limit_base.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/total_cost_data.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_case_create_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_case_delete_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_case_retrieve_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definition_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definition_list_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definition_update_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/kpi_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/kpi_create_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/kpi_delete_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/kpi_list_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/kpi_list_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/kpi_retrieve_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/kpi_update_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/kpi_update_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/definitions/limit_config_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/kpi_list_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/kpi_list_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/kpi_update_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/property_create_params.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/property_create_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/src/payi/types/use_cases/use_case_definition.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/categories/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/categories/test_fixed_cost_resources.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/categories/test_resources.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/limits/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/limits/test_tags.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/requests/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/requests/test_properties.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/requests/test_result.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/test_categories.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/test_limits.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/test_use_cases.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/use_cases/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/use_cases/definitions/__init__.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/use_cases/definitions/test_kpis.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/use_cases/definitions/test_limit_config.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/use_cases/definitions/test_version.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/use_cases/test_definitions.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/use_cases/test_kpis.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/api_resources/use_cases/test_properties.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/conftest.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/sample_file.txt +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_client.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_deepcopy.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_extract_files.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_files.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_models.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_qs.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_required_args.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_response.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_streaming.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_transform.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_utils/test_proxy.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/test_utils/test_typing.py +0 -0
- {payi-0.1.0a99 → payi-0.1.0a101}/tests/utils.py +0 -0
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.0-alpha.101 (2025-07-18)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.1.0-alpha.100...v0.1.0-alpha.101](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.100...v0.1.0-alpha.101)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* properly merge use case state with parent context ([#344](https://github.com/Pay-i/pay-i-python/issues/344)) ([2a001f8](https://github.com/Pay-i/pay-i-python/commit/2a001f8c49a815c08494f08e1393e67728c6da48))
|
|
10
|
+
|
|
11
|
+
## 0.1.0-alpha.100 (2025-07-16)
|
|
12
|
+
|
|
13
|
+
Full Changelog: [v0.1.0-alpha.99...v0.1.0-alpha.100](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.99...v0.1.0-alpha.100)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* use cases and request property bags ([#342](https://github.com/Pay-i/pay-i-python/issues/342)) ([985209e](https://github.com/Pay-i/pay-i-python/commit/985209e1ac179ac7338d3845bd6498aa3d08afc3))
|
|
18
|
+
|
|
3
19
|
## 0.1.0-alpha.99 (2025-07-15)
|
|
4
20
|
|
|
5
21
|
Full Changelog: [v0.1.0-alpha.98...v0.1.0-alpha.99](https://github.com/Pay-i/pay-i-python/compare/v0.1.0-alpha.98...v0.1.0-alpha.99)
|
|
@@ -112,11 +112,16 @@ class _ProviderRequest:
|
|
|
112
112
|
except Exception as _ex:
|
|
113
113
|
pass
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
existing_properties = self._ingest.get("properties", None)
|
|
116
|
+
if not existing_properties:
|
|
117
|
+
existing_properties = {}
|
|
118
|
+
|
|
119
|
+
existing_properties['system.failure'] = exception_str
|
|
116
120
|
if fields:
|
|
117
121
|
failure_description = ",".join(fields)
|
|
118
|
-
|
|
119
|
-
|
|
122
|
+
existing_properties["system.failure.description"] = failure_description[:128]
|
|
123
|
+
|
|
124
|
+
self._ingest["properties"] = existing_properties
|
|
120
125
|
|
|
121
126
|
if "http_status_code" not in self._ingest:
|
|
122
127
|
# use a non existent http status code so when presented to the user, the origin is clear
|
|
@@ -150,17 +155,21 @@ class PayiInstrumentConfig(TypedDict, total=False):
|
|
|
150
155
|
use_case_name: Optional[str]
|
|
151
156
|
use_case_id: Optional[str]
|
|
152
157
|
use_case_version: Optional[int]
|
|
158
|
+
use_case_properties: Optional["dict[str, str]"]
|
|
153
159
|
user_id: Optional[str]
|
|
154
160
|
request_tags: Optional["list[str]"]
|
|
161
|
+
request_properties: Optional["dict[str, str]"]
|
|
155
162
|
|
|
156
163
|
class PayiContext(TypedDict, total=False):
|
|
157
164
|
use_case_name: Optional[str]
|
|
158
165
|
use_case_id: Optional[str]
|
|
159
166
|
use_case_version: Optional[int]
|
|
160
167
|
use_case_step: Optional[str]
|
|
168
|
+
use_case_properties: Optional["dict[str, str]"]
|
|
161
169
|
limit_ids: Optional['list[str]']
|
|
162
170
|
user_id: Optional[str]
|
|
163
171
|
request_tags: Optional["list[str]"]
|
|
172
|
+
request_properties: Optional["dict[str, str]"]
|
|
164
173
|
price_as_category: Optional[str]
|
|
165
174
|
price_as_resource: Optional[str]
|
|
166
175
|
resource_scope: Optional[str]
|
|
@@ -172,9 +181,11 @@ class _Context(TypedDict, total=False):
|
|
|
172
181
|
use_case_id: Optional[str]
|
|
173
182
|
use_case_version: Optional[int]
|
|
174
183
|
use_case_step: Optional[str]
|
|
184
|
+
use_case_properties: Optional["dict[str, str]"]
|
|
175
185
|
limit_ids: Optional['list[str]']
|
|
176
186
|
user_id: Optional[str]
|
|
177
187
|
request_tags: Optional["list[str]"]
|
|
188
|
+
request_properties: Optional["dict[str, str]"]
|
|
178
189
|
price_as_category: Optional[str]
|
|
179
190
|
price_as_resource: Optional[str]
|
|
180
191
|
resource_scope: Optional[str]
|
|
@@ -645,6 +656,8 @@ class _PayiInstrumentor:
|
|
|
645
656
|
use_case_step: Optional[str]= None,
|
|
646
657
|
user_id: Optional[str]= None,
|
|
647
658
|
request_tags: Optional["list[str]"] = None,
|
|
659
|
+
request_properties: Optional["dict[str, str]"] = None,
|
|
660
|
+
use_case_properties: Optional["dict[str, str]"] = None,
|
|
648
661
|
price_as_category: Optional[str] = None,
|
|
649
662
|
price_as_resource: Optional[str] = None,
|
|
650
663
|
resource_scope: Optional[str] = None,
|
|
@@ -660,29 +673,58 @@ class _PayiInstrumentor:
|
|
|
660
673
|
parent_use_case_name = parent_context.get("use_case_name", None)
|
|
661
674
|
parent_use_case_id = parent_context.get("use_case_id", None)
|
|
662
675
|
parent_use_case_version = parent_context.get("use_case_version", None)
|
|
676
|
+
parent_use_case_step = parent_context.get("use_case_step", None)
|
|
677
|
+
|
|
678
|
+
assign_use_case_values = False
|
|
663
679
|
|
|
664
680
|
if use_case_name is None:
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
681
|
+
if parent_use_case_name:
|
|
682
|
+
# If no use_case_name specified, use previous values
|
|
683
|
+
context["use_case_name"] = parent_use_case_name
|
|
684
|
+
assign_use_case_values = True
|
|
669
685
|
elif len(use_case_name) == 0:
|
|
670
686
|
# Empty string explicitly blocks inheriting from the parent state
|
|
671
687
|
context["use_case_name"] = None
|
|
672
688
|
context["use_case_id"] = None
|
|
673
689
|
context["use_case_version"] = None
|
|
674
690
|
context["use_case_step"] = None
|
|
691
|
+
context["use_case_properties"] = None
|
|
675
692
|
else:
|
|
676
693
|
if use_case_name == parent_use_case_name:
|
|
677
694
|
# Same use case name, use previous ID unless new one specified
|
|
678
695
|
context["use_case_name"] = use_case_name
|
|
679
|
-
context["use_case_id"] = use_case_id if use_case_id else parent_use_case_id
|
|
680
|
-
context["use_case_version"] = use_case_version if use_case_version else parent_use_case_version
|
|
681
696
|
else:
|
|
682
|
-
# Different use case name, use specified ID or generate one
|
|
683
697
|
context["use_case_name"] = use_case_name
|
|
684
|
-
|
|
685
|
-
|
|
698
|
+
|
|
699
|
+
# Different use case name, use specified ID or generate one.
|
|
700
|
+
# By assigning to a new value to parent_use_case_id we keep the assignment logic below simple and consistent with
|
|
701
|
+
# assign the caller's use_case_id if specified or the newly generated one.
|
|
702
|
+
# The use case id stored in the parent context is not mutated.
|
|
703
|
+
parent_use_case_id = str(uuid.uuid4())
|
|
704
|
+
|
|
705
|
+
assign_use_case_values = True
|
|
706
|
+
|
|
707
|
+
if assign_use_case_values:
|
|
708
|
+
context["use_case_id"] = use_case_id if use_case_id else parent_use_case_id
|
|
709
|
+
context["use_case_version"] = use_case_version if use_case_version else parent_use_case_version
|
|
710
|
+
context["use_case_step"] = use_case_step if use_case_step else parent_use_case_step
|
|
711
|
+
|
|
712
|
+
parent_use_case_properties = parent_context.get("use_case_properties", None)
|
|
713
|
+
if use_case_properties is not None:
|
|
714
|
+
if not use_case_properties:
|
|
715
|
+
# an empty dictionary explicitly blocks inheriting from the parent state
|
|
716
|
+
context["use_case_properties"] = None
|
|
717
|
+
else:
|
|
718
|
+
if parent_use_case_properties:
|
|
719
|
+
# merge dictionaries, child overrides parent keys
|
|
720
|
+
merged = parent_use_case_properties.copy()
|
|
721
|
+
merged.update(use_case_properties)
|
|
722
|
+
context["use_case_properties"] = merged
|
|
723
|
+
else:
|
|
724
|
+
context["use_case_properties"] = use_case_properties.copy()
|
|
725
|
+
elif parent_use_case_properties:
|
|
726
|
+
# use the parent use_case_properties if it exists
|
|
727
|
+
context["use_case_properties"] = parent_use_case_properties.copy()
|
|
686
728
|
|
|
687
729
|
parent_limit_ids = parent_context.get("limit_ids", None)
|
|
688
730
|
if limit_ids is None:
|
|
@@ -693,7 +735,7 @@ class _PayiInstrumentor:
|
|
|
693
735
|
context["limit_ids"] = None
|
|
694
736
|
else:
|
|
695
737
|
# union of new and parent lists if the parent context contains limit ids
|
|
696
|
-
context["limit_ids"] = list(set(limit_ids) | set(parent_limit_ids)) if parent_limit_ids else limit_ids
|
|
738
|
+
context["limit_ids"] = list(set(limit_ids) | set(parent_limit_ids)) if parent_limit_ids else limit_ids.copy()
|
|
697
739
|
|
|
698
740
|
parent_user_id = parent_context.get("user_id", None)
|
|
699
741
|
if user_id is None:
|
|
@@ -708,19 +750,35 @@ class _PayiInstrumentor:
|
|
|
708
750
|
parent_request_tags = parent_context.get("request_tags", None)
|
|
709
751
|
if request_tags is not None:
|
|
710
752
|
if len(request_tags) == 0:
|
|
753
|
+
# caller passing an empty list explicitly blocks inheriting from the parent state
|
|
711
754
|
context["request_tags"] = None
|
|
712
755
|
else:
|
|
713
756
|
if parent_request_tags:
|
|
714
757
|
# union of new and parent lists if the parent context contains request tags
|
|
715
758
|
context["request_tags"] = list(set(request_tags) | set(parent_request_tags))
|
|
716
759
|
else:
|
|
717
|
-
context["request_tags"] = request_tags
|
|
760
|
+
context["request_tags"] = request_tags.copy()
|
|
718
761
|
elif parent_request_tags:
|
|
719
762
|
# use the parent request_tags if it exists
|
|
720
|
-
context["request_tags"] = parent_request_tags
|
|
763
|
+
context["request_tags"] = parent_request_tags.copy()
|
|
764
|
+
|
|
765
|
+
parent_request_properties = parent_context.get("request_properties", None)
|
|
766
|
+
if request_properties is not None:
|
|
767
|
+
if not request_properties:
|
|
768
|
+
# an empty dictionary explicitly blocks inheriting from the parent state
|
|
769
|
+
context["request_properties"] = None
|
|
770
|
+
else:
|
|
771
|
+
if parent_request_properties:
|
|
772
|
+
# merge dictionaries, child overrides parent keys
|
|
773
|
+
merged = parent_request_properties.copy()
|
|
774
|
+
merged.update(request_properties)
|
|
775
|
+
context["request_properties"] = merged
|
|
776
|
+
else:
|
|
777
|
+
context["request_properties"] = request_properties.copy()
|
|
778
|
+
elif parent_request_properties:
|
|
779
|
+
# use the parent request_properties if it exists
|
|
780
|
+
context["request_properties"] = parent_request_properties.copy()
|
|
721
781
|
|
|
722
|
-
if use_case_step and (context["use_case_name"] or context["use_case_id"]):
|
|
723
|
-
context["use_case_step"] = use_case_step
|
|
724
782
|
if price_as_category:
|
|
725
783
|
context["price_as_category"] = price_as_category
|
|
726
784
|
if price_as_resource:
|
|
@@ -738,6 +796,8 @@ class _PayiInstrumentor:
|
|
|
738
796
|
use_case_version: Optional[int],
|
|
739
797
|
user_id: Optional[str],
|
|
740
798
|
request_tags: Optional["list[str]"] = None,
|
|
799
|
+
request_properties: Optional["dict[str, str]"] = None,
|
|
800
|
+
use_case_properties: Optional["dict[str, str]"] = None,
|
|
741
801
|
*args: Any,
|
|
742
802
|
**kwargs: Any,
|
|
743
803
|
) -> Any:
|
|
@@ -749,7 +809,10 @@ class _PayiInstrumentor:
|
|
|
749
809
|
use_case_id=use_case_id,
|
|
750
810
|
use_case_version=use_case_version,
|
|
751
811
|
user_id=user_id,
|
|
752
|
-
request_tags=request_tags
|
|
812
|
+
request_tags=request_tags,
|
|
813
|
+
request_properties=request_properties,
|
|
814
|
+
use_case_properties=use_case_properties
|
|
815
|
+
)
|
|
753
816
|
return await func(*args, **kwargs)
|
|
754
817
|
|
|
755
818
|
def _call_func(
|
|
@@ -762,6 +825,8 @@ class _PayiInstrumentor:
|
|
|
762
825
|
use_case_version: Optional[int],
|
|
763
826
|
user_id: Optional[str],
|
|
764
827
|
request_tags: Optional["list[str]"] = None,
|
|
828
|
+
request_properties: Optional["dict[str, str]"] = None,
|
|
829
|
+
use_case_properties: Optional["dict[str, str]"] = None,
|
|
765
830
|
*args: Any,
|
|
766
831
|
**kwargs: Any,
|
|
767
832
|
) -> Any:
|
|
@@ -773,7 +838,9 @@ class _PayiInstrumentor:
|
|
|
773
838
|
use_case_id=use_case_id,
|
|
774
839
|
use_case_version=use_case_version,
|
|
775
840
|
user_id=user_id,
|
|
776
|
-
request_tags=request_tags
|
|
841
|
+
request_tags=request_tags,
|
|
842
|
+
request_properties=request_properties,
|
|
843
|
+
use_case_properties=use_case_properties)
|
|
777
844
|
return func(*args, **kwargs)
|
|
778
845
|
|
|
779
846
|
def __enter__(self) -> Any:
|
|
@@ -797,7 +864,8 @@ class _PayiInstrumentor:
|
|
|
797
864
|
def _prepare_ingest(
|
|
798
865
|
self,
|
|
799
866
|
request: _ProviderRequest,
|
|
800
|
-
|
|
867
|
+
context: _Context,
|
|
868
|
+
ingest_extra_headers: "dict[str, str]", # do not conflict with potential kwargs["extra_headers"]
|
|
801
869
|
args: Sequence[Any],
|
|
802
870
|
kwargs: 'dict[str, Any]',
|
|
803
871
|
) -> None:
|
|
@@ -827,6 +895,14 @@ class _PayiInstrumentor:
|
|
|
827
895
|
if user_id:
|
|
828
896
|
request._ingest["user_id"] = user_id
|
|
829
897
|
|
|
898
|
+
request_properties = context.get("request_properties", None)
|
|
899
|
+
if request_properties:
|
|
900
|
+
request._ingest["properties"] = request_properties
|
|
901
|
+
|
|
902
|
+
use_case_properties = context.get("use_case_properties", None)
|
|
903
|
+
if use_case_properties:
|
|
904
|
+
request._ingest["use_case_properties"] = use_case_properties
|
|
905
|
+
|
|
830
906
|
if len(ingest_extra_headers) > 0:
|
|
831
907
|
request._ingest["provider_request_headers"] = [PayICommonModelsAPIRouterHeaderInfoParam(name=k, value=v) for k, v in ingest_extra_headers.items()]
|
|
832
908
|
|
|
@@ -909,7 +985,7 @@ class _PayiInstrumentor:
|
|
|
909
985
|
stream = False
|
|
910
986
|
|
|
911
987
|
try:
|
|
912
|
-
self._prepare_ingest(request, extra_headers, args, kwargs)
|
|
988
|
+
self._prepare_ingest(request, context, extra_headers, args, kwargs)
|
|
913
989
|
self._logger.debug(f"async_invoke_wrapper: calling wrapped instance (stream={stream})")
|
|
914
990
|
|
|
915
991
|
sw.start()
|
|
@@ -1032,7 +1108,7 @@ class _PayiInstrumentor:
|
|
|
1032
1108
|
stream = False
|
|
1033
1109
|
|
|
1034
1110
|
try:
|
|
1035
|
-
self._prepare_ingest(request, extra_headers, args, kwargs)
|
|
1111
|
+
self._prepare_ingest(request, context, extra_headers, args, kwargs)
|
|
1036
1112
|
self._logger.debug(f"invoke_wrapper: calling wrapped instance (stream={stream})")
|
|
1037
1113
|
|
|
1038
1114
|
sw.start()
|
|
@@ -1586,6 +1662,7 @@ global _instrumentor
|
|
|
1586
1662
|
_instrumentor: Optional[_PayiInstrumentor] = None
|
|
1587
1663
|
|
|
1588
1664
|
def payi_instrument(
|
|
1665
|
+
*,
|
|
1589
1666
|
payi: Optional[Union[Payi, AsyncPayi, 'list[Union[Payi, AsyncPayi]]']] = None,
|
|
1590
1667
|
instruments: Optional[Set[str]] = None,
|
|
1591
1668
|
log_prompt_and_response: bool = True,
|
|
@@ -1628,12 +1705,15 @@ def payi_instrument(
|
|
|
1628
1705
|
)
|
|
1629
1706
|
|
|
1630
1707
|
def track(
|
|
1708
|
+
*,
|
|
1631
1709
|
limit_ids: Optional["list[str]"] = None,
|
|
1632
1710
|
use_case_name: Optional[str] = None,
|
|
1633
1711
|
use_case_id: Optional[str] = None,
|
|
1634
1712
|
use_case_version: Optional[int] = None,
|
|
1635
1713
|
user_id: Optional[str] = None,
|
|
1636
1714
|
request_tags: Optional["list[str]"] = None,
|
|
1715
|
+
request_properties: Optional["dict[str, str]"] = None,
|
|
1716
|
+
use_case_properties: Optional["dict[str, str]"] = None,
|
|
1637
1717
|
proxy: Optional[bool] = None,
|
|
1638
1718
|
) -> Any:
|
|
1639
1719
|
|
|
@@ -1656,6 +1736,8 @@ def track(
|
|
|
1656
1736
|
use_case_version,
|
|
1657
1737
|
user_id,
|
|
1658
1738
|
request_tags,
|
|
1739
|
+
request_properties,
|
|
1740
|
+
use_case_properties,
|
|
1659
1741
|
*args,
|
|
1660
1742
|
**kwargs,
|
|
1661
1743
|
)
|
|
@@ -1677,6 +1759,8 @@ def track(
|
|
|
1677
1759
|
use_case_version,
|
|
1678
1760
|
user_id,
|
|
1679
1761
|
request_tags,
|
|
1762
|
+
request_properties,
|
|
1763
|
+
use_case_properties,
|
|
1680
1764
|
*args,
|
|
1681
1765
|
**kwargs,
|
|
1682
1766
|
)
|
|
@@ -1684,6 +1768,7 @@ def track(
|
|
|
1684
1768
|
return _track
|
|
1685
1769
|
|
|
1686
1770
|
def track_context(
|
|
1771
|
+
*,
|
|
1687
1772
|
limit_ids: Optional["list[str]"] = None,
|
|
1688
1773
|
use_case_name: Optional[str] = None,
|
|
1689
1774
|
use_case_id: Optional[str] = None,
|
|
@@ -1691,6 +1776,8 @@ def track_context(
|
|
|
1691
1776
|
use_case_step: Optional[str] = None,
|
|
1692
1777
|
user_id: Optional[str] = None,
|
|
1693
1778
|
request_tags: Optional["list[str]"] = None,
|
|
1779
|
+
request_properties: Optional["dict[str, str]"] = None,
|
|
1780
|
+
use_case_properties: Optional["dict[str, str]"] = None,
|
|
1694
1781
|
price_as_category: Optional[str] = None,
|
|
1695
1782
|
price_as_resource: Optional[str] = None,
|
|
1696
1783
|
resource_scope: Optional[str] = None,
|
|
@@ -1715,6 +1802,9 @@ def track_context(
|
|
|
1715
1802
|
context["price_as_resource"] = price_as_resource
|
|
1716
1803
|
context["resource_scope"] = resource_scope
|
|
1717
1804
|
|
|
1805
|
+
context["request_properties"] = request_properties
|
|
1806
|
+
context["use_case_properties"] = use_case_properties
|
|
1807
|
+
|
|
1718
1808
|
return _InternalTrackContext(context)
|
|
1719
1809
|
|
|
1720
1810
|
def get_context() -> PayiContext:
|
|
@@ -90,7 +90,6 @@ class IngestResource(SyncAPIResource):
|
|
|
90
90
|
units: Dict[str, IngestUnits],
|
|
91
91
|
end_to_end_latency_ms: Optional[int] | NotGiven = NOT_GIVEN,
|
|
92
92
|
event_timestamp: Union[str, datetime, None] | NotGiven = NOT_GIVEN,
|
|
93
|
-
experience_properties: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
|
|
94
93
|
http_status_code: Optional[int] | NotGiven = NOT_GIVEN,
|
|
95
94
|
properties: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
|
|
96
95
|
provider_request_headers: Optional[Iterable[PayICommonModelsAPIRouterHeaderInfoParam]] | NotGiven = NOT_GIVEN,
|
|
@@ -133,11 +132,13 @@ class IngestResource(SyncAPIResource):
|
|
|
133
132
|
|
|
134
133
|
output (int): The number of output units
|
|
135
134
|
|
|
136
|
-
event_timestamp: (str, datetime, None): The timestamp of the event
|
|
135
|
+
event_timestamp: (str, datetime, None): The timestamp of the event
|
|
137
136
|
|
|
138
|
-
limit_ids (list[str], optional): The limit IDs to associate with the request
|
|
137
|
+
limit_ids (list[str], optional): The limit IDs to associate with the request
|
|
139
138
|
|
|
140
|
-
|
|
139
|
+
properties (Dict[str, str], optional): Properties to associate with the request
|
|
140
|
+
|
|
141
|
+
request_tags (list[str], optional): The request tags to associate with the request
|
|
141
142
|
|
|
142
143
|
use_case_name (str, optional): The use case name
|
|
143
144
|
|
|
@@ -147,6 +148,8 @@ class IngestResource(SyncAPIResource):
|
|
|
147
148
|
|
|
148
149
|
use_case_version (int, optional): The use case instance version
|
|
149
150
|
|
|
151
|
+
use_case_properties (Dict[str, str], optional): The use case properties
|
|
152
|
+
|
|
150
153
|
user_id (str, optional): The user id
|
|
151
154
|
|
|
152
155
|
resource_scope(str, optional): The scope of the resource
|
|
@@ -234,7 +237,6 @@ class IngestResource(SyncAPIResource):
|
|
|
234
237
|
"units": units,
|
|
235
238
|
"end_to_end_latency_ms": end_to_end_latency_ms,
|
|
236
239
|
"event_timestamp": event_timestamp,
|
|
237
|
-
"experience_properties": experience_properties,
|
|
238
240
|
"http_status_code": http_status_code,
|
|
239
241
|
"properties": properties,
|
|
240
242
|
"provider_request_headers": provider_request_headers,
|
|
@@ -318,7 +320,6 @@ class AsyncIngestResource(AsyncAPIResource):
|
|
|
318
320
|
units: Dict[str, IngestUnits],
|
|
319
321
|
end_to_end_latency_ms: Optional[int] | NotGiven = NOT_GIVEN,
|
|
320
322
|
event_timestamp: Union[str, datetime, None] | NotGiven = NOT_GIVEN,
|
|
321
|
-
experience_properties: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
|
|
322
323
|
http_status_code: Optional[int] | NotGiven = NOT_GIVEN,
|
|
323
324
|
properties: Optional[Dict[str, str]] | NotGiven = NOT_GIVEN,
|
|
324
325
|
provider_request_headers: Optional[Iterable[PayICommonModelsAPIRouterHeaderInfoParam]] | NotGiven = NOT_GIVEN,
|
|
@@ -360,11 +361,13 @@ class AsyncIngestResource(AsyncAPIResource):
|
|
|
360
361
|
|
|
361
362
|
output (int): The number of output units
|
|
362
363
|
|
|
363
|
-
event_timestamp: (datetime, None): The timestamp of the event
|
|
364
|
+
event_timestamp: (datetime, None): The timestamp of the event
|
|
364
365
|
|
|
365
|
-
limit_ids (list[str], optional): The limit IDs to associate with the request
|
|
366
|
+
limit_ids (list[str], optional): The limit IDs to associate with the request
|
|
366
367
|
|
|
367
|
-
|
|
368
|
+
properties (Dict[str, str], optional): Properties to associate with the request
|
|
369
|
+
|
|
370
|
+
request_tags (list[str], optional): The request tags to associate with the request
|
|
368
371
|
|
|
369
372
|
use_case_name (str, optional): The use case name
|
|
370
373
|
|
|
@@ -374,6 +377,8 @@ class AsyncIngestResource(AsyncAPIResource):
|
|
|
374
377
|
|
|
375
378
|
use_case_version (int, optional): The use case instance version
|
|
376
379
|
|
|
380
|
+
use_case_properties (Dict[str, str], optional): The use case properties
|
|
381
|
+
|
|
377
382
|
user_id (str, optional): The user id
|
|
378
383
|
|
|
379
384
|
resource_scope (str, optional): The scope of the resource
|
|
@@ -460,7 +465,6 @@ class AsyncIngestResource(AsyncAPIResource):
|
|
|
460
465
|
"units": units,
|
|
461
466
|
"end_to_end_latency_ms": end_to_end_latency_ms,
|
|
462
467
|
"event_timestamp": event_timestamp,
|
|
463
|
-
"experience_properties": experience_properties,
|
|
464
468
|
"http_status_code": http_status_code,
|
|
465
469
|
"properties": properties,
|
|
466
470
|
"provider_request_headers": provider_request_headers,
|
|
@@ -24,8 +24,6 @@ class IngestUnitsParams(TypedDict, total=False):
|
|
|
24
24
|
|
|
25
25
|
event_timestamp: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")]
|
|
26
26
|
|
|
27
|
-
experience_properties: Optional[Dict[str, str]]
|
|
28
|
-
|
|
29
27
|
http_status_code: Optional[int]
|
|
30
28
|
|
|
31
29
|
properties: Optional[Dict[str, str]]
|
|
@@ -40,7 +40,6 @@ class TestIngest:
|
|
|
40
40
|
"event_timestamp": parse_datetime("2019-12-27T18:11:19.117Z"),
|
|
41
41
|
"experience_id": "experience_id",
|
|
42
42
|
"experience_name": "experience_name",
|
|
43
|
-
"experience_properties": {"foo": "string"},
|
|
44
43
|
"experience_version": 0,
|
|
45
44
|
"http_status_code": 0,
|
|
46
45
|
"limit_ids": ["string"],
|
|
@@ -124,7 +123,6 @@ class TestIngest:
|
|
|
124
123
|
},
|
|
125
124
|
end_to_end_latency_ms=0,
|
|
126
125
|
event_timestamp=parse_datetime("2019-12-27T18:11:19.117Z"),
|
|
127
|
-
experience_properties={"foo": "string"},
|
|
128
126
|
http_status_code=0,
|
|
129
127
|
properties={"foo": "string"},
|
|
130
128
|
provider_request_headers=[
|
|
@@ -221,7 +219,6 @@ class TestAsyncIngest:
|
|
|
221
219
|
"event_timestamp": parse_datetime("2019-12-27T18:11:19.117Z"),
|
|
222
220
|
"experience_id": "experience_id",
|
|
223
221
|
"experience_name": "experience_name",
|
|
224
|
-
"experience_properties": {"foo": "string"},
|
|
225
222
|
"experience_version": 0,
|
|
226
223
|
"http_status_code": 0,
|
|
227
224
|
"limit_ids": ["string"],
|
|
@@ -305,7 +302,6 @@ class TestAsyncIngest:
|
|
|
305
302
|
},
|
|
306
303
|
end_to_end_latency_ms=0,
|
|
307
304
|
event_timestamp=parse_datetime("2019-12-27T18:11:19.117Z"),
|
|
308
|
-
experience_properties={"foo": "string"},
|
|
309
305
|
http_status_code=0,
|
|
310
306
|
properties={"foo": "string"},
|
|
311
307
|
provider_request_headers=[
|
|
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
|
|
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
|