o Ec @sTdZddlZddlZddlZddlmZmZmZm Z m Z m Z m Z gdZ e dZdZedZGdd d eZ d"d eeefd e ed ed e ede ef ddZ d"d eeefd e ed ed e edef ddZdee dddfddZdedeeeffddZGdddZGdddZGdddZe eeefZGd d!d!ZdS)#z PEP 610 N)AnyDictIterableOptionalTypeTypeVarUnion) DirectUrlDirectUrlValidationErrorDirInfo ArchiveInfoVcsInfoTzdirect_url.jsonz.^\$\{[A-Za-z0-9-_]+\}(:\$\{[A-Za-z0-9-_]+\})?$c@s eZdZdS)r N)__name__ __module__ __qualname__rrR/opt/alt/python310/lib/python3.10/site-packages/pip/_internal/models/direct_url.pyr sr d expected_typekeydefaultreturncCs4||vr|S||}t||std||||S)z3Get value from dictionary and verify expected type.z-{!r} has unexpected type for {} (expected {})) isinstancer formatrrrrvaluerrr_gets rcCs(t||||}|durt|d|S)Nz must have a value)rr rrrr _get_required)srinfosInfoTypecCsFdd|D}|s tdt|dkrtd|ddusJ|dS)NcSsg|]}|dur|qSNr).0inforrr 3sz#_exactly_one_of..z/missing one of archive_info, dir_info, vcs_infoz1more than one of archive_info, dir_info, vcs_infor)r len)rrrr_exactly_one_of2s r'kwargscKsdd|DS)z Make dict excluding None values.cSsi|] \}}|dur||qSr!r)r"kvrrr Bsz _filter_none..)items)r(rrr _filter_none@sr-c @seZdZdZ   ddededeedeedeeddf d d Zed eeee fdedfd d Z deee ffddZ dS)r vcs_infoNvcs commit_idrequested_revisionresolved_revisionresolved_revision_typercCs"||_||_||_||_||_dSr!r/r1r0r2r3)selfr/r0r1r2r3rrr__init__Hs  zVcsInfo.__init__rc CsF|durdS|t|tdt|tdt|tdt|tdt|tddS)Nr/r0r1r2r3)r/r0r1r2r3)rstrrclsrrrr _from_dictVs     zVcsInfo._from_dictcCst|j|j|j|j|jdS)Nr4)r-r/r1r0r2r3r5rrr_to_dictbszVcsInfo._to_dict)NNN) rrrnamer7rr6 classmethodrrr:r<rrrrr Es* $ r c@sfeZdZdZ d deeddfddZedeeee fdedfdd Z deee ffd d Z dS) r archive_infoNhashrcC ||_dSr!r@)r5r@rrrr6o zArchiveInfo.__init__rcCs|durdS|t|tddS)Nr@rB)rr7r8rrrr:uszArchiveInfo._from_dictcCs t|jdS)NrB)r-r@r;rrrr<{s zArchiveInfo._to_dictr!) rrrr=rr7r6r>rrr:r<rrrrr ls $r c@sbeZdZdZ d deddfddZedeee e fdedfd d Z dee e ffd d Z dS)r dir_infoFeditablerNcCrAr!rE)r5rErrrr6rCzDirInfo.__init__rcCs"|durdS|t|tddddS)NrEF)rrF)rboolr8rrrr:szDirInfo._from_dictcCst|jpddS)NrF)r-rEr;rrrr<szDirInfo._to_dict)F) rrrr=rGr6r>rrr7rr:r<rrrrr s $r c @seZdZ ddededeeddfddZdedefd d Zedefd d Z dd dZ e de ee fddfddZde ee ffddZe deddfddZdefddZdefddZdS)r Nurlr# subdirectoryrcCs||_||_||_dSr!)rHr#rI)r5rHr#rIrrrr6s zDirectUrl.__init__netloccCsRd|vr|S|dd\}}t|jtr |jjdkr |dkr |St|r'|S|S)N@r%git)splitrr#r r/ ENV_VAR_REmatch)r5rJZ user_passZnetloc_no_user_passrrr_remove_auth_from_netlocs   z"DirectUrl._remove_auth_from_netloccCs<tj|j}||j}tj|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. ) urllibparseurlsplitrHrPrJ urlunsplitschemepathqueryfragment)r5ZpurlrJZsurlrrr redacted_urls  zDirectUrl.redacted_urlcCs||dSr!) from_dictto_dictr;rrrvalidatezDirectUrl.validaterc CsRtt|tdt|tdttt|tdtt|tdt t|tdgdS)NrHrIr?rDr.)rHrIr#) r rr7rr'r r:dictr r r8rrrrZs  zDirectUrl.from_dictcCs&t|j|jd}|j||jj<|S)N)rHrI)r-rYrIr#r<r=)r5resrrrr[s zDirectUrl.to_dictscCs|t|Sr!)rZjsonloads)r9r`rrr from_jsonszDirectUrl.from_jsoncCstj|ddS)NT)Z sort_keys)radumpsr[r;rrrto_jsonr]zDirectUrl.to_jsoncCst|jto |jjSr!)rr#r rEr;rrris_local_editableszDirectUrl.is_local_editabler!)rN)rrrr7r rr6rPpropertyrYr\r>rrrZr[rcrerGrfrrrrr s,    r r!)__doc__rare urllib.parserQtypingrrrrrrr__all__rZDIRECT_URL_METADATA_NAMEcompilerN Exceptionr r7rrr'r-r r r r r rrrrsR$      '