U e @sddlmZddlZddlZddlmZGdddZGdddeZGdd d eZGd d d eZ d d Z e ee dee e iZddZd dgZdS)) annotationsN)ClassVarc@s0eZdZddddZddddZdd Zd S) TypeDataNone)returncCs||_||_dSN) default_typeas_type)selfrr r G/opt/hc_python/lib/python3.8/site-packages/virtualenv/config/convert.py__init__ szTypeData.__init__strcCs|jjd|jd|jdS)Nz(base=z, as=)) __class____name__rr r r r r __repr__ szTypeData.__repr__cCs ||Sr)rr valuer r r convertszTypeData.convertN)r __module__ __qualname__r rrr r r r rsrc @s4eZdZUdddddddddZded<ddZdS) BoolTypeTF)1yestrueon0nofalseoffzClassVar[dict[str, bool]]BOOLEAN_STATEScCs.||jkr d|}t||j|S)NzNot a boolean: )lowerr" ValueError)r rmsgr r r r s zBoolType.convertN)rrrr"__annotations__rr r r r rs  rc@seZdZddZdS)NoneTypecCs|sdSt|Sr)rrr r r r(szNoneType.convertN)rrrrr r r r r''sr'c@s&eZdZddZd ddZddZdS) ListTypecCsdS)zno op.Nr rr r r _validate/szListType._validateTcs@|}g}|D]}|tj}||qfdd|DS)Ncsg|]}|qSr )r ).0irr r 8sz$ListType.convert..) split_valuessplitospathsepextend)r rflattenvaluesresultZa_valueZ sub_valuesr rr r2s    zListType.convertcCsNt|ttfrB|}t|dkr,|d}tddd|D}nt|}|S)z Split the provided value into a list. First this is done by newlines. If there were no newlines in the text, then we next try to split by comma. ,NcSsg|] }|qSr )strip)r*xr r r r,Hsz)ListType.split_values..) isinstancerbytes splitlineslenr.filterlist)r rr3r r r r-:s  zListType.split_valuesN)T)rrrr)rr-r r r r r(.s r(c CsHz ||WStk rB}ztd||||W5d}~XYnXdS)zNConvert the value as a given type where the value comes from the given source.z(%s failed to convert %r as %r because %rN)r Exceptionloggingwarning)rr source exceptionr r r rOs  rcCs0t|j}|jdkr|n|j}t|t||Sr)typedefault_CONVERTgetr)actionrr r r r get_type[s rI) __future__rr@r/typingrrrr'r(rboolrDr>rFrI__all__r r r r s   !