HEX

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit - prohibited by configuration in /home/u547966/brikov.ru/www/wp-content/plugins/admin-menu-editor/menu-editor.php on line 745
Server: Apache
System: Linux 4.19.0-0.bpo.9-amd64 x86_64 at red40
User: u547966 (5490)
PHP: 5.3.29-mh2
Disabled: syslog, dl, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, chown, chgrp, accelerator_reset, opcache_reset, accelerator_get_status, opcache_get_status, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
Upload Files
File: //usr/lib/python3.7/__pycache__/pathlib.cpython-37.pyc
B

{a@sdddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZm
Z
mZddlmZddlmZmZmZmZmZmZmZddlmZdZejdkrddlZedd	d
krddlm Z qdZdZ ndZd
dddddgZ!ee
efZ"dZ#ddZ$ddZ%Gddde&Z'Gddde'Z(Gddde'Z)e(Z*e)Z+GdddZ,Gd d!d!e,Z-e-Z.d"d#Z/e0ed$re1e/Z/Gd%d&d&Z2Gd'd(d(Z3Gd)d*d*e2Z4Gd+d,d,e2Z5Gd-d.d.e2Z6Gd/d0d0e	Z7Gd1d
d
e&Z8ej9:e8Gd2dde8Z;Gd3dde8Z<Gd4dde8Z=Gd5dde=e;Z>Gd6dde=e<Z?dS)7N)Sequence)EINVALENOENTENOTDIREBADF)
attrgetter)S_ISDIRS_ISLNKS_ISREGS_ISSOCKS_ISBLKS_ISCHRS_ISFIFO)quote_from_bytesTnt)r)_getfinalpathnameFPurePath
PurePosixPathPureWindowsPathPath	PosixPathWindowsPath)cCs t|ddtkpt|ddtkS)NerrnoZwinerror)getattr_IGNORED_ERROS_IGNORED_WINERRORS)Z	exceptionr/usr/lib/python3.7/pathlib.py
_ignore_error,sr!cCsd|kpd|kpd|kS)N*?[r)patrrr _is_wildcard_pattern1sr&c@s(eZdZdZddZddZddZdS)	_FlavourzPA flavour implements a particular (platform-specific) set of path
    semantics.cCs|jj|_dS)N)sepjoin)selfrrr __init__;sz_Flavour.__init__cCsg}|j}|j}d}}t|}x|D]}|s0q&|r@|||}||\}}}	||	krxPt|	|D] }
|
rh|
dkrh|t|
qhWn|	r|	dkr|t|	|s|r&|sx6|D].}|sq|r|||}||d}|rPqWPq&W|s|r||||	|||fS)N.r)
r(altsepreversedreplace	splitrootsplitappendsysinternreverse)r*partsZparsedr(r.drvrootitpartZrelxrrr parse_parts>s@


z_Flavour.parse_partscCsz|r*|sp|rp||||g|ddfSnF|rb||ksJ||||krp||||ddfSn||||fS|||fS)z
        Join the two paths represented by the respective
        (drive, root, parts) tuples.  Return a new (drive, root, parts) tuple.
        N)casefold)r*r8r9r7Zdrv2Zroot2Zparts2rrr join_parsed_partsdsz_Flavour.join_parsed_partsN)__name__
__module____qualname____doc__r+r=r@rrrr r'7s&r'c@seZdZdZdZdZeZej	dkZ
edZdZ
ddd	d
hdded
dDBdded
dDBZefddZddZddZd$ddZe
fddZddZddZdd Zd!d"Zd#S)%_WindowsFlavour\/TrZ4abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZz\\?\ZCONZPRNZAUXZNULcCsh|]}d|qS)zCOM%dr).0irrr 	<setcomp>sz_WindowsFlavour.<setcomp>r>
cCsh|]}d|qS)zLPT%dr)rHrIrrr rJscCs\|dd}|dd}||krP||krP||\}}|dd}|dd}nd}|dd}||kr||kr||kr||d}|dkr|||d}||dkr|dkrt|}|r||d||||ddfS|d||||ddfSd}	}
|dkr6||jkr6|dd}	|dd}|}||krN|}
||}||	|
|fS)Nrr>rr,:)_split_extended_pathfindlen
drive_letterslstrip)r*r;r(firstsecondprefixZthirdindexZindex2r8r9rrr r1s6"

z_WindowsFlavour.splitrootcCs|S)N)lower)r*srrr r?sz_WindowsFlavour.casefoldcCsdd|DS)NcSsg|]}|qSr)rX)rHprrr 
<listcomp>sz2_WindowsFlavour.casefold_parts.<locals>.<listcomp>r)r*r7rrr casefold_partssz_WindowsFlavour.casefold_partsFcCst|}|stSd}tdk	r|r2|t|Sg}xly|t|}Wn>tk
r|}tj|\}}||||kr|SYq8Xtjj	|ft
|Sq8WdS)N)strosgetcwdr_ext_to_normalFileNotFoundErrorpathr2r3r)r/)r*rbstrictrYZ
previous_sZ
tail_partstailrrr resolves&

