>>> url('http://президент.рф/') ValidationFailure(func=url, args={'public': False, 'value': 'http://\xd0\xbf\xd1\x80\xd0\xb5\xd0\xb7\xd0\xb8\xd0\xb4\xd0\xb5\xd0\xbd\xd1\x82.\xd1\x80\xd1\x84/'}) >>> url('http://xn--d1abbgf6aiiy.xn--p1ai/') ValidationFailure(func=url, args={'public': False, 'value': 'http://xn--d1abbgf6aiiy.xn--p1ai/'})
Yet these are valid URLs, see https://en.wikipedia.org/wiki/.%D1%80%D1%84
The domain has an ASCII representation of xn--p1ai derived as Punycode
PRs welcome!
Here is a workaround for the second case: u = urllib.parse.urlparse(url); validators.url(u._replace(netloc = idna.decode(u.netloc)).geturl())
u = urllib.parse.urlparse(url);
validators.url(u._replace(netloc = idna.decode(u.netloc)).geturl())
maint: improves `url` module
Activity
kvesteri commentedon Aug 16, 2017
PRs welcome!
bovlb commentedon Aug 24, 2017
Here is a workaround for the second case:
u = urllib.parse.urlparse(url);validators.url(u._replace(netloc = idna.decode(u.netloc)).geturl())maint: improves `url` module