embedPy inside q (kdb+) process fails to import a module

https://learninghub.kx.com/forums/topic/embedpy-inside-q-kdb-process-fails-to-import-a-module

Hi community

I must learn how to use python modules inside q kdb+ process.

at the process of learning :

  1. using windows 10 x64 q , kdb+ , anaconda virtual environment

on python 3.8.10, and KX Developer IDE.

  1. learned how to use embedPy and successfully loaded some

python modules like ‘os’ in to q using reflections.

 

now

I try to use qoinbase-q to learn integrating embedPy with web-sockets
on q kdb+ database.

this code use an other project to extend q language using python modules
extend .it fail on a point attempting to get functions of coin-pro python
library.

q)pc:.cbpro.PublicClient[]
'cxt
[4] C:Userssrv.condaenvsqenvqextend.q:181: .py.reflection.priv.context@:{.py.reflection.priv[y;`cxt][x;z]}

can you help me fined how to debug it and resolve the problem?

thanks
Ori

 

the function is:

.py.reflection.priv.context:{[obj; atr; arg] 
init: atr[`functions][`$"__init__"]; 
params: init[`parameters]; 
required: params[::;`required]; 
if[(arg~(::)) and (any required);
 '"Missing required parameters: ",", " sv string where required];
 blk: .ut.blankNS; 
arg: .py.reflection.priv.args[arg];
ins: $[1<count arg;.;@][obj;arg];
 atr[`vars]: .py.vars[ins];
 atr: @[atr;`functions;{x _ `$"__init__"}];
 cxt: blk,(,/)value .ut.eachKV[`doc _ atr;{.py.reflection.priv[y;`cxt][x;z]}[ins]];
 cxt
};

Hi Ori,

Interesting to see if anyone else in the Community has tried using this library who may be able to assist

Just in case anyone else is interesting in looking at this issue, can I check you are referring to these projects?

Thanks for sharing with the Community.

Kind regards,

David

Thanks David

Do you know how to debug such cases? I try to display contents

of the python library and understand what is the problem there,

I can’t get it working the output is not clear and I can’t understand

whet is the problem?

Ori

The error is that a variable “cxt” is not being found.

https://code.kx.com/q/basics/errors/#runtime-errors

 

General debugging tips included on: https://code.kx.com/q/basics/debug/

 

As this is a third party project you will get better support by raising an issue with the developer directly:

The developer does not document the supported embedPy versions which would be important to know.

 

One difference I see is you are calling

pc:.cbpro.PublicClient

But the developer passes a string - this could be your issue

https://github.com/michaelsimonelli/qoinbase-q/blob/359653d9e45b6319d897f5ae50af048225605ae2/cbpro.q#L27

cli: .cli.priv.addFuncs .cbpro.PublicClient[url];

 

 

Thanks Rian

I am already in contact with Michael on this issue.

He is busy with other things so I try to resolve problem myself.

Will try to insert the url, will you be able to help me debug this problem?

I’m stack with it since last week…

Ori