Ñò
mÈKc           @   sŽ   d  Z  d d k Z d d k l Z d d k Z h  Z d Z d g Z d Z e i Z	 d e
 e f d „  ƒ  YZ d	 „  Z d
 „  Z e i 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.6/encodings/__init__.pyR   .   s   c         C   sO   t  t d ƒ o# t |  t ƒ o |  i d ƒ }  n d i |  i t ƒ i ƒ  ƒ 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.6/encodings/__init__.pyt   normalize_encoding1   s     c   
      C   sP  t  i |  t ƒ } | t j	 o | St |  ƒ } t i | ƒ p t i | i d d ƒ ƒ } | d  j	 o | | g } n
 | g } xg | D]Y } | p d | j o qˆ n y  t d | d t d d ƒ} Wn t	 j
 o qˆ XPqˆ Wd  } y | i
 } Wn t j
 o d  } n X| d  j o d  t  |  <d  S| ƒ  } t | t i ƒ p¡d t | ƒ j o
 d j n p t d	 | i | i f ‚ n t | d ƒ pÄ t | d
 ƒ p² | d d  j	 o t | d ƒ p | d d  j	 o t | d ƒ pl t | ƒ d j o# | d d  j	 o t | d ƒ p6 t | ƒ d j o@ | d d  j	 o/ t | d ƒ o t d | i | i f ‚ n t | ƒ d j  p | d d  j o6 | d d t | ƒ | i i d d
 ƒ d
 f 7} n t i | Œ  } n | t  |  <y | i ƒ  } Wn t j
 o n1 Xx, | D]$ }	 t i |	 ƒ p | t |	 <q$q$W| S(   Nt   .R   s
   encodings.t   fromlistt   leveli    i   i   s#   module "%s" (%s) failed to registeri   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__t   callableR   t
   getaliasest   has_key(
   R   t   entryt   norm_encodingt   aliased_encodingt   modnamest   modnamet   modR   t   codecaliasest   alias(    (    s(   /usr/lib/python2.6/encodings/__init__.pyt   search_functionG   sp    		 
	$##66$6
 (   t   __doc__R   t	   encodingsR    R   R   R   R   R   R   t   LookupErrort   SystemErrorR   R   R.   t   register(    (    (    s(   /usr/lib/python2.6/encodings/__init__.pyt   <module>   s   				V