ó
è¾bc           @   sŽ   d  Z  d d l Z d d l m Z d d l Z i  Z d Z d g Z d Z e j Z	 d e
 e f d „  ƒ  YZ d	 „  Z d
 „  Z e j e ƒ d S(   s,   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 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.

iÿÿÿÿN(   t   aliasess   --unknown--t   *s                                                 . 0123456789       ABCDEFGHIJKLMNOPQRSTUVWXYZ      abcdefghijklmnopqrstuvwxyz                                                                                                                                     t   CodecRegistryErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s(   /usr/lib/python2.7/encodings/__init__.pyR   .   s   c         C   sL   t  t d ƒ r0 t |  t ƒ r0 |  j d ƒ }  n  d j |  j t ƒ j ƒ  ƒ S(   s´   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.

    t   unicodes   latin-1t   _(	   t   hasattrt   __builtin__t
   isinstanceR   t   encodet   joint	   translatet   _norm_encoding_mapt   split(   t   encoding(    (    s(   /usr/lib/python2.7/encodings/__init__.pyt   normalize_encoding1   s    c   
      C   s8  t  j |  t ƒ } | t k	 r" | St |  ƒ } t j | ƒ pU t j | j d d ƒ ƒ } | d  k	 rs | | g } n	 | g } xb | D]T } | sƒ d | k r¢ qƒ n  y  t d | d t d d ƒ} Wn t	 k
 rÕ qƒ XPqƒ Wd  } y | j
 } Wn t k
 rd  } n X| d  k r"d  t  |  <d  S| ƒ  } t | t j ƒ sÜd t | ƒ k oZd k n s{t d	 | j | j f ‚ n  t | d d
 ƒ sWt | d d
 ƒ sW| d d  k	 rÇt | d d
 ƒ sW| d d  k	 rët | d d
 ƒ sWt | ƒ d k r!| d d  k	 r!t | d d
 ƒ sWt | ƒ d k rs| d d  k	 rst | d d
 ƒ rs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	n+ Xx' | D] }	 |	 t k r| t |	 <qqW| S(   Nt   .R   s
   encodings.t   fromlistt   leveli    i   i   s#   module "%s" (%s) failed to registert   __call__i   i   i   i   s'   incompatible codecs in module "%s" (%s)i   (   N(   t   _cachet   gett   _unknownR   t   _aliasest   replacet   Nonet
   __import__t   _import_tailt   ImportErrort   getregentryt   AttributeErrorR	   t   codecst	   CodecInfot   lenR   R   t   __file__R   R   t
   getaliases(
   R   t   entryt   norm_encodingt   aliased_encodingt   modnamest   modnamet   modR   t   codecaliasest   alias(    (    s(   /usr/lib/python2.7/encodings/__init__.pyt   search_functionG   sl    		

	"$$66"5
(   t   __doc__R    t	   encodingsR    R   R   R   R   R   R   t   LookupErrort   SystemErrorR   R   R-   t   register(    (    (    s(   /usr/lib/python2.7/encodings/__init__.pyt   <module>   s   				V