tusk-drift-python-sdk 0.1.20__tar.gz → 0.1.22__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.
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/PKG-INFO +1 -1
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/td_span_processor.py +3 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/middleware.py +50 -4
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/e2e_common/base_runner.py +4 -1
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/fastapi/instrumentation.py +3 -2
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/pyproject.toml +1 -1
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/tusk_drift_python_sdk.egg-info/PKG-INFO +1 -1
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/LICENSE +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/README.md +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/batch_processor.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/communication/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/communication/communicator.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/communication/types.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/config.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/content_type_utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/data_normalization.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/drift_sdk.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/json_schema_helper.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/logger.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/metrics.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/mock_utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/mode_utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/protobuf_utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/resilience.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/rust_core_binding.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/sampling.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/span_serialization.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/trace_blocking_manager.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/adapters/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/adapters/api.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/adapters/base.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/adapters/filesystem.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/adapters/memory.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/otel_converter.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/span_exporter.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/span_utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/td_attributes.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/types.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/aiohttp/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/aiohttp/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/aiohttp/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/aiohttp/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/aiohttp/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/base.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/datetime/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/datetime/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/e2e-tests/src/settings.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/e2e-tests/src/urls.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/e2e-tests/src/views.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/html_utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/django/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/e2e_common/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/e2e_common/test_utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/fastapi/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/fastapi/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/fastapi/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/fastapi/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/flask/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/flask/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/flask/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/flask/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/flask/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/e2e-tests/src/greeter_pb2.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/e2e-tests/src/greeter_pb2_grpc.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/e2e-tests/src/grpc_server.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/types.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/http/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/http/transform_engine.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/httpx/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/httpx/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/httpx/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/httpx/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/httpx/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/kinde/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/kinde/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg/mocks.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg/wrappers.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg2/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg2/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg2/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg2/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg2/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/pyjwt/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/pyjwt/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/redis/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/redis/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/redis/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/redis/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/redis/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/registry.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/requests/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/requests/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/requests/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/requests/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/requests/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/socket/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/socket/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/sqlalchemy/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/sqlalchemy/context.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/sqlalchemy/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/sqlalchemy/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/sqlalchemy/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/sqlalchemy/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib3/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib3/e2e-tests/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib3/e2e-tests/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib3/e2e-tests/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/urllib3/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/utils/psycopg_utils.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/utils/serialization.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/wsgi/__init__.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/wsgi/handler.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/wsgi/instrumentation.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/wsgi/response_capture.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/wsgi/utilities.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-postgres/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-postgres/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-postgres/src/settings.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-postgres/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-postgres/src/urls.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-postgres/src/views.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-redis/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-redis/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-redis/src/settings.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-redis/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-redis/src/urls.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/django-redis/src/views.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/fastapi-postgres/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/fastapi-postgres/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/fastapi-postgres/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/fastapi-sqlalchemy/entrypoint.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/fastapi-sqlalchemy/src/app.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/stack-tests/fastapi-sqlalchemy/src/test_requests.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/version.py +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/setup.cfg +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/tusk_drift_python_sdk.egg-info/SOURCES.txt +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/tusk_drift_python_sdk.egg-info/dependency_links.txt +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/tusk_drift_python_sdk.egg-info/requires.txt +0 -0
- {tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/tusk_drift_python_sdk.egg-info/top_level.txt +0 -0
|
@@ -171,6 +171,9 @@ class TdSpanProcessor(SpanProcessor):
|
|
|
171
171
|
replay_trace_id = replay_trace_id_context.get()
|
|
172
172
|
if replay_trace_id:
|
|
173
173
|
clean_span.trace_id = replay_trace_id
|
|
174
|
+
# Rust path may have prebuilt bytes with the original OTel trace_id.
|
|
175
|
+
# Force re-serialization so CLI receives the replay trace_id.
|
|
176
|
+
clean_span.proto_span_bytes = None
|
|
174
177
|
else:
|
|
175
178
|
logger.error("No replay trace ID found, cannot send inbound span for replay")
|
|
176
179
|
return
|
|
@@ -144,15 +144,19 @@ class DriftMiddleware:
|
|
|
144
144
|
try:
|
|
145
145
|
with SpanUtils.with_span(span_info):
|
|
146
146
|
response = self.get_response(request)
|
|
147
|
-
# REPLAY mode: don't capture the span (it's already recorded)
|
|
148
|
-
# But do normalize the response so comparison succeeds
|
|
149
147
|
response = self._normalize_html_response(response)
|
|
148
|
+
|
|
149
|
+
# Capture response data on the span so the inbound replay span
|
|
150
|
+
# sent to the CLI includes the actual OUTPUT_VALUE for UI display
|
|
151
|
+
self._capture_replay_output(request, response, span_info)
|
|
152
|
+
|
|
150
153
|
return response
|
|
151
154
|
finally:
|
|
152
|
-
#
|
|
155
|
+
# End span BEFORE resetting context so that TdSpanProcessor.on_end()
|
|
156
|
+
# can still read replay_trace_id_context to send the inbound span
|
|
157
|
+
span_info.span.end()
|
|
153
158
|
span_kind_context.reset(span_kind_token)
|
|
154
159
|
replay_trace_id_context.reset(replay_token)
|
|
155
|
-
span_info.span.end()
|
|
156
160
|
|
|
157
161
|
def _record_request(self, request: HttpRequest, sdk, is_pre_app_start: bool) -> HttpResponse:
|
|
158
162
|
"""Handle request in RECORD mode.
|
|
@@ -262,6 +266,48 @@ class DriftMiddleware:
|
|
|
262
266
|
if route:
|
|
263
267
|
request._drift_route_template = route # type: ignore
|
|
264
268
|
|
|
269
|
+
def _capture_replay_output(self, request: HttpRequest, response: HttpResponse, span_info: SpanInfo) -> None:
|
|
270
|
+
"""Capture response data on the span for REPLAY mode.
|
|
271
|
+
|
|
272
|
+
Sets OUTPUT_VALUE so the inbound replay span sent to the CLI includes
|
|
273
|
+
the actual response for UI comparison. Skips RECORD-mode concerns like
|
|
274
|
+
transforms, trace blocking, and schema merges.
|
|
275
|
+
|
|
276
|
+
Args:
|
|
277
|
+
request: Django HttpRequest object
|
|
278
|
+
response: Django HttpResponse object
|
|
279
|
+
span_info: SpanInfo containing trace/span IDs and span reference
|
|
280
|
+
"""
|
|
281
|
+
if not span_info.span.is_recording():
|
|
282
|
+
return
|
|
283
|
+
|
|
284
|
+
status_code = response.status_code
|
|
285
|
+
status_message = response.reason_phrase if hasattr(response, "reason_phrase") else ""
|
|
286
|
+
response_headers = dict(response.items()) if hasattr(response, "items") else {}
|
|
287
|
+
|
|
288
|
+
response_body = None
|
|
289
|
+
if hasattr(response, "content"):
|
|
290
|
+
content = response.content
|
|
291
|
+
if isinstance(content, bytes) and len(content) > 0:
|
|
292
|
+
response_body = content
|
|
293
|
+
|
|
294
|
+
if response_body:
|
|
295
|
+
from .html_utils import normalize_html_body
|
|
296
|
+
|
|
297
|
+
content_type = response_headers.get("Content-Type", "")
|
|
298
|
+
content_encoding = response_headers.get("Content-Encoding", "")
|
|
299
|
+
response_body = normalize_html_body(response_body, content_type, content_encoding)
|
|
300
|
+
|
|
301
|
+
output_value = build_output_value(
|
|
302
|
+
status_code,
|
|
303
|
+
status_message,
|
|
304
|
+
response_headers,
|
|
305
|
+
response_body,
|
|
306
|
+
None,
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
span_info.span.set_attribute(TdSpanAttributes.OUTPUT_VALUE, json.dumps(output_value))
|
|
310
|
+
|
|
265
311
|
def _normalize_html_response(self, response: HttpResponse) -> HttpResponse:
|
|
266
312
|
"""Normalize HTML response body for REPLAY mode comparison.
|
|
267
313
|
|
|
@@ -285,7 +285,10 @@ class E2ETestRunnerBase:
|
|
|
285
285
|
self.log("Phase 3: Running Tusk Tests", Colors.BLUE)
|
|
286
286
|
self.log("=" * 50, Colors.BLUE)
|
|
287
287
|
|
|
288
|
-
env = {
|
|
288
|
+
env = {
|
|
289
|
+
"TUSK_ANALYTICS_DISABLED": "1",
|
|
290
|
+
"TUSK_REQUIRE_INBOUND_REPLAY_SPAN": "1",
|
|
291
|
+
}
|
|
289
292
|
|
|
290
293
|
result = self.run_command(
|
|
291
294
|
["tusk", "run", "--print", "--output-format", "json", "--enable-service-logs"],
|
|
@@ -226,10 +226,11 @@ async def _handle_replay_request(
|
|
|
226
226
|
transform_engine,
|
|
227
227
|
)
|
|
228
228
|
finally:
|
|
229
|
-
#
|
|
229
|
+
# End span BEFORE resetting context so that TdSpanProcessor.on_end()
|
|
230
|
+
# can still read replay_trace_id_context to send the inbound span
|
|
231
|
+
span_info.span.end()
|
|
230
232
|
span_kind_context.reset(span_kind_token)
|
|
231
233
|
replay_trace_id_context.reset(replay_token)
|
|
232
|
-
span_info.span.end()
|
|
233
234
|
|
|
234
235
|
|
|
235
236
|
async def _record_request(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/communication/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/communication/types.py
RENAMED
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/content_type_utils.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/data_normalization.py
RENAMED
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/json_schema_helper.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/rust_core_binding.py
RENAMED
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/span_serialization.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/trace_blocking_manager.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/adapters/api.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/adapters/base.py
RENAMED
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/adapters/memory.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/otel_converter.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/span_exporter.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/span_utils.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/core/tracing/td_attributes.py
RENAMED
|
File without changes
|
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/__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
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/__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
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/types.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/grpc/utils.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/http/__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
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/psycopg/mocks.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
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/registry.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
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/wsgi/__init__.py
RENAMED
|
File without changes
|
{tusk_drift_python_sdk-0.1.20 → tusk_drift_python_sdk-0.1.22}/drift/instrumentation/wsgi/handler.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
|