z_WindowsFlavour.resolvecCsXd}||rP|dd}|dd}|drP||dd7}d|dd}||fS)Nr,zUNC\rLrF)
startswith)r*rYZ
ext_prefixrVrrr rOs

z$_WindowsFlavour._split_extended_pathcCs||dS)Nr>)rO)r*rYrrr r`sz_WindowsFlavour._ext_to_normalcCs6|sdS|ddrdS|ddd|jkS)NFrz\\rMr-)rg	partitionupperreserved_names)r*r7rrr is_reserveds
z_WindowsFlavour.is_reservedcCsd|j}t|dkrJ|ddkrJ|ddd}d|t|dfSdt|dSdS)Nrr>rNrGz
file:///%s/%szutf-8zfile:)driverQas_posixrSurlquote_from_bytesencode)r*rbrlrestrrr make_urisz_WindowsFlavour.make_uricCsdtjkrtjd}n`dtjkr,tjd}nJdtjkrnytjd}Wntk
r\d}YnX|tjd}ntd|rtjd|kr||f\}}}|dtjdkrtd	|||d<|s|r||||d
d}n
||}|S)NHOMEZUSERPROFILEZHOMEPATHZ	HOMEDRIVEr,zCan't determine home directoryZUSERNAMErMz%Can't determine home directory for %rr>)r^environKeyErrorRuntimeErrorr=r))r*usernameuserhomer8r9r7rrr 
gethomedirs,




