[Mesa-dev] [PATCH 11/26] python: Fix rich comparisons

2018-07-05 Thread Mathieu Bridon
Python 3 lost the cmp() builtin, and doesn't call objects __cmp__()
methods any more to compare them.

Instead, Python 3 requires implementing the rich comparison methods
explicitly: __eq__(), __ne(), __lt__(), __le__(), __gt__() and __ge__().

Fortunately those are trivial to implement by just calling the existing
__cmp__() method, which makes the code compatible with both Python 2 and
Python 3.

This commit only implements the comparison methods which are actually
used by the build scripts.

In addition, this commit brings back to Python 3 the cmp() builtin
method as required.

Signed-off-by: Mathieu Bridon 
---
 src/amd/vulkan/radv_extensions.py  |  6 +-
 src/intel/vulkan/anv_extensions.py |  6 +-
 src/mapi/mapi_abi.py   | 13 +
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/amd/vulkan/radv_extensions.py 
b/src/amd/vulkan/radv_extensions.py
index a0f1038110..7f48d77629 100644
--- a/src/amd/vulkan/radv_extensions.py
+++ b/src/amd/vulkan/radv_extensions.py
@@ -150,7 +150,11 @@ class VkVersion:
 other = copy.copy(other)
 other.patch = self.patch
 
-return self.__int_ver().__cmp__(other.__int_ver())
+return self.__int_ver() - other.__int_ver()
+
+def __gt__(self, other):
+return self.__cmp__(other) > 0
+
 
 MAX_API_VERSION = VkVersion(MAX_API_VERSION)
 
diff --git a/src/intel/vulkan/anv_extensions.py 
b/src/intel/vulkan/anv_extensions.py
index 0f99f58ecb..213cfdc551 100644
--- a/src/intel/vulkan/anv_extensions.py
+++ b/src/intel/vulkan/anv_extensions.py
@@ -162,7 +162,11 @@ class VkVersion:
 other = copy.copy(other)
 other.patch = self.patch
 
-return self.__int_ver().__cmp__(other.__int_ver())
+return self.__int_ver() - other.__int_ver()
+
+def __gt__(self, other):
+return self.__cmp__(other) > 0
+
 
 
 MAX_API_VERSION = VkVersion('0.0.0')
diff --git a/src/mapi/mapi_abi.py b/src/mapi/mapi_abi.py
index be1d15d922..67fdb10650 100644
--- a/src/mapi/mapi_abi.py
+++ b/src/mapi/mapi_abi.py
@@ -38,6 +38,15 @@ import gl_XML
 import glX_XML
 
 
+try:
+cmp
+
+except NameError:
+# Python 3 does not have cmp()
+def cmp(a, b):
+return ((a > b) - (a < b))
+
+
 # number of dynamic entries
 ABI_NUM_DYNAMIC_ENTRIES = 256
 
@@ -135,6 +144,10 @@ class ABIEntry(object):
 
 return res
 
+def __lt__(self, other):
+return self.__cmp__(other) < 0
+
+
 def abi_parse_xml(xml):
 """Parse a GLAPI XML file for ABI entries."""
 api = gl_XML.parse_GL_API(xml, glX_XML.glx_item_factory())
-- 
2.17.1

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH 11/26] python: Fix rich comparisons

2018-07-11 Thread Mathieu Bridon
Python 3 lost the cmp() builtin, and doesn't call objects __cmp__()
methods any more to compare them.

Instead, Python 3 requires implementing the rich comparison methods
explicitly: __eq__(), __ne(), __lt__(), __le__(), __gt__() and __ge__().

Fortunately those are trivial to implement by just calling the existing
__cmp__() method, which makes the code compatible with both Python 2 and
Python 3.

This commit only implements the comparison methods which are actually
used by the build scripts.

In addition, this commit brings back to Python 3 the cmp() builtin
method as required.

Signed-off-by: Mathieu Bridon 
---
 src/amd/vulkan/radv_extensions.py  |  6 +-
 src/intel/vulkan/anv_extensions.py |  6 +-
 src/mapi/mapi_abi.py   | 13 +
 3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/amd/vulkan/radv_extensions.py 
b/src/amd/vulkan/radv_extensions.py
index c36559f48e..13a05fa21d 100644
--- a/src/amd/vulkan/radv_extensions.py
+++ b/src/amd/vulkan/radv_extensions.py
@@ -151,7 +151,11 @@ class VkVersion:
 other = copy.copy(other)
 other.patch = self.patch
 
-return self.__int_ver().__cmp__(other.__int_ver())
+return self.__int_ver() - other.__int_ver()
+
+def __gt__(self, other):
+return self.__cmp__(other) > 0
+
 
 MAX_API_VERSION = VkVersion(MAX_API_VERSION)
 
diff --git a/src/intel/vulkan/anv_extensions.py 
b/src/intel/vulkan/anv_extensions.py
index adc1d75898..47dba164ef 100644
--- a/src/intel/vulkan/anv_extensions.py
+++ b/src/intel/vulkan/anv_extensions.py
@@ -166,7 +166,11 @@ class VkVersion:
 other = copy.copy(other)
 other.patch = self.patch
 
