{"adoption": {"forks": 86, "observed_at": "2026-08-28T04:05:52.688581+00:00", "stars": 1908}, "canonical_url": "https://ross.abutalabs.com/products/paris", "card": {"archived": false, "artifact_type": "library", "description": "Define and apply styles to Android views programmatically", "domain": ["mobile-development", "android-tools", "web-design"], "enriched": true, "function": ["ui-components", "developer-tools"], "health_score": 65, "homepage": null, "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["airbnb/paris"], "name": "airbnb/paris", "platform": ["jvm"], "pushed_at": "2025-11-03T21:19:37+00:00", "repo": "airbnb/paris", "stars": 1908, "tags": ["android-views", "styling", "design-systems", "kotlin-annotations", "code-generation", "android"], "topics": ["android", "android-ui", "styles", "design-systems", "kotlin"], "urls": [], "use_cases": ["apply styles to android views programmatically", "define android styles in kotlin instead of xml", "combine multiple styles on a view at runtime", "support custom styleable attributes on custom views", "build a design system for android ui"], "what_it_is": "Paris is an Android library by Airbnb for defining and applying styles to views programmatically in Kotlin or Java, including support for custom attributes via annotations and code generation. It allows combining multiple styles, creating styles without XML, and declaring style support for custom views.", "when_to_avoid": ["your styling is fully static and XML styles suffice", "you're not developing for Android"], "when_to_choose": ["you need to restyle views dynamically at runtime", "you want to define styles in code rather than XML resources", "you're building a reusable component library with styled custom views"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/paris", "repo": "airbnb/paris", "role": "main", "score": 62}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "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:05:52.688581+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:52.688581+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:11:12.004075+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e8418279962f1ab8e4636aaa5349de2fb7c638385b2f1893820a53f083bc9d7d", "fetched_at": "2026-08-28T04:05:52.688581+00:00", "kind": "readme", "missing": false, "url": "https://github.com/airbnb/paris"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 50, "longevity": 100, "rhythm": 55}, "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": 3180, "days_push": 303, "days_rel": 303, "gap_med": 15.0, "n_releases_24m": 3}, "score": 62, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}