[Python-checkins] distutils2: finished the removal of the log module
tarek.ziade
python-checkins at python.org
Fri Nov 5 02:29:57 CET 2010
tarek.ziade pushed f6ef30a22a24 to distutils2:
http://hg.python.org/distutils2/rev/f6ef30a22a24
changeset: 789:f6ef30a22a24
tag: tip
user: Tarek Ziade <tarek at ziade.org>
date: Fri Nov 05 02:29:52 2010 +0100
summary: finished the removal of the log module
files: distutils2/__init__.py, distutils2/_backport/tests/test_pkgutil.py, distutils2/command/bdist_dumb.py, distutils2/command/bdist_wininst.py, distutils2/command/build_clib.py, distutils2/command/build_ext.py, distutils2/command/build_scripts.py, distutils2/command/clean.py, distutils2/command/cmd.py, distutils2/command/config.py, distutils2/command/install_dist.py, distutils2/command/install_distinfo.py, distutils2/command/install_scripts.py, distutils2/command/register.py, distutils2/command/sdist.py, distutils2/command/upload.py, distutils2/command/upload_docs.py, distutils2/log.py, distutils2/metadata.py, distutils2/tests/support.py, distutils2/tests/test_Mixin2to3.py, distutils2/tests/test_command_config.py, distutils2/tests/test_command_sdist.py, distutils2/tests/test_command_upload_docs.py, distutils2/tests/test_depgraph.py, distutils2/tests/test_metadata.py, distutils2/util.py
diff --git a/distutils2/__init__.py b/distutils2/__init__.py
--- a/distutils2/__init__.py
+++ b/distutils2/__init__.py
@@ -14,7 +14,6 @@
__version__ = "1.0a3"
logger = getLogger('distutils2')
-
# when set to True, converts doctests by default too
run_2to3_on_doctests = True
# Standard package names for fixer packages
diff --git a/distutils2/_backport/tests/test_pkgutil.py b/distutils2/_backport/tests/test_pkgutil.py
--- a/distutils2/_backport/tests/test_pkgutil.py
+++ b/distutils2/_backport/tests/test_pkgutil.py
@@ -13,8 +13,8 @@
from distutils2._backport.hashlib import md5
from test.test_support import TESTFN
-from distutils2.tests import unittest, run_unittest
+from distutils2.tests import unittest, run_unittest, support
from distutils2._backport import pkgutil
try:
@@ -323,7 +323,8 @@
self.assertEqual(sorted(found), sorted(distinfo_record_paths))
-class TestPkgUtilPEP376(unittest.TestCase):
+class TestPkgUtilPEP376(support.LoggingCatcher, support.WarningsCatcher,
+ unittest.TestCase):
# Tests for the new functionality added in PEP 376.
def setUp(self):
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
@@ -14,7 +14,7 @@
from distutils2.util import get_platform
from distutils2.command.cmd import Command
from distutils2.errors import DistutilsPlatformError
-from distutils2 import log
+from distutils2 import logger
class bdist_dumb (Command):
@@ -87,7 +87,7 @@
install.skip_build = self.skip_build
install.warn_dir = 0
- log.info("installing to %s" % self.bdist_dir)
+ logger.info("installing to %s" % self.bdist_dir)
self.run_command('install_dist')
# And make an archive relative to the root of the
@@ -129,7 +129,7 @@
if not self.keep_temp:
if self.dry_run:
- log.info('Removing %s' % self.bdist_dir)
+ logger.info('Removing %s' % self.bdist_dir)
else:
rmtree(self.bdist_dir)
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
@@ -14,7 +14,7 @@
from distutils2._backport.sysconfig import get_python_version
from distutils2.command.cmd import Command
from distutils2.errors import DistutilsOptionError, DistutilsPlatformError
-from distutils2 import log
+from distutils2 import logger
from distutils2.util import get_platform
class bdist_wininst (Command):
@@ -160,7 +160,7 @@
'install_' + key,
value)
- log.info("installing to %s", self.bdist_dir)
+ logger.info("installing to %s", self.bdist_dir)
install.ensure_finalized()
# avoid warning of 'install_lib' about installing
@@ -187,12 +187,12 @@
self.distribution.dist_files.append(('bdist_wininst', pyversion,
self.get_installer_filename(fullname)))
# remove the zip-file again
- log.debug("removing temporary file '%s'", arcname)
+ logger.debug("removing temporary file '%s'", arcname)
os.remove(arcname)
if not self.keep_temp:
if self.dry_run:
- log.info('Removing %s' % self.bdist_dir)
+ logger.info('Removing %s' % self.bdist_dir)
else:
rmtree(self.bdist_dir)
diff --git a/distutils2/command/build_clib.py b/distutils2/command/build_clib.py
--- a/distutils2/command/build_clib.py
+++ b/distutils2/command/build_clib.py
@@ -19,7 +19,7 @@
from distutils2.command.cmd import Command
from distutils2.errors import DistutilsSetupError
from distutils2.compiler.ccompiler import customize_compiler
-from distutils2 import log
+from distutils2 import logger
def show_compilers():
from distutils2.compiler.ccompiler import show_compilers
@@ -185,7 +185,7 @@
"a list of source filenames") % lib_name
sources = list(sources)
- log.info("building '%s' library", lib_name)
+ logger.info("building '%s' library", lib_name)
# First, compile the source code to object files in the library
# directory. (This should probably change to putting object
diff --git a/distutils2/command/build_ext.py b/distutils2/command/build_ext.py
--- a/distutils2/command/build_ext.py
+++ b/distutils2/command/build_ext.py
@@ -15,7 +15,7 @@
from distutils2.compiler.ccompiler import customize_compiler
from distutils2.util import newer_group
from distutils2.extension import Extension
-from distutils2 import log
+from distutils2 import logger
try:
import sysconfig
except ImportError:
@@ -449,10 +449,10 @@
ext_path = self.get_ext_fullpath(ext.name)
depends = sources + ext.depends
if not (self.force or newer_group(depends, ext_path, 'newer')):
- log.debug("skipping '%s' extension (up-to-date)", ext.name)
+ logger.debug("skipping '%s' extension (up-to-date)", ext.name)
return
else:
- log.info("building '%s' extension", ext.name)
+ logger.info("building '%s' extension", ext.name)
# First, scan the sources for SWIG definition files (.i), run
# SWIG on 'em to create .c files, and modify the sources list
@@ -536,7 +536,7 @@
# the temp dir.
if self.swig_cpp:
- log.warn("--swig-cpp is deprecated - use --swig-opts=-c++")
+ logger.warn("--swig-cpp is deprecated - use --swig-opts=-c++")
if self.swig_cpp or ('-c++' in self.swig_opts) or \
('-c++' in extension.swig_opts):
@@ -569,7 +569,7 @@
for source in swig_sources:
target = swig_targets[source]
- log.info("swigging %s to %s", source, target)
+ logger.info("swigging %s to %s", source, target)
self.spawn(swig_cmd + ["-o", target, source])
return new_sources
diff --git a/distutils2/command/build_scripts.py b/distutils2/command/build_scripts.py
--- a/distutils2/command/build_scripts.py
+++ b/distutils2/command/build_scripts.py
@@ -8,7 +8,7 @@
from distutils2.command.cmd import Command
from distutils2.util import convert_path, newer
-from distutils2 import log
+from distutils2 import logger
try:
import sysconfig
except ImportError:
@@ -74,7 +74,7 @@
outfiles.append(outfile)
if not self.force and not newer(script, outfile):
- log.debug("not copying %s (up-to-date)", script)
+ logger.debug("not copying %s (up-to-date)", script)
continue
# Always open the file, but ignore failures in dry-run mode --
@@ -98,7 +98,7 @@
post_interp = match.group(1) or ''
if adjust:
- log.info("copying and adjusting %s -> %s", script,
+ logger.info("copying and adjusting %s -> %s", script,
self.build_dir)
if not self.dry_run:
outf = open(outfile, "w")
@@ -125,12 +125,12 @@
if os.name == 'posix':
for file in outfiles:
if self.dry_run:
- log.info("changing mode of %s", file)
+ logger.info("changing mode of %s", file)
else:
oldmode = os.stat(file)[ST_MODE] & 07777
newmode = (oldmode | 0555) & 07777
if newmode != oldmode:
- log.info("changing mode of %s from %o to %o",
+ logger.info("changing mode of %s from %o to %o",
file, oldmode, newmode)
os.chmod(file, newmode)
return outfiles
diff --git a/distutils2/command/clean.py b/distutils2/command/clean.py
--- a/distutils2/command/clean.py
+++ b/distutils2/command/clean.py
@@ -8,7 +8,7 @@
import os
from shutil import rmtree
from distutils2.command.cmd import Command
-from distutils2 import log
+from distutils2 import logger
class clean(Command):
@@ -48,11 +48,11 @@
# gone)
if os.path.exists(self.build_temp):
if self.dry_run:
- log.info('Removing %s' % self.build_temp)
+ logger.info('Removing %s' % self.build_temp)
else:
rmtree(self.build_temp)
else:
- log.debug("'%s' does not exist -- can't clean it",
+ logger.debug("'%s' does not exist -- can't clean it",
self.build_temp)
if self.all:
@@ -62,19 +62,19 @@
self.build_scripts):
if os.path.exists(directory):
if self.dry_run:
- log.info('Removing %s' % directory)
+ logger.info('Removing %s' % directory)
else:
rmtree(directory)
else:
- log.warn("'%s' does not exist -- can't clean it",
- directory)
+ logger.warn("'%s' does not exist -- can't clean it",
+ directory)
# just for the heck of it, try to remove the base build directory:
# we might have emptied it right now, but if not we don't care
if not self.dry_run:
try:
os.rmdir(self.build_base)
- log.info("removing '%s'", self.build_base)
+ logger.info("removing '%s'", self.build_base)
except OSError:
pass
diff --git a/distutils2/command/cmd.py b/distutils2/command/cmd.py
--- a/distutils2/command/cmd.py
+++ b/distutils2/command/cmd.py
@@ -3,12 +3,13 @@
Provides the Command class, the base class for the command classes
in the distutils.command package.
"""
+import os
+import re
+import logging
-
-import os, re
from distutils2.errors import DistutilsOptionError
from distutils2 import util
-from distutils2 import log
+from distutils2 import logger
# XXX see if we want to backport this
from distutils2._backport.shutil import copytree, copyfile, move
@@ -163,7 +164,7 @@
def dump_options(self, header=None, indent=""):
if header is None:
header = "command options for '%s':" % self.get_command_name()
- self.announce(indent + header, level=log.INFO)
+ self.announce(indent + header, level=logging.INFO)
indent = indent + " "
for (option, _, _) in self.user_options:
option = option.replace('-', '_')
@@ -171,7 +172,7 @@
option = option[:-1]
value = getattr(self, option)
self.announce(indent + "%s = %s" % (option, value),
- level=log.INFO)
+ level=logging.INFO)
def run(self):
"""A command's raison d'etre: carry out the action it exists to
@@ -186,11 +187,11 @@
raise RuntimeError, \
"abstract method -- subclass %s must override" % self.__class__
- def announce(self, msg, level=1):
+ def announce(self, msg, level=logging.INFO):
"""If the current verbosity level is of greater than or equal to
'level' print 'msg' to stdout.
"""
- log.log(level, msg)
+ logger.log(level, msg)
# -- External interface --------------------------------------------
# (called by outsiders)
@@ -367,7 +368,7 @@
# -- External world manipulation -----------------------------------
def warn(self, msg):
- log.warn("warning: %s: %s\n" %
+ logger.warning("warning: %s: %s\n" %
(self.get_command_name(), msg))
def execute(self, func, args, msg=None, level=1):
@@ -382,7 +383,7 @@
if dry_run:
head = ''
for part in name.split(os.sep):
- log.info("created directory %s%s", head, part)
+ logger.info("created directory %s%s", head, part)
head += part + os.sep
return
os.makedirs(name, mode)
@@ -459,7 +460,7 @@
# Otherwise, print the "skip" message
else:
- log.debug(skip_msg)
+ logger.debug(skip_msg)
# XXX 'install_misc' class not currently used -- it was the base class for
# both 'install_scripts' and 'install_data', but they outgrew it. It might
diff --git a/distutils2/command/config.py b/distutils2/command/config.py
--- a/distutils2/command/config.py
+++ b/distutils2/command/config.py
@@ -16,7 +16,7 @@
from distutils2.command.cmd import Command
from distutils2.errors import DistutilsExecError
from distutils2.compiler.ccompiler import customize_compiler
-from distutils2 import log
+from distutils2 import logger
LANG_EXT = {'c': '.c', 'c++': '.cxx'}
@@ -156,7 +156,7 @@
if not filenames:
filenames = self.temp_files
self.temp_files = []
- log.info("removing: %s", ' '.join(filenames))
+ logger.info("removing: %s", ' '.join(filenames))
for filename in filenames:
try:
os.remove(filename)
@@ -233,7 +233,7 @@
except CompileError:
ok = 0
- log.info(ok and "success!" or "failure.")
+ logger.info(ok and "success!" or "failure.")
self._clean()
return ok
@@ -252,7 +252,7 @@
except (CompileError, LinkError):
ok = 0
- log.info(ok and "success!" or "failure.")
+ logger.info(ok and "success!" or "failure.")
self._clean()
return ok
@@ -272,7 +272,7 @@
except (CompileError, LinkError, DistutilsExecError):
ok = 0
- log.info(ok and "success!" or "failure.")
+ logger.info(ok and "success!" or "failure.")
self._clean()
return ok
@@ -346,11 +346,11 @@
If head is not None, will be dumped before the file content.
"""
if head is None:
- log.info('%s' % filename)
+ logger.info('%s' % filename)
else:
- log.info(head)
+ logger.info(head)
file = open(filename)
try:
- log.info(file.read())
+ logger.info(file.read())
finally:
file.close()
diff --git a/distutils2/command/install_dist.py b/distutils2/command/install_dist.py
--- a/distutils2/command/install_dist.py
+++ b/distutils2/command/install_dist.py
@@ -10,7 +10,7 @@
from distutils2._backport.sysconfig import (get_config_vars, get_paths,
get_path, get_config_var)
-from distutils2 import log
+from distutils2 import logger
from distutils2.command.cmd import Command
from distutils2.errors import DistutilsPlatformError
from distutils2.util import write_file
@@ -406,7 +406,7 @@
def dump_dirs(self, msg):
"""Dump the list of user options."""
- log.debug(msg + ":")
+ logger.debug(msg + ":")
for opt in self.user_options:
opt_name = opt[0]
if opt_name[-1] == "=":
@@ -418,7 +418,7 @@
else:
opt_name = opt_name.replace('-', '_')
val = getattr(self, opt_name)
- log.debug(" %s: %s" % (opt_name, val))
+ logger.debug(" %s: %s" % (opt_name, val))
def select_scheme(self, name):
"""Set the install directories by applying the install schemes."""
@@ -545,7 +545,7 @@
if (self.warn_dir and
not (self.path_file and self.install_path_file) and
install_lib not in sys_path):
- log.debug(("modules installed to '%s', which is not in "
+ logger.debug(("modules installed to '%s', which is not in "
"Python's module search path (sys.path) -- "
"you'll have to change the search path yourself"),
self.install_lib)
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
@@ -16,7 +16,7 @@
import csv
import re
from distutils2.command.cmd import Command
-from distutils2 import log
+from distutils2 import logger
from distutils2._backport.shutil import rmtree
try:
import hashlib
@@ -93,12 +93,12 @@
self.execute(os.makedirs, (target,), "creating " + target)
metadata_path = os.path.join(self.distinfo_dir, 'METADATA')
- log.info('creating %s', metadata_path)
+ logger.info('creating %s', metadata_path)
self.distribution.metadata.write(metadata_path)
self.outputs.append(metadata_path)
installer_path = os.path.join(self.distinfo_dir, 'INSTALLER')
- log.info('creating %s', installer_path)
+ logger.info('creating %s', installer_path)
f = open(installer_path, 'w')
try:
f.write(self.installer)
@@ -108,14 +108,14 @@
if self.requested:
requested_path = os.path.join(self.distinfo_dir, 'REQUESTED')
- log.info('creating %s', requested_path)
+ logger.info('creating %s', requested_path)
f = open(requested_path, 'w')
f.close()
self.outputs.append(requested_path)
if not self.no_record:
record_path = os.path.join(self.distinfo_dir, 'RECORD')
- log.info('creating %s', record_path)
+ logger.info('creating %s', record_path)
f = open(record_path, 'wb')
try:
writer = csv.writer(f, delimiter=',',
diff --git a/distutils2/command/install_scripts.py b/distutils2/command/install_scripts.py
--- a/distutils2/command/install_scripts.py
+++ b/distutils2/command/install_scripts.py
@@ -8,7 +8,7 @@
import os
from distutils2.command.cmd import Command
-from distutils2 import log
+from distutils2 import logger
from stat import ST_MODE
class install_scripts (Command):
@@ -46,10 +46,10 @@
# all the scripts we just installed.
for file in self.get_outputs():
if self.dry_run:
- log.info("changing mode of %s", file)
+ logger.info("changing mode of %s", file)
else:
mode = ((os.stat(file)[ST_MODE]) | 0555) & 07777
- log.info("changing mode of %s to %o", file, mode)
+ logger.info("changing mode of %s to %o", file, mode)
os.chmod(file, mode)
def get_inputs (self):
diff --git a/distutils2/command/register.py b/distutils2/command/register.py
--- a/distutils2/command/register.py
+++ b/distutils2/command/register.py
@@ -10,10 +10,11 @@
import getpass
import urlparse
import StringIO
+import logging
from warnings import warn
from distutils2.command.cmd import Command
-from distutils2 import log
+from distutils2 import logger
from distutils2.util import (metadata_to_dict, read_pypirc, generate_pypirc,
DEFAULT_REPOSITORY, DEFAULT_REALM,
get_pypirc_path)
@@ -97,14 +98,14 @@
''' Fetch the list of classifiers from the server.
'''
response = urllib2.urlopen(self.repository+'?:action=list_classifiers')
- log.info(response.read())
+ logger.info(response.read())
def verify_metadata(self):
''' Send the metadata to the package index server to be checked.
'''
# send the info to the server and report the result
- (code, result) = self.post_to_server(self.build_post_data('verify'))
- log.info('Server response (%s): %s' % (code, result))
+ code, result = self.post_to_server(self.build_post_data('verify'))
+ logger.info('Server response (%s): %s' % (code, result))
def send_metadata(self):
@@ -154,7 +155,7 @@
2. register as a new user,
3. have the server generate a new password for you (and email it to you), or
4. quit
-Your selection [default 1]: ''', log.INFO)
+Your selection [default 1]: ''', logging.INFO)
choice = raw_input()
if not choice:
@@ -177,7 +178,7 @@
code, result = self.post_to_server(self.build_post_data('submit'),
auth)
self.announce('Server response (%s): %s' % (code, result),
- log.INFO)
+ logging.INFO)
# possibly save the login
if code == 200:
@@ -187,9 +188,10 @@
self.distribution.password = password
else:
self.announce(('I can store your PyPI login so future '
- 'submissions will be faster.'), log.INFO)
+ 'submissions will be faster.'),
+ logging.INFO)
self.announce('(the login will be stored in %s)' % \
- get_pypirc_path(), log.INFO)
+ get_pypirc_path(), logging.INFO)
choice = 'X'
while choice.lower() not in 'yn':
choice = raw_input('Save your login (y/N)?')
@@ -217,18 +219,18 @@
data['email'] = raw_input(' EMail: ')
code, result = self.post_to_server(data)
if code != 200:
- log.info('Server response (%s): %s' % (code, result))
+ logger.info('Server response (%s): %s' % (code, result))
else:
- log.info('You will receive an email shortly.')
- log.info(('Follow the instructions in it to '
- 'complete registration.'))
+ logger.info('You will receive an email shortly.')
+ logger.info(('Follow the instructions in it to '
+ 'complete registration.'))
elif choice == '3':
data = {':action': 'password_reset'}
data['email'] = ''
while not data['email']:
data['email'] = raw_input('Your email address: ')
code, result = self.post_to_server(data)
- log.info('Server response (%s): %s' % (code, result))
+ logger.info('Server response (%s): %s' % (code, result))
def build_post_data(self, action):
# figure the data to send - the metadata plus some additional
@@ -244,7 +246,7 @@
if 'name' in data:
self.announce('Registering %s to %s' % (data['name'],
self.repository),
- log.INFO)
+ logging.INFO)
# Build up the MIME payload for the urllib2 POST data
boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
sep_boundary = '\n--' + boundary
diff --git a/distutils2/command/sdist.py b/distutils2/command/sdist.py
--- a/distutils2/command/sdist.py
+++ b/distutils2/command/sdist.py
@@ -19,7 +19,7 @@
from distutils2.errors import (DistutilsPlatformError, DistutilsOptionError,
DistutilsTemplateError)
from distutils2.manifest import Manifest
-from distutils2 import log
+from distutils2 import logger
from distutils2.util import convert_path
def show_formats():
@@ -287,12 +287,12 @@
msg = "copying files to %s..." % base_dir
if not files:
- log.warn("no files to distribute -- empty manifest?")
+ logger.warn("no files to distribute -- empty manifest?")
else:
- log.info(msg)
+ logger.info(msg)
for file in files:
if not os.path.isfile(file):
- log.warn("'%s' not a regular file -- skipping" % file)
+ logger.warn("'%s' not a regular file -- skipping" % file)
else:
dest = os.path.join(base_dir, file)
self.copy_file(file, dest, link=link)
@@ -328,7 +328,7 @@
if not self.keep_temp:
if self.dry_run:
- log.info('Removing %s' % base_dir)
+ logger.info('Removing %s' % base_dir)
else:
rmtree(base_dir)
diff --git a/distutils2/command/upload.py b/distutils2/command/upload.py
--- a/distutils2/command/upload.py
+++ b/distutils2/command/upload.py
@@ -4,6 +4,7 @@
import os
import socket
import platform
+import logging
from urllib2 import urlopen, Request, HTTPError
from base64 import standard_b64encode
import urlparse
@@ -18,9 +19,7 @@
from distutils2.errors import DistutilsOptionError
from distutils2.util import spawn
-from distutils2 import log
from distutils2.command.cmd import Command
-from distutils2 import log
from distutils2.util import (metadata_to_dict, read_pypirc,
DEFAULT_REPOSITORY, DEFAULT_REALM)
@@ -173,7 +172,7 @@
body = body.getvalue()
self.announce("Submitting %s to %s" % (filename, self.repository),
- log.INFO)
+ logging.INFO)
# build the Request
headers = {'Content-type':
@@ -189,7 +188,7 @@
status = result.code
reason = result.msg
except socket.error, e:
- self.announce(str(e), log.ERROR)
+ self.announce(str(e), logging.ERROR)
return
except HTTPError, e:
status = e.code
@@ -197,11 +196,11 @@
if status == 200:
self.announce('Server response (%s): %s' % (status, reason),
- log.INFO)
+ logging.INFO)
else:
self.announce('Upload failed (%s): %s' % (status, reason),
- log.ERROR)
+ logging.ERROR)
if self.show_response:
msg = '\n'.join(('-' * 75, result.read(), '-' * 75))
- self.announce(msg, log.INFO)
+ self.announce(msg, logging.INFO)
diff --git a/distutils2/command/upload_docs.py b/distutils2/command/upload_docs.py
--- a/distutils2/command/upload_docs.py
+++ b/distutils2/command/upload_docs.py
@@ -4,12 +4,13 @@
import socket
import urlparse
import zipfile
+import logging
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
-from distutils2 import log
+from distutils2 import logger
from distutils2.command.upload import upload
from distutils2.command.cmd import Command
from distutils2.errors import DistutilsFileError
@@ -114,8 +115,7 @@
credentials = self.username + ':' + self.password
auth = "Basic " + base64.encodestring(credentials).strip()
- self.announce("Submitting documentation to %s" % (self.repository),
- log.INFO)
+ self.announce("Submitting documentation to %s" % (self.repository))
schema, netloc, url, params, query, fragments = \
urlparse.urlparse(self.repository)
@@ -135,24 +135,22 @@
conn.endheaders()
conn.send(body)
except socket.error, e:
- self.announce(str(e), log.ERROR)
+ self.announce(str(e), logging.ERROR)
return
r = conn.getresponse()
if r.status == 200:
- self.announce('Server response (%s): %s' % (r.status, r.reason),
- log.INFO)
+ self.announce('Server response (%s): %s' % (r.status, r.reason))
elif r.status == 301:
location = r.getheader('Location')
if location is None:
location = 'http://packages.python.org/%s/' % name
- self.announce('Upload successful. Visit %s' % location,
- log.INFO)
+ self.announce('Upload successful. Visit %s' % location)
else:
self.announce('Upload failed (%s): %s' % (r.status, r.reason),
- log.ERROR)
+ logging.ERROR)
if self.show_response:
msg = '\n'.join(('-' * 75, r.read(), '-' * 75))
- self.announce(msg, log.INFO)
+ self.announce(msg)
diff --git a/distutils2/log.py b/distutils2/log.py
deleted file mode 100644
--- a/distutils2/log.py
+++ /dev/null
@@ -1,71 +0,0 @@
-"""A simple log mechanism styled after PEP 282."""
-
-# The class here is styled after PEP 282 so that it could later be
-# replaced with a standard Python logging implementation.
-
-DEBUG = 1
-INFO = 2
-WARN = 3
-ERROR = 4
-FATAL = 5
-
-import sys
-
-class Log(object):
-
- def __init__(self, threshold=WARN):
- self.threshold = threshold
-
- def _log(self, level, msg, args):
- if level not in (DEBUG, INFO, WARN, ERROR, FATAL):
- raise ValueError('%s wrong log level' % level)
-
- if level >= self.threshold:
- if args:
- msg = msg % args
- if level in (WARN, ERROR, FATAL):
- stream = sys.stderr
- else:
- stream = sys.stdout
- stream.write('%s\n' % msg)
- stream.flush()
-
- def log(self, level, msg, *args):
- self._log(level, msg, args)
-
- def debug(self, msg, *args):
- self._log(DEBUG, msg, args)
-
- def info(self, msg, *args):
- self._log(INFO, msg, args)
-
- def warn(self, msg, *args):
- self._log(WARN, msg, args)
-
- def error(self, msg, *args):
- self._log(ERROR, msg, args)
-
- def fatal(self, msg, *args):
- self._log(FATAL, msg, args)
-
-_global_log = Log()
-log = _global_log.log
-debug = _global_log.debug
-info = _global_log.info
-warn = _global_log.warn
-error = _global_log.error
-fatal = _global_log.fatal
-
-def set_threshold(level):
- # return the old threshold for use from tests
- old = _global_log.threshold
- _global_log.threshold = level
- return old
-
-def set_verbosity(v):
- if v <= 0:
- set_threshold(WARN)
- elif v == 1:
- set_threshold(INFO)
- elif v >= 2:
- set_threshold(DEBUG)
diff --git a/distutils2/metadata.py b/distutils2/metadata.py
--- a/distutils2/metadata.py
+++ b/distutils2/metadata.py
@@ -11,7 +11,7 @@
from email import message_from_file
from tokenize import tokenize, NAME, OP, STRING, ENDMARKER
-from distutils2.log import warn
+from distutils2 import logger
from distutils2.version import (is_valid_predicate, is_valid_version,
is_valid_versions)
from distutils2.errors import (MetadataConflictError,
@@ -391,16 +391,16 @@
for v in value:
# check that the values are valid predicates
if not is_valid_predicate(v.split(';')[0]):
- warn('"%s" is not a valid predicate (field "%s")' %
+ logger.warn('"%s" is not a valid predicate (field "%s")' %
(v, name))
# FIXME this rejects UNKNOWN, is that right?
elif name in _VERSIONS_FIELDS and value is not None:
if not is_valid_versions(value):
- warn('"%s" is not a valid version (field "%s")' %
+ logger.warn('"%s" is not a valid version (field "%s")' %
(value, name))
elif name in _VERSION_FIELDS and value is not None:
if not is_valid_version(value):
- warn('"%s" is not a valid version (field "%s")' %
+ logger.warn('"%s" is not a valid version (field "%s")' %
(value, name))
if name in _UNICODEFIELDS:
diff --git a/distutils2/tests/support.py b/distutils2/tests/support.py
--- a/distutils2/tests/support.py
+++ b/distutils2/tests/support.py
@@ -28,10 +28,10 @@
import tempfile
import warnings
from copy import deepcopy
+import logging
-from distutils2 import log
+from distutils2 import logger
from distutils2.dist import Distribution
-from distutils2.log import DEBUG, INFO, WARN, ERROR, FATAL
from distutils2.tests import unittest
__all__ = ['LoggingCatcher', 'WarningsCatcher', 'TempdirManager',
@@ -49,23 +49,18 @@
def setUp(self):
super(LoggingCatcher, self).setUp()
- self.threshold = log.set_threshold(FATAL)
- # when log is replaced by logging we won't need
- # such monkey-patching anymore
- self._old_log = log.Log._log
- log.Log._log = self._log
+ self.old_log = logger._log
+ logger._log = self._log
+ logger.setLevel(logging.INFO)
self.logs = []
+ def _log(self, *args, **kw):
+ self.logs.append(args)
+
def tearDown(self):
- log.set_threshold(self.threshold)
- log.Log._log = self._old_log
+ logger._log = self.old_log
super(LoggingCatcher, self).tearDown()
- def _log(self, level, msg, args):
- if level not in (DEBUG, INFO, WARN, ERROR, FATAL):
- raise ValueError('%s wrong log level' % level)
- self.logs.append((level, msg, args))
-
def get_logs(self, *levels):
"""Return a list of caught messages with level in `levels`.
diff --git a/distutils2/tests/test_Mixin2to3.py b/distutils2/tests/test_Mixin2to3.py
--- a/distutils2/tests/test_Mixin2to3.py
+++ b/distutils2/tests/test_Mixin2to3.py
@@ -7,7 +7,8 @@
from distutils2.compat import Mixin2to3
-class Mixin2to3TestCase(support.TempdirManager, unittest.TestCase):
+class Mixin2to3TestCase(support.TempdirManager, support.WarningsCatcher,
+ unittest.TestCase):
@unittest.skipIf(sys.version < '2.6', 'requires Python 2.6 or higher')
def test_convert_code_only(self):
diff --git a/distutils2/tests/test_command_config.py b/distutils2/tests/test_command_config.py
--- a/distutils2/tests/test_command_config.py
+++ b/distutils2/tests/test_command_config.py
@@ -4,26 +4,11 @@
from distutils2.command.config import dump_file, config
from distutils2.tests import unittest, support
-from distutils2 import log
class ConfigTestCase(support.LoggingCatcher,
support.TempdirManager,
unittest.TestCase):
- def _info(self, msg, *args):
- for line in msg.splitlines():
- self._logs.append(line)
-
- def setUp(self):
- super(ConfigTestCase, self).setUp()
- self._logs = []
- self.old_log = log.info
- log.info = self._info
-
- def tearDown(self):
- log.info = self.old_log
- super(ConfigTestCase, self).tearDown()
-
def test_dump_file(self):
this_file = os.path.splitext(__file__)[0] + '.py'
f = open(this_file)
@@ -33,7 +18,11 @@
f.close()
dump_file(this_file, 'I am the header')
- self.assertEqual(len(self._logs), numlines+1)
+ logs = []
+ for log in self.logs:
+ log = log[1]
+ logs.extend([log for log in log.split('\n')])
+ self.assertEqual(len(logs), numlines+2)
def test_search_cpp(self):
if sys.platform == 'win32':
diff --git a/distutils2/tests/test_command_sdist.py b/distutils2/tests/test_command_sdist.py
--- a/distutils2/tests/test_command_sdist.py
+++ b/distutils2/tests/test_command_sdist.py
@@ -3,6 +3,7 @@
import shutil
import zipfile
import tarfile
+import logging
# zlib is not used here, but if it's not available
# the tests that use zipfile may fail
@@ -30,7 +31,6 @@
from distutils2.errors import DistutilsExecError, DistutilsOptionError
from distutils2.util import find_executable
from distutils2.tests import support
-from distutils2.log import WARN
try:
from shutil import get_archive_formats
except ImportError:
@@ -247,7 +247,7 @@
# with the `check` subcommand
cmd.ensure_finalized()
cmd.run()
- warnings = self.get_logs(WARN)
+ warnings = self.get_logs(logging.WARN)
self.assertEqual(len(warnings), 1)
# trying with a complete set of metadata
@@ -256,7 +256,7 @@
cmd.ensure_finalized()
cmd.metadata_check = 0
cmd.run()
- warnings = self.get_logs(WARN)
+ warnings = self.get_logs(logging.WARN)
# removing manifest generated warnings
warnings = [warn for warn in warnings if
not warn.endswith('-- skipping')]
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
@@ -176,7 +176,7 @@
self.pypi.default_response_status = '301 Moved Permanently'
self.pypi.default_response_headers.append(("Location", "brand_new_location"))
self.cmd.run()
- message, _ = calls[-1]
+ message = calls[-1][0]
self.assertIn('brand_new_location', message)
def test_reads_pypirc_data(self):
diff --git a/distutils2/tests/test_depgraph.py b/distutils2/tests/test_depgraph.py
--- a/distutils2/tests/test_depgraph.py
+++ b/distutils2/tests/test_depgraph.py
@@ -13,6 +13,7 @@
import StringIO
class DepGraphTestCase(support.LoggingCatcher,
+ support.WarningsCatcher,
unittest.TestCase):
DISTROS_DIST = ('choxie', 'grammar', 'towel-stuff')
diff --git a/distutils2/tests/test_metadata.py b/distutils2/tests/test_metadata.py
--- a/distutils2/tests/test_metadata.py
+++ b/distutils2/tests/test_metadata.py
@@ -7,11 +7,12 @@
from distutils2.metadata import (DistributionMetadata, _interpret,
PKG_INFO_PREFERRED_VERSION)
from distutils2.tests import run_unittest, unittest
-from distutils2.tests.support import LoggingCatcher
+from distutils2.tests.support import LoggingCatcher, WarningsCatcher
from distutils2.errors import (MetadataConflictError,
MetadataUnrecognizedVersionError)
-class DistributionMetadataTestCase(LoggingCatcher, unittest.TestCase):
+class DistributionMetadataTestCase(LoggingCatcher, WarningsCatcher,
+ unittest.TestCase):
def test_instantiation(self):
PKG_INFO = os.path.join(os.path.dirname(__file__), 'PKG-INFO')
@@ -195,49 +196,21 @@
values = (('Requires-Dist', 'Funky (Groovie)'),
('Requires-Python', '1-4'))
- from distutils2 import metadata as m
- old = m.warn
- m.warns = 0
-
- def _warn(*args):
- m.warns += 1
-
- m.warn = _warn
-
- try:
- for name, value in values:
- metadata.set(name, value)
- finally:
- m.warn = old
- res = m.warns
- del m.warns
+ for name, value in values:
+ metadata.set(name, value)
# we should have a certain amount of warnings
- num_wanted = len(values)
- self.assertEqual(num_wanted, res)
+ self.assertEqual(len(self.logs), 2)
def test_multiple_predicates(self):
metadata = DistributionMetadata()
- from distutils2 import metadata as m
- old = m.warn
- m.warns = 0
-
- def _warn(*args):
- m.warns += 1
-
# see for "3" instead of "3.0" ???
# its seems like the MINOR VERSION can be omitted
- m.warn = _warn
- try:
- metadata['Requires-Python'] = '>=2.6, <3.0'
- metadata['Requires-Dist'] = ['Foo (>=2.6, <3.0)']
- finally:
- m.warn = old
- res = m.warns
- del m.warns
+ metadata['Requires-Python'] = '>=2.6, <3.0'
+ metadata['Requires-Dist'] = ['Foo (>=2.6, <3.0)']
- self.assertEqual(res, 0)
+ self.assertEqual(len(self.warnings), 0)
def test_project_url(self):
metadata = DistributionMetadata()
diff --git a/distutils2/util.py b/distutils2/util.py
--- a/distutils2/util.py
+++ b/distutils2/util.py
@@ -18,7 +18,7 @@
from distutils2.errors import (DistutilsPlatformError, DistutilsFileError,
DistutilsByteCompileError, DistutilsExecError)
-from distutils2 import log
+from distutils2 import logger
from distutils2._backport import sysconfig as _sysconfig
_PLATFORM = None
@@ -286,7 +286,7 @@
if msg[-2:] == ',)': # correct for singleton tuple
msg = msg[0:-2] + ')'
- log.info(msg)
+ logger.info(msg)
if not dry_run:
func(*args)
@@ -360,7 +360,7 @@
if not direct:
from tempfile import mkstemp
script_fd, script_name = mkstemp(".py")
- log.info("writing byte-compilation script '%s'", script_name)
+ logger.info("writing byte-compilation script '%s'", script_name)
if not dry_run:
if script_fd is not None:
script = os.fdopen(script_fd, "w")
@@ -441,11 +441,11 @@
cfile_base = os.path.basename(cfile)
if direct:
if force or newer(file, cfile):
- log.info("byte-compiling %s to %s", file, cfile_base)
+ logger.info("byte-compiling %s to %s", file, cfile_base)
if not dry_run:
compile(file, cfile, dfile)
else:
- log.debug("skipping byte-compilation of %s to %s",
+ logger.debug("skipping byte-compilation of %s to %s",
file, cfile_base)
@@ -831,7 +831,7 @@
if search_path:
# either we find one or it stays the same
executable = find_executable(executable) or executable
- log.info(' '.join([executable] + cmd[1:]))
+ logger.info(' '.join([executable] + cmd[1:]))
if not dry_run:
# spawn for NT requires a full path to the .exe
try:
@@ -855,7 +855,7 @@
if search_path:
# either we find one or it stays the same
executable = find_executable(executable) or executable
- log.info(' '.join([executable] + cmd[1:]))
+ logger.info(' '.join([executable] + cmd[1:]))
if not dry_run:
# spawnv for OS/2 EMX requires a full path to the .exe
try:
@@ -870,13 +870,13 @@
"command '%s' failed: %s" % (cmd[0], exc[-1]))
if rc != 0:
# and this reflects the command running but failing
- log.debug("command '%s' failed with exit status %d" % (cmd[0], rc))
+ logger.debug("command '%s' failed with exit status %d" % (cmd[0], rc))
raise DistutilsExecError(
"command '%s' failed with exit status %d" % (cmd[0], rc))
def _spawn_posix(cmd, search_path=1, verbose=0, dry_run=0, env=None):
- log.info(' '.join(cmd))
+ logger.info(' '.join(cmd))
if dry_run:
return
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list