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 10/31/2026
Approvedpytest@9.2.0View on registry ↗latest: 9.2.0

Legitimate pytest 9.2.0. All 'obfuscation' findings are false positives from normal Unicode/escape handling in compat.py (ascii_escaped), junitxml.py (illegal_xml_re), color/terminal tests, and similar. No malicious sinks, exfil, or backdoors present.

Protect your projects free

AI breakdown

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

pytest is a Python testing framework for writing and executing tests. The manifest lists no scripts or dependencies.

Data access

  • None observed

Network

  • No network access observed

This appears to be the standard pytest package. Multiple static findings for obfuscated files and hardcoded IPs are present but not corroborated by the manifest or file sample.

Dependency & execution chain

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

10 packages9 direct
pytest@9.2.026 findings
colorama@0.4.6
iniconfig@2.3.12 findings
packaging@26.39 findings
pluggy@1.7.0
pygments@2.21.031 findings
tomli@2.5.0
asynctest@0.13.0

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.2.0/testing/python/metafunc.py

Multiple obfuscation patterns in pytest-9.2.0/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.2.0/src/_pytest/compat.py

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

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

Multiple obfuscation patterns in src/_pytest/junitxml.py

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

Multiple obfuscation patterns in pytest-9.2.0/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.2.0/testing/code/test_excinfo.py

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

mediumObfuscated source fileATK-023testing/conftest.py

Multiple obfuscation patterns in testing/conftest.py

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

Multiple obfuscation patterns in pytest-9.2.0/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.2.0/testing/io/test_terminalwriter.py

Multiple obfuscation patterns in pytest-9.2.0/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.2.0/testing/python/collect.py

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

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

Multiple obfuscation patterns in testing/python/metafunc.py

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

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

mediumObfuscated source fileATK-023testing/test_assertion.py

Multiple obfuscation patterns in testing/test_assertion.py

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

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

mediumObfuscated source fileATK-023testing/test_assertrewrite.py

Multiple obfuscation patterns in testing/test_assertrewrite.py

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

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

mediumObfuscated source fileATK-023testing/test_capture.py

Multiple obfuscation patterns in testing/test_capture.py

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

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

mediumObfuscated source fileATK-023testing/test_junitxml.py

Multiple obfuscation patterns in testing/test_junitxml.py

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

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

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

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

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

File pytest-9.2.0/testing/python/approx.py contains a hardcoded public IP (0:00:01) 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.2.0/testing/test_terminal.py

File pytest-9.2.0/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.2.0/.git-blame-ignore-revs.gitattributespytest-9.2.0/.gitattributes.github/FUNDING.ymlpytest-9.2.0/.github/FUNDING.yml.github/ISSUE_TEMPLATE/1_bug_report.mdpytest-9.2.0/.github/ISSUE_TEMPLATE/1_bug_report.md.github/ISSUE_TEMPLATE/2_feature_request.mdpytest-9.2.0/.github/ISSUE_TEMPLATE/2_feature_request.md.github/ISSUE_TEMPLATE/3_security_vulnerability.mdpytest-9.2.0/.github/ISSUE_TEMPLATE/3_security_vulnerability.md.github/ISSUE_TEMPLATE/config.ymlpytest-9.2.0/.github/ISSUE_TEMPLATE/config.yml.github/PULL_REQUEST_TEMPLATE.mdpytest-9.2.0/.github/PULL_REQUEST_TEMPLATE.md.github/actions/setup-tox/action.ymlpytest-9.2.0/.github/actions/setup-tox/action.yml.github/chronographer.ymlpytest-9.2.0/.github/chronographer.yml.github/config.ymlpytest-9.2.0/.github/config.yml.github/dependabot.ymlpytest-9.2.0/.github/dependabot.yml.github/labels.tomlpytest-9.2.0/.github/labels.toml.github/patchback.ymlpytest-9.2.0/.github/patchback.yml.github/workflows/deploy.ymlpytest-9.2.0/.github/workflows/deploy.yml.github/workflows/doc-check-links.ymlpytest-9.2.0/.github/workflows/doc-check-links.yml.github/workflows/prepare-release-pr.ymlpytest-9.2.0/.github/workflows/prepare-release-pr.yml.github/workflows/stale.ymlpytest-9.2.0/.github/workflows/stale.yml.github/workflows/test.ymlpytest-9.2.0/.github/workflows/test.yml.github/workflows/update-plugin-list.ymlpytest-9.2.0/.github/workflows/update-plugin-list.yml

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