nephila / giturlparse

Parse & rewrite git urls (supports GitHub, Bitbucket, Assembla ...)
https://pypi.python.org/pypi/giturlparse
Apache License 2.0
31 stars 21 forks source link

rewrite the parsed info is not efficient #24

Open alingse opened 3 years ago

alingse commented 3 years ago

I want to use this package to do auto-migration git repo

eg: import repo from github.com to gitlab.com

I need some code like this :

u = 'https://github.com/nephila/giturlparse'
repo = parse(u)
repo.domain = 'gitlab.com'
new_url = repo.format('https')
# Expect new_url is  --> https://gitlab.com/nephila/giturlparse.git
# but it real not changed --> https://github.com/nephila/giturlparse.git

I find the way to rewrite the repo info

u = 'https://github.com/nephila/giturlparse'
repo = parse(u)
repo._parsed['domain'] = 'gitlab.com'
new_url = repo.format('https') 
# Expect new_url is  --> https://gitlab.com/nephila/giturlparse.git
# Yes, it work, but not so efficient,
#  and need user to know there is a `_parsed` field, a little not pythonic
yakky commented 3 years ago

@alingse could you elaborate please?

alingse commented 3 years ago

@yakky I update the code in the begin comment.

I want repo instance (GitUrlParsed) have some method to rewrite the subpart.

yakky commented 3 years ago

@alingse having a comprehensive way to mutate a URL from one provider to another is not really in scope It's subject to too many pitfalls (just an example: gitlab supports subgroups - URL like /organization/something/repo.git- while github doesn't) to be reliable the best we can do is to add a public method which does nothing but replacing a single value in _parsed attribute, something like


@data.setter
def data(self, key, value):
    self._parsed[key] = value