distutils2: c1b1b537196d (original) (raw)
Mercurial > distutils2
changeset 1257:c1b1b537196d
Remove usage of stdlib shutil. This should help avoiding issues like #13170. Because of implicit relative imports, _backport.tarfile already imported shutil from the backports instead of the stdlib; I have inlined the only function it needed to remove the circular dependency between these modules.
line wrap: on
line diff
--- a/distutils2/_backport/shutil.py +++ b/distutils2/_backport/shutil.py @@ -10,6 +10,7 @@ import stat from os.path import abspath import fnmatch import errno +from distutils2._backport import tarfile try: import bz2 @@ -407,10 +408,6 @@ def _make_tarball(base_name, base_dir, c os.makedirs(archive_dir) # creating the tarball
XXX late import because of circular dependency between shutil and
tarfile :(
- from distutils2._backport import tarfile
-
if logger is not None:
logger.info('Creating tar archive')
@@ -700,8 +697,6 @@ def _unpack_zipfile(filename, extract_di
def _unpack_tarfile(filename, extract_dir):
"""Unpack tar/tar.gz/tar.bz2 filename
to extract_dir
"""
late import because of circular dependency
- from distutils2._backport import tarfile try: tarobj = tarfile.open(filename) except tarfile.TarError:
--- a/distutils2/_backport/tarfile.py +++ b/distutils2/_backport/tarfile.py @@ -43,7 +43,6 @@ version = "0.9.0" #--------- import sys import os -import shutil import stat import errno import time @@ -256,7 +255,11 @@ def copyfileobj(src, dst, length=None): if length == 0: return if length is None:
shutil.copyfileobj(src, dst)[](#l2.15)
while 1:[](#l2.16)
buf = src.read(16*1024)[](#l2.17)
if not buf:[](#l2.18)
break[](#l2.19)
dst.write(buf)[](#l2.20) return[](#l2.21)
--- a/distutils2/_backport/tests/test_sysconfig.py +++ b/distutils2/_backport/tests/test_sysconfig.py @@ -1,10 +1,10 @@ import os import sys import subprocess -import shutil from copy import copy from StringIO import StringIO +from distutils2._backport import shutil from distutils2._backport import sysconfig from distutils2._backport.sysconfig import ( get_paths, get_platform, get_config_vars, get_path, get_path_names,
--- a/distutils2/command/bdist_dumb.py +++ b/distutils2/command/bdist_dumb.py @@ -5,12 +5,12 @@ sys.prefix or sys.exec_prefix. """ import os -from shutil import rmtree from distutils2.util import get_platform from distutils2.command.cmd import Command from distutils2.errors import PackagingPlatformError from distutils2 import logger +from distutils2._backport.shutil import rmtree from distutils2._backport.sysconfig import get_python_version
--- a/distutils2/command/bdist_msi.py +++ b/distutils2/command/bdist_msi.py @@ -7,9 +7,8 @@ import sys import os import msilib - +from distutils2._backport.shutil import rmtree from distutils2._backport.sysconfig import get_python_version -from shutil import rmtree from distutils2.command.cmd import Command from distutils2.version import NormalizedVersion from distutils2.errors import PackagingOptionError
--- a/distutils2/command/bdist_wininst.py +++ b/distutils2/command/bdist_wininst.py @@ -4,12 +4,11 @@ import sys import os import codecs -from shutil import rmtree - from distutils2.command.cmd import Command from distutils2.errors import PackagingOptionError, PackagingPlatformError from distutils2 import logger from distutils2.util import get_platform +from distutils2._backport.shutil import rmtree from distutils2._backport.sysconfig import get_python_version
--- a/distutils2/command/clean.py +++ b/distutils2/command/clean.py @@ -3,9 +3,10 @@
Contributed by Bastian Kleineidam calvin@cs.uni-sb.de
import os -from shutil import rmtree +from distutils2 import logger from distutils2.command.cmd import Command -from distutils2 import logger +from distutils2._backport.shutil import rmtree + class clean(Command):
--- a/distutils2/command/install_distinfo.py +++ b/distutils2/command/install_distinfo.py @@ -5,7 +5,6 @@ import os import csv import codecs -from shutil import rmtree try: import hashlib except ImportError: @@ -13,6 +12,7 @@ except ImportError: from distutils2 import logger from distutils2.command.cmd import Command +from distutils2._backport.shutil import rmtree class install_distinfo(Command):
--- a/distutils2/compiler/ccompiler.py +++ b/distutils2/compiler/ccompiler.py @@ -5,11 +5,11 @@ interface for the compiler abstraction m """ import os -from shutil import move from distutils2 import logger from distutils2.util import split_quoted, execute, newer_group, spawn from distutils2.errors import CompileError, LinkError, UnknownFileError from distutils2.compiler import gen_preprocess_options +from distutils2._backport.shutil import move class CCompiler(object):
--- a/distutils2/create.py +++ b/distutils2/create.py @@ -24,7 +24,6 @@ import imp import sys import glob import codecs -import shutil from textwrap import dedent from ConfigParser import RawConfigParser @@ -34,7 +33,7 @@ from distutils2 import logger from distutils2._trove import all_classifiers as _CLASSIFIERS_LIST from distutils2.compat import detect_encoding from distutils2.version import is_valid_version -from distutils2._backport import sysconfig +from distutils2._backport import shutil, sysconfig try: any except NameError:
--- a/distutils2/tests/support.py +++ b/distutils2/tests/support.py @@ -37,7 +37,6 @@ import re import sys import errno import codecs -import shutil import logging import logging.handlers import subprocess @@ -53,7 +52,7 @@ from distutils2.util import resolve_name from distutils2.command import set_command, _COMMANDS from distutils2.tests import unittest -from distutils2._backport import sysconfig +from distutils2._backport import shutil, sysconfig
define all to make pydoc more useful
--- a/distutils2/tests/test_command_test.py +++ b/distutils2/tests/test_command_test.py @@ -1,7 +1,6 @@ import os import re import sys -import shutil import unittest as ut1 import distutils2.database @@ -14,6 +13,7 @@ from distutils2.tests.support import (Te from distutils2.command.test import test from distutils2.command import set_command from distutils2.dist import Distribution +from distutils2._backport import shutil EXPECTED_OUTPUT_RE = r'''FAIL: test_blah (myowntestmodule.SomeTest)
--- a/distutils2/tests/test_command_upload_docs.py +++ b/distutils2/tests/test_command_upload_docs.py @@ -1,6 +1,5 @@ """Tests for distutils2.command.upload_docs.""" import os -import shutil import logging import zipfile try: @@ -12,6 +11,7 @@ from distutils2.command import upload_do from distutils2.command.upload_docs import upload_docs, zip_dir from distutils2.dist import Distribution from distutils2.errors import PackagingFileError, PackagingOptionError +from distutils2._backport import shutil from distutils2.tests import unittest, support try:
--- a/distutils2/tests/test_database.py +++ b/distutils2/tests/test_database.py @@ -1,7 +1,6 @@ import os import csv import sys -import shutil import tempfile try: from hashlib import md5 @@ -22,6 +21,7 @@ from distutils2.database import ( provides_distribution, obsoletes_distribution, get_file_users, enable_cache, disable_cache, distinfo_dirname, _yield_distributions, get_file, get_file_path) +from distutils2._backport import shutil
TODO Add a test for getting a distribution provided by another distribution
TODO Add a test for absolute pathed RECORD items (e.g. /etc/myapp/config.ini)
--- a/distutils2/tests/test_pypi_dist.py +++ b/distutils2/tests/test_pypi_dist.py @@ -1,11 +1,11 @@ """Tests for the distutils2.pypi.dist module.""" import os -import shutil from distutils2.version import VersionPredicate from distutils2.pypi.dist import (ReleaseInfo, ReleasesList, DistInfo,
split_archive_name, get_infos_from_url)[](#l15.10)
split_archive_name, get_infos_from_url)[](#l15.11)
from distutils2.pypi.errors import HashDoesNotMatch, UnsupportedHashName +from distutils2._backport import shutil from distutils2.tests import unittest from distutils2.tests.support import TempdirManager, requires_zlib, fake_dec @@ -38,6 +38,7 @@ class TestReleaseInfo(unittest.TestCase) # should not fail release['sdist']
- @unittest.skip('needs to be written') def test_get_unknown_distribution(self): # should raise a KeyError pass
--- a/distutils2/util.py +++ b/distutils2/util.py @@ -6,7 +6,6 @@ import csv import sys import errno import codecs -import shutil import string import posixpath import subprocess @@ -26,7 +25,7 @@ from distutils2 import logger from distutils2.errors import (PackagingPlatformError, PackagingFileError, PackagingExecError, InstallationException, PackagingInternalError) -from distutils2._backport import sysconfig +from distutils2._backport import shutil, sysconfig all = [ # file dependencies