z_WindowsFlavour.gethomedirN)F)rArBrCr(r.has_drvntpathpathmodr^nameis_supportedsetrRZext_namespace_prefixrangerjr1r?r\rerOr`rkrqrxrrrr rEvs$
	'

rEc@sdeZdZdZdZdZeZej	dkZ
efddZddZd	d
Z
dddZd
dZddZddZdS)
_PosixFlavourrGr,FrcCsV|rH|d|krH||}t|t|dkr<d|d|fSd||fSn
dd|fSdS)Nrrr,)rSrQ)r*r;r(Z
stripped_partrrr r1"s
z_PosixFlavour.splitrootcCs|S)Nr)r*rYrrr r?1sz_PosixFlavour.casefoldcCs|S)Nr)r*r7rrr r\4sz_PosixFlavour.casefold_partscsJ|j|jifdd|r0dnt}|t|pHS)Ncs|rd}x|D]}|r|dkr,q|dkrF|\}}}q||}|krx|}|dk	rlqtd|y|}Wn6tk
r}z|jtkrr|}Wdd}~XYqXd|<||}||<qW|S)Nr,r-z..zSymlink loop from %r)rgr2
rpartitionrureadlinkOSErrorrr)rbrpr|_newpathtargete)_resolveaccessorseenr(rcrr r;s0

z'_PosixFlavour.resolve.<locals>._resolver,)r(	_accessoris_absoluter^r_r])r*rbrcbaser)rrrr(rcr re7s&z_PosixFlavour.resolvecCsdS)NFr)r*r7rrr rkdsz_PosixFlavour.is_reservedcCst|}dt|S)Nzfile://)bytesrn)r*rbZbpathrrr rqgsz_PosixFlavour.make_uricCst|s:y
tjdStk
r6ddl}|tjSXn6ddl}y||jStk
rntd|YnXdS)Nrrrz%Can't determine home directory for %r)	r^rsrtpwdgetpwuidgetuidpw_dirgetpwnamru)r*rvrrrr rxms
z_PosixFlavour.gethomedirN)F)rArBrCr(r.ry	posixpathr{r^r|r}r1r?r\rerkrqrxrrrr rs

-rc@seZdZdZdS)	_AccessorzjAn accessor implements a particular (system-specific or not) way of
    accessing paths on the filesystem.N)rArBrCrDrrrr rsrc@seZdZejZejZejZejZejZej	Z	e
edr>ejZnddZejZej
Z
ejZejZejZer~ertejZqddZneddZejZddZd	S)
_NormalAccessorlchmodcCstddS)Nz%lchmod() not available on this system)NotImplementedError)r*Zpathobjmoderrr rsz_NormalAccessor.lchmodcCstddS)Nz&symlink() not available on this system)r)abtarget_is_directoryrrr symlinksz_NormalAccessor.symlinkcCst||S)N)r^r)rrrrrr rscCs
t|S)N)r^r)r*rbrrr rsz_NormalAccessor.readlinkN)rArBrCr^statlstatopenlistdirscandirchmodhasattrrmkdirunlinkrmdirrenamer0rsupports_symlinksrstaticmethodutimerrrrr rs*

rcCsP|d}|dd}|dkr"t}n$d|kr4tdnt|rBt}nt}|||S)Nrr>z**z:Invalid pattern: '**' can only be an entire path component)_RecursiveWildcardSelector
ValueErrorr&_WildcardSelector_PreciseSelector)
pattern_partsr%child_partsclsrrr _make_selectors
r	lru_cachec@s eZdZdZddZddZdS)	_SelectorzYA selector matches a specific glob pattern part against the children
    of a given path.cCs.||_|rt||_d|_nt|_d|_dS)NTF)rr	successordironly_TerminatingSelector)r*rrrr r+s
z_Selector.__init__cCs<t|}|j}|j}|jj}||s,tgS|||||S)zuIterate over all child paths of `parent_path` matched by this
        selector.  This can contain parent_path itself.)typeis_direxistsrriter_select_from)r*parent_pathZpath_clsrrrrrr select_fromsz_Selector.select_fromN)rArBrCrDr+rrrrr rs	rc@seZdZddZdS)rccs
|VdS)Nr)r*rrrrrrr rsz!_TerminatingSelector._select_fromN)rArBrCrrrrr rsrc@seZdZddZddZdS)rcCs||_t||dS)N)r|rr+)r*r|rrrr r+sz_PreciseSelector.__init__ccs^yD||j}|jr|n||rBx |j||||D]
}|Vq4WWntk
rXdSXdS)N)_make_child_relpathr|rrrPermissionError)r*rrrrrbrZrrr rsz_PreciseSelector._select_fromN)rArBrCr+rrrrr rsrc@seZdZddZddZdS)rcCs"tt||_t||dS)N)recompilefnmatch	translater%rr+)r*r%rrrr r+sz_WildcardSelector.__init__ccsyz|jj}t||}x`|D]X}|jr.|r|j}||}	|j|	r||}
x |j	
|
|||D]
}|VqfWqWWntk
rdSXdS)N)_flavourr?listrrr|r%matchrrrr)r*rrrrcfentriesentryr|Z
casefoldedrbrZrrr rs

z_WildcardSelector._select_fromN)rArBrCr+rrrrr rsrc@s$eZdZddZddZddZdS)rcCst||dS)N)rr+)r*r%rrrr r+sz#_RecursiveWildcardSelector.__init__c
cs|Vyt||}x|D]x}d}y|}Wn,tk
rZ}zt|sJWdd}~XYnX|r|s||j}x||||D]
}	|	VqWqWWntk
rdSXdS)NF)	rrrr!
is_symlinkrr|_iterate_directoriesr)
r*rrrrrZentry_is_dirrrbrZrrr rs 
z/_RecursiveWildcardSelector._iterate_directoriesc	csyjt}zT|jj}xF||||D]4}x.|||||D]}||kr6|V||q6Wq"WWd|XWntk
r~dSXdS)N)r~rrraddclearr)	r*rrrrZyieldedZsuccessor_selectZstarting_pointrZrrr r,sz'_RecursiveWildcardSelector._select_fromN)rArBrCr+rrrrrr rsrc@s4eZdZdZdZddZddZddZd	d
ZdS)_PathParentszvThis object provides sequence-like access to the logical ancestors
    of a path.  Don't try to construct it yourself.)_pathcls_drv_root_partscCs&t||_|j|_|j|_|j|_dS)N)rrrrr)r*rbrrr r+Es
