Tim Peters [Sat, 12 Jul 2003 20:11:25 +0000 (20:11 +0000)]
There's a persistent rumor on the spambayes mailing list that dumbdbm
databases are associated with corruption problems, so I studied this code
carefully and ran some brutal stress tests. I didn't find any bugs,
although it's unclear whether this code *intends* that __setitem__ can
leave the directory file out of synch with the data file (so
if a dumbdbm isn't properly closed, and the value of an existing key
was ever replaced, corruption is almost certain, where "corruption"
means the directory file is out of synch with the data file).
Added many comments and generally modernized the code. Examples of the
latter: we have better ways of reading a whole file line-by-line now;
eval() now tolerates a trailing newline; the %r format code can be used
to avoid explicit repr/backtick calls; and the code often broke tuples
into their components when it was clearer and faster to just leave them
as tuples.
Jeremy Hylton [Fri, 11 Jul 2003 15:37:59 +0000 (15:37 +0000)]
Change warnings to avoid importing re module during startup.
Add API function simplefilter() that does not create or install
regular expressions to match message or module. Extend the filters
data structure to store None as an alternative to re.compile("").
Move the _test() function to test_warnings and add some code to try
and avoid disturbing the global state of the warnings module.
Andrew MacIntyre [Fri, 11 Jul 2003 12:16:48 +0000 (12:16 +0000)]
patch #766650 - whichdb not identifying dbm DBs when dbm linked with gdbm
At this point, the problem appears particular to the OS/2 EMX port of
gdbm (which is at v1.7.3) - this combination produces a .pag file but
no .dir file.
A more sophisticated patch which checks magic numbers when dbm.library
indicates that dbm is linked to gdbm, and there is no .dir file, is
still attached to the above patch entry for reconsideration after 2.3
is released.
This checkin applies a workaround specific to the known failure case.
Just van Rossum [Thu, 10 Jul 2003 14:53:27 +0000 (14:53 +0000)]
Fixed a bug that's been there from the beginning but wasn't noticed
until now: the inheritance of default values was the wrong way around.
This caused app bundles to get a type of "BNDL" instead of "APPL".
Apparently this is not a problem until you try to drag your app to
the dock.
----------------------------------------------------------------------
Andrew MacIntyre [Thu, 10 Jul 2003 12:52:54 +0000 (12:52 +0000)]
Extend the pwd & grp emulations to support accessing the pwd/grp
record tuple by name as well as index, to match the behaviour of
the pwd/grp extension modules for Unix. These emulation modules
now pass test_pwd & test_grp.
* Extended DB & DBEnv set_get_returns_none functionality to take a
"level" instead of a boolean flag. The boolean 0 and 1 values still
have the same effect. A value of 2 extends the "return None instead
of raising an exception" behaviour to the DBCursor set methods.
This will become the default behaviour in pybsddb 4.2.
* Fixed a typo in DBCursor.join_item method that made it crash instead
of returning a value. Obviously nobody uses it. Wrote a test case
for join and join_item.
Fred Drake [Tue, 8 Jul 2003 15:57:52 +0000 (15:57 +0000)]
Improve compatibility with more versions of LaTeX2HTML and more LaTeX
markup. Not currently needed, but easier to save this now than to
have to figure it out when we do.
Fix a typo/cut-n-paste error in DBCursor.join_item so that it doesn't
return a tuple. (this also implies that nobody uses this method; the
bug has been here for a long time)
Just van Rossum [Fri, 4 Jul 2003 14:20:03 +0000 (14:20 +0000)]
#765903:
- added bundle_id/--bundle-id option, to specify the CFBundleIndentifier
#765615:
- in the appropriate situation, prepend $PATH with our path instead of
setting it.
Jack Jansen [Fri, 4 Jul 2003 12:14:39 +0000 (12:14 +0000)]
Fixed two bugs in MacOSX framework handling spotted by Edward Moy:
- In the top level Makefile, the argument to -install_name should be
prepended with /System/Library/Frameworks/, so it is an absolute path.
- In the top level Makefile, because of 2), RUNSHARED needs to be set to
DYLD_FRAMEWORK_PATH=<path to local framework> and $(RUNSHARED) prepended
to the $(MAKE) lines in the frameworkinstallmaclib and
frameworkinstallapps targets.
Tim Peters [Fri, 4 Jul 2003 04:40:45 +0000 (04:40 +0000)]
An Anonymous Coward on c.l.py posted a little program with bizarre
behavior, creating many threads very quickly. A long debugging session
revealed that the Windows implementation of PyThread_start_new_thread()
was choked with "laziness" errors:
1. It checked MS _beginthread() for a failure return, but when that
happened it returned heap trash as the function result, instead of
an id of -1 (the proper error-return value).
2. It didn't consider that the Win32 CreateSemaphore() can fail.
3. When creating a great many threads very quickly, it's quite possible
that any particular bootstrap call can take virtually any amount of
time to return. But the code waited for a maximum of 5 seconds, and
didn't check to see whether the semaphore it was waiting for got
signaled. If it in fact timed out, the function could again return
heap trash as the function result. This is actually what confused
the test program, as the heap trash usually turned out to be 0, and
then multiple threads all got id 0 simultaneously, confusing the
hell out of threading.py's _active dict (mapping id to thread
object). A variety of baffling behaviors followed from that.
WRT #1 and #2, error returns are checked now, and "thread.error: can't
start new thread" gets raised now if a new thread (or new semaphore)
can't be created. WRT #3, we now wait for the semaphore without a
timeout.
Also removed useless local vrbls, folded long lines, and changed callobj
to a stack auto (it was going thru malloc/free instead, for no discernible
reason).
Fixes bug of timezone value being left as -1 when ``time.tzname[0] ==
time.tzname[1] and not time.daylight`` is true when it should only when
time.daylight is true. Tests are also fixed.
Jack Jansen [Wed, 2 Jul 2003 22:09:30 +0000 (22:09 +0000)]
Skip noticed that the document talks about "setting PythonLauncher as the
default application" but doesn't give a clue on how to do this. Refer to
Apple Help.
Just van Rossum [Wed, 2 Jul 2003 20:03:04 +0000 (20:03 +0000)]
Fix and test for bug #764548:
Use isinstance() instead of comparing types directly, to enable
subclasses of str and unicode to be used as patterns.
Blessed by /F.
Note that csv files (when they are actual files) must be opened in 'b'inary
mode. Note that the only restriction on the csvfile passed to writer
objects is that it have a write method.
On those systems lacking the AFMT_S16_NE symbol, the test was failing
because it was still looking in the ossaudiodev module namespace for
this symbol.
As the symbol has already been rebound as a global, use that instead.
FreeBSD 5.x has moved some library routines and typedefs outside the
scope of the _XOPEN_SOURCE and _POSIX_C_SOURCE symbols, including:
- getloadavg()
- typedefs for u_int, u_long, u_char, u_short, ushort & uint
These are now all defined under the control of a __BSD_VISIBLE symbol.
The lack of the typedefs causes several extension modules to build
incorrectly or not at all, and is the cause of failures reported for
test_socket and test_tempfile on this platform
(see python-dev: 29/6/03, pieterb@gewis.nl, "Running tests on freebsd5")
This change does not appear to be needed in the 2.2 branch.
Fred Drake [Wed, 2 Jul 2003 13:42:51 +0000 (13:42 +0000)]
The datetime C API really isn't usable outside the datetime module
implementation, so remove this decoy (it break formatting of the GNU
info version of the docs).