mò ÔAGc@spdklZdkTdklZdeefd„ƒYZdeefd„ƒYZdeefd„ƒYZd S( (s validatorBase(t*(sextension_everywheretservicecBs#tZd„Zd„Zd„ZRS(NcCsgS(N((tself((t@/web/script/rubys/feedvalidator.org/src/feedvalidator/service.pytgetExpectedAttrNamesscCs@d|ijo,|ithd|i<dd<ƒƒndS(Nt app_workspacetparenttelements app:workspace(RtchildrentlogtMissingElementtname(R((Rtvalidate scCstƒS(N(t workspace(R((Rtdo_app_workspace s(t__name__t __module__RR R(((RRs  R cBs#tZd„Zd„Zd„ZRS(NcCs@d|ijo,|ithd|i<dd<ƒƒndS(Nt atom_titleRRs atom:title(RRR R R (R((RR scCstƒS(N(t collection(R((Rtdo_app_collectionscCsdkl}|ƒtƒfS(N(s textConstruct(tcontentt textConstructt noduplicates(RR((Rt do_atom_titles (RRR RR(((RR s  RcBsGtZd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCsdgS(Nuhref(Nuhref(tNone(R((RRscCs|idtƒdS(Nthref(Nshref(Rtvalidate_required_attributeRtrfc3987(R((Rt prevalidate scCs@d|ijo,|ithd|i<dd<ƒƒndS(NRRRs atom:title(RRR R R (R((RR #scCsdkl}|ƒtƒfS(N(s textConstruct(RRR(RR((RR's cCs:dkl}||iijpt‚d|_|iƒS(N(satom_namespaceR(troottatom_namespaceRt dispatchertdefaultNamespacestAssertionErrortchildR(RR((Rtdo_title+s  cCsdkl}|ƒS(N(s categories(t categories(RR$((Rtdo_app_categories1s cCsdkl}tƒS(N(s categories(R$t MediaRange(RR$((Rt do_app_accept5s ( RRRRR RR#R%R'(((RRs      N(tbaset validatorBaset validatorst extensiontextension_everywhereRR R(RR,R)R R((Rt?s