B ɋu@sxdZddlmZmZddlZddlZddlZddlmZddl m Z ddl m Z e dZejdkZGd d d eZdS) zMA Python specification is an abstract requirement definition of a interpreter)absolute_importunicode_literalsN) OrderedDict)fs_is_case_sensitive) ensure_strz@^(?P[a-zA-Z]+)?(?P[0-9.]+)?(?:-(?P32|64))?$win32c@sPeZdZdZddZeddZddZedd Z d d Z d d Z ddZ dS) PythonSpecz1Contains specification about a Python InterpretercCs.||_||_||_||_||_||_||_dS)N)str_specimplementationmajorminormicro architecturepath)selfr r r r r rrrM/opt/alt/python37/lib/python3.7/site-packages/virtualenv/discovery/py_spec.py__init__szPythonSpec.__init__cCsZd\}}}}}}tj|r$|}n"d}tt|} | r._int_or_noneversioncss|]}|rt|VqdS)N)r).0irrr -sz.PythonSpec.from_string_spec...r TimplpypythonCPythonarch) osrisabsrematchPATTERN groupdicttuplesplitlen ValueErrorrstr)clsZ string_specr r r r r$rokr(rgroupsrZversionsZ version_datarrrfrom_string_specsB         zPythonSpec.from_string_specc cst}|jr8d||j<tr8d||j<d||j<d|d<|j|j|jf}y|d|d}Wnt k rzYnXx`| D]T\}}xJt t |ddD]6}|d|}d |ddd |D}||fVqWqWdS) NFTr"rz{}{}rcss|]}t|VqdS)N)r/)rrrrrrZsz,PythonSpec.generate_names..)rr rlowerupperr r r indexr.itemsranger-formatjoin)rZimplsrr r(atZcur_verspecrrrgenerate_namesGs"  zPythonSpec.generate_namescCs|jdk otj|jS)N)rr%r&)rrrris_abs]szPythonSpec.is_abscCs|jr|jr|j|jkrdS|jdk r>|j|jkr>dS|jdk rX|j|jkrXdSxJt|j|j|jf|j|j|jfD]$\}}|dk r||dk r|||kr|dSq|WdS)z\called when there's a candidate metadata spec to see if compatible - e.g. PEP-514 on WindowsFNT) r?rr r5rzipr r r )rr=Zourreqrrr satisfiesas,zPythonSpec.satisfiescs&dtjdfdddDS)Nz{}({})z, c3s.|]&}t|dk rd|t|VqdS)Nz{}={})getattrr:)rk)rrrrssz)PythonSpec.__unicode__..)r r r r rr)r:type__name__r;)rr)rr __unicode__os  zPythonSpec.__unicode__cCs t|S)N)rrG)rrrr__repr__yszPythonSpec.__repr__N) rF __module__ __qualname____doc__r classmethodr3r>propertyr?rBrGrHrrrrrs +  r)rK __future__rrr%r'sys collectionsrZvirtualenv.inforZvirtualenv.util.sixrcompiler)platformZIS_WINobjectrrrrrs