{"adoption": {"forks": 189, "observed_at": "2026-08-28T04:03:39.308991+00:00", "stars": 1119}, "canonical_url": "https://ross.abutalabs.com/products/pyforest", "card": {"archived": false, "artifact_type": "library", "description": "pyforest - feel the bliss of automated imports", "domain": ["data-science", "developer-tools"], "enriched": true, "function": ["developer-tools", "data-science"], "health_score": 20, "homepage": "https://8080labs.com", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["8080labs/pyforest"], "name": "8080labs/pyforest", "platform": ["python", "cross-platform"], "pushed_at": "2024-07-16T16:30:54+00:00", "repo": "8080labs/pyforest", "stars": 1119, "tags": ["auto-imports", "jupyter", "lazy-import", "notebook-productivity"], "topics": [], "urls": [], "use_cases": ["stop writing the same imports in every jupyter notebook", "automatically import pandas numpy matplotlib in python notebooks", "make jupyter notebooks reproducible without manual import statements", "speed up exploratory data analysis workflow in notebooks", "avoid looking up exact import statements like matplotlib.pyplot as plt"], "what_it_is": "pyforest is a Python library that automatically imports popular data science libraries like pandas, numpy, and sklearn on demand in Jupyter notebooks. When you use a library without importing it, pyforest lazily imports it and writes the import statement into the first notebook cell, keeping notebooks reproducible.", "when_to_avoid": ["you work in scripts or production code where explicit imports are best practice", "you need libraries not covered by pyforest's predefined import list", "you use IDEs or tools that auto-manage imports already"], "when_to_choose": ["you work in Jupyter notebooks daily and start many new notebooks", "you want lazy imports of common data science libraries without boilerplate", "you want import statements saved into the notebook for shareability"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pyforest", "repo": "8080labs/pyforest", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/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:39.308991+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:39.308991+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:41:08.376364+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "aa5eb4afe397c2a626598b35708621ee9e17a5f3740e3464afb0462d18e91007", "fetched_at": "2026-08-28T04:03:39.308991+00:00", "kind": "readme", "missing": false, "url": "https://github.com/8080labs/pyforest"}, {"content_hash": "f9bfc54378465afa7cbc0545aa42e8046e71b4ee26710e48aaaa3c454f3e7e41", "fetched_at": "2026-08-29T12:45:40.765379+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pyforest/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2578, "days_push": 778, "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}}