KX Community

Find answers, ask questions, and connect with our KX Community around the world.
KX Community Guidelines

Home Forums PyKX PyKX 2.0.0 and 2.0.1 released

  • PyKX 2.0.0 and 2.0.1 released

    Posted by rocuinneagain on September 25, 2023 at 12:00 am

    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
    rocuinneagain replied 8 months, 3 weeks ago 2 Members · 1 Reply
  • 1 Reply

Sorry, there were no replies found.

Log in to reply.