GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||
GeezerVison is showing github.com — GH-73991: Add follow_symlinks argument to `pathlib.Path.copy()` by barneygale · Pull Request #120519 · python/cpython Conversation
|
| .. warning:: | ||
| On old builds of Windows (before Windows 10 build 19041), this method | ||
| raises :exc:`OSError` when a symlink to a directory is encountered and | ||
| *follow_symlinks* is false. |
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Failing to copy a symlink that targets a directory is disappointing. A symlink is never reported as a directory in Python, so code that copies a tree that contains directory symlinks is going to fail on Windows Server 2016 and Windows Server 2019 systems, with no obvious reason that a Python programmer would reasonably expect. A fallback path is needed to copy the link via os.symlink().
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
I should have waited for your feedback Eryk, my bad. I'll fix this in a follow-up PR.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
As always, I defer to what you and Steve think is best.
I'm of a mixed mind regarding Python's PEP 11 support policy that requires new versions of Python to support Server releases that still have extended support from Microsoft, which sets the bar for all versions of Windows. The Server editions are released in the LTSC channel and get 10 years of support. Server 2016 (build 14393) is supported until January 2027, and Server 2019 (build 17763) is supported until January 2029. Part of me wishes we just grouped the Server releases with corresponding releases in the general availability channel (e.g. Windows 10 1607 and Windows 10 1809) because it's more work to provide and maintain fallback paths for older versions of Windows. However, it's also great for users that they can use the latest version of Python on older systems.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…python#120519) Add support for not following symlinks in `pathlib.Path.copy()`. On Windows we add the `COPY_FILE_COPY_SYMLINK` flag is following symlinks is disabled. If the source is symlink to a directory, this call will fail with `ERROR_ACCESS_DENIED`. In this case we add `COPY_FILE_DIRECTORY` to the flags and retry. This can fail on old Windowses, which we note in the docs. No news as `copy()` was only just added.
…python#120519) Add support for not following symlinks in `pathlib.Path.copy()`. On Windows we add the `COPY_FILE_COPY_SYMLINK` flag is following symlinks is disabled. If the source is symlink to a directory, this call will fail with `ERROR_ACCESS_DENIED`. In this case we add `COPY_FILE_DIRECTORY` to the flags and retry. This can fail on old Windowses, which we note in the docs. No news as `copy()` was only just added.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.