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
d5eb9854
Kaydet (Commit)
d5eb9854
authored
Şub 06, 2009
tarafından
Tarek Ziadé
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Fixed #1276768: verbose option was not used in the code.
üst
0189ddc1
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
188 additions
and
24 deletions
+188
-24
dir_util.py
Lib/distutils/dir_util.py
+15
-15
file_util.py
Lib/distutils/file_util.py
+13
-9
test_dir_util.py
Lib/distutils/tests/test_dir_util.py
+91
-0
test_file_util.py
Lib/distutils/tests/test_file_util.py
+66
-0
NEWS
Misc/NEWS
+3
-0
No files found.
Lib/distutils/dir_util.py
Dosyayı görüntüle @
d5eb9854
...
...
@@ -16,7 +16,7 @@ _path_created = {}
# I don't use os.makedirs because a) it's new to Python 1.5.2, and
# b) it blows up if the directory already exists (I want to silently
# succeed in that case).
def
mkpath
(
name
,
mode
=
0777
,
verbose
=
0
,
dry_run
=
0
):
def
mkpath
(
name
,
mode
=
0777
,
verbose
=
1
,
dry_run
=
0
):
"""Create a directory and any missing ancestor directories. If the
directory already exists (or if 'name' is the empty string, which
means the current directory, which of course exists), then do
...
...
@@ -49,13 +49,9 @@ def mkpath (name, mode=0777, verbose=0, dry_run=0):
tails
=
[
tail
]
# stack of lone dirs to create
while
head
and
tail
and
not
os
.
path
.
isdir
(
head
):
#print "splitting '%s': " % head,
(
head
,
tail
)
=
os
.
path
.
split
(
head
)
#print "to ('%s','%s')" % (head, tail)
tails
.
insert
(
0
,
tail
)
# push next higher dir onto stack
#print "stack of tails:", tails
# now 'head' contains the deepest directory that already exists
# (that is, the child of 'head' in 'name' is the highest directory
# that does *not* exist)
...
...
@@ -67,7 +63,8 @@ def mkpath (name, mode=0777, verbose=0, dry_run=0):
if
_path_created
.
get
(
abs_head
):
continue
log
.
info
(
"creating
%
s"
,
head
)
if
verbose
==
1
:
log
.
info
(
"creating
%
s"
,
head
)
if
not
dry_run
:
try
:
...
...
@@ -83,7 +80,7 @@ def mkpath (name, mode=0777, verbose=0, dry_run=0):
# mkpath ()
def
create_tree
(
base_dir
,
files
,
mode
=
0777
,
verbose
=
0
,
dry_run
=
0
):
def
create_tree
(
base_dir
,
files
,
mode
=
0777
,
verbose
=
1
,
dry_run
=
0
):
"""Create all the empty directories under 'base_dir' needed to
put 'files' there. 'base_dir' is just the a name of a directory
...
...
@@ -102,7 +99,7 @@ def create_tree (base_dir, files, mode=0777, verbose=0, dry_run=0):
# Now create them
for
dir
in
need_dirs
:
mkpath
(
dir
,
mode
,
dry_run
=
dry_run
)
mkpath
(
dir
,
mode
,
verbose
=
verbose
,
dry_run
=
dry_run
)
# create_tree ()
...
...
@@ -112,7 +109,7 @@ def copy_tree (src, dst,
preserve_times
=
1
,
preserve_symlinks
=
0
,
update
=
0
,
verbose
=
0
,
verbose
=
1
,
dry_run
=
0
):
"""Copy an entire directory tree 'src' to a new location 'dst'. Both
...
...
@@ -148,7 +145,7 @@ def copy_tree (src, dst,
"error listing files in '
%
s':
%
s"
%
(
src
,
errstr
)
if
not
dry_run
:
mkpath
(
dst
)
mkpath
(
dst
,
verbose
=
verbose
)
outputs
=
[]
...
...
@@ -158,7 +155,8 @@ def copy_tree (src, dst,
if
preserve_symlinks
and
os
.
path
.
islink
(
src_name
):
link_dest
=
os
.
readlink
(
src_name
)
log
.
info
(
"linking
%
s ->
%
s"
,
dst_name
,
link_dest
)
if
verbose
==
1
:
log
.
info
(
"linking
%
s ->
%
s"
,
dst_name
,
link_dest
)
if
not
dry_run
:
os
.
symlink
(
link_dest
,
dst_name
)
outputs
.
append
(
dst_name
)
...
...
@@ -167,10 +165,11 @@ def copy_tree (src, dst,
outputs
.
extend
(
copy_tree
(
src_name
,
dst_name
,
preserve_mode
,
preserve_times
,
preserve_symlinks
,
update
,
dry_run
=
dry_run
))
verbose
=
verbose
,
dry_run
=
dry_run
))
else
:
copy_file
(
src_name
,
dst_name
,
preserve_mode
,
preserve_times
,
update
,
dry_run
=
dry_run
)
preserve_times
,
update
,
verbose
=
verbose
,
dry_run
=
dry_run
)
outputs
.
append
(
dst_name
)
return
outputs
...
...
@@ -188,14 +187,15 @@ def _build_cmdtuple(path, cmdtuples):
cmdtuples
.
append
((
os
.
rmdir
,
path
))
def
remove_tree
(
directory
,
verbose
=
0
,
dry_run
=
0
):
def
remove_tree
(
directory
,
verbose
=
1
,
dry_run
=
0
):
"""Recursively remove an entire directory tree. Any errors are ignored
(apart from being reported to stdout if 'verbose' is true).
"""
from
distutils.util
import
grok_environment_error
global
_path_created
log
.
info
(
"removing '
%
s' (and everything under it)"
,
directory
)
if
verbose
==
1
:
log
.
info
(
"removing '
%
s' (and everything under it)"
,
directory
)
if
dry_run
:
return
cmdtuples
=
[]
...
...
Lib/distutils/file_util.py
Dosyayı görüntüle @
d5eb9854
...
...
@@ -76,7 +76,7 @@ def copy_file (src, dst,
preserve_times
=
1
,
update
=
0
,
link
=
None
,
verbose
=
0
,
verbose
=
1
,
dry_run
=
0
):
"""Copy a file 'src' to 'dst'. If 'dst' is a directory, then 'src' is
...
...
@@ -123,7 +123,8 @@ def copy_file (src, dst,
dir
=
os
.
path
.
dirname
(
dst
)
if
update
and
not
newer
(
src
,
dst
):
log
.
debug
(
"not copying
%
s (output up-to-date)"
,
src
)
if
verbose
==
1
:
log
.
debug
(
"not copying
%
s (output up-to-date)"
,
src
)
return
dst
,
0
try
:
...
...
@@ -131,10 +132,12 @@ def copy_file (src, dst,
except
KeyError
:
raise
ValueError
,
\
"invalid value '
%
s' for 'link' argument"
%
link
if
os
.
path
.
basename
(
dst
)
==
os
.
path
.
basename
(
src
):
log
.
info
(
"
%
s
%
s ->
%
s"
,
action
,
src
,
dir
)
else
:
log
.
info
(
"
%
s
%
s ->
%
s"
,
action
,
src
,
dst
)
if
verbose
==
1
:
if
os
.
path
.
basename
(
dst
)
==
os
.
path
.
basename
(
src
):
log
.
info
(
"
%
s
%
s ->
%
s"
,
action
,
src
,
dir
)
else
:
log
.
info
(
"
%
s
%
s ->
%
s"
,
action
,
src
,
dst
)
if
dry_run
:
return
(
dst
,
1
)
...
...
@@ -178,7 +181,7 @@ def copy_file (src, dst,
# XXX I suspect this is Unix-specific -- need porting help!
def
move_file
(
src
,
dst
,
verbose
=
0
,
verbose
=
1
,
dry_run
=
0
):
"""Move a file 'src' to 'dst'. If 'dst' is a directory, the file will
...
...
@@ -191,7 +194,8 @@ def move_file (src, dst,
from
os.path
import
exists
,
isfile
,
isdir
,
basename
,
dirname
import
errno
log
.
info
(
"moving
%
s ->
%
s"
,
src
,
dst
)
if
verbose
==
1
:
log
.
info
(
"moving
%
s ->
%
s"
,
src
,
dst
)
if
dry_run
:
return
dst
...
...
@@ -223,7 +227,7 @@ def move_file (src, dst,
"couldn't move '
%
s' to '
%
s':
%
s"
%
(
src
,
dst
,
msg
)
if
copy_it
:
copy_file
(
src
,
dst
)
copy_file
(
src
,
dst
,
verbose
=
verbose
)
try
:
os
.
unlink
(
src
)
except
os
.
error
,
(
num
,
msg
):
...
...
Lib/distutils/tests/test_dir_util.py
0 → 100644
Dosyayı görüntüle @
d5eb9854
"""Tests for distutils.dir_util."""
import
unittest
import
os
import
shutil
from
distutils.dir_util
import
mkpath
from
distutils.dir_util
import
remove_tree
from
distutils.dir_util
import
create_tree
from
distutils.dir_util
import
copy_tree
from
distutils
import
log
class
DirUtilTestCase
(
unittest
.
TestCase
):
def
_log
(
self
,
msg
,
*
args
):
if
len
(
args
)
>
0
:
self
.
_logs
.
append
(
msg
%
args
)
else
:
self
.
_logs
.
append
(
msg
)
def
setUp
(
self
):
self
.
_logs
=
[]
self
.
root_target
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'deep'
)
self
.
target
=
os
.
path
.
join
(
self
.
root_target
,
'here'
)
self
.
target2
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'deep2'
)
self
.
old_log
=
log
.
info
log
.
info
=
self
.
_log
def
tearDown
(
self
):
for
target
in
(
self
.
target
,
self
.
target2
):
if
os
.
path
.
exists
(
target
):
shutil
.
rmtree
(
target
)
log
.
info
=
self
.
old_log
def
test_mkpath_remove_tree_verbosity
(
self
):
mkpath
(
self
.
target
,
verbose
=
0
)
wanted
=
[]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
remove_tree
(
self
.
root_target
,
verbose
=
0
)
mkpath
(
self
.
target
,
verbose
=
1
)
wanted
=
[
'creating
%
s'
%
self
.
root_target
,
'creating
%
s'
%
self
.
target
]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
self
.
_logs
=
[]
remove_tree
(
self
.
root_target
,
verbose
=
1
)
wanted
=
[
"removing '
%
s' (and everything under it)"
%
self
.
root_target
]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
def
test_create_tree_verbosity
(
self
):
create_tree
(
self
.
root_target
,
[
'one'
,
'two'
,
'three'
],
verbose
=
0
)
self
.
assertEquals
(
self
.
_logs
,
[])
remove_tree
(
self
.
root_target
,
verbose
=
0
)
wanted
=
[
'creating
%
s'
%
self
.
root_target
]
create_tree
(
self
.
root_target
,
[
'one'
,
'two'
,
'three'
],
verbose
=
1
)
self
.
assertEquals
(
self
.
_logs
,
wanted
)
remove_tree
(
self
.
root_target
,
verbose
=
0
)
def
test_copy_tree_verbosity
(
self
):
mkpath
(
self
.
target
,
verbose
=
0
)
copy_tree
(
self
.
target
,
self
.
target2
,
verbose
=
0
)
self
.
assertEquals
(
self
.
_logs
,
[])
remove_tree
(
self
.
root_target
,
verbose
=
0
)
mkpath
(
self
.
target
,
verbose
=
0
)
a_file
=
os
.
path
.
join
(
self
.
target
,
'ok.txt'
)
f
=
open
(
a_file
,
'w'
)
f
.
write
(
'some content'
)
f
.
close
()
wanted
=
[
'copying
%
s ->
%
s'
%
(
a_file
,
self
.
target2
)]
copy_tree
(
self
.
target
,
self
.
target2
,
verbose
=
1
)
self
.
assertEquals
(
self
.
_logs
,
wanted
)
remove_tree
(
self
.
root_target
,
verbose
=
0
)
remove_tree
(
self
.
target2
,
verbose
=
0
)
def
test_suite
():
return
unittest
.
makeSuite
(
DirUtilTestCase
)
if
__name__
==
"__main__"
:
unittest
.
main
(
defaultTest
=
"test_suite"
)
Lib/distutils/tests/test_file_util.py
0 → 100644
Dosyayı görüntüle @
d5eb9854
"""Tests for distutils.file_util."""
import
unittest
import
os
import
shutil
from
distutils.file_util
import
move_file
from
distutils
import
log
class
FileUtilTestCase
(
unittest
.
TestCase
):
def
_log
(
self
,
msg
,
*
args
):
if
len
(
args
)
>
0
:
self
.
_logs
.
append
(
msg
%
args
)
else
:
self
.
_logs
.
append
(
msg
)
def
setUp
(
self
):
self
.
_logs
=
[]
self
.
old_log
=
log
.
info
log
.
info
=
self
.
_log
self
.
source
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'f1'
)
self
.
target
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'f2'
)
self
.
target_dir
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
'd1'
)
def
tearDown
(
self
):
log
.
info
=
self
.
old_log
for
f
in
(
self
.
source
,
self
.
target
,
self
.
target_dir
):
if
os
.
path
.
exists
(
f
):
if
os
.
path
.
isfile
(
f
):
os
.
remove
(
f
)
else
:
shutil
.
rmtree
(
f
)
def
test_move_file_verbosity
(
self
):
f
=
open
(
self
.
source
,
'w'
)
f
.
write
(
'some content'
)
f
.
close
()
move_file
(
self
.
source
,
self
.
target
,
verbose
=
0
)
wanted
=
[]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
# back to original state
move_file
(
self
.
target
,
self
.
source
,
verbose
=
0
)
move_file
(
self
.
source
,
self
.
target
,
verbose
=
1
)
wanted
=
[
'moving
%
s ->
%
s'
%
(
self
.
source
,
self
.
target
)]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
# back to original state
move_file
(
self
.
target
,
self
.
source
,
verbose
=
0
)
self
.
_logs
=
[]
# now the target is a dir
os
.
mkdir
(
self
.
target_dir
)
move_file
(
self
.
source
,
self
.
target_dir
,
verbose
=
1
)
wanted
=
[
'moving
%
s ->
%
s'
%
(
self
.
source
,
self
.
target_dir
)]
self
.
assertEquals
(
self
.
_logs
,
wanted
)
def
test_suite
():
return
unittest
.
makeSuite
(
FileUtilTestCase
)
if
__name__
==
"__main__"
:
unittest
.
main
(
defaultTest
=
"test_suite"
)
Misc/NEWS
Dosyayı görüntüle @
d5eb9854
...
...
@@ -149,6 +149,9 @@ Core and Builtins
Library
-------
- Issue #1276768: The verbose option was not used in the code of
distutils.file_util and distutils.dir_util.
- Issue #5132: Fixed trouble building extensions under Solaris with
--enabled-shared activated. Initial patch by Dave Peterson.
...
...
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