{"adoption": {"forks": 349, "observed_at": "2026-08-28T04:08:39.519898+00:00", "stars": 4236}, "canonical_url": "https://ross.abutalabs.com/products/pywonderland", "card": {"archived": false, "artifact_type": "learning-resource", "description": "A tour in the wonderland of math with python.", "domain": ["mathematics", "education", "graphics", "tutorials"], "enriched": true, "function": ["data-visualization", "simulation", "graphics", "math"], "health_score": 59, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["neozhaoliang/pywonderland"], "name": "neozhaoliang/pywonderland", "platform": ["python", "cross-platform"], "pushed_at": "2026-02-03T01:27:26+00:00", "repo": "neozhaoliang/pywonderland", "stars": 4236, "tags": ["fractals", "tilings", "coxeter-groups", "cellular-automata", "maze-generation", "mathematical-visualization", "pov-ray", "animations", "algorithms"], "topics": ["fractals", "penrose-tilings", "polytopes", "hopf-fibration", "reaction-diffusion", "coxeter-groups", "hopcroft", "domino-shuffling-algorithm", "coupling-from-the-past", "uniform-spanning-tree", "todd-coxeter", "uniform-tilings", "hyperbolic-tilings", "hyperbolic-honeycombs", "three-body", "visual-complex-analysis"], "urls": [], "use_cases": ["visualize hyperbolic and uniform tilings in python", "generate gif animations of mazes and cellular automata", "render uniform polytopes with the Todd-Coxeter algorithm", "sample random aztec diamond tilings with domino shuffling", "learn coupling from the past for Markov chain sampling", "draw fractals and reaction-diffusion patterns", "explore Mobius transformations of the hyperbolic disk"], "what_it_is": "A collection of Python scripts that render beautiful images, GIFs, and animations illustrating mathematical objects and algorithms such as Coxeter groups, tilings, fractals, and random sampling algorithms. It is an educational showcase of non-trivial math with simple, self-contained code.", "when_to_avoid": ["you need a production library with a stable API for math computation", "you want a general-purpose plotting or visualization framework", "you need guaranteed correctness or support for the algorithms in production"], "when_to_choose": ["you want ready-made, visually appealing Python examples of advanced math topics", "you are teaching or learning group theory, tilings, or stochastic algorithms", "you need simple dependency-free code for generating math animations"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pywonderland", "repo": "neozhaoliang/pywonderland", "role": "main", "score": 52}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "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:08:39.519898+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:39.519898+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:22:18.393212+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d435f373de35985177bdedd05156636384e98c2e4d2f910e41f9d3c84cd34711", "fetched_at": "2026-08-28T04:08:39.519898+00:00", "kind": "readme", "missing": false, "url": "https://github.com/neozhaoliang/pywonderland"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 65, "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": 3585, "days_push": 212, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 52, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}