Skip to main content

A Git URL parsing module (supports parsing and rewriting)

Project description

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)

History

0.15.0 (2026-06-16)

Bugfixes

  • Fix path and branch extraction removing every /blob/ and /tree/ occurrence instead of only the leading marker, which corrupted file paths and branch names containing those segments. (#150)

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

giturlparse-0.15.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

giturlparse-0.15.0-py2.py3-none-any.whl (16.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file giturlparse-0.15.0.tar.gz.

File metadata

  • Download URL: giturlparse-0.15.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for giturlparse-0.15.0.tar.gz
Algorithm Hash digest
SHA256 9af3f1fd5c4a0cac94ddb283593635005646393ee0debbe330d1bdff8866bf2c
MD5 70d9e6bd41d4d19e57de57b1df91790d
BLAKE2b-256 8c8ab70b84cc78f9059d627f09560c81a11e8f046570d220a24e169489cad6c9

See more details on using hashes here.

File details

Details for the file giturlparse-0.15.0-py2.py3-none-any.whl.

File metadata

  • Download URL: giturlparse-0.15.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 16.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for giturlparse-0.15.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 76d2e6983b037356ab99b30683e533ac3db96409b68e2163a20fc3aff6446f10
MD5 45cf96ab42d789a6f576bc481b08263c
BLAKE2b-256 c796147a2771ab655b9353781fb2f95c94eaf1d8576dccc991c1a61d0d355067

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page