===========
giturlparse
===========
Parse & rewrite git urls (supports GitHub, Bitbucket, FriendCode, Assembla, Gitlab ...)
This is a fork of giturlparse.py with updated parsers.
Original project can be found at https://github.com/FriendCode/giturlparse.py
************
Installing
************
::
pip install giturlparse
******************
Examples
******************
Exposed attributes
==================
* ``platform``: platform codename
* ``host``: server hostname
* ``resource``: same as ``host``
* ``port``: URL port (only if explicitly defined in URL)
* ``protocol``: URL protocol (git, ssh, http/https)
* ``protocols``: list of protocols explicitly defined in URL
* ``user``: repository user
* ``owner``: repository owner (user or organization)
* ``repo``: repository name
* ``name``: same as ``repo``
* ``groups``: list of groups - gitlab only
* ``path``: path to file or directory (includes the branch name) - gitlab / github only
* ``path_raw``: raw path starting from the repo name (might include platform keyword) - gitlab / github only
* ``branch``: branch name (when parseable) - gitlab / github only
* ``username``: username from ``<username>:<access_token>@<url>`` gitlab / github urls
* ``access_token``: access token from ``<username>:<access_token>@<url>`` gitlab / github urls
Parse
==================
::
from giturlparse import parse
p = parse('git@bitbucket.org:AaronO/some-repo.git')
p.host, p.owner, p.repo
# => ('bitbucket.org', 'AaronO', 'some-repo')
Rewrite
==================
::
from giturlparse import parse
url = 'git@github.com:Org/Private-repo.git'
p = parse(url)
p.url2ssh, p.url2https, p.url2git, p.url2http
# => ('git@github.com:Org/Private-repo.git', 'https://github.com/Org/Private-repo.git', 'git://github.com/Org/Private-repo.git', None)
URLS
==================
Alternative URLs for same repo::
from giturlparse import parse
url = 'git@github.com:Org/Private-repo.git'
parse(url).urls
# => {
# 'ssh': 'git@github.com:Org/Private-repo.git',
# 'https': 'https://github.com/Org/Private-repo.git',
# 'git': 'git://github.com/Org/Private-repo.git'
# }
Validate
==================
::
from giturlparse import parse, validate
url = 'git@github.com:Org/Private-repo.git'
parse(url).valid
# => True
# Or
validate(url)
# => True
Tests
==================
::
python -munittest
License
==================
Apache v2 (Check out LICENSE file)
.. :changelog:
*******
History
*******
.. towncrier release notes start
0.14.0 (2025-10-22)
===================
Features
--------
- Allow rewriting repo and owner (#0)
0.13.0 (2025-10-22)
===================
Features
--------
- Switch to Coveralls Github action (#88)
Bugfixes
--------
- Fix Bitbucket url parse and add bitbucket.com to recognized domains (#107)
- Remove fix-encoding-pragma from pre-commit hooks as it is deprecated (#119)
0.12.0 (2023-09-24)
===================
Features
--------
- Add github/gitlab username:access_token parse support (#21)
- Migrate to bump-my-version (#79)
Bugfixes
--------
- Fix Gitlab URLs with branch (#42)
- Align tox.ini with github actions (#71)
0.11.1 (2023-08-04)
===================
Bugfixes
--------
- Remove debug print statements (#66)
0.11.0 (2023-08-03)
===================
Features
--------
- Add parsing variable for user to gitlab parser (#47)
- Add support for Python 3.8+ (#48)
Bugfixes
--------
- Update tests invocation method to avoid future breakages (#29)
- Update linting tools and fix code style (#34)
- Add more github use cases (#43)
- Fix parsing generic git url (#46)
0.10.0 (2020-12-05)
===================
Features
--------
- General matching improvements (#18)
- Update tooling, drop python2 (#10213)
0.9.2 (2018-10-27)
==================
* Removed "s" from the base platform regex
* Fix license classifier in setup.py
* Update meta files
0.9.1 (2018-01-20)
==================
* First fork release
Raw data
{
"_id": null,
"home_page": "https://github.com/nephila/giturlparse",
"name": "giturlparse",
"maintainer": "Iacopo Spalletti",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "i.spalletti@nephila.it",
"keywords": "giturlparse",
"author": "Aaron O Mullan",
"author_email": "aaron@friendco.de",
"download_url": "https://files.pythonhosted.org/packages/09/35/7f25a604a406be7d7d0f849bfcbc1603df084e9e58fe6170980c231138e4/giturlparse-0.14.0.tar.gz",
"platform": null,
"description": "===========\ngiturlparse\n===========\n\nParse & rewrite git urls (supports GitHub, Bitbucket, FriendCode, Assembla, Gitlab ...)\n\nThis is a fork of giturlparse.py with updated parsers.\n\nOriginal project can be found at https://github.com/FriendCode/giturlparse.py\n\n************\nInstalling\n************\n\n::\n\n pip install giturlparse\n\n******************\nExamples\n******************\n\nExposed attributes\n==================\n\n* ``platform``: platform codename\n* ``host``: server hostname\n* ``resource``: same as ``host``\n* ``port``: URL port (only if explicitly defined in URL)\n* ``protocol``: URL protocol (git, ssh, http/https)\n* ``protocols``: list of protocols explicitly defined in URL\n* ``user``: repository user\n* ``owner``: repository owner (user or organization)\n* ``repo``: repository name\n* ``name``: same as ``repo``\n* ``groups``: list of groups - gitlab only\n* ``path``: path to file or directory (includes the branch name) - gitlab / github only\n* ``path_raw``: raw path starting from the repo name (might include platform keyword) - gitlab / github only\n* ``branch``: branch name (when parseable) - gitlab / github only\n* ``username``: username from ``<username>:<access_token>@<url>`` gitlab / github urls\n* ``access_token``: access token from ``<username>:<access_token>@<url>`` gitlab / github urls\n\nParse\n==================\n\n::\n\n from giturlparse import parse\n\n p = parse('git@bitbucket.org:AaronO/some-repo.git')\n\n p.host, p.owner, p.repo\n\n # => ('bitbucket.org', 'AaronO', 'some-repo')\n\n\nRewrite\n==================\n\n::\n\n from giturlparse import parse\n\n url = 'git@github.com:Org/Private-repo.git'\n\n p = parse(url)\n\n p.url2ssh, p.url2https, p.url2git, p.url2http\n # => ('git@github.com:Org/Private-repo.git', 'https://github.com/Org/Private-repo.git', 'git://github.com/Org/Private-repo.git', None)\n\nURLS\n==================\n\nAlternative URLs for same repo::\n\n from giturlparse import parse\n\n url = 'git@github.com:Org/Private-repo.git'\n\n parse(url).urls\n # => {\n # 'ssh': 'git@github.com:Org/Private-repo.git',\n # 'https': 'https://github.com/Org/Private-repo.git',\n # 'git': 'git://github.com/Org/Private-repo.git'\n # }\n\nValidate\n==================\n\n::\n\n from giturlparse import parse, validate\n\n url = 'git@github.com:Org/Private-repo.git'\n\n parse(url).valid\n # => True\n\n # Or\n\n validate(url)\n # => True\n\nTests\n==================\n\n::\n\n python -munittest\n\nLicense\n==================\n\nApache v2 (Check out LICENSE file)\n\n.. :changelog:\n\n*******\nHistory\n*******\n\n.. towncrier release notes start\n\n0.14.0 (2025-10-22)\n===================\n\nFeatures\n--------\n\n- Allow rewriting repo and owner (#0)\n\n\n0.13.0 (2025-10-22)\n===================\n\nFeatures\n--------\n\n- Switch to Coveralls Github action (#88)\n\n\nBugfixes\n--------\n\n- Fix Bitbucket url parse and add bitbucket.com to recognized domains (#107)\n- Remove fix-encoding-pragma from pre-commit hooks as it is deprecated (#119)\n\n\n0.12.0 (2023-09-24)\n===================\n\nFeatures\n--------\n\n- Add github/gitlab username:access_token parse support (#21)\n- Migrate to bump-my-version (#79)\n\n\nBugfixes\n--------\n\n- Fix Gitlab URLs with branch (#42)\n- Align tox.ini with github actions (#71)\n\n\n0.11.1 (2023-08-04)\n===================\n\nBugfixes\n--------\n\n- Remove debug print statements (#66)\n\n\n0.11.0 (2023-08-03)\n===================\n\nFeatures\n--------\n\n- Add parsing variable for user to gitlab parser (#47)\n- Add support for Python 3.8+ (#48)\n\n\nBugfixes\n--------\n\n- Update tests invocation method to avoid future breakages (#29)\n- Update linting tools and fix code style (#34)\n- Add more github use cases (#43)\n- Fix parsing generic git url (#46)\n\n\n0.10.0 (2020-12-05)\n===================\n\nFeatures\n--------\n\n- General matching improvements (#18)\n- Update tooling, drop python2 (#10213)\n\n0.9.2 (2018-10-27)\n==================\n\n* Removed \"s\" from the base platform regex\n* Fix license classifier in setup.py\n* Update meta files\n\n0.9.1 (2018-01-20)\n==================\n\n* First fork release\n",
"bugtrack_url": null,
"license": "Apache v2",
"summary": "A Git URL parsing module (supports parsing and rewriting)",
"version": "0.14.0",
"project_urls": {
"Homepage": "https://github.com/nephila/giturlparse"
},
"split_keywords": [
"giturlparse"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c4f99ff5a301459f804a885f237453ba81564bc6ee54740e9f2676c2642043f6",
"md5": "12e45c44875147689d4c1df213c24bd3",
"sha256": "04fd9c262ca9a4db86043d2ef32b2b90bfcbcdefc4f6a260fd9402127880931d"
},
"downloads": -1,
"filename": "giturlparse-0.14.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "12e45c44875147689d4c1df213c24bd3",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.8",
"size": 16299,
"upload_time": "2025-10-22T09:21:10",
"upload_time_iso_8601": "2025-10-22T09:21:10.818418Z",
"url": "https://files.pythonhosted.org/packages/c4/f9/9ff5a301459f804a885f237453ba81564bc6ee54740e9f2676c2642043f6/giturlparse-0.14.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "09357f25a604a406be7d7d0f849bfcbc1603df084e9e58fe6170980c231138e4",
"md5": "afaee58ec97ef4b55390a3d4fc2c31a6",
"sha256": "0a13208cb3f60e067ee3d09d28e01f9c936065986004fa2d5cd6db7758e9f6e6"
},
"downloads": -1,
"filename": "giturlparse-0.14.0.tar.gz",
"has_sig": false,
"md5_digest": "afaee58ec97ef4b55390a3d4fc2c31a6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 15637,
"upload_time": "2025-10-22T09:21:11",
"upload_time_iso_8601": "2025-10-22T09:21:11.674329Z",
"url": "https://files.pythonhosted.org/packages/09/35/7f25a604a406be7d7d0f849bfcbc1603df084e9e58fe6170980c231138e4/giturlparse-0.14.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-22 09:21:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nephila",
"github_project": "giturlparse",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "giturlparse"
}