ypcrts / fqdn

RFC-compliant FQDN validation and manipulation for Python.
http://fqdn.readthedocs.io/
Mozilla Public License 2.0
30 stars 11 forks source link

[Feature Request] Internationalized domain name (IDN) support #25

Open PeterDaveHello opened 3 years ago

PeterDaveHello commented 3 years ago

Hello,

I just found this useful python tool, it looks great in most cases! Not sure is IDN support will be something you'd also like to have, it'll be awesome if it's also supported.

Currently, IDN will be considered as an invalid FQDN:

$ python
Python 3.6.9 (default, Jul 17 2020, 12:50:27) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from fqdn import FQDN
>>> FQDN('Bücher.example').is_valid
False

Thank you!

ypcrts commented 3 years ago

Yes I do want IDN support, but without breaking old use cases. I’ll see what Santa is bringing this year.

Sent from ProtonMail Mobile

On Tue, Nov 17, 2020 at 09:17, Peter Dave Hello notifications@github.com wrote:

Hello,

I just found this useful python tool, it looks great in most cases! Not sure is IDN support will be something you'd also like to have, it'll be awesome if it's also supported.

Currently, IDN will be considered as an invalid FQDN:

$ python Python 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information.

from fqdn import FQDN FQDN('Bücher.example').is_valid False

Thank you!

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

PeterDaveHello commented 3 years ago

Thank you @ypcrts 😃

ypcrts commented 3 years ago

@PeterDaveHello

What is your use case for this? You want FQDN('Bücher.example').is_valid to return True. What do you want for the internal state? For example, do you want FQDN('Bücher.example').relative to return xn--bcher-kva.example or Bücher.example? Why?

Really, what I'm asking is, how is your use case different from #12 ?

PeterDaveHello commented 3 years ago

To me personally I prefer .relative() to return xn--bcher-kva.example, because it's more comparable, one of the issues of IDN is the identifyability by human eyes, but I may need to dig more about how IDN is saved in the most popular DNS service providers.

PeterDaveHello commented 3 years ago

I'm not pretty sure but this may just be duplicated with #12

PeterDaveHello commented 3 years ago

cc @ross & https://github.com/octodns/octodns/issues/199, octodns may be able to support IDN via the implementation here(and may also contribute back), I've already use this fqdn package in octodns to help fdqn validation (https://github.com/octodns/octodns/pull/631)!