PyPI / joblib / 1.6.0

joblib 1.6.0

Source
https://github.com/joblib/joblib
Artifact scanned
joblib-1.6.0-py3-none-any.whl (wheel · 298.9 KB · SHA-256 3dbbf9f6e4b5…)
Compared with
joblib-1.5.3-py3-none-any.whl (1 signals introduced since)
Files
73 scanned, 68 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 8 info
Scan time
8.2 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 8 of 8 warn and critical signals; 8 demoted to info.
Disclude version
4.3.0
Scanned (UTC)
2026-10-23 07:57

Signals

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

  1. info warn → info by review dynamic-execution joblib/test/test_func_inspect.py:366:5 new in this release

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

        ns = {}
        exec(
            compile(
                "def f(x):\n    return x\n",
    dismissed LLM, confidence 0.90 A test exec()s a fixed literal function definition to exercise source inspection.
    Reasoning

    The exec'd source is a literal test string defining a trivial function, used to test function inspection on dynamically created code. It is a test fixture with no external input.

  2. info critical → info by review dynamic-import joblib/_memmapping_reducer.py:654:29

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

                # easy vendoring.
                delete_folder = __import__(
                    pool_module_name, fromlist=["delete_folder"]
                ).delete_folder
    likely benign LLM, confidence 0.85 joblib dynamically imports its loky pool module to reach delete_folder, a vendoring compatibility shim.
    Reasoning

    The non-literal __import__ selects a module name (pool_module_name) to fetch delete_folder, which matches joblib's known vendoring fallback between its externals loky package and the standard loky module. The argument is internal, not attacker-controlled input, and nothing in the snippet suggests remote or hidden payload loading.

  3. info warn → info by review decoder-decompress-payload joblib/compressor.py:277:34

    file imports decoder module(s) zlib, bz2, lzma and calls `.decompress()` — embedded payload decompressed at runtime (ast pass, confidence 0.75)

                self._mode = _MODE_READ
                self._decompressor = zlib.decompressobj(self.wbits)
                self._buffer = b""
                self._buffer_offset = 0
    likely benign LLM, confidence 0.90 A streaming decompressor object used by joblib's compressed file wrapper to read cache files.
    Reasoning

    zlib.decompressobj inside a file-like compressed-stream wrapper is the core job of joblib's compressor module. It decompresses the user's own cache files, not an embedded payload.

  4. info warn → info by review decoder-decompress-payload joblib/numpy_pickle_compat.py:58:12

    file imports decoder module(s) pickle, zlib and calls `.decompress()` — embedded payload decompressed at runtime (ast pass, confidence 0.75)

        # buffer to allocate.
        data = zlib.decompress(file_handle.read(), 15, length)
        assert len(data) == length, (
            "Incorrect data length while decompressing %s."
    likely benign LLM, confidence 0.90 Decompresses legacy zlib-compressed joblib data during backward-compatible unpickling.
    Reasoning

    This reads a legacy joblib pickle format that stores zlib-compressed data with a recorded length, then checks the decompressed length. That is a format reader for the library's own files, with an integrity check.

  5. info warn → info by review decoder-import-with-exec joblib/test/test_memory.py:166:9

    file imports decoder module(s) pickle and calls `exec`/`eval`/`compile` — multi-stage payload shape (ast pass, confidence 0.80)

            my_locals = {}
            exec(
                compile(
                    textwrap.dedent(ipython_cell_source),
    dismissed LLM, confidence 0.88 Test helper that executes IPython cell source to verify cache behaviour for interactively defined functions.
    Reasoning

    The test compiles and runs IPython cell source with a fake filename to check that joblib's memory cache handles interactive code. It is a test of a legitimate feature, and the pickle import is ordinary test plumbing.

  6. info warn → info by review dynamic-execution joblib/test/test_memory.py:166:9

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

            my_locals = {}
            exec(
                compile(
                    textwrap.dedent(ipython_cell_source),
    dismissed LLM, confidence 0.88 Duplicate of the test's exec of IPython cell source used to exercise memory caching.
    Reasoning

    This is the same exec call in the IPython cell test, flagged a second time by the dynamic-execution signal. It is test code running fixed cell source.

  7. info warn → info by review dynamic-execution joblib/test/test_memory.py:167:13

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

            exec(
                compile(
                    textwrap.dedent(ipython_cell_source),
                    filename=ipython_cell_id,
    dismissed LLM, confidence 0.88 Compiles the test's IPython cell source to exercise joblib memory caching behaviour.
    Reasoning

    The compile call builds code from the test's ipython_cell_source with a chosen filename, part of the same test of interactive-function caching. There is no sign of obfuscation or network-fetched code.

  8. info warn → info by review decoder-decompress-payload joblib/test/test_numpy_pickle.py:739:15

    file imports decoder module(s) bz2, gzip, pickle, zlib and calls `.decompress()` — embedded payload decompressed at runtime (ast pass, confidence 0.75)

        with open(source_filename, "rb") as fo:
            buf = zlib.decompress(fo.read())
    
        with open(target_filename, "wb") as fo:
    likely benign LLM, confidence 0.90 Test helper that zlib-decompresses a local fixture file to produce a legacy-format test input.
    Reasoning

    The test reads an existing file, decompresses it with zlib, and writes the result out. It is a helper for converting or preparing legacy pickle fixtures, with no runtime payload or hidden behaviour.

Reproduce This Scan

Run disclude locally to verify. These commands scan the published file; the "new in this release" marks come from comparing it with the previous release's file, which they don't repeat. 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.3.0
curl -fsSL -o joblib-1.6.0-py3-none-any.whl https://files.pythonhosted.org/packages/18/53/84099323c2ec4be98d935f63c033ac4151ee83836ca1050ede3b3aadf155/joblib-1.6.0-py3-none-any.whl
printf '%s  %s\n' 3dbbf9f6e4b592a2357b854608e980fe6390d131d7a82f011a377ef2ebef7aba joblib-1.6.0-py3-none-any.whl | shasum -a 256 -c -
unzip -q joblib-1.6.0-py3-none-any.whl -d pkg
disclude scan --untrusted --severity info pkg