Showing results for 
Search instead for 
Did you mean: 

PyKX 2.3.1 Released

Valued Contributor
Valued Contributor


Hi All,
PyKX 2.3.1 has been released rocuinneagain_0-1707479129057.png


  Full release notes can be found here.
  This release focuses on a number of specific fixes and beta feature additions as outlined below:
  • Python functions saved to q would error if passed '' or '.'. These now pass without issue. (example in full release notes)
  • Changed Table.rename() to ignore any columns values that are of the wrong type instead of throwing an unhelpful error.
  • Improved upon the quality of Table.rename() error messages and documentation on the function.
  • PyKX would error with _get_config_value() missing 1 required positional argument: 'default' on import if a license was not found since 2.3.0. Now correctly opens the license walkthrough.
  • Pandas 2.2.0 introduced breaking changes which effect PyKX. PyKX dependencies have been updated to pandas>=1.2, < 2.2.0 until these are resolved. Data casting behavior leads to an unexpected datatype being returned.
  •  df.select_dtypes() updated to now accept kx.*Atom values for include/exclude params. Use of kx.CharVector will return error.
  • To align with other areas of PyKX the upsert and insert methods for PyKX tables and keyed tables now support the keyword argument inplace, this change will deprecate usage of replace_self with the next major release of PyKX.
Beta Features:
  • Addition of the concept of Remote Function execution to PyKX, this allows users, from a Python session to define Python functions which will be executed on a remote q/kdb+ server running PyKX under q. The intention with this feature is to allow onboarding of Python first operations within existing or q/kdb+ first infrastructures
>>> from pykx.remote import function, session
>>> remote_session = session()
>>> remote_session.create('localhost', 5050)
>>> @function(remote_session)
... def func(x):
...     return x+1
>>> func(2)            # Functionality run on q server
>>> remote_session.clear()

Moderator Moderator

Thanks @rocuinneagain