Tim Peters [Thu, 15 Jul 2004 05:46:37 +0000 (05:46 +0000)]
SF bug 990749: os constants missing
A LaTeX comment identified the 6 os.O_XXX constants the docs claimed
are available on Windows but aren't. The bug report listed the same 6.
Split these non-Windows constants into a different table with a possibly
correct "Availability:" claim.
Jim Fulton [Wed, 14 Jul 2004 19:07:35 +0000 (19:07 +0000)]
Implemented a new Py_CLEAR macro. This macro should be used when
decrementing the refcount of variables that might be accessed as a
result of calling Python
[ 984722 ] Py_BuildValue loses reference counts on error
I'm ever-so-slightly uneasy at the amount of work this can do with an
exception pending, but I don't think that this can result in anything
more serious than a strange error message.
- Bug #981530: Fix UnboundLocalError in shutil.rmtree(). This affects
the documented behavior: the function passed to the onerror()
handler can now also be os.listdir.
[I could've sworn I checked this in, but apparently I didn't, or it
got lost???]
- Bug #981530: Fix UnboundLocalError in shutil.rmtree(). This affects
the documented behavior: the function passed to the onerror()
handler can now also be os.listdir.
[I could've sworn I checked this in, but apparently I didn't, or it
got lost???]
It helps when doing checks if something is in a tuple of strings that if you
put everything in the tuple in caps to use str.upper() instead of str.lower().
Tim Peters [Tue, 13 Jul 2004 17:18:10 +0000 (17:18 +0000)]
Claifications: visit procs are supplied by the core, users aren't
expected to write their own. A NULL "object" must not be passed to
the visit callback. A non-zero return from a visit proc isn't
necessarily an error return (and it doesn't matter to the tp_traverse
code *what* it might signify, their only job is to return it).
Fixes a bug in testing code handling .pth files that did not restore the original
module that is removed for testing "import" lines. Originally deleted the
entry from sys.modules and then just let other code that needed it to import it
again. Problem with this solution is that it lead to code that had already
imported the module in question to have their own reference to a new copy of
the module in question that new code couldn't reach. This lead to a failure in
test_strptime since it monkey-patched the 'time' module it had a reference to
while _strptime had its own reference to another copy of 'time' from being
imported by test___all__ that it was using for a calculation.
Also moved the testing code out of the PthFile class and into the actual test
class. This was to stop using 'assert' which is useless with a -O execution.
Add another point in the "Restrictions" section about how the handling of FTP
URLs will seemingly succeed to read a URL that points to a file whose
permissions you do not have to read.
Backport candidate once everyone agrees with the wording.
Andrew MacIntyre [Mon, 12 Jul 2004 12:10:30 +0000 (12:10 +0000)]
FreeBSD's services file contains an additional echo service entry, with
a non-standard protocol and on a lower port than the tcp/udp entries,
which breaks the assumption that there will only be one service by a
given name on a given port when no protocol is specified.
Previous versions of this code have had other problems as a result of
different service definitions amongst common platforms. As this platform
has an extra, unexpected, service entry, I've special cased the platform
rather than re-order the list of services checked to highlight the pitfall.
Tim Peters [Mon, 12 Jul 2004 00:45:14 +0000 (00:45 +0000)]
Bug #788520: Queue class has logic error when non-blocking
I don't agree it had a bug (see the report), so this is *not* a candidate
for backporting, but the docs were confusing and the Queue implementation
was old enough to vote.
Rewrote put/put_nowait/get/get_nowait from scratch, to use a pair of
Conditions (not_full and not_empty), sharing a common mutex. The code
is 1/4 the size now, and 6.25x easier to understand. For blocking
with timeout, we also get to reuse (indirectly) the tedious timeout
code from threading.Condition. The Full and Empty exceptions raised
by non-blocking calls are now easy (instead of nearly impossible) to
explain truthfully: Full is raised if and only if the Queue truly
is full when the non-blocking put call checks the queue size, and
similarly for Empty versus non-blocking get.
What I don't know is whether the new implementation is slower (or
faster) than the old one. I don't really care. Anyone who cares
a lot is encouraged to check that.
Tim Peters [Sun, 11 Jul 2004 19:26:19 +0000 (19:26 +0000)]
SF patch 986010: add missing doc for datetime C API, from
Anthony Tuininga.
This is a derived patch, taking the opportunity to add some organization
to the now-large pile of datetime-related macros, and to factor out
tedious repeated text.
[Patch 988444]
Read multiple special headers
- fixed/improved handling of extended/special headers
in read-mode (adding new extended headers should be
less painful now).
- improved nts() function.
- removed TarFile.chunks datastructure which is not
(and was never) needed.
- fixed TarInfo.tobuf(), fields could overflow with too
large values, values are now clipped.
Change some declarations from ``char *`` to ``const char *``. Also added
docstrings for decode and encode; accidentally were left out of the PyMethodDev
table.
[Patch #945642] Fix non-blocking SSL sockets, which blocked on reads/writes in Python 2.3.
(It turns out that the Debian unstable packaging of Python 2.3.4 includes this patch.)
Patch by Tino Lange.
Make struct formats for specifying file size to be unsigned instead of signed
(ZIP file spec. says in section K, "General notes" in point 1 that unless
specified otherwise values are unsigned and they are not specified as signed in
the spec).
* Rename "trap_enablers" to just "traps".
* Simplify names of "settraps" and "setflags" to just "traps" and "flags".
* Show "capitals" in the context representation
* Simplify the Context constructor to match its repr form so that only
the set flags and traps need to be listed.
* Representation can now be run through eval().
Improve the error message when the Decimal constructor is given a float.
The test suite no longer needs a duplicate reset_flags method.