summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changelog.d/3137.change.rst1
-rw-r--r--setuptools/command/easy_install.py20
-rw-r--r--setuptools/package_index.py3
3 files changed, 4 insertions, 20 deletions
diff --git a/changelog.d/3137.change.rst b/changelog.d/3137.change.rst
new file mode 100644
index 00000000..e4186054
--- /dev/null
+++ b/changelog.d/3137.change.rst
@@ -0,0 +1 @@
+Use samefile from stdlib, supported on Windows since Python 3.2.
diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py
index 905bc627..3aed8caa 100644
--- a/setuptools/command/easy_install.py
+++ b/setuptools/command/easy_install.py
@@ -70,7 +70,7 @@ from ..extern.jaraco.text import yield_lines
warnings.filterwarnings("default", category=pkg_resources.PEP440Warning)
__all__ = [
- 'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
+ 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
'get_exe_prefixes',
]
@@ -79,22 +79,6 @@ def is_64bit():
return struct.calcsize("P") == 8
-def samefile(p1, p2):
- """
- Determine if two paths reference the same file.
-
- Augments os.path.samefile to work on Windows and
- suppresses errors if the path doesn't exist.
- """
- both_exist = os.path.exists(p1) and os.path.exists(p2)
- use_samefile = hasattr(os.path, 'samefile') and both_exist
- if use_samefile:
- return os.path.samefile(p1, p2)
- norm_p1 = os.path.normpath(os.path.normcase(p1))
- norm_p2 = os.path.normpath(os.path.normcase(p2))
- return norm_p1 == norm_p2
-
-
def _to_bytes(s):
return s.encode('utf8')
@@ -938,7 +922,7 @@ class easy_install(Command):
ensure_directory(destination)
dist = self.egg_distribution(egg_path)
- if not samefile(egg_path, destination):
+ if not os.path.samefile(egg_path, destination):
if os.path.isdir(destination) and not os.path.islink(destination):
dir_util.remove_tree(destination, dry_run=self.dry_run)
elif os.path.exists(destination):
diff --git a/setuptools/package_index.py b/setuptools/package_index.py
index 051e523a..4b127f8c 100644
--- a/setuptools/package_index.py
+++ b/setuptools/package_index.py
@@ -680,8 +680,7 @@ class PackageIndex(Environment):
# Make sure the file has been downloaded to the temp dir.
if os.path.dirname(filename) != tmpdir:
dst = os.path.join(tmpdir, basename)
- from setuptools.command.easy_install import samefile
- if not samefile(filename, dst):
+ if not os.path.samefile(filename, dst):
shutil.copy2(filename, dst)
filename = dst