z_PathParents.__init__cCs(|js|jrt|jdSt|jSdS)Nr>)rrrQr)r*rrr __len__Lsz_PathParents.__len__cCs@|dks|t|krt||j|j|j|jd|dS)Nrr>)rQ
IndexErrorr_from_parsed_partsrrr)r*idxrrr __getitem__Rsz_PathParents.__getitem__cCsd|jjS)Nz<{}.parents>)formatrrA)r*rrr __repr__Xsz_PathParents.__repr__N)	rArBrCrD	__slots__r+rrrrrrr r@src@seZdZdZdZddZddZeddZedVd
dZ	edWdd
Z
eddZddZddZ
ddZddZddZddZddZddZed d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zeed.d/d0Zeed1d2d0Zed3d4Zed5d6Z ed7d8Z!ed9d:Z"ed;d<Z#d=d>Z$d?d@Z%dAdBZ&edCdDZ'dEdFZ(dGdHZ)dIdJZ*edKdLZ+edMdNZ,dOdPZ-dQdRZ.dSdTZ/dUS)Xra|Base class for manipulating paths without I/O.

    PurePath represents a filesystem path and offers operations which
    don't imply any actual filesystem I/O.  Depending on your system,
    instantiating a PurePath will return either a PurePosixPath or a
    PureWindowsPath object.  You can also instantiate either of these classes
    directly, regardless of your system.
    )rrr_str_hash_pparts_cached_cpartscGs$|tkrtjdkrtnt}||S)zConstruct a PurePath from one or several strings and or existing
        PurePath objects.  The strings and path objects are combined so as
        to yield a canonicalized path, which is incorporated into the
        new PurePath object.
        r)rr^r|rr_from_parts)rargsrrr __new__jszPurePath.__new__cCs|jt|jfS)N)	__class__tupler)r*rrr 
__reduce__tszPurePath.__reduce__cCshg}xV|D]N}t|tr$||j7}q
t|}t|trH|t|q
tdt|q
W|j	
|S)NzNargument should be a str object or an os.PathLike object returning str, not %r)
isinstancerrr^fspathr]r3	TypeErrorrrr=)rrr7rrrr _parse_argsys



zPurePath._parse_argsTcCs<t|}||\}}}||_||_||_|r8||S)N)objectrrrrr_init)rrinitr*r8r9r7rrr rs
zPurePath._from_partscCs,t|}||_||_||_|r(||S)N)rrrrrr)rr8r9r7rr*rrr rs
zPurePath._from_parsed_partscCs4|s|r$|||j|ddS|j|SdS)Nr>)rr))rr8r9r7rrr _format_parsed_partsszPurePath._format_parsed_partscCsdS)Nr)r*rrr rszPurePath._initcCs@||\}}}|j|j|j|j|||\}}}||||S)N)rrr@rrrr)r*rr8r9r7rrr _make_childszPurePath._make_childcCs<y|jStk
r6||j|j|jp,d|_|jSXdS)z[Return the string representation of the path, suitable for
        passing to system calls.r-N)rAttributeErrorrrrr)r*rrr __str__szPurePath.__str__cCst|S)N)r])r*rrr 
__fspath__szPurePath.__fspath__cCs|j}t||jdS)zNReturn the string representation of the path with forward (/)
        slashes.rG)rr]r0r()r*frrr rmszPurePath.as_posixcCs
t|S)zaReturn the bytes representation of the path.  This is only
        recommended to use under Unix.)r^fsencode)r*rrr 	__bytes__szPurePath.__bytes__cCsd|jj|S)Nz{}({!r}))rrrArm)r*rrr rszPurePath.__repr__cCs|std|j|S)z Return the path as a 'file' URI.z.relative path can't be expressed as a file URI)rrrrq)r*rrr as_uriszPurePath.as_uricCs2y|jStk
