Skip to content

Conversation

@brettlangdon
Copy link
Member

@brettlangdon brettlangdon commented Aug 12, 2025

Problem

PyPI has issued a deprecation warning for our ddtrace package wheels. The wheel RECORD files list source files (.c, .cpp, .h, .pyx, etc.) that were removed during post-processing but the RECORD wasn't updated to reflect this. This mismatch between RECORD contents and actual wheel contents will become a hard error in future PyPI releases.

Solution

We've updated our wheel build pipeline to ensure RECORD file integrity:

  1. Enhanced zip_filter.py - Our existing script for removing source files from wheels now also updates the RECORD file to maintain consistency between listed and actual contents.

  2. Unified build approach - All platforms (Linux, macOS, Windows) now use the same zip_filter.py script for consistent source file removal and RECORD updating.

  3. Automated validation - Added a new validation script and CI step that verifies every built wheel has a RECORD file that accurately reflects its contents, including proper SHA256 hashesand file sizes.

This ensures our wheels comply with PyPI requirements while maintaining the same distribution content - compiled extensions without source files, but with accurate metadata.

Checklist

  • PR author has checked that all the criteria below are met
  • The PR description includes an overview of the change
  • The PR description articulates the motivation for the change
  • The change includes tests OR the PR description describes a testing strategy
  • The PR description notes risks associated with the change, if any
  • Newly-added code is easy to change
  • The change follows the library release note guidelines
  • The change includes or references documentation updates if necessary
  • Backport labels are set (if applicable)

Reviewer Checklist

  • Reviewer has checked that all the criteria below are met
  • Title is accurate
  • All changes are related to the pull request's stated goal
  • Avoids breaking API changes
  • Testing strategy adequately addresses listed risks
  • Newly-added code is easy to change
  • Release note makes sense to a user of the library
  • If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment
  • Backport labels are set in a manner that is consistent with the release branch maintenance policy

@brettlangdon brettlangdon added the changelog/no-changelog A changelog entry is not required for this PR. label Aug 12, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Aug 12, 2025

CODEOWNERS have been resolved as:

scripts/validate_wheel.py                                               @DataDog/apm-core-python
.github/workflows/build_python_3.yml                                    @DataDog/python-guild @DataDog/apm-core-python
scripts/zip_filter.py                                                   @DataDog/apm-core-python

@brettlangdon brettlangdon force-pushed the LANGPLAT-728/fix.wheel.record branch from c9439ac to 03b4504 Compare August 12, 2025 13:00
@github-actions
Copy link
Contributor

github-actions bot commented Aug 12, 2025

Bootstrap import analysis

Comparison of import times between this PR and base.

Summary

The average import time from this PR is: 269 ± 3 ms.

The average import time from base is: 273 ± 3 ms.

The import time difference between this PR and base is: -3.3 ± 0.1 ms.

Import time breakdown

The following import paths have shrunk:

ddtrace.auto 2.124 ms (0.79%)
ddtrace.bootstrap.sitecustomize 1.446 ms (0.54%)
ddtrace.bootstrap.preload 1.446 ms (0.54%)
ddtrace.internal.remoteconfig.client 0.686 ms (0.25%)
ddtrace 0.678 ms (0.25%)
ddtrace.internal._unpatched 0.032 ms (0.01%)
json 0.032 ms (0.01%)
json.decoder 0.032 ms (0.01%)
re 0.032 ms (0.01%)
enum 0.032 ms (0.01%)
types 0.032 ms (0.01%)

@pr-commenter
Copy link

pr-commenter bot commented Aug 12, 2025

Performance SLOs

Candidate: LANGPLAT-728/fix.wheel.record (09d7366)

🔵 No Baseline Data (24 suites)
🔵 coreapiscenario - 12/12 (2 unstable)

🔵 No baseline data available for this suite

⚠️ context_with_data_listeners

Time: ⚠️ 13.940µs (SLO: <20.000µs 📉 -30.3%)

Memory: ✅ 31.261MB (SLO: <33.500MB -6.7%)


✅ context_with_data_no_listeners

