Re: Python binding APIs strict or loose

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

 



On 04/20/2012 04:23 AM, Guannan Ren wrote:
> 
> 
> 
>            Hi
> 
>                 There is a question. we need strict python binding API
> or loose one.
> 
>                 For example:
>                 The setSchedulerParameters(), it accepts one of
> parameters: 'vcpu_quota'
>                 In C its type is of 'long long', then we need a
> conversion from PyInt/PyLong
>                 to 'long long' by using cpython function
> 'PyLong_AsLongLong'.
>                 The problem is when the user python pass in a value of
> type Pyfloat instead
>                 of PyInt/PyLong, the cpython function drops the fraction
> part of the value
>                 automatically, Is it what we want or we need to add a
> type checking to ensure that
>                 the type of value passed in is PyInt/PyLong, otherwise,
> we raise an exception.

Or a third option - if it is not PyLong, but is a floating point, then
validate that conversion from floating point to integer and back does
not change the value (that is, there was no fractional value to begin with).

I know C would just truncate unconditionally, but I don't know enough
python coding conventions to know if python programmers expect the same
behavior as C, or if they expect something else.  But I do know that
whatever we pick should be consistent - our current approach of
accepting but truncating fractions for int while rejecting fractions for
long long is not consistent.

-- 
Eric Blake   eblake@xxxxxxxxxx    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]