r,|j|j|_|jSXdS)N)rrrr\r)r*rrr _cpartss
zPurePath._cpartscCs&t|tstS|j|jko$|j|jkS)N)rrNotImplementedrr)r*otherrrr __eq__s
zPurePath.__eq__cCs2y|jStk
r,tt|j|_|jSXdS)N)rrhashrr)r*rrr __hash__s
zPurePath.__hash__cCs&t|tr|j|jk	rtS|j|jkS)N)rrrrr)r*rrrr __lt__szPurePath.__lt__cCs&t|tr|j|jk	rtS|j|jkS)N)rrrrr)r*rrrr __le__szPurePath.__le__cCs&t|tr|j|jk	rtS|j|jkS)N)rrrrr)r*rrrr __gt__szPurePath.__gt__cCs&t|tr|j|jk	rtS|j|jkS)N)rrrrr)r*rrrr __ge__szPurePath.__ge__rz.The drive prefix (letter or UNC path), if any.)docrzThe root of the path, if any.cCs|j|j}|S)z/The concatenation of the drive and root, or ''.)rr)r*anchorrrr rszPurePath.anchorcCs.|j}t||js|jrdndkr&dS|dS)z!The final path component, if any.r>rr,rM)rrQrr)r*r7rrr r|sz
PurePath.namecCsD|j}|d}d|kr,t|dkr<nn||dSdSdS)z*The final component's last suffix, if any.r-rr>Nr,)r|rfindrQ)r*r|rIrrr suffixs

 zPurePath.suffixcCs:|j}|drgS|d}dd|dddDS)z1A list of the final component's suffixes, if any.r-cSsg|]}d|qS)r-r)rHrrrr r[$sz%PurePath.suffixes.<locals>.<listcomp>r>N)r|endswithrSr2)r*r|rrr suffixess


zPurePath.suffixescCsD|j}|d}d|kr,t|dkr<nn|d|S|SdS)z0The final path component, minus its last suffix.r-rr>N)r|rrQ)r*r|rIrrr stem&s

 z
PurePath.stemcCs|jstd|f|j|f\}}}|rX|d|jj|jjgksX|sX|sXt|dkrdtd|||j|j	|j
dd|gS)z-Return a new path with the file name changed.z%r has an empty namerMr>zInvalid name %rN)r|rrr=r(r.rQrrrr)r*r|r8r9r7rrr 	with_name0szPurePath.with_namecCs|j}|j|ks |jr.|j|kr.td|f|r<|drD|dkrPtd||j}|shtd|f|j}|s|||}n|dt||}||j	|j
|jdd|gS)zReturn a new path with the file suffix changed.  If the path
        has no suffix, add given suffix.  If the given suffix is an empty
        string, remove the suffix from the path.
        zInvalid suffix %rr-z%r has an empty nameNrM)rr(r.rrgr|rrQrrrr)r*rrr|Z
old_suffixrrr with_suffix;s
zPurePath.with_suffixc
Gs|std|j}|j}|j}|r8||g|dd}n|}||\}}}|rf||g|dd}	n|}	t|	}
|jj}|
dkr|s|rn||d|
||	kr||||}t	d
t|t||d|
dkr|nd||
dS)zReturn the relative path to another path identified by the passed
        arguments.  If the operation is not possible (because this is not
        a subpath of the other path), raise ValueError.
        zneed at least one argumentr>Nrz{!r} does not start with {!r}r,)
rrrrrrQrr\rrrr]r)
r*rr7r8r9Z	abs_partsZto_drvZto_rootZto_partsZto_abs_partsnrZ	formattedrrr relative_toPs(	*zPurePath.relative_tocCs.y|jStk
r(t|j|_|jSXdS)zZAn object providing sequence-like access to the
        components in the filesystem path.N)rrrr)r*rrr r7ps
zPurePath.partscGs
||S)zCombine this path with one or several arguments, and return a
        new path representing either a subpath (if all arguments are relative
        paths) or a totally different path (if one of the arguments is
        anchored).
        )r)r*rrrr joinpath|szPurePath.joinpathcCs||fS)N)r)r*keyrrr __truediv__szPurePath.__truediv__cCs||g|jS)N)rr)r*r
rrr __rtruediv__szPurePath.__rtruediv__cCs@|j}|j}|j}t|dkr*|s&|r*|S||||ddS)zThe logical parent of the path.r>NrM)rrrrQr)r*r8r9r7rrr parentszPurePath.parentcCst|S)z*A sequence of this path's logical parents.)r)r*rrr parentsszPurePath.parentscCs|js
dS|jjpt|jS)zSTrue if the path is absolute (has both a root and, if applicable,
        a drive).F)rrryboolr)r*rrr rszPurePath.is_absolutecCs|j|jS)zaReturn True if the path contains one of the special names reserved
        by the system, if any.)rrkr)r*rrr rkszPurePath.is_reservedc	Cs|jj}||}|j|f\}}}|s0td|rF|||jkrFdS|r\|||jkr\dS|j}|sj|rt|t|kr~dS|dd}nt|t|krdSx.tt	|t	|D]\}}t
