U n a@sdZddlZddlZddlmZddlmZddlm Z e rhddl m Z m Z m Z mZmZmZmZedZdZed Zd d d d dgZGdd d eZdddZdddZddZddZGdddeZGdd d eZGdd d eZ e reee efZ!Gdd d eZ"dS)z PEP 610 N)six)parse)MYPY_CHECK_RUNNING)AnyDictIterableOptionalTypeTypeVarUnionTzdirect_url.jsonz.^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$ DirectUrlDirectUrlValidationErrorDirInfo ArchiveInfoVcsInfoc@s eZdZdS)rN)__name__ __module__ __qualname__rr`C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-6mt8ur68\pip\_internal\models\direct_url.pyrscCsH||kr |S||}tjr(|tkr(tj}t||sDtd||||S)z3Get value from dictionary and verify expected type.z-{!r} has unexpected type for {} (expected {}))rPY2str string_types isinstancerformatd expected_typekeydefaultvaluerrr_get"s r"cCs(t||||}|dkr$td||S)Nz{} must have a value)r"rrrrrr _get_required3sr#cCsFdd|D}|stdt|dkr.td|ddk s>t|dS)NcSsg|]}|dk r|qSNr).0inforrr =sz#_exactly_one_of..z/missing one of archive_info, dir_info, vcs_infoz1more than one of archive_info, dir_info, vcs_infor)rlenAssertionError)infosrrr_exactly_one_of;s r,cKsdd|DS)z Make dict excluding None values.cSsi|]\}}|dk r||qSr$r)r%kvrrr Msz _filter_none..)items)kwargsrrr _filter_noneJsr2c@s.eZdZdZd ddZeddZddZdS) rvcs_infoNcCs"||_||_||_||_||_dSr$vcsrequested_revision commit_idresolved_revisionresolved_revision_type)selfr5r7r6r8r9rrr__init__Ss zVcsInfo.__init__c CsF|dkr dS|t|tdt|tdt|tdt|tdt|tddS)Nr5r7r6r8r9)r5r7r6r8r9)r#rr"clsrrrr _from_dictas     zVcsInfo._from_dictcCst|j|j|j|j|jdS)Nr4)r2r5r6r7r8r9r:rrr_to_dictnszVcsInfo._to_dict)NNNrrrnamer; classmethodr>r@rrrrrPs  c@s.eZdZdZd ddZeddZddZdS) r archive_infoNcCs ||_dSr$hash)r:rFrrrr;|szArchiveInfo.__init__cCs|dkr dS|t|tddS)NrFrE)r"rr<rrrr>szArchiveInfo._from_dictcCs t|jdS)NrE)r2rFr?rrrr@szArchiveInfo._to_dict)NrArrrrrys   c@s.eZdZdZd ddZeddZddZd S) rdir_infoFcCs ||_dSr$editable)r:rIrrrr;szDirInfo.__init__cCs"|dkr dS|t|tddddS)NrIF)r rH)r#boolr<rrrr>s zDirInfo._from_dictcCst|jp ddS)NrH)r2rIr?rrrr@szDirInfo._to_dictN)FrArrrrrs   c@sZeZdZdddZddZeddZdd Zed d Z d d Z eddZ ddZ dS)r NcCs||_||_||_dSr$)urlr& subdirectory)r:rKr&rLrrrr;szDirectUrl.__init__cCsRd|kr |S|dd\}}t|jtr@|jjdkr@|dkr@|St|rN|S|S)N@r(git)splitrr&rr5 ENV_VAR_REmatch)r:netloc user_passnetloc_no_user_passrrr_remove_auth_from_netlocs   z"DirectUrl._remove_auth_from_netloccCs8t|j}||j}t|j||j|j|j f}|S)zurl with user:password part removed unless it is formed with environment variables as specified in PEP 610, or it is ``git`` in the case of a git URL. ) urllib_parseurlsplitrKrUrR urlunsplitschemepathqueryfragment)r:purlrRsurlrrr redacted_urls   zDirectUrl.redacted_urlcCs||dSr$) from_dictto_dictr?rrrvalidateszDirectUrl.validatec CsRtt|tdt|tdttt|tdtt|tdt t|tdgdS)NrKrLrDrGr3)rKrLr&) r r#rr"r,rr>dictrrr<rrrr`s  zDirectUrl.from_dictcCs&t|j|jd}|j||jj<|S)N)rKrL)r2r_rLr&r@rB)r:resrrrras zDirectUrl.to_dictcCs|t|Sr$)r`jsonloads)r=srrr from_jsonszDirectUrl.from_jsoncCstj|ddS)NT) sort_keys)redumpsrar?rrrto_jsonszDirectUrl.to_json)N) rrrr;rUpropertyr_rbrCr`rarhrkrrrrr s     )N)N)#__doc__rere pip._vendorrZpip._vendor.six.moves.urllibrrVpip._internal.utils.typingrtypingrrrrr r r r DIRECT_URL_METADATA_NAMEcompilerP__all__ Exceptionrr"r#r,r2objectrrrZInfoTyper rrrrs6   $    )