| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
| |
(tests) from test_funky_punc() to test_break_long() and
test_long_words() to test_nobreak_long().
|
| |
|
|
|
|
|
|
|
| |
base class (WrapperTestCase) instead, and call it repeatedly in the
methods that used to have a loop-over-subcases. Much simpler.
Rename perennial temp variable 't' to 'text'.
|
|
|
|
|
| |
for-loops) in test_simple(), test_wrap_short() test_hyphenated(), and
test_funky_punc().
|
|
|
|
|
| |
Remove some useless comments (redundant, or info presumably available in
PyUnit docs).
|
|
|
|
|
|
|
| |
* lowercase test*() methods
* define test_main() and use it instead of unittest.main()
Kill #! line.
Improve some test names and docstrings.
|
|
|
|
|
|
| |
<peter@engcorp.com> based on a test script that's been kicking around my
home directory for a couple of months now and only saw the light of day
because I included it when I sent textwrap.py to python-dev for review.
|
|
|
|
| |
598097)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
than raising TypeError when the other argument is not a BaseSet. This
made it necessary to separate the implementation of e.g. __or__ from
the union method; the latter should not return NotImplemented but
raise TypeError. This is accomplished by making union(self, other)
return self|other, etc.; Python's binary operator machinery will raise
TypeError.
The idea behind this change is to allow other set implementations with
an incompatible internal structure; these can provide union (etc.) with
standard sets by implementing __ror__ etc.
I wish I could do this for comparisons too, but the default comparison
implementation allows comparing anything to anything else (returning
false); we don't want that (at least the test suite makes sure
e.g. Set()==42 raises TypeError). That's probably fine; otherwise
other set implementations would be constrained to implementing a hash
that's compatible with ours.
|
|
|
|
| |
Closes SF feature request #588768.
|
|
|
|
|
|
|
|
|
| |
changed to use universal newlines.
Remove all imports from the compile() function; these are
now done at the top of the module ("Python normal form"),
and define a helper based on the platform instead of
testing the platform in the compile() function.
|
|
|
|
|
| |
elements are hashable, so we can use dict.update() or dict.copy()
for a C speed Set.copy().
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
superficial errors and one deep one that aren't currently caught. I'm
headed for bed after this checkin.
- Fixed several typos introduced by Raymond Hettinger (through
cut-n-paste from my template): it's _as_temporarily_immutable, not
_as_temporary_immutable, and moreover when the element is added, we
should use _as_immutable.
- Made the seq argument to ImmutableSet.__init__ optional, so we can
write ImmutableSet() to create an immutable empty set.
- Rename the seq argument to Set and ImmutableSet to iterable.
- Add a Set.__hash__ method that raises a TypeError. We inherit a
default __hash__ implementation from object, and we don't want that.
We can then catch this in update(), so that
e.g. s.update([Set([1])]) will transform the Set([1]) to
ImmutableSet([1]).
- Added the dance to catch TypeError and try _as_immutable in the
constructors too (by calling _update()). This is needed so that
Set([Set([1])]) is correctly interpreted as
Set([ImmutableSet([1])]). (I was puzzled by a side effect of this
and the inherited __hash__ when comparing two sets of sets while
testing different powerset implementations: the Set element passed
to a Set constructor wasn't transformed to an ImmutableSet, and then
the dictionary didn't believe the Set found in one dict it was the
same as ImmutableSet in the other, because the hashes were
different.)
- Refactored Set.update() and both __init__() methods; moved the body
of update() into BaseSet as _update(), and call this from __init__()
and update().
- Changed the NotImplementedError in BaseSet.__init__ to TypeError,
both for consistency with basestring() and because we have to use
TypeError when denying Set.__hash__. Together those provide
sufficient evidence that an unimplemented method needs to raise
TypeError.
|
|
|
|
| |
possible API improvements.
|
| |
|
|
|
|
|
|
|
|
| |
Gains a 5:1 speed-up for membership testing by
handling the most common case first (the case
where the element is hashable).
Closes SF Patch 597444.
|
| |
|
| |
|
|
|
|
|
| |
tiny amount of code duplication, but makes it possible to give BaseSet
an __init__ that raises an exception.
|
| |
|
|
|
|
|
| |
received feedback that was based in the misunderstanding that sets
were sequences.
|
|
|
|
|
|
|
| |
This patch causes CGIHTTPServer to update os.environ regardless of how
it tries to handle calls (fork, popen*, etc.).
Backport bugfix candidate.
|
|
|
|
|
|
| |
These were reported and fixed by Inyeol Lee in SF bug 595350. The
endswith() bug was already fixed in 2.3, but this adds some more test
cases.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
2045, section 5.2 states that if the Content-Type: header is
syntactically invalid, the default type should be text/plain.
Implement minimal sanity checking of the header -- it must have
exactly one slash in it. This closes SF patch #597593 by Skip, but in
a different way.
Note that these methods used to raise ValueError for invalid ctypes,
but now they won't.
|
|
|
|
|
|
| |
get the MIME main and sub types, instead of getting the whole ctype
and splitting it here. The two more specific methods now correctly
implement RFC 2045, section 5.2.
|
|
|
|
| |
email 2.2 but fails in email 1.0.
|
| |
|
| |
|
|
|
|
|
|
| |
all operators having a counterpart in the operator module.
Closes SF bug #577513.
|
|
|
|
|
|
|
| |
Jeremy reported that this is not allowed by RFC 2396; however,
other tools support unescaped @'s so we should also.
Apply SF patch 596581 closing bug 581529.
|
| |
|
|
|
|
|
|
|
| |
Also, don't call gettempdir() in the default expression for the 'dir'
argument to various functions; use 'dir=None' for the default and
insert 'if dir is None: dir = gettemptir()' in the bodies. That way
the work done by gettempdir is postponed until needed.
|
|
|
|
|
| |
subprocess that does the right checks. This now works on Windows as
well.
|
| |
|
|
|
|
|
|
| |
Loosened the acceptable 'start' and 'stop' arguments so that any
Python (bounded) ints can be used. So, e.g., randrange(-sys.maxint-1,
sys.maxint) no longer blows up.
|
|
|
|
|
| |
LINE events when not __debug__. But we get them anyway under -O now,
so just stop special-casing non-__debug__ mode.
|
|
|
|
|
| |
exception. The bug fix for SF #430849 wasn't quite right. This
closes SF bug #595671. I'll backport this to Python 2.2.
|
|
|
|
|
|
|
|
| |
[ 587993 ] SET_LINENO killer
Remove SET_LINENO. Tracing is now supported by inspecting co_lnotab.
Many sundry changes to document and adapt to this change.
|
|
|
|
| |
see patch 586561
|
| |
|
| |
|
| |
|
|
|
|
| |
FutureWarning.
|
| |
|