{"id":27172736,"url":"https://github.com/zobweyt/textcase","last_synced_at":"2025-12-29T23:35:57.533Z","repository":{"id":285476986,"uuid":"958168009","full_name":"zobweyt/textcase","owner":"zobweyt","description":"A feature-rich Python text case conversion library","archived":false,"fork":false,"pushed_at":"2025-04-08T17:30:06.000Z","size":1977,"stargazers_count":168,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T18:33:34.590Z","etag":null,"topics":["camel-case","case","constant-case","conversion","foss","just","kebab-case","lower-case","mypy","nix","pascal-case","pypi","pytest","python","ruff","sentence-case","snake-case","text","title-case","upper-case"],"latest_commit_sha":null,"homepage":"https://zobweyt.github.io/textcase","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zobweyt.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-31T18:51:23.000Z","updated_at":"2025-04-08T17:29:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"de8cf5aa-93d1-4f31-9d6a-80a50597b7f2","html_url":"https://github.com/zobweyt/textcase","commit_stats":null,"previous_names":["zobweyt/textcase"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zobweyt%2Ftextcase","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zobweyt%2Ftextcase/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zobweyt%2Ftextcase/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zobweyt%2Ftextcase/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zobweyt","download_url":"https://codeload.github.com/zobweyt/textcase/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247909161,"owners_count":21016478,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["camel-case","case","constant-case","conversion","foss","just","kebab-case","lower-case","mypy","nix","pascal-case","pypi","pytest","python","ruff","sentence-case","snake-case","text","title-case","upper-case"],"created_at":"2025-04-09T10:02:38.294Z","updated_at":"2025-12-29T23:35:57.525Z","avatar_url":"https://github.com/zobweyt.png","language":"Python","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pypi.python.org/pypi/textcase\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/zobweyt/textcase/refs/heads/main/docs/assets/favicon.svg\" alt=\"textcase logo\" width=\"96\" height=\"96\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e\n  textcase\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  Python library for text case conversions.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://coveralls.io/github/zobweyt/textcase\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/coverallsCoverage/github/zobweyt/textcase?branch=main\" alt=\"Coveralls\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypistats.org/packages/textcase\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/dm/textcase\" alt=\"PyPI - Downloads\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.python.org/pypi/textcase\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/v/textcase.svg\" alt=\"PyPI - Version\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pypi.python.org/pypi/textcase\" target=\"_blank\"\u003e\n    \u003cimg src=\"https://img.shields.io/pypi/pyversions/textcase.svg\" alt=\"PyPI - Python Version\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**Documentation**: https://zobweyt.github.io/textcase\n\n**PyPI**: https://pypi.org/project/textcase\n\n## Features\n\n- **Text case conversion**: [convert](https://zobweyt.github.io/textcase/#usage) strings between various text cases (e.g., [snake_case](https://zobweyt.github.io/textcase/reference/#textcase.snake), [kebab-case](https://zobweyt.github.io/textcase/reference/#textcase.kebab), [camelCase](https://zobweyt.github.io/textcase/reference/#textcase.camel), etc.).\n- **Extensible**: extend the library with custom word [boundaries](https://zobweyt.github.io/textcase/learn/boundaries) and [cases](https://zobweyt.github.io/textcase/learn/cases).\n- **Accurate**: [handles any word boundaries](https://zobweyt.github.io/textcase/#precision) in strings including [acronyms](https://zobweyt.github.io/textcase/reference/#textcase.ACRONYM) (as in `\"HTTPRequest\"`).\n- **Non-ASCII Support**: handles [non-ASCII characters](https://zobweyt.github.io/textcase/#non-ascii-characters) seamlessly (no inferences on the input language itself is made).\n- **Tiny, Performant \u0026 Zero Dependencies**: a regex-free, efficient library that stays lightweight with no external dependencies.\n- **100% \u003cabbr title=\"The amount of code that is automatically tested\"\u003etest coverage\u003c/abbr\u003e**: every line of code is rigorously tested for reliability.\n- **100% \u003cabbr title=\"Python type annotations, with this your editor and external tools can give you better support\"\u003etype annotated\u003c/abbr\u003e codebase**: full type annotations for best developer experience.\n\n## Installation\n\nCreate and activate a virtual environment and then install [`textcase`](https://pypi.org/projects/textcase):\n\n```sh\npip install textcase\n```\n\n## Usage\n\nConvert a string to a text case:\n\n```python\nimport textcase\n\ntextcase.snake(\"Hello, world!\")  # hello_world\ntextcase.constant(\"Hello, world!\")  # HELLO_WORLD\ntextcase.kebab(\"Hello, world!\")  # hello-world\ntextcase.middot(\"Hello, world!\")  # hello·world\ntextcase.camel(\"Hello, world!\")  # helloWorld\ntextcase.pascal(\"Hello, world!\")  # HelloWorld\ntextcase.lower(\"Hello, world!\")  # hello world\ntextcase.upper(\"Hello, world!\")  # HELLO WORLD\ntextcase.title(\"Hello, world!\")  # Hello World\ntextcase.sentence(\"Hello, world!\")  # Hello world\n```\n\nSee [documentation](https://zobweyt.github.io/textcase) for more usage examples.\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzobweyt%2Ftextcase","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzobweyt%2Ftextcase","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzobweyt%2Ftextcase/lists"}