chore(aap): enforce typing in _common_module_patches#17168
chore(aap): enforce typing in _common_module_patches#17168florentinl wants to merge 5 commits intomainfrom
Conversation
Add typed signatures to all functions in _common_module_patches.py and remove the mypy disallow_untyped_defs exception. Stdlib imports used only for type annotations are deferred behind TYPE_CHECKING to avoid loading http.client, urllib.request, pathlib, etc. at module import time (this module loads via remote config even for non-HTTP apps). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Codeowners resolved as |
Performance SLOsComparing candidate florentin.labelle/no-untyped-def-common-module-patches (38fd81a) with baseline main (a75e22c) 📈 Performance Regressions (2 suites)📈 iastaspects - 118/118✅ add_aspectTime: ✅ 102.373µs (SLO: <130.000µs 📉 -21.3%) vs baseline: +2.7% Memory: ✅ 44.037MB (SLO: <46.000MB -4.3%) vs baseline: +5.1% ✅ add_inplace_aspectTime: ✅ 100.541µs (SLO: <130.000µs 📉 -22.7%) vs baseline: -0.3% Memory: ✅ 44.023MB (SLO: <46.000MB -4.3%) vs baseline: +4.5% ✅ add_inplace_noaspectTime: ✅ 28.429µs (SLO: <40.000µs 📉 -28.9%) vs baseline: +1.0% Memory: ✅ 43.971MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ add_noaspectTime: ✅ 48.886µs (SLO: <70.000µs 📉 -30.2%) vs baseline: +0.7% Memory: ✅ 43.999MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ bytearray_aspectTime: ✅ 250.026µs (SLO: <400.000µs 📉 -37.5%) vs baseline: -0.5% Memory: ✅ 44.005MB (SLO: <46.000MB -4.3%) vs baseline: +4.8% ✅ bytearray_extend_aspectTime: ✅ 640.026µs (SLO: <800.000µs 📉 -20.0%) vs baseline: +1.4% Memory: ✅ 43.923MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% ✅ bytearray_extend_noaspectTime: ✅ 264.702µs (SLO: <400.000µs 📉 -33.8%) vs baseline: +0.4% Memory: ✅ 44.374MB (SLO: <46.000MB -3.5%) vs baseline: +5.8% ✅ bytearray_noaspectTime: ✅ 137.383µs (SLO: <300.000µs 📉 -54.2%) vs baseline: +1.4% Memory: ✅ 44.046MB (SLO: <46.000MB -4.2%) vs baseline: +4.9% ✅ bytes_aspectTime: ✅ 216.917µs (SLO: <300.000µs 📉 -27.7%) vs baseline: -0.4% Memory: ✅ 43.939MB (SLO: <46.000MB -4.5%) vs baseline: +4.6% ✅ bytes_noaspectTime: ✅ 133.512µs (SLO: <200.000µs 📉 -33.2%) vs baseline: ~same Memory: ✅ 43.970MB (SLO: <46.000MB -4.4%) vs baseline: +4.6% ✅ bytesio_aspectTime: ✅ 3.740ms (SLO: <5.000ms 📉 -25.2%) vs baseline: -0.5% Memory: ✅ 44.039MB (SLO: <46.000MB -4.3%) vs baseline: +4.9% ✅ bytesio_noaspectTime: ✅ 311.098µs (SLO: <420.000µs 📉 -25.9%) vs baseline: -0.7% Memory: ✅ 43.985MB (SLO: <46.000MB -4.4%) vs baseline: +4.8% ✅ capitalize_aspectTime: ✅ 89.567µs (SLO: <300.000µs 📉 -70.1%) vs baseline: +0.5% Memory: ✅ 43.964MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ capitalize_noaspectTime: ✅ 249.263µs (SLO: <300.000µs 📉 -16.9%) vs baseline: ~same Memory: ✅ 43.943MB (SLO: <46.000MB -4.5%) vs baseline: +4.7% ✅ casefold_aspectTime: ✅ 89.214µs (SLO: <500.000µs 📉 -82.2%) vs baseline: -0.3% Memory: ✅ 43.960MB (SLO: <46.000MB -4.4%) vs baseline: +4.6% ✅ casefold_noaspectTime: ✅ 303.466µs (SLO: <500.000µs 📉 -39.3%) vs baseline: ~same Memory: ✅ 44.004MB (SLO: <46.000MB -4.3%) vs baseline: +4.7% ✅ decode_aspectTime: ✅ 86.650µs (SLO: <100.000µs 📉 -13.4%) vs baseline: -0.2% Memory: ✅ 44.053MB (SLO: <46.000MB -4.2%) vs baseline: +4.9% ✅ decode_noaspectTime: ✅ 153.545µs (SLO: <210.000µs 📉 -26.9%) vs baseline: +0.4% Memory: ✅ 43.964MB (SLO: <46.000MB -4.4%) vs baseline: +4.7% ✅ encode_aspectTime: ✅ 84.300µs (SLO: <200.000µs 📉 -57.9%) vs baseline: ~same Memory: ✅ 44.068MB (SLO: <46.000MB -4.2%) vs baseline: +5.0% ✅ encode_noaspectTime: ✅ 139.068µs (SLO: <200.000µs 📉 -30.5%) vs baseline: -1.8% Memory: ✅ 44.009MB (SLO: <46.000MB -4.3%) vs baseline: +5.0% ✅ format_aspectTime: ✅ 14.655ms (SLO: <19.200ms 📉 -23.7%) vs baseline: ~same Memory: ✅ 44.188MB (SLO: <46.000MB -3.9%) vs baseline: +5.1% ✅ format_map_aspectTime: ✅ 16.529ms (SLO: <21.500ms 📉 -23.1%) vs baseline: +0.5% Memory: ✅ 44.019MB (SLO: <46.000MB -4.3%) vs baseline: +4.7% ✅ format_map_noaspectTime: ✅ 368.441µs (SLO: <500.000µs 📉 -26.3%) vs baseline: -0.3% Memory: ✅ 43.943MB (SLO: <46.000MB -4.5%) vs baseline: +4.7% ✅ format_noaspectTime: ✅ 301.838µs (SLO: <500.000µs 📉 -39.6%) vs baseline: -0.5% Memory: ✅ 44.029MB (SLO: <46.000MB -4.3%) vs baseline: +5.0% ✅ index_aspectTime: ✅ 125.616µs (SLO: <300.000µs 📉 -58.1%) vs baseline: +4.9% Memory: ✅ 43.978MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ index_noaspectTime: ✅ 40.051µs (SLO: <300.000µs 📉 -86.6%) vs baseline: -1.1% Memory: ✅ 44.044MB (SLO: <46.000MB -4.3%) vs baseline: +4.9% ✅ join_aspectTime: ✅ 213.786µs (SLO: <300.000µs 📉 -28.7%) vs baseline: +2.0% Memory: ✅ 44.000MB (SLO: <46.000MB -4.3%) vs baseline: +5.0% ✅ join_noaspectTime: ✅ 142.242µs (SLO: <300.000µs 📉 -52.6%) vs baseline: -1.8% Memory: ✅ 43.949MB (SLO: <46.000MB -4.5%) vs baseline: +4.9% ✅ ljust_aspectTime: ✅ 576.814µs (SLO: <700.000µs 📉 -17.6%) vs baseline: 📈 +17.6% Memory: ✅ 43.997MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ ljust_noaspectTime: ✅ 255.253µs (SLO: <300.000µs 📉 -14.9%) vs baseline: +1.1% Memory: ✅ 43.964MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ lower_aspectTime: ✅ 291.575µs (SLO: <500.000µs 📉 -41.7%) vs baseline: ~same Memory: ✅ 43.918MB (SLO: <46.000MB -4.5%) vs baseline: +4.7% ✅ lower_noaspectTime: ✅ 234.221µs (SLO: <300.000µs 📉 -21.9%) vs baseline: -0.3% Memory: ✅ 43.864MB (SLO: <46.000MB -4.6%) vs baseline: +4.8% ✅ lstrip_aspectTime: ✅ 0.267ms (SLO: <3.000ms 📉 -91.1%) vs baseline: -0.1% Memory: ✅ 43.942MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% ✅ lstrip_noaspectTime: ✅ 0.176ms (SLO: <3.000ms 📉 -94.1%) vs baseline: -1.6% Memory: ✅ 43.986MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ modulo_aspectTime: ✅ 14.273ms (SLO: <18.750ms 📉 -23.9%) vs baseline: -1.0% Memory: ✅ 44.140MB (SLO: <46.000MB -4.0%) vs baseline: +5.1% ✅ modulo_aspect_for_bytearray_bytearrayTime: ✅ 14.851ms (SLO: <19.350ms 📉 -23.3%) vs baseline: +0.9% Memory: ✅ 44.048MB (SLO: <46.000MB -4.2%) vs baseline: +4.7% ✅ modulo_aspect_for_bytesTime: ✅ 14.426ms (SLO: <18.900ms 📉 -23.7%) vs baseline: +0.3% Memory: ✅ 44.049MB (SLO: <46.000MB -4.2%) vs baseline: +4.8% ✅ modulo_aspect_for_bytes_bytearrayTime: ✅ 14.622ms (SLO: <19.150ms 📉 -23.6%) vs baseline: +0.4% Memory: ✅ 44.077MB (SLO: <46.000MB -4.2%) vs baseline: +4.9% ✅ modulo_noaspectTime: ✅ 0.361ms (SLO: <3.000ms 📉 -88.0%) vs baseline: +0.5% Memory: ✅ 43.969MB (SLO: <46.000MB -4.4%) vs baseline: +5.0% ✅ replace_aspectTime: ✅ 18.304ms (SLO: <24.000ms 📉 -23.7%) vs baseline: -0.7% Memory: ✅ 44.102MB (SLO: <46.000MB -4.1%) vs baseline: +5.0% ✅ replace_noaspectTime: ✅ 280.759µs (SLO: <400.000µs 📉 -29.8%) vs baseline: +0.8% Memory: ✅ 44.009MB (SLO: <46.000MB -4.3%) vs baseline: +4.9% ✅ repr_aspectTime: ✅ 308.723µs (SLO: <420.000µs 📉 -26.5%) vs baseline: +0.5% Memory: ✅ 43.978MB (SLO: <46.000MB -4.4%) vs baseline: +4.7% ✅ repr_noaspectTime: ✅ 47.298µs (SLO: <90.000µs 📉 -47.4%) vs baseline: +0.3% Memory: ✅ 43.997MB (SLO: <46.000MB -4.4%) vs baseline: +4.8% ✅ rstrip_aspectTime: ✅ 381.104µs (SLO: <500.000µs 📉 -23.8%) vs baseline: -1.0% Memory: ✅ 43.985MB (SLO: <46.000MB -4.4%) vs baseline: +4.7% ✅ rstrip_noaspectTime: ✅ 183.157µs (SLO: <300.000µs 📉 -38.9%) vs baseline: ~same Memory: ✅ 43.926MB (SLO: <46.000MB -4.5%) vs baseline: +4.9% ✅ slice_aspectTime: ✅ 182.405µs (SLO: <300.000µs 📉 -39.2%) vs baseline: -0.6% Memory: ✅ 43.944MB (SLO: <46.000MB -4.5%) vs baseline: +4.7% ✅ slice_noaspectTime: ✅ 53.779µs (SLO: <90.000µs 📉 -40.2%) vs baseline: -0.8% Memory: ✅ 44.005MB (SLO: <46.000MB -4.3%) vs baseline: +5.1% ✅ stringio_aspectTime: ✅ 4.381ms (SLO: <5.000ms 📉 -12.4%) vs baseline: 📈 +14.6% Memory: ✅ 44.049MB (SLO: <46.000MB -4.2%) vs baseline: +4.8% ✅ stringio_noaspectTime: ✅ 344.735µs (SLO: <500.000µs 📉 -31.1%) vs baseline: +0.1% Memory: ✅ 44.043MB (SLO: <46.000MB -4.3%) vs baseline: +4.9% ✅ strip_aspectTime: ✅ 269.786µs (SLO: <350.000µs 📉 -22.9%) vs baseline: +0.7% Memory: ✅ 43.925MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% ✅ strip_noaspectTime: ✅ 177.882µs (SLO: <240.000µs 📉 -25.9%) vs baseline: +1.4% Memory: ✅ 44.006MB (SLO: <46.000MB -4.3%) vs baseline: +4.9% ✅ swapcase_aspectTime: ✅ 330.072µs (SLO: <500.000µs 📉 -34.0%) vs baseline: +0.3% Memory: ✅ 43.965MB (SLO: <46.000MB -4.4%) vs baseline: +4.7% ✅ swapcase_noaspectTime: ✅ 270.862µs (SLO: <400.000µs 📉 -32.3%) vs baseline: +0.4% Memory: ✅ 43.982MB (SLO: <46.000MB -4.4%) vs baseline: +4.9% ✅ title_aspectTime: ✅ 318.224µs (SLO: <500.000µs 📉 -36.4%) vs baseline: ~same Memory: ✅ 43.998MB (SLO: <46.000MB -4.4%) vs baseline: +4.8% ✅ title_noaspectTime: ✅ 256.961µs (SLO: <400.000µs 📉 -35.8%) vs baseline: ~same Memory: ✅ 43.966MB (SLO: <46.000MB -4.4%) vs baseline: +4.8% ✅ translate_aspectTime: ✅ 490.929µs (SLO: <700.000µs 📉 -29.9%) vs baseline: +0.8% Memory: ✅ 44.003MB (SLO: <46.000MB -4.3%) vs baseline: +5.0% ✅ translate_noaspectTime: ✅ 423.484µs (SLO: <500.000µs 📉 -15.3%) vs baseline: -1.1% Memory: ✅ 44.024MB (SLO: <46.000MB -4.3%) vs baseline: +5.0% ✅ upper_aspectTime: ✅ 294.620µs (SLO: <500.000µs 📉 -41.1%) vs baseline: +0.9% Memory: ✅ 43.939MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% ✅ upper_noaspectTime: ✅ 235.379µs (SLO: <400.000µs 📉 -41.2%) vs baseline: +0.6% Memory: ✅ 43.910MB (SLO: <46.000MB -4.5%) vs baseline: +4.8% 📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 512.582µs (SLO: <700.000µs 📉 -26.8%) vs baseline: 📈 +21.0% Memory: ✅ 43.747MB (SLO: <46.000MB -4.9%) vs baseline: +4.1% ✅ ospathbasename_noaspectTime: ✅ 429.920µs (SLO: <700.000µs 📉 -38.6%) vs baseline: +0.2% Memory: ✅ 43.789MB (SLO: <46.000MB -4.8%) vs baseline: +4.9% ✅ ospathjoin_aspectTime: ✅ 622.059µs (SLO: <700.000µs 📉 -11.1%) vs baseline: ~same Memory: ✅ 43.864MB (SLO: <46.000MB -4.6%) vs baseline: +5.0% ✅ ospathjoin_noaspectTime: ✅ 629.871µs (SLO: <700.000µs 📉 -10.0%) vs baseline: ~same Memory: ✅ 43.715MB (SLO: <46.000MB -5.0%) vs baseline: +4.0% ✅ ospathnormcase_aspectTime: ✅ 347.794µs (SLO: <700.000µs 📉 -50.3%) vs baseline: ~same Memory: ✅ 43.761MB (SLO: <46.000MB -4.9%) vs baseline: +4.1% ✅ ospathnormcase_noaspectTime: ✅ 356.681µs (SLO: <700.000µs 📉 -49.0%) vs baseline: -0.2% Memory: ✅ 43.791MB (SLO: <46.000MB -4.8%) vs baseline: +4.4% ✅ ospathsplit_aspectTime: ✅ 485.454µs (SLO: <700.000µs 📉 -30.6%) vs baseline: -0.5% Memory: ✅ 43.974MB (SLO: <46.000MB -4.4%) vs baseline: +4.6% ✅ ospathsplit_noaspectTime: ✅ 497.817µs (SLO: <700.000µs 📉 -28.9%) vs baseline: ~same Memory: ✅ 43.715MB (SLO: <46.000MB -5.0%) vs baseline: +4.0% ✅ ospathsplitdrive_aspectTime: ✅ 371.811µs (SLO: <700.000µs 📉 -46.9%) vs baseline: -0.2% Memory: ✅ 43.780MB (SLO: <46.000MB -4.8%) vs baseline: +4.1% ✅ ospathsplitdrive_noaspectTime: ✅ 73.270µs (SLO: <700.000µs 📉 -89.5%) vs baseline: +0.3% Memory: ✅ 43.758MB (SLO: <46.000MB -4.9%) vs baseline: +4.8% ✅ ospathsplitext_aspectTime: ✅ 452.974µs (SLO: <700.000µs 📉 -35.3%) vs baseline: -0.7% Memory: ✅ 43.704MB (SLO: <46.000MB -5.0%) vs baseline: +3.8% ✅ ospathsplitext_noaspectTime: ✅ 459.905µs (SLO: <700.000µs 📉 -34.3%) vs baseline: -1.0% Memory: ✅ 43.608MB (SLO: <46.000MB -5.2%) vs baseline: +4.4% 🟡 Near SLO Breach (3 suites)🟡 djangosimple - 30/30✅ appsecTime: ✅ 19.710ms (SLO: <22.300ms 📉 -11.6%) vs baseline: ~same Memory: ✅ 68.896MB (SLO: <73.500MB -6.3%) vs baseline: +4.9% ✅ exception-replay-enabledTime: ✅ 1.324ms (SLO: <1.450ms -8.7%) vs baseline: -0.4% Memory: ✅ 66.679MB (SLO: <71.500MB -6.7%) vs baseline: +4.7% ✅ iastTime: ✅ 19.781ms (SLO: <22.250ms 📉 -11.1%) vs baseline: +0.3% Memory: ✅ 68.903MB (SLO: <75.000MB -8.1%) vs baseline: +4.8% ✅ profilerTime: ✅ 15.078ms (SLO: <16.550ms -8.9%) vs baseline: -0.2% Memory: ✅ 60.496MB (SLO: <61.000MB 🟡 -0.8%) vs baseline: +5.0% ✅ resource-renamingTime: ✅ 19.622ms (SLO: <21.750ms -9.8%) vs baseline: -0.3% Memory: ✅ 68.874MB (SLO: <73.500MB -6.3%) vs baseline: +4.7% ✅ span-code-originTime: ✅ 20.117ms (SLO: <28.200ms 📉 -28.7%) vs baseline: +1.5% Memory: ✅ 68.710MB (SLO: <75.000MB -8.4%) vs baseline: +4.9% ✅ tracerTime: ✅ 19.737ms (SLO: <21.750ms -9.3%) vs baseline: -0.2% Memory: ✅ 68.788MB (SLO: <75.000MB -8.3%) vs baseline: +4.7% ✅ tracer-and-profilerTime: ✅ 21.098ms (SLO: <23.500ms 📉 -10.2%) vs baseline: +0.4% Memory: ✅ 70.708MB (SLO: <75.000MB -5.7%) vs baseline: +5.0% ✅ tracer-dont-create-db-spansTime: ✅ 19.855ms (SLO: <21.500ms -7.7%) vs baseline: +0.7% Memory: ✅ 68.888MB (SLO: <75.000MB -8.1%) vs baseline: +4.8% ✅ tracer-minimalTime: ✅ 16.785ms (SLO: <17.500ms -4.1%) vs baseline: -0.7% Memory: ✅ 68.803MB (SLO: <75.000MB -8.3%) vs baseline: +5.1% ✅ tracer-nativeTime: ✅ 19.671ms (SLO: <21.750ms -9.6%) vs baseline: +0.6% Memory: ✅ 68.834MB (SLO: <72.500MB -5.1%) vs baseline: +5.0% ✅ tracer-no-cachesTime: ✅ 17.653ms (SLO: <19.650ms 📉 -10.2%) vs baseline: +0.4% Memory: ✅ 68.709MB (SLO: <75.000MB -8.4%) vs baseline: +5.0% ✅ tracer-no-databasesTime: ✅ 19.333ms (SLO: <20.100ms -3.8%) vs baseline: ~same Memory: ✅ 68.646MB (SLO: <75.000MB -8.5%) vs baseline: +4.9% ✅ tracer-no-middlewareTime: ✅ 19.448ms (SLO: <21.500ms -9.5%) vs baseline: ~same Memory: ✅ 68.699MB (SLO: <75.000MB -8.4%) vs baseline: +4.9% ✅ tracer-no-templatesTime: ✅ 19.673ms (SLO: <22.000ms 📉 -10.6%) vs baseline: +0.9% Memory: ✅ 68.730MB (SLO: <73.500MB -6.5%) vs baseline: +5.1% 🟡 flasksimple - 18/18✅ appsec-getTime: ✅ 3.358ms (SLO: <4.750ms 📉 -29.3%) vs baseline: -0.2% Memory: ✅ 56.164MB (SLO: <66.500MB 📉 -15.5%) vs baseline: +4.9% ✅ appsec-postTime: ✅ 2.875ms (SLO: <6.750ms 📉 -57.4%) vs baseline: +0.2% Memory: ✅ 56.136MB (SLO: <66.500MB 📉 -15.6%) vs baseline: +5.0% ✅ appsec-telemetryTime: ✅ 3.361ms (SLO: <4.750ms 📉 -29.2%) vs baseline: +0.2% Memory: ✅ 56.141MB (SLO: <66.500MB 📉 -15.6%) vs baseline: +4.9% ✅ debuggerTime: ✅ 1.879ms (SLO: <2.000ms -6.0%) vs baseline: +0.3% Memory: ✅ 49.237MB (SLO: <51.500MB -4.4%) vs baseline: +4.8% ✅ iast-getTime: ✅ 1.872ms (SLO: <2.000ms -6.4%) vs baseline: ~same Memory: ✅ 46.026MB (SLO: <49.000MB -6.1%) vs baseline: +4.8% ✅ profilerTime: ✅ 1.916ms (SLO: <2.100ms -8.8%) vs baseline: ~same Memory: ✅ 52.465MB (SLO: <53.500MB 🟡 -1.9%) vs baseline: +5.0% ✅ resource-renamingTime: ✅ 3.338ms (SLO: <3.650ms -8.5%) vs baseline: +0.1% Memory: ✅ 56.078MB (SLO: <60.000MB -6.5%) vs baseline: +4.9% ✅ tracerTime: ✅ 3.347ms (SLO: <3.650ms -8.3%) vs baseline: -0.4% Memory: ✅ 56.129MB (SLO: <60.000MB -6.5%) vs baseline: +4.9% ✅ tracer-nativeTime: ✅ 3.351ms (SLO: <3.650ms -8.2%) vs baseline: +0.3% Memory: ✅ 56.200MB (SLO: <60.000MB -6.3%) vs baseline: +5.0% 🟡 recursivecomputation - 8/8✅ deepTime: ✅ 311.947ms (SLO: <320.950ms -2.8%) vs baseline: +0.4% Memory: ✅ 37.552MB (SLO: <38.750MB -3.1%) vs baseline: +4.9% ✅ deep-profiledTime: ✅ 331.881ms (SLO: <359.150ms -7.6%) vs baseline: -0.2% Memory: ✅ 43.824MB (SLO: <46.000MB -4.7%) vs baseline: +4.8% ✅ mediumTime: ✅ 7.274ms (SLO: <7.400ms 🟡 -1.7%) vs baseline: ~same Memory: ✅ 36.294MB (SLO: <38.000MB -4.5%) vs baseline: +4.2% ✅ shallowTime: ✅ 1.019ms (SLO: <1.050ms -2.9%) vs baseline: +2.0% Memory: ✅ 36.392MB (SLO: <38.000MB -4.2%) vs baseline: +4.3%
|
Summary
_common_module_patches.pyand remove the mypydisallow_untyped_defs = falseexceptionhttp.client,urllib.request,pathlib,types) behindTYPE_CHECKINGto avoid loading them at module import time — this module can load via remote config even for non-HTTP apps__class__.__name__check withisinstancefor proper type narrowing inwrapped_open_ED4CF71136E15EBFTest plan
hatch run lint:typing ddtrace/appsec/_common_module_patches.pypasses clean🤖 Generated with Claude Code
Changelog entry type