mò v Lc@sDdZdZdZdZdkZeedƒoeidƒeiZn dk Z e i dƒe iZdk Z dk Z dk Tdk lZd klZdkZdkZdkZd klZd Zddd „Zd ddd„Zd ddd„Zdd d„Zdddddddddddddd d!gZdS("s$Id$sOSam Ruby and Mark Pilgrim s $Revision$s,Copyright (c) 2002 Sam Ruby and Mark PilgrimNtsetdefaulttimeouti (t*(s SAXException(s InputSource(s BadStatusLinei€„csdkl}l}dkl} dkl} dkl}t i dˆƒo°t i dˆƒoˆi dƒ}ˆi dƒ}|d jon|d joa||joT|itihd d <d d <ƒƒˆ||d !ˆd |!ˆ|d ‰qýntƒ}|i|tiˆƒƒƒ| ||p|g|ƒ}|i|ƒ|d jo|it ƒn|djo|it!ƒn|i|7_g}ˆi#dƒD]}||i dƒd jqª~|_%t i dˆƒ}|oB|i'd ƒdjo,|i(ti)hd|i'd ƒ<ƒƒny3dk*l+‰dˆf‡d†ƒY}|ƒ} Wn|ƒ} nX| i.|i/d ƒ| i0|ƒ| i1|ƒ| i2|ƒt3| dƒo| i4ihdd<ƒn‡d†}||_6y| i7|ƒWnct8j onR| j oEdk9}|i:ƒd \} }|i(tihd|<ƒƒnX|i=ƒt>jo‹y}dk?l@‰dˆf‡d †ƒY} |iBƒiCƒ| iCƒ| i0| | iDƒƒƒ| i1|iEƒƒ| i7|ƒWqqXn|S(!s2validate RSS from string, returns validator object(s make_parsershandler(s SAXDispatcher(s UnicodeError(sStringIOs ^\s+<\?xmls#titlineitcolumnsapplication/atomsvc+xmlsapplication/atomcat+xmls s&#xs5^<\?\s*xml\s+version\s*=\s*['"]([-a-zA-Z0-9_.:]*)['"]s1.0tversion(s ExpatParsertfake_dtd_parsercstZ‡d†ZRS(Ncs!ˆi|ƒ|iidƒdS(Ni(t ExpatParsertresettselft_parsert UseForeignDTD(R (R(tA/web/script/rubys/feedvalidator.org/src/feedvalidator/__init__.pyR Bs (t__name__t __module__R ((R(R RAst _ns_stacks$http://www.w3.org/XML/1998/namespacetxmlc s&dk}dkl}dkl}dt|ƒƒiddƒ}g}|id„|ƒ|i|t i ˆƒƒƒ}|i |ƒ}|i|idƒ|iƒ}x|djo|iƒ}qªWdi|ƒ}xH|iƒD]:} | i|ƒo$|| idd ƒd iƒƒqäqäWdS( N(sStringIO(srandoms...%s...s0.tcCs |i|ƒS(N(tmsgtappendtstr(RR((R tYsit:iiÿÿÿÿ(tlibxml2tStringIOtrandomRtreplacetprefixRtregisterErrorHandlert inputBuffert xmlEncodingtasUTF8taStringtinputt newTextReadertreadert SetParserProptPARSER_VALIDATEtReadtrettjoint splitlinesRt startswithtlogtsplittstrip( R,RRRR$R(RRR"R(R!(R t xmlvalidateRs$      Nit exception(s RDFXMLHandlertHandlercs2tZhZhZd„Z‡d†Zd„ZRS(NcCsdS(N((R ttriple((R taddvscsˆi||ƒ||_dS(N(t RDFXMLHandlert__init__R t dispatcher(R R6(R4(R R5wscCs#|iithd|<ƒƒdS(Ntmessage(R R6R,t InvalidRDFR7(R R7((R terrorzs(RRt ns_prefix_mapt prefix_ns_mapR3R5R9((R4(R R1ss   (Ftxml.saxt make_parserthandlertbaset SAXDispatchert exceptionst UnicodeErrort cStringIORtretmatchR!tsearchtfindtlttgtt loggedEventsRtloggingt WPBlankLinet InputSourcetsourcet setByteStreamRR tselfURIstencodingt validatortsetFirstOccurrenceOnlytfirstOccurrenceOnlyt mediaTypet setFeedTypetTYPE_APP_SERVICEtTYPE_APP_CATEGORIESt_[1]R-tst rssCharDatatxmlvertgroupR,t BadXmlVersiontxml.sax.expatreaderRRtparsert setFeaturetfeature_namespacestsetContentHandlertsetErrorHandlertsetEntityResolverthasattrRR/t xmlvalidatortparset SAXExceptiontsystexc_infotexctypetvaluet getFeedTypet TYPE_RSS1t#rdflib.syntax.parsers.RDFXMLHandlerR4R1t getByteStreamR tgetContentHandlert ErrorHandler(R!RTRJR?RQRPRURIR4R`R1RlRBR@RNRHR>RjRR/R=R\RRRmRYRZRR((R!R4RR t _validatesr   &'(0    <,         $   iRc Csg}|oti||ƒ\}}n d \}}|it ƒ}|idƒo0t t i hddtt ƒd<ƒƒ‚nti||||ddƒ\} }t||||| d|ƒ}|o'|ioti||i|iƒnhd|i<d |i s bytestfallbacksutf-8RUtfeedTypeRJ(NN(RJt contentTypet mediaTypest checkValidRUtcharsettNonetaFiletreadt MAXDATALENGTHtrawdatatValidationFailureRKtValidatorLimitRRtdecodeRQRtRTR?RRRwtcheckAgainstFeedType( R}RTRxR?R€R{RURRRJRQ((R tvalidateStream‡s 0$cCsšg}t|ƒtjo%tidd|||ƒ\}}nd}|dj o8t |||||ƒ}hd|i <d|i s bytes(sHTTPConnectiont/iishttp:itGETt#i-tstatusiscontent-encodings Rs iÿÿÿÿsss sR7sServer timed outR0tgzipNtfileobjs/Server response declares Content-Encoding: gziptdeflates2Server response declares Content-Encoding: deflates content-types application/vnd.google-earth.kmzs.kmlsProblem decoding KMZt theaderscontent-location(surljointlocationRvsutf-8RJs s RURwR€(bRJturllib2tRequestturltrequestt add_headerR|tusockturlopenR~RR€RRKR‚Rtgeturlt get_full_urlthttplibtHTTPConnectionR-tspliturltconnt getresponsetrespRŒRt TempRedirectt BadStatusLinet HttpErrort __class__t HTTPErrortlentheadersRDtsubR.tlastlinetURLErrortxtreasontTimeouttIOErrort ExceptionRtgett UncompressedRRtGzipFileRjRkRlRmteventtzlibt decompresst MAX_WBITSttempfiletzipfiletostmkstemptfdttempnametwritetclosetZipFiletzfdtnamelisttnametendswithtunlinkRUR{RxRyRztitemsthtvRGtHttpProtocolErrorRPtbaseURIturlparseturljointcontentSniffingRRƒRQRRtRTRRRwR„tparamst wantRawData((R•RTRÏRÌRQR˜R¡RPR´RŸRlR¸R{RURÎRªRŒRÂRxR¹RjR¼RJRRÃRRÇRµR–RmRRRÊRžR€RÈRR¬RÁRºR½((R t validateURLªsð0 ( #% #  "%+2% !  !    ! $   " "  $ !R?tchannelt compatibilitytimagetitemRKtrdftroottrsst skipHourst textInputtutilt validatorsRÐRˆ(t__doc__t __author__t __version__t __copyright__tsocketRfRttimeoutR®t timeoutsockettsetDefaultSocketTimeoutR“RKR<Ritxml.sax.xmlreaderRMRDRRyRœR£RR|RtR…RˆRÐt__all__(RtRâR£RyRåR…RMRDRRÞRiR“RÝR®RßRˆRKRàRÐR((R t?s2              k ‘