Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Re: Proper usage of Inline::Python

by crashtest (Curate)
on Oct 11, 2014 at 16:57 UTC ( #1103511=note: print w/replies, xml ) Need Help??

in reply to Proper usage of Inline::Python

Here's a concrete example that worked for me, using the Decimal class. I expect the usage to be analogous for the Hyperdex library. As Anony-Monk pointed out, the do-it-yourselfer's guide is valuable documentation here.

use Inline::Python qw(py_eval py_call_function); py_eval("import decimal"); my $d1 = Inline::Python::Object->new('decimal', 'Decimal', '42.00'); my $d2 = Inline::Python::Object->new('decimal', 'Decimal', '2.00'); my $d3 = $d1->__mul__($d2); print $d3->to_eng_string(); # prints "84.000"

Replies are listed 'Best First'.
Re^2: Proper usage of Inline::Python
by OverlordQ (Hermit) on Oct 12, 2014 at 10:01 UTC
    As I pointed out to the Anonymous Monk, any combination of the constructor I've tried without having to wrap it in my own Python code results in the bless non-reference error.

      I was able to reproduce your error on my system. Dug into it a bit with the debugger, and I found that the non-reference object being blessed is this string:

      '<hyperdex.client.Client object at 0x7fa3f1c0c560>'
      My guess is that it's a bug in Inline::Python's conversion magic or something unexpected in the Hyperdex libary. The Python object is being created properly, but somewhere it's been converted to a string representation. I really don't know enough Python to hazard a guess as to what's really going on here.

      Might be worth filing a bug report for Inline-Python. The Python library Hyperdex installs is a shared library file, not a traditional .py or .pyc module, and I wonder if that perhaps has something to do with it. At least you already have a work-around.

        Yeah, I've had to expand it a bit more, since some of the function calls return Iterables which I::P doesn't seem to have automagic for yet. I've basically just wrapped the function to return it as a list. I'll see if I can find a basic test case and file a bug for it.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1103511]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2020-05-27 07:26 GMT
Find Nodes?
    Voting Booth?
    If programming languages were movie genres, Perl would be:

    Results (153 votes). Check out past polls.