U ʗRe@sBdZddlZddlZddlZddlmZmZmZm Z m Z m Z m Z dddddgZ e d Zd Zed ZGd ddeZdeeefe eee ee ed ddZdeeefe eee eed ddZee dddddZeeeefdddZGdddZGdddZGdddZe eeefZGdddZdS)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__rr/builddir/build/BUILDROOT/alt-python38-pip-22.2.1-2.el8.x86_64/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/models/direct_url.pyr s)d expected_typekeydefaultreturncCs4||kr |S||}t||s0td||||S)z3Get value from dictionary and verify expected type.z-{!r} has unexpected type for {} (expected {})) isinstancer formatrrrrvaluerrr_gets rcCs(t||||}|dkr$t|d|S)Nz must have a value)rr rrrr _get_required)srInfoType)infosrcCsFdd|D}|stdt|dkr.td|ddk s>t|dS)NcSsg|]}|dk r|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 lenAssertionError)r rrr_exactly_one_of2s r()kwargsrcKsdd|DS)z Make dict excluding None values.cSsi|]\}}|dk r||qSr!r)r"kvrrr Bsz _filter_none..)items)r)rrr _filter_none@sr.c@sdeZdZdZd eeeeddddZeeeee feddddZ eee fd d d Z dS) r vcs_infoN)vcs commit_idrequested_revisionrcCs||_||_||_dSr!r0r2r1)selfr0r1r2rrr__init__HszVcsInfo.__init__rrcCs2|dkr dS|t|tdt|tdt|tddS)Nr0r1r2)r0r1r2)rstrrclsrrrr _from_dictRs   zVcsInfo._from_dictrcCst|j|j|jdS)Nr3)r.r0r2r1r4rrr_to_dict\s zVcsInfo._to_dict)N) rrrnamer7rr5 classmethodrrr:r=rrrrr Es " c@s`eZdZdZd eeddddZeeeee feddddZ eee fd d d Z dS) r archive_infoN)hashrcCs ||_dSr!rA)r4rArrrr5gszArchiveInfo.__init__r6cCs|dkr dS|t|tddS)NrArB)rr7r8rrrr:mszArchiveInfo._from_dictr;cCs t|jdS)NrB)r.rAr<rrrr=sszArchiveInfo._to_dict)N) rrrr>rr7r5r?rrr:r=rrrrr ds "c@s\eZdZdZd eddddZeeee e fedddd Z ee e fd d d Z dS)r dir_infoFN)editablercCs ||_dSr!rD)r4rDrrrr5zszDirInfo.__init__r6cCs"|dkr dS|t|tddddS)NrDF)rrE)rboolr8rrrr:szDirInfo._from_dictr;cCst|jp ddS)NrE)r.rDr<rrrr=szDirInfo._to_dict)F) rrrr>rFr5r?rrr7rr:r=rrrrr ws "c@seZdZdeeeeddddZeedddZeedd d Z ddd d Z e e ee fdd ddZe ee fdddZe eddddZedddZedddZdS)r N)urlr# subdirectoryrcCs||_||_||_dSr!)rGr#rH)r4rGr#rHrrrr5szDirectUrl.__init__)netlocrcCsRd|kr |S|dd\}}t|jtr@|jjdkr@|dkr@|St|rN|S|S)N@r%git)splitrr#r r0 ENV_VAR_REmatch)r4rI user_passnetloc_no_user_passrrr_remove_auth_from_netlocs   z"DirectUrl._remove_auth_from_netlocr;cCs<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. ) urllibparseurlsplitrGrQrI urlunsplitschemepathqueryfragment)r4purlrIsurlrrr redacted_urls  zDirectUrl.redacted_urlcCs||dSr!) from_dictto_dictr<rrrvalidateszDirectUrl.validater6c CsRtt|tdt|tdttt|tdtt|tdt t|tdgdS)NrGrHr@rCr/)rGrHr#) r rr7rr(r r:dictr r r8rrrr]s  zDirectUrl.from_dictcCs&t|j|jd}|j||jj<|S)N)rGrH)r.r\rHr#r=r>)r4resrrrr^s zDirectUrl.to_dict)srcCs|t|Sr!)r]jsonloads)r9rbrrr from_jsonszDirectUrl.from_jsoncCstj|ddS)NT) sort_keys)rcdumpsr^r<rrrto_jsonszDirectUrl.to_jsoncCst|jto|jjSr!)rr#r rDr<rrris_local_editableszDirectUrl.is_local_editable)N)rrrr7rrr5rQpropertyr\r_r?rrr]r^rerhrFrirrrrr s$   )N)N)__doc__rcre urllib.parserRtypingrrrrrrr__all__rDIRECT_URL_METADATA_NAMEcompilerM Exceptionr r7rrr(r.r r r rr rrrrsJ$