]  @sddlZddlZddlZejdejZejdZejdZddZ dej dej d ej d ej d ejd ejiZGd ddZdaddZdS)Nz'(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)z^\s*\((.*)\)\s*$z%^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$cCsMtj|}|s%td||j\}}|tjj|fS)Nz"bad package restriction syntax: %r)re_splitComparisonmatch ValueErrorgroups distutilsversion StrictVersion)predrescompZverStrr 5/opt/alt/python35/lib64/python3.5/versionpredicate.pysplitUps rz>=z!=c@s4eZdZddZddZddZdS)VersionPredicatecCs|j}|stdtj|}|sCtd||j\|_}|j}|rtj|}|std||jd}dd|jdD|_|jstd|n g|_dS) Nzempty package restrictionzbad package name in %rzexpected parenthesized list: %rrcSsg|]}t|qSr )r).0ZaPredr r r ts z-VersionPredicate.__init__..,zempty parenthesized list in %r) striprre_validPackagerrnamere_parensplitr )selfZversionPredicateStrrZparenstrr r r __init__`s$     zVersionPredicate.__init__cCsF|jr;dd|jD}|jddj|dS|jSdS)NcSs*g|] \}}|dt|qS) )r)rcondverr r r r}s z,VersionPredicate.__str__..z (z, ))r rjoin)rseqr r r __str__{s zVersionPredicate.__str__cCs5x.|jD]#\}}t|||s dSq WdS)NFT)r compmap)rrrrr r r satisfied_byszVersionPredicate.satisfied_byN)__name__ __module__ __qualname__rr#r%r r r r rs A  rcCstdkr!tjdtja|j}tj|}|sRtd||jdpdd}|rtj j |}|jd|fS)Nz=([a-zA-Z_]\w*(?:\.[a-zA-Z_]\w*)*)(?:\s*\(\s*([^)\s]+)\s*\))?$z"illegal provides specification: %r) _provision_rxrecompileASCIIrrrgrouprrr)valuemrr r r split_provisions   r2)r,Zdistutils.versionroperatorr-r.rrrrltleeqgtgener$rr+r2r r r r s      !n