chiark / gitweb /
ec.c, field.c: Remove redundant `FOO_pyrichcompare' methods.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 22 Oct 2019 16:53:44 +0000 (17:53 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Sat, 11 Apr 2020 11:44:21 +0000 (12:44 +0100)
The abstract base classes already have the necessary comparison methods,
so there's nothing to be gained by repeating the same methods on
subclasses.  (Indeed, Python might pointlessly allocate more memory for
the corresponding Python-level descriptors, but I haven't checked.)  But
there is something to be lost: Python 3 explicitly clobbers the
`__hash__' methods of subclasses which declare new equality methods.  We
could add duplicates of the hash methods throughout the subclass graph,
but it seems better to delete the pointless equality methods which are
causing the problem.

ec.c
field.c

diff --git a/ec.c b/ec.c
index c9707b7b30b2af8d9806cf8ff28ed6a88d2b4a53..d631a91574f22b99ab7374be0ee33224de23cc2d 100644 (file)
--- a/ec.c
+++ b/ec.c
@@ -1147,7 +1147,7 @@ static const PyTypeObject ecprimecurve_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  eccurve_pyrichcompare,               /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
@@ -1202,7 +1202,7 @@ static const PyTypeObject ecprimeprojcurve_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  eccurve_pyrichcompare,               /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
@@ -1257,7 +1257,7 @@ static const PyTypeObject ecbincurve_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  eccurve_pyrichcompare,               /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
@@ -1312,7 +1312,7 @@ static const PyTypeObject ecbinprojcurve_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  eccurve_pyrichcompare,               /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
diff --git a/field.c b/field.c
index fa424df422235551726bfa22d58e6535fbf290b9..5f3b58cab65d0db84a0d3d6f9d2a2e9e88f7c1b8 100644 (file)
--- a/field.c
+++ b/field.c
@@ -646,7 +646,7 @@ static const PyTypeObject primefield_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  field_pyrichcompare,                 /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
@@ -713,7 +713,7 @@ static const PyTypeObject niceprimefield_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  field_pyrichcompare,                 /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
@@ -777,7 +777,7 @@ static const PyTypeObject binfield_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  field_pyrichcompare,                 /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
@@ -843,7 +843,7 @@ static const PyTypeObject binpolyfield_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  field_pyrichcompare,                 /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
@@ -922,7 +922,7 @@ static const PyTypeObject binnormfield_pytype_skel = {
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
-  field_pyrichcompare,                 /* @tp_richcompare@ */
+  0,                                   /* @tp_richcompare@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */
   0,                                   /* @tp_weaklistoffset@ */
   0,                                   /* @tp_iter@ */
   0,                                   /* @tp_iternext@ */