||sdSqWdS)zE
        Return True if this path matches the given pattern.
        z
empty patternFr>NT)rr?r=rrrrrQzipr/rZfnmatchcase)	r*Zpath_patternrr8r9Z	pat_partsr7r;r%rrr rs(zPurePath.matchN)T)T)0rArBrCrDrrrclassmethodrrrrrrrrrmrrrpropertyrrrrrrrrrlr9rr|rrrrr	rr7rrrrrrrkrrrrr r\s\
	
	
	
 
c@seZdZdZeZdZdS)rzPurePath subclass for non-Windows systems.

    On a POSIX system, instantiating a PurePath should return this object.
    However, you can also instantiate it directly on any system.
    rN)rArBrCrD_posix_flavourrrrrrr rsc@seZdZdZeZdZdS)rzPurePath subclass for Windows systems.

    On a Windows system, instantiating a PurePath should return this object.
    However, you can also instantiate it directly on any system.
    rN)rArBrCrD_windows_flavourrrrrrr rsc@seZdZdZdZddZdbddZdd	Zd
dZdd
Z	ddZ
dcddZddddZe
ddZe
ddZddZddZddZd d!Zd"d#Zded%d&Zd'd(Zd)d*Zd+d,Zdfd/d0Zd1d2Zdgd3d4Zd5d6Zdhd7d8Zdid:d;Zdjd<d=Zd>d?Z d@dAZ!dBdCZ"dDdEZ#dFdGZ$dHdIZ%dJdKZ&dkdLdMZ'dNdOZ(dPdQZ)dRdSZ*dTdUZ+dVdWZ,dXdYZ-dZd[Z.d\d]Z/d^d_Z0d`daZ1dS)lraPurePath subclass that can make system calls.

    Path represents a filesystem path but unlike PurePath, also offers
    methods to do system calls on path objects. Depending on your system,
    instantiating a Path will return either a PosixPath or a WindowsPath
    object. You can also instantiate a PosixPath or WindowsPath directly,
    but cannot instantiate a WindowsPath on a POSIX system or vice versa.
    )r_closedcOsL|tkrtjdkrtnt}|j|dd}|jjs@td|j	f|
|S)NrF)rz$cannot instantiate %r on your system)rr^r|rrrrr}rrAr)rrkwargsr*rrr rszPath.__new__NcCs"d|_|dk	r|j|_nt|_dS)NF)rr_normal_accessor)r*templaterrr rs
z
Path._initcCs|j|g}||j|j|S)N)rrrr)r*r;r7rrr rszPath._make_child_relpathcCs|jr||S)N)r
_raise_closed)r*rrr 	__enter__szPath.__enter__cCs
d|_dS)NT)r)r*tvtbrrr __exit__sz
Path.__exit__cCstddS)NzI/O operation on closed path)r)r*rrr r
szPath._raise_closedcCs|j|||S)N)rr)r*r|flagsrrrr _opener
szPath._openercCs|jr||j|||S)zm
        Open the file pointed by this path and return a file descriptor,
        as os.open() does.
        )rrrr)r*r#rrrr 	_raw_openszPath._raw_opencCs|tS)zjReturn a new path pointing to the current working directory
        (as returned by os.getcwd()).
        )r^r_)rrrr cwdszPath.cwdcCs||jdS)zrReturn a new path pointing to the user's home directory (as
        returned by os.path.expanduser('~')).
        N)rrx)rrrr home#sz	Path.homecCsB|}y|}Wntk
r2t|}YnXtj||S)zoReturn whether other_path is the same or not as this file
        (as returned by os.path.samefile()).
        )rrr^rbsamestat)r*Z
