
    [              	       d   d dl mZ d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ d dlmZ d dlZd dlZe
rd dlmZ  ed          Z	 d dlmZ eZn	#  dZY nxY w	 d dlmZ eZn	#  dZY nxY wd  ed          D             \  ZZZZdZdZdZ dZ!dZ" ej#                    Z$ e%            Z&i Z'i Z(i Z)i Z*i Z+e"dddZ,d Z-d Z.d Z/ e0e1e2          r
e2Z3e2j4        Z5n G d d          Z3d  Z5 G d! d"          Z6 G d# d$e6          Z7 G d% d&e          Z8 G d' d(e          Z9 G d) d*e2          Z: e6d+e2d ,          d fd-Z;d. Z< G d/ d0e2          Z= G d1 d2e3          Z> G d3 d4e?          Z@ G d5 d6eA          ZB G d7 d8e2          ZC G d9 d:eC          ZD G d; d<eD          ZEd= ZFd> ZGd? ZHd@ ZIdA ZJdB ZKdC ZLdD ZMdE ZNdF ZOdG ZPdH ZQdI ZRdJ ZSdK ZTdL ZUdM ZVdN ZW G dO dPeX          ZYdQ ZZdR Z[dS Z\dT Z]dU Z^dV Z_dW Z`dX ZadY ZbdZ Zcd[ Zdd\ Zed] Zfd^ Zgd_ Zhd` Zida Zj G db dc          Zk e6            Zli Zmi Zni Zoee"p                    dd          de         iZqi Zr ek            Zs ek            Zt ek            Zu ek            Zv ek            Zw ek            Zxd dflymzZzm{Z{  e|e}e          s edge~fdhddii          Z} edje~fi           Z edke~fi           Z edlefi           Ze
r edme~fi           Z edne?fi           Z edoe	fi           Z edpefi           Z e%            Zi e dqfee drfe2e dsfe}e djfee dkfee dtfe~e dmfee dufee dlfee dvfe?e dwfee dxfee dyfee d&fe8e"dzfee"d{feDe"dpfeZ eje          Z eAe                                          D ]\  \  ZZZeeurt eelej        e           e                    e            eQe          Z eel e^ej                  d6z   e           d| e^e          z   Ze"Z eVeee           eefee<   [[e dvfee<   e"d}fe eQe          <    e%            Zi Z eLe=j        e=j        de=j        g g             eRe=            eele=j        e=            eIe>j        e>j        de>j        g             eRe>            eele>j        e>           i dq eWe dq          dr eWe dr          dv eWe dv          dg eWe ds          ds eWe ds          dj eWe dj          dk eWe dk          dt eWe dt          dm eWe dm          du eWe du          dl eWe dl          d& eWe d&          d~ eWe dw          d eWe dx          d eWe dy          d eWe"dz          d eWe"d{           eWe"d2           eWe"d0           eWe"dp          dZi Ze                                                                D ]V\  ZZeeurC	 ejB        Zn0# e$ r(  e]e          Ze"Z eWed| e^e          z             ZY nw xY wedz   Zeee<   eee<   eee<   W[[d Zd Zd Zd Zd Zd Z G d de          Zd Zd Zd Z ej                    ad Zd Z G d d          Zd Zd ZdS )    )absolute_import)with_statement)	iteritems)iterkeys)
itervalues)	text_type)string_types)binary_type)PY3)datetime)Iso8601N)
cmp_to_key)allowGetSetT)allowCapitalizedNamesc                     g | ]}d |z  S     ).0xs     6/usr/lib/python3/dist-packages/pyVmomi/VmomiSupport.py
<listcomp>r   2   s    '''q!t'''       zvmodl.version.version0vmodl.version.version1z http://www.w3.org/2001/XMLSchemaz)http://www.w3.org/2001/XMLSchema-instancez	urn:vim25zurn:smszurn:pbm)vimsmspbmc                    | d         }t                               |           | dd         D ]S}t                              |t	                                                    |           d                    ||g          }TdS )% Note: Must be holding the _lazyLock r   r   N.)_topLevelNamesadd_dependencyMap
setdefaultsetjoin)namescurNamenames      r   _AddToDependencyMapr+   X   s    1X7gQRRy * *t//33D999'4))gg* *r   c                    t           r_t                              |           }|s)t          |           }t                              |          }|r||v st	          |          |v rdS n"t                              |           }|r||v rdS dS )r    TF)_allowCapitalizedNamesr$   getUncapitalizeVmodlNameUncapitalize)parentr*   
dependentsuncapitalizedParents       r   _CheckForDependencyr4   f   s      "%%f--j >4V<<	$(()<==	 J,t"4"4
"B"B4!%%f--j	 J4
%r   c                 ~   |                      d          }|r
| d d         } t          rt          |           } t          5  t          t
          ft          t          ft          t          ffD ]:\  }}|
                    |           }|r || }|r|j        p|c cd d d            S ;	 d d d            d S # 1 swxY w Y   d S )N[])endswithr-   r/   	_lazyLock_dataDefMapLoadDataType_managedDefMapLoadManagedType_enumDefMapLoadEnumTyper.   Array)r*   isArraydefMaploadFndictyps         r   _LoadVmodlTyperF      sA   ]]4  7 #2#Yd )"4((d 	 	)<8+_=(,79 0 0.&& zz$ 
0&#,C(sy/C//	 	 	 	 	 	 	 	

