*j/SSKrSSKrSSKrSSKrSSKrS/r\R"SS5r"SS5r "SS5r "SS 5r S r S r S rS rSrg)NRobotFileParser RequestRatezrequests secondscf\rSrSrSSjrSrSrSrSrSr Sr S r S r S r S rS rSrSrg)rc/Ul0Ul/UlSUlSUlSUlUR U5 SUlg)NFr)entriesgroupssitemaps default_entry disallow_all allow_allset_url last_checkedselfurls 9/opt/alt/python313/lib64/python3.13/urllib/robotparser.py__init__RobotFileParser.__init__sB   !! ScUR$N)rrs rmtimeRobotFileParser.mtime(s   rc6SSKnUR5UlgNr)timer)rrs rmodifiedRobotFileParser.modified1s  IIKrcnXl[RRU5SSuUlUlg)N)rurllibparseurlsplithostpathrs rrRobotFileParser.set_url9s+%||44S9!A> 49rc[RRUR5nUR 5nUR UR SS5R55 g![RRaYnURS;aSUl O'URS:aURS:aSUl UR5 SnAgSnAff=f)Nzutf-8surrogateescape)iiTii)r$requesturlopenrreadr%decode splitlineserror HTTPErrorcoder r close)rfrawerrs rr.RobotFileParser.read>s L&&txx0A&&(C JJszz'+<=HHJ K||%% xx:%$(!SSXX^!% IIKK  s)A++C" ACC"c URRU5 URHXnUR5nX R;aXRU'M2[ URUU5URU'MZ gr)rappend useragentslowerr merge_entries)rentryagents r _add_entryRobotFileParser._add_entryLsc E"%%EKKMEKK'%* E"%24;;u3Eu%M E" &rc/nSn[5nUR5 UGHnURS5nUS:aUSUnUR5nU(dM9UR SS5n[ U5S:XdM\USR5R 5US'USR5US'USS:XaEUS:XaURU5 [5nUSnURRU5 SnMUSS:Xa7US:wa.SnURR[USS55 GM!GM$USS :Xa7US:wa.SnURR[USS 55 GMaGMdUSS :XaGUS:wa>USR5R5(a[US5UlSnGMGMUSS :XaUS:waUSR S 5n[ U5S:XauUSR5R5(aOUSR5R5(a)[![US5[US55UlSnGM`GMcUSS:XdGMoUR$RUS5 GM US:waURU5 gg![a GMf=f![a GMf=f)Nr#:r"z user-agentdisallowFallowTz crawl-delayz request-rate/sitemap)Entryrfindstripsplitlenr<r@r;r: rulelinesRuleLine ValueErrorisdigitintdelayrreq_rater ) rlinesrstater>linei product_tokennumberss rr%RobotFileParser.parseUs   D #AAvBQx::s r _find_entryRobotFileParser._find_entrysh   12  L[['')E ** *{{s##rc|UR(agUR(agUR(dg[RR U5n[RR SS/USSQ75n[U5nU(dSnUS:XagURU5nUcgURU5$)NFTrErHz /robots.txt) r r rr$r%r& urlunsplit normalize_urird allowance)rrcr parsed_urlr>s r can_fetchRobotFileParser.can_fetchs    >>   \\**3/ ll%%r2&? 12&?@C C -   + =s##rcpUR5(dgURU5nUcgUR$r)rrdrTrbs r crawl_delayRobotFileParser.crawl_delays2zz||  + ={{rcpUR5(dgURU5nUcgUR$r)rrdrUrbs r request_rateRobotFileParser.request_rates2zz||  + =~~rc>UR(dgUR$r)r rs r site_mapsRobotFileParser.site_mapss}}}}rc URnURbXR/-nSR[S[ [ U555$)Nz )rr joinfiltermapstr)rrs r__str__RobotFileParser.__str__sE,,    )!3!3 44G{{6$C(9:;;r) r r r rr r'rr(r rN)rg)__name__ __module__ __qualname____firstlineno__rrrrr.r@r%rdrlrorrrur|__static_attributes__rrrrsG !(? LNG#R$$6 A--) &&tyy11tyy>A--rc|UR(aSOSS-UR-UR(aS-$S-$)NAllowDisallowz: rrg)rjr(rrs rr|RuleLine.__str__s; NN dBTYYN..32 3.02 3r)rjrrr(N)r~rrrrrar|rrrrrPrPs#* 3rrPc,\rSrSrSrSrSrSrSrg)rJi c</Ul/UlSUlSUlgr)r;rOrTrUrs rrEntry.__init__ s  rcUR(dg/nURHnURSU35 M URbURSUR35 URb7URnURSURSUR 35 UR (a*UR[[UR 55 OURS5 SRU5$)Nrgz User-agent: z Crawl-delay: zRequest-rate: rHzAllow: ) r;r:rTrUrequestssecondsrOextendrzr{rx)rretr?rates rr| Entry.__str__s__E JJeW- .% :: ! JJtzzl3 4 == $==D JJ a ~F G >> JJs3/ 0 JJx yy~rcUcSUR;$URS5SR5nURH"nUS:wdM UR5nX!;dM" g g)Nr^rHrTF)r;rMr<)rrcr?s rraEntry.applies_to#sa  $//) )OOC(+113 __E| % % rcSnSnURHNnURU5nU(dMXR:aUnURnM2XR:XdM9U(aMBURnMP U$)NT)rOrarj)rr best_matchrjrXrs rrjEntry.allowance0s\   NND)Aq>!"J $I_YY $I#r)rTrUrOr;N) r~rrrrr|rarjrrrrrJrJ s " rrJcz[RRUSS9n[RRUSS9$)Nr+)errors)r$r%unquotequote)r(unquoteds r normalizerBs7||##D1B#CH <<  h/@  AArcURS5upn[U5nU(a![R"SSU5nUSU-- nU$)N?z[^=&]+c[US5$rrrs rnormalize_uri..Js IadOr) partitionrrrr(sepquerys rririFsG~~c*Du T?D y";UC e  KrcURS5upn[R"SSU5nU(a![R"SSU5nUSU-- nU$)Nrz[^*$]+c[US5$rrrs rr#normalize_pattern..Ps y1rz[^=&*$]+c[US5$rrrs rrrRs i!or)rrrrs rrrNsQ~~c*Du 66)6 =D {$=uE e  Krc[[[RUR S555n[ S[ U5S- 5H nSXS3X'M SUS3US'SRU5$)Nr^r"z(?>.*?)z.*rrg)listrzrescaperMrangerNrx)r(partsrYs rrrVsl RYY 30 1E 1c%jl #EH:Q'$U2YK E"I 775>rc[5n[[[UR5R UR55UlUR UR -UlURc URO URUlURcURUlU$URUlU$r) rJrrysetr; __contains__rOrTrU)e1e2r>s rr=r=]s GEF3r}}#5#B#BBMMRSEllR\\1EO hh."((BHHEK$&KK$7R[[EN L>@[[EN Lr) collectionsr urllib.errorr$ urllib.parseurllib.request__all__ namedtuplerrrPrJrrirrr=rrrrsn   $$]4FG C<C