other_pathstZother_strrr samefile*sz
Path.samefileccsL|jr|x8|j|D](}|dkr*q||V|jr|qWdS)zyIterate over the files in this directory.  Does not yield any
        result for the special paths '.' and '..'.
        >r-..N)rrrrr)r*r|rrr iterdir5szPath.iterdirccsl|std||j|}|j|f\}}}|s:|rBtdtt|}x||D]
}|VqZWdS)zIterate over this subtree and yield all existing files (of any
        kind, including directories) matching the given relative pattern.
        zUnacceptable pattern: {!r}z%Non-relative patterns are unsupportedN)	rrrr?r=rrrr)r*patternr8r9rselectorrZrrr globCsz	Path.globccs^|j|}|j|f\}}}|s(|r0tdtdt|}x||D]
}|VqLWdS)zRecursively yield all existing files (of any kind, including
        directories) matching the given relative pattern, anywhere in
        this subtree.
        z%Non-relative patterns are unsupported)z**N)rr?r=rrrr)r*r.r8r9rr/rZrrr rglobQsz
Path.rglobcCsD|jr||r|S|jtg|jdd}|j|d|S)aReturn an absolute version of this path.  This function works
        even if the path doesn't point to anything.

        No normalization is done, i.e. all '.' and '..' will be kept along.
        Use resolve() to get the canonical path to a file.
        F)r)r)rrrrr^r_rr)r*objrrr absolute^sz
Path.absoluteFcCsh|jr||jj||d}|dkr:|t|}|jj|}|j	|fdd}|j
|d|S)z
        Make the path absolute, resolving all symlinks on the way and also
        normalizing it (for example turning slashes into backslashes under
        Windows).
        )rcNF)r)r)rrrrerr]r3r{normpathrr)r*rcrYZnormedr2rrr repszPath.resolvecCs|j|S)zh
        Return the result of the stat() system call on this path, like
        os.stat() does.
        )rr)r*rrr rsz	Path.statcCsddl}||jjS)z:
        Return the login name of the file owner.
        rN)rrrst_uidZpw_name)r*rrrr ownersz
Path.ownercCsddl}||jjS)z8
        Return the group name of the file gid.
        rN)grpZgetgrgidrst_gidZgr_name)r*r7rrr groupsz
Path.grouprrMc	Cs(|jr|tj|||||||jdS)z|
        Open the file pointed by this path and return a file object, as
        the built-in open() function does.
        )opener)rriorr$)r*r	bufferingencodingerrorsnewlinerrr rsz	Path.openc	Cs |jdd
}|SQRXdS)zK
        Open the file in bytes mode, read it, and close the file.
        rb)rN)rread)r*rrrr 
read_bytesszPath.read_bytesc	Cs$|jd||d
}|SQRXdS)zJ
        Open the file in text mode, read it, and close the file.
        r:)rr>r?N)rrB)r*r>r?rrrr 	read_textszPath.read_textc	Cs*t|}|jdd}||SQRXdS)zO
        Open the file in bytes mode, write to it, and close the file.
        wb)rN)
memoryviewrwrite)r*dataZviewrrrr write_bytesszPath.write_bytesc	Cs@t|tstd|jj|jd||d}||SQRXdS)zN
        Open the file in text mode, write to it, and close the file.
        zdata must be str, not %sw)rr>r?N)rr]rrrArrG)r*rHr>r?rrrr 
write_texts

zPath.write_textTcCsr|jr||r>y|j|dWntk
r8YnXdStjtjB}|sX|tjO}|	||}t
|dS)zS
        Create this file with the given access mode, if it doesn't exist.
        N)rrrrrr^O_CREATO_WRONLYO_EXCLr&close)r*rexist_okr#fdrrr touchs
z
Path.touchcCs|jr|y|j||Wndtk
rd|r>|j|kr@|jjddd|j|d|dYn"tk
r|r~|sYnXdS)z<
        Create a new directory at this given path.
        T)rrPFN)rrrrrarrr)r*rrrPrrr rsz
Path.mkdircCs |jr||j||dS)zF
        Change the permissions of the path, like os.chmod().
        N)rrrr)r*rrrr rsz
Path.chmodcCs |jr||j||dS)z
        Like chmod(), except if the path points to a symlink, the symlink's
        permissions are changed, rather than its target's.
        N)rrrr)r*rrrr rszPath.lchmodcCs|jr||j|dS)zd
        Remove this file or link.
        If the path is a directory, use rmdir() instead.
        N)rrrr)r*rrr rszPath.unlinkcCs|jr||j|dS)zF
        Remove this directory.  The directory must be empty.
        N)rrrr)r*rrr r	sz
