*jq p S r SSKr/ SQr " S S5 rS rS rS S jrS rS r1 SkR r S rg)z$Miscellaneous WSGI-related Utilities N)FileWrapperguess_schemeapplication_urirequest_urishift_path_infosetup_testing_defaults is_hop_by_hopc . \ rS rSrSrSS jrS rS rSrg) r z1Wrapper to convert file-like objects to iterablesc b Xl X l [ US5 ( a UR U l g g )Nclose)filelikeblksizehasattrr )selfr r s 3/opt/alt/python313/lib64/python3.13/wsgiref/util.py__init__FileWrapper.__init__ s) 8G$$!DJ % c U $ N )r s r __iter__FileWrapper.__iter__ s r c j U R R U R 5 nU( a U$ [ er )r readr StopIteration)r datas r __next__FileWrapper.__next__ s( }}!!$,,/Kr )r r r N)i ) __name__ __module____qualname____firstlineno____doc__r r r __static_attributes__r r r r r s ;(r r c 0 U R S5 S; a gg)zMReturn a guess for whether 'wsgi.url_scheme' should be 'http' or 'https' HTTPS)yeson1httpshttp)get)environs r r r s {{7//r c U S S- nSSK Jn U R S5 ( a XS - nO9XS - nU S S:X a U S S :w a US U S - - nOU S S:w a US U S - - nX" U R S5 =( d S SS9- nU$ )z@Return the application's base URI (no PATH_INFO or QUERY_STRING)wsgi.url_schemez://r quote HTTP_HOSTSERVER_NAMEr, SERVER_PORT443:80SCRIPT_NAME/latin1)encoding)urllib.parser3 r. )r/ urlr3 s r r r % s # $U *C"{{;{##}%%$%0}%.sW]333}%-sW]3335]+2sXFFCJr c [ U 5 nSSKJn U" U R SS5 SSS9nU R S5 ( d X$S S - nOX$- nU( a! U R S5 ( a USU S - - nU$ ) zBReturn the full request URI, optionally including the query stringr r2 PATH_INFO z/;=,r<