[Python-checkins] distutils2: Remove usage of stdlib shutil.
eric.araujo
python-checkins at python.org
Mon Nov 21 14:21:37 CET 2011
http://hg.python.org/distutils2/rev/c1b1b537196d
changeset: 1257:c1b1b537196d
user: Éric Araujo <merwok at netwok.org>
date: Sun Nov 20 18:51:32 2011 +0100
summary:
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.
files:
distutils2/_backport/shutil.py | 7 +------
distutils2/_backport/tarfile.py | 7 +++++--
distutils2/_backport/tests/test_sysconfig.py | 2 +-
distutils2/command/bdist_dumb.py | 2 +-
distutils2/command/bdist_msi.py | 3 +--
distutils2/command/bdist_wininst.py | 3 +--
distutils2/command/clean.py | 5 +++--
distutils2/command/install_distinfo.py | 2 +-
distutils2/compiler/ccompiler.py | 2 +-
distutils2/create.py | 3 +--
distutils2/tests/support.py | 3 +--
distutils2/tests/test_command_test.py | 2 +-
distutils2/tests/test_command_upload_docs.py | 2 +-
distutils2/tests/test_database.py | 2 +-
distutils2/tests/test_pypi_dist.py | 5 +++--
distutils2/util.py | 3 +--
16 files changed, 24 insertions(+), 29 deletions(-)
diff --git a/distutils2/_backport/shutil.py b/distutils2/_backport/shutil.py
--- a/distutils2/_backport/shutil.py
+++ b/distutils2/_backport/shutil.py
@@ -10,6 +10,7 @@
from os.path import abspath
import fnmatch
import errno
+from distutils2._backport import tarfile
try:
import bz2
@@ -407,10 +408,6 @@
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_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:
diff --git a/distutils2/_backport/tarfile.py b/distutils2/_backport/tarfile.py
--- a/distutils2/_backport/tarfile.py
+++ b/distutils2/_backport/tarfile.py
@@ -43,7 +43,6 @@
#---------
import sys
import os
-import shutil
import stat
import errno
import time
@@ -256,7 +255,11 @@
if length == 0:
return
if length is None:
- shutil.copyfileobj(src, dst)
+ while 1:
+ buf = src.read(16*1024)
+ if not buf:
+ break
+ dst.write(buf)
return
BUFSIZE = 16 * 1024
diff --git a/distutils2/_backport/tests/test_sysconfig.py b/distutils2/_backport/tests/test_sysconfig.py
--- 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,
diff --git a/distutils2/command/bdist_dumb.py b/distutils2/command/bdist_dumb.py
--- a/distutils2/command/bdist_dumb.py
+++ b/distutils2/command/bdist_dumb.py
@@ -5,12 +5,12 @@
"""
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
diff --git a/distutils2/command/bdist_msi.py b/distutils2/command/bdist_msi.py
--- a/distutils2/command/bdist_msi.py
+++ b/distutils2/command/bdist_msi.py
@@ -7,9 +7,8 @@
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
diff --git a/distutils2/command/bdist_wininst.py b/distutils2/command/bdist_wininst.py
--- a/distutils2/command/bdist_wininst.py
+++ b/distutils2/command/bdist_wininst.py
@@ -4,12 +4,11 @@
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
diff --git a/distutils2/command/clean.py b/distutils2/command/clean.py
--- a/distutils2/command/clean.py
+++ b/distutils2/command/clean.py
@@ -3,9 +3,10 @@
# Contributed by Bastian Kleineidam <calvin at 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):
diff --git a/distutils2/command/install_distinfo.py b/distutils2/command/install_distinfo.py
--- 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 @@
from distutils2 import logger
from distutils2.command.cmd import Command
+from distutils2._backport.shutil import rmtree
class install_distinfo(Command):
diff --git a/distutils2/compiler/ccompiler.py b/distutils2/compiler/ccompiler.py
--- a/distutils2/compiler/ccompiler.py
+++ b/distutils2/compiler/ccompiler.py
@@ -5,11 +5,11 @@
"""
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):
diff --git a/distutils2/create.py b/distutils2/create.py
--- a/distutils2/create.py
+++ b/distutils2/create.py
@@ -24,7 +24,6 @@
import sys
import glob
import codecs
-import shutil
from textwrap import dedent
from ConfigParser import RawConfigParser
@@ -34,7 +33,7 @@
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:
diff --git a/distutils2/tests/support.py b/distutils2/tests/support.py
--- a/distutils2/tests/support.py
+++ b/distutils2/tests/support.py
@@ -37,7 +37,6 @@
import sys
import errno
import codecs
-import shutil
import logging
import logging.handlers
import subprocess
@@ -53,7 +52,7 @@
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
__all__ = [
diff --git a/distutils2/tests/test_command_test.py b/distutils2/tests/test_command_test.py
--- 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.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\)
diff --git a/distutils2/tests/test_command_upload_docs.py b/distutils2/tests/test_command_upload_docs.py
--- 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.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:
diff --git a/distutils2/tests/test_database.py b/distutils2/tests/test_database.py
--- 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 @@
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)
diff --git a/distutils2/tests/test_pypi_dist.py b/distutils2/tests/test_pypi_dist.py
--- 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)
+ split_archive_name, get_infos_from_url)
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 @@
# should not fail
release['sdist']
+ @unittest.skip('needs to be written')
def test_get_unknown_distribution(self):
# should raise a KeyError
pass
diff --git a/distutils2/util.py b/distutils2/util.py
--- a/distutils2/util.py
+++ b/distutils2/util.py
@@ -6,7 +6,6 @@
import sys
import errno
import codecs
-import shutil
import string
import posixpath
import subprocess
@@ -26,7 +25,7 @@
from distutils2.errors import (PackagingPlatformError, PackagingFileError,
PackagingExecError, InstallationException,
PackagingInternalError)
-from distutils2._backport import sysconfig
+from distutils2._backport import shutil, sysconfig
__all__ = [
# file dependencies
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list