*λ
°δ:c       s     d  Z    d k T d k l Z  d k T d e f d     YZ + d f  d     YZ { d e f d     YZ	  d	   Z
 d
 S(   s  KeyWList.py

This module provides code to work with the keywlist.txt file from
SwissProt.
http://www.expasy.ch/sprot/sprot-top.html


Classes:
ListParser        Parses a keywlist.txt file into a list of keywords.

_Scanner          Scans the keywlist.txt file.
_ListConsumer     Consumes keywlist data to a list.


Functions:
extract_keywords  Return the keywords from a keywlist.txt file.

(   s   *(   s   Files
   ListParserc      s&    d  Z  ! " d   Z & d   Z RS(   s7   Parses keywlist.txt data into a list of keywords.

    c    s%   " # t    |  _ $ t   |  _ d  S(   N(   s   _Scanners   selfs   _scanners   _ListConsumers	   _consumer(   s   self(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   __init__" s   c    s-   & ' |  i i | |  i  ( |  i i Sd  S(   N(   s   selfs   _scanners   feeds   handles	   _consumers   keywords(   s   selfs   handle(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   parse& s   (   s   __doc__s   __init__s   parse(    (    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys
   ListParser s   	s   _Scannerc      s>   + d  Z  1 3 d   Z D d   Z ^ d   Z p d   Z RS(   sy   Scan the keywlist.txt file included with the SwissProt distribution.

    Tested with:
    Release 37
    Release 38
    c    sx   3 : ; t  | t i  o < | } n > t i |  } @ |  i | |  A |  i | |  B |  i	 | |  d S(   sώ   feed(self, handle, consumer)

        Feed in the keywlist.txt file for scanning.  handle is a file-like
        object that contains keyword information.  consumer is a
        Consumer object that will receive events as the report is scanned.

        N(
   s
   isinstances   handles   Files
   UndoHandles   uhandles   selfs   _scan_headers   consumers   _scan_keywordss   _scan_footer(   s   selfs   handles   consumers   uhandle(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   feed3 s   c    sΈ  D E | i   G t | | i d d H t | | i d d I t | | i d d J t | | i d d K t | | i d d L t | | i d d N t | | i d d O t | | i d d P t | | i d d Q t | | i d d S xL S d oA T t | | i d d o U Pn V t | | i d d	 qWX t | | i d d
 Y t | | i d d Z t | | i d d \ | i   d  S(   Ns   starts   ----s   blanki   s   containss
   SWISS-PROTs   Releases   List of keywordsi    s   Document name(   s   consumers   start_headers   read_and_calls   uhandles   noevents   attempt_read_and_calls
   end_header(   s   selfs   uhandles   consumer(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   _scan_headerD s(    
c    s­   ^ _ | i   f t | | i d d o g t | | i d d n i x4 i d o) j t | | i d d o k Pn qO Wl t | | i d d n | i   d  S(   Ns   starts   Keywords   ____i   s   blanki    (   s   consumers   start_keywordss   attempt_read_and_calls   uhandles   noevents   read_and_calls   keywords   end_keywords(   s   selfs   uhandles   consumer(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   _scan_keywords^ s    
c    s   p q | i   s t | | i d d t xL t d oA u t | | i d d o v Pn w t | | i d d q/ Wy | i   d  S(   Ns   starts   ----i   s   blanki    (   s   consumers   start_footers   read_and_calls   uhandles   noevents   attempt_read_and_calls	   copyrights
   end_footer(   s   selfs   uhandles   consumer(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   _scan_footerp s    
(   s   __doc__s   feeds   _scan_headers   _scan_keywordss   _scan_footer(    (    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   _Scanner+ s
   	s   _ListConsumerc      s2   { d  Z    d   Z  d   Z  d   Z RS(   sy   Consumer that converts a keywlist.txt file into a list of keywords.

    Members:
    keywords    List of keywords.

    c    s     t  |  _ d  S(   N(   s   Nones   selfs   keywords(   s   self(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   __init__ s   c    s     g  |  _ d  S(   N(   s   selfs   keywords(   s   self(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   start_keywords s   c    s#     |  i i t i |   d  S(   N(   s   selfs   keywordss   appends   strings   rstrips   line(   s   selfs   line(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   keyword s   (   s   __doc__s   __init__s   start_keywordss   keyword(    (    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   _ListConsumer{ s   	c    sV      t  |   t j	 o t  |   t j	 o  t d  n  t   i |   Sd S(   sn   extract_keywords(keywlist_handle) -> list of keywords

    Return the keywords from a keywlist.txt file.

    s,   I expected a file handle or file-like objectN(   s   types   keywlist_handles   FileTypes   InstanceTypes
   ValueErrors
   ListParsers   parse(   s   keywlist_handle(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   extract_keywords s   )N(   s   __doc__s   typess   Bios   Files   Bio.ParserSupports   AbstractParsers
   ListParsers   _Scanners   AbstractConsumers   _ListConsumers   extract_keywords(   s
   ListParsers   _ListConsumers   _Scanners   Files   extract_keywords(    (    s/   /mit/seven/lib/python/Bio/SwissProt/KeyWList.pys   ? s   

P