| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
subproject is gone, replaced by the new pythoncore subproject.
|
|
|
|
| |
and remove support for it from setup.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- sort's docompare() calls RichCompare(Py_LT).
- list_contains(), list_index(), listcount(), listremove() call
RichCompare(Py_EQ).
- Get rid of list_compare(), in favor of new list_richcompare(). The
latter does some nice shortcuts, like when == or != is requested, it
first compares the lengths for trivial accept/reject. Then it goes
over the items until it finds an index where the items differe; then
it does more shortcut magic to minimize the number of additional
comparisons.
- Aligned the comments for large struct initializers.
|
| |
|
|
|
|
| |
- get version number from sys.version_info
|
|
|
|
| |
'verify' iff it's used by a test module...
|
|
|
|
|
| |
didn't import it. Also got rid of some inconsistent spaces inside
parentheses in test_gzip.py.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Use the compare nesting level and in-progress dictionary properly in
PyObject_RichCompare().
- Change the in-progress code to use static variables instead of
globals (both the nesting level and the key for the thread dict were
globals but have no reason to be globals; the key can even be a
function-static variable in get_inprogress_dict()).
- Rewrote try_rich_to_3way_compare() to benefit from the similarity of
the three cases, making it table-driven.
- In try_rich_to_3way_compare(), test for EQ before LT and GT. This
turns out essential when comparing recursive UserList instances;
with the old code, these would recurse into rich comparison three
times for each nesting level up to NESTING_LIMIT/2, making the total
number of calls in the order of 3**(NESTING_LIMIT/2)!
NOTE: I'm not 100% comfortable with this. It works for the standard
test suite (which compares a few trivial recursive data structures
only), but I'm not sure that the in-progress dictionary is used
properly by the rich comparison code. Jeremy suggested that maybe the
operation should be included in the dict. Currently I presume that
objects in the dict are equal unless proven otherwise, and I set the
outcome for the rich comparison accordingly: true for operators EQ,
LE, GE, and false for the other three. But Jeremy seems to think that
there may be counter-examples where this doesn't do the right thing.
|
|
|
|
|
| |
Check for the two possible headers for Expat, expat.h and xmlparse.h,
and only compile the pyexpat module if one of them is found.
|
| |
|
|
|
|
| |
oversight in using self.compiler.library_dirs)
|
| |
|
|
|
|
|
|
|
| |
and replaces them with a new API verify(). As a result the regression
suite will also perform its tests in optimization mode.
Written by Marc-Andre Lemburg. Copyright assigned to Guido van Rossum.
|
|
|
|
|
| |
Not that Jack doesn't deserve them, but saying it so often cheapens the
sentiment.
|
|
|
|
|
|
|
| |
The final piece of this change...
Strip down Setup.config.in and Setup.dist to the minimal sets required
to get a working Python; setup.py will handle the rest
|
|
|
|
|
|
| |
The final piece of this change...
Run setup.py to build shared modules and to install them.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
except that it always returns Unicode objects.
A new C API PyObject_Unicode() is also provided.
This closes patch #101664.
Written by Marc-Andre Lemburg. Copyright assigned to Guido van Rossum.
|
|
|
|
|
|
| |
* Uncomment the xreadlines module
* The Tcl/Tk detection code doesn't need to worry about pre-8.0 versions
* Fix some debugging changes (not running ar, a commented-out line)
|
|
|
|
|
| |
(I'm going to check in some more uses of rich comparisons, but the
basic feature should be in place now.)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Use PyObject_RichCompare*() where possible: when comparing
keyword arguments, in _PyEval_SliceIndex(), and of course in
cmp_outcome().
Unrelated stuff:
- Removed all trailing whitespace.
- Folded some long lines.
|
|
|
|
|
|
| |
- Get rid of float_cmp().
- Renamed Py_TPFLAGS_NEWSTYLENUMBER to Py_TPFLAGS_CHECKTYPES.
|
|
|
|
|
|
| |
- Get rid of long_cmp().
- Renamed Py_TPFLAGS_NEWSTYLENUMBER to Py_TPFLAGS_CHECKTYPES.
|
|
|
|
|
|
| |
- Get rid of int_cmp().
- Renamed Py_TPFLAGS_NEWSTYLENUMBER to Py_TPFLAGS_CHECKTYPES.
|
|
|
|
|
|
| |
- Renamed Py_TPFLAGS_NEWSTYLENUMBER to Py_TPFLAGS_CHECKTYPES.
- Use PyObject_RichCompareBool() in PySequence_Contains().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Got rid of instance_cmp(); refactored instance_compare().
- Added instance_richcompare() which calls __lt__() etc.
Some unrelated stuff mixed in:
- Aligned comments in various large struct initializers.
- Better test to avoid recursion if __coerce__ returns self as the
first argument (this is an unrelated fix by Neil Schemenauer!).
- Style nit: don't use Py_DECREF(Py_NotImplemented); use
Py_DECREF(result) -- it just looks better. :-)
|
|
|
|
| |
Tweak the configure script to build setup.cfg
|
|
|
|
|
|
|
|
| |
PyObject_RichCompare() and PyObject_RichCompareBool().
XXX Note: the code that checks for deeply nested rich comparisons is
bogus -- it assumes the two objects are always identical, rather than
using the same logic as PyObject_Compare(). I'll fix that later.
|
|
|
|
|
| |
Check in the setup.py script, and the setup.cfg.in file, which
handle compiling and installing as many extension modules as possible
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Removed the nb_add slot from the PyNumberMethods struct.
- Renamed Py_TPFLAGS_NEWSTYLENUMBER to Py_TPFLAGS_CHECKTYPES.
- Added typedef richcmpfunc.
- Added tp_richcompare slot to PyTypeObject (replacing spare tp_xxx7).
- Added APIs PyObject_RichCompare() and PyObject_RichCompareBool().
- Added rich comparison operators Py_LT through Py_GE.
|
|
|
|
|
|
|
|
| |
sys.prefix + 'config/Makefile'. When building Python for the first
time, these files aren't there, so the files from the build tree have
to be used instead; this file adds an entry point for specifying that
the build tree files should be used. (Perhaps 'set_python_build' should
should be preceded with an underscore?)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
__getattr__() method, which clearly (like the other methods) was
intended to pass the __getattr__() call on to the self.err object,
mistakenly returned getattr(self, self.err) rather than
getattr(self.err, attr). Since self.err is not a string, this always
raises a TypeError. Apparently that doesn't bother for the one
attribute for which __getattr__() is actually called ('__coerce__'),
but it broke the rich comparisons stuff that I'm trying to get into
shape, so I'm fixing this now. (I could also simply remove the
__getattr__() method, but fixing it seems more in the spirit of what
the ComparableException class is trying to do.)
|
|
|
|
| |
the test_charmapcodec test via the test package.
|
| |
|
|
|
|
| |
was never enabled.
|
|
|
|
|
|
|
|
|
|
|
| |
\t\t\t\t\treal code
##\t\t\t\t\tunused code
\t\t\t\t\treal code
via untabifying and shifting the real code left. Semantically the
same but made the intent of the commented-out-in-column-0 unused code
unclear. The exact same unused code appears to have gotten copied from
file to file over the years.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
builds during which he forgot to uncomment crucial library lines in
Setup, walks into Guido's East End nightclub with a tactical nuclear
weapon on his shoulder. Said nuclear weapon is promptly deployed
exactly where it will do the most good, right in the middle of
configure.in.
With this patch, the set of libraries autoconfigured in is extended to
include ndbm, gdbm, and crypt. This essentially eliminates any need to
tweak Setup for a normal Linux build.
"'E was a fair man. Cruel, but fair."
|
|
|
|
| |
<cpr@emsoftware.com>.
|
|
|
|
|
| |
warnings.filterwarnings() call. This suppresses the warning when the
module is imported with its full name (test.test_regex) too.
|
| |
|
|
|
|
|
|
|
|
|
| |
simpler if we use fgetpos and fsetpos, rather than trying to mess with
platform-specific TELL64 alternatives.
Of course, this hasn't been tested on a 64-bit platform, so I may have
to withdraw this -- but I'm hopeful, and Trent Mick supports this
patch!
|
| |
|
|
|
|
|
|
|
|
|
|
| |
for done[n] can be integers as well as strings, but the code
concatenates them with strings (fixed by adding a str()) and calls
string.strip() on them (fixed by rearranging the logic)
(Presumably this wasn't noticed previously because parse_makefile()
was only called on Modules/Makefile, which contains no integer-valued
variables.)
|
|
|
|
|
|
|
| |
produce a list of unique filenames:
"While attempting to build an RPM using distutils on Python 2.0,
rpm complained about duplicate files. The following patch fixed
that problem.
|