Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
16c70751
Commit
16c70751
authored
Sep 21, 2007
by
Neil Schemenauer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove more cruft leftover from nb_coerce. Rename nb_coerce to
nb_reserved.
parent
8ce81f76
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
20 additions
and
66 deletions
+20
-66
Demo/classes/Rat.py
Demo/classes/Rat.py
+0
-4
Demo/classes/bitvec.py
Demo/classes/bitvec.py
+0
-7
Doc/c-api/newtypes.rst
Doc/c-api/newtypes.rst
+1
-14
Doc/glossary.rst
Doc/glossary.rst
+8
-21
Doc/library/decimal.rst
Doc/library/decimal.rst
+1
-1
Include/object.h
Include/object.h
+1
-2
Modules/datetimemodule.c
Modules/datetimemodule.c
+1
-1
Objects/boolobject.c
Objects/boolobject.c
+1
-1
Objects/complexobject.c
Objects/complexobject.c
+1
-1
Objects/floatobject.c
Objects/floatobject.c
+2
-3
Objects/longobject.c
Objects/longobject.c
+1
-1
Objects/setobject.c
Objects/setobject.c
+1
-1
Objects/weakrefobject.c
Objects/weakrefobject.c
+1
-1
PC/_winreg.c
PC/_winreg.c
+1
-1
Tools/modulator/Templates/object_tp_as_number
Tools/modulator/Templates/object_tp_as_number
+0
-7
No files found.
Demo/classes/Rat.py
View file @
16c70751
...
...
@@ -226,10 +226,6 @@ class Rat:
def
__bool__
(
a
):
return
a
.
__num
!=
0
# coercion
def
__coerce__
(
a
,
b
):
return
a
,
Rat
(
b
)
def
test
():
'''
\
Test function for rat module.
...
...
Demo/classes/bitvec.py
View file @
16c70751
...
...
@@ -311,13 +311,6 @@ class BitVec:
return
BitVec
(
~
self
.
_data
&
((
1
<<
self
.
_len
)
-
1
),
\
self
.
_len
)
def
__coerce__
(
self
,
otherseq
,
*
rest
):
#needed for *some* of the arithmetic operations
#rprt('%r.__coerce__%r\n' % (self, (otherseq,) + rest))
if
type
(
otherseq
)
!=
type
(
self
):
otherseq
=
bitvec
(
otherseq
,
*
rest
)
return
self
,
otherseq
def
__int__
(
self
):
return
int
(
self
.
_data
)
...
...
Doc/c-api/newtypes.rst
View file @
16c70751
...
...
@@ -330,7 +330,7 @@ functionality. The fields of the type object are examined in detail in this
section. The fields will be described in the order in which they occur in the
structure.
Typedefs: unaryfunc, binaryfunc, ternaryfunc, inquiry,
coercion,
intargfunc,
Typedefs: unaryfunc, binaryfunc, ternaryfunc, inquiry, intargfunc,
intintargfunc, intobjargproc, intintobjargproc, objobjargproc, destructor,
freefunc, printfunc, getattrfunc, getattrofunc, setattrfunc, setattrofunc,
cmpfunc, reprfunc, hashfunc
...
...
@@ -751,19 +751,6 @@ type objects) *must* have the :attr:`ob_size` field.
:attr:`sq_inplace_repeat`.
.. data:: Py_TPFLAGS_CHECKTYPES
If this bit is set, the binary and ternary operations in the
:ctype:`PyNumberMethods` structure referenced by :attr:`tp_as_number` accept
arguments of arbitrary object types, and do their own type conversions if
needed. If this bit is clear, those operations require that all arguments have
the current type as their type, and the caller is supposed to perform a coercion
operation first. This applies to :attr:`nb_add`, :attr:`nb_subtract`,
:attr:`nb_multiply`, :attr:`nb_divide`, :attr:`nb_remainder`, :attr:`nb_divmod`,
:attr:`nb_power`, :attr:`nb_lshift`, :attr:`nb_rshift`, :attr:`nb_and`,
:attr:`nb_xor`, and :attr:`nb_or`.
.. data:: Py_TPFLAGS_HAVE_RICHCOMPARE
If this bit is set, the type object has the :attr:`tp_richcompare` field, as
...
...
Doc/glossary.rst
View file @
16c70751
...
...
@@ -32,19 +32,6 @@ Glossary
One of the two flavors of classes in earlier Python versions. Since
Python 3.0, there are no classic classes anymore.
coercion
The implicit conversion of an instance of one type to another during an
operation which involves two arguments of the same type. For example,
``int(3.15)`` converts the floating point number to the integer ``3``, but
in ``3+4.5``, each argument is of a different type (one int, one float),
and both must be converted to the same type before they can be added or it
will raise a ``TypeError``. Coercion between two operands can be
performed with the ``coerce`` builtin function; thus, ``3+4.5`` is
equivalent to calling ``operator.add(*coerce(3, 4.5))`` and results in
``operator.add(3.0, 4.5)``. Without coercion, all arguments of even
compatible types would have to be normalized to the same value by the
programmer, e.g., ``float(3)+4.5`` rather than just ``3+4.5``.
complex number
An extension of the familiar real number system in which all numbers are
expressed as a sum of a real part and an imaginary part. Imaginary
...
...
@@ -168,14 +155,14 @@ Glossary
integer division
Mathematical division discarding any remainder. For example, the
expression ``11/4`` currently evaluates to ``2`` in contrast to the
``2.75`` returned by float division. Also called *floor division*.
When dividing two integers the outcome will always be another integer
(having the floor function applied to it). However, if one of the operands
is another numeric type (such as a :class:`float`), the result will be
coerced (see :term:`coercion`) to a common type. For example, an integer
divided by a float will result in a float value, possibly with a decimal
fraction. Integer division can be forced by using the ``//`` operator
instead of the ``/`` operator. See also
:term:`__future__`.
``2.75`` returned by float division. Also called *floor division*.
When
dividing two integers the outcome will always be another integer (having
the floor function applied to it). However, if the operands types are
different, one of them will be converted to the other's type. For
example, an integer divided by a float will result in a float value,
possibly with a decimal fraction. Integer division can be forced by using
the ``//`` operator instead of the ``/`` operator. See also
:term:`__future__`.
interactive
Python has an interactive interpreter which means that you can try out
...
...
Doc/library/decimal.rst
View file @
16c70751
...
...
@@ -312,7 +312,7 @@ Decimal floating point objects share many properties with the other built-in
numeric types such as :class:`float` and :class:`int`. All of the usual math
operations and special methods apply. Likewise, decimal objects can be copied,
pickled, printed, used as dictionary keys, used as set elements, compared,
sorted, and co
erced to another type (such as :class:`float` or :class:`long
`).
sorted, and co
nverted to another type (such as :class:`float` or :class:`int
`).
In addition to the standard numeric properties, decimal floating point objects
also have a number of specialized methods:
...
...
Include/object.h
View file @
16c70751
...
...
@@ -133,7 +133,6 @@ typedef PyObject * (*binaryfunc)(PyObject *, PyObject *);
typedef
PyObject
*
(
*
ternaryfunc
)(
PyObject
*
,
PyObject
*
,
PyObject
*
);
typedef
int
(
*
inquiry
)(
PyObject
*
);
typedef
Py_ssize_t
(
*
lenfunc
)(
PyObject
*
);
typedef
int
(
*
coercion
)(
PyObject
**
,
PyObject
**
);
typedef
PyObject
*
(
*
ssizeargfunc
)(
PyObject
*
,
Py_ssize_t
);
typedef
PyObject
*
(
*
ssizessizeargfunc
)(
PyObject
*
,
Py_ssize_t
,
Py_ssize_t
);
typedef
int
(
*
ssizeobjargproc
)(
PyObject
*
,
Py_ssize_t
,
PyObject
*
);
...
...
@@ -222,7 +221,7 @@ typedef struct {
binaryfunc
nb_and
;
binaryfunc
nb_xor
;
binaryfunc
nb_or
;
coercion
nb_coerce
;
int
nb_reserved
;
/* unused, used to be nb_coerce */
unaryfunc
nb_int
;
unaryfunc
nb_long
;
unaryfunc
nb_float
;
...
...
Modules/datetimemodule.c
View file @
16c70751
...
...
@@ -2082,7 +2082,7 @@ static PyNumberMethods delta_as_number = {
0
,
/*nb_and*/
0
,
/*nb_xor*/
0
,
/*nb_or*/
0
,
/*nb_
coerce
*/
0
,
/*nb_
reserved
*/
0
,
/*nb_int*/
0
,
/*nb_long*/
0
,
/*nb_float*/
...
...
Objects/boolobject.c
View file @
16c70751
...
...
@@ -108,7 +108,7 @@ static PyNumberMethods bool_as_number = {
bool_and
,
/* nb_and */
bool_xor
,
/* nb_xor */
bool_or
,
/* nb_or */
0
,
/* nb_
coerce
*/
0
,
/* nb_
reserved
*/
0
,
/* nb_int */
0
,
/* nb_long */
0
,
/* nb_float */
...
...
Objects/complexobject.c
View file @
16c70751
...
...
@@ -963,7 +963,7 @@ static PyNumberMethods complex_as_number = {
0
,
/* nb_and */
0
,
/* nb_xor */
0
,
/* nb_or */
(
coercion
)
0
,
/* nb_coerce
*/
0
,
/* nb_reserved
*/
complex_int
,
/* nb_int */
complex_long
,
/* nb_long */
complex_float
,
/* nb_float */
...
...
Objects/floatobject.c
View file @
16c70751
...
...
@@ -235,8 +235,7 @@ format_float(char *buf, size_t buflen, PyFloatObject *v, int precision)
}
/* Macro and helper that convert PyObject obj to a C double and store
the value in dbl; this replaces the functionality of the coercion
slot function. If conversion to double raises an exception, obj is
the value in dbl. If conversion to double raises an exception, obj is
set to NULL, and the function invoking this macro returns NULL. If
obj is not of float, int or long type, Py_NotImplemented is incref'ed,
stored in obj, and returned from the function invoking this macro.
...
...
@@ -1069,7 +1068,7 @@ static PyNumberMethods float_as_number = {
0
,
/*nb_and*/
0
,
/*nb_xor*/
0
,
/*nb_or*/
(
coercion
)
0
,
/*nb_coerce
*/
0
,
/*nb_reserved
*/
float_trunc
,
/*nb_int*/
float_trunc
,
/*nb_long*/
float_float
,
/*nb_float*/
...
...
Objects/longobject.c
View file @
16c70751
...
...
@@ -3631,7 +3631,7 @@ static PyNumberMethods long_as_number = {
long_and
,
/*nb_and*/
long_xor
,
/*nb_xor*/
long_or
,
/*nb_or*/
0
,
/*nb_
coerce
*/
0
,
/*nb_
reserved
*/
long_long
,
/*nb_int*/
long_long
,
/*nb_long*/
long_float
,
/*nb_float*/
...
...
Objects/setobject.c
View file @
16c70751
...
...
@@ -1881,7 +1881,7 @@ static PyNumberMethods set_as_number = {
(
binaryfunc
)
set_and
,
/*nb_and*/
(
binaryfunc
)
set_xor
,
/*nb_xor*/
(
binaryfunc
)
set_or
,
/*nb_or*/
0
,
/*nb_
coerce
*/
0
,
/*nb_
reserved
*/
0
,
/*nb_int*/
0
,
/*nb_long*/
0
,
/*nb_float*/
...
...
Objects/weakrefobject.c
View file @
16c70751
...
...
@@ -589,7 +589,7 @@ static PyNumberMethods proxy_as_number = {
proxy_and
,
/*nb_and*/
proxy_xor
,
/*nb_xor*/
proxy_or
,
/*nb_or*/
0
,
/*nb_
coerce
*/
0
,
/*nb_
reserved
*/
proxy_int
,
/*nb_int*/
proxy_long
,
/*nb_long*/
proxy_float
,
/*nb_float*/
...
...
PC/_winreg.c
View file @
16c70751
...
...
@@ -430,7 +430,7 @@ static PyNumberMethods PyHKEY_NumberMethods =
PyHKEY_binaryFailureFunc
,
/* nb_and */
PyHKEY_binaryFailureFunc
,
/* nb_xor */
PyHKEY_binaryFailureFunc
,
/* nb_or */
NULL
,
/* nb_coerce
*/
0
,
/* nb_reserved
*/
PyHKEY_intFunc
,
/* nb_int */
PyHKEY_unaryFailureFunc
,
/* nb_long */
PyHKEY_unaryFailureFunc
,
/* nb_float */
...
...
Tools/modulator/Templates/object_tp_as_number
View file @
16c70751
...
...
@@ -103,13 +103,6 @@ $abbrev$_or($abbrev$object *v, $abbrev$object *w)
/* XXXX */
}
static int
$abbrev$_coerce(PyObject **pv, PyObject **pw)
{
/* XXXX I haven't a clue... */
return 1;
}
static PyObject *
$abbrev$_int($abbrev$object *v)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment