[Python-Dev] PEP 485 isclose() implementation review requested

Christian Heimes christian at python.org
Mon May 18 01:16:13 CEST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

On 2015-05-18 01:02, Chris Barker wrote:
> * Is there a better way to create a False or True than::
> 
> PyBool_FromLong(0) and PyBool_FromLong(1)

You can use the macros Py_RETURN_TRUE and Py_RETURN_FALSE instead of
return PyBool_FromLong(0).


> * Style question: should I put brackets in an if clause that has
> only one line?::
> 
> if (some_check) { just_this_one_expression }

I prefer the extra brackets because they make the code more explicit.
It's really a matter of taste.

> * I can't find docs for PyDoc_STRVAR: but it looks like it should
> use it -- how?

PyDoc_STRVAR(functionname_doc,
"isclose(foo) -> bool\n\
\n\
long doc string.");

> * I'm getting a warning in my PyMethodDef clause::
> 
> static PyMethodDef IsCloseMethods[] = { {"isclose", isclose_c,
> METH_VARARGS | METH_KEYWORDS, "determine if two floating point
> numbers are close"}, {NULL, NULL, 0, NULL}        /* Sentinel */ 
> };

You have to type cast the function pointer to a PyCFunction here:

  (PyCFunction)isclose_c

The type cast is required for KEYWORD functions and NOARGS functions.

Christian


More information about the Python-Dev mailing list