summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/stdtypes.rst20
-rw-r--r--Doc/library/test.rst10
-rw-r--r--Lib/distutils/archive_util.py14
-rw-r--r--Lib/test/test_repr.py8
-rw-r--r--Lib/test/test_support.py22
-rw-r--r--Lib/test/test_sys.py3
6 files changed, 48 insertions, 29 deletions
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index 14aa28d..c97e9ae 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1539,7 +1539,7 @@ proper superset of the second set (is a superset, but is not equal).
Instances of :class:`set` are compared to instances of :class:`frozenset` based
on their members. For example, ``set('abc') == frozenset('abc')`` returns
-``True``.
+``True`` and so does ``set('abc') in set([frozenset('abc')])``.
The subset and equality comparisons do not generalize to a complete ordering
function. For example, any two disjoint sets are not equal and are not subsets
@@ -1578,18 +1578,18 @@ apply to immutable instances of :class:`frozenset`:
Update the set, keeping only elements found in either set, but not in both.
-.. method:: set.add(el)
+.. method:: set.add(elem)
- Add element *el* to the set.
+ Add element *elem* to the set.
-.. method:: set.remove(el)
+.. method:: set.remove(elem)
- Remove element *el* from the set. Raises :exc:`KeyError` if *el* is not
+ Remove element *elem* from the set. Raises :exc:`KeyError` if *elem* is not
contained in the set.
-.. method:: set.discard(el)
+.. method:: set.discard(elem)
- Remove element *el* from the set if it is present.
+ Remove element *elem* from the set if it is present.
.. method:: set.pop()
@@ -1606,6 +1606,12 @@ Note, the non-operator versions of the :meth:`update`,
:meth:`symmetric_difference_update` methods will accept any iterable as an
argument.
+Note, the *elem* argument to the :meth:`__contains__`, :meth:`remove`, and
+:meth:`discard` methods may be a set. To support searching for an equivalent
+frozenset, the *elem* set is temporarily mutated during the search and then
+restored. During the search, the *elem* set should not be read or mutated
+since it does not have a meaningful value.
+
.. _typesmapping:
diff --git a/Doc/library/test.rst b/Doc/library/test.rst
index 6c35d50..a6a3584 100644
--- a/Doc/library/test.rst
+++ b/Doc/library/test.rst
@@ -283,13 +283,15 @@ The :mod:`test.test_support` module defines the following functions:
This will run all tests defined in the named module.
-.. function:: catch_warning()
+.. function:: catch_warning(record=True)
- This is a context manager that guards the warnings filter from being
+ Return a context manager that guards the warnings filter from being
permanently changed and records the data of the last warning that has been
- issued.
+ issued. The ``record`` argument specifies whether any raised warnings are
+ captured by the object returned by :func:`warnings.catch_warning` or allowed
+ to propagate as normal.
- Use like this::
+ The context manager is typically used like this::
with catch_warning() as w:
warnings.warn("foo")
diff --git a/Lib/distutils/archive_util.py b/Lib/distutils/archive_util.py
index f3f65c6..9444ff0 100644
--- a/Lib/distutils/archive_util.py
+++ b/Lib/distutils/archive_util.py
@@ -92,18 +92,16 @@ def make_zipfile (base_name, base_dir, verbose=0, dry_run=0):
log.info("creating '%s' and adding '%s' to it",
zip_filename, base_dir)
- def visit (z, dirname, names):
- for name in names:
- path = os.path.normpath(os.path.join(dirname, name))
- if os.path.isfile(path):
- z.write(path, path)
- log.info("adding '%s'" % path)
-
if not dry_run:
z = zipfile.ZipFile(zip_filename, "w",
compression=zipfile.ZIP_DEFLATED)
- os.path.walk(base_dir, visit, z)
+ for dirpath, dirnames, filenames in os.walk(base_dir):
+ for name in filenames:
+ path = os.path.normpath(os.path.join(dirpath, name))
+ if os.path.isfile(path):
+ z.write(path, path)
+ log.info("adding '%s'" % path)
z.close()
return zip_filename
diff --git a/Lib/test/test_repr.py b/Lib/test/test_repr.py
index af66e97..ac1a0a0 100644
--- a/Lib/test/test_repr.py
+++ b/Lib/test/test_repr.py
@@ -197,10 +197,6 @@ def touch(path, text=''):
fp.write(text)
fp.close()
-def zap(actions, dirname, names):
- for name in names:
- actions.append(os.path.join(dirname, name))
-
class LongReprTest(unittest.TestCase):
def setUp(self):
longname = 'areallylongpackageandmodulenametotestreprtruncation'
@@ -219,7 +215,9 @@ class LongReprTest(unittest.TestCase):
def tearDown(self):
actions = []
- os.path.walk(self.pkgname, zap, actions)
+ for dirpath, dirnames, filenames in os.walk(self.pkgname):
+ for name in dirnames + filenames:
+ actions.append(os.path.join(dirpath, name))
actions.append(self.pkgname)
actions.sort()
actions.reverse()
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 431b66b..92592eb 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -37,6 +37,19 @@ class ResourceDenied(TestSkipped):
and unexpected skips.
"""
+def import_module(name, deprecated=False):
+ """Import the module to be tested, raising TestSkipped if it is not
+ available."""
+ with catch_warning(record=False):
+ if deprecated:
+ warnings.filterwarnings("ignore", ".+ module", DeprecationWarning)
+ try:
+ module = __import__(name, level=0)
+ except ImportError:
+ raise TestSkipped("No module named " + name)
+ else:
+ return module
+
verbose = 1 # Flag set to 0 by regrtest.py
use_resources = None # Flag set to [] by regrtest.py
max_memuse = 0 # Disable bigmem tests (they will still be run with
@@ -373,7 +386,7 @@ class WarningMessage(object):
@contextlib.contextmanager
-def catch_warning(module=warnings):
+def catch_warning(module=warnings, record=True):
"""
Guard the warnings filter from being permanently changed and record the
data of the last warning that has been issued.
@@ -384,12 +397,13 @@ def catch_warning(module=warnings):
warnings.warn("foo")
assert str(w.message) == "foo"
"""
- warning_obj = WarningMessage()
original_filters = module.filters[:]
original_showwarning = module.showwarning
- module.showwarning = warning_obj._showwarning
+ if record:
+ warning_obj = WarningMessage()
+ module.showwarning = warning_obj._showwarning
try:
- yield warning_obj
+ yield warning_obj if record else None
finally:
module.showwarning = original_showwarning
module.filters = original_filters
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 7961837..3a0abe1 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -324,7 +324,8 @@ class SysModuleTest(unittest.TestCase):
self.failUnless(sys.flags)
attrs = ("debug", "division_warning",
"inspect", "interactive", "optimize", "dont_write_bytecode",
- "no_site", "ignore_environment", "tabcheck", "verbose")
+ "no_site", "ignore_environment", "tabcheck", "verbose",
+ "bytes_warning")
for attr in attrs:
self.assert_(hasattr(sys.flags, attr), attr)
self.assertEqual(type(getattr(sys.flags, attr)), int, attr)