{"id":17993558,"url":"https://github.com/adamlui/python-utils","last_synced_at":"2026-05-10T06:11:54.865Z","repository":{"id":169331224,"uuid":"645250527","full_name":"adamlui/python-utils","owner":"adamlui","description":"A collection of useful Python utilities","archived":false,"fork":false,"pushed_at":"2026-04-01T10:27:15.000Z","size":2530,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-01T16:39:51.411Z","etag":null,"topics":["api","cli","json","locales","modules","python","python-utils","root","scripts","translate","utils"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adamlui.png","metadata":{"files":{"readme":"docs/README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"adamlui","ko_fi":"adamlui"}},"created_at":"2023-05-25T08:42:11.000Z","updated_at":"2026-04-01T10:27:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"b17ce93d-a893-4c9f-a9fd-88db4ecc7d69","html_url":"https://github.com/adamlui/python-utils","commit_stats":null,"previous_names":["adamlui/python-utils"],"tags_count":80,"template":false,"template_full_name":null,"purl":"pkg:github/adamlui/python-utils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamlui%2Fpython-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamlui%2Fpython-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamlui%2Fpython-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamlui%2Fpython-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamlui","download_url":"https://codeload.github.com/adamlui/python-utils/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamlui%2Fpython-utils/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31390695,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T04:26:24.776Z","status":"ssl_error","status_checked_at":"2026-04-04T04:23:34.147Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","cli","json","locales","modules","python","python-utils","root","scripts","translate","utils"],"created_at":"2024-10-29T20:11:52.802Z","updated_at":"2026-05-10T06:11:54.846Z","avatar_url":"https://github.com/adamlui.png","language":"Python","funding_links":["https://github.com/sponsors/adamlui","https://ko-fi.com/adamlui"],"categories":[],"sub_categories":[],"readme":"\u003ca id=\"top\"\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n# [\u003cimg height=25 width=\"auto\" src=\"https://images.weserv.nl/?url=https://avatars.githubusercontent.com/u/10906554?h=100\u0026w=100\u0026mask=circle\u0026maxage=7d\"\u003e](https://github.com/adamlui) adamlui / python-utils\n\n\u003ca href=\"https://pypacktrends.com/?packages=ai-personas\u0026packages=computer-languages\u0026packages=data-languages\u0026packages=find-project-root\u0026packages=get-min-py\u0026packages=is-legacy-terminal\u0026packages=is-unicode-supported\u0026packages=latin-locales\u0026packages=markup-languages\u0026packages=non-latin-locales\u0026packages=programming-languages\u0026packages=project-markers\u0026packages=prose-languages\u0026packages=remove-json-keys\u0026packages=sys-lang\u0026packages=translate-messages\u0026time_range=allTimeCumulative\u0026scheme=dark\"\u003e\n    \u003cimg height=31 src=\"https://img.shields.io/badge/Downloads-50,000+-af68ff.svg?logo=weightsandbiases\u0026logoColor=white\u0026labelColor=464646\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n\u003ca href=\"./LICENSE.md\"\u003e\n    \u003cimg height=31 src=\"https://img.shields.io/badge/License-MIT-f99b27.svg?logo=internetarchive\u0026logoColor=white\u0026labelColor=464646\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n\u003ca href=\"https://www.codefactor.io/repository/github/adamlui/python-utils\"\u003e\n    \u003cimg height=31 src=\"https://img.shields.io/codefactor/grade/github/adamlui/python-utils?label=Code+Quality\u0026logo=codefactor\u0026logoColor=white\u0026labelColor=464646\u0026color=b5fc7b\u0026style=for-the-badge\"\u003e\u003c/a\u003e\n\u003ca href=\"https://sonarcloud.io/component_measures?metric=vulnerabilities\u0026id=adamlui_python-utils\"\u003e\n    \u003cimg height=31 src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fsonarcloud.io%2Fapi%2Fmeasures%2Fcomponent%3Fcomponent%3Dadamlui_python-utils%26metricKeys%3Dvulnerabilities\u0026query=%24.component.measures.0.value\u0026style=for-the-badge\u0026logo=sonar\u0026logoColor=white\u0026labelColor=464646\u0026label=Vulnerabilities\u0026color=ffef00\"\u003e\u003c/a\u003e\n\n\u003chr\u003e\n\n📑 [Data processing](#-data-processing-) •\n📊 [Datasets](#-datasets-) •\n🖥️ [Environment](#%EF%B8%8F-environment-) •\n🌍 [Internationalization / Localization](#-internationalization--localization-) •\n📦 [Package](#-package-)\n\n\u003ca href=\"#\"\u003e\u003cimg style=\"height:10px ; width:100%\" src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@b8b2932/assets/images/separators/aqua-gradient.png\"\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n\n## 📑 Data processing \u003c!-- CATEGORY --\u003e\n\n\n\u003c!-- REMOVE-JSON-KEYS --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/remove-json-keys/#readme\"\u003eremove-json-keys\u003c/a\u003e\n\n\u003e 🧹 Simply remove JSON keys via CLI command.\n\u003cbr\u003e[Install](https://github.com/adamlui/python-utils/tree/main/remove-json-keys/#installation) /\n[Readme](https://github.com/adamlui/python-utils/tree/main/remove-json-keys/#readme) /\n[CLI usage](https://github.com/adamlui/python-utils/tree/main/remove-json-keys/#usage) /\n[Discuss](https://github.com/adamlui/python-utils/discussions)\n\n\u003ca href=\"#\"\u003e\u003cimg style=\"height:10px ; width:100%\" src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@b8b2932/assets/images/separators/aqua-gradient.png\"\u003e\u003c/a\u003e\n\n\n## 📊 Datasets \u003c!-- CATEGORY --\u003e\n\n\n\u003c!-- AI-PERSONAS --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/ai-personas/#readme\"\u003eai-personas\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e🤖 1,200+ AI personas for LLMs and agents.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/ai-personas/#readme\"\u003e\n            \u003cimg width=750 src=\"https://cdn.jsdelivr.net/gh/KudoAI/ai-personas@latest/assets/images/screenshots/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/ai-personas/#-installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/ai-personas/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/ai-personas/#-usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- COMPUTER-LANGUAGES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/computer-languages/#readme\"\u003ecomputer-languages\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e💻 File extensions for computer languages.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/computer-languages/#readme\"\u003e\n            \u003cimg width=475 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/computer-languages/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/computer-languages/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/computer-languages/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/computer-languages/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- DATA-LANGUAGES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/data-languages/#readme\"\u003edata-languages\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e🧾 File extensions for data languages.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/data-languages/#readme\"\u003e\n            \u003cimg width=475 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/data-languages/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/data-languages/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/data-languages/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/data-languages/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- LATIN-LOCALES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#readme\"\u003elatin-locales\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e🇪🇸 ISO 639-1 (2-letter) codes for Latin locales.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#readme\"\u003e\n            \u003cimg width=275 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/latin-locales/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- MARKUP-LANGUAGES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/markup-languages/#readme\"\u003emarkup-languages\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e📄 File extensions for markup languages.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/markup-languages/#readme\"\u003e\n            \u003cimg width=475 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/markup-languages/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/markup-languages/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/markup-languages/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/markup-languages/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- NON-LATIN-LOCALES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#readme\"\u003enon-latin-locales\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e🇨🇳 ISO 639-1 (2-letter) codes for non-Latin locales.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#readme\"\u003e\n            \u003cimg width=275 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/non-latin-locales/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- PROGRAMMING-LANGUAGES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/programming-languages/#readme\"\u003eprogramming-languages\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e⌨️ File extensions for programming languages.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/programming-languages/#readme\"\u003e\n            \u003cimg width=475 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/programming-languages/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/programming-languages/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/programming-languages/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/programming-languages/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- PROJECT-MARKERS --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#readme\"\u003eproject-markers\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e🏷️ Common project root markers.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#readme\"\u003e\n            \u003cimg width=375 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/project-markers/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- PROSE-LANGUAGES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/prose-languages/#readme\"\u003eprose-languages\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e📝 File extensions for prose languages.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/prose-languages/#readme\"\u003e\n            \u003cimg width=475 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@2066dc5/prose-languages/assets/images/dataset.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/prose-languages/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/prose-languages/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/prose-languages/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"#top\"\u003eBack to top ↑\u003c/a\u003e\u003c/div\u003e\u003cbr\u003e\n\n\u003ca href=\"#\"\u003e\u003cimg style=\"height:10px ; width:100%\" src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@b8b2932/assets/images/separators/aqua-gradient.png\"\u003e\u003c/a\u003e\n\n\n## 🖥️ Environment \u003c!-- CATEGORY --\u003e\n\n\n\u003c!-- FIND-PROJECT-ROOT --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/find-project-root/#readme\"\u003efind-project-root\u003c/a\u003e\n\n\u003e 📂 Locate project root via custom markers.\n\u003cbr\u003e[Install](https://github.com/adamlui/python-utils/tree/main/find-project-root/#installation) /\n[Readme](https://github.com/adamlui/python-utils/tree/main/find-project-root/#readme) /\n[API usage](https://github.com/adamlui/python-utils/tree/main/find-project-root/#api-usage) /\n[CLI usage](https://github.com/adamlui/python-utils/tree/main/find-project-root/#command-line-usage) /\n[Discuss](https://github.com/adamlui/python-utils/discussions)\n\n\u003c!-- IS-LEGACY-TERMINAL --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/is-legacy-terminal/#readme\"\u003eis-legacy-terminal\u003c/a\u003e\n\n\u003e 📟 Detect whether the terminal is legacy.\n\u003cbr\u003e[Install](https://github.com/adamlui/python-utils/tree/main/is-legacy-terminal/#-installation) /\n[Readme](https://github.com/adamlui/python-utils/tree/main/is-legacy-terminal/#readme) /\n[API usage](https://github.com/adamlui/python-utils/tree/main/is-legacy-terminal/#-api-usage) /\n[CLI usage](https://github.com/adamlui/python-utils/tree/main/is-legacy-terminal/#-command-line-usage) /\n[Discuss](https://github.com/adamlui/python-utils/discussions)\n\n\u003c!-- IS-UNICODE-SUPPORTED --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#readme\"\u003eis-unicode-supported\u003c/a\u003e\n\n\u003e 🈶 Detect whether the terminal supports advanced Unicode.\n\u003cbr\u003e[Install](https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#-installation) /\n[Readme](https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#readme) /\n[API usage](https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#-api-usage) /\n[CLI usage](https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#-command-line-usage) /\n[Discuss](https://github.com/adamlui/python-utils/discussions)\n\n\u003c!-- PROJECT-MARKERS --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#readme\"\u003eproject-markers\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e🏷️ Common project root markers.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#readme\"\u003e\n            \u003cimg width=375 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/project-markers/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/project-markers/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- SYS-LANG --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/sys-lang/#readme\"\u003esys-lang\u003c/a\u003e\n\n\u003e 🔤 Detect the system language.\n\u003cbr\u003e[Install](https://github.com/adamlui/python-utils/tree/main/sys-lang/#-installation) /\n[Readme](https://github.com/adamlui/python-utils/tree/main/sys-lang/#readme) /\n[API usage](https://github.com/adamlui/python-utils/tree/main/sys-lang/#-api-usage) /\n[CLI usage](https://github.com/adamlui/python-utils/tree/main/sys-lang/#-command-line-usage) /\n[Discuss](https://github.com/adamlui/python-utils/discussions)\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"#top\"\u003eBack to top ↑\u003c/a\u003e\u003c/div\u003e\u003cbr\u003e\n\n\u003ca href=\"#\"\u003e\u003cimg style=\"height:10px ; width:100%\" src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@b8b2932/assets/images/separators/aqua-gradient.png\"\u003e\u003c/a\u003e\n\n\n## 🌍 Internationalization / Localization \u003c!-- CATEGORY --\u003e\n\n\n\u003c!-- IS-UNICODE-SUPPORTED --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#readme\"\u003eis-unicode-supported\u003c/a\u003e\n\n\u003e 🈶 Detect whether the terminal supports advanced Unicode.\n\u003cbr\u003e[Install](https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#-installation) /\n[Readme](https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#readme) /\n[API usage](https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#-api-usage) /\n[CLI usage](https://github.com/adamlui/python-utils/tree/main/is-unicode-supported/#-command-line-usage) /\n[Discuss](https://github.com/adamlui/python-utils/discussions)\n\n\u003c!-- LATIN-LOCALES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#readme\"\u003elatin-locales\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e🇪🇸 ISO 639-1 (2-letter) codes for Latin locales.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#readme\"\u003e\n            \u003cimg width=275 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/latin-locales/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/latin-locales/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- NON-LATIN-LOCALES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#readme\"\u003enon-latin-locales\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e🇨🇳 ISO 639-1 (2-letter) codes for non-Latin locales.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#readme\"\u003e\n            \u003cimg width=275 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/non-latin-locales/assets/images/dataset-preview.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/non-latin-locales/#usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003c!-- SYS-LANG --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/sys-lang/#readme\"\u003esys-lang\u003c/a\u003e\n\n\u003e 🔤 Detect the system language.\n\u003cbr\u003e[Install](https://github.com/adamlui/python-utils/tree/main/sys-lang/#-installation) /\n[Readme](https://github.com/adamlui/python-utils/tree/main/sys-lang/#readme) /\n[API usage](https://github.com/adamlui/python-utils/tree/main/sys-lang/#-api-usage) /\n[CLI usage](https://github.com/adamlui/python-utils/tree/main/sys-lang/#-command-line-usage) /\n[Discuss](https://github.com/adamlui/python-utils/discussions)\n\n\u003c!-- TRANSLATE-MESSAGES --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/translate-messages/#readme\"\u003etranslate-messages\u003c/a\u003e\n\n\u003e 🌍 Translate `en/messages.json` (chrome.i18n format) to 100+ locales automatically.\n\u003cbr\u003e[Install](https://github.com/adamlui/python-utils/tree/main/translate-messages/#installation) /\n[Readme](https://github.com/adamlui/python-utils/tree/main/translate-messages/#readme) /\n[CLI usage](https://github.com/adamlui/python-utils/tree/main/translate-messages/#usage) /\n[Discuss](https://github.com/adamlui/python-utils/discussions)\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"#top\"\u003eBack to top ↑\u003c/a\u003e\u003c/div\u003e\u003cbr\u003e\n\n\u003ca href=\"#\"\u003e\u003cimg style=\"height:10px ; width:100%\" src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@b8b2932/assets/images/separators/aqua-gradient.png\"\u003e\u003c/a\u003e\n\n\n## 📦 Package \u003c!-- CATEGORY --\u003e\n\n\n\u003c!-- GET-MIN-PY --\u003e\n\n### \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/get-min-py/#readme\"\u003eget-min-py\u003c/a\u003e\n\n\u003cdetails\u003e\n    \u003csummary\u003e📊 Get the minimum Python version required for a PyPI package.\u003c/summary\u003e\n    \u003cbr\u003e\u003cblockquote\u003e\n        \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/get-min-py/#readme\"\u003e\n            \u003cimg width=550 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@latest/get-min-py/assets/images/cli-output.png\"\u003e\u003c/a\u003e\n    \u003c/blockquote\u003e\n\u003c/details\u003e\n\n\u003cblockquote\u003e\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/get-min-py/#-installation\"\u003e\n        Install\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/get-min-py/#readme\"\u003e\n        Readme\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/get-min-py/#-api-usage\"\u003e\n        API usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/tree/main/get-min-py/#-command-line-usage\"\u003e\n        CLI usage\u003c/a\u003e /\n    \u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003e\n        Discuss\u003c/a\u003e\n\u003c/blockquote\u003e\n\n\u003cdiv align=\"center\"\u003e\u003ca href=\"#top\"\u003eBack to top ↑\u003c/a\u003e\u003c/div\u003e\u003cbr\u003e\n\n\u003ca href=\"#\"\u003e\u003cimg style=\"height:10px ; width:100%\" src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@b8b2932/assets/images/separators/aqua-gradient.png\"\u003e\u003c/a\u003e\n\n## 🧠 Contributors\n\n\u003ca href=\"https://github.com/adamlui/python-utils/graphs/contributors\"\u003e\n    \u003cimg height=45 width=\"auto\" src=\"https://contrib.rocks/image?repo=adamlui/python-utils\" /\u003e\u003c/a\u003e\n\u003cbr\u003e\u003cbr\u003e\n\nAll contributions are very welcome!\n\n\u003ca href=\"#\"\u003e\u003cimg height=10px width=\"100%\" src=\"https://cdn.jsdelivr.net/gh/adamlui/js-utils@6b0d399/assets/images/separators/aqua-gradient.png\"\u003e\u003c/a\u003e\n\n\n\u003c!-- FOOTER --\u003e\n\n\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@d6fae85/assets/images/icons/tag/white/icon16.svg\"\u003e\u003cimg height=14 src=\"https://cdn.jsdelivr.net/gh/adamlui/python-utils@d6fae85/assets/images/icons/tag/dark-gray/icon16.svg\"\u003e\u003c/picture\u003e\n\u003ca href=\"https://github.com/adamlui/python-utils/releases\"\u003e**Latest releases**\u003c/a\u003e /\n\u003ca href=\"https://github.com/adamlui/python-utils/discussions\"\u003eDiscuss\u003c/a\u003e /\n\u003ca href=\"https://github.com/adamlui/python-utils/issues\"\u003eReport bug\u003c/a\u003e /\n\u003ca href=\"mailto:security@tidelift.com\"\u003eReport vulnerability\u003c/a\u003e /\n\u003ca href=\"#top\"\u003eBack to top ↑\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamlui%2Fpython-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamlui%2Fpython-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamlui%2Fpython-utils/lists"}