# PyKX 2.2.0 Released

**URL:** <https://forum.kx.com/t/pykx-2-2-0-released/13079>\
**Category:** Community Support\
**Tags:** pykx\
**Created:** [November 9, 2023, 11:19am UTC](https://forum.kx.com/t/pykx-2-2-0-released/13079 "2023-11-09T11:19:00Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![cmccarthy11](https://avatars.discourse-cdn.com/v4/letter/c/58f4c7/32.png) [@cmccarthy11](https://forum.kx.com/u/cmccarthy11)\
**Post date:** [November 9, 2023, 11:19am UTC](https://forum.kx.com/t/pykx-2-2-0-released/13079/1 "2023-11-09T11:19:00Z")

</div>

Hi all,PyKX 2.2.0 has been released&nbsp;&nbsp;Full details on the release can be found&nbsp;here. Examples of each of these changes are included in the release note and highlighted in the video attached (1.5x speed suggested). **_Additions:_**

- Aggregation&nbsp;`agg`&nbsp;method to PyKX Tables and GroupbyTable objects, documentation available&nbsp;here.
- Users can now run&nbsp;`min`,&nbsp;`max`,&nbsp;`median`,&nbsp;`mode`,&nbsp;`sum`&nbsp;and&nbsp;`mean`&nbsp;calculations directly on PyKX Vector objects
- Pythonic assignment of objects to PyKX Vector and List objects now supported
- Pythonic assignment and updates to dictionaries now supported
- Addition of&nbsp;`null`&nbsp;and&nbsp;`inf`&nbsp;properties for&nbsp;`pykx.Atom`&nbsp;objects allowing for Pythonic retrieval of nulls and infinities
- Addition of&nbsp;`append`&nbsp;and&nbsp;`extend`&nbsp;methods to&nbsp;`pykx.*Vector`&nbsp;and&nbsp;`pykx.List`&nbsp;objects
- Addition of&nbsp;`debug`&nbsp;keyword argument to the&nbsp;` __call__ `&nbsp;method on&nbsp;`EmbeddedQ`&nbsp;and&nbsp;`QConnection`&nbsp;objects to provide backtraces on&nbsp;`q`&nbsp;code executed locally and remotely.
- Users can now use the environment variables&nbsp;`PYKX_UNLICENSED="true"`&nbsp;or&nbsp;`PYKX_LICENSED="true"`&nbsp;set as part of configuration within their&nbsp;`.pykx-config`&nbsp;file to allow&nbsp;`unlicensed`&nbsp;or&nbsp;`licensed`&nbsp;mode to be the default behaviour on initialisation for example:
- Added feature to extract individual elements of both&nbsp;`TimestampAtom`&nbsp;and&nbsp;`TimestampVector`&nbsp;in a pythonic manner.

**_Fixes and improvements:_**

- Fix to allow users to use Python functions when operating on a&nbsp;`pykx.GroupbyTable`&nbsp;with an&nbsp;`apply`&nbsp;function
- Failure to initialise PyKX with&nbsp;`exp`&nbsp;or&nbsp;`embedq`&nbsp;license errors will now prompt users to ask if they wish to download an appropriate license following expiry or use of an invalid license
- PyKX sets&nbsp;`PYKX_EXECUTABLE`&nbsp;to use when loading embedded q to prevent errors if launched using a different Python executable than that which will be found in&nbsp;`PATH`
- `PyKXReimport`&nbsp;now additionally unsets/resets:&nbsp;`PYKX_SKIP_UNDERQ`,&nbsp;`PYKX_EXECUTABLE`,&nbsp;`PYKX_DIR`
- When attempting to deserialize unsupported byte representations&nbsp;`pykx.deserialize`&nbsp;would result in a segmentation fault, this has been updated such that an error message is now raised.

**_Note:_**

- Given changes to released numpy artifacts the Linux x86 release of PyKX has been delayed for Python 3.11, we will update the released artifacts once a solution has been found

---

<div class="post-metadata">

**Author:** ![Laura2](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Laura2](https://forum.kx.com/u/Laura2)\
**Post date:** [November 9, 2023, 12:34pm UTC](https://forum.kx.com/t/pykx-2-2-0-released/13079/2 "2023-11-09T12:34:00Z")

</div>

Brilliant, thanks for sharing Conor!