Time: ✅ 3.829µs (SLO: <10.000µs 📉 -61.7%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


⚠️ context_with_data_only_all_listeners

Time: ⚠️ 13.868µs (SLO: <20.000µs 📉 -30.7%)

Memory: ✅ 31.339MB (SLO: <33.500MB -6.4%)


✅ get_item_exists

Time: ✅ 0.639µs (SLO: <10.000µs 📉 -93.6%)

Memory: ✅ 31.300MB (SLO: <33.500MB -6.6%)


✅ get_item_missing

Time: ✅ 0.686µs (SLO: <10.000µs 📉 -93.1%)

Memory: ✅ 31.339MB (SLO: <33.500MB -6.4%)


✅ set_item

Time: ✅ 24.919µs (SLO: <30.000µs 📉 -16.9%)

Memory: ✅ 31.339MB (SLO: <33.500MB -6.4%)


🔵 djangosimple - 22/22

🔵 No baseline data available for this suite

✅ appsec

Time: ✅ 21.206ms (SLO: <22.300ms -4.9%)

Memory: ✅ 63.960MB (SLO: <66.000MB -3.1%)


✅ exception-replay-enabled

Time: ✅ 1.370ms (SLO: <1.450ms -5.5%)

Memory: ✅ 63.249MB (SLO: <66.000MB -4.2%)


✅ iast

Time: ✅ 21.239ms (SLO: <22.250ms -4.5%)

Memory: ✅ 63.920MB (SLO: <66.000MB -3.2%)


✅ profiler

Time: ✅ 15.227ms (SLO: <16.550ms -8.0%)

Memory: ✅ 51.654MB (SLO: <53.500MB -3.5%)


✅ span-code-origin

Time: ✅ 27.009ms (SLO: <28.200ms -4.2%)

Memory: ✅ 66.843MB (SLO: <68.500MB -2.4%)


✅ tracer

Time: ✅ 21.201ms (SLO: <22.700ms -6.6%)

Memory: ✅ 63.822MB (SLO: <66.000MB -3.3%)


✅ tracer-and-profiler

Time: ✅ 22.857ms (SLO: <24.900ms -8.2%)

Memory: ✅ 65.310MB (SLO: <67.000MB -2.5%)


✅ tracer-no-caches

Time: ✅ 18.871ms (SLO: <19.650ms -4.0%)

Memory: ✅ 63.940MB (SLO: <66.000MB -3.1%)


✅ tracer-no-databases

Time: ✅ 19.172ms (SLO: <20.100ms -4.6%)

Memory: ✅ 63.861MB (SLO: <66.000MB -3.2%)


✅ tracer-no-middleware

Time: ✅ 21.073ms (SLO: <22.500ms -6.3%)

Memory: ✅ 63.838MB (SLO: <66.000MB -3.3%)


✅ tracer-no-templates

Time: ✅ 20.943ms (SLO: <22.250ms -5.9%)

Memory: ✅ 63.841MB (SLO: <66.000MB -3.3%)


🔵 errortrackingdjangosimple - 6/6

🔵 No baseline data available for this suite

✅ errortracking-enabled-all

Time: ✅ 18.785ms (SLO: <19.850ms -5.4%)

Memory: ✅ 63.949MB (SLO: <65.500MB -2.4%)


✅ errortracking-enabled-user

Time: ✅ 18.662ms (SLO: <19.400ms -3.8%)

Memory: ✅ 63.820MB (SLO: <65.500MB -2.6%)


✅ tracer-enabled

Time: ✅ 18.821ms (SLO: <19.450ms -3.2%)

Memory: ✅ 63.848MB (SLO: <65.500MB -2.5%)


🔵 errortrackingflasksqli - 6/6

🔵 No baseline data available for this suite

✅ errortracking-enabled-all

Time: ✅ 2.129ms (SLO: <2.300ms -7.4%)

Memory: ✅ 51.064MB (SLO: <53.500MB -4.6%)


✅ errortracking-enabled-user

Time: ✅ 2.126ms (SLO: <2.250ms -5.5%)

Memory: ✅ 51.083MB (SLO: <53.500MB -4.5%)


✅ tracer-enabled

Time: ✅ 2.124ms (SLO: <2.300ms -7.7%)

Memory: ✅ 50.984MB (SLO: <53.500MB -4.7%)


🔵 flasksimple - 15/15

🔵 No baseline data available for this suite

✅ appsec-get

Time: ✅ 4.623ms (SLO: <4.750ms -2.7%)

Memory: ✅ 61.814MB (SLO: <64.500MB -4.2%)


✅ appsec-post

Time: ✅ 6.663ms (SLO: <6.750ms 🟡 -1.3%)

Memory: ✅ 62.226MB (SLO: <64.500MB -3.5%)


✅ appsec-telemetry

Time: ✅ 4.617ms (SLO: <4.750ms -2.8%)

Memory: ✅ 61.833MB (SLO: <64.500MB -4.1%)


✅ debugger

Time: ✅ 1.863ms (SLO: <2.000ms -6.9%)

Memory: ✅ 44.247MB (SLO: <45.000MB 🟡 -1.7%)


✅ iast-get

Time: ✅ 1.857ms (SLO: <2.000ms -7.1%)

Memory: ✅ 46.998MB (SLO: <49.000MB -4.1%)


✅ profiler

Time: ✅ 1.920ms (SLO: <2.100ms -8.6%)

Memory: ✅ 44.052MB (SLO: <46.500MB -5.3%)


✅ tracer

Time: ✅ 3.400ms (SLO: <3.650ms -6.9%)

Memory: ✅ 51.043MB (SLO: <53.500MB -4.6%)


🔵 flasksqli - 6/6

🔵 No baseline data available for this suite

✅ appsec-enabled

Time: ✅ 3.997ms (SLO: <4.200ms -4.8%)

Memory: ✅ 62.030MB (SLO: <66.000MB -6.0%)


✅ iast-enabled

Time: ✅ 2.573ms (SLO: <2.800ms -8.1%)

Memory: ✅ 57.573MB (SLO: <59.000MB -2.4%)


✅ tracer-enabled

Time: ✅ 2.114ms (SLO: <2.250ms -6.0%)

Memory: ✅ 51.023MB (SLO: <53.500MB -4.6%)


🔵 httppropagationextract - 60/60

🔵 No baseline data available for this suite

✅ all_styles_all_headers

Time: ✅ 83.350µs (SLO: <100.000µs 📉 -16.7%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ b3_headers

Time: ✅ 14.452µs (SLO: <20.000µs 📉 -27.7%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ b3_single_headers

Time: ✅ 13.379µs (SLO: <20.000µs 📉 -33.1%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ datadog_tracecontext_tracestate_not_propagated_on_trace_id_no_match

Time: ✅ 65.500µs (SLO: <80.000µs 📉 -18.1%)

Memory: ✅ 31.457MB (SLO: <33.500MB -6.1%)


✅ datadog_tracecontext_tracestate_propagated_on_trace_id_match

Time: ✅ 67.665µs (SLO: <80.000µs 📉 -15.4%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ empty_headers

Time: ✅ 1.615µs (SLO: <10.000µs 📉 -83.9%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ full_t_id_datadog_headers

Time: ✅ 24.117µs (SLO: <30.000µs 📉 -19.6%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ invalid_priority_header

Time: ✅ 6.527µs (SLO: <10.000µs 📉 -34.7%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ invalid_span_id_header

Time: ✅ 6.517µs (SLO: <10.000µs 📉 -34.8%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ invalid_tags_header

Time: ✅ 6.477µs (SLO: <10.000µs 📉 -35.2%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ invalid_trace_id_header

Time: ✅ 6.506µs (SLO: <10.000µs 📉 -34.9%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ large_header_no_matches

Time: ✅ 27.553µs (SLO: <30.000µs -8.2%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ large_valid_headers_all

Time: ✅ 28.686µs (SLO: <40.000µs 📉 -28.3%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ medium_header_no_matches

Time: ✅ 9.848µs (SLO: <20.000µs 📉 -50.8%)

Memory: ✅ 31.320MB (SLO: <33.500MB -6.5%)


✅ medium_valid_headers_all

Time: ✅ 11.256µs (SLO: <20.000µs 📉 -43.7%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ none_propagation_style

Time: ✅ 1.701µs (SLO: <10.000µs 📉 -83.0%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ tracecontext_headers

Time: ✅ 35.164µs (SLO: <40.000µs 📉 -12.1%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ valid_headers_all

Time: ✅ 6.530µs (SLO: <10.000µs 📉 -34.7%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ valid_headers_basic

Time: ✅ 6.102µs (SLO: <10.000µs 📉 -39.0%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_empty_headers

Time: ✅ 1.593µs (SLO: <10.000µs 📉 -84.1%)

Memory: ✅ 31.398MB (SLO: <33.500MB -6.3%)


✅ wsgi_invalid_priority_header

Time: ✅ 6.595µs (SLO: <10.000µs 📉 -34.0%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_span_id_header

Time: ✅ 1.603µs (SLO: <10.000µs 📉 -84.0%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_tags_header

Time: ✅ 6.585µs (SLO: <10.000µs 📉 -34.2%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_invalid_trace_id_header

Time: ✅ 6.624µs (SLO: <10.000µs 📉 -33.8%)

Memory: ✅ 31.379MB (SLO: <33.500MB -6.3%)


✅ wsgi_large_header_no_matches

Time: ✅ 28.637µs (SLO: <40.000µs 📉 -28.4%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_large_valid_headers_all

Time: ✅ 29.836µs (SLO: <40.000µs 📉 -25.4%)

Memory: ✅ 31.359MB (SLO: <33.500MB -6.4%)


✅ wsgi_medium_header_no_matches

Time: ✅ 10.087µs (SLO: <20.000µs 📉 -49.6%)

Memory: ✅ 31.359MB (SLO: <33.500MB -6.4%)


✅ wsgi_medium_valid_headers_all

Time: ✅ 11.496µs (SLO: <20.000µs 📉 -42.5%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_valid_headers_all

Time: ✅ 6.560µs (SLO: <10.000µs 📉 -34.4%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ wsgi_valid_headers_basic

Time: ✅ 6.145µs (SLO: <10.000µs 📉 -38.6%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


🔵 httppropagationinject - 16/16

🔵 No baseline data available for this suite

✅ ids_only

Time: ✅ 21.903µs (SLO: <30.000µs 📉 -27.0%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ with_all

Time: ✅ 34.006µs (SLO: <40.000µs 📉 -15.0%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ with_dd_origin

Time: ✅ 28.445µs (SLO: <30.000µs -5.2%)

Memory: ✅ 31.359MB (SLO: <33.500MB -6.4%)


✅ with_priority_and_origin

Time: ✅ 27.701µs (SLO: <40.000µs 📉 -30.7%)

Memory: ✅ 31.359MB (SLO: <33.500MB -6.4%)


✅ with_sampling_priority

Time: ✅ 22.639µs (SLO: <30.000µs 📉 -24.5%)

Memory: ✅ 31.457MB (SLO: <33.500MB -6.1%)


✅ with_tags

Time: ✅ 31.371µs (SLO: <40.000µs 📉 -21.6%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


✅ with_tags_invalid

Time: ✅ 34.748µs (SLO: <40.000µs 📉 -13.1%)

Memory: ✅ 31.418MB (SLO: <33.500MB -6.2%)


✅ with_tags_max_size

Time: ✅ 31.667µs (SLO: <40.000µs 📉 -20.8%)

Memory: ✅ 31.438MB (SLO: <33.500MB -6.2%)


🔵 iast_aspects - 40/40

🔵 No baseline data available for this suite

✅ re_expand_aspect

Time: ✅ 33.298µs (SLO: <40.000µs 📉 -16.8%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_expand_noaspect

Time: ✅ 29.709µs (SLO: <40.000µs 📉 -25.7%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ re_findall_aspect

Time: ✅ 3.734µs (SLO: <10.000µs 📉 -62.7%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ re_findall_noaspect

Time: ✅ 1.403µs (SLO: <10.000µs 📉 -86.0%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_finditer_aspect

Time: ✅ 5.146µs (SLO: <10.000µs 📉 -48.5%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_finditer_noaspect

Time: ✅ 1.422µs (SLO: <10.000µs 📉 -85.8%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ re_fullmatch_aspect

Time: ✅ 3.382µs (SLO: <10.000µs 📉 -66.2%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_fullmatch_noaspect

Time: ✅ 1.294µs (SLO: <10.000µs 📉 -87.1%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ re_group_aspect

Time: ✅ 3.442µs (SLO: <10.000µs 📉 -65.6%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ re_group_noaspect

Time: ✅ 1.617µs (SLO: <10.000µs 📉 -83.8%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_groups_aspect

Time: ✅ 3.581µs (SLO: <10.000µs 📉 -64.2%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ re_groups_noaspect

Time: ✅ 1.690µs (SLO: <10.000µs 📉 -83.1%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ re_match_aspect

Time: ✅ 3.432µs (SLO: <10.000µs 📉 -65.7%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ re_match_noaspect

Time: ✅ 1.308µs (SLO: <10.000µs 📉 -86.9%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ re_search_aspect

Time: ✅ 3.295µs (SLO: <10.000µs 📉 -67.0%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ re_search_noaspect

Time: ✅ 1.210µs (SLO: <10.000µs 📉 -87.9%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ re_sub_aspect

Time: ✅ 4.684µs (SLO: <10.000µs 📉 -53.2%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ re_sub_noaspect

Time: ✅ 1.533µs (SLO: <10.000µs 📉 -84.7%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_subn_aspect

Time: ✅ 4.891µs (SLO: <10.000µs 📉 -51.1%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ re_subn_noaspect

Time: ✅ 1.608µs (SLO: <10.000µs 📉 -83.9%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


🔵 iastaspects - 118/118

🔵 No baseline data available for this suite

✅ add_aspect

Time: ✅ 0.325µs (SLO: <10.000µs 📉 -96.7%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ add_inplace_aspect

Time: ✅ 0.331µs (SLO: <10.000µs 📉 -96.7%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ add_inplace_noaspect

Time: ✅ 0.323µs (SLO: <10.000µs 📉 -96.8%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ add_noaspect

Time: ✅ 0.283µs (SLO: <10.000µs 📉 -97.2%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ bytearray_aspect

Time: ✅ 1.878µs (SLO: <10.000µs 📉 -81.2%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ bytearray_extend_aspect

Time: ✅ 1.369µs (SLO: <10.000µs 📉 -86.3%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ bytearray_extend_noaspect

Time: ✅ 0.614µs (SLO: <10.000µs 📉 -93.9%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ bytearray_noaspect

Time: ✅ 0.485µs (SLO: <10.000µs 📉 -95.1%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ bytes_aspect

Time: ✅ 1.854µs (SLO: <10.000µs 📉 -81.5%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ bytes_noaspect

Time: ✅ 0.497µs (SLO: <10.000µs 📉 -95.0%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ bytesio_aspect

Time: ✅ 1.903µs (SLO: <10.000µs 📉 -81.0%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ bytesio_noaspect

Time: ✅ 0.506µs (SLO: <10.000µs 📉 -94.9%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ capitalize_aspect

Time: ✅ 0.739µs (SLO: <10.000µs 📉 -92.6%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ capitalize_noaspect

Time: ✅ 0.439µs (SLO: <10.000µs 📉 -95.6%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ casefold_aspect

Time: ✅ 0.741µs (SLO: <10.000µs 📉 -92.6%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ casefold_noaspect

Time: ✅ 0.376µs (SLO: <10.000µs 📉 -96.2%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ decode_aspect

Time: ✅ 0.732µs (SLO: <10.000µs 📉 -92.7%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ decode_noaspect

Time: ✅ 0.424µs (SLO: <10.000µs 📉 -95.8%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ encode_aspect

Time: ✅ 0.713µs (SLO: <10.000µs 📉 -92.9%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ encode_noaspect

Time: ✅ 0.405µs (SLO: <10.000µs 📉 -96.0%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ format_aspect

Time: ✅ 3.433µs (SLO: <10.000µs 📉 -65.7%)

Memory: ✅ 36.785MB (SLO: <39.000MB -5.7%)


✅ format_map_aspect

Time: ✅ 3.309µs (SLO: <10.000µs 📉 -66.9%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ format_map_noaspect

Time: ✅ 0.783µs (SLO: <10.000µs 📉 -92.2%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ format_noaspect

Time: ✅ 0.602µs (SLO: <10.000µs 📉 -94.0%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ index_aspect

Time: ✅ 0.341µs (SLO: <10.000µs 📉 -96.6%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ index_noaspect

Time: ✅ 0.283µs (SLO: <10.000µs 📉 -97.2%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ join_aspect

Time: ✅ 1.228µs (SLO: <10.000µs 📉 -87.7%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ join_noaspect

Time: ✅ 0.496µs (SLO: <10.000µs 📉 -95.0%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ ljust_aspect

Time: ✅ 10.372µs (SLO: <20.000µs 📉 -48.1%)

Memory: ✅ 36.943MB (SLO: <39.000MB -5.3%)


✅ ljust_noaspect

Time: ✅ 0.408µs (SLO: <10.000µs 📉 -95.9%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ lower_aspect

Time: ✅ 2.273µs (SLO: <10.000µs 📉 -77.3%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ lower_noaspect

Time: ✅ 0.377µs (SLO: <10.000µs 📉 -96.2%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ lstrip_aspect

Time: ✅ 10.408µs (SLO: <20.000µs 📉 -48.0%)

Memory: ✅ 36.943MB (SLO: <39.000MB -5.3%)


✅ lstrip_noaspect

Time: ✅ 0.387µs (SLO: <10.000µs 📉 -96.1%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ modulo_aspect

Time: ✅ 0.576µs (SLO: <10.000µs 📉 -94.2%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ modulo_aspect_for_bytearray_bytearray

Time: ✅ 1.265µs (SLO: <10.000µs 📉 -87.3%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ modulo_aspect_for_bytes

Time: ✅ 0.762µs (SLO: <10.000µs 📉 -92.4%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ modulo_aspect_for_bytes_bytearray

Time: ✅ 0.998µs (SLO: <10.000µs 📉 -90.0%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ modulo_noaspect

Time: ✅ 0.638µs (SLO: <10.000µs 📉 -93.6%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ replace_aspect

Time: ✅ 4.705µs (SLO: <10.000µs 📉 -52.9%)

Memory: ✅ 36.943MB (SLO: <39.000MB -5.3%)


✅ replace_noaspect

Time: ✅ 0.466µs (SLO: <10.000µs 📉 -95.3%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ repr_aspect

Time: ✅ 0.907µs (SLO: <10.000µs 📉 -90.9%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ repr_noaspect

Time: ✅ 0.417µs (SLO: <10.000µs 📉 -95.8%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ rstrip_aspect

Time: ✅ 10.943µs (SLO: <20.000µs 📉 -45.3%)

Memory: ✅ 36.943MB (SLO: <39.000MB -5.3%)


✅ rstrip_noaspect

Time: ✅ 0.388µs (SLO: <10.000µs 📉 -96.1%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ slice_aspect

Time: ✅ 0.479µs (SLO: <10.000µs 📉 -95.2%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ slice_noaspect

Time: ✅ 0.452µs (SLO: <10.000µs 📉 -95.5%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ stringio_aspect

Time: ✅ 2.187µs (SLO: <10.000µs 📉 -78.1%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ stringio_noaspect

Time: ✅ 0.714µs (SLO: <10.000µs 📉 -92.9%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ strip_aspect

Time: ✅ 10.379µs (SLO: <20.000µs 📉 -48.1%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ strip_noaspect

Time: ✅ 0.390µs (SLO: <10.000µs 📉 -96.1%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ swapcase_aspect

Time: ✅ 2.516µs (SLO: <10.000µs 📉 -74.8%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ swapcase_noaspect

Time: ✅ 0.543µs (SLO: <10.000µs 📉 -94.6%)

Memory: ✅ 36.943MB (SLO: <39.000MB -5.3%)


✅ title_aspect

Time: ✅ 2.386µs (SLO: <10.000µs 📉 -76.1%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ title_noaspect

Time: ✅ 0.502µs (SLO: <10.000µs 📉 -95.0%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ translate_aspect

Time: ✅ 3.346µs (SLO: <10.000µs 📉 -66.5%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ translate_noaspect

Time: ✅ 1.054µs (SLO: <10.000µs 📉 -89.5%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ upper_aspect

Time: ✅ 2.304µs (SLO: <10.000µs 📉 -77.0%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ upper_noaspect

Time: ✅ 0.380µs (SLO: <10.000µs 📉 -96.2%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


🔵 iastaspectsospath - 24/24

🔵 No baseline data available for this suite

✅ ospathbasename_aspect

Time: ✅ 4.162µs (SLO: <10.000µs 📉 -58.4%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ ospathbasename_noaspect

Time: ✅ 1.082µs (SLO: <10.000µs 📉 -89.2%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ ospathjoin_aspect

Time: ✅ 6.043µs (SLO: <10.000µs 📉 -39.6%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ ospathjoin_noaspect

Time: ✅ 2.322µs (SLO: <10.000µs 📉 -76.8%)

Memory: ✅ 36.805MB (SLO: <39.000MB -5.6%)


✅ ospathnormcase_aspect

Time: ✅ 3.407µs (SLO: <10.000µs 📉 -65.9%)

Memory: ✅ 36.825MB (SLO: <39.000MB -5.6%)


✅ ospathnormcase_noaspect

Time: ✅ 0.574µs (SLO: <10.000µs 📉 -94.3%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ ospathsplit_aspect

Time: ✅ 4.783µs (SLO: <10.000µs 📉 -52.2%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ ospathsplit_noaspect

Time: ✅ 1.606µs (SLO: <10.000µs 📉 -83.9%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ ospathsplitdrive_aspect

Time: ✅ 3.650µs (SLO: <10.000µs 📉 -63.5%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ ospathsplitdrive_noaspect

Time: ✅ 0.710µs (SLO: <10.000µs 📉 -92.9%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ ospathsplitext_aspect

Time: ✅ 4.525µs (SLO: <10.000µs 📉 -54.8%)

Memory: ✅ 36.884MB (SLO: <39.000MB -5.4%)


✅ ospathsplitext_noaspect

Time: ✅ 1.391µs (SLO: <10.000µs 📉 -86.1%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


🔵 iastaspectssplit - 12/12

🔵 No baseline data available for this suite

✅ rsplit_aspect

Time: ✅ 1.491µs (SLO: <10.000µs 📉 -85.1%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ rsplit_noaspect

Time: ✅ 0.587µs (SLO: <10.000µs 📉 -94.1%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ split_aspect

Time: ✅ 1.462µs (SLO: <10.000µs 📉 -85.4%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ split_noaspect

Time: ✅ 0.576µs (SLO: <10.000µs 📉 -94.2%)

Memory: ✅ 36.923MB (SLO: <39.000MB -5.3%)


✅ splitlines_aspect

Time: ✅ 1.427µs (SLO: <10.000µs 📉 -85.7%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


✅ splitlines_noaspect

Time: ✅ 0.601µs (SLO: <10.000µs 📉 -94.0%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


🔵 iastpropagation - 8/8

🔵 No baseline data available for this suite

✅ no-propagation

Time: ✅ 49.448µs (SLO: <60.000µs 📉 -17.6%)

Memory: ✅ 36.766MB (SLO: <39.000MB -5.7%)


✅ propagation_enabled

Time: ✅ 147.048µs (SLO: <160.000µs -8.1%)

Memory: ✅ 36.844MB (SLO: <39.000MB -5.5%)


✅ propagation_enabled_100

Time: ✅ 1.585ms (SLO: <1.800ms 📉 -12.0%)

Memory: ✅ 36.903MB (SLO: <39.000MB -5.4%)


✅ propagation_enabled_1000

Time: ✅ 29.155ms (SLO: <30.550ms -4.6%)

Memory: ✅ 36.864MB (SLO: <39.000MB -5.5%)


🔵 otelsdkspan - 24/24

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 40.614ms (SLO: <42.000ms -3.3%)

Memory: ✅ 34.111MB (SLO: <39.000MB 📉 -12.5%)


✅ add-link

Time: ✅ 36.823ms (SLO: <38.550ms -4.5%)

Memory: ✅ 34.151MB (SLO: <39.000MB 📉 -12.4%)


✅ add-metrics

Time: ✅ 221.421ms (SLO: <232.000ms -4.6%)

Memory: ✅ 34.131MB (SLO: <39.000MB 📉 -12.5%)


✅ add-tags

Time: ✅ 212.429ms (SLO: <221.600ms -4.1%)

Memory: ✅ 34.151MB (SLO: <39.000MB 📉 -12.4%)


✅ get-context

Time: ✅ 29.179ms (SLO: <31.300ms -6.8%)

Memory: ✅ 34.151MB (SLO: <39.000MB 📉 -12.4%)


✅ is-recording

Time: ✅ 29.032ms (SLO: <31.000ms -6.3%)

Memory: ✅ 34.190MB (SLO: <39.000MB 📉 -12.3%)


✅ record-exception

Time: ✅ 63.178ms (SLO: <65.850ms -4.1%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ set-status

Time: ✅ 31.908ms (SLO: <34.150ms -6.6%)

Memory: ✅ 34.190MB (SLO: <39.000MB 📉 -12.3%)


✅ start

Time: ✅ 28.623ms (SLO: <30.150ms -5.1%)

Memory: ✅ 34.131MB (SLO: <39.000MB 📉 -12.5%)


✅ start-finish

Time: ✅ 34.107ms (SLO: <35.350ms -3.5%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


✅ start-finish-telemetry

Time: ✅ 33.881ms (SLO: <35.450ms -4.4%)

Memory: ✅ 34.210MB (SLO: <39.000MB 📉 -12.3%)


✅ update-name

Time: ✅ 31.078ms (SLO: <33.400ms -7.0%)

Memory: ✅ 34.170MB (SLO: <39.000MB 📉 -12.4%)


🔵 otelspan - 22/22

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 45.183ms (SLO: <47.150ms -4.2%)

Memory: ✅ 44.376MB (SLO: <46.500MB -4.6%)


✅ add-metrics

Time: ✅ 321.251ms (SLO: <344.800ms -6.8%)

Memory: ✅ 560.443MB (SLO: <562.000MB 🟡 -0.3%)


✅ add-tags

Time: ✅ 290.850ms (SLO: <314.000ms -7.4%)

Memory: ✅ 560.833MB (SLO: <563.500MB 🟡 -0.5%)


✅ get-context

Time: ✅ 87.241ms (SLO: <92.350ms -5.5%)

Memory: ✅ 39.502MB (SLO: <46.500MB 📉 -15.0%)


✅ is-recording

Time: ✅ 43.484ms (SLO: <44.500ms -2.3%)

Memory: ✅ 43.800MB (SLO: <46.500MB -5.8%)


✅ record-exception

Time: ✅ 61.688ms (SLO: <67.650ms -8.8%)

Memory: ✅ 39.803MB (SLO: <46.500MB 📉 -14.4%)


✅ set-status

Time: ✅ 49.346ms (SLO: <50.400ms -2.1%)

Memory: ✅ 43.801MB (SLO: <46.500MB -5.8%)


✅ start

Time: ✅ 42.576ms (SLO: <43.450ms -2.0%)

Memory: ✅ 43.797MB (SLO: <46.500MB -5.8%)


✅ start-finish

Time: ✅ 85.431ms (SLO: <88.000ms -2.9%)

Memory: ✅ 33.817MB (SLO: <46.500MB 📉 -27.3%)


✅ start-finish-telemetry

Time: ✅ 86.680ms (SLO: <89.000ms -2.6%)

Memory: ✅ 33.817MB (SLO: <46.500MB 📉 -27.3%)


✅ update-name

Time: ✅ 43.942ms (SLO: <45.150ms -2.7%)

Memory: ✅ 44.030MB (SLO: <46.500MB -5.3%)


🔵 packagespackageforrootmodulemapping - 4/4

🔵 No baseline data available for this suite

✅ cache_off

Time: ✅ 338.142ms (SLO: <354.300ms -4.6%)

Memory: ✅ 36.842MB (SLO: <40.000MB -7.9%)


✅ cache_on

Time: ✅ 0.393µs (SLO: <10.000µs 📉 -96.1%)

Memory: ✅ 35.229MB (SLO: <39.000MB -9.7%)


🔵 packagesupdateimporteddependencies - 24/24

🔵 No baseline data available for this suite

✅ import_many

Time: ✅ 155.412µs (SLO: <170.000µs -8.6%)

Memory: ✅ 36.665MB (SLO: <38.500MB -4.8%)


✅ import_many_cached

Time: ✅ 121.852µs (SLO: <130.000µs -6.3%)

Memory: ✅ 36.020MB (SLO: <38.500MB -6.4%)


✅ import_many_stdlib

Time: ✅ 1.602ms (SLO: <1.750ms -8.5%)

Memory: ✅ 36.174MB (SLO: <38.500MB -6.0%)


✅ import_many_stdlib_cached

Time: ✅ 0.964ms (SLO: <1.100ms 📉 -12.4%)

Memory: ✅ 36.592MB (SLO: <38.500MB -5.0%)


✅ import_many_unknown

Time: ✅ 828.610µs (SLO: <890.000µs -6.9%)

Memory: ✅ 36.062MB (SLO: <38.500MB -6.3%)


✅ import_many_unknown_cached

Time: ✅ 795.401µs (SLO: <870.000µs -8.6%)

Memory: ✅ 36.391MB (SLO: <38.500MB -5.5%)


✅ import_one

Time: ✅ 19.857µs (SLO: <30.000µs 📉 -33.8%)

Memory: ✅ 36.339MB (SLO: <39.000MB -6.8%)


✅ import_one_cache

Time: ✅ 6.316µs (SLO: <10.000µs 📉 -36.8%)

Memory: ✅ 36.451MB (SLO: <38.500MB -5.3%)


✅ import_one_stdlib

Time: ✅ 18.742µs (SLO: <20.000µs -6.3%)

Memory: ✅ 36.454MB (SLO: <38.500MB -5.3%)


✅ import_one_stdlib_cache

Time: ✅ 6.278µs (SLO: <10.000µs 📉 -37.2%)

Memory: ✅ 36.029MB (SLO: <38.500MB -6.4%)


✅ import_one_unknown

Time: ✅ 45.217µs (SLO: <50.000µs -9.6%)

Memory: ✅ 35.981MB (SLO: <38.500MB -6.5%)


✅ import_one_unknown_cache

Time: ✅ 6.320µs (SLO: <10.000µs 📉 -36.8%)

Memory: ✅ 36.041MB (SLO: <38.500MB -6.4%)


🔵 ratelimiter - 12/12

🔵 No baseline data available for this suite

✅ defaults

Time: ✅ 2.338µs (SLO: <10.000µs 📉 -76.6%)

Memory: ✅ 30.946MB (SLO: <34.000MB -9.0%)


✅ high_rate_limit

Time: ✅ 2.414µs (SLO: <10.000µs 📉 -75.9%)

Memory: ✅ 30.848MB (SLO: <34.000MB -9.3%)


✅ long_window

Time: ✅ 2.346µs (SLO: <10.000µs 📉 -76.5%)

Memory: ✅ 30.985MB (SLO: <34.000MB -8.9%)


✅ low_rate_limit

Time: ✅ 2.359µs (SLO: <10.000µs 📉 -76.4%)

Memory: ✅ 30.985MB (SLO: <34.000MB -8.9%)


✅ no_rate_limit

Time: ✅ 0.829µs (SLO: <10.000µs 📉 -91.7%)

Memory: ✅ 30.907MB (SLO: <34.000MB -9.1%)


✅ short_window

Time: ✅ 2.461µs (SLO: <10.000µs 📉 -75.4%)

Memory: ✅ 30.946MB (SLO: <34.000MB -9.0%)


🔵 recursivecomputation - 8/8

🔵 No baseline data available for this suite

✅ deep

Time: ✅ 308.753ms (SLO: <320.950ms -3.8%)

Memory: ✅ 32.460MB (SLO: <34.500MB -5.9%)


✅ deep-profiled

Time: ✅ 327.513ms (SLO: <359.150ms -8.8%)

Memory: ✅ 35.095MB (SLO: <39.000MB 📉 -10.0%)


✅ medium

Time: ✅ 7.039ms (SLO: <7.400ms -4.9%)

Memory: ✅ 31.221MB (SLO: <34.000MB -8.2%)


✅ shallow

Time: ✅ 0.951ms (SLO: <1.050ms -9.4%)

Memory: ✅ 31.280MB (SLO: <34.000MB -8.0%)


🔵 samplingrules - 8/8

🔵 No baseline data available for this suite

✅ average_match

Time: ✅ 274.309µs (SLO: <290.000µs -5.4%)

Memory: ✅ 31.261MB (SLO: <34.000MB -8.1%)


✅ high_match

Time: ✅ 446.755µs (SLO: <480.000µs -6.9%)

Memory: ✅ 31.300MB (SLO: <34.000MB -7.9%)


✅ low_match

Time: ✅ 110.578µs (SLO: <120.000µs -7.9%)

Memory: ✅ 433.635MB (SLO: <450.000MB -3.6%)


✅ very_low_match

Time: ✅ 7.677ms (SLO: <8.500ms -9.7%)

Memory: ✅ 57.065MB (SLO: <60.000MB -4.9%)


🔵 sethttpmeta - 32/32

🔵 No baseline data available for this suite

✅ all-disabled

Time: ✅ 12.507µs (SLO: <20.000µs 📉 -37.5%)

Memory: ✅ 31.752MB (SLO: <34.000MB -6.6%)


✅ all-enabled

Time: ✅ 42.567µs (SLO: <50.000µs 📉 -14.9%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ collectipvariant_exists

Time: ✅ 43.023µs (SLO: <50.000µs 📉 -14.0%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


✅ no-collectipvariant

Time: ✅ 42.391µs (SLO: <50.000µs 📉 -15.2%)

Memory: ✅ 31.850MB (SLO: <34.000MB -6.3%)


✅ no-useragentvariant

Time: ✅ 40.952µs (SLO: <50.000µs 📉 -18.1%)

Memory: ✅ 31.831MB (SLO: <34.000MB -6.4%)


✅ obfuscation-no-query

Time: ✅ 42.592µs (SLO: <50.000µs 📉 -14.8%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


✅ obfuscation-regular-case-explicit-query

Time: ✅ 79.042µs (SLO: <90.000µs 📉 -12.2%)

Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%)


✅ obfuscation-regular-case-implicit-query

Time: ✅ 80.508µs (SLO: <90.000µs 📉 -10.5%)

Memory: ✅ 32.204MB (SLO: <34.000MB -5.3%)


✅ obfuscation-send-querystring-disabled

Time: ✅ 157.119µs (SLO: <170.000µs -7.6%)

Memory: ✅ 32.165MB (SLO: <34.500MB -6.8%)


✅ obfuscation-worst-case-explicit-query

Time: ✅ 151.392µs (SLO: <160.000µs -5.4%)

Memory: ✅ 32.244MB (SLO: <34.500MB -6.5%)


✅ obfuscation-worst-case-implicit-query

Time: ✅ 158.985µs (SLO: <170.000µs -6.5%)

Memory: ✅ 32.204MB (SLO: <34.500MB -6.7%)


✅ useragentvariant_exists_1

Time: ✅ 41.779µs (SLO: <50.000µs 📉 -16.4%)

Memory: ✅ 31.831MB (SLO: <34.000MB -6.4%)


✅ useragentvariant_exists_2

Time: ✅ 44.020µs (SLO: <50.000µs 📉 -12.0%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


✅ useragentvariant_exists_3

Time: ✅ 42.284µs (SLO: <50.000µs 📉 -15.4%)

Memory: ✅ 31.811MB (SLO: <34.000MB -6.4%)


✅ useragentvariant_not_exists_1

Time: ✅ 41.545µs (SLO: <50.000µs 📉 -16.9%)

Memory: ✅ 31.752MB (SLO: <34.000MB -6.6%)


✅ useragentvariant_not_exists_2

Time: ✅ 41.628µs (SLO: <50.000µs 📉 -16.7%)

Memory: ✅ 31.792MB (SLO: <34.000MB -6.5%)


🔵 span - 26/26

🔵 No baseline data available for this suite

✅ add-event

Time: ✅ 24.080ms (SLO: <26.200ms -8.1%)

Memory: ✅ 50.541MB (SLO: <53.000MB -4.6%)


✅ add-metrics

Time: ✅ 90.514ms (SLO: <98.350ms -8.0%)

Memory: ✅ 614.144MB (SLO: <961.000MB 📉 -36.1%)


✅ add-tags

Time: ✅ 149.743ms (SLO: <168.550ms 📉 -11.2%)

Memory: ✅ 614.597MB (SLO: <962.500MB 📉 -36.1%)


✅ get-context

Time: ✅ 22.612ms (SLO: <23.700ms -4.6%)

Memory: ✅ 49.435MB (SLO: <53.000MB -6.7%)


✅ is-recording

Time: ✅ 22.490ms (SLO: <23.900ms -5.9%)

Memory: ✅ 49.587MB (SLO: <53.000MB -6.4%)


✅ record-exception

Time: ✅ 42.838ms (SLO: <44.500ms -3.7%)

Memory: ✅ 42.370MB (SLO: <53.000MB 📉 -20.1%)


✅ set-status

Time: ✅ 24.069ms (SLO: <26.000ms -7.4%)

Memory: ✅ 49.539MB (SLO: <53.000MB -6.5%)


✅ start

Time: ✅ 22.349ms (SLO: <23.500ms -4.9%)

Memory: ✅ 49.421MB (SLO: <53.000MB -6.8%)


✅ start-finish

Time: ✅ 54.493ms (SLO: <55.500ms 🟡 -1.8%)

Memory: ✅ 31.241MB (SLO: <34.000MB -8.1%)


✅ start-finish-telemetry

Time: ✅ 56.168ms (SLO: <58.300ms -3.7%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)


✅ start-finish-traceid128

Time: ✅ 57.789ms (SLO: <60.050ms -3.8%)

Memory: ✅ 31.162MB (SLO: <34.000MB -8.3%)


✅ start-traceid128

Time: ✅ 22.446ms (SLO: <24.600ms -8.8%)

Memory: ✅ 49.539MB (SLO: <53.000MB -6.5%)


✅ update-name

Time: ✅ 22.929ms (SLO: <24.100ms -4.9%)

Memory: ✅ 50.076MB (SLO: <53.000MB -5.5%)


🔵 telemetryaddmetric - 30/30

🔵 No baseline data available for this suite

✅ 1-count-metric-1-times

Time: ✅ 3.151µs (SLO: <10.000µs 📉 -68.5%)

Memory: ✅ 31.300MB (SLO: <34.000MB -7.9%)


✅ 1-count-metrics-100-times

Time: ✅ 212.400µs (SLO: <240.000µs 📉 -11.5%)

Memory: ✅ 31.339MB (SLO: <34.000MB -7.8%)


✅ 1-distribution-metric-1-times

Time: ✅ 2.931µs (SLO: <10.000µs 📉 -70.7%)

Memory: ✅ 31.300MB (SLO: <34.000MB -7.9%)


✅ 1-distribution-metrics-100-times

Time: ✅ 193.504µs (SLO: <210.000µs -7.9%)

Memory: ✅ 31.339MB (SLO: <34.000MB -7.8%)


✅ 1-gauge-metric-1-times

Time: ✅ 2.215µs (SLO: <10.000µs 📉 -77.9%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)


✅ 1-gauge-metrics-100-times

Time: ✅ 123.612µs (SLO: <140.000µs 📉 -11.7%)

Memory: ✅ 31.339MB (SLO: <34.000MB -7.8%)


✅ 1-rate-metric-1-times

Time: ✅ 3.181µs (SLO: <10.000µs 📉 -68.2%)

Memory: ✅ 31.379MB (SLO: <34.000MB -7.7%)


✅ 1-rate-metrics-100-times

Time: ✅ 213.784µs (SLO: <230.000µs -7.1%)

Memory: ✅ 31.359MB (SLO: <34.000MB -7.8%)


✅ 100-count-metrics-100-times

Time: ✅ 21.494ms (SLO: <22.500ms -4.5%)

Memory: ✅ 31.241MB (SLO: <34.000MB -8.1%)


✅ 100-distribution-metrics-100-times

Time: ✅ 2.023ms (SLO: <2.100ms -3.7%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)


✅ 100-gauge-metrics-100-times

Time: ✅ 1.273ms (SLO: <1.400ms -9.1%)

Memory: ✅ 31.300MB (SLO: <34.000MB -7.9%)


✅ 100-rate-metrics-100-times

Time: ✅ 2.217ms (SLO: <2.400ms -7.6%)

Memory: ✅ 31.320MB (SLO: <34.000MB -7.9%)


✅ flush-1-metric

Time: ✅ 4.373µs (SLO: <10.000µs 📉 -56.3%)

Memory: ✅ 31.359MB (SLO: <34.000MB -7.8%)


✅ flush-100-metrics

Time: ✅ 183.555µs (SLO: <200.000µs -8.2%)

Memory: ✅ 31.359MB (SLO: <34.000MB -7.8%)


✅ flush-1000-metrics

Time: ✅ 2.215ms (SLO: <2.350ms -5.7%)

Memory: ✅ 32.440MB (SLO: <34.500MB -6.0%)


🔵 tracer - 6/6

🔵 No baseline data available for this suite

✅ large

Time: ✅ 30.108ms (SLO: <32.950ms -8.6%)

Memory: ✅ 32.460MB (SLO: <34.500MB -5.9%)


✅ medium

Time: ✅ 2.952ms (SLO: <3.200ms -7.8%)

Memory: ✅ 31.221MB (SLO: <34.000MB -8.2%)


✅ small

Time: ✅ 337.011µs (SLO: <370.000µs -8.9%)

Memory: ✅ 31.162MB (SLO: <34.000MB -8.3%)

@brettlangdon brettlangdon force-pushed the LANGPLAT-728/fix.wheel.record branch from 89e4767 to 50bc6ba Compare August 12, 2025 14:27
@brettlangdon brettlangdon marked this pull request as ready for review August 12, 2025 16:18
@brettlangdon brettlangdon requested review from a team as code owners August 12, 2025 16:18
@brettlangdon brettlangdon changed the title chore: remove source files from wheel RECORD chore(build): remove source files from wheel RECORD Aug 12, 2025
@brettlangdon brettlangdon enabled auto-merge (squash) August 12, 2025 16:19
@brettlangdon brettlangdon merged commit ff8f18d into main Aug 12, 2025
403 of 406 checks passed
@brettlangdon brettlangdon deleted the LANGPLAT-728/fix.wheel.record branch August 12, 2025 17:06
brettlangdon added a commit that referenced this pull request Aug 12, 2025
## Problem

PyPI has issued a deprecation warning for our `ddtrace` package wheels.
The wheel RECORD files list source files (`.c`, `.cpp`, `.h`, `.pyx`,
etc.) that were removed during post-processing but the RECORD wasn't
updated to reflect this. This mismatch between RECORD contents and
actual wheel contents will become a hard error in future PyPI releases.

## Solution

We've updated our wheel build pipeline to ensure RECORD file integrity:

1. **Enhanced `zip_filter.py`** - Our existing script for removing
source files from wheels now also updates the RECORD file to maintain
consistency between listed and actual contents.

2. **Unified build approach** - All platforms (Linux, macOS, Windows)
now use the same `zip_filter.py` script for consistent source file
removal and RECORD updating.

3. **Automated validation** - Added a new validation script and CI step
that verifies every built wheel has a RECORD file that accurately
reflects its contents, including proper SHA256 hashesand file sizes.

This ensures our wheels comply with PyPI requirements while maintaining
the same distribution content - compiled extensions without source
files, but with accurate metadata.



## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [ ] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
taegyunkim pushed a commit that referenced this pull request Sep 3, 2025
## Problem

PyPI has issued a deprecation warning for our `ddtrace` package wheels.
The wheel RECORD files list source files (`.c`, `.cpp`, `.h`, `.pyx`,
etc.) that were removed during post-processing but the RECORD wasn't
updated to reflect this. This mismatch between RECORD contents and
actual wheel contents will become a hard error in future PyPI releases.

## Solution

We've updated our wheel build pipeline to ensure RECORD file integrity:

1. **Enhanced `zip_filter.py`** - Our existing script for removing
source files from wheels now also updates the RECORD file to maintain
consistency between listed and actual contents.

2. **Unified build approach** - All platforms (Linux, macOS, Windows)
now use the same `zip_filter.py` script for consistent source file
removal and RECORD updating.

3. **Automated validation** - Added a new validation script and CI step
that verifies every built wheel has a RECORD file that accurately
reflects its contents, including proper SHA256 hashesand file sizes.

This ensures our wheels comply with PyPI requirements while maintaining
the same distribution content - compiled extensions without source
files, but with accurate metadata.



## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [ ] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
taegyunkim pushed a commit that referenced this pull request Sep 3, 2025
## Problem

PyPI has issued a deprecation warning for our `ddtrace` package wheels.
The wheel RECORD files list source files (`.c`, `.cpp`, `.h`, `.pyx`,
etc.) that were removed during post-processing but the RECORD wasn't
updated to reflect this. This mismatch between RECORD contents and
actual wheel contents will become a hard error in future PyPI releases.

## Solution

We've updated our wheel build pipeline to ensure RECORD file integrity:

1. **Enhanced `zip_filter.py`** - Our existing script for removing
source files from wheels now also updates the RECORD file to maintain
consistency between listed and actual contents.

2. **Unified build approach** - All platforms (Linux, macOS, Windows)
now use the same `zip_filter.py` script for consistent source file
removal and RECORD updating.

3. **Automated validation** - Added a new validation script and CI step
that verifies every built wheel has a RECORD file that accurately
reflects its contents, including proper SHA256 hashesand file sizes.

This ensures our wheels comply with PyPI requirements while maintaining
the same distribution content - compiled extensions without source
files, but with accurate metadata.



## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [ ] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
erikayasuda pushed a commit that referenced this pull request Sep 3, 2025
## Problem

PyPI has issued a deprecation warning for our `ddtrace` package wheels.
The wheel RECORD files list source files (`.c`, `.cpp`, `.h`, `.pyx`,
etc.) that were removed during post-processing but the RECORD wasn't
updated to reflect this. This mismatch between RECORD contents and
actual wheel contents will become a hard error in future PyPI releases.

## Solution

We've updated our wheel build pipeline to ensure RECORD file integrity:

1. **Enhanced `zip_filter.py`** - Our existing script for removing
source files from wheels now also updates the RECORD file to maintain
consistency between listed and actual contents.

2. **Unified build approach** - All platforms (Linux, macOS, Windows)
now use the same `zip_filter.py` script for consistent source file
removal and RECORD updating.

3. **Automated validation** - Added a new validation script and CI step
that verifies every built wheel has a RECORD file that accurately
reflects its contents, including proper SHA256 hashesand file sizes.

This ensures our wheels comply with PyPI requirements while maintaining
the same distribution content - compiled extensions without source
files, but with accurate metadata.



## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing
strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note
guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if
[applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))

## Reviewer Checklist
- [ ] Reviewer has checked that all the criteria below are met 
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking
[API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces)
changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance
implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the
[release branch maintenance
policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/no-changelog A changelog entry is not required for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants