Jack Jansen [Sun, 19 Aug 2001 20:28:39 +0000 (20:28 +0000)]
Got rid of all the plugin xml files: they are generated, and
they were only in the repository for people building MacPython from
CVS (the .cmp project files are in a MacPython source
distribution). The process to regenerate them is now easier (and
documented!) so these shouldn't be needed anymore.
And eventually they should all be built by setup.py anyway.
Skip Montanaro [Sun, 19 Aug 2001 04:25:24 +0000 (04:25 +0000)]
add debug calls to self._note for the Semaphore class. This closes bug
443614. I will submit a new feature request and patch to threading.py and
libthreading.tex to address the bounded semaphore issue.
Tim Peters [Sun, 19 Aug 2001 00:56:28 +0000 (00:56 +0000)]
Windows fiddling for 2.2a2: bump build number; update copyright and
company info in resource files; change installer strings to match.
This belongs in the release branch too, of course.
Guido van Rossum [Sat, 18 Aug 2001 21:22:07 +0000 (21:22 +0000)]
SF patch #452239 by Gordon McMillan, to fix SF bug #451547.
This patch attempts to do to cPickle what Guido did
for pickle.py v 1.50. That is: save_global tries
importing the module, and fetching the name from the
module. If that fails, or the returned object is not
the same one we started with, it raises a
PicklingError. (All this so pickling a lambda will
fail at save time, rather than load time).
Guido van Rossum [Sat, 18 Aug 2001 21:08:22 +0000 (21:08 +0000)]
Add dependencies for Python/thread.c on all of the header files that
it may depend on. It's really annoying that thread.o doesn't get
rebuilt when the .h file is changed! :-)
The dependency is on *all* the Python/thread_*.h files -- that should
be sufficient and rarely cause unneeded recompilations.
Guido van Rossum [Sat, 18 Aug 2001 17:43:36 +0000 (17:43 +0000)]
Fix SF bug #443600:
Change to get/set/del slice operations so that if the object doesn't
support slicing, *or* if either of the slice arguments is not an int
or long, we construct a slice object and call the get/set/del item
operation instead. This makes it possible to design classes that
support slice arguments of non-integral types.
Greg Stein [Sat, 18 Aug 2001 09:20:23 +0000 (09:20 +0000)]
Resolve patch #449367.
For the HTTPS class (when available), ensure that the x509 certificate data
gets passed through to the HTTPSConnection class. Create a new
HTTPS.__init__ to do this, and refactor the HTTP.__init__ into a new _setup
method for both init's to call.
Note: this is solved differently from the patch, which advocated a new
**x509 parameter on the base HTTPConnection class. But that would open
HTTPConnection to arbitrary (ignored) parameters, so was not as desirable.
Tim Peters [Sat, 18 Aug 2001 00:05:50 +0000 (00:05 +0000)]
Remove the horrid generators hack from doctest.py. This relies on a
somewhat less horrid hack <wink>: if a module does
from __future__ import X
then the module dict D is left in a state such that (viewing X as a
string)
D[X] is getattr(__future__, X)
So by examining D for all the names of future features, and making that
test for each, we can make a darned good guess as to which future-features
were imported by the module. The appropriate flags are then sucked out
of the __future__ module, and passed on to compile()'s new optional
arguments (PEP 264).
Also gave doctest a meaningful __all__, removed the history of changes
(CVS serves that purpose now), and removed the __version__ vrbl (similarly;
before CVS, it was a reasonable clue, but not anymore).
Tim Peters [Fri, 17 Aug 2001 23:04:59 +0000 (23:04 +0000)]
Fix for bug [#452230] future division isn't propagated.
builtin_eval wasn't merging in the compiler flags from the current frame;
I suppose we never noticed this before because future division is the
first future-feature that can affect expressions (nested_scopes and
generators had only statement-level effects).
Guido van Rossum [Fri, 17 Aug 2001 21:57:47 +0000 (21:57 +0000)]
Address SF bug #442813. The sequence getitem wrappers should do
interpretation of negative indices, since neither the sq_*item slots
nor the slot_ wrappers do this. (Slices are a different story, there
the size wrapping is done too early.)
Tim Peters [Fri, 17 Aug 2001 20:47:47 +0000 (20:47 +0000)]
ceval, PyEval_MergeCompilerFlags: wasn't merging in the
CO_FUTURE_DIVISION flag. Redid this to use Jeremy's PyCF_MASK #define
instead, so we dont have to remember to fiddle individual feature names
here again.
pythonrun.h: Also #define a PyCF_MASK_OBSOLETE mask. This isn't used
yet, but will be as part of the PEP 264 implementation (compile() mustn't
raise an error just because old code uses a flag name that's become
obsolete; a warning may be appropriate, but not an error; so compile() has
to know about obsolete flags too, but nobody is going to remember to
update compile() with individual obsolete flag names across releases either
-- i.e., this is the flip side of PyEval_MergeCompilerFlags's oversight).
Guido van Rossum [Fri, 17 Aug 2001 20:32:36 +0000 (20:32 +0000)]
Weak reference support, closing SF bug #451773.
Classes that don't use __slots__ have a __weakref__ member added in
the same way as __dict__ is added (i.e. only if the base didn't
already have one). Classes using __slots__ can enable weak
referenceability by adding '__weakref__' to the __slots__ list.
Renamed the __weaklistoffset__ class member to __weakrefoffset__ --
it's not always a list, it seems. (Is tp_weaklistoffset a historical
misnomer, or do I misunderstand this?)
Barry Warsaw [Fri, 17 Aug 2001 20:01:06 +0000 (20:01 +0000)]
Document that uu.decode() will always raise a uu.Error if out_file
isn't given, and the file in the uu header already exists. Also add a
description of the uu.Error exception class.
Barry Warsaw [Fri, 17 Aug 2001 19:59:34 +0000 (19:59 +0000)]
decode(): Raise a uu.Error if no out_file is given but the file
specified in the uu header already exists. No additional
workaround is provided since out_file=pathname is a deprecated
interface, so it is better to simply pass a file-like object into
out_file anyway. This closes SF bug #438083.
Use isinstance() tests instead of type comparisons.
Tim Peters [Fri, 17 Aug 2001 19:49:02 +0000 (19:49 +0000)]
A self-contained piece of Michael Hudson's patch
#449043 supporting __future__ in simulated shells
in support of PEP 264.
Much has changed from the patch version:
+ Repaired bad hex constant for nested_scopes.
+ Defined symbolic CO_xxx names so global search will find these uses.
+ Made the exported list of feature names explicit, instead of abusing
__all__ for this purpose (and redefined __all__ accordingly).
+ Added gross .compiler_flag verification to test___future__.py, and
reworked it a little to make use of the newly exported explicit list
of feature names.
Guido van Rossum [Fri, 17 Aug 2001 18:49:52 +0000 (18:49 +0000)]
Address SF #451547. The approach is a bit draconian: any object that
is pickled as a global must now exist by the name under which it is
pickled, otherwise the pickling fails. Previously, such things would
fail on unpickling, or unpickle as the wrong global object. I'm
hoping that this won't break existing code that is playing tricks with
this.
Martin v. Löwis [Fri, 17 Aug 2001 18:39:25 +0000 (18:39 +0000)]
Patch #445762: Support --disable-unicode
- Do not compile unicodeobject, unicodectype, and unicodedata if Unicode is disabled
- check for Py_USING_UNICODE in all places that use Unicode functions
- disables unicode literals, and the builtin functions
- add the types.StringTypes list
- remove Unicode literals from most tests.
Guido van Rossum [Fri, 17 Aug 2001 17:24:29 +0000 (17:24 +0000)]
Change the 227 response parser to use a more liberal regular
expression. This is needed for certain servers that (in violation of
the standard) don't return the parentheses in the response.
This fixes SF bug #441712 by Henrik Weber (not exactly using his
patch).
Fred Drake [Fri, 17 Aug 2001 17:20:44 +0000 (17:20 +0000)]
Make sure that ampersand escaping is still performed on the contents of
local module tables (the lists of modules documented within a chapter,
inserted at the beginning of the chapter). If this is not done here,
the text is not part of the resulting documents when latex2html does the
processing normally.
Guido van Rossum [Fri, 17 Aug 2001 16:47:50 +0000 (16:47 +0000)]
type_new(): look for __dynamic__ at the module level (after looking in
the class dict). Anything but a nonnegative int in either place is
*ignored* (before, a non-Boolean was an error). The default is still
static -- in a comparative test, Jeremy's Tools/compiler package ran
twice as slow (compiling itself) using dynamic as the default. (The
static version, which requires a few tweaks to avoid modifying class
variables, runs at about the same speed as the classic version.)
slot_tp_descr_get(): this also needed fallback behavior.
slot_tp_getattro(): remove a debug fprintf() call.
Guido van Rossum [Fri, 17 Aug 2001 13:40:47 +0000 (13:40 +0000)]
classic(), methods(): add another test relating to unbound methods:
when an unbound method of class A is stored as a class variable of
class B, and class B is *not* a subclass of class A, that method
should *not* get bound to B instances.
Guido van Rossum [Fri, 17 Aug 2001 11:18:38 +0000 (11:18 +0000)]
type_new(): only defer to the winning metatype if it's different from
the metatype passed in as an argument. This prevents infinite
recursion when a metatype written in Python calls type.__new__() as a
"super" call.
Tim Peters [Thu, 16 Aug 2001 21:59:46 +0000 (21:59 +0000)]
Stop adding 3 to FD_SETSIZE -- it makes no sense. If it turns out it
actually does <wink>, perhaps an Insure run will catch it.
Also removed senseless Windows comment.
Guido van Rossum [Thu, 16 Aug 2001 20:41:56 +0000 (20:41 +0000)]
classobject.c:instancemethod_descr_get(): when a bound method is
assigned to a class variable and then accessed via an instance, it
should not be rebound.
test_descr.py:methods(): test for the condition above.
Barry Warsaw [Thu, 16 Aug 2001 20:39:24 +0000 (20:39 +0000)]
module_repr(): Instead of fixing the maximum buf size to 400,
calculate it on the fly. This way even modules with long package
names get an accurate repr instead of a truncated one. The extra
malloc/free cost shouldn't be a problem in a repr function.
Jack Jansen [Thu, 16 Aug 2001 20:39:17 +0000 (20:39 +0000)]
If genpluginprojects is called from fullbuild we set the Python source directory to be the same as fullbuild uses (in stead of using the default sys.prefix). This fixes an issue Mark Day raised that you can't use fullbuild with one Python installation to build another one.
Tim Peters [Thu, 16 Aug 2001 16:56:16 +0000 (16:56 +0000)]
Repair some accidents causing Windows failures:
+ test_compare. While None compares less than anything else, it's not
always the case that None has the smallest id().
+ test_descr. The output of %p (pointer) formats varies across platforms.
In particular, on Windows it doesn't produce a leading "0x".
Barry Warsaw [Thu, 16 Aug 2001 16:52:59 +0000 (16:52 +0000)]
select_select(): Closing bug #448351 the easy way, i.e. by changing
the "#ifdef MS_WINDOWS" to "#ifdef SELECT_USES_HEAP" and by
setting SELECT_USES_HEAP when FD_SETSIZE > 1024.
The indirection seems useful since this subtly changes the path
that "normal" Windows programs take (where Timmie sez FD_SETSIZE =
512). If that's a problem for Windows, he has only one place to
change.
Fred Drake [Thu, 16 Aug 2001 15:54:28 +0000 (15:54 +0000)]
Bad bug: the MimeTypes.readfp() was supposed to take a file object as a
parameter, but did not. This was found because it can create failures
elsewhere based on the presence of mime.types files in some common locations
the module searches by default.
(I will be writing a test for this module shortly!)
Guido van Rossum [Thu, 16 Aug 2001 15:42:49 +0000 (15:42 +0000)]
I should add that the previous checkin also added a slight
optimization for dynamic classes. If __getattr__ is not found as an
attribute on the type, slot_tp_getattro replaces itself with
PyObject_GenericGetAttr. This means you can't add a __getattr__
method to a class after the fact -- but you can still *change* a
__getattr__ method into a different one.
(A similar restriction exists for classic classes.)
Fred Drake [Thu, 16 Aug 2001 14:11:30 +0000 (14:11 +0000)]
Use METH_O where possible (two functions). This does not lead to real
performance changes since the affected functions are not expected to be
used frequently, but reduces the volume of code.
[Patch #442530 from twburton]
Provide include_dirs argument to all calls to ._preprocess and ._compile
Fix typo: pattern.search(pattern) should be pattern.search(line)
Guido van Rossum [Thu, 16 Aug 2001 09:18:56 +0000 (09:18 +0000)]
Fix SF bug #442501: calculate __module__ properly.
- type_module(), type_name(): if tp_name contains one or more period,
the part before the last period is __module__, the part after that
is __name__. Otherwise, for non-heap types, __module__ is
"__builtin__". For heap types, __module__ is looked up in
tp_defined.
- type_new(): heap types have their __module__ set from
globals().__name__; a pre-existing __module__ in their dict is not
overridden. This is not inherited.
- type_repr(): if __module__ exists and is not "__builtin__", it is
included in the string representation (just as it already is for
classes). For example <type '__main__.C'>.
Guido van Rossum [Thu, 16 Aug 2001 08:27:33 +0000 (08:27 +0000)]
Subtle change to make None.__class__ work:
- descrobject.c:descr_check(): only believe None means the same as
NULL if the type given is None's type.
- typeobject.c:wrap_descr_get(): don't "conventiently" default an
absent type to the type of the object argument. Let the called
function figure it out.
Guido van Rossum [Thu, 16 Aug 2001 08:17:26 +0000 (08:17 +0000)]
Add a function _Py_ReadyTypes() which initializes various and sundry
types -- currently Type, List, None and NotImplemented. To be called
from Py_Initialize() instead of accumulating calls there.
Also rename type(None) to NoneType and type(NotImplemented) to
NotImplementedType -- naming the type identical to the object was
confusing.
Guido van Rossum [Thu, 16 Aug 2001 08:02:45 +0000 (08:02 +0000)]
Update to MvL's patch #424475 to avoid returning 2 when tp_compare
returns that. (This fix is also by MvL; checkin it in because I want
to make more changes here. I'm still not 100% satisfied -- see
comments attached to the patch.)
Tim Peters [Thu, 16 Aug 2001 02:23:04 +0000 (02:23 +0000)]
No change, just wanted to record more info in the log: after the last
checkin, the Wise uninstaller *will* delete the Python DLL from the system
directory, but if and only if there wasn't a same-named Python DLL already
in the system directory at the time the installer ran. That (no same-named
DLL) should be the typical case for most most people (I'm different because
I've run perhaps hundreds of 2.2 installs over the last several weeks).
IOW, the change was worth making.
Tim Peters [Thu, 16 Aug 2001 01:53:51 +0000 (01:53 +0000)]
Wise uninstallers never delete the Python DLL from the system directory.
They should. Added a line that's supposed to fix that -- it doesn't
actually work on my box, but checking it in anyway.
Guido van Rossum [Wed, 15 Aug 2001 23:57:02 +0000 (23:57 +0000)]
- Another big step in the right direction. All the overridable
operators for which a default implementation exist now work, both in
dynamic classes and in static classes, overridden or not. This
affects __repr__, __str__, __hash__, __contains__, __nonzero__,
__cmp__, and the rich comparisons (__lt__ etc.). For dynamic
classes, this meant copying a lot of code from classobject! (XXX
There are still some holes, because the comparison code in object.c
uses PyInstance_Check(), meaning new-style classes don't get the
same dispensation. This needs more thinking.)
- Add object.__hash__, object.__repr__, object.__str__. The __str__
dispatcher now calls the __repr__ dispatcher, as it should.
- For static classes, the tp_compare, tp_richcompare and tp_hash slots
are now inherited together, or not at all. (XXX I fear there are
still some situations where you can inherit __hash__ when you
shouldn't, but mostly it's OK now, and I think there's no way we can
get that 100% right.)
Guido van Rossum [Wed, 15 Aug 2001 21:02:20 +0000 (21:02 +0000)]
Given a class without __cmp__ or __eq__, cmp() of two instances of
that class should compare the id() of those instances. Add a test
that verifies this. This test currently fails; I believe this is
caused by object.c:2.132 (Patch #424475 by loewis).
Fred Drake [Wed, 15 Aug 2001 19:07:18 +0000 (19:07 +0000)]
A large contribution from Dave Kuhlman describing what each of the slots
in the type object is used for, for many of the more commonly used slots.
Thanks!
(But there is still a lot more to write on this topic.)
Markup and organizational changes by your friendly neighborhood
documentation czar.