0 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AB2#B22B69B6c                       e Zd ZdS )BaseN__name__
__module____qualname__r   r   r   rH   rH                r   rH   c                     || j         |<   d S N)__dict__)objkeyvals      r   SetAttrrT      s    cl3r   c                       e Zd Zd ZdS )Objectc                 :    | j                             |           d S rO   )rP   update)selfkwargss     r   __init__zObject.__init__   s    
m6"""""r   NrJ   rK   rL   r[   r   r   r   rV   rV      s#        # # # # #r   rV   c                       e Zd Zd ZdS )
LazyObjectc                 h   t           5  | j                            |          }|r|cd d d            S |dk    s|dk    s|dk    rS|dz   }t          | |          }t	          |          }t          | ||           t          | |           |cd d d            S t          |          # 1 swxY w Y   d S )NtyperesultmethodResultName)r9   rP   r.   getattrGetVmodlTypesetattrdelattrAttributeError)rY   attrrQ   attrName	vmodlName	vmodlTypes         r   __getattr__zLazyObject.__getattr__   s-    ' '}  && 
	' ' ' ' ' ' ' ' FNNdh..$.2H2Hf}Hh//I$Y//ID$	***D(###' ' ' ' ' ' ' ' !&&&' ' ' ' ' ' ' ' ' 's   B'AB'B''B+.B+N)rJ   rK   rL   rm   r   r   r   r^   r^      s#        ' ' ' ' 'r   r^   c                       e Zd Zd ZdS )Linkc                     t          |t                    rt          j        | |          S t          |t                    r0|j        rt          j        | |j                  S t          d          t          )Nz&DataObject does not have a key to link)
isinstancer	   r   __new__
DataObjectrR   rh   
ValueError)clsrQ   s     r   rr   zLink.__new__   sm    	C	&	& !#s++	+c:&& G 
3$S#'222FGG	G	r   N)rJ   rK   rL   rr   r   r   r   ro   ro      s#            r   ro   c                        e Zd Z fdZ xZS )LazyTypec                 n   |                     d          r|d d         }n|}t          5  t                              | j        g           }||v r&t          | j        dz   |z             cd d d            S t          t          |                               |          cd d d            S # 1 swxY w Y   d S )Nr6   r7   r!   )	r8   r9   r$   r.   rJ   re   superrw   __getattribute__)rY   ri   
searchNamenestedClasses	__class__s       r   rm   zLazyType.__getattr__   s/   	t		 3B3i @ @'++DM2>>-'' 3t ;<<@ @ @ @ @ @ @ @
 4((99$??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   >B*6'B**B.1B.)rJ   rK   rL   rm   __classcell__)r}   s   @r   rw   rw      sA        @ @ @ @ @ @ @ @ @r   rw   c                        e Zd Zd Zd Zd ZdS )
LazyModulec                     || _         d S rO   r*   rY   r*   s     r   r[   zLazyModule.__init__   s     diiir   c                 B   |dk    rt           t          5  | j                            |          }|r|cd d d            S d                    | j        |g          }t          |          }|rt          |          }nxt          | j        |          rt          |          }nS| j        t          v r6	 t          t          | j                 |          }n##  t          |          xY wt          |          t          | ||           |cd d d            S # 1 swxY w Y   d S )N	__bases__r!   )rh   r9   rP   r.   r'   r*   _GetActualNamere   r4   r   _urnMapGetWsdlTyperf   )rY   ri   rQ   r*   
actualNametypeObjs         r   rm   zLazyModule.__getattr__   s    
			   }  && 
        $)T*++$T** 
*":..GG"49d33 *#D))wwg%%-'	(:DAA''-&t,,,#D)))	tW	%	%	%/                 s0   D A0D1 CDC##$DDDc                 v    t          | j                  }|r |j        di |S t          d| j        z            )Nz'%s' does not existr   )rF   r*   __call__rh   )rY   rZ   rE   s      r   r   zLazyModule.__call__  sH    49%%c	 A&&v&&	&3di?@@	@r   N)rJ   rK   rL   r[   rm   r   r   r   r   r   r      sG            FA A A A Ar   r    r*   r`   flagsc           	      ^    dz  |j         r
d|j         z  pdz   } d k    rd}nt           t                    rv|j        t          z  rd j        j        d j        d}nEd j        j        d	d
                     fd 	                                D                       ddz  d}nt           t                    rC j        d j        j        d j        d}nd j        j        d j        d j        d}nt           t                    rt           dt          |j        dt                               } rMt#          d||j                  d|j        dd
                    fd D                       ddz  d}nd|j        z  }nt           t                    r j        }nt           t$                    r j         }nt           t&                    r! j        j        j        d j        j         }nt           t*                    r rdpd}nzt           t,                    rt/          j                   }nPt           t2                    r,t5          j                   }t8          rt;          |d          }nt=                     }||z   S )Nz   z%s = r   z<unset><:>(z) {
z,
c                 ^    g | ])}t          t          |j                  |d z             *S r   )FormatObjectrd   r*   )r   propindentrS   s     r   r   z FormatObject.<locals>.<listcomp>#  sE     < < <  %WS$)%<%<dF1HMM < < <r   
}'Itemr   z) [
c                 8    g | ]}t          |d z             S r   )r   )r   rQ   r   items     r   r   z FormatObject.<locals>.<listcomp>0  s)    IIIcS$q99IIIr   ]z(%s) []r!   truefalsezutf-8)r*   rq   rs   r   F_LINKr}   rJ   rR   r'   _GetPropertyListManagedObject_serverGuid_moIdlistrd   r`   objectrV   UncallableManagedMethodManagedMethodinfoboolr   r   ISO8601Formatbinarybase64	b64encoder   strrepr)rS   r   r   startra   itemTyper   s   ` `   @r   r   r     s   E>TY>7TY+>D"E5	Tkkff3
## *	f	 N N"}555swww?N (+}'='='=JJ < < < < <$'$8$8$:$:< < < = = = =>DunnnN 	3&& #		 	 "}555syyyA 
! #&-"8"8"8#///"%)))-3 fgdi&H&HIIh	 0BXTZ@@@'/'8'8'8JJIIIIISIIIJJJJUNNN h//3 |ff3/00 xff3&& (-000#(--@ff3 ~v(ff3!! $S))ff3 
$$f	 ' fg&&Cyyf
&.r   c                     	 || j         vr| j        d         } || j         v| j         |         S # t          $ r t          |          w xY w)Nr   )	_propInfor   	Exceptionrh   r`   r*   s     r   GetPropertyInfor   O  sg    !&&q! && t$	$
 ! ! !4   !s	   +. Ac                      e Zd Zd Zi Zg Zi ZeZddZ	d Z
 ee
          Z
d Z ee          Zd Zd Zd Zdd	Z ee          Zd
 Z ee          Zd Z ee          Zd ZeZedk    rd Zd Zd Zd ZexZZ ee          ZdS )r   Nc                     t                               | d|           t                               | d|           t                               | d|           d S )Nr   _stubr   )r   __setattr__)rY   moIdstub
serverGuids       r   r[   zManagedObject.__init__e  sP    w---w---}j99999r   c           	         t          |          t          | j                  k    rbdt          | j                  dk    z  }t          dt          | j                  t          | j                  |t          |          fz            t          |          d gt          | j                  t          |          z
  z  z   }t          |          dk    rd | j        D             }t          |                                          D ]\  }}	 |                    |          }	n5# t          $ r( t          t          | j                  d|d          w xY w|	t          |          k     r't          t          | j                  d|d          |||	<   t          t          t          | j        |                     |j                            || |          S )	Nsr   z+%s() takes at most %d argument%s (%d given)r   c                     g | ]	}|j         
S r   r   )r   params     r   r   z/ManagedObject._InvokeMethod.<locals>.<listcomp>v  s    ;;;euz;;;r   z'() got an unexpected keyword argument 'r   z-() got multiple values for keyword argument ')lenparams	TypeError
Capitalizer*   r   itemsindexrt   map
CheckFieldr   InvokeMethod)
r   rY   posargsrZ   r   args
paramNameskvidxs
             r   _InvokeMethodzManagedObject._InvokeMethodo  s   	WDK((	(	(#dk""A%&F	""S%5%5q#g,,GH I I 
I']]dVs4;'7'7#g,,'FGGd	Vq;;t{;;;FLLNN++ 	
 	
Va;%%a((ss ; ; ;)$)4444qqq : ; ; ;; S\\!!)$)4444qqq : ; ; ;DII
3z4;--...Z$$T4666s   D!!2Ec                 8    |j                             ||           S rO   )r   InvokeAccessor)r   rY   s     r   _InvokeAccessorzManagedObject._InvokeAccessor  s    Z&&tT222r   c                     | j         S rO   )r   rY   s    r   _GetMoIdzManagedObject._GetMoId  
    Zr   c                     | j         S rO   )r   r   s    r   _GetServerGuidzManagedObject._GetServerGuid  s    r   c                     | j         S rO   )r   r   s    r   _GetStubzManagedObject._GetStub  r   r   Tc                      |s j         S i g } t          k    r/ fd j         D             |z   } j        d           t          k    /|S )Nc                 R    g | ]#}                     |j                  k    !|$S r   r%   r*   r   r   ru   r   s     r   r   z2ManagedObject._GetPropertyList.<locals>.<listcomp>  =     > > >Doodi55<< <<<r   r   )	_propListr   r   ru   includeBaseClassPropsra   r   s   `  @r   r   zManagedObject._GetPropertyList  s    " 	df=  > > > > >CM > > >@FG}Q	 =  
 mr   c                      i g } t           k    rN fdt           j                                                  D             |z   } j        d           t           k    N|S )Nc                 R    g | ]#}                     |j                  k    !|$S r   r   )r   r   ru   meths     r   r   z0ManagedObject._GetMethodList.<locals>.<listcomp>  r   r   r   )r   r   _methodInfovaluesr   )ru   ra   r   s   ` @r   _GetMethodListzManagedObject._GetMethodList  s    df=  > > > > >D)?)?)A)A$B$B > > >@FG}Q	 =  
 mr   c                     t          | d          r;	 | j        |         S # t          $ r | j        d         } Y nw xY wt          | d          ;t	          |          )Nr   r   )hasattrr   KeyErrorr   rh   r   s     r   _GetMethodInfozManagedObject._GetMethodInfo  sv    D-(( %
%#D)) 
% 
% 
%>!$DDD
% D-(( %
 4   s    99c                 V    | j         t          d          t          j        | g|R   d S )Nz'Managed object attributes are read-only)r   r   r   r   )rY   r   s     r   r   zManagedObject.__setattr__  s8    		BCC	C		D	'$	'	'	'	'	'	'r   c                                           d          r fdS                      d          r fdS t                    )NGetc                  j    t           d                                          dd          z             S N   r   rd   lowerr*   rY   s   r   <lambda>z+ManagedObject.__getattr__.<locals>.<lambda>  *    GD$q'--//DH*DEE r   Setc                 l    t          d                                         dd          z   |           S r   rf   r   rS   r*   rY   s    r   r   z+ManagedObject.__getattr__.<locals>.<lambda>  ,    wtT!W]]__tABBx-GMM r   
startswithrh   r   s   ``r   rm   zManagedObject.__getattr__  `    OOE"" 
NEEEEEEooe$$ 
NMMMMMMd##	#r   c                 j    |dS | j         |j         k    o| j        |j        k    o| j        |j        k    S )NF)r   r}   r   rY   others     r   __eq__zManagedObject.__eq__  sA    	
ek) 6%/16 E$55
6r   c                     | |k     S rO   r   r  s     r   __ne__zManagedObject.__ne__  s    r   c                 D    t          |                                           S rO   )r   __hash__r   s    r   r  zManagedObject.__hash__  s    YY!!!r   NNT) rJ   rK   rL   	_wsdlNamer   r   r   BASE_VERSION_versionr[   r   staticmethodr   r   r   r   r   classmethodr   r   r   __delattr___allowGetSetrm   r  r
  r  r   __str____repr__r   _GetPropertyInfor   r   r   r   r   Y  s       999;8: : : :7 7 7(  <..=3 3 3!\/22?      
 
 
 
 "k"233
    K//>! ! !  K//>( ( (
 ;d$ $ $6 6 6     " " " %$7X!k/22r   r   c                   x    e Zd Zd Zi Zg ZeZd ZddZ	 e
e	          Z	d Zedk    rd Z e
e          ZexZZdS )rs   c                    |                                  D ]v}t          |j        t                    r)t	          | |j        |                                           F|j        t          z  rt	          | |j        d            l|j        t          u rt	          | |j        d           t          |j        t                    rt	          | |j        d            t          |j        t                    rt	          | |j        d           |j        t          u s4t          |j        t                    st          |j        t                    r+t	          | |j        |                    d                     `t	          | |j        d            xt          |                                          D ]\  }}t          | ||           d S )NFr   r   )r   
issubclassr`   r   rT   r*   r   
F_OPTIONALr   Enumr   longintfloatr   rf   )rY   rZ   r   r   r   s        r   r[   zDataObject.__init__  s   '')) + +$ty$'' 
+D$)TYY[[1111j:% 
+D$)T****i4D$)U++++D)) 

+D$)T****C(( 
+D$)R((((i4ty#&&  ty%((   D$)TYYq\\2222D$)T****((  &1a	q!				 r   Tc                      |s j         S i g } t          k    r/ fd j         D             |z   } j        d           t          k    /|S )Nc                 R    g | ]#}                     |j                  k    !|$S r   r   r   s     r   r   z/DataObject._GetPropertyList.<locals>.<listcomp>  r   r   r   )r   rs   r   r   s   `  @r   r   zDataObject._GetPropertyList  s    " 	df:> > > > >CM > > >@FG}Q	 :
 mr   c                 n    t          |                     |          |           t          | ||           d S rO   )r   r  rT   )rY   r*   rS   s      r   r   zDataObject.__setattr__  s8    &&t,,c222dD#r   c                                           d          r fdS                      d          r fdS t                    )Nr   c                  j    t           d                                          dd          z             S r   r   r   s   r   r   z(DataObject.__getattr__.<locals>.<lambda>  r   r   r   c                 l    t          d                                         dd          z   |           S r   r   r   s    r   r   z(DataObject.__getattr__.<locals>.<lambda>!  r  r   r  r   s   ``r   rm   zDataObject.__getattr__  r  r   Nr  )rJ   rK   rL   r  r   r   r  r  r[   r   r  r   r  rm   r   r  r   r  r  r   r   r   rs   rs     s        9998  2
 
 
 
 "k"233   d$ $ $ "k/22$$7XXXr   rs   c                       e Zd ZdS )r  NrI   r   r   r   r  r  (  rM   r   r  c                       e Zd ZexZZdS )r@   N)rJ   rK   rL   r   r  r  r   r   r   r@   r@   +  s        $$7XXXr   r@   c                        e Zd Zd Zd Zd ZdS )Curryc                 "    || _         || _        d S rO   fr   )rY   r-  r   s      r   r[   zCurry.__init__8  s    dfdiiir   c                 0    | j         |z   } | j        |i |S rO   )r   r-  rY   r   rZ   s      r   r   zCurry.__call__<  s%    YdTVT$V$$$r   c                      r fdS  S )Nc                  6     j         j        fz   | z   i |S rO   r,  )r   rZ   rQ   rY   s     r   r   zCurry.__get__.<locals>.<lambda>C  s*    !46DI$6$=I&II r   r   )rY   rQ   r`   s   `` r   __get__zCurry.__get__@  s6    	 JJ J J J J 
Jkr   N)rJ   rK   rL   r[   r   r2  r   r   r   r*  r*  2  sA          % % %    r   r*  c                       e Zd Zd ZdS )r   c                 `    t                               | t          j        |           || _        d S rO   )r*  r[   r   r   r   )rY   r   s     r   r[   zManagedMethod.__init__M  s&    nnT=6===diiir   Nr\   r   r   r   r   r   H  s#        
    r   r   c                       e Zd Zd Zd ZdS )r   c                     || _         d S rO   r   r   s     r   r[   z UncallableManagedMethod.__init__T  s    diiir   c                 P    t          d                    | j                            )Nz"Managed method {} is not available)r   formatr*   r/  s      r   r   z UncallableManagedMethod.__call__W  s!    :AA$)LLMMMr   N)rJ   rK   rL   r[   r   r   r   r   r   r   S  s7          N N N N Nr   r   c            
         t           5  ddt          t          gdddt          gdddt          gg} i }d | D             }d	||t          d
}|D ]}|||j        <   d}t	          dd	dt          |            t           t          t                    |t          t          d          t          f|                    cd d d            S # 1 swxY w Y   d S )Nmsgstring
faultCausevmodl.MethodFaultr   faultMessagezvmodl.LocalizableMessage[]c           	      d    g | ]-}t          |d          |d         |d         |d                   .S )r   r      r   r*   typeNameversionr   r^   r   ps     r   r   z0CreateAndLoadMethodFaultType.<locals>.<listcomp>f  sI     $ $ $ 1Q4!A$!AaDQQQ $ $ $r   MethodFaultr  r   r   r  zvmodl.DynamicDataDynamicData)
r9   r  r  r*   CreateDataType_AddTyper`   r   r   XMLNS_VMODL_BASE)propspropInfopropListrD   r   r*   s         r   CreateAndLoadMethodFaultTyperP  `  sO     xz:13KZX <>VXbcee h$ $!$ $ $h(#,@ @c $ $$#$)		 d(-9Ll\abbbod9ood"#3]CCYO                    s   B.CC
Cc           
          t           5  | j        }t                              |g           }|D ]6}t	          ||          r$t          | |t          |dz   |z                        7| cd d d            S # 1 swxY w Y   d S )Nr!   )r9   rJ   r$   r.   r   rf   re   )rE   r1   rk   r|   nestedClasss        r   _CheckNestedClassesrS  x  s      ,i$((B77m& S S+FK(( 
SCl9s?[3P&Q&QRRR                 s   AA22A69A6c                 N    t          | ||||           t          | ||||          S rO   )rJ  r;   )rk   wsdlNamer1   rC  rM  s        r   CreateAndLoadDataTyperV    s.    )Xvw>>>
y(FGU
C
CCr   c                 f   t           5  | ||||g}|                     d          }t          rd                    d |D                       } t	          |           t          |          }|t          | <   |t          ||f<   t          	                    |           d d d            d S # 1 swxY w Y   d S )Nr!   c              3   `   K   | ])}|d                                           |dd         z   V  *dS r   r   Nr   r   r*   s     r   	<genexpr>z!CreateDataType.<locals>.<genexpr>  ;      KKTd1gmmooQRR8KKKKKKr   )
r9   splitr-   r'   r+   GetWsdlNamespacer:   _wsdlDefMap_wsdlTypeMapNSsr#   )rk   rU  r1   rC  rM  rD   r(   typeNss           r   rJ  rJ    s     
" 
"&'59cooc""e	 LXXKKUKKKKK%   ((f"k)(+k68$%&!!!
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
" 
"s   BB&&B*-B*c                    t           5  |g }i }g }|D ]r}|d d         \  }}	}
}|t          z  r/|	                    d          rd}nd}t          |||
||	          }nt          ||	|
|          }|                    |           s||||d}|D ]}|||j        <   | }t          |          }t          t          ||f|                    }|dk    rWt                       t          d	d
dt          g            t          dddt          ddt          dfddt          t          fg           t          ||          cd d d            S # 1 swxY w Y   d S )Nr   r6   zLink[]ro   )r*   rB  rC  r   expectedTyperA  rH  rI  zvmodl.RuntimeFaultRuntimeFaultr=  zvmodl.LocalizedMethodFaultLocalizedMethodFaultfaultr   localizedMessager;  )r9   r   r8   r^   appendr*   re   rK  rw   rP  rV  r  r  rS  )rk   rU  r1   rC  rM  rN  rO  rF  r*   rB  propVersionr   linkTyperQ   rD   r   ra   s                    r   r;   r;     s    /1 /1 
hh  ! /0e	+xeFN 	
*  && !"xx x$;#(xA A ACC $;#(* * *C					#8#'; ;c $ $$#$)		dF##fy#6677f
 
]	"	"	%	'	'	'	3^+\2
? 
? 
?
 
;=S+\!#6aH,hjQ
 
 
 !00_/1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1 /1s   D0EE	E	c                 R    t          | |||||           t          | |||||          S rO   )CreateManagedTyper=   )rk   rU  r1   rC  rM  methodss         r   CreateAndLoadManagedTypero    s2    Y&'5'JJJ
)Xvww
O
OOr   c                    t           5  | |||||g}|                     d          }t          rd                    d |D                       } t	          |           t          |          }|r|D ]}	t          ||	d         |           |t          | <   |t          ||f<   t          
                    |           d d d            d S # 1 swxY w Y   d S )Nr!   c              3   `   K   | ])}|d                                           |dd         z   V  *dS rY  rZ  r[  s     r   r\  z$CreateManagedType.<locals>.<genexpr>  r]  r   r   )r9   r^  r-   r'   r+   r_  _SetWsdlMethodr<   r`  ra  r#   )
rk   rU  r1   rC  rM  rn  rD   r(   rb  r   s
             r   rm  rm    s0    " "&'5'Bcooc""e	 LXXKKUKKKKK%   ((f	 1 
1 
1T647C0000"%nY(+k68$%&!!!" " " " " " " " " " " " " " " " " "s   B0CC	C	c                    t           5  |g }|g }t          |          }i }i }d |D             }|||||d}	|D ]=}
|
||
j        <   t          t          j        |
          }t          |          |	|
j        <   >|D ]	\  }}}}}}}|g }t          |          }d}|                    d          r|d d         }d}t          d |D                       }t          || |||||d         |d	         |d
         ||          }
|
||<   t          |
          }t          |
j                  }t          ||
j        |          }||k    r5t!          d|d|
j        d|j        j        d|j        j        d	          ||	|<   ||	|<   | }t'          t)          ||f|	                    }t+          ||          cd d d            S # 1 swxY w Y   d S )Nc           
      r    g | ]4}t          |d          |d         |d         |d         |d                   5S r   r   r@  r   r   )r*   rB  rC  r   privIdrD  rE  s     r   r   z#LoadManagedType.<locals>.<listcomp>  sV     / / /#$ !A$1qt1Q41   / / /r   )r  r   r   r   r  F_TaskTc           
      r    g | ]4}t          |d          |d         |d         |d         |d                   5S ru  rD  rE  s     r   r   z#LoadManagedType.<locals>.<listcomp>)  sY     7 7 7)* $1!adRSTURV t% % % 7 7 7r   r   r   r@  )r*   rB  rU  rC  r   isTaskresultFlags
resultNamemethodResultNamerv  faultsDuplicate wsdl method   (new class  vs existing ))r9   re   r*   r*  r   r   propertyr   r8   tupler^   r   r_  rC  rr  rU  RuntimeErrorr   r`   rK  rw   rS  )rk   rU  r1   rC  rM  rn  rN  
methodInforO  rD   r   gettermVmodlmWsdlmVersionmParamsmResult
mPrivilegemFaultsmNamerz  r   mmnsmethodr*   ra   s                              r   r=   r=     s    .1 .1 
	F##fhj/ /(-/ / /h#8#'g? ?c  + +$#$)	5t<<"6**TYNU  
J65(GWj'OGF##NN7## 
#2#JEF 7 7.57 7 7 8 8	E'v#*1:'!*(/
:gW W W "E	D!!t|,, T]B77bLL,DMMM27<<<1A1A1ACD D D UUdy37788f 00].1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1s   F-GG	Gc                 J    t          | |||           t          | |||          S rO   )CreateEnumTyper?   )rk   rU  rC  r   s       r   CreateAndLoadEnumTyper  E  s*    )Xw777
y(GV
<
<<r   c                 d   t           5  | |||g}|                     d          }t          rd                    d |D                       } t	          |           t          |          }|t          | <   |t          ||f<   t          	                    |           d d d            d S # 1 swxY w Y   d S )Nr!   c              3   `   K   | ])}|d                                           |dd         z   V  *dS rY  rZ  r[  s     r   r\  z!CreateEnumType.<locals>.<genexpr>T  r]  r   )
r9   r^  r-   r'   r+   r_  r>   r`  ra  r#   )rk   rU  rC  r   rD   r(   rb  s          r   r  r  O  s     " "'62cooc""e	 LXXKKUKKKKK%   ((f"k)(+k68$%&!!!" " " " " " " " " " " " " " " " " "s   BB%%B),B)c                     t           5  | }t          |t          f||d          }t          ||          |_        |j        D ]}t          |||           t          |          cd d d            S # 1 swxY w Y   d S )N)r  r  )r9   r`   r  r   r   rf   rK  )rk   rU  rC  r   r*   ra   values          r   r?   r?   d  s     	 	d D4' w	7	79 9f&&))fm= ' '%		&	&	&	&f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA00A47A4c                 D    t          d| j        z  t          fd| i          S )Nz%s[]r   )r`   rJ   r@   )r   s    r   CreateArrayTyper  t  s#    
v))E8fx5H
I
IIr   c                     t          |           | _        t          | j                  }t	          || j        |           }|| k    rt          d| j        z            | S )z; Note: Must be holding the _lazyLock, or in main init path z+Duplicate wsdl type %s (already in typemap))r  r@   r_  r  _SetWsdlTyper  r  )r`   typeNSnewTypes      r   rK  rK  |  sW    %%4:T]++6&$.$777ooF$.YZZZ
;r   c           	         t           5  t          |          }|(t          |t                    rUt	          |          dk    rB| j        t          z  s%| j        t          urt          d| j
        z            	 d d d            d S | j        t          u rH	 t          |           	 d d d            d S # t          $ r t          d| j        j        z            w xY wt          || j                  r	 d d d            d S t          | j        t                    rLt          |t                    rnt          |j        | j        j                  r	 d d d            d S | j        t"          z  r0t          |t%          | j                            r	 d d d            d S n|r| j        t(          t"          z  z  }|t"          z  rT| j                            d          r| j        d d         }n| j        }t-          | j        j        | j
        ||          }n!t-          | j        j        | j
        |          }|D ]}t/          ||           	 d d d            d S 	 d d d            d S | j        t          u r|t          t0                    u st          | j        t2                    rt          |t2                    st          | j        t4                    r*t          |t2                    sst          |t4                    s^t          | j        t6                    rt          |t6                    s/t          | j        t8                    r#t          |t8                    r	 d d d            d S t          | j        t:                    r0t          |t%          | j                            r	 d d d            d S t          d| j
        d	| j        j        d
|j                  # 1 swxY w Y   d S )Nr   z0Required field "%s" not provided (not @optional)zUnknown type for %sr6   r7   )r`   r*   r   rd  )r`   r*   r   zFor "z" expected type z
, but got )r9   Typerq   r   r   r   r  r`   r   r   r*   GetQualifiedWsdlNamer   rJ   r  r@   r   r   re   rd  
F_LINKABLEr8   rV   r   r   r  r  r   r	   ro   )r   rS   valTyper   rd  itemInfoits          r   r   r     sp    ?I ?IS		g	C..3s88q== j( 
\div.E.ENQUQZZ[[[	?I ?I ?I ?I ?I ?I ?I ?I 9
H )))?I ?I ?I ?I ?I ?I ?I ?I  
H 
H 
H1DI4FFGGG
Hc49%% /	?I ?I ?I ?I ?I ?I ?I ?I  di&& -sE""  
 ',	77 -?I ?I ?I ?I ?I ?I ?I ?I. f$ Wl43D&E&EFF 5?I ?I ?I ?I ?I ?I ?I ?I6  
 J*v"56Ev~ S#,,T22 3!%!23B3!7,,!%!2, din49E.:< < <xx !din49ERRRx ( ((B'''']?I ?I ?I ?I ?I ?I ?I ?Id e?I ?I ?I ?I ?I ?I ?I ?If 9DOO!;!;di%% "<*4Wc*B*B "<di&& "<,6w,D,D "< -7w,E,E "< di''	 "< -7w,F,F	 "<
 di.. "<
 4>g|3T3T "< 
s?I ?I ?I ?I ?I ?I ?I ?It di&& wT-> ? ?@@ 
{?I ?I ?I ?I ?I ?I ?I ?I| Iyyy$)"4"4"4g6F6FH I I I}?I ?I ?I ?I ?I ?I ?I ?I ?I ?IsW   A/OOB00'CO=AO2OB0OO$C6O'=O1,OO!$O!c                 Z   t          | t                    r%| j        D ]}t          |j                  |_        d S t          | t
                    rt          | j                                                  D ]}t          |j                  |_        t          | j	                                                  D ]r}t          |j
                  |_
        t          |j                  |_        t          |j                  |_        |j        D ]}t          |j                  |_        qd S d S rO   )r  rs   r   re   r`   r   r   r   r   r   ra   rb   r   )r`   r   r   s      r   FinalizeTyper    s$   z"" 2. - -$!$),,- -4'' 2t~,,..// - -$!$),,t'..0011 2 2$#DK00)$*;<<	!$),,k 
2 
2U%ej11EJJ
22 22 2r   c                 P    	 | j         S # t          $ r t          |           cY S w xY wrO   )r}   rh   r`   )rQ   s    r   r  r    s<    ]
   #YYs   	 %%c                 <    t                               | |f|          S )z
   Set a WSDL type with wsdl namespace and wsdl name.
   Returns added type / existing type if (ns, wsdlName) already in the map

   Note: Must be holding the _lazyLock, or in main init path
   )_wsdlTypeMapr%   )r  rU  rE   s      r   r  r    s     
!
!2x.#
6
66r   c                 \   | |#t          d                    | |                    t          5  t                              | |f          }|r|cd d d            S |                    d          r[	 t          | |dd                    j        cd d d            S # t           $ r$ t          d                    | |                    w xY wt          t          | |f         d                   }|r|cd d d            S t          d                    | |                    # 1 swxY w Y   d S )N{0} {1}ArrayOf   r   )
r   r8  r9   r  r.   r  r   r@   rF   r`  )r  r*   rE   s      r   r   r     s   jDLY%%b$//000 1 1r4j**c	 	1 1 1 1 1 1 1 1 ??9%% 	
7r48,,21 1 1 1 1 1 1 1  
7 
7 
79++B55666
7 k2t*5a899 
1 1 1 1 1 1 1 1" Y%%b$//000#1 1 1 1 1 1 1 1 1 1s/    D!D!2B.C		(D!>#D!!D%(D%c                       e Zd ZdS )UnknownWsdlTypeErrorNrI   r   r   r   r  r    s         	Dr   r  c                    t           5  	 t          t          |           cd d d            S # t          $ r Y nw xY wt          D ]0}	 t          ||           c cd d d            S # t          $ r Y -w xY wt          |           # 1 swxY w Y   d S rO   )r9   r   rL  r   ra  r  r*   r  s     r   GuessWsdlTyper    s"    ' '
,d33' ' ' ' ' ' ' '    	    "
r4((((' ' ' ' ' ' ' '  
 
 
T
 &&&' ' ' ' ' ' ' ' ' 'K   B+
8B8BA#B#
A0-B/A00BB	Bc                      t           5  t          D ]\  } }t          | |           t          t                    cd d d            S # 1 swxY w Y   d S rO   )r9   r`  r   r   r  )r  r*   s     r   GetWsdlTypesr  2  s     & &!  ("d	R				%%& & & & & & & & & & & & & & & & & &s   1AA
A
c                    t           5  t                              |           }|r|cd d d            S t          | t                    rCt          | j        j                  }|dt          | j        j	                  z   fcd d d            S t          | j                  }|| j	        fcd d d            S # 1 swxY w Y   d S )Nr  )
r9   _wsdlNameMapr.   r  r   r_  r   r  r   r  )r`   wsdlNSAndNamer  s      r   r  r  9  s5    
( 
("&&t,,m	 (
( 
( 
( 
( 
( 
( 
( 
(
 tT"" 
(!$)"455B	Jty/B$C$CCD
( 
( 
( 
( 
( 
( 
( 
( "$-00B'
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
(s   B4AB4B44B8;B8c                 ,    t          |           d         S )N)r  )r`   s    r   GetWsdlNamer  G  s    
t
$
$R
((r   c                 T    | r%| d                                          | dd          z   S | S Nr   r   )upperr   s    r   r   r   K  .    	 &V\\^^c!""g%%
:r   c                 T    | r%| d                                          | dd          z   S | S r  rZ  r  s    r   r0   r0   Q  r  r   c                 n    | r2d                     d |                     d          D                       S | S )Nr!   c              3   `   K   | ])}|d                                           |dd         z   V  *dS rY  rZ  r[  s     r   r\  z(UncapitalizeVmodlName.<locals>.<genexpr>\  s;      LLTd1gmmooQRR0LLLLLLr   )r'   r^  r  s    r   r/   r/   Z  s;    	 MXXLLSYYs^^LLLLLL
:r   c                 &    dt           |          |<   d S )NT	parentMap)rC  r1   s     r   AddVersionParentr  `  s     $9Wfr   c                 p    t           |          }|st          |          }t          |          }|s|}n|d|}|S )z$ Get version namespace from version /)nsMapserviceNsMapversionIdMap)rC  r  	versionId	namespaces       r   GetVersionNamespacer  d  sL    g2
 ! bG$9
 ,iiRR+i
r   c                 P    t           |                     dd          d                  S )Nr   r   r  )
versionMaprsplitrC  s    r   GetVersionFromVersionUrir  q  s     
W^^C++B/
00r   c                 "    dt           |          z   S )z! Get wsdl namespace from version zurn:)r  r  s    r   r_  r_  u  s    
<(
((r   c                      d }t           r<t           fdt          t                    D             t	          |                    S t           fdt          t                    D             |          S )z
   Get all the versions for the service with specified namespace (partially) ordered
   by compatibility (i.e. any version in the list that is compatible with some version
   v in the list will preceed v)
   c                 p    | |k    rdS |t           |          v rdS | t           |         v rdS | |k    | |k     z
  S )Nr   r  r   r  )abs     r   comparez#GetServiceVersions.<locals>.compare  sK    	
a	
il			
il		!eAr   c                 &    g | ]\  }}|k    |S r   r   r   r   nr  s      r   r   z&GetServiceVersions.<locals>.<listcomp>  "    OOO6AqYQr   )rR   c                 &    g | ]\  }}|k    |S r   r   r  s      r   r   z&GetServiceVersions.<locals>.<listcomp>  r  r   )r   sortedr   r  r   )r  r  s   ` r   GetServiceVersionsr    s       
 OOOOY|%<%<OOO"7++- - - - OOOOY|%<%<OOO  r   c                    t                               |            t                              | |f          }t	          |t
                    rO||t          | |f<   |S t	          |t
                    r(t          d| d|d|d         d|d         d	          |S |t	          |t
                    r|t          | |f<   |S |S )z
   Set a WSDL method with wsdl namespace and wsdl name
   Returns added method / existing method if (ns, wsdlName) already in the map

   Note: Must be holding the _lazyLock
   Nr  r  r  r   r  r  )_wsdlMethodNSsr#   _wsdlMethodMapr.   rq   r   r  )r  rU  inputMMcurMMs       r   rr  rr    s     bH~//5$ 	*1X	'eT"" |BB'!***eAhhh89 9 
9  
*UD11*1X	'r   c                 ,   t           5  t          | |f         }t          |t                    r|cddd           S |r$t	          |  t          | |f         cddd           S t          d                    | t                              # 1 swxY w Y   dS )z# Get wsdl method from ns, wsdlName Nr  )r9   r  rq   r   r=   r   r8  r*   )r  rU  r  s      r   GetWsdlMethodr    s     4 4r8n-f	FM	*	* 4 4 4 4 4 4 4 4 4  4 
&	!	!H~.4 4 4 4 4 4 4 4 	((T2233	34 4 4 4 4 4 4 4 4 4s   &B	B	!(B		BBc                    t           5  	 t          t          |           cd d d            S # t          $ r Y nw xY wt          D ]0}	 t          ||           c cd d d            S # t          $ r Y -w xY wt          |           # 1 swxY w Y   d S rO   )r9   r  rL  r   r  r  s     r   GuessWsdlMethodr    s      
.55           	   "
 T****         
 
 
D
TNN         r  c                     t          | d          r7t          || j                  s"| j        d         } t          || j                  "| S )Nr  r   )r   IsChildVersionr  r   )r`   rC  s     r   GetCompatibleTyper    sQ     dJ "w66 "q! w66 "
;r   c                 N    t          d t          |           D                       S )Nc                     g | ]	\  }}||f
S r   r   )r   r   r   s      r   r   zInverseMap.<locals>.<listcomp>  s     666FQ!Q666r   )dictr   )r   s    r   
InverseMapr    s%    
66inn666
7
77r   c                   &    e Zd Zd Zd Zd Zd ZdS )_BuildVersionsc                 "    i | _         i | _        d S rO   )_verMap_nsMapr   s    r   r[   z_BuildVersions.__init__  s    dldkkkr   c                 N   d|v sJ d|z              |                     dd          d                              d          }dt          |          fD ]R}d                    |d |                   }|| j        vr
|| j        |<   || j        vrt          |          | j        |<   Sd S )Nz	.version.zInvalid version %sr   r   r!   )r^  r   r'   r  r  r  )rY   rC  vmodlNsr   
subVmodlNss        r   Addz_BuildVersions.Add  s    G###%9G%C###k1--a066s;;gS\\" C C#hhwtt}--t|++'.DL$t{**&9'&B&BDK
#C Cr   c                     | j         |         S rO   )r  rY   r  s     r   r   z_BuildVersions.Get  s    \'""r   c                     | j         |         S rO   )r  r  s     r   GetNamespacez_BuildVersions.GetNamespace  s    [!!r   N)rJ   rK   rL   r[   r  r   r  r   r   r   r  r    sS          	C 	C 	C# # #" " " " "r   r  r   r  )
AddVersionr  r   rr   c                 @    t                               | |rdpd          S )Nr   r   )r  rr   )ru   rS   s     r   r   r   )  s    ckk#syq~A.N.N r   byteshortdoubler  URIr   PropertyPathvoidanyTypebooleanr  r   r;  anyURIbase64BinarydateTimeTypeName
MethodNamer  ArrayOfStringz	vmodl.URIzvmodl.Binaryzvmodl.DateTimezvmodl.TypeNamezvmodl.MethodName)zvmodl.DataObjectzvmodl.ManagedObjectzvmodl.PropertyPathr6   c                 h   t          | t                    r| S t                              |           }|r|S |                     d          }|r
| dd         } t          |           \  }}	 t          ||          }n# t          $ r t          |           w xY w|r|r|j        p|S t          |           )z Get type from vmodl name r6   Nr7   )	rq   r`   
vmodlTypesr.   r8   _GetWsdlInfor   r   r@   )r*   rE   rA   r  rU  s        r   re   re     s     t k 
		3	 j ]]4  7 #2#Ydt$$<2xH%%cc
   TNN	 ")c)TNNs   *A; ;Bc                 L    	 t           |          S # t          $ r
 | j        cY S w xY w)z Get vmodl type name from type )
vmodlNamesr   rJ   )rE   s    r   GetVmodlNamer    s:    _
   \s    ##c                     	 t          |           }n # t          $ r t          d| z             w xY wt          |          S )NNo type found with name )re   r   	NameErrorr  )pythonTypeNamerE   s     r   GetWsdlTypeNamer    sX    C((cc
 C C C0>ABBBC
c

s    /c                 &   	 t          |           }t          t          |                   \  }}}}}}n # t          $ r t	          d| z             w xY wt          |          }|D ]}|\  }}}}}}}||k    s||k    r|c S t	          d|z             )Nr  No method found with name )re   r`  r  r   r  r0   )	r  pythonMethodNamerE   _rn  uncapPythonMethodNamer  r  r  s	            r   GetWsdlMethodNamer"    s    C((c*+?+D+DEaAq!WW
 C C C0>ABBBC'(899  v%+"feQ1a	(	(	(F6F,F,F -G	/2BB	C	CCs	   03 Ac                     	 t          ||           }n## t          $ r t          d|d|           w xY wt          |          S )NNo type found with namespace 
 and name )r   r   r  r  )wsdlTypeNamer  rE   s      r   GetPythonTypeNamer'    sa    ZL))cc
 Z Z ZIrrr<<XYYYZ
s

s     3c                     	 t           || f         \  }}}}}}n## t          $ r t          d|d|           w xY w|D ]#}|\  }}}}}}}||k    rt          |          c S $t          d|z             )Nr$  r%  r  )r`  r   r  r   )r&  r  wsdlMethodNamer   rn  r  r  r  s           r   GetPythonMethodNamer*    s    Z*B+=>aAq!WW
 Z Z ZIrrr<<XYYYZ # #v%+"feQ1a	.	 	 6""	"	"	" 
!	/.@	A	AAs     9c                   ,    e Zd ZdZd Zd ZddZd ZdS )
StringDicta  
   String only dictionary: same as dict, except it only accept string as value

   dict in python is kind of strange. U cannot just override __setitem__, as
   __init__, update, and setdefault all bypass __setitem__. When override,
   we have to override all three together
   c                 T    t                               |             | j        |i | d S rO   )r  r[   rX   r/  s      r   r[   zStringDict.__init__  s1    
mmDdk4"6"""""r   c                 N    t          t          |i |          D ]
\  }}|| |<   d S rO   )r   r  )rY   r   rZ   r   r   s        r   rX   zStringDict.update	  s?    D$1&1122  $!Qa r   Nc                 (    || v r| |         S || |<   |S rO   r   rY   rR   rS   s      r   r%   zStringDict.setdefault  s#    	S		cr   c           
          t          |t                    s%t          d|d|dt          |                    t                              | ||          S )z9x.__setitem__(i, y) <==> x[i]=y, where y must be a stringzkey z has non-string value z of )rq   r	   r   r`   r  __setitem__r0  s      r   r2  zStringDict.__setitem__  sa    \** Py:=##sssDIIIO P P 
PdC---r   rO   )rJ   rK   rL   __doc__r[   rX   r%   r2  r   r   r   r,  r,    s_         # # #
  
   . . . . .r   r,  c                     t           rt          |           } t          t          t          fD ]#}|                    |           }|r
|d         c S $dS )r    r   N)r-   r/   r:   r<   r>   r.   r*   rB   rD   s      r   r   r   !  s]     )"4((dnk9  vJJtc	 A
$r   c                    t           rt          |           } t          5  t          t          fD ]D}|                    |           }|r+t          |d                   |d         fc cd d d            S Et                              |           }|r)t          |d                   |d         fcd d d            S 	 d d d            dS # 1 swxY w Y   d S )Nr   r   r@  r  )r-   r/   r9   r:   r<   r.   r_  r>   r5  s      r   r  r  /  s[    )"4((d    / 4 4&zz$ 
4#CF++SV333       

4 OOD!!c	 1 Q((#a&0                         s   AC19C7CC	C	c                     t                               |           }|rdS |                     d          r
| d d         } t          5  t	          |           }d d d            n# 1 swxY w Y   |d uS )NTr6   r7   )r  r.   r8   r9   r   )r*   rE   r   s      r   TypeDefExistsr8  D  s    			3	 T mmD #2#Yd ( (!$''j( ( ( ( ( ( ( ( ( ( ( ( ( ( (
D
  s   A!!A%(A%c                  Z    t           j                            dt                                S )z/ Get the RequestContext for the current thread reqCtx)_threadLocalContextrP   r%   r,  r   r   r   GetRequestContextr<  W  s!     
&
1
1(JLL
I
IIr   c                  Z    t           j                            dt                                S )z- Get the Http context for the current thread httpCtx)r;  rP   r%   r  r   r   r   GetHttpContextr?  ^  s!     
&
1
1)TVV
D
DDr   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )LinkResolverc                 >    i | _         |                     |           d S rO   )	linkables_VisitDataObject)rY   scopes     r   r[   zLinkResolver.__init__i  s#    dn
E"""""r   c                 8   t          |t                    r|                                D ]}t          |j        t
                    rRt          ||j                  D ];}|j        t          z  r| 
                    |           |                     |           <nt          ||j                  }|j        t          z  r| 
                    |           |                     |           d S t          |t
                    r|D ]}|                     |           d S d S rO   )rq   rs   r   r  r`   r   rd   r*   r   r  _AddLinkablerD  )rY   rQ   r   dataObjs       r   rD  zLinkResolver._VisitDataObjectr  sB   	C	$	$ +))++ 

