Re: [PATCH] sepolgen: convert cmp functions to key functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/05/2015 03:15 AM, Robert Kuska wrote:
> In python3 it is needed to pass compare function as a key argument
> instead of directly passing compare function to sort function
> 
> Signed-off-by: Robert Kuska <rkuska@xxxxxxxxxx>

Thanks, applied.

> ---
>  sepolgen/src/sepolgen/output.py |  4 ++--
>  sepolgen/src/sepolgen/util.py   | 23 +++++++++++++++++++++++
>  2 files changed, 25 insertions(+), 2 deletions(-)
> 
> diff --git a/sepolgen/src/sepolgen/output.py b/sepolgen/src/sepolgen/output.py
> index d8daedb..e9a3b8c 100644
> --- a/sepolgen/src/sepolgen/output.py
> +++ b/sepolgen/src/sepolgen/output.py
> @@ -131,7 +131,7 @@ def sort_filter(module):
>          rules = []
>          rules.extend(node.avrules())
>          rules.extend(node.interface_calls())
> -        rules.sort(rule_cmp)
> +        rules.sort(key=util.cmp_to_key(rule_cmp))
>  
>          cur = None
>          sep_rules = []
> @@ -155,7 +155,7 @@ def sort_filter(module):
>  
>          ras = []
>          ras.extend(node.role_types())
> -        ras.sort(role_type_cmp)
> +        ras.sort(key=util.cmp_to_key(role_type_cmp))
>          if len(ras):
>              comment = refpolicy.Comment()
>              comment.lines.append("============= ROLES ==============")
> diff --git a/sepolgen/src/sepolgen/util.py b/sepolgen/src/sepolgen/util.py
> index 16e7ca2..9ad7fbd 100644
> --- a/sepolgen/src/sepolgen/util.py
> +++ b/sepolgen/src/sepolgen/util.py
> @@ -145,6 +145,29 @@ class Comparison():
>      def __ne__(self, other):
>          return self._compare(other, lambda a, b: a != b)
>  
> +if sys.version_info < (2,7):
> +    # cmp_to_key function is missing in python2.6
> +    def cmp_to_key(mycmp):
> +        'Convert a cmp= function into a key= function'
> +        class K:
> +            def __init__(self, obj, *args):
> +                self.obj = obj
> +            def __lt__(self, other):
> +                return mycmp(self.obj, other.obj) < 0
> +            def __gt__(self, other):
> +                return mycmp(self.obj, other.obj) > 0
> +            def __eq__(self, other):
> +                return mycmp(self.obj, other.obj) == 0
> +            def __le__(self, other):
> +                return mycmp(self.obj, other.obj) <= 0
> +            def __ge__(self, other):
> +                return mycmp(self.obj, other.obj) >= 0
> +            def __ne__(self, other):
> +                return mycmp(self.obj, other.obj) != 0
> +        return K
> +else:
> +    from functools import cmp_to_key
> +
>  def cmp(first, second):
>      return (first > second) - (second > first)
>  
> 

_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.



[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux