Metadata-Version: 2.1
Name: punycode
Version: 0.2.0
Summary: Punycode Converter Library for Python
Home-page: https://github.com/Yutsuro/punycode
Author: Yutsuro
Author-email: Yuki@utsu.ro
License: MIT
Keywords: Punycode Converter Python
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Internet :: Name Service (DNS)
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: idna (==3.4)
Requires-Dist: wincertstore (==0.2)

# punycode



**Punycode Converter Library for Python**



You can convert Punycode domain to/from Unicode domain with only one function: `punycode.convert()`.



## How to use



### Install



```sh

pip install punycode

```



### Function



There is only one function `punycode.convert()`.



* <b>input:</b>  

`input_text: string`  

Input can be both a Punycode domain and a Unicode domain.



* <b>return:</b>  

`output_text: string`  

If you input Punycode domain, the return will be a Unicode domian.  

On the other hand, if you input a Unicode domain, you will get a Punycode domain.



### Code sample



```python

import punycode



# Convert Unicode domain to Punycode domain

str1 = "美しい.世界"

str2 = "こっち.みんな"

str3 = "日本語.jp"

print(f"{str1} -> {punycode.convert(str1)}")

print(f"{str2} -> {punycode.convert(str2)}")

print(f"{str3} -> {punycode.convert(str3)}")



# 僕だけの.世界 -> xn--08j3a5b142t.xn--rhqv96g

# こっち.みんな -> xn--l8j9flb8a.xn--q9jyb4c

# 日本語.jp -> xn--wgv71a119e.jp



# Punycode domain to Unicode domain

str4 = "xn--n8jub8754b.xn--rhqv96g"

str5 = "xn--28j2af.xn--q9jyb4c"

str6 = "xn--wgv71a119e.jp"

print(f"{str4} -> {punycode.convert(str4)}")

print(f"{str5} -> {punycode.convert(str5)}")

print(f"{str6} -> {punycode.convert(str6)}")



# xn--n8jub8754b.xn--rhqv96g -> 美しい.世界

# xn--28j2af.xn--q9jyb4c -> こっち.みんな

# xn--wgv71a119e.jp -> 日本語.jp

```



## ascii_only option (v0.2.0 or later)



If you don't want to convert a Punycode domain to Unicode when you use `convert()` function, you can use `ascii_only` option.



With this option `True`, `convert()` will convert only Unicode domains.



```python

# ascii_only option (v0.2.0 or later)

ascii_only = True



# Only Unicode domains will be converted if ascii_only=True

print(f"{str4} -> {punycode.convert(str4, ascii_only)}")

print(f"{str5} -> {punycode.convert(str5, ascii_only)}")

print(f"{str6} -> {punycode.convert(str6, ascii_only)}")



# xn--n8jub8754b.xn--rhqv96g -> xn--n8jub8754b.xn--rhqv96g

# xn--28j2af.xn--q9jyb4c -> xn--28j2af.xn--q9jyb4c

# xn--wgv71a119e.jp -> xn--wgv71a119e.jp

```



This option is available on 0.2.0 or later version, so if you use v0.1.0, please update `punycode`.



```powershell

pip install -U punycode

```
