[PR PATCH] More py2 py3 compat

Noel Power nopower at suse.com
Tue May 8 08:51:44 UTC 2018


On 06/05/18 12:51, Douglas Bagnall via samba-technical wrote:
> On 06/05/18 22:05, Github bot (Noel Power) wrote:
>> * xrange -> range Note: there is one instance of this where it might
>>   make a difference (see commit message) due to the potential amount
>>   of items in the range. Advice needed here, might need to drop one
>>   of these patches at the moment. Six apparently has a wrapper we
>>   could use instead (but CI doesn't support yet... I think)
> Which I assume is referring to this one:
>
>> From 6d1a2b54eab7897b1ff71dc84ff6c16df2d29c3e Mon Sep 17 00:00:00 2001
>> From: Noel Power <noel.power at suse.com>
>> Date: Fri, 4 May 2018 12:20:36 +0100
>> Subject: [PATCH 10/17] samba_tool: replace xrange -> range
yes :-)
>>
>> This one might be a better candidate for using six.moves as there
>> are perhaps issues with the amount of elements involved
>> Signed-off-by: Noel Power <noel.power at suse.com>
>> ---
>>  python/samba/netcmd/domain.py | 32 ++++++++++++++++----------------
>>  1 file changed, 16 insertions(+), 16 deletions(-)
> I wouldn't worry too much because samba-tool is slow anyway, but...
>
>> diff --git a/python/samba/netcmd/domain.py b/python/samba/netcmd/domain.py
>> index 1e242dea62e..5c92bb7f393 100644
>> --- a/python/samba/netcmd/domain.py
>> +++ b/python/samba/netcmd/domain.py
>> @@ -2011,7 +2011,7 @@ def write_forest_trust_info(self, fti, tln=None, collisions=None):
>>          self.outf.write("Namespaces[%d]%s:\n" % (
>>                          len(fti.entries), tln_string))
>>
>> -        for i in xrange(0, len(fti.entries)):
>> +        for i in range(0, len(fti.entries)):
>>              e = fti.entries[i]
> This would be better as
>
> -        for i in xrange(0, len(fti.entries)):
> -            e = fti.entries[i]
> +        for i, e in enumerate(fti.entries):
>
> or you could go further. To take the next example:
>
>>              flags = e.flags
>> @@ -3403,7 +3403,7 @@ def run(self, domain=None, sambaopts=None, localdcopts=None, versionopts=None,
>>
>>              for upn in add_upn:
>>                  idx = None
>> -                for i in xrange(0, len(update_upn_vals)):
>> +                for i in range(0, len(update_upn_vals)):
>>                      v = update_upn_vals[i]
>>                      if v.lower() != upn.lower():
>>                          continue
> @@ -3401,15 +3400,11 @@ class cmd_domain_trust_namespaces(DomainTrustCommand):
>              update_spn_vals.extend(stored_spn_vals)
>
>              for upn in add_upn:
> -                idx = None
> -                for i in xrange(0, len(update_upn_vals)):
> -                    v = update_upn_vals[i]
> -                    if v.lower() != upn.lower():
> -                        continue
> -                    idx = i
> -                    break
> -                if idx is not None:
> -                    raise CommandError("Entry already present for value[%s] specified for --add-upn-suffix" % upn)
> +                for v in update_upn_vals:
> +                    if v.lower() == upn.lower():
> +                        raise CommandError("Entry already present for "
> +                                           "value[%s] specified for "
> +                                           "--add-upn-suffix" % upn)
>                  update_upn_vals.append(upn)
>                  replace_upn = True
>
> If efficiency really mattered, it would be better to replace the
> update_upn_vals with something like an ordereddict where the keys were
> the lowercase upns. Then it would become:
>
> +                if upn.lower() in update_upn_vals_lower:
> +                    raise CommandError(...)
> +                update_upn_vals_lower[upn.lower()] = upn
>                  replace_upn = True
>
>
> but going to enumerate() is already an improvement in 2 and 3 and
> should be simple enough.
Thanks alot Douglas,
I'll take a closer look (only just catching up on mail from a long
weekend) and I'll fold this these changes and will resubmit

Noel



More information about the samba-technical mailing list