
N_c           @   s9  d  d l  Z  d  d l Z d  d l Td  d l m Z d  d l Z d  d l Z d  d l m Z d  d l	 m
 Z
 d  d l	 m Z d Z d   Z d	   Z d
 e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d   Z e d k r5e   n  d S(   iN(   t   *(   t   CompsException(   t
   to_unicode(   t   get_my_lang_code(   t   cElementTree_iterparses*   {http://www.w3.org/XML/1998/namespace}langc         C   s   t  j |  j   t  S(   N(   t   BOOLEAN_STATESt   gett   lowert   False(   t   strng(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   parse_boolean   s    c         C   s
   t  |   S(   N(   t   int(   R	   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   parse_number"   s    t   CompsObjc           B   sh   e  Z d  Z d   Z e d    Z e d    Z e d    Z d   Z d   Z	 d   Z
 d   Z RS(	   s    Group/Category helper object. c         C   s   |  j  S(   s3    Return the "name" of the object for the C locale. (   t   name(   t   self(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   __str__)   s    c         C   s1   x* d D]" } t  |  |  r t |  |  Sq Wd S(   s6    Return the "id": categoryid, groupid, environmentid. t
   categoryidt   groupidt   environmentid(   s
   categoryids   groupids   environmentidN(   t   hasattrt   getattrt   None(   R   t   idT(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   compsid-   s    c         C   s   |  j  t    S(   s9    Return the "name" of the object for the current locale. (   t
   nameByLangR   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   ui_name7   s    c         C   s   |  j  t    S(   s@    Return the "description" of the object for the current locale. (   t   descriptionByLangR   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   ui_description<   s    c         C   sO   | d  k r d S|  j | j k r& d S|  j | j k  r< d St |  j | j  S(   Ni   i(   R   t   display_ordert   cmpR   (   R   t   other(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   __cmp__A   s    c         C   s   d d  l  } | g } d | k r1 | j d  n  g  } xD | D]< } x3 | j |  D]" } | | k rT | j |  qT qT Wq> W| S(   Nit   C(   t   gettextt   appendt   _expand_lang(   R   t   langR"   t	   languagest   nelangst   nelang(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   _expand_languagesL   s    	c         C   sG   x7 |  j  |  D]& } | |  j k r t |  j |  Sq Wt |  j  S(   N(   R)   t   translated_nameR   R   (   R   R%   t   langcode(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR   [   s    c         C   sG   x7 |  j  |  D]& } | |  j k r t |  j |  Sq Wt |  j  S(   N(   R)   t   translated_descriptionR   t   description(   R   R%   R+   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR   c   s    (   t   __name__t
   __module__t   __doc__R   t   propertyR   R   R   R    R)   R   R   (    (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR   %   s   	
			t   Groupc           B   sS   e  Z d  Z d d  Z d   Z e e  Z d   Z d   Z	 d   Z
 d   Z RS(   s?    Group object parsed from group data in each repo. and merged. c         C   s   t  |  _ t |  _ t |  _ d |  _ d |  _ i  |  _ i  |  _ i  |  _	 i  |  _
 i  |  _ i  |  _ d  |  _ d  |  _ d |  _ t |  _ t |  _ t |  _ | r |  j |  n  d  S(   Nt    i   (   t   Truet   user_visibleR   t   defaultt   selectedR   R-   R*   R,   t   mandatory_packagest   optional_packagest   default_packagest   conditional_packagesR   t   langonlyR   R   t	   installedt   toremovet   _weakt   parse(   R   t   elem(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   __init__m   s&    																	c         C   s:   |  j  j   |  j j   |  j j   |  j j   } | S(   N(   R8   t   keysR9   R:   R;   (   R   t   lst(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   _packageiter   s    &c         C   s  x| D]} | j  d k rI | j } |  j d  k	 r= t  n  | |  _ q | j  d k r | j } | ry | j d  } n  | j j t  } | r | |  j	 | <q| |  _
 q | j  d k r| j } | r | j d  } n  | j j t  } | r| |  j | <q| r| |  _ qq | j  d k r>t | j  |  _ q | j  d k rbt | j  |  _ q | j  d k rt | j  |  _ q | j  d k r| j } |  j d  k	 rt  n  | |  _ q | j  d
 k r |  j |  q q Wd  S(   Nt   idR   t   utf8R-   t   uservisibleR   R6   R<   t	   lang_onlyt   packagelist(   s   langonlyRI   (   t   tagt   textR   R   R   t   encodet   attribR   t	   lang_attrR*   R   R,   R-   R
   R5   R   R   R6   R<   t   parse_package_list(   R   RA   t   childt   myidRL   R%   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR@      sH    						c         C   s   x | D] } | j  d k r | j j d  } | s= d } n  | d
 k rO q n  | j } | sd q n  | d k r d |  j | <q | d k r d |  j | <q | d k r d |  j | <q | d k r | j j d	  |  j | <q q q Wd  S(   Nt
   packagereqt   typeu	   mandatoryt	   mandatoryR6   t   optionalt   conditionali   t   requires(   RU   s   defaultRV   RW   (   RK   RN   R   RL   R8   R:   R9   R;   (   R   t   packagelist_elemRQ   t   genret   package(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRP      s$    		c         C   s]  x | j  D] } d |  j  | <q
 Wx | j D] } d |  j | <q+ Wx | j D] } d |  j | <qL Wx% | j D] } | j | |  j | <qm W|  j d k r | j d k r | j |  _ n  |  j d k r | j d k r | j |  _ n  x7 | j D], } | |  j k r | j | |  j | <q q Wx7 | j D], } | |  j k r)| j | |  j | <q)q)Wd S(   s'   Add another group object to this objecti   R3   N(   R8   R:   R9   R;   R   R-   R*   R,   (   R   t   objt   pkgR%   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   add   s$    c         C   s  d |  j  t |  j  j   t |  j  j   |  j f } |  j rW | d |  j 7} n  | d |  j 7} x7 t |  j	 j
    D]  \ } } | d | | f 7} q~ W| d |  j 7} x7 t |  j j
    D]  \ } } | d | | f 7} q W| d 7} x% t |  j  D] } | d | 7} qWx% t |  j  D] } | d	 | 7} q/Wx% t |  j  D] } | d
 | 7} qWWx7 t |  j j
    D]  \ } } | d | | f 7} qW| d 7} | d 7} | S(   s,   write out an xml stanza for the group objects           
  <group>
   <id>%s</id>
   <default>%s</default>
   <uservisible>%s</uservisible>
   <display_order>%s</display_order>
s      <langonly>%s</langonly>s      <name>%s</name>
s!      <name xml:lang="%s">%s</name>
s!      <description>%s</description>
s/      <description xml:lang="%s">%s</description>
s       <packagelist>
s3         <packagereq type="mandatory">%s</packagereq>
s1         <packagereq type="default">%s</packagereq>
s2         <packagereq type="optional">%s</packagereq>
sC         <packagereq type="conditional" requires="%s">%s</packagereq>
s       </packagelist>
s
     </group>(   R   t   strR6   R   R5   R   R<   R   t   sortedR*   t   itemsR-   R,   R8   R:   R9   R;   (   R   t   msgR%   t   valR]   t   req(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   xml   s,    	""
"

N(   R.   R/   R0   R   RB   RE   R1   t   packagesR@   RP   R^   Re   (    (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR2   j   s   			3		"t   Environmentc           B   s   e  Z d  Z d d  Z d   Z e e  Z d   Z e e  Z	 d   Z
 e e
  Z d   Z e e  Z d   Z d   Z d   Z d	   Z d
   Z RS(   sD    Environment object parsed from group data in each repo, and merged c         C   s   d |  _  d  |  _ d |  _ i  |  _ i  |  _ d |  _ d  |  _ t |  _	 i  |  _
 i  |  _ i  |  _ t |  _ | r |  j |  n  d  S(   NR3   i   (   R   R   R   R-   R*   R,   R   R<   R   R=   t   _groupst   _optionst   _defaultoptionsR?   R@   (   R   RA   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRB   %  s    												c         C   s    |  j  j   |  j j   } | S(   N(   Rh   RC   Ri   (   R   RD   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   _allgroupiter7  s    c         C   s   |  j  j   S(   N(   Rh   RC   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt
   _groupiter>  s    c         C   s   |  j  j   S(   N(   Ri   RC   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   _optioniterC  s    c         C   s   |  j  j   S(   N(   Rj   RC   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   _defaultoptioniterH  s    c         C   s{  xt| D]l} | j  d k rI | j } |  j d  k	 r= t  n  | |  _ q | j  d k r | j } | ry | j d  } n  | j j t  } | r | |  j	 | <qs| |  _
 q | j  d k r| j } | r | j d  } n  | j j t  } | r| |  j | <qs| |  _ q | j  d k r0|  j |  q | j  d k rO|  j |  q | j  d k r t | j  |  _ q q Wd  S(   NRF   R   RG   R-   t	   grouplistt
   optionlistR   (   RK   RL   R   R   R   RM   RN   R   RO   R*   R   R,   R-   t   parse_group_listt   parse_option_listR   R   (   R   RA   RQ   RR   RL   R%   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR@   M  s8    				c         C   s=   x6 | D]. } | j  d k r | j } d |  j | <q q Wd  S(   NR   i   (   RK   RL   Rh   (   R   t   grouplist_elemRQ   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRq   t  s    	c         C   s   xy | D]q } | j  d k r | j } d |  j | <| j j d  } | rY t |  } n t } | rx d |  j | <qx q q Wd  S(   NR   i   R6   (   RK   RL   Ri   RN   R   R
   R   Rj   (   R   t   optionlist_elemRQ   t   optionidt   defoptR6   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRr   z  s    	c         C   s   x | j  D] } d |  j | <q
 Wx | j D] } d |  j | <q+ Wx | j D] } d |  j | <qL Wx7 | j D], } | |  j k rm | j | |  j | <qm qm Wx7 | j D], } | |  j k r | j | |  j | <q q Wd S(   s-   Add another environment object to this objecti   N(   t   groupsRh   t   defaultoptionsRj   t   optionsRi   R*   R,   (   R   R\   t   grpR%   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR^     s    c         C   s:  d |  j  |  j f } | d |  j 7} x1 |  j j   D]  \ } } | d | | f 7} q7 W| d |  j 7} x1 |  j j   D]  \ } } | d | | f 7} q| W| d 7} x |  j D] } | d | 7} q W| d 7} | d	 7} x? |  j D]4 } | |  j	 k r| d
 | 7} q | d | 7} q W| d 7} | d 7} | S(   s2   write out an xml stanza for the environment objectsE   
  <environment>
   <id>%s</id>
   <display_order>%s</display_order>
s      <name>%s</name>
s!      <name xml:lang="%s">%s</name>
s!      <description>%s</description>
s0       <description xml:lang="%s">%s</description>
s       <grouplist>
s        <groupid>%s</groupid>
s       </grouplist>
s       <optionlist>
s*        <groupid default="true">%s</groupid>
s       </optionlist>
s     </environment>
(
   R   R   R   R*   Ra   R-   R,   Rw   Ry   Rx   (   R   Rb   R%   Rc   Rz   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRe     s&    




N(   R.   R/   R0   R   RB   Rk   R1   t	   allgroupsRl   Rw   Rm   Ry   Rn   Rx   R@   Rq   Rr   R^   Re   (    (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRg   "  s   					'			t   Categoryc           B   sS   e  Z d  Z d d  Z d   Z e e  Z d   Z d   Z	 d   Z
 d   Z RS(   sB    Category object parsed from group data in each repo. and merged. c         C   sY   d |  _  d  |  _ d |  _ i  |  _ i  |  _ d |  _ i  |  _ | rU |  j |  n  d  S(   NR3   i   (	   R   R   R   R-   R*   R,   R   Rh   R@   (   R   RA   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRB     s    							c         C   s   |  j  j   S(   N(   Rh   RC   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRl     s    c         C   s\  xU| D]M} | j  d k rI | j } |  j d  k	 r= t  n  | |  _ q | j  d k r | j } | ry | j d  } n  | j j t  } | r | |  j	 | <qT| |  _
 q | j  d k r| j } | r | j d  } n  | j j t  } | r| |  j | <qT| |  _ q | j  d k r0|  j |  q | j  d k r t | j  |  _ q q Wd  S(   NRF   R   RG   R-   Ro   R   (   RK   RL   R   R   R   RM   RN   R   RO   R*   R   R,   R-   Rq   R   R   (   R   RA   RQ   RR   RL   R%   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR@     s4    				c         C   s=   x6 | D]. } | j  d k r | j } d |  j | <q q Wd  S(   NR   i   (   RK   RL   Rh   (   R   Rs   RQ   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRq     s    	c         C   s   x | j  D] } d |  j | <q
 Wx7 | j D], } | |  j k r+ | j | |  j | <q+ q+ Wx7 | j D], } | |  j k re | j | |  j | <qe qe Wd S(   s*   Add another category object to this objecti   N(   Rw   Rh   R*   R,   (   R   R\   Rz   R%   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR^     s    c         C   s   d |  j  |  j f } | d |  j 7} x1 |  j j   D]  \ } } | d | | f 7} q7 W| d |  j 7} x1 |  j j   D]  \ } } | d | | f 7} q| W| d 7} x |  j D] } | d | 7} q W| d 7} | d	 7} | S(
   s/   write out an xml stanza for the category objectsJ           
  <category>
   <id>%s</id>
   <display_order>%s</display_order>
s      <name>%s</name>
s!      <name xml:lang="%s">%s</name>
s!      <description>%s</description>
s0       <description xml:lang="%s">%s</description>
s       <grouplist>
s        <groupid>%s</groupid>
s       </grouplist>
s     </category>
(   R   R   R   R*   Ra   R-   R,   Rw   (   R   Rb   R%   Rc   Rz   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRe     s    


N(   R.   R/   R0   R   RB   Rl   R1   Rw   R@   Rq   R^   Re   (    (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR|     s   		$		t	   Langpacksc           B   sJ   e  Z d d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C   s2   g  |  _  d |  _ | d  k	 r. |  j |  n  d  S(   NR3   (   t	   langpacksR   R   R@   (   R   RA   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRB     s    		c         C   s   |  j  | S(   N(   R~   (   R   t   indx(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   __getitem__%  s    c         c   s   x |  j  D] } | Vq
 Wd  S(   N(   R~   (   R   t   i(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   __iter__(  s    c         C   s   t  |  j  S(   N(   t   lenR~   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   __len__,  s    c         C   s(   i | d 6| d 6} |  j  j |  d  S(   NR   t   install(   R~   R#   (   R   R   R   t   langpack(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR^   /  s    
c         C   s   xo | D]g } | j  d k r[ i | j j d  d 6| j j d  d 6} |  j j |  q t d | j    q W| j j d  |  _ | j j d  |  _ d  S(   Nt   matchR   R   s%   Unexpected element in <langpacks>: %s(   RK   RN   R   R~   R#   R   R   R   (   R   RA   RQ   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR@   6  s    c         C   sN   |  j  s d Sd } x* |  D]" } | d | d | d f 7} q W| d 7} | S(   s0   write out an xml stanza for the Langpacks objectR3   s     <langpacks>
s$       <match name="%s" install="%s"/>
R   R   s     </langpacks>
(   R~   (   R   Rb   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRe   D  s    	 
N(
   R.   R/   R   RB   R   R   R   R^   R@   Re   (    (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR}     s   					t   Compsc           B   s   e  Z e d   Z d   Z d   Z d   Z d   Z e e  Z	 e e  Z
 e e  Z e e  Z d   Z d   Z e d  Z d   Z d	   Z e d
  Z e d  Z d   Z d   Z d   Z d   Z d d  Z d   Z d   Z RS(   c         C   sF   i  |  _  i  |  _ i  |  _ t   |  _ d |  _ | |  _ t |  _ d  S(   Ni    (	   Rh   t   _environmentst   _categoriesR}   t
   _langpackst
   compscountt   overwrite_groupsR   t   compiled(   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRB   O  s    					c         C   s&   |  j  j   } | j d d    | S(   Nt   keyc         S   s   |  j  |  j f S(   N(   R   R   (   t   x(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   <lambda>\  s    (   Rh   t   valuest   sort(   R   t   grps(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt
   get_groupsZ  s    c         C   s&   |  j  j   } | j d d    | S(   NR   c         S   s   |  j  |  j f S(   N(   R   R   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR   a  s    (   R   R   R   (   R   t   environments(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   get_environments_  s    c         C   s&   |  j  j   } | j d d    | S(   NR   c         S   s   |  j  |  j f S(   N(   R   R   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR   f  s    (   R   R   R   (   R   t   cats(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   get_categoriesd  s    c         C   s   |  j  S(   N(   R   (   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   get_langpacksi  s    c         C   s   |  j  |  } | r t St S(   N(   t   return_groupsR4   R   (   R   t   grpidt   exists(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt	   has_groupq  s    c         C   s!   |  j  |  } | r | d Sd S(   s$   Return the first group which matchesi    N(   R   R   (   R   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   return_groupy  s    c   
      C   sn  i  } | s g  SxQ| j  d  D]@} | j   } | |  j k ra |  j | } | | | j <q  n  | r t j t j |   j } n$ t j t j |  d t j	 j } t
 } xW |  j D]L } xC | j | j | j f D]) }	 | |	  r t } | | | j <Pq q Wq W| rq  n  xH |  j D]= } x4 | j j   D]# }	 | |	  r5| | | j <Pq5q5WqWq  W| j   S(   s;   return all groups which match either by glob or exact matcht   ,t   flags(   t   splitt   stripRh   R   t   ret   compilet   fnmatcht	   translateR   t   IR   Rw   R   R   R4   R*   R   (
   R   t   group_patternt   case_sensitivet   returnst   itemt	   thisgroupR   t   donet   groupR   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR     s6    $c         C   s   |  j  |  } | r t St S(   N(   t   return_environmentsR4   R   (   R   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   has_environment  s    c         C   s!   |  j  |  } | r | d Sd S(   s$   Return the first group which matchesi    N(   R   R   (   R   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   return_environment  s    c   	      C   sn  i  } | s g  SxQ| j  d  D]@} | j   } | |  j k ra |  j | } | | | j <q  n  | r t j t j |   j } n$ t j t j |  d t j	 j } t
 } xW |  j D]L } xC | j | j | j f D]) } | |  r t } | | | j <Pq q Wq W| rq  n  xH |  j D]= } x4 | j j   D]# } | |  r5| | | j <Pq5q5WqWq  W| j   S(   sA   return all environments which match either by glob or exact matchR   R   (   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R4   R*   R   (	   R   t   env_patternR   R   R   t   envR   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR     s6    $c   	      C   sd  i  } xQ| j  d  D]@} | j   } | |  j k rW |  j | } | | | j <q n  | s{ t j t j |   j } n$ t j t j |  d t j	 j } t
 } xW |  j D]L } xC | j | j | j f D]) } | |  r t } | | | j <Pq q Wq W| rq n  xH |  j D]= } x4 | j j   D]# } | |  r+| | | j <Pq+q+WqWq W| j   S(   s?   return all categories which match either by glob or exact matchR   R   (   R   R   R   R   R   R   R   R   R   R   R   t
   categoriesR   R   R4   R*   R   (	   R   t   patternt   ignore_caseR   R   t   catR   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   return_categories  s2    $c         C   sr   | j  |  j k r^ |  j | j  } | j rN | } | } | } |  j | j  <n  | j |  n | |  j | j  <d  S(   N(   R   Rh   R?   R^   (   R   R   t	   thatgroupt   tmp(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt	   add_group  s    	c         C   sr   | j  |  j k r^ |  j | j  } | j rN | } | } | } |  j | j  <n  | j |  n | |  j | j  <d  S(   N(   R   R   R?   R^   (   R   t   environmentR   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   add_environment  s    	c         C   sF   | j  |  j k r2 |  j | j  } | j |  n | |  j | j  <d  S(   N(   R   R   R^   (   R   t   categoryt   thatcat(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   add_category  s    c         C   s   |  j  j | |  d  S(   N(   R   R^   (   R   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   add_langpack   s    c   
      C   sz  | s t   n  t |  t j k rl y t | d  } Wqr t k
 rh } t  d | | j | j f  qr Xn | } |  j d 7_ t	 |  _
 t |  } y x | D] \ } } | j d k r t |  } |  j |  n  | j d k rt |  } |  j |  n  | j d k r-t |  }	 |  j |	  n  | j d k r |  j j |  q q WWn t k
 rr} t  d  n X~ d  S(	   Nt   rts   open(%s): #%u %si   R   R   R   R~   s   comps file is empty/damaged(   R   RT   t   typest   StringTypest   opent   IOErrort   errnot   strerrorR   R   R   t	   iterparseRK   R2   R   Rg   R   R|   R   R   R@   t   SyntaxError(
   R   t   srcfilet   infilet   et   parsert   eventRA   R   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR^   #  s6    	#	c         C   s  i  } x' | D] \ } } } } } d | | <q Wx |  j  D] } t | j  d k r t | _ x | j D] }	 |	 | k rh t | _ Pqh qh Wq: | j j   | j j   | j	 j   }
 t | _ x' |
 D] }	 |	 | k r t | _ Pq q Wq: Wi  } x! |  j  D] } | j | | j
 <q Wx |  j D] } | j  rmt | _ xf | j  D]" } | j |  sDt | _ PqDqDWq"t | _ x* | j D] } | | k rt | _ PqqWq"Wt |  _ d S(   s4    compile the groups into installed/available groups i   i    N(   Rw   R   R8   R4   R=   R   R9   RC   R:   R;   R   R   R   Ry   R   (   R   t
   pkgtuplistt   inst_pkg_namest   nt   aR   t   vt   rR   t   pkgnamet
   check_pkgst   inst_grp_namest   evgroupt   grpname(    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR   G  s@    		)							c         C   s   |  j  r2 |  j r2 |  j r2 t |  j  r2 d Sd } x$ |  j   D] } | | j   7} qE Wx$ |  j   D] } | | j   7} ql Wx$ |  j   D] } | | j   7} q W| |  j	   j   7} | d 7} | S(   s8   returns the xml of the comps files in this class, mergedR3   sz   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
<comps>
s
   
</comps>
(
   Rh   R   R   R   R   R   Re   R   R   R   (   R   Rb   t   gt   cR   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyRe   y  s    
N(   R.   R/   R   RB   R   R   R   R   R1   Rw   R   R   R~   R   R   R   R   R   R   R4   R   R   R   R   R   R   R^   R   Re   (    (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyR   N  s.   						&		("				$	2c          C   s  ymt  j d GHt   }  x" t  j d D] } |  j |  q& WHd GHx@ |  j D]5 } d | | j f GHx | j D] } d | GHqo WqM WHd GHx` |  j D]U } d | j | j	 f GHx | j D] } d | GHq Wx | j
 D] } d | GHq Wq WHd GHxC |  j D]8 } d | j | j f GHx | j D] } d | GHq$Wq WHd GHx( |  j D] } d	 | d
 | d f GHqKWWn6 t k
 rt  j d t  j d IJt  j d  n Xd  S(   Ni   s   ===== GROUPS =====s   %s (id: %s)s     s   ===== ENVIRONMENTS =====s     *s   ===== CATEGORIES =====s   ===== LANGPACKS =====s	     %s (%s)R   R   s   newcomps.py: No such file:'%s'(   t   syst   argvR   R^   Rw   R   Rf   R   R   R   Ry   R   R   R~   R   t   stderrt   exit(   t   pR   R   R]   R   R   R   (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   main  s@    	t   __main__(   R   R   t   yum.constantst
   yum.ErrorsR   R   R   t   yum.i18nR   t   yum.miscR   R   R   RO   R
   R   t   objectR   R2   Rg   R|   R}   R   R   R.   (    (    (    s-   /usr/lib/python2.7/site-packages/yum/comps.pyt   <module>   s*   
		Ed0 E	(