PyPI package intelligence

pytest — deep security report

ShadowCanopy's full breakdown of pytest on PyPI: verdict, AI analysis, dependency chain, network behavior, prebuilds, and obfuscated code.

Safe to use
Deep-scanned by ShadowCanopy — no threats found in its code, dependencies, or network behavior.
Scanned 8/8/2026
Approvedpytest@9.1.1View on registry ↗latest: 9.1.1

pytest 9.1.1 is the legitimate pytest package. All 'obfuscated source' findings are false positives from normal Unicode/escape handling in compat.py (ascii_escaped), junitxml.py (illegal_xml_re), color/terminal tests, and assertion tests. No malicious sinks, exfil, or C2 present.

Protect your projects free

AI breakdown

Plain-English summary of what this package does and how it behaves.

pytest is a Python package for simple and powerful testing with Python.

Capabilities

  • Provides Python testing framework

Data access

  • None observed

Network

  • Hardcoded public IP in network code

Widely used testing tool with no scripts or dependencies in manifest; static findings report multiple obfuscated source files and hardcoded public IPs.

Dependency & execution chain

Every package this one pulls in, colored by verdict. Expand to walk the tree.

9 packages8 direct
pytest@9.1.126 findings
colorama@0.4.6
iniconfig@2.3.0
packaging@26.39 findings
pluggy@1.6.0
pygments@2.20.029 findings
tomli@2.4.1

Obfuscated / hidden code

Encoded payloads decoded statically (without executing them) so you can see what they resolve to.

Obfuscated source filetesting/python/metafunc.py

Multiple obfuscation patterns in testing/python/metafunc.py

Obfuscated source filepytest-9.1.1/testing/python/metafunc.py

Multiple obfuscation patterns in pytest-9.1.1/testing/python/metafunc.py

Security findings (26)

Static analysis rule matches, with the exact code that triggered them.

mediumObfuscated source fileATK-023src/_pytest/compat.py

Multiple obfuscation patterns in src/_pytest/compat.py

mediumObfuscated source fileATK-023pytest-9.1.1/src/_pytest/compat.py

Multiple obfuscation patterns in pytest-9.1.1/src/_pytest/compat.py

mediumObfuscated source fileATK-023src/_pytest/junitxml.py

Multiple obfuscation patterns in src/_pytest/junitxml.py

mediumObfuscated source fileATK-023pytest-9.1.1/src/_pytest/junitxml.py

Multiple obfuscation patterns in pytest-9.1.1/src/_pytest/junitxml.py

mediumObfuscated source fileATK-023testing/code/test_excinfo.py

Multiple obfuscation patterns in testing/code/test_excinfo.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/code/test_excinfo.py

Multiple obfuscation patterns in pytest-9.1.1/testing/code/test_excinfo.py

mediumObfuscated source fileATK-023testing/conftest.py

Multiple obfuscation patterns in testing/conftest.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/conftest.py

Multiple obfuscation patterns in pytest-9.1.1/testing/conftest.py

mediumObfuscated source fileATK-023testing/io/test_terminalwriter.py

Multiple obfuscation patterns in testing/io/test_terminalwriter.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/io/test_terminalwriter.py

Multiple obfuscation patterns in pytest-9.1.1/testing/io/test_terminalwriter.py

mediumObfuscated source fileATK-023testing/python/collect.py

Multiple obfuscation patterns in testing/python/collect.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/python/collect.py

Multiple obfuscation patterns in pytest-9.1.1/testing/python/collect.py

mediumObfuscated source fileATK-023testing/python/metafunc.py

Multiple obfuscation patterns in testing/python/metafunc.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/python/metafunc.py

Multiple obfuscation patterns in pytest-9.1.1/testing/python/metafunc.py

mediumObfuscated source fileATK-023testing/test_assertion.py

Multiple obfuscation patterns in testing/test_assertion.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/test_assertion.py

Multiple obfuscation patterns in pytest-9.1.1/testing/test_assertion.py

mediumObfuscated source fileATK-023testing/test_assertrewrite.py