Path.rmdircCs|jr||j|S)z
        Like stat(), except if the path points to a symlink, the symlink's
        status information is returned, rather than its target's.
        )rrrr)r*rrr rsz
Path.lstatcCs |jr||j||dS)z5
        Rename this path to the given path.
        N)rrrr)r*rrrr rszPath.renamecCs |jr||j||dS)zo
        Rename this path to the given path, clobbering the existing
        destination if it exists.
        N)rrrr0)r*rrrr r0"szPath.replacecCs"|jr||j|||dS)z
        Make this path a symlink pointing to the given path.
        Note the order of arguments (self, target) is the reverse of os.symlink's.
        N)rrrr)r*rrrrr 
symlink_to+szPath.symlink_toc
Cs>y|Wn,tk
r8}zt|s(dSd}~XYnXdS)z+
        Whether this path exists.
        FNT)rrr!)r*rrrr r6szPath.existsc
Cs@yt|jStk
r:}zt|s*dSd}~XYnXdS)z3
        Whether this path is a directory.
        FN)rrst_moderr!)r*rrrr rBszPath.is_dirc
Cs@yt|jStk
r:}zt|s*dSd}~XYnXdS)zq
        Whether this path is a regular file (also True for symlinks pointing
        to regular files).
        FN)r
rrTrr!)r*rrrr is_fileOszPath.is_filecCst|r|sdSt|j}y|j}Wntk
r@dSX|j}||krXdS|j}|j}||kS)z;
        Check if this path is a POSIX mount point
        FT)rrrrrst_devrst_ino)r*rZ
parent_devZdevZinoZ
parent_inorrr is_mount]s



z
Path.is_mountc
Cs@yt|jStk
r:}zt|s*dSd}~XYnXdS)z7
        Whether this path is a symbolic link.
        FN)r	rrTrr!)r*rrrr rrszPath.is_symlinkc
Cs@yt|jStk
r:}zt|s*dSd}~XYnXdS)z6
        Whether this path is a block device.
        FN)rrrTrr!)r*rrrr is_block_device~szPath.is_block_devicec
Cs@yt|jStk
r:}zt|s*dSd}~XYnXdS)z:
        Whether this path is a character device.
        FN)r
rrTrr!)r*rrrr is_char_deviceszPath.is_char_devicec
Cs@yt|jStk
r:}zt|s*dSd}~XYnXdS)z.
        Whether this path is a FIFO.
        FN)rrrTrr!)r*rrrr is_fifoszPath.is_fifoc
Cs@yt|jStk
r:}zt|s*dSd}~XYnXdS)z0
        Whether this path is a socket.
        FN)rrrTrr!)r*rrrr 	is_socketszPath.is_socketcCs`|js\|js\|jr\|jddddkr\|j|jddd}||g|jddS|S)zl Return a new path with expanded ~ and ~user constructs
        (as returned by os.path.expanduser)
        rNr>~)rrrrrxr)r*Zhomedirrrr 
expandusers
zPath.expanduser)N)r")r%)F)r:rMNNN)NN)NN)r"T)r%FF)F)2rArBrCrDrrrrrr!rr$r&rr'r(r+r-r0r1r3rerr6r9rrCrDrIrKrRrrrrrrrr0rSrrrUrXrrYrZr[r\r^rrrr rs^







	



				





c@seZdZdZdZdS)rzsPath subclass for non-Windows systems.

    On a POSIX system, instantiating a Path should return this object.
    rN)rArBrCrDrrrrr rsc@s,eZdZdZdZddZddZddZd	S)
rzqPath subclass for Windows systems.

    On a Windows system, instantiating a Path should return this object.
    rcCstddS)Nz*Path.owner() is unsupported on this system)r)r*rrr r6szWindowsPath.ownercCstddS)Nz*Path.group() is unsupported on this system)r)r*rrr r9szWindowsPath.groupcCstddS)Nz-Path.is_mount() is unsupported on this system)r)r*rrr rXszWindowsPath.is_mountN)rArBrCrDrr6r9rXrrrr rs
)@r	functoolsr<rzr^rrr4_collections_abcrrrrrroperatorrrrr	r
rrr
rZurllib.parserrnrr|rZgetwindowsversionr__all__rrr!r&rr'rErrrrrrrrrrrrrrrrPathLikeregisterrrrrrrrrr <module>sp$


?%c1
+f

g