-return self.__int_ver().__cmp__(other.__int_ver())
+return self.__int_ver() - other.__int_ver()
+
+def __gt__(self, other):
+return self.__cmp__(other) > 0
+
 
 
 MAX_API_VERSION = VkVersion('0.0.0')
diff --git a/src/mapi/mapi_abi.py b/src/mapi/mapi_abi.py
index be1d15d922..67fdb10650 100644
--- a/src/mapi/mapi_abi.py
+++ b/src/mapi/mapi_abi.py
@@ -38,6 +38,15 @@ import gl_XML
 import glX_XML
 
 
+try:
+cmp
+
+except NameError:
+# Python 3 does not have cmp()
+def cmp(a, b):
+return ((a > b) - (a < b))
+
+
 # number of dynamic entries
 ABI_NUM_DYNAMIC_ENTRIES = 256
 
@@ -135,6 +144,10 @@ class ABIEntry(object):
 
 return res
 
+def __lt__(self, other):
+return self.__cmp__(other) < 0
+
+
 def abi_parse_xml(xml):
 """Parse a GLAPI XML file for ABI entries."""
 api = gl_XML.parse_GL_API(xml, glX_XML.glx_item_factory())
-- 
2.17.1

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


Re: [Mesa-dev] [PATCH 11/26] python: Fix rich comparisons

2018-07-05 Thread Dylan Baker
Quoting Mathieu Bridon (2018-07-05 06:17:42)
> Python 3 lost the cmp() builtin, and doesn't call objects __cmp__()
> methods any more to compare them.
> 
> Instead, Python 3 requires implementing the rich comparison methods
> explicitly: __eq__(), __ne(), __lt__(), __le__(), __gt__() and __ge__().
> 
> Fortunately those are trivial to implement by just calling the existing
> __cmp__() method, which makes the code compatible with both Python 2 and
> Python 3.

Noo. Kill __cmp__ with fire and death. Python 2 supports rich comparison
methods as well, so please, please, please, please just get rid of __cmp__.

It also gets rid of all of the try/except madness.

> 
> This commit only implements the comparison methods which are actually
> used by the build scripts.
> 
> In addition, this commit brings back to Python 3 the cmp() builtin
> method as required.
> 
> Signed-off-by: Mathieu Bridon 
> ---
>  src/amd/vulkan/radv_extensions.py  |  6 +-
>  src/intel/vulkan/anv_extensions.py |  6 +-
>  src/mapi/mapi_abi.py   | 13 +
>  3 files changed, 23 insertions(+), 2 deletions(-)
> 
> diff --git a/src/amd/vulkan/radv_extensions.py 
> b/src/amd/vulkan/radv_extensions.py
> index a0f1038110..7f48d77629 100644
> --- a/src/amd/vulkan/radv_extensions.py
> +++ b/src/amd/vulkan/radv_extensions.py
> @@ -150,7 +150,11 @@ class VkVersion:
>  other = copy.copy(other)
>  other.patch = self.patch
>  
> -return self.__int_ver().__cmp__(other.__int_ver())
> +return self.__int_ver() - other.__int_ver()
> +
> +def __gt__(self, other):
> +return self.__cmp__(other) > 0
> +
>  
>  MAX_API_VERSION = VkVersion(MAX_API_VERSION)
>  
> diff --git a/src/intel/vulkan/anv_extensions.py 
> b/src/intel/vulkan/anv_extensions.py
> index 0f99f58ecb..213cfdc551 100644
> --- a/src/intel/vulkan/anv_extensions.py
> +++ b/src/intel/vulkan/anv_extensions.py
> @@ -162,7 +162,11 @@ class VkVersion:
>  other = copy.copy(other)
>  other.patch = self.patch
>  
> -return self.__int_ver().__cmp__(other.__int_ver())
> +return self.__int_ver() - other.__int_ver()
> +
> +def __gt__(self, other):
> +return self.__cmp__(other) > 0
> +
>  
>  
>  MAX_API_VERSION = VkVersion('0.0.0')
> diff --git a/src/mapi/mapi_abi.py b/src/mapi/mapi_abi.py
> index be1d15d922..67fdb10650 100644
> --- a/src/mapi/mapi_abi.py
> +++ b/src/mapi/mapi_abi.py
> @@ -38,6 +38,15 @@ import gl_XML
>  import glX_XML
>  
>  
> +try:
> +cmp
> +
> +except NameError:
> +# Python 3 does not have cmp()
> +def cmp(a, b):
> +return ((a > b) - (a < b))
> +
> +
>  # number of dynamic entries
>  ABI_NUM_DYNAMIC_ENTRIES = 256
>  
> @@ -135,6 +144,10 @@ class ABIEntry(object):
>  
>  return res
>  
> +def __lt__(self, other):
> +return self.__cmp__(other) < 0
> +
> +
>  def abi_parse_xml(xml):
>  """Parse a GLAPI XML file for ABI entries."""
>  api = gl_XML.parse_GL_API(xml, glX_XML.glx_item_factory())
> -- 
> 2.17.1
> 
> ___
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


signature.asc
Description: signature
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev