{"adoption": {"forks": 246, "observed_at": "2026-08-28T04:06:25.631000+00:00", "stars": 2201}, "canonical_url": "https://ross.abutalabs.com/products/pyt", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A Static Analysis Tool for Detecting Security Vulnerabilities in Python Web Applications", "domain": ["security", "web-development", "developer-tools"], "enriched": true, "function": ["security", "vulnerability-scanning", "parser", "static-site-generator"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "abandoned", "member_repos": ["python-security/pyt"], "name": "python-security/pyt", "platform": ["python", "cli", "windows"], "pushed_at": "2020-12-25T03:47:37+00:00", "repo": "python-security/pyt", "stars": 2201, "tags": ["taint-analysis", "static-analysis", "control-flow-graph", "dataflow-analysis", "flask", "sast", "python", "linux", "macos"], "topics": ["pyt", "control-flow-graph", "static-analysis", "python", "python3", "security", "static-code-analysis", "program-analysis", "fixed-point", "fixed-point-analysis", "dataflow", "dataflow-analysis", "taint", "taint-analysis", "abstract-syntax-tree", "abstract-syntax", "flask"], "urls": [], "use_cases": ["find sql injection vulnerabilities in python flask app", "static taint analysis for python web application", "detect xss vulnerabilities in python code", "scan python codebase for security vulnerabilities without running it", "learn how taint analysis and control flow graphs work"], "what_it_is": "PyT (Python Taint) is a static analysis tool that detects security vulnerabilities like injection flaws in Python web applications using taint analysis, control flow graphs, and fixed-point dataflow analysis. It is no longer maintained; the README recommends Facebook's Pyre/Pysa instead.", "when_to_avoid": ["you need an actively maintained tool - use Pysa/Pyre or Bandit instead", "your codebase uses modern Python versions beyond 3.6", "you need low false positives in production CI"], "when_to_choose": ["you need a dependency-free static taint analysis tool for a Python 3.6-era Flask codebase", "you want to study the internals of a taint-analysis SAST implementation"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pyt", "repo": "python-security/pyt", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:25.631000+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:47:04.028301+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f0b09310b54aba9fe20bb922dd1c4269608c8a35fae9a4cec27e1a836d3af34", "fetched_at": "2026-08-28T04:06:25.631000+00:00", "kind": "readme", "missing": false, "url": "https://github.com/python-security/pyt"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3598, "days_push": 2077, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}