summaryrefslogtreecommitdiffstats
path: root/Lib/shutil.py
Commit message (Collapse)AuthorAgeFilesLines
* bpo-24538: Fix bug in shutil involving the copying of xattrs to read-only ↵Olexa Bilaniuk2019-05-101-1/+3
| | | | | | | | files. (PR-13212) Extended attributes can only be set on user-writeable files, but shutil previously first chmod()ed the destination file to the source's permissions and then tried to copy xattrs. This will cause failures if attempting to copy read-only files with xattrs, as occurs with Git clones on Lustre FS.
* bpo-35755: Don't say "to mimick Unix which command behavior" (GH-12861)Victor Stinner2019-04-171-1/+1
|
* bpo-35755: shutil.which() uses os.confstr("CS_PATH") (GH-12858)Victor Stinner2019-04-171-1/+12
| | | | | | | | | | | | | | | | shutil.which() and distutils.spawn.find_executable() now use os.confstr("CS_PATH") if available instead of os.defpath, if the PATH environment variable is not set. Don't use os.confstr("CS_PATH") nor os.defpath if the PATH environment variable is set to an empty string to mimick Unix 'which' command behavior. Changes: * find_executable() now starts by checking for the executable in the current working directly case. Add an explicit "if not path: return None". * Add tests for PATH='' (empty string), PATH=':' and for PATHEXT.
* bpo-36103: change default buffer size of shutil.copyfileobj() (GH-12115)Inada Naoki2019-03-021-1/+1
| | | | | | | | | | | | | | | | It is changed from 16KiB to 64KiB. The previous default value is used since 1990. coreutils chose 128 KiB as minimum buffer size for block device I/O. But shutil.copyfileobj() can be used for non block devices. So I choose more conservative value. As my quick benchmark, performance difference between 64KiB and 128 KiB is up to ~5%. On the other hand, performance difference between 32 KiB and 64 KiB can be more than 10% when file is fully buffered. This is why 64 KiB is rational value.
* bpo-35652: shutil.copytree(copy_function=...) erroneously pass DirEntry ↵Giampaolo Rodola2019-02-261-1/+1
| | | | instead of path str (GH-11997)
* Clean up code which checked presence of os.{stat,lstat,chmod} (#11643)Anthony Sottile2019-02-251-3/+1
|
* bpo-33671: allow setting shutil.copyfile() bufsize globally (GH-12016)Giampaolo Rodola2019-02-241-1/+3
|
* bpo-18283: Add support for bytes to shutil.which (GH-11818)Cheryl Sabella2019-02-131-10/+24
|
* bpo-20849: add dirs_exist_ok arg to shutil.copytree (patch by Josh Bronson)jab2018-12-281-9/+13
|
* bpo-33695 shutil.copytree() + os.scandir() cache (#7874)Giampaolo Rodola2018-11-121-56/+81
|
* bpo-35202: Remove unused imports in Lib directory. (GH-10445)Srinivas Thatiparthy (శ్రీనివాస్ తాటిపర్తి)2018-11-101-1/+0
|
* bpo-34260, shutil: fix copy2 and copystat documentation (GH-8523)Zsolt Cserna2018-10-231-5/+11
| | | | | | | | | | Fix the documentation of copy2, as it does not copy file ownership (user and group), only mode, mtime, atime and flags. The original text was confusing to developers as it suggested that this command is the same as 'cp -p', but according to cp(1), '-p' copies file ownership as well. Clarify which metadata is copied by shutil.copystat in its docstring.
* bpo-33671 / shutil.copyfile: use memoryview() with dynamic size on Windows ↵Giampaolo Rodola2018-06-191-33/+39
| | | | | | | | | | (#7681) bpo-33671 * use memoryview() with size == file size on Windows, see https://github.com/python/cpython/pull/7160#discussion_r195405230 * release intermediate (sliced) memoryview immediately * replace "OSX" occurrences with "macOS" * add some unittests for copyfileobj()
* bpo-33671: efficient zero-copy for shutil.copy* functions (Linux, OSX and ↵Giampaolo Rodola2018-06-121-12/+145
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Win) (#7160) * have shutil.copyfileobj use sendfile() if possible * refactoring: use ctx manager * add test with non-regular file obj * emulate case where file size can't be determined * reference _copyfileobj_sendfile directly * add test for offset() at certain position * add test for empty file * add test for non regular file dst * small refactoring * leave copyfileobj() alone in order to not introduce any incompatibility * minor refactoring * remove old test * update docstring * update docstring; rename exception class * detect platforms which only support file to socket zero copy * don't run test on platforms where file-to-file zero copy is not supported * use tempfiles * reset verbosity * add test for smaller chunks * add big file size test * add comment * update doc * update whatsnew doc * update doc * catch Exception * remove unused import * add test case for error on second sendfile() call * turn docstring into comment * add one more test * update comment * add Misc/NEWS entry * get rid of COPY_BUFSIZE; it belongs to another PR * update doc * expose posix._fcopyfile() for OSX * merge from linux branch * merge from linux branch * expose fcopyfile * arg clinic for the win implementation * convert path type to path_t * expose CopyFileW * fix windows tests * release GIL * minor refactoring * update doc * update comment * update docstrings * rename functions * rename test classes * update doc * update doc * update docstrings and comments * avoid do import nt|posix modules if unnecessary * set nt|posix modules to None if not available * micro speedup * update description * add doc note * use better wording in doc * rename function using 'fastcopy' prefix instead of 'zerocopy' * use :ref: in rst doc * change wording in doc * add test to make sure sendfile() doesn't get called aymore in case it doesn't support file to file copies * move CopyFileW in _winapi and actually expose CopyFileExW instead * fix line endings * add tests for mode bits * add docstring * remove test file mode class; let's keep it for later when Istart addressing OSX fcopyfile() specific copies * update doc to reflect new changes * update doc * adjust tests on win * fix argument clinic error * update doc * OSX: expose copyfile(3) instead of fcopyfile(3); also expose flags arg to python * osx / copyfile: use path_t instead of char * do not set dst name in the OSError exception in order to remain consistent with platforms which cannot do that (e.g. linux) * add same file test * add test for same file * have osx copyfile() pre-emptively check if src and dst are the same, otherwise it will return immedialtey and src file content gets deleted * turn PermissionError into appropriate SameFileError * expose ERROR_SHARING_VIOLATION in order to raise more appropriate SameFileError * honour follow_symlinks arg when using CopyFileEx * update Misc/NEWS * expose CreateDirectoryEx mock * change C type * CreateDirectoryExW actual implementation * provide specific makedirs() implementation for win * fix typo * skeleton for SetNamedSecurityInfo * get security info for src path * finally set security attrs * add unit tests * mimick os.makedirs() behavior and raise if dst dir exists * set 2 paths for OSError object * set 2 paths for OSError object * expand windows test * in case of exception on os.sendfile() set filename and filename2 exception attributes * set 2 filenames (src, dst) for OSError in case copyfile() fails on OSX * update doc * do not use CreateDirectoryEx() in copytree() if source dir is a symlink (breaks test_copytree_symlink_dir); instead just create a plain dir and remain consistent with POSIX implementation * use bytearray() and readinto() * use memoryview() with bytearray() * refactoring + introduce a new _fastcopy_binfileobj() fun * remove CopyFileEx and other C wrappers * remove code related to CopyFileEx * Recognize binary files in copyfileobj() ...and use fastest _fastcopy_binfileobj() when possible * set 1MB copy bufsize on win; also add a global _COPY_BUFSIZE variable * use ctx manager for memoryview() * update doc * remove outdated doc * remove last CopyFileEx remnants * OSX - use fcopyfile(3) instead of copyfile(3) ...as an extra safety measure: in case src/dst are "exotic" files (non regular or living on a network fs etc.) we better fail on open() instead of copyfile(3) as we're not quite sure what's gonna happen in that case. * update doc
* bpo-28564: Use os.scandir() in shutil.rmtree(). (#4085)Serhiy Storchaka2017-11-041-30/+43
| | | | This speeds up it to 20-40%.
* bpo-30218: support path-like objects in shutil.unpack_archive() (GH-1367)Jelle Zijlstra2017-05-051-0/+3
| | | Thanks to Jelle Zijlstra for the patch.
* bpo-29762: More use "raise from None". (#569)Serhiy Storchaka2017-04-051-2/+2
| | | This hides unwanted implementation details from tracebacks.
* Issue #14061: Misc fixes and cleanups in archiving code in shutil.Serhiy Storchaka2016-12-161-38/+44
|\ | | | | | | | | | | Imporoved the documentation and tests for make_archive() and unpack_archive(). Improved error handling when corresponding compress module is not available. Brake circular dependency between shutil and tarfile modules.
| * Issue #14061: Misc fixes and cleanups in archiving code in shutil.Serhiy Storchaka2016-12-161-38/+44
| | | | | | | | | | | | Imporoved the documentation and tests for make_archive() and unpack_archive(). Improved error handling when corresponding compress module is not available. Brake circular dependency between shutil and tarfile modules.
* | Issue #28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.Serhiy Storchaka2016-10-231-3/+4
|\ \ | |/
| * Issue #28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.Serhiy Storchaka2016-10-231-3/+4
| |
| * Issue #27895: Spelling fixes (Contributed by Ville Skyttä).Martin Panter2016-09-071-1/+1
| |
* | Issue #27895: Spelling fixes (Contributed by Ville Skyttä).Raymond Hettinger2016-08-301-1/+1
| |
* | Issue #27626: Merge spelling fixes from 3.5Martin Panter2016-07-281-1/+1
|\ \ | |/
| * Issue #27626: Spelling fixes in docs, comments and internal namesMartin Panter2016-07-281-1/+1
| | | | | | | | Based on patch by Ville Skyttä.
* | Issue #26801: shutil.get_terminal_size() now handles the case of stdout isSerhiy Storchaka2016-04-241-1/+3
|\ \ | |/ | | | | reopened on Windows. Added tests for fallbacks.
| * Issue #26801: shutil.get_terminal_size() now handles the case of stdout isSerhiy Storchaka2016-04-241-1/+3
| | | | | | | | reopened on Windows. Added tests for fallbacks.
* | Merge 3.5: issue #26801Victor Stinner2016-04-191-1/+1
|\ \ | |/
| * Fix shutil.get_terminal_size() error handlingVictor Stinner2016-04-191-1/+1
| | | | | | | | | | | | | | | | Issue #26801: Fix error handling in shutil.get_terminal_size(), catch AttributeError instead of NameError. Patch written by Emanuel Barry. test_shutil: skip the functional test using "stty size" command if os.get_terminal_size() is missing.
* | Issue #24982: shutil.make_archive() with the "zip" format now adds entriesSerhiy Storchaka2015-09-081-0/+9
|\ \ | |/ | | | | | | for directories (including empty directories) in ZIP file. Added test for comparing shutil.make_archive() with the "zip" command.
| * Issue #24982: shutil.make_archive() with the "zip" format now adds entriesSerhiy Storchaka2015-09-081-0/+9
| |\ | | | | | | | | | | | | for directories (including empty directories) in ZIP file. Added test for comparing shutil.make_archive() with the "zip" command.
| | * Issue #24982: shutil.make_archive() with the "zip" format now adds entriesSerhiy Storchaka2015-09-081-0/+9
| | | | | | | | | | | | | | | for directories (including empty directories) in ZIP file. Added test for comparing shutil.make_archive() with the "zip" command.
* | | Issue #24878: Add docstrings to selected namedtuplesRaymond Hettinger2015-08-181-0/+3
|/ /
* | Issue #21697: shutil.copytree() now correctly handles symbolic links that ↵Berker Peksag2015-07-251-1/+5
|\ \ | |/ | | | | | | | | point to directories. Patch by Eduardo Seabra and Thomas Kluyver.
| * Issue #21697: shutil.copytree() now correctly handles symbolic links that ↵Berker Peksag2015-07-251-1/+5
| | | | | | | | | | | | point to directories. Patch by Eduardo Seabra and Thomas Kluyver.
* | Issue #21775: shutil.copytree(): fix crash when copying to VFATBerker Peksag2014-12-101-1/+1
|\ \ | |/ | | | | | | | | | | | | | | An exception handler assumed that that OSError objects always have a 'winerror' attribute. That is not the case, so the exception handler itself raised AttributeError when run on Linux (and, presumably, any other non-Windows OS). Patch by Greg Ward.
| * Issue #21775: shutil.copytree(): fix crash when copying to VFATBerker Peksag2014-12-101-1/+1
| | | | | | | | | | | | | | | | | | An exception handler assumed that that OSError objects always have a 'winerror' attribute. That is not the case, so the exception handler itself raised AttributeError when run on Linux (and, presumably, any other non-Windows OS). Patch by Greg Ward.
* | Issue #21280: Fixed a bug in shutil.make_archive() when create an archive ofSerhiy Storchaka2014-11-271-2/+2
|\ \ | |/ | | | | current directory in current directory.
| * Issue #21280: Fixed a bug in shutil.make_archive() when create an archive ofSerhiy Storchaka2014-11-271-2/+2
| | | | | | | | current directory in current directory.
* | Issue #22665: Add missing get_terminal_size and SameFileError to shutil.__all__.Berker Peksag2014-11-011-1/+2
|\ \ | |/
| * Issue #22665: Add missing get_terminal_size and SameFileError to shutil.__all__.Berker Peksag2014-11-011-1/+2
| |
* | Issue #21391: Use os.path.abspath in the shutil module.Berker Peksag2014-09-181-3/+2
| |
* | Issue #5411: Added support for the "xztar" format in the shutil module.Serhiy Storchaka2014-08-061-4/+23
| |
* | #19840: Add copy_function to shutil.move.R David Murray2014-06-111-4/+11
| | | | | | | | Patch by Claudiu Popa.
* | #20744: don't try running an external 'zip' in shutil.make_archive()Andrew Kuchling2014-03-201-40/+15
|/ | | | Instead we'll just use the stdlib zipfile module. Patch by Derek Chiang
* Issue #19856: shutil.move() failed to move a directory to other directorySerhiy Storchaka2014-02-111-1/+2
|\ | | | | | | on Windows if source name ends with os.altsep.
| * Issue #19856: shutil.move() failed to move a directory to other directorySerhiy Storchaka2014-02-111-1/+2
| | | | | | | | on Windows if source name ends with os.altsep.
* | merge 3.3 (#20102)Benjamin Peterson2014-02-021-11/+9
|\ \ | |/
| * use with statement to ensure zipfile is always closed (closes #20102)Benjamin Peterson2014-02-021-11/+9
| |
* | Backout a1a05e2724dd: shutil.which(bytes) is a new feature and my patch does ↵Victor Stinner2013-12-161-15/+8
| | | | | | | | not work on Windows