Multiple obfuscation patterns in testing/test_assertrewrite.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/test_assertrewrite.py

Multiple obfuscation patterns in pytest-9.1.1/testing/test_assertrewrite.py

mediumObfuscated source fileATK-023testing/test_capture.py

Multiple obfuscation patterns in testing/test_capture.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/test_capture.py

Multiple obfuscation patterns in pytest-9.1.1/testing/test_capture.py

mediumObfuscated source fileATK-023testing/test_junitxml.py

Multiple obfuscation patterns in testing/test_junitxml.py

mediumObfuscated source fileATK-023pytest-9.1.1/testing/test_junitxml.py

Multiple obfuscation patterns in pytest-9.1.1/testing/test_junitxml.py

highHardcoded public IP in network codeATK-028testing/python/approx.py

File testing/python/approx.py contains a hardcoded public IP (12:00:00) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pytest-9.1.1/testing/python/approx.py

File pytest-9.1.1/testing/python/approx.py contains a hardcoded public IP (12:00:00) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028testing/test_terminal.py

File testing/test_terminal.py contains a hardcoded public IP (0:01:00) used in network code — review for hidden exfiltration or C2 endpoints.

highHardcoded public IP in network codeATK-028pytest-9.1.1/testing/test_terminal.py

File pytest-9.1.1/testing/test_terminal.py contains a hardcoded public IP (0:01:00) used in network code — review for hidden exfiltration or C2 endpoints.

Package metadata

LicenseUnknown

pytest: simple powerful testing with Python

Files in package (500)

.git-blame-ignore-revspytest-9.1.1/.git-blame-ignore-revs.gitattributespytest-9.1.1/.gitattributes.github/FUNDING.ymlpytest-9.1.1/.github/FUNDING.yml.github/ISSUE_TEMPLATE/1_bug_report.mdpytest-9.1.1/.github/ISSUE_TEMPLATE/1_bug_report.md.github/ISSUE_TEMPLATE/2_feature_request.mdpytest-9.1.1/.github/ISSUE_TEMPLATE/2_feature_request.md.github/ISSUE_TEMPLATE/3_security_vulnerability.mdpytest-9.1.1/.github/ISSUE_TEMPLATE/3_security_vulnerability.md.github/ISSUE_TEMPLATE/config.ymlpytest-9.1.1/.github/ISSUE_TEMPLATE/config.yml.github/PULL_REQUEST_TEMPLATE.mdpytest-9.1.1/.github/PULL_REQUEST_TEMPLATE.md.github/chronographer.ymlpytest-9.1.1/.github/chronographer.yml.github/config.ymlpytest-9.1.1/.github/config.yml.github/dependabot.ymlpytest-9.1.1/.github/dependabot.yml.github/labels.tomlpytest-9.1.1/.github/labels.toml.github/patchback.ymlpytest-9.1.1/.github/patchback.yml.github/workflows/deploy.ymlpytest-9.1.1/.github/workflows/deploy.yml.github/workflows/doc-check-links.ymlpytest-9.1.1/.github/workflows/doc-check-links.yml.github/workflows/prepare-release-pr.ymlpytest-9.1.1/.github/workflows/prepare-release-pr.yml.github/workflows/stale.ymlpytest-9.1.1/.github/workflows/stale.yml.github/workflows/test.ymlpytest-9.1.1/.github/workflows/test.yml.github/workflows/update-plugin-list.ymlpytest-9.1.1/.github/workflows/update-plugin-list.yml.gitignorepytest-9.1.1/.gitignore

How ShadowCanopy checks PyPI packages

ShadowCanopy blocks every dependency by default and only lets through what it can verify — against live malicious-package advisories, an AI behavior scan, and a byte-for-byte hash check. It protects installs across npm, PyPI, crates.io, pkg.go.dev, RubyGems, Maven Central, NuGet, Packagist, Hex, pub.dev, Swift Package Manager.

Protect your projects freeSee what's being blocked

This report reflects ShadowCanopy's threat intelligence at page load and is informational, not a warranty. Canonical URL: https://shadowcanopy.dev/packages/pypi/pytest