Converting Python Tuples / Lists into Any in PyUNO
Stephan Bergmann
sbergman at redhat.com
Thu May 16 07:20:14 UTC 2019
On 15/05/2019 15:27, Thomas Viehmann wrote:
> but that isn't really what this is about, it's about what sequence types
> are expected when an any is passed.
>
> My intuition would be that the more specific type is better when
> applicable, but I would value your input whether such a change would be
> considered an improvement.
There is no "better" or "worse" here, just "right" or "wrong". If some
UNOIDL construct documents requirements for a type (e.g., used as an
interface method parameter type), then any code using that construct
must adhere to those requirements.
While it can be easy for a UNO language binding to automatically "fix
things up" when e.g. an UNOIDL interface method has a parameter of type
sequence<string> and the (Python) caller code passes in a Python object
that would normally be mapped to a UNOIDL sequence<any>, there can be no
magic fixup when the parameter is of type any and only some additional
protocol (unknown to the language binding; e.g., some documentation of
the UNOIDL method) dictates the requirement that a certain call of that
method must e.g. actually pass in a sequence<string> wrapped in that any.
That is, the PyUno language binding had to make a choice how to e.g. map
a Python tuple of strings into a UNOIDL any value. It may be debatable
whether the current choice (apparently mapping to a sequence<any>
instead of, say, a sequence<string>) is useful. Be aware that revising
that choice is an incompatible change. It may make writing certain
Python code more intuitive, but at the same time it may break existing code.
More information about the LibreOffice
mailing list