[PATCH] Python3 compatible tests and credentials module
Andrew Bartlett
abartlet at samba.org
Fri Nov 25 22:09:56 UTC 2016
On Sat, 2016-11-26 at 09:34 +1300, Andrew Bartlett wrote:
> On Fri, 2016-11-25 at 17:20 +0100, Petr Viktorin wrote:
> >
> > On 11/25/2016 03:40 AM, Andrew Bartlett wrote:
> > >
> > >
> > > On Thu, 2016-11-24 at 14:59 +0100, Lumir Balhar wrote:
> > > >
> > > >
> > > > Hello.
> > > >
> > > > Because I have no response for two weeks on GitHub [0], I
> > > > decided
> > > > to
> > > > send my patches here. Which way is preferred, please?
> > > >
> > > > The first part of this PR contains changes necessary to run
> > > > tests
> > > > with
> > > > Python 3. These changes should not have any impact on
> > > > functionality
> > > > with
> > > > Python 2.
> > > > The second part ports the samba.credentials module to be Python
> > > > 3
> > > > compatible, and also ports the credentials tests. The files
> > > > py3compat.h
> > > > and compat.py will help us with porting and to make the future
> > > > code
> > > > more
> > > > readable. The py3compat.h file is the same as proposed by Petr
> > > > Viktorin
> > > > and discussed in this thread:
> > > > https://lists.samba.org/archive/samba-technical/2016-July/11499
> > > > 8.
> > > > html
> > > >
> > > > I am submitting the two parts as one PR because, without at
> > > > least
> > > > one
> > > > module prepared for Python 3, it is impossible to try running
> > > > tests
> > > > with
> > > > Python 3.
> > > >
> > > > [0] https://github.com/samba-team/samba/pull/68
> > >
> > > Thanks for the patch. The main thing I don't like is the if PY3
> > > stuff,
> > > and the .args usage. I would rather we ported param and glue to
> > > python3 at the same time, they shouldn't be too hard.
> >
> >
> > The problem the PY3 guards are solving is that the main test
> > module,
> > samba.tests, depends on most of Samba (dcerpc, param, ndr), and the
> > main
> > samba module depends on param and _ldb
> > If porting needs to come with tests, either we need to port most
> > of
> > Samba in one patchset, or the circular dependency needs to be cut
> > somewhere.
> > I think the `if PY3` guards are the best solution here, but if you
> > disagree, sending a bigger patchset is of course possible.
>
> I'm more comfortable with if PY3 in tests than I am in mainline code.
>
> For the mainline code, I'm concerned that this effort may not
> continue,
> and don't want if PY3 littered all over our code for an extended
> period
> of time.
>
> If at all possible, I would like to continue to have this effort move
> from the outside in, that is from modules that can be converted
> without
> such guards first.
>
> >
> > As for param specifically, Python3 file objects are not directly
> > backed
> > by FILE*, so the dump() methods in param are one of the tougher
> > nuts
> > to
> > crack during the porting.
>
> Look at how ndr_print and the ldb ldif printer takes different types
> of
> printing callbacks. Just make the param code do the same. It is a
> bit
> more work, but don't feel afraid to change how the underlying code
> works, I don't think we are particularly attached to the
> implementation.
I'm also entirely comfortable if the stream argument is lost from
python, and dump() simply pushes to stdout always by passing stdout
inside the C layer. That would seem to be the least intrusive fix.
> >
> > I think param would benefit from a separate
> > review, after preparations to run tests on py3 are done.
>
> OK. I think we are at that point, I don't want to merge it until we
> get rid of those PY3 hooks in the mainline code, but I think we have
> successfully discussed the only issues with the preparations, so we
> can
> get on to that step as soon as you are ready.
>
> Thanks,
>
> Andrew Bartlett
>
--
Andrew Bartlett http://samba.org/~abartlet/
Authentication Developer, Samba Team http://samba.org
Samba Developer, Catalyst IT http://catalyst.net.nz/services/samba
More information about the samba-technical
mailing list