{"adoption": {"forks": 212, "observed_at": "2026-08-28T04:06:21.977358+00:00", "stars": 2173}, "canonical_url": "https://ross.abutalabs.com/products/pygubu", "card": {"archived": false, "artifact_type": "application", "description": "A simple GUI builder for the python tkinter module", "domain": ["desktop-applications", "web-development", "developer-tools"], "enriched": true, "function": ["gui", "ui-components", "templating"], "health_score": 78, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["alejandroautalan/pygubu", "alejandroautalan/pygubu-designer"], "name": "pygubu", "platform": ["python", "cross-platform"], "pushed_at": "2026-08-05T07:15:38+00:00", "repo": "alejandroautalan/pygubu", "stars": 2173, "tags": ["tkinter", "gui-builder", "rad-tool", "xml-ui", "glade-inspired", "ttk-themes", "widget-library", "desktop"], "topics": ["python", "tkinter", "gui"], "urls": [], "use_cases": ["build a tkinter GUI visually with drag and drop", "design desktop app interfaces for python", "load UI layouts from XML files at runtime", "create modern-looking tkinter apps with themes", "use extra widgets like calendars and treeviews in tkinter", "rapid application development for python desktop tools", "separate UI definition from application code"], "what_it_is": "Pygubu is a RAD tool for building user interfaces for Python's tkinter module, with a core library that loads XML-defined UIs and a companion graphical designer (pygubu-designer). It also ships extra widgets, ttkbootstrap-inspired themes, and plugins for external tkinter widget sets.", "when_to_avoid": ["you are building web, mobile, or GPU-accelerated interfaces", "you prefer Qt, wxPython, or other GUI toolkits", "you need a fully code-first UI approach without XML files"], "when_to_choose": ["you are building a Python desktop app with tkinter/ttk and want a visual designer", "you want UI definitions stored as XML and loaded dynamically", "you need extra widgets or modern themes on top of standard tkinter"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/alejandroautalan/pygubu", "repo": "alejandroautalan/pygubu", "role": "main", "score": 75}, {"path": "/repos/alejandroautalan/pygubu-designer", "repo": "alejandroautalan/pygubu-designer", "role": "plugin", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/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:06:21.977358+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:21.977358+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:49:01.363743+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4d3c6f4fe8728cee8a644af071244cb9fef0b0aa71bebd92596d91e8913cc26", "fetched_at": "2026-08-28T04:06:21.977358+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alejandroautalan/pygubu"}, {"content_hash": "19a9be111d2efa2429f91cb9a78566a875e7587293130e8ced7d0acd96cd0751", "fetched_at": "2026-08-29T10:29:08.513645+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu/json"}, {"content_hash": "d9c10410b805701e14243c0617f687925f93640eda18f69d7ea6d4f55df5ed00", "fetched_at": "2026-08-29T10:29:08.522593+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pygubu-designer/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4950, "days_push": 28, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}