î
\á[\Ë  ã               @   s‚   d  Z  d d l Z d d l m Z i  Z d Z d g Z e j Z Gd d „  d e e	 ƒ Z
 d	 d
 „  Z d d „  Z e j e ƒ d S)a3   Standard "encodings" Package

    Standard Python encoding modules are stored in this package
    directory.

    Codec modules must have names corresponding to normalized encoding
    names as defined in the normalize_encoding() function below, e.g.
    'utf-8' must be implemented by the module 'utf_8.py'.

    Each codec module must export the following interface:

    * getregentry() -> codecs.CodecInfo object
    The getregentry() API must return a CodecInfo object with encoder, decoder,
    incrementalencoder, incrementaldecoder, streamwriter and streamreader
    atttributes which adhere to the Python Codec Interface Standard.

    In addition, a module may optionally also define the following
    APIs which are then used by the package's codec search function:

    * getaliases() -> sequence of encoding name strings to use as aliases

    Alias names returned by getaliases() must be normalized encoding
    names as defined by normalize_encoding().

Written by Marc-Andre Lemburg (mal@lemburg.com).

(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.

é    Né   )Úaliasesz--unknown--Ú*c               @   s   e  Z d  Z d S)ÚCodecRegistryErrorN)Ú__name__Ú
__module__Ú__qualname__© r	   r	   ú(/usr/lib/python3.4/encodings/__init__.pyr   '   s   r   c             C   s›   t  |  t ƒ r! t |  d ƒ }  n  g  } d } x^ |  D]V } | j ƒ  sR | d k r„ | rn | rn | j d ƒ n  | j | ƒ d } q4 d } q4 Wd j | ƒ S)a´   Normalize an encoding name.

        Normalization works as follows: all non-alphanumeric
        characters except the dot used for Python package names are
        collapsed and replaced with a single underscore, e.g. '  -;#'
        becomes '_'. Leading and trailing underscores are removed.

        Note that encoding names should be ASCII only; if they do use
        non-ASCII characters, these must be Latin-1 compatible.

    ÚasciiFÚ.Ú_TÚ )Ú
isinstanceÚbytesÚstrÚisalnumÚappendÚjoin)ÚencodingÚcharsÚpunctÚcr	   r	   r
   Únormalize_encoding*   s    	
r   c       
      C   s/  t  j |  t ƒ } | t k	 r" | St |  ƒ } t j | ƒ pU t j | j d d ƒ ƒ } | d  k	 rs | | g } n	 | g } xc | D]U } | sƒ d | k r¢ qƒ n  y  t d | d t d d ƒ} Wn t k
 rÖ Yqƒ XPqƒ Wd  } y | j	 } Wn t
 k
 r	d  } Yn X| d  k r$d  t  |  <d  S| ƒ  } t | t j ƒ sÒd t | ƒ k o\d k n s€t d	 | j | j f ƒ ‚ n  t | d ƒ sJt | d
 ƒ sJ| d d  k	 rÃt | d ƒ sJ| d d  k	 rät | d ƒ sJt | ƒ d k r| d d  k	 rt | d ƒ sJt | ƒ d k ri| d d  k	 rit | d ƒ rit d | j | j f ƒ ‚ n  t | ƒ d k  s‹| d d  k rÀ| d d t | ƒ | j j d d
 ƒ d
 f 7} n  t j | Œ  } n  | t  |  <y | j ƒ  } Wn t
 k
 r Yn+ Xx' | D] }	 |	 t k r| t |	 <qqW| S)Nr   r   z
encodings.ÚfromlistÚlevelr   é   é   z#module "%s" (%s) failed to registerr   é   é   é   z'incompatible codecs in module "%s" (%s)é   )N)Ú_cacheÚgetÚ_unknownr   Ú_aliasesÚreplaceÚ
__import__Ú_import_tailÚImportErrorÚgetregentryÚAttributeErrorr   ÚcodecsÚ	CodecInfoÚlenr   r   Ú__file__ÚcallableÚsplitÚ
getaliases)
r   ÚentryÚnorm_encodingÚaliased_encodingÚmodnamesÚmodnameÚmodr*   ÚcodecaliasesÚaliasr	   r	   r
   Úsearch_functionE   sf    		
	""!!33"5
r;   )Ú__doc__r,   r   r   r"   r$   r(   r%   ÚLookupErrorÚSystemErrorr   r   r;   Úregisterr	   r	   r	   r
   Ú<module>   s   		S