. 

.T$)T** 	.%c4955 1 17j:- 0&&w///''00001
 !di00w:
* -##G,,,$$W----

. 

. c4   + 
+ 
+W!!'****+ +
+ 
+r   c                     t          |d          }|r*|dk    r$|| j        v rt          |          || j        |<   d S t          |          )NrR   r   )rd   rC  rh   )rY   rQ   rR   s      r   rG  zLinkResolver._AddLinkable  s^    Cc	 #4>!! %%%"%DN3 c""	"r   c                      | j         |         }|S rO   rC  r0  s      r   ResolveLinkzLinkResolver.ResolveLink  s    N3cjr   c                 $      fd|D             }|S )Nc                 *    g | ]}j         |         S r   rK  )r   r   rY   s     r   r   z-LinkResolver.ResolveLinks.<locals>.<listcomp>  s     ---1T^A---r   r   )rY   keysrS   s   `  r   ResolveLinkszLinkResolver.ResolveLinks  s!    -------cjr   N)rJ   rK   rL   r[   rD  rG  rL  rP  r   r   r   rA  rA  d  s_        
# # #+ + +*
# 
# 
#       r   rA  c                 R    |d S t          |          }|                    |           S rO   )rA  rL  )rR   rQ   linkResolvers      r   rL  rL    s-    	kTs##<

