Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
add98eb4
Kaydet (Commit)
add98eb4
authored
Haz 07, 2017
tarafından
Antoine Pietri
Kaydeden (comit)
Steve Dower
Haz 07, 2017
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
bpo-30177: pathlib: include the full path in resolve(strict=False) (#1893)
üst
ff48739e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
20 deletions
+21
-20
pathlib.py
Lib/pathlib.py
+8
-11
test_pathlib.py
Lib/test/test_pathlib.py
+12
-9
ACKS
Misc/ACKS
+1
-0
No files found.
Lib/pathlib.py
Dosyayı görüntüle @
add98eb4
...
...
@@ -183,19 +183,18 @@ class _WindowsFlavour(_Flavour):
if
strict
:
return
self
.
_ext_to_normal
(
_getfinalpathname
(
s
))
else
:
tail_parts
=
[]
# End of the path after the first one not found
while
True
:
try
:
s
=
self
.
_ext_to_normal
(
_getfinalpathname
(
s
))
except
FileNotFoundError
:
previous_s
=
s
s
=
os
.
path
.
dirname
(
s
)
s
,
tail
=
os
.
path
.
split
(
s
)
tail_parts
.
append
(
tail
)
if
previous_s
==
s
:
return
path
else
:
if
previous_s
is
None
:
return
s
else
:
return
s
+
os
.
path
.
sep
+
os
.
path
.
basename
(
previous_s
)
return
os
.
path
.
join
(
s
,
*
reversed
(
tail_parts
))
# Means fallback on absolute
return
None
...
...
@@ -326,12 +325,10 @@ class _PosixFlavour(_Flavour):
try
:
target
=
accessor
.
readlink
(
newpath
)
except
OSError
as
e
:
if
e
.
errno
!=
EINVAL
:
if
strict
:
raise
else
:
return
newpath
# Not a symlink
if
e
.
errno
!=
EINVAL
and
strict
:
raise
# Not a symlink, or non-strict mode. We just leave the path
# untouched.
path
=
newpath
else
:
seen
[
newpath
]
=
None
# not resolved symlink
...
...
Lib/test/test_pathlib.py
Dosyayı görüntüle @
add98eb4
...
...
@@ -1492,10 +1492,10 @@ class _BasePathTest(object):
os
.
path
.
join
(
BASE
,
'foo'
))
p
=
P
(
BASE
,
'foo'
,
'in'
,
'spam'
)
self
.
assertEqual
(
str
(
p
.
resolve
(
strict
=
False
)),
os
.
path
.
join
(
BASE
,
'foo'
))
os
.
path
.
join
(
BASE
,
'foo'
,
'in'
,
'spam'
))
p
=
P
(
BASE
,
'..'
,
'foo'
,
'in'
,
'spam'
)
self
.
assertEqual
(
str
(
p
.
resolve
(
strict
=
False
)),
os
.
path
.
abspath
(
os
.
path
.
join
(
'foo'
)))
os
.
path
.
abspath
(
os
.
path
.
join
(
'foo'
,
'in'
,
'spam'
)))
# These are all relative symlinks
p
=
P
(
BASE
,
'dirB'
,
'fileB'
)
self
.
_check_resolve_relative
(
p
,
p
)
...
...
@@ -1507,16 +1507,18 @@ class _BasePathTest(object):
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'dirB'
,
'fileB'
))
# Non-strict
p
=
P
(
BASE
,
'dirA'
,
'linkC'
,
'fileB'
,
'foo'
,
'in'
,
'spam'
)
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'dirB'
,
'fileB'
,
'foo'
),
False
)
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'dirB'
,
'fileB'
,
'foo'
,
'in'
,
'spam'
),
False
)
p
=
P
(
BASE
,
'dirA'
,
'linkC'
,
'..'
,
'foo'
,
'in'
,
'spam'
)
if
os
.
name
==
'nt'
:
# In Windows, if linkY points to dirB, 'dirA\linkY\..'
# resolves to 'dirA' without resolving linkY first.
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'dirA'
,
'foo'
),
False
)
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'dirA'
,
'foo'
,
'in'
,
'spam'
),
False
)
else
:
# In Posix, if linkY points to dirB, 'dirA/linkY/..'
# resolves to 'dirB/..' first before resolving to parent of dirB.
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'foo'
),
False
)
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'foo'
,
'in'
,
'spam'
),
False
)
# Now create absolute symlinks
d
=
tempfile
.
mkdtemp
(
suffix
=
'-dirD'
)
self
.
addCleanup
(
support
.
rmtree
,
d
)
...
...
@@ -1526,16 +1528,17 @@ class _BasePathTest(object):
self
.
_check_resolve_absolute
(
p
,
P
(
BASE
,
'dirB'
,
'fileB'
))
# Non-strict
p
=
P
(
BASE
,
'dirA'
,
'linkX'
,
'linkY'
,
'foo'
,
'in'
,
'spam'
)
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'dirB'
,
'foo'
),
False
)
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'dirB'
,
'foo'
,
'in'
,
'spam'
),
False
)
p
=
P
(
BASE
,
'dirA'
,
'linkX'
,
'linkY'
,
'..'
,
'foo'
,
'in'
,
'spam'
)
if
os
.
name
==
'nt'
:
# In Windows, if linkY points to dirB, 'dirA\linkY\..'
# resolves to 'dirA' without resolving linkY first.
self
.
_check_resolve_relative
(
p
,
P
(
d
,
'foo'
),
False
)
self
.
_check_resolve_relative
(
p
,
P
(
d
,
'foo'
,
'in'
,
'spam'
),
False
)
else
:
# In Posix, if linkY points to dirB, 'dirA/linkY/..'
# resolves to 'dirB/..' first before resolving to parent of dirB.
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'foo'
),
False
)
self
.
_check_resolve_relative
(
p
,
P
(
BASE
,
'foo'
,
'in'
,
'spam'
),
False
)
@support.skip_unless_symlink
def
test_resolve_dot
(
self
):
...
...
@@ -1549,7 +1552,7 @@ class _BasePathTest(object):
r
=
q
/
'3'
/
'4'
self
.
assertRaises
(
FileNotFoundError
,
r
.
resolve
,
strict
=
True
)
# Non-strict
self
.
assertEqual
(
r
.
resolve
(
strict
=
False
),
p
/
'3'
)
self
.
assertEqual
(
r
.
resolve
(
strict
=
False
),
p
/
'3'
/
'4'
)
def
test_with
(
self
):
p
=
self
.
cls
(
BASE
)
...
...
Misc/ACKS
Dosyayı görüntüle @
add98eb4
...
...
@@ -1201,6 +1201,7 @@ Steve Piercy
Jim St. Pierre
Dan Pierson
Martijn Pieters
Antoine Pietri
Anand B. Pillai
François Pinard
Tom Pinckney
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment