{"adoption": {"forks": 111, "observed_at": "2026-08-28T04:03:30.021403+00:00", "stars": 1079}, "canonical_url": "https://ross.abutalabs.com/products/replacing-bash-scripting-with-python", "card": {"archived": false, "artifact_type": "learning-resource", "description": "Guide on using using python for administrative scripting", "domain": ["developer-tools", "tutorials"], "enriched": true, "function": ["developer-tools", "cli", "workflow-automation"], "health_score": 20, "homepage": null, "language": null, "license": null, "license_family": "other", "maturity": "active", "member_repos": ["ninjaaron/replacing-bash-scripting-with-python"], "name": "ninjaaron/replacing-bash-scripting-with-python", "platform": ["python", "cli"], "pushed_at": "2024-02-12T07:23:19+00:00", "repo": "ninjaaron/replacing-bash-scripting-with-python", "stars": 1079, "tags": ["bash-scripting", "python-scripting", "sysadmin", "guide", "shell-scripting", "command-line", "automation", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["convert bash scripts to python", "learn python for sysadmin scripting", "write safer administrative scripts", "understand pitfalls of bash scripting", "make python programs shell-friendly", "automate linux administration tasks with python"], "what_it_is": "A tutorial-style guide explaining how to replace Bash shell scripts with Python for administrative and systems scripting tasks. It covers when the shell excels, its pitfalls, and how to write Python programs that integrate well with Unix process orchestration.", "when_to_avoid": ["you need a runnable tool or library rather than a written guide", "you only write short shell one-liners gluing external programs", "you need documentation for a specific Python scripting framework"], "when_to_choose": ["you maintain growing bash scripts that are getting unwieldy", "you want to learn Python for Unix administrative scripting", "you need safer alternatives to bash's eval-heavy behavior", "you want Python scripts that integrate well with shell pipelines"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/replacing-bash-scripting-with-python", "repo": "ninjaaron/replacing-bash-scripting-with-python", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "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:30.021403+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:30.021403+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:53:05.870979+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2fbcc8d708fea52773f792d29457504a2de8504e605831f6df2e6fc2535b5690", "fetched_at": "2026-08-28T04:03:30.021403+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ninjaaron/replacing-bash-scripting-with-python"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3089, "days_push": 933, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}