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

Re: [libvirt] Python binding APIs strict or loose

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 redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

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