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.
Fred Drake [Wed, 15 Aug 2001 18:32:33 +0000 (18:32 +0000)]
Added comments before recently added/assigned slots in the type object,
so the backward compatibility issues will be easier to understand. I only
added comments indicating additions and assignments back to Python 2.0.
Jack Jansen [Wed, 15 Aug 2001 13:55:15 +0000 (13:55 +0000)]
MacOSX: if we're building without --enable-toolbox-glue don't attempt to
include _PyMac_Error. Also don't try to include __dummy: it needs Foundation
and I think (not 100% sure) that this isn't part of naked Darwin.
Tim Peters [Wed, 15 Aug 2001 06:10:16 +0000 (06:10 +0000)]
New, larger installer bitmap from Erik van Blokland. Added more
vertical whitespace to the acknowledgements portion of the "Installation
Completed!" screen for easier reading.
Jack Jansen [Wed, 15 Aug 2001 01:26:28 +0000 (01:26 +0000)]
Lots of changes in the framework support:
- Made framework builds work for MacOSX. The configure arg is now
"--enable-framework".
- Added an install target frameworkinstall which installs the framework.
- Ripped out Next/OpenStep support, which was broken anyway.
- Made the MacOSX toolbox glue dependant on a --enable-toolbox-glue
configure arg. This should make naked darwin build work again (untested).
A few targets have been added to Makefile.pre.in, and on inspection they
look harmless to non-MacOSX machines, but it is worth checking.
Jack Jansen [Wed, 15 Aug 2001 01:14:40 +0000 (01:14 +0000)]
With WITH_NEXT_FRAMEWORK defined we now also expect a normal Python
installation.
If there is no LANDMARK we assume we're a bare framework in the
install directory (again WITH_NEXT_FRAMEWORK only).
Jeremy Hylton [Tue, 14 Aug 2001 20:01:59 +0000 (20:01 +0000)]
Fix SF bug [ #450909 ] __future__.division fails at prompt
When code is compiled and compiler flags are passed in, be sure to
update cf_flags with any features defined by future statements in the
compiled code.
Barry Warsaw [Tue, 14 Aug 2001 18:35:02 +0000 (18:35 +0000)]
Document the new semantics for setting and deleting a function's
__dict__ attribute. Deleting it, or setting it to a non-dictionary
result in a TypeError. Note that getting it the first time magically
initializes it to an empty dict so that func.__dict__ will always
appear to be a dictionary (never None).
Barry Warsaw [Tue, 14 Aug 2001 18:28:28 +0000 (18:28 +0000)]
Test the new semantics for setting and deleting a function's __dict__
attribute. Deleting it, or setting it to a non-dictionary result in a
TypeError. Note that getting it the first time magically initializes
it to an empty dict so that func.__dict__ will always appear to be a
dictionary (never None).
Barry Warsaw [Tue, 14 Aug 2001 18:23:58 +0000 (18:23 +0000)]
func_getattro(), func_setattro(): Implement the new semantics for
setting and deleting a function's __dict__ attribute. Deleting
it, or setting it to a non-dictionary result in a TypeError. Note
that getting it the first time magically initializes it to an
empty dict so that func.__dict__ will always appear to be a
dictionary (never None).
Barry Warsaw [Tue, 14 Aug 2001 18:22:24 +0000 (18:22 +0000)]
Describe the new semantics for setting and deleting a function's
__dict__ attribute. Deleting it, or setting it to a non-dictionary
result in a TypeError. Note that getting it the first time magically
initializes it to an empty dict so that func.__dict__ will always
appear to be a dictionary (never None).
Barry Warsaw [Mon, 13 Aug 2001 23:04:56 +0000 (23:04 +0000)]
Py_Initialize(): Apply patch by Jürgen Hermann to call
_PyImport_FixupExtension() on the exceptions module. Now
reload(exceptions) acts just like reload(sys) instead of raising
an ImportError.