"
"3
'
''r   c                 R    |d S t          |          }|                    |           S rO   )rA  rP  )rO  rQ   rR  s      r   rP  rP    s-    	kTs##<

#
#D
)
))r   )r   )
__future__r   r   sixr   r   r   r   r	   r
   r   r   pyVmomir   r   	threading	functoolsr   r`   NoneTypepyVmomi.pyVmomiSettingsr   r  r   r-   ranger   r  r  F_SECRETr  VERSION1	XMLNS_XSD	XMLNS_XSIrL  RLockr9   r&   r"   r<   r:   r>   r`  r$   r   r+   r4   rF   r  r   r   rH   r   rT   rV   r^   ro   rw   r   r   r   r   rs   r   r  r   r@   r*  r   r   rP  rS  rV  rJ  r;   ro  rm  r=   r  r  r?   r  rK  r   r  r  r  r   r   r  r  r  r  r  r   r0   r/   r  r  r  r_  r  rr  r  r  r  r  r  typesr  r  r  r^  r  r  newestVersionscurrentVersionsstableVersionsmatureVersionspublicVersionsoldestVersionspyVmomi.Versionr  r  rq   r   r  r  r  r   r  r  r  r   r  ra  r  r  r   r  r*   rE   rf   rJ   r#   	arrayType	arrayNamearrayNSr  r  r  r  r  r  copyrh   rU  re   r  r  r"  r'  r*  r  r,  r   r  r8  localr;  r<  r?  rA  rL  rP  r   r   r   <module>rn     s  " ' & & & & & % % % % % %                                                            $######4::222222<<<<<!<<<<<<1! 
 ('UU1XX'''	''.	7	  IO	     #9Y
G
G* * *  >  * :i   
477  # # # # # # # #' ' ' ' ' ' ' '&	 	 	 	 	9 	 	 	@ @ @ @ @t @ @ @$0A 0A 0A 0A 0A 0A 0A 0Ap "6ra@@@ / / / /j! ! !L3 L3 L3 L3 L3F L3 L3 L3^=% =% =% =% =% =% =% =%@     3   % % % % %D % % %    F   ,    E   N N N N Nm N N N  0  "D D D" " ",01 01 01vP P P" " "8/1 /1 /1p= = =" " "*
 
 
 J J J	 	 	 @I @I @IJ2 2 2  7 7 71 1 10	 	 	 	 	8 	 	 	' ' '0& & &( ( () ) )      % % %
 
 
1 1 1) ) )$  F  @4 4 4.  &  8 8 8" " " " " " " ", 	

 0 6 6s ; ;B ?A	!! .""!!!!!!!! 6 6 6 6 6 6 6 6z$ Q
$vvNNNOQ Q4VcVR  	gvr	"	"	h"	%	% #
$vvr
"
"4
d53&"	h	+	+tNYL"55 #%%v yF yD	
 v w% u v w% x6 x3 x3 ~ zX v  j!D!" l#m#$ n%%( z,''l002233 	5 	5Zb$	geS\3'''"!/#&&igeZZ--7CCCjj...i gl7Iy111!() 4l9# %h/Y ,<o+N__Y'' (   -(-*A4("b2 2 2     }%} 5 5 5 z"J$8$"B( ( (     z"J / / /	kk)V,, kk)Y// kk)X..	
 
kk)Y// kk)Y// 
kk)V,, kk)W-- 	kk)U++ 
kk)V,, kk)W-- kk)X.. 
kk)V,, Ix88 I~>>  Iz::!" $4jAA#$ $4lCC%& $$4lCC&;'7II&;'7HH+  
. 
 ""((** % %ID#	LY L L LK$$# [)jj6J6J*JKKL +i'j :c?$:i#  <    D D D$  	B 	B 	B. . . . . . . .J    *! ! ! &io'' J J JE E E= = = = = = = =H( ( (* * * * *s*   A( (A.2A; ;BX*YY