ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.- PKy]t HISTORY.rstnu[.. :changelog: History ------- 2.5 (2017-03-07) ++++++++++++++++ - Fix bug with Katakana middle dot context-rule (Thanks, Greg Shikhman.) 2.4 (2017-03-01) ++++++++++++++++ - Restore IDNAError to be a subclass of UnicodeError, as some users of this library are only looking for the latter to catch invalid strings. 2.3 (2017-02-28) ++++++++++++++++ - Fix bugs relating to deriving IDNAError from UnicodeError. - More memory footprint improvements (Thanks, Alex Gaynor) 2.2 (2016-12-21) ++++++++++++++++ - Made some changes to the UTS 46 data that should allow Jython to get around 64kb Java class limits. (Thanks, John A. Booth and Marcin Płonka.) - In Python 2.6, skip two tests that rely on data not present in that Python version's unicodedata module. - Use relative imports to help downstream users. 2.1 (2016-03-20) ++++++++++++++++ - Memory consumption optimizations. The library should consume significantly less memory through smarter data structures being used to represent relevant Unicode properties. Many thanks to Shivaram Lingamneni for this patch. - Patches to make library work better with Python 2.6. The core library currently works however the unit testing does not. (Thanks, Robert Buchholz) - Better affix all Unicode codepoint properties to a specific version. 2.0 (2015-05-18) ++++++++++++++++ - Added support for Unicode IDNA Compatibility Processing (aka Unicode Technical Standard #46). Big thanks to Jon Ribbens who contributed this functionality. 1.1 (2015-01-27) ++++++++++++++++ - Use IDNA properties from Unicode 6.3.0. Internet Architecture Board (IAB) issued statement recommending against the use of Unicode 7.0.0 until issues relating to U+08A1 codepoint are resolved. See http://goo.gl/Ed1n0K - Identify some cases when label would be too longer to be a legal DNS name and raise an exception. (Thanks, Ed Lewis) 1.0 (2014-10-12) ++++++++++++++++ - Update IDNA properties for Unicode 7.0.0. 0.9 (2014-07-18) ++++++++++++++++ - Fix issue with non-UTF-8 environments reading the README file now that it contains non-ASCII. (Thanks, Tom Prince) - Codec functions are useful, so they are separated into their own module, rather than just existing for compatibility reasons. - Add LICENSE file. 0.8 (2014-07-09) ++++++++++++++++ - Added MANIFEST.in for correct source distribution compilation. 0.7 (2014-07-09) ++++++++++++++++ - Filled out missing tests for various functions. - Fix bug in CONTEXTO validation for Greek lower numeral sign (U+0375) - Fix bug in CONTEXTO validation for Japanese middle dot (U+30FB) - Improved documentation - Move designation to Stable 0.6 (2014-04-29) ++++++++++++++++ - Minor improvements to Python 3 support, tests (Thanks, Derek Wilson) 0.5 (2014-02-05) ++++++++++++++++ - Update IDNA properties for Unicode 6.3.0. 0.4 (2014-01-07) ++++++++++++++++ - Fix trove classifier for Python 3. (Thanks, Hynek Schlawack) 0.3 (2013-07-18) ++++++++++++++++ - Ported to Python 3. 0.2 (2013-07-16) ++++++++++++++++ - Improve packaging. - More conformant, passes all relevant tests in the Unicode TR46 test suite. 0.1 (2013-05-27) ++++++++++++++++ - First proof-of-concept version. PKy]F README.rstnu[Internationalized Domain Names in Applications (IDNA) ===================================================== Support for the Internationalised Domain Names in Applications (IDNA) protocol as specified in `RFC 5891 `_. This is the latest version of the protocol and is sometimes referred to as “IDNA 2008”. This library also provides support for Unicode Technical Standard 46, `Unicode IDNA Compatibility Processing `_. This acts as a suitable replacement for the “encodings.idna” module that comes with the Python standard library, but only supports the old, deprecated IDNA specification (`RFC 3490 `_). Basic functions are simply executed: .. code-block:: pycon # Python 3 >>> import idna >>> idna.encode('ドメイン.テスト') b'xn--eckwd4c7c.xn--zckzah' >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) ドメイン.テスト # Python 2 >>> import idna >>> idna.encode(u'ドメイン.テスト') 'xn--eckwd4c7c.xn--zckzah' >>> print idna.decode('xn--eckwd4c7c.xn--zckzah') ドメイン.テスト Packages -------- The latest tagged release version is published in the PyPI repository: .. image:: https://badge.fury.io/py/idna.svg :target: http://badge.fury.io/py/idna Installation ------------ To install this library, you can use pip: .. code-block:: bash $ pip install idna Alternatively, you can install the package using the bundled setup script: .. code-block:: bash $ python setup.py install This library works with Python 2.6 or later, and Python 3.3 or later. Usage ----- For typical usage, the ``encode`` and ``decode`` functions will take a domain name argument and perform a conversion to A-labels or U-labels respectively. .. code-block:: pycon # Python 3 >>> import idna >>> idna.encode('ドメイン.テスト') b'xn--eckwd4c7c.xn--zckzah' >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) ドメイン.テスト You may use the codec encoding and decoding methods using the ``idna.codec`` module: .. code-block:: pycon # Python 2 >>> import idna.codec >>> print u'домена.испытание'.encode('idna') xn--80ahd1agd.xn--80akhbyknj4f >>> print 'xn--80ahd1agd.xn--80akhbyknj4f'.decode('idna') домена.испытание Conversions can be applied at a per-label basis using the ``ulabel`` or ``alabel`` functions if necessary: .. code-block:: pycon # Python 2 >>> idna.alabel(u'测试') 'xn--0zwm56d' Compatibility Mapping (UTS #46) +++++++++++++++++++++++++++++++ As described in `RFC 5895 `_, the IDNA specification no longer normalizes input from different potential ways a user may input a domain name. This functionality, known as a “mapping”, is now considered by the specification to be a local user-interface issue distinct from IDNA conversion functionality. This library provides one such mapping, that was developed by the Unicode Consortium. Known as `Unicode IDNA Compatibility Processing `_, it provides for both a regular mapping for typical applications, as well as a transitional mapping to help migrate from older IDNA 2003 applications. For example, “Königsgäßchen” is not a permissible label as *LATIN CAPITAL LETTER K* is not allowed (nor are capital letters in general). UTS 46 will convert this into lower case prior to applying the IDNA conversion. .. code-block:: pycon # Python 3 >>> import idna >>> idna.encode(u'Königsgäßchen') ... idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed >>> idna.encode('Königsgäßchen', uts46=True) b'xn--knigsgchen-b4a3dun' >>> print(idna.decode('xn--knigsgchen-b4a3dun')) königsgäßchen Transitional processing provides conversions to help transition from the older 2003 standard to the current standard. For example, in the original IDNA specification, the *LATIN SMALL LETTER SHARP S* (ß) was converted into two *LATIN SMALL LETTER S* (ss), whereas in the current IDNA specification this conversion is not performed. .. code-block:: pycon # Python 2 >>> idna.encode(u'Königsgäßchen', uts46=True, transitional=True) 'xn--knigsgsschen-lcb0w' Implementors should use transitional processing with caution, only in rare cases where conversion from legacy labels to current labels must be performed (i.e. IDNA implementations that pre-date 2008). For typical applications that just need to convert labels, transitional processing is unlikely to be beneficial and could produce unexpected incompatible results. ``encodings.idna`` Compatibility ++++++++++++++++++++++++++++++++ Function calls from the Python built-in ``encodings.idna`` module are mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. Simply substitute the ``import`` clause in your code to refer to the new module name. Exceptions ---------- All errors raised during the conversion following the specification should raise an exception derived from the ``idna.IDNAError`` base class. More specific exceptions that may be generated as ``idna.IDNABidiError`` when the error reflects an illegal combination of left-to-right and right-to-left characters in a label; ``idna.InvalidCodepoint`` when a specific codepoint is an illegal character in an IDN label (i.e. INVALID); and ``idna.InvalidCodepointContext`` when the codepoint is illegal based on its positional context (i.e. it is CONTEXTO or CONTEXTJ but the contextual requirements are not satisfied.) Testing ------- The library has a test suite based on each rule of the IDNA specification, as well as tests that are provided as part of the Unicode Technical Standard 46, `Unicode IDNA Compatibility Processing `_. The tests are run automatically on each commit at Travis CI: .. image:: https://travis-ci.org/kjd/idna.svg?branch=master :target: https://travis-ci.org/kjd/idna PKy]kk LICENSE.rstnu[License ------- Copyright (c) 2013-2017, Kim Davies. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: #. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. #. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. #. Neither the name of the copyright holder nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. #. THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Portions of the codec implementation and unit tests are derived from the Python standard library, which carries the `Python Software Foundation License `_: Copyright (c) 2001-2014 Python Software Foundation; All Rights Reserved Portions of the unit tests are derived from the Unicode standard, which is subject to the Unicode, Inc. License Agreement: Copyright (c) 1991-2014 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in . Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that (a) this copyright and permission notice appear with all copies of the Data Files or Software, (b) this copyright and permission notice appear in associated documentation, and (c) there is clear notice in each modified Data File or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified. THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. PKy]t HISTORY.rstnu[PKy]F  README.rstnu[PKy]kk $LICENSE.rstnu[PKy4