Project: giturlparse

A Git URL parsing module (supports parsing and rewriting)

Project Details

Latest version
0.12.0
Home Page
https://github.com/nephila/giturlparse
PyPI Page
https://pypi.org/project/giturlparse/

Project Popularity

PageRank
0.0015412181322607256
Number of downloads
359311

=========== 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.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