On Tue, 2013-10-08 at 18:29 +0200, Petr Viktorin wrote:
> On 10/07/2013 11:28 PM, Nathaniel McCallum wrote:
> > On Mon, 2013-10-07 at 13:22 +0200, Petr Viktorin wrote:
> >> On 10/04/2013 07:33 PM, Nathaniel McCallum wrote:
> >>> This patch is preparatory for the OTP CLI patch.
> >>
> >>
> >>   > +    def _convert_scalar(self, value, index=None):
> >>   > +        return Int._convert_scalar(self, value, index=index)
> >>
> >> That won't work. In Python 2 unbound methods (such as
> >> Int._validate_scalar) must be passed the correct type as self; passing
> >> an IntEnum instance like this will raise a TypeError.
> >>
> >> You'll need to either use multiple inheritance (if you feel the
> >> framework isn't complex enough), or make a convert_int function, and
> >> then in both Int and IntEnum just call it and handle ValueError.
> >>
> >> For validate_scalar it would probably be best to extend
> >> Param._validate_scalar to allow the class to define extra allowed types,
> >> and get rid of the reimplementation in Int.
> >
> > Fixed.
> 
> This works, but I do have some comments.
> 
> I'd prefer if the framework changes and IntEnum addition were in 
> separate patches.
> I find the usage of _get_types() a bit convoluted, especially when you 
> need to get the "canonical" type. I've taken the liberty to do this with 
> an `allowed_types` attribute, which I think is easier to use, and also 
> doesn't break the API.
> Would you agree with these changes?
> 
> I've added tests for IntEnum, as a combination of StrEnum and Int tests. 
> Do they look OK?

Everything looks great except I suspect the reworking of convert_int()
belongs in the second patch.

Nathaniel


_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to