cancel
Showing results for 
Search instead for 
Did you mean: 

PyKX 2.0.0 and 2.0.1 released

rocuinneagain
Valued Contributor
Valued Contributor

PyKX 2.0.0 has been released.

 
Full details on the release can be found here.
 
This release is a major version owing to the following changes
  1. Pandas API functionality is now permanently enabled modifying indexing on pykx.Table objects which requires conscious review and testing for adoption
  2. EmbedPy replacement functionality for PyKX is now non-beta for Linux and MacOS see here for further information.
PyKX in Python
Additions:
  • Update to license installation workflow for new users to PyKX providing license install workflow when license is not detected.
  • Addition of pykx.license module containing license installation, expiry and validation functionality, see here for more information.
  • Addition of pykx.random module providing functionality for random data generation
>>> kx.random.random(5. 1.0)
pykx.FloatVector(pykx.q('0.1959057 0.06460555 0.9550039 0.4991214 0.3207941'))
>>> kx.random.random([2, 3], ['a', 'b', 'c'], seed=123)
pykx.List(pykx.q('
c c c
a b b
'))
  • Addition of pykx.register module providing users the ability to specify custom Python to q conversions
>>> import pykx as kx
>>> def complex_conversion(data):
...     return kx.q([data.real, data.imag])
>>> kx.register.py_toq(complex, complex_conversion)
>>> kx.toq(complex(1, 2))
pykx.FloatVector(pykx.q('1 2f'))
  • Addition of file based configuration setting allowing users to centrally manage config without using env-vars see here for more information.
  • Addition of apply and groupby methods to PyKX Tables
>>> import pykx as kx
>>> N = 1000000
>>> tab = kx.Table(data = {
...       'price': kx.random.random(N, 10.0),
...       'sym': kx.random.random(N, ['a', 'b', 'c'])
...       })
>>> tab.groupby('sym').apply(kx.q.sum)
pykx.KeyedTable(pykx.q('
sym| price   
---| --------
a  | 166759.4
b  | 166963.6
c  | 166444.1
'))
Fixes and improvements:
  • Serialising pykx.Foreign objects using pickle no longer results in segmentation fault
  • Attempts to call pykx.q.{select/exec/update/delete} now return appropriate error message and suggestion to use qsql equivalent functionality
PyKX under q Process
Additions:
  • Addition of .pykx.version denoting PyKX version installed
  • Addition of function .pykx.debugInfo returning debugging information about a users PyKX installation
  • Addition of .pykx.qcallable and .pykx.pycallable function mapping to embedPy equivalent logic
Fixes and improvements:
  • Resolution to memory leaks/segmentation faults relating to the following
  • .pykx.*eval functions would leak memory on each invocation
  • .pykx.pyexec would result in segmentation fault on repeated invocation
  • Attempts to convert non Pythonic foreign objects would result in segmentation fault
  • Miscellaneous additional fixes here

PyKX 2.0.1 has been released.

 
Full details on the release can be found here.
 
Fixes and Improvements:
  • User input based license initialisation introduced in 2.0.0 no longer expects user input when operating in a non-interactive modality, use of PyKX in this mode will revert to previous behaviour
  • Use of the environment variables QARGS='--unlicensed' or QARGS='--licensed' operate correctly following regression in 2.0.0
  • Fix to issue where OSError would be raised when close() was called on an IPC connection which has already disconnected server side
1 REPLY 1

davidcrossey
Moderator Moderator
Moderator

Thanks for sharing the latest release notes for PyKX @rocuinneagain!