Rec@s]ddlZddlmZddlZddlZddlmZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZyddlZWnek rdZnXddlZddlZddlZddlZddlZyddlZWnek r-ddlZnXddlZddlmZddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1e j2e3Z4e j5dZ6e j5dZ7e j5d Z8e j5d Z9e j5d Z:e j5d Z;e j5d Z<e j5dZ=dZ>dZ?dZ@dZAdZBdddZCdZDdZEdZFejGdZHejGdZIejGddZJdeKfdYZLdZMdeKfd YZNd!ZOd"eKfd#YZPe j5d$e jQZRd%ZSdd&ZTd'ZUd(ZVd)ZWd*ZXd+ZYe j5d,e jZZ[e j5d-Z\dd.Z]e j5d/Z^d0Z_d1Z`d2Zad3Zbd4Zcd5Zdd6eKfd7YZed8eKfd9YZfd:eKfd;YZgdqZhdeidCZjdDZkdrZldKeKfdLYZme j5dMZne j5dNZoe j5dOZpdPZdQZqer.ddRlmrZsmtZtmuZudSe%jvfdTYZvdUesfdVYZrdWere(fdXYZwnejxdY Zyeydskrd[e%jzfd\YZzerd]e%j{fd^YZ{qnd_e&j|fd`YZ|erdae&j}fdbYZ}ndce&j~fddYZ~deZdfeKfdgYZdhefdiYZdjefdkYZdle)fdmYZdneKfdoYZdpZdS(tiN(tdeque(tiglobi(tDistlibException(t string_typest text_typetshutilt raw_inputtStringIOtcache_from_sourceturlopenturljointhttplibt xmlrpclibt splittypet HTTPHandlertBaseConfiguratort valid_identt Containert configparsertURLErrortZipFiletfsdecodetunquoteturlparses^([\w\.-]+)\s*s^([\w\.*+-]+)\s*s^(<=?|>=?|={2,3}|[~!]=)\s*s*^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*s^or\b\s*s ^and\b\s*s(\S+)\s*s(([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)csCdfdfdfd|S(se Parse a marker string and return a dictionary containing a marker expression. The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in the expression grammar, or strings. A string contained in quotes is to be interpreted as a literal string, and a string not contained in quotes is a variable (such as os_name). cSstj|}|r8|jd}||j}nH|sMtdn3|d}|dkrvtd|ndj|d}|d}|g}x|r4|d|krPq|d|kr|j||d}qtj|}|s td|n|j|jd||j}qWdj|}td||j|dj|}|dj }||fS( Nisunexpected end of inputs'"sinvalid expression: %stiserror in string literal: %ssunterminated string: %s( t IDENTIFIERtmatchtgroupstendt SyntaxErrortreplacetappendt STRING_CHUNKtjointlstrip(t remainingtmtresulttqtoqtpartsts((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt marker_varAs:        cs|rh|ddkrh|dj\}}|ddkrUtd|n|dj}n|\}}xp|rtj|}|sPn|jd}||j}|\}}i|d6|d6|d6}q}W|}||fS( Nit(it)sunterminated parenthesis: %stoptlhstrhs(R"Rt MARKER_OPRRR(R#R%R.R$R-R/(tmarkerR*(s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt marker_expres  cs|\}}x`|rttj|}|s4Pn||j}|\}}idd6|d6|d6}qW||fS(NtandR-R.R/(tANDRR(R#R.R$R/(R2(s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt marker_andxs cs|\}}x`|rttj|}|s4Pn||j}|\}}idd6|d6|d6}qW||fS(NtorR-R.R/(tORRR(R#R.R$R/(R5(s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyR1s ((t marker_string((R1R5R2R*s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt parse_marker8s $  c Cs?|j}| s"|jdr&dStj|}|sNtd|n|jd}||j}d}}}}|r|ddkr|jdd}|dkrtd|n|d|!} ||dj }g}x| rtj| }|std| n|j |jd| |j} | sPPn| dd krstd | n| dj } qW|sd}qn|r^|dd krA|dj }t j|}|std |n|jd}t |} | j o| js(td |n||jj }q^d} |ddkro| |\}}q^|jdd}|dkrtd|n|d|!} ||dj }tj| r| | \}} q^tj| }|s td| n|jd} | |jj } | rLtd| nd| fg}n|r|ddkrtd|n|dj }t|\}}n|r|ddkrtd|n|s|}n0d|djg|D]}d|^qf}td|d|d|d|d|d|S( s Parse a requirement passed in as a string. Return a Container whose attributes contain the various parts of the requirement. t#sname expected: %sit[t]isunterminated extra: %ssmalformed extra: %st,scomma expected in extras: %st@sinvalid URI: %ssInvalid URL: %scSstj|}d}|rg}xtr|jd}||j}tj|}|srtd|n|jd}|j||f||j}| s|ddkrPn|dj }tj|}|s$td|q$q$W|sd}qn||fS(s| Return a list of operator, version tuples if any are specified, else None. isinvalid version: %sR=isinvalid constraint: %sN( t COMPARE_OPRtNonetTrueRRtVERSION_IDENTIFIERRRR"(t ver_remainingR$tversionsR-tv((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt get_versionss,  R+R,sunterminated parenthesis: %ssinvalid constraint: %ss~=t;sinvalid requirement: %ssunexpected trailing data: %ss%s %ss, tnametextrast constraintsR1turlt requirementN(tstript startswithR@RRRRRtfindR"Rt NON_SPACERtschemetnetlocR?RBR9R!R(treqR#R$tdistnameRIt mark_exprRDturitiR)ttRFt_REtrstcon((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytparse_requirements          0cCsd}i}x|D]\}}}tjj||}xt|D]}tjj||} xt| D]v} ||| } |dkr|j| dqo||| } |jtjjdjd} | d| || s     cCsVt|tr|j}ni}x+|D]#}||kr+||||9RcCstjj|}||jkrtjj| r|jj|tjj|\}}|j|tj d||j stj |n|j r|j j|qndS(Ns Creating %s(R^R_RRRRRRRRRtmkdirRR(RR_RR((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyR;s"   c Cst|| }tjd|||js|sD|j||r{|sSd}q{|j|sht|t|}ni}|rt t drt j j |d(RHRmRkR(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt__repr__scCsdt|tst}nH|j|jko]|j|jko]|j|jko]|j|jk}|S(N(R}R.RRHRmRkR(RtotherR%((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt__eq__s ( RRRRRR/R1Rt__hash__(((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyR.s    s(?P(\w|[-.+])+) \s*=\s*(?P(\w+)([:\.]\w+)*) \s*(\[\s*(?P[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])? c CsStj|}|sId}d|ks3d|krOtd|qOn|j}|d}|d}|jd}|dkr|d}}n4|dkrtd|n|jd\}}|d } | dkrd|ksd|kr td|ng} n(g| jd D]} | j^q"} t|||| }|S( NR;R<sInvalid specification '%s'RHtcallablet:iiRR=( tENTRY_REtsearchR@Rt groupdicttcountRRMR.( t specificationR$R%RRHR_tcolonsRmRkRR((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRs2          (cCs|d krd}ntjdkrHdtjkrHtjjd}ntjjd}tjj|rtj|tj }|st j d|qnGytj |t }Wn-tk rt j d|dt t}nX|s tj}t j d |ntjj||S( s Return the default base location for distlib caches. If the directory does not exist, it is created. Use the suffix provided for the base directory, and default to '.distlib' if it isn't provided. On Windows, if LOCALAPPDATA is defined in the environment, then it is assumed to be a directory, and will be the parent directory of the result. On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home directory - using os.expanduser('~') - will be the parent directory of the result. The result is just the directory '.distlib' in the parent directory as determined above, or with the name specified with ``suffix``. s.distlibtntt LOCALAPPDATAs $localappdatat~s(Directory exists but is not writable: %ssUnable to create %stexc_infos#Default location unusable, using %sN(R@R^RHtenvironR_t expandvarst expanduserRRRRtwarningtmakedirsRAtOSErrorRRRR!(RkR%tusable((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytget_cache_bases&       cCs`tjjtjj|\}}|r?|jdd}n|jtjd}||dS(s Convert an absolute path to a directory name for use in a cache. The algorithm used is: #. On Windows, any ``':'`` in the drive is replaced with ``'---'``. #. Any occurrence of ``os.sep`` is replaced with ``'--'``. #. ``'.cache'`` is appended. R4s---s--s.cache(R^R_t splitdriveRRR`(R_RR((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytpath_to_cache_dir s $cCs|jds|dS|S(NR](tendswith(R)((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt ensure_slashscCsd}}d|kr^|jdd\}}d|krC|}q^|jdd\}}n|rst|}n|rt|}n|||fS(NR>iR4(R@trsplitRR(RRtusernametpasswordRm((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytparse_credentials$s    cCs tjd}tj||S(Ni(R^tumask(R%((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytget_process_umask3s cCsXt}d}x3t|D]%\}}t|tst}PqqW|dk sTt|S(N(RAR@t enumerateR}RRRa(tseqR%RWR)((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytis_string_sequence8ss3([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-([a-z0-9_.+-]+)s -py(\d\.?\d?)cCsd}d}t|jdd}tj|}|r[|jd}||j }n|rt|t|dkrtj tj |d|}|r|j }|| ||d|f}qn|dkrt j |}|r|jd|jd|f}qn|S(sw Extract name, version, python version from a filename (no extension) Return name, version, pyver or None t t-is\biN( R@RRtPYTHON_VERSIONR6RtstartRbtreRtescapeRtPROJECT_NAME_AND_VERSION(tfilenamet project_nameR%tpyverR$tn((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytsplit_filenameGs"" ! 's-(?P[\w .-]+)\s*\(\s*(?P[^\s)]+)\)$cCsRtj|}|s(td|n|j}|djj|dfS(s A utility method used to get name and version from a string. From e.g. a Provides-Dist value. :param p: A value in a form 'foo (1.0)' :return: The name and version as a tuple. s$Ill-formed name/version string: '%s'RHtver(tNAME_VERSION_RERRR7RMR(RR$R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytparse_name_and_versioncs  cCs t}t|pg}t|p'g}d|krS|jd||O}nx|D]}|dkr||j|qZ|jdr|d}||krtjd|n||kr|j|qqZ||krtjd|n|j|qZW|S(Nt*RUisundeclared extra: %s(RRRRNRRB(t requestedt availableR%trtunwanted((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt get_extrasrs&          cCsi}yqt|}|j}|jd}|jdsRtjd|n$tjd|}tj |}Wn&t k r}tj d||nX|S(Ns Content-Typesapplication/jsons(Unexpected response for JSON request: %ssutf-8s&Failed to get external data for %s: %s( R RtgetRNRRRRRRRt exception(RKR%tresptheaderstcttreaderte((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt_get_external_datas  s'https://www.red-dove.com/pypi/projects/cCs9d|dj|f}tt|}t|}|S(Ns%s/%s/project.jsoni(tupperR t_external_data_base_urlRp(RHRKR%((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytget_project_datas cCs6d|dj||f}tt|}t|S(Ns%s/%s/package-%s.jsoni(RqR RrRp(RHtversionRK((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytget_package_datastCachecBs)eZdZdZdZdZRS(s A class implementing a cache for resources that need to live in the file system e.g. shared libraries. This class was moved from resources to here because it could be used by other modules, e.g. the wheel module. cCsvtjj|s"tj|ntj|jd@dkrQtjd|ntjjtjj ||_ dS(su Initialise an instance. :param base: The base directory where the cache should be located. i?isDirectory '%s' is not privateN( R^R_RRCRRRRBRtnormpathRj(RRj((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRs cCs t|S(sN Converts a resource prefix to a directory name in the cache. (RH(RRm((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt prefix_to_dirscCsg}xtj|jD]}tjj|j|}yZtjj|s^tjj|rntj|n"tjj|rt j |nWqt k r|j |qXqW|S(s" Clear the cache. ( R^R RjR_R!RRRRRRRR(Rt not_removedtfn((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytclears$ (RRt__doc__RRxR{(((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRvs  t EventMixincBs>eZdZdZedZdZdZdZRS(s1 A very simple publish/subscribe system. cCs i|_dS(N(t _subscribers(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRscCs\|j}||kr+t|g|| %s;s %s;t}s (RRRR!(RR%RRRR((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytdots    ( RRRRRRRRRRtpropertyRR(((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyR!s      3s.tar.gzs.tar.bz2s.tars.zips.tgzs.tbzs.whlc sfd}tjjtd}|dkr|jdrZd}q|jdrxd}d}q|jdrd }d }q|jd rd}d}qtd|nz|dkrt|d}|rZ|j}x|D]}||qWqZnBt j ||}|rZ|j }x|D]}||qCWn|dkrt j ddkrxA|jD]0} t| jts| jjd| _qqWn|jWd|r|jnXdS(Ncs|t|ts!|jd}ntjjtjj|}|j se|tjkrxt d|ndS(Nsutf-8spath outside destination: %r( R}RtdecodeR^R_RR!RNR`R(R_R(tdest_dirtplen(s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt check_paths !#s.zips.whltzips.tar.gzs.tgzttgzsr:gzs.tar.bz2s.tbzttbzsr:bz2s.tarttarRfsUnknown format for %riisutf-8(s.zips.whl(s.tar.gzs.tgz(s.tar.bz2s.tbz(R^R_RRbR@RIRRtnamelistttarfileRtgetnamesRxRt getmembersR}RHRRt extractallR( tarchive_filenameRtformatRRtarchiveRtnamesRHttarinfo((RRs/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt unarchivesH           c Cstj}t|}t|d}xutj|D]d\}}}xR|D]J}tjj||}||} tjj| |} |j|| qPWq:WWdQX|S(s*zip a directory tree into a BytesIO objectRN( tiotBytesIORbRR^twalkR_R!R( t directoryR%tdlentzfRcR"RRHtfulltrelRl((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytzip_dirs    RtKtMtGtTtPtProgresscBseZdZdddZdZdZdZdZedZ ed Z d Z ed Z ed Z RS( tUNKNOWNiidcCsV|dks||kst||_|_||_d|_d|_t|_dS(Ni( R@RaRtcurtmaxtstartedtelapsedRtdone(Rtminvaltmaxval((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRs    cCs}|j|kst|jdks9||jks9t||_tj}|jdkri||_n||j|_dS(N(RRaRR@RttimeRR(Rtcurvaltnow((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytupdates$   cCs*|dkst|j|j|dS(Ni(RaRR(Rtincr((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt incrementscCs|j|j|S(N(RR(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRWscCs/|jdk r"|j|jnt|_dS(N(RR@RRAR(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytstopscCs|jdkr|jS|jS(N(RR@tunknown(R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytmaximumscCsZ|jrd}nD|jdkr*d}n,d|j|j|j|j}d|}|S(Ns100 %s ?? %gY@s%3d %%(RRR@RR(RR%RE((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt percentages   " cCsU|dkr|jdks-|j|jkr6d}ntjdtj|}|S(Nis??:??:??s%H:%M:%S(RR@RRRtstrftimetgmtime(RtdurationR%((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytformat_duration*s- cCs|jrd}|j}nd}|jdkr9d}ne|jdksZ|j|jkrcd}n;t|j|j}||j|j:}|d|j}d||j|fS(NtDonesETA iiis%s: %s(RRRR@RRtfloatR(RRmRX((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytETA3s   ! cCsh|jdkrd}n|j|j|j}x(tD] }|dkrLPn|d:}q6Wd||fS(Nigig@@s%d %sB/s(RRRtUNITS(RR%tunit((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pytspeedFs   (RRRRRRRWRRRRRRR(((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRs    s \{([^}]*)\}s[^/\\,{]\*\*|\*\*[^/\\,}]s^[^{]*\}|\{[^}]*$cCsZtj|r(d}t||ntj|rPd}t||nt|S(sAExtended globbing function that supports ** and {opt1,opt2,opt3}.s7invalid glob %r: recursive glob "**" must be used alones2invalid glob %r: mismatching set marker '{' or '}'(t_CHECK_RECURSIVE_GLOBR6Rt_CHECK_MISMATCH_SETt_iglob(t path_globR((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyR[sc cstj|d}t|dkrt|dksBt||\}}}x3|jdD]4}x+tdj|||fD] }|VqWqaWnd|krxt|D] }|VqWn|jdd\}}|dkrd}n|dkr d}n|jd}|jd }x]tj |D]L\}}} tj j |}x(ttj j||D] } | VqtWq7WdS( NiiR=Rs**R'RcR]s\( t RICH_GLOBRRbRaRR!t std_iglobR"R^RR_Rw( Rtrich_path_globRmRRktitemR_tradicaltdirRRz((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRfs*%      "(t HTTPSHandlertmatch_hostnametCertificateErrortHTTPSConnectioncBseZdZeZdZRS(c Cstj|j|jf|j}t|dtrI||_|jnt t ds|j rmt j }n t j }t j||j|jd|dt jd|j |_nt jt j}t t dr|jt jO_n|jr|j|j|jni}|j rZt j |_|jd|j tt dtrZ|j|d ((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt__exit__Is(RRRtdefaultsR?R@(((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyR:?s    t CSVReadercBs)eZdZdZdZeZRS(cKsd|krM|d}tjddkrAtjd|}n||_nt|dd|_tj|j|j|_dS(NRiisutf-8R_Rf( RxRRRRR9tcsvRnRA(RRR((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyRNs   cCs|S(N((R((s/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_vendor/distlib/util.pyt__iter__YscCskt|j}tjddkrgxBt|D]1\}}t|ts/|jd||s                    Y y   /       )            ,H6 ] +)   7.