PyPI / packaging / 26.3

packaging 26.3

Source
https://github.com/pypa/packaging
Tag scanned
26.3
Compared with
26.2 (1 signals introduced since)
Files
105 scanned, 23 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 25 info
Scan time
21.2 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 25 of 25 warn and critical signals; 25 demoted to info.
Disclude version
4.1.0
Scanned (UTC)
2026-10-21 20:02

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. info warn → info by review payload-bytes-literal tests/test_requirements.py:954:5 new in this release

    concatenated bytes literal contains 112 `\xNN` escapes (54% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_1_PICKLE_REQUESTS_GE_2_0_PRERELEASES = (
        b"\x80\x02cpackaging.requirements\nRequirement\nq\x00)\x81q\x01}q\x02("
        b"X\x04\x00\x00\x00nameq\x03X\x08\x00\x00\x00requestsq\x04X\x03\x00\x00\x00"
        b"urlq\x05NX\x06\x00\x00\x00extrasq\x06c__builtin__\nset\nq\x07]q\x08\x85q"
    likely benign LLM, confidence 0.85 Prerelease Requirement pickle fixture for compatibility testing.
    Reasoning

    A pickled Requirement with prerelease handling, saved from an older packaging version to test compatibility. It is a fixed test artifact, not code that is executed at runtime.

  2. info critical → info by review dynamic-execution docs/conf.py:12:5

    `exec` at module scope (runs on import) on a non-literal expression (ast pass, confidence 0.80)

    with open(os.path.join(_BASE_DIR, "src", "packaging", "__init__.py")) as f:
        exec(f.read(), ABOUT)
    
    # -- General configuration ----------------------------------------------------
    likely benign LLM, confidence 0.90 Docs config execs the packaging package's __init__.py to load version metadata.
    Reasoning

    Sphinx configuration reads the package's own __init__.py to populate the ABOUT metadata dict for the docs build. Executing a version file this way is a common, self-contained pattern with no network or shell activity.

  3. info warn → info by review dynamic-execution src/packaging/licenses/__init__.py:144:9

    `compile` called on a non-literal expression (ast pass, confidence 0.70)

        try:
            compile(python_expression, "", "eval")
        except SyntaxError:
            message = f"Invalid license expression: {raw_license_expression!r}"
    likely benign LLM, confidence 0.85 Validates a license expression by compiling it and catching SyntaxError.
    Reasoning

    compile() in eval mode is used only to validate a license expression string for syntax and raise a friendly error on SyntaxError. It does not run the expression, so the risk is minimal.

  4. info warn → info by review dynamic-execution tests/musllinux/build.sh:16:5

    command name is a variable (`$1`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)

    build_one_in_ubuntu () {
        $1 "multiarch/ubuntu-core:${2}-${UBUNTU_VERSION}" \
            bash "/home/hello-world/musllinux/build.sh" glibc "glibc-${2}"
    }
    likely benign LLM, confidence 0.80 Test build helper runs a docker command passed in as its first argument.
    Reasoning

    The function invokes a caller-supplied docker command from $1 in a test build script for musllinux wheels. The dispatch is local and the target paths are fixed test paths, so this is ordinary test-harness indirection.

  5. info warn → info by review dynamic-execution tests/musllinux/build.sh:21:5

    command name is a variable (`$1`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)

    build_one_in_alpine () {
        $1 "multiarch/alpine:${2}-${ALPINE_VERSION}" \
            sh "/home/hello-world/musllinux/build.sh" musl "musl-${2}"
    }
    likely benign LLM, confidence 0.80 Test build helper for Alpine that takes the docker command as $1.
    Reasoning

    Same pattern as the glibc helper: $1 selects the container runner for an Alpine build in a test script. It is a benign indirection without obfuscation.

  6. info warn → info by review dynamic-execution tests/musllinux/build.sh:30:9

    command name is a variable (`$1`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)

        if [[ $# -ne 0 ]]; then
            "build_one_in_${1}" "$DOCKER" "$2"
            return
        fi
    likely benign LLM, confidence 0.80 Dispatcher that calls build_one_in_<name> based on the CLI argument.
    Reasoning

    The script dispatches to build_one_in_<arg> based on its first argument, a simple test-driver pattern. The function names are fixed and the set of targets is limited to the defined helpers.

  7. info warn → info by review payload-bytes-literal tests/test_markers.py:759:5

    concatenated bytes literal contains 53 `\xNN` escapes (51% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_1_PICKLE_MARKER_PYTHON_VERSION_GE_3_8 = (
        b"\x80\x02cpackaging.markers\nMarker\nq\x00)\x81q\x01N}q\x02X\x08\x00"
        b"\x00\x00_markersq\x03]q\x04cpackaging._parser\nVariable\nq\x05)\x81"
        b"q\x06N}q\x07X\x05\x00\x00\x00valueq\x08X\x0e\x00\x00\x00python_vers"
    likely benign LLM, confidence 0.90 Pickled packaging.markers.Marker fixture used in compatibility tests.
    Reasoning

    The bytes literal is a pickle of a packaging Marker object, kept as a backwards-compatibility fixture for unpickling data written by older packaging versions. Pickle fixtures of this kind are expected in a library test suite; the escapes are just the serialized byte representation.

  8. info warn → info by review payload-bytes-literal tests/test_markers.py:772:5

    concatenated bytes literal contains 51 `\xNN` escapes (51% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_0_PICKLE_MARKER_PYTHON_VERSION_GE_3_8 = (
        b"\x80\x02cpackaging.markers\nMarker\nq\x00)\x81q\x01}q\x02X\x08\x00\x00"
        b"\x00_markersq\x03]q\x04cpackaging._parser\nVariable\nq\x05)\x81q\x06N}"
        b"q\x07X\x05\x00\x00\x00valueq\x08X\x0e\x00\x00\x00python_versionq\ts\x86"
    likely benign LLM, confidence 0.90 Legacy pickled Marker fixture for compatibility testing.
    Reasoning

    This is another pickle fixture for a Marker object from an older packaging release, used to test loading of legacy serialized data. It matches the expected shape for a compatibility test.

  9. info warn → info by review payload-bytes-literal tests/test_markers.py:783:5

    concatenated bytes literal contains 45 `\xNN` escapes (48% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_25_0_PICKLE_MARKER_PYTHON_VERSION_GE_3_8 = (
        b"\x80\x02cpackaging.markers\nMarker\nq\x00)\x81q\x01}q\x02X\x08\x00\x00"
        b"\x00_markersq\x03]q\x04cpackaging._parser\nVariable\nq\x05)\x81q\x06}q\x07"
        b"X\x05\x00\x00\x00valueq\x08X\x0e\x00\x00\x00python_versionq\tsbcpackaging"
    likely benign LLM, confidence 0.90 Legacy pickled Marker fixture in the markers test module.
    Reasoning

    The bytes are a pickled packaging Marker serialized by a past version, included to verify unpickling still works. It is a test fixture for a known serialization format.

  10. info warn → info by review payload-bytes-literal tests/test_requirements.py:897:5

    concatenated bytes literal contains 101 `\xNN` escapes (48% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_1_PICKLE_REQUESTS_GE_2_0_WITH_MARKER = (
        b"\x80\x02cpackaging.requirements\nRequirement\nq\x00)\x81q\x01}q\x02("
        b"X\x04\x00\x00\x00nameq\x03X\x08\x00\x00\x00requestsq\x04X\x03\x00"
        b"\x00\x00urlq\x05NX\x06\x00\x00\x00extrasq\x06c__builtin__\nset\nq\x07"
    likely benign LLM, confidence 0.85 Pickled Requirement fixture used to test legacy deserialization.
    Reasoning

    This is a pickled packaging Requirement fixture, which includes standard pickle opcodes such as the set global reference. It is test data for backwards compatibility with older pickles, not a live payload.

  11. info warn → info by review payload-bytes-literal tests/test_requirements.py:916:5

    concatenated bytes literal contains 121 `\xNN` escapes (53% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_0_PICKLE_REQUESTS_GE_2_0 = (
        b"\x80\x02cpackaging.requirements\nRequirement\nq\x00)\x81q\x01}q\x02("
        b"X\x04\x00\x00\x00nameq\x03X\x08\x00\x00\x00requestsq\x04X\x03\x00"
        b"\x00\x00urlq\x05NX\x06\x00\x00\x00extrasq\x06c__builtin__\nset\nq\x07"
    likely benign LLM, confidence 0.85 Legacy Requirement pickle fixture for compatibility tests.
    Reasoning

    A pickled Requirement object from an earlier packaging release, kept to check that old serialized requirements still load. The fixture is consistent with a test suite and has no execution logic around it.

  12. info warn → info by review payload-bytes-literal tests/test_requirements.py:937:5

    concatenated bytes literal contains 78 `\xNN` escapes (52% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_25_0_PICKLE_REQUESTS_GE_2_0 = (
        b"\x80\x02cpackaging.requirements\nRequirement\nq\x00)\x81q\x01}q\x02("
        b"X\x04\x00\x00\x00nameq\x03X\x08\x00\x00\x00requestsq\x04X\x03\x00"
        b"\x00\x00urlq\x05NX\x06\x00\x00\x00extrasq\x06c__builtin__\nset\nq\x07"
    likely benign LLM, confidence 0.85 Serialized Requirement fixture in the requirements tests.
    Reasoning

    Pickle bytes representing a Requirement object for an older version, used as a regression fixture. The byte layout matches standard pickle protocol output for the packaging class.

  13. info warn → info by review payload-bytes-literal tests/test_specifiers.py:3275:5

    concatenated bytes literal contains 55 `\xNN` escapes (53% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_25_0_PICKLE_SS_GE_3_10_LT_4_0 = (
        b"\x80\x02cpackaging.specifiers\nSpecifierSet\nq\x00)\x81q\x01}q\x02"
        b"(X\x06\x00\x00\x00_specsq\x03c__builtin__\nfrozenset\nq\x04]q\x05"
        b"(cpackaging.specifiers\nSpecifier\nq\x06)\x81q\x07}q\x08(X\x05\x00"
    likely benign LLM, confidence 0.92 Pickled SpecifierSet test fixture for packaging 25.0 compatibility.
    Reasoning

    The bytes literal is a protocol-2 pickle of packaging.specifiers.SpecifierSet objects, a fixture for checking that pickled specifiers still unpickle across packaging versions. It sits in a test file for the packaging library, so the escape density reflects pickle opcodes, not a hidden payload. The pass is ast, but nothing in the snippet executes or decodes the bytes.

  14. info warn → info by review payload-bytes-literal tests/test_specifiers.py:3313:5

    concatenated bytes literal contains 33 `\xNN` escapes (57% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_0_PICKLE_GE_3_10 = (
        b"\x80\x02cpackaging.specifiers\nSpecifier\nq\x00)\x81q\x01N}q\x02"
        b"(X\x0c\x00\x00\x00_prereleasesq\x03NX\x05\x00\x00\x00_specq\x04"
        b"X\x02\x00\x00\x00>=q\x05X\x04\x00\x00\x003.10q\x06\x86q\x07X\r"
    likely benign LLM, confidence 0.92 Pickled Specifier test fixture for packaging 26.0.
    Reasoning

    This is a protocol-2 pickle of a packaging Specifier object, used as a backward-compatibility fixture in the packaging test suite. The binary shape is expected for pickle data. Nothing in the snippet loads or executes it.

  15. info warn → info by review payload-bytes-literal tests/test_specifiers.py:3320:5

    concatenated bytes literal contains 124 `\xNN` escapes (57% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_0_PICKLE_SS_GE_3_10_LT_4_0 = (
        b"\x80\x02cpackaging.specifiers\nSpecifierSet\nq\x00)\x81q\x01N}q\x02"
        b"(X\x0c\x00\x00\x00_prereleasesq\x03NX\x06\x00\x00\x00_specsq\x04"
        b"c__builtin__\nfrozenset\nq\x05]q\x06(cpackaging.specifiers\nSpecifier"
    likely benign LLM, confidence 0.92 Pickled SpecifierSet fixture for packaging 26.0 compatibility tests.
    Reasoning

    The literal is a pickled SpecifierSet with a frozenset of Specifier entries, a standard pickle compatibility fixture in packaging's tests. Its byte-level structure matches pickle opcodes, and the surrounding file is a test module for specifiers.

  16. info warn → info by review payload-bytes-literal tests/test_specifiers.py:3366:5

    concatenated bytes literal contains 42 `\xNN` escapes (57% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_1_PICKLE_GE_3_10 = (
        b"\x80\x02cpackaging.specifiers\nSpecifier\nq\x00)\x81q\x01N}q\x02"
        b"(X\x0c\x00\x00\x00_prereleasesq\x03NX\x07\x00\x00\x00_rangesq\x04"
        b"NX\x05\x00\x00\x00_specq\x05X\x02\x00\x00\x00>=q\x06X\x04\x00\x00"
    likely benign LLM, confidence 0.92 Pickled Specifier fixture for packaging 26.1 tests.
    Reasoning

    The bytes are a pickle of a packaging Specifier with _prereleases, _ranges and _spec attributes. This is a serialized test fixture for checking cross-version unpickling inside the packaging test suite, with no execution path in the snippet.

  17. info warn → info by review payload-bytes-literal tests/test_specifiers.py:3374:5

    concatenated bytes literal contains 97 `\xNN` escapes (57% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_1_PICKLE_SS_GE_3_10_LT_4_0 = (
        b"\x80\x02cpackaging.specifiers\nSpecifierSet\nq\x00)\x81q\x01N}q\x02"
        b"(X\x0e\x00\x00\x00_canonicalizedq\x03\x89X\x0e\x00\x00\x00_has_arb"
        b"itraryq\x04\x89X\x11\x00\x00\x00_is_unsatisfiableq\x05NX\x0c\x00"
    likely benign LLM, confidence 0.92 Pickled SpecifierSet regression fixture for packaging 26.1.
    Reasoning

    This is a pickled SpecifierSet with canonicalization and satisfiability flags, serialized as a regression fixture. The file is packaging's own test suite and the literal is only data.

  18. info warn → info by review payload-bytes-literal tests/test_specifiers.py:3423:5

    concatenated bytes literal contains 40 `\xNN` escapes (58% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_2_PICKLE_SS_GE_3_10_LT_4_0 = (
        b"\x80\x02cpackaging.specifiers\nSpecifierSet\nq\x00)\x81q\x01cpackag"
        b"ing.specifiers\nSpecifier\nq\x02)\x81q\x03X\x02\x00\x00\x00>=q\x04"
        b"X\x04\x00\x00\x003.10q\x05\x86q\x06N\x86q\x07bh\x02)\x81q\x08X\x01"
    likely benign LLM, confidence 0.92 Pickled nested SpecifierSet fixture for packaging 26.2 tests.
    Reasoning

    The literal is a protocol-2 pickle of nested SpecifierSet and Specifier objects, a compatibility fixture in packaging's tests. The high escape ratio is the normal shape of pickle opcodes and does not indicate an obfuscated dropper.

  19. info warn → info by review payload-bytes-literal tests/test_tags.py:2085:5

    concatenated bytes literal contains 47 `\xNN` escapes (64% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_1_PICKLE_TAG_CP39 = (
        b"\x80\x02cpackaging.tags\nTag\nq\x00)\x81q\x01N}q\x02(X\x04\x00\x00"
        b"\x00_abiq\x03X\x04\x00\x00\x00cp39q\x04X\x05\x00\x00\x00_hashq\x05"
        b"\x8a\x08)\xb1\xe8\x9d\x90\xf8tFX\x0c\x00\x00\x00_interpreterq\x06X"
    likely benign LLM, confidence 0.92 Pickled packaging Tag fixture for cp39 tests.
    Reasoning

    This is a pickled packaging.tags.Tag object with abi, interpreter and hash fields, used as a serialization fixture in packaging's tag tests. The binary content is expected for a pickle, and the file is a test module.

  20. info warn → info by review payload-bytes-literal tests/test_tags.py:2096:5

    concatenated bytes literal contains 47 `\xNN` escapes (64% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_0_PICKLE_TAG_CP39 = (
        b"\x80\x02cpackaging.tags\nTag\nq\x00)\x81q\x01N}q\x02(X\x04\x00\x00"
        b"\x00_abiq\x03X\x04\x00\x00\x00cp39q\x04X\x05\x00\x00\x00_hashq\x05"
        b"\x8a\x08\xc1\xdb\xa0\xe5]7z\x87X\x0c\x00\x00\x00_interpreterq\x06X"
    likely benign LLM, confidence 0.92 Pickled packaging Tag fixture for cp39 under packaging 26.0.
    Reasoning

    The bytes are a pickled packaging.tags.Tag for cp39, a serialization compatibility fixture. The raw bytes are pickle data inside a test module and are not executed.

  21. info warn → info by review payload-bytes-literal tests/test_tags.py:2107:5

    concatenated bytes literal contains 49 `\xNN` escapes (65% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_25_0_PICKLE_TAG_CP39 = (
        b"\x80\x02cpackaging.tags\nTag\nq\x00)\x81q\x01N}q\x02(X\x04\x00\x00\x00"
        b"_abiq\x03X\x04\x00\x00\x00cp39q\x04X\x05\x00\x00\x00_hashq\x05\x8a\x08"
        b"\xea\xa5X\x92\xa5\xc9\x11\x0cX\x0c\x00\x00\x00_interpreterq\x06X\x04"
    likely benign LLM, confidence 0.92 Pickled packaging Tag fixture for cp39 under packaging 25.0.
    Reasoning

    This is a pickled Tag object with a hash field and interpreter metadata, a standard fixture for checking unpickling of packaging tags. The file is packaging's test suite and the literal is inert data.

  22. info warn → info by review payload-bytes-literal tests/test_version.py:1314:5

    concatenated bytes literal contains 37 `\xNN` escapes (42% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_25_0_PICKLE_V1_2_3 = (
        b"\x80\x02cpackaging.version\nVersion\nq\x00)\x81q\x01}q\x02"
        b"(X\x08\x00\x00\x00_versionq\x03cpackaging.version\n_Version\n"
        b"q\x04(K\x00K\x01K\x02K\x03\x87q\x05NNNNtq\x06\x81q\x07X\x04"
    likely benign LLM, confidence 0.92 Pickled packaging Version fixture for 1.2.3 in the test suite.
    Reasoning

    The bytes are a protocol-2 pickle of a packaging Version object with release tuple data, a compatibility fixture in the packaging version tests. The surrounding file is a test module and the snippet shows no loading or execution.

  23. info warn → info by review payload-bytes-literal tests/test_version.py:1323:5

    concatenated bytes literal contains 42 `\xNN` escapes (45% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_25_0_PICKLE_V2_0A1 = (
        b"\x80\x02cpackaging.version\nVersion\nq\x00)\x81q\x01}q\x02"
        b"(X\x08\x00\x00\x00_versionq\x03cpackaging.version\n_Version\n"
        b"q\x04(K\x00K\x02K\x00\x86q\x05NX\x01\x00\x00\x00aq\x06K\x01"
    likely benign LLM, confidence 0.92 Pickled packaging Version fixture for 2.0a1 in the test suite.
    Reasoning

    This is a pickled packaging Version object for 2.0a1, a serialization fixture for test coverage of pickle compatibility. The binary structure is consistent with pickle output and the file is a test module.

  24. info warn → info by review payload-bytes-literal tests/test_version.py:1366:5

    concatenated bytes literal contains 55 `\xNN` escapes (51% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_0_PICKLE_V1_2_3 = (
        b"\x80\x02cpackaging.version\nVersion\nq\x00)\x81q\x01N}q\x02"
        b"(X\x04\x00\x00\x00_devq\x03NX\x06\x00\x00\x00_epochq\x04K\x00"
        b"X\n\x00\x00\x00_key_cacheq\x05(K\x00K\x01K\x02K\x03\x87q\x06"
    likely benign LLM, confidence 0.93 A pickled packaging.version.Version byte-string test fixture in the packaging library's test suite.
    Reasoning

    The file is a test module for the packaging library, and the variable name and pickle protocol header (\x80\x02, cpackaging.version.Version) show a serialized packaging Version object used as a regression fixture for unpickling compatibility. Binary-looking escapes are the expected shape of a pickle test vector. No execution or network behavior appears in the snippet, and a test fixture of this kind is a normal pattern.

  25. info warn → info by review payload-bytes-literal tests/test_version.py:1390:5

    concatenated bytes literal contains 41 `\xNN` escapes (69% of content) — binary payload shape (ast pass, confidence 0.85)

    _PACKAGING_26_2_TUPLE_PICKLE_V1E2_3_4A5_POST6_DEV7_ZZZ = (
        b"\x80\x02cpackaging.version\nVersion\nq\x00)\x81q\x01(K\x01K\x02K\x03"
        b"K\x04\x87q\x02X\x01\x00\x00\x00aq\x03K\x05\x86q\x04X\x04\x00\x00"
        b"\x00postq\x05K\x06\x86q\x06X\x03\x00\x00\x00devq\x07K\x07\x86q\x08"
    likely benign LLM, confidence 0.93 A pickled packaging Version tuple test vector in the packaging test suite, encoded as a bytes literal.
    Reasoning

    The snippet is a pickle protocol 2 byte string for a packaging Version tuple (release segments, pre, post and dev fields), in the same test file and with the same naming convention as the other fixture. It is a compatibility test vector for version parsing and pickling. Nothing in the snippet runs code or reaches out to the network.

Reproduce This Scan

Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.

cargo install disclude --version 4.1.0
git clone https://github.com/pypa/packaging packaging && cd packaging
git checkout 26.3
disclude scan --severity info --diff 26.2 .