===========
giturlparse
Parse & rewrite git urls (supports GitHub, Bitbucket, FriendCode, Assembla, Gitlab ...)
This is again a fork, now fork of https://github.com/nephila/giturlparse.
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
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
1.0.0 (2023-07-22)
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)