ó V¥jLc@s¢dZddlmZddlTddlTddlTddlTddlmZm Z ddl m Z ddl m Z ddlmZeeƒZdd;d „ƒYZd efd „ƒYZd efd „ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZd efd!„ƒYZ d"efd#„ƒYZ!d$efd%„ƒYZ"d&efd'„ƒYZ#d(efd)„ƒYZ$d*efd+„ƒYZ%d,efd-„ƒYZ&d.efd/„ƒYZ'd0efd1„ƒYZ(d2d<d3„ƒYZ)e%j*d4d5ƒe%j*d6d7ƒe%j*d8d9ƒd:S(=sP The I{sxbasic} module provides classes that represent I{basic} schema objects. iÿÿÿÿ(t getLogger(t*(t splitPrefixt Namespace(tTransportError(tDocumentReader(turljointRestrictionMatchercBseZdZd„ZRS(s: For use with L{NodeFinder} to match restriction. cCs t|tƒS(N(t isinstancet Restriction(tselftn((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytmatch(s(t__name__t __module__t__doc__R (((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR$st TypedContentcBs#eZdZed„Zd„ZRS(s* Represents any I{typed} content. cCs|jƒ}|dkr|Sd|}|jj|ƒ}|dk rH|S|}t|ƒ}|g|_tjd|j||ƒ|j |j ƒ}|dkr¼tj|j ƒt |ƒ‚n||j|<|j ƒrí|rä|}qü|}n|j |ƒ}|S(Nsresolved:nb=%ss%s, resolving: %s using:%s(tqreftNonetcachetgett TypeQuerythistorytlogtdebugtidtexecutetschemat TypeNotFoundtbuiltintresolve(R t nobuiltinRtkeytcachedtresulttquerytresolved((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR0s,           cCss|j}|dkrot|ƒdkrog}tƒ}t|dƒ}|j||ƒt|ƒro|djSn|S(sY Get the I{type} qualified reference to the referenced xsd type. This method takes into account simple types defined through restriction with are detected by determining that self is simple (len=0) and by finding a restriction child. @return: The I{type} qualified reference. @rtype: qref iiN(ttypeRtlenRt NodeFindertfindtref(R Rtlstmtfinder((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRJs   (R RRtFalseRR(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR,s tComplexcBs2eZdZd„Zd„Zd„Zd„ZRS(s” Represents an (xsd) schema node. @cvar childtags: A list of valid child node names @type childtags: (I{str},...) c Csd S( Nt attributetattributeGrouptsequencetalltchoicetcomplexContentt simpleContenttanytgroup( s attributeR0ssequencesallschoiceR4R5sanysgroup((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyt childtagsescCsdS(Ntname(sname((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyt descriptionqscCs(x!|jD]}|jƒr tSq WtS(N(t rawchildrent extensiontTrueR-(R tc((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR<ts cCs7x0|jD]%}t|tƒr |jƒr tSq WtS(N(R;Rt SimpleContenttmixedR=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR@zs(R RRR8R:R<R@(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR.^s   tGroupcBs2eZdZd„Zd„Zd„Zd„ZRS(sŽ Represents an (xsd) schema node. @cvar childtags: A list of valid child node names @type childtags: (I{str},...) cCsdS(NR1R2R3(ssequencesallschoice((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8ˆscCsŠg}d}|jdk r€t|jƒ}|j|jƒ}|dkrjtj|jƒt|jƒ‚n|j|ƒd}n||fS(Ni( RR)t GroupQueryRRRRRtappend(R tdepstmidxR#tg((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyt dependencies‹s   cCs tj||ƒ|j|_dS(N(t SchemaObjecttmergeR;(R tother((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRI˜scCsdS(NR9R)(snamesref((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:œs(R RRR8RGRIR:(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRAs   tAttributeGroupcBs2eZdZd„Zd„Zd„Zd„ZRS(s— Represents an (xsd) schema node. @cvar childtags: A list of valid child node names @type childtags: (I{str},...) cCsdS(NR/R0(s attributesattributeGroup((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8§scCsŠg}d}|jdk r€t|jƒ}|j|jƒ}|dkrjtj|jƒt|jƒ‚n|j|ƒd}n||fS(Ni( RR)tAttrGroupQueryRRRRRRC(R RDRER#tag((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRGªs   cCs tj||ƒ|j|_dS(N(RHRIR;(R RJ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRI·scCsdS(NR9R)(snamesref((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:»s(R RRR8RGRIR:(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRK s   tSimplecBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(s: Represents an (xsd) schema node cCsdS(Nt restrictionR6tlist(s restrictionsanyslist((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8ÄscCs4x-|jƒD]\}}t|tƒr tSq WtS(N(tchildrenRt EnumerationR=R-(R tchildtancestry((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytenumÇscCs t|ƒS(N(R&(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR@ÍscCsdS(NR9(sname((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:ÐscCs(x!|jD]}|jƒr tSq WtS(N(R;R<R=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR<Ós cCs(x!|jD]}|jƒr tSq WtS(N(R;ROR=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyROÙs ( R RRR8RUR@R:R<RO(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRN¿s     tListcBs)eZdZd„Zd„Zd„ZRS(s4 Represents an (xsd) schema node cCsdS(N(((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8åscCsdS(NR9(sname((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:èscCstS(N(R=(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytxslistës(R RRR8R:RW(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRVàs  R cBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(s; Represents an (xsd) schema node cCs)tj|||ƒ|jdƒ|_dS(Ntbase(RHt__init__RR)(R Rtroot((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRYôscCsdS(Nt enumerationR/R0(R[s attributesattributeGroup((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8øscCs™g}d}|jdk rt|jƒ}|j|jƒ}|dkrjtj|jƒt|jƒ‚n|jƒs|j |ƒd}qn||fS(Ni( RR)RRRRRRRRC(R RDRER#tsuper((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRGûs    cCstS(N(R=(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRO scCs?tj||ƒtt|jƒ}|j|j|j|ƒdS(N(RHRItFilterR-R;tprepend(R RJtfilter((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRI scCsdS(NR)(sref((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:s( R RRRYR8RGRORIR:(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR ïs     t CollectioncBseZdZd„ZRS(sg Represents an (xsd) schema collection node: - sequence - choice - all cCsdS(NtelementR1R2R3R6R7(selementssequencesallschoicesanysgroup((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8s(R RRR8(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR`stSequencecBseZdZd„ZRS(s9 Represents an (xsd) schema node. cCstS(N(R=(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR1%s(R RRR1(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRb!stAllcBseZdZd„ZRS(s4 Represents an (xsd) schema node. cCstS(N(R=(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR2-s(R RRR2(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRc)stChoicecBseZdZd„ZRS(s7 Represents an (xsd) schema node. cCstS(N(R=(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR34s(R RRR3(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRd0stComplexContentcBs)eZdZd„Zd„Zd„ZRS(s? Represents an (xsd) schema node. cCsdS(NR/R0R<RO(s attributesattributeGroups extensions restriction((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8=scCs(x!|jD]}|jƒr tSq WtS(N(R;R<R=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR<@s cCs(x!|jD]}|jƒr tSq WtS(N(R;ROR=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyROFs (R RRR8R<RO(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRe8s  R?cBs2eZdZd„Zd„Zd„Zd„ZRS(s> Represents an (xsd) schema node. cCsdS(NR<RO(s extensions restriction((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8RscCs(x!|jD]}|jƒr tSq WtS(N(R;R<R=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR<Us cCs(x!|jD]}|jƒr tSq WtS(N(R;ROR=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRO[s cCs t|ƒS(N(R&(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR@as(R RRR8R<ROR@(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR?Ms    RRcBs eZdZd„Zd„ZRS(s; Represents an (xsd) schema node cCs)tj|||ƒ|jdƒ|_dS(Ntvalue(tContentRYRR9(R RRZ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRYjscCstS(N(R=(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRUns(R RRRYRU(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRRes tElementcBs_eZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( s8 Represents an (xsd) schema node. cCs~tj|||ƒ|jdƒ}|dk r@|dk|_n|jjdƒ}|dk rp|dk|_n|jƒdS(Ntformt qualifiedtnillablet1ttrue(RlRm(RRYRRtform_qualifiedRZRktimplany(R RRZta((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRYws  cCsC|jdkr?|jdkr?|jjƒr?|jƒ|_n|S(sÀ Set the type as any when implicit. An implicit is when an element has not body and no type defined. @return: self @rtype: L{Element} N(R%RR)RZtisemptytanytype(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRos cCsdS(NR/t simpleTypet complexTypeR6(s attributeRsRtsany((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8scCs(x!|jD]}|jƒr tSq WtS(N(R;R<R=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR<’s cCs(x!|jD]}|jƒr tSq WtS(N(R;ROR=R-(R R>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRO˜s cCsŠg}d}|jdk r€t|jƒ}|j|jƒ}|dkrjtj|jƒt|jƒ‚n|j|ƒd}n||fS(Ni( RR)t ElementQueryRRRRRRC(R RDRER#te((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRGžs   cCs tj||ƒ|j|_dS(N(RHRIR;(R RJ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRI«scCsdS(NR9R)R%(snamesrefstype((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:¯scCs\tj\}}|jj|ƒ}|dkrI|}|jj||ƒndj|dfƒS(s! create an xsd:anyType reference t:tanyTypeN(RtxsdnsRZt findPrefixRt addPrefixtjoin(R tptutmp((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRr²s  ( R RRRYRoR8R<RORGRIR:Rr(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRhrs      t ExtensioncBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(s: Represents an (xsd) schema node. cCs)tj|||ƒ|jdƒ|_dS(NRX(RHRYRR)(R RRZ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRYÁscCsdS(NR/R0R1R2R3R7(s attributesattributeGroupssequencesallschoicesgroup((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8Ås cCs™g}d}|jdk rt|jƒ}|j|jƒ}|dkrjtj|jƒt|jƒ‚n|jƒs|j |ƒd}qn||fS(Ni( RR)RRRRRRRRC(R RDRER#R\((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRGÍs    cCs?tj||ƒtt|jƒ}|j|j|j|ƒdS(N(RHRIR]R-R;R^(R RJR_((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRIÛscCs |jdk S(N(R)R(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR<àscCsdS(NR)(sref((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:ãs( R RRRYR8RGRIR<R:(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR€¼s     tImportcBsSeZdZiZedd„ƒZd„Zd„Zd„Z d„Z d„Z RS(sZ Represents an (xsd) schema node @cvar locations: A dictionary of namespace locations. @type locations: dict @ivar ns: The imported namespace. @type ns: str @ivar location: The (optional) location. @type location: namespace-uri @ivar opened: Opened and I{imported} flag. @type opened: boolean cCs&|dkr|}n||j| node @ivar location: The (optional) location. @type location: namespace-uri @ivar opened: Opened and I{imported} flag. @type opened: boolean cCs`tj|||ƒ|jdƒ|_|jdkrS|jj|jdƒ|_nt|_dS(NRˆi( RHRYRR…RR‚R„R-R‰(R RRZ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRYHs cCsR|jr dSt|_tjd|j|jƒ|j|ƒ}tjd|ƒ|S(sÓ Open and include the refrenced schema. @param options: An options dictionary. @type options: L{options.Options} @return: The referenced schema. @rtype: L{Schema} Ns%s, including location="%s"s included: %s(R‰R=RRRR…R‹(R RŒR"((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyROs  cCsÕ|j}y‚d|kr0t|jj|ƒ}nt|ƒ}|j|ƒ}|jƒ}|jd|ƒ|j|ƒ|jj |||ƒSWnCt k rÐd|}t j d|j |dtƒt|ƒ‚nXdS(s download the schema s://Rsinclude schema at (%s), faileds%s, %sRN(R…RRR‘RRRZR’t_Include__applytnsR“RRR”RR=R•(R RŒRR–R—RZR˜((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR‹_s       cCsnd}|j|ƒ}|dkrD|jjd}|j||ƒn&|jjd|krjtd|‚ndS(s) make sure included schema has same tns. ttargetNamespaceis %s mismatchN(RRRRŽR’R•(R RZtTNSRŽ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyt __applytnsps cCsdS(NR…((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:|s( R RRR‚RYRR‹R›R:(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRš=s    t AttributecBsMeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z RS(s/ Represents an (xsd) node cCs/tj|||ƒ|jdddƒ|_dS(Ntusetdefaultt(RRYRR (R RRZ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRY…scCsdS(NRO(s restriction((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR8‰scCstS(N(R=(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytisattrŒscCs|jjdddƒS(s Gets the attribute value. @return: The default value for the attribute @rtype: str R¡R¢(RZR(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyt get_defaultscCs |jdkS(Ntrequired(R (R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytoptional—scCsŠg}d}|jdk r€t|jƒ}|j|jƒ}|dkrjtj|jƒt|jƒ‚n|j|ƒd}n||fS(Ni( RR)t AttrQueryRRRRRRC(R RDRER#Rp((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRGšs   cCsdS(NR9R)R%(snamesrefstype((R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR:§s( R RRRYR8R£R¤R¦RGR:(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyRŸ€s      tAnycBs)eZdZd„Zd„Zd„ZRS(s) Represents an (xsd) node cCs;|jjƒ}|jddƒt|j|ƒ}|gfS(Ntnotessynthesized (any) child(RZtcloneR’R¨R(R R9RZRS((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyt get_child°scCs;|jjƒ}|jddƒt|j|ƒ}|gfS(NR©ssynthesized (any) attribute(RZRªR’R¨R(R R9RZR/((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyt get_attribute¶scCstS(N(R=(R ((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR6¼s(R RRR«R¬R6(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR¨«s  tFactorycBsÑeZdZied6ed6ed6ed6ed6ed6e d6e d6e d 6e d 6e d 6ed 6ed 6ed6ed6ed6ed6ed6Zed„ƒZed„ƒZedd„ƒZed„ƒZRS(s` @cvar tags: A factory to create object objects based on tag. @type tags: {tag:fn,} timporttincludeRtR7R0RsRPRaR/R1R2R3R4R5ROR[R<R6cCs||j| I{class} mapping. @param tag: An xsd tag name. @type tag: str @param fn: A function or class. @type fn: fn|class. N(ttags(Rƒttagtfn((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytmaptagÜs cCs6|jj|jƒ}|dk r.|||ƒSdSdS(s Create an object based on the root tag name. @param root: An XML root element. @type root: L{Element} @param schema: A schema object. @type schema: L{schema.Schema} @return: The created object. @rtype: L{SchemaObject} N(R°RR9R(RƒRZRR²((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytcreateçs   RcCsg}x|jdtjƒD]y}d|ks=|j|kr|j||ƒ}|dkraqn|j|ƒ|j|||jƒƒ}||_ qqW|S(s Build an xsobject representation. @param root: An schema XML root. @type root: L{sax.element.Element} @param filter: A tag filter. @type filter: [str,...] @return: A schema object graph. @rtype: L{sxbase.SchemaObject} R„RN( t getChildrenRRyR9R´RRCtbuildR8R;(RƒRZRR_RQtnodeRSR>((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR¶øs   c Cs)g}i}i}i}i}i}xË|D]Ã}t|ttfƒrY|j|ƒq+nt|tƒr{|||jti((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytcollates4       (R(R RRRRšR.RARKRNRVRhRŸRbRcRdReR?R RRR€R¨R°R™R³R´R¶RÁ(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pyR­Às2  s)http://schemas.xmlsoap.org/soap/encoding/s)suds://schemas.xmlsoap.org/soap/encoding/s$http://www.w3.org/XML/1998/namespaceshttp://www.w3.org/2001/xml.xsds http://www.w3.org/2001/XMLSchemas$http://www.w3.org/2001/XMLSchema.xsdN(((+RtloggingRtsudstsuds.xsdtsuds.xsd.sxbasetsuds.xsd.querytsuds.saxRRtsuds.transportRt suds.readerRturlparseRR RRRgRRHR.RARKRNRVR R`RbRcRdReR?RRRhR€RRšRŸR¨R­R†(((s4/usr/lib/python2.7/site-packages/suds/xsd/sxbasic.pytsR     2#!&  J+VC+q