diff -r 27e5c10ad0bf Lib/shutil.py --- a/Lib/shutil.py Tue May 03 11:16:36 2011 -0700 +++ b/Lib/shutil.py Tue May 03 23:17:30 2011 +0200 @@ -12,6 +12,7 @@ import collections import errno import tarfile +from warnings import warn as _warn try: import bz2 @@ -122,7 +123,7 @@ why.errno != errno.EOPNOTSUPP): raise -def copy(src, dst): +def copy(src, dst, preserve=False): """Copy data and mode bits ("cp src dst"). The destination may be a directory. @@ -130,19 +131,24 @@ """ if os.path.isdir(dst): dst = os.path.join(dst, os.path.basename(src)) + copyfile(src, dst) - copymode(src, dst) + + if preserve: + copystat(src, dst) + else: + copymode(src, dst) def copy2(src, dst): """Copy data and all stat info ("cp -p src dst"). The destination may be a directory. + This function is deprecated. Use copy(src, dst, preserve=True) instead. + """ - if os.path.isdir(dst): - dst = os.path.join(dst, os.path.basename(src)) - copyfile(src, dst) - copystat(src, dst) + _warn("shutil.copy2 is deprecated.", DeprecationWarning, 2) + copy(src, dst, True) def ignore_patterns(*patterns): """Function that can be used as copytree() ignore parameter.