{"adoption": {"forks": 316, "observed_at": "2026-08-28T04:03:49.988858+00:00", "stars": 1165}, "canonical_url": "https://ross.abutalabs.com/products/pyresttest", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Python Rest Testing", "domain": ["testing", "apis", "developer-tools"], "enriched": true, "function": ["testing", "e2e-testing", "benchmarking", "http-client"], "health_score": 20, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["svanoort/pyresttest"], "name": "svanoort/pyresttest", "platform": ["python", "cli"], "pushed_at": "2021-06-10T17:22:57+00:00", "repo": "svanoort/pyresttest", "stars": 1165, "tags": ["rest-testing", "api-testing", "yaml-tests", "microbenchmarking", "smoke-tests", "pycurl", "command-line", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["test rest api endpoints from yaml files", "run api smoke tests on server deployments", "microbenchmark rest api performance", "validate  responses from http endpoints", "add api healthchecks to configuration management", "run automated rest tests in ci pipelines"], "what_it_is": "PyRestTest is a Python-based REST API testing and microbenchmarking tool where tests are defined declaratively in YAML or JSON files without writing code. It supports generate/extract/validate test scenarios, benchmarking with metrics, and returns exit codes suitable for CI and orchestration pipelines.", "when_to_avoid": ["you need actively maintained tooling - the project has seen limited releases since 2021", "you require complex test logic better suited to code-based frameworks like pytest", "you need Windows support, which is unsupported", "you need modern async HTTP testing or GraphQL support"], "when_to_choose": ["you want declarative YAML/JSON-based REST tests without writing Python code", "you need lightweight on-server smoke tests or healthchecks with minimal dependencies", "you want simple API microbenchmarking with parseable metrics", "you need exit codes and logs for integration with orchestration tools"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pyresttest", "repo": "svanoort/pyresttest", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "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:03:49.988858+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:49.988858+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:29:28.630487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dec85e91c9955dd83e9bfb1c12a854c8ae6e9d5a2d21fea2f949b4170d38b4c3", "fetched_at": "2026-08-28T04:03:49.988858+00:00", "kind": "readme", "missing": false, "url": "https://github.com/svanoort/pyresttest"}, {"content_hash": "d56ff0f843cf2377ebe5882b7664dfadcd62defe7253914d802ef4a084931369", "fetched_at": "2026-08-29T12:35:25.450405+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyresttest/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4507, "days_push": 1910, "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}}