giturlparse icon indicating copy to clipboard operation
giturlparse copied to clipboard

rewrite the parsed info is not efficient

Open alingse opened this issue 5 years ago • 3 comments

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

alingse avatar Oct 25 '20 08:10 alingse

@alingse could you elaborate please?

yakky avatar Oct 31 '20 22:10 yakky

@yakky I update the code in the begin comment.

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

alingse avatar Nov 02 '20 02:11 alingse

@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

yakky avatar Nov 15 '20 15:11 yakky