You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/beta-features/index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ _This page provides an overview of PyKX Beta Features, including what they are,
11
11
12
12
## What is a Beta Feature?
13
13
14
-
As used commonly within software development "Beta Features" within PyKX describe features which have completed an initial development process phase and are being released in an opt-in manner to users of PyKX wishing to test these features. These features are not intended to be for production use while in beta and are subject to change prior to release as full features. Usage of these features will not effect the default behaviour of the library outside of the scope of the new functionality being added.
14
+
As used commonly within software development "Beta Features" within PyKX describe features which have completed an initial development process phase and are being released in an opt-in manner to users of PyKX wishing to test these features. These features are not intended to be for production use while in beta and are subject to change prior to release as full features. Usage of these features will not effect the default behavior of the library outside of the scope of the new functionality being added.
15
15
16
16
Feedback on Beta Feature development is incredibly helpful and helps to determine when these features are promoted to fully supported production features. If you run into any issues while making use of these features please raise an issue on the PyKX Github [here](https://github.com/KxSystems/pykx/issues).
Stay updated with the latest release notes and roadmap details. You’ll find information on the latest releases/fixes, previous versions, and upcoming features.
37
+
Stay updated with the latest release notes. You’ll find information on the latest releases/fixes, and previous versions.
38
38
39
39
!!! home-page "[Help and Support](./help/troubleshooting.md)"
Copy file name to clipboardExpand all lines: docs/release-notes/changelog.md
+58-11Lines changed: 58 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,49 @@
4
4
5
5
The changelog presented here outlines changes to PyKX when operating within a Python environment specifically, if you require changelogs associated with PyKX operating under a q environment see [here](./underq-changelog.md).
6
6
7
+
## PyKX 3.1.6
8
+
9
+
#### Release Date
10
+
11
+
2025-12-01
12
+
13
+
### Fixes and Improvements
14
+
15
+
- Updated 4.1 to 2025.11.25 for all platforms.
16
+
- Fixed issue where setting `sort=True` when calling `merge` on two `kx.Tables` ignored the supplied `on` parameter.
17
+
18
+
=== "Behavior prior to change"
19
+
20
+
```Python
21
+
>>> da = kx.q.z.D
22
+
>>> a = kx.toq(pd.DataFrame({'r':[2,3,4],'date':[da-2, da, da-1], 'k':[10, 11, 12]}))
23
+
>>> b = kx.toq(pd.DataFrame({'r':[5,6,7],'date':[da-2, da-1, da], 'k':[13, 14, 15]}))
24
+
>>> a.merge(b, on='date', sort=True)
25
+
pykx.Table(pykx.q('
26
+
r_x date k_x r_y k_y
27
+
--------------------------
28
+
2 2025.11.25 10 5 13
29
+
3 2025.11.27 11 7 15
30
+
4 2025.11.26 12 6 14
31
+
'))
32
+
```
33
+
34
+
=== "Behavior post change"
35
+
36
+
```Python
37
+
>>> da = kx.q.z.D
38
+
>>> a = kx.toq(pd.DataFrame({'r':[2,3,4],'date':[da-2, da, da-1], 'k':[10, 11, 12]}))
39
+
>>> b = kx.toq(pd.DataFrame({'r':[5,6,7],'date':[da-2, da-1, da], 'k':[13, 14, 15]}))
40
+
>>> a.merge(b, on='date', sort=True)
41
+
pykx.Table(pykx.q('
42
+
r_x date k_x r_y k_y
43
+
--------------------------
44
+
2 2025.11.25 10 5 13
45
+
4 2025.11.26 12 6 14
46
+
3 2025.11.27 11 7 15
47
+
'))
48
+
```
49
+
7
50
## PyKX 3.1.5
8
51
9
52
#### Release Date
@@ -30,24 +73,24 @@
30
73
- Added `no_allocator` keyword argument to `pykx.toq` that allows one time disabling of the PyKX allocator during a conversion. See [here](../help/issues.md#known-issues) for details.
31
74
- Fixed an issue when converting dataframes with embeddings arrays.
- Addition of `__array__` method to Atom classes. Enables `np.asarray` to created typed arrays.
91
+
- Addition of `__array__` method to Atom classes. Enables `np.asarray` to create typed arrays.
49
92
50
-
==="Behaviour prior to change"
93
+
==="Behavior prior to change"
51
94
52
95
```python
53
96
>>> np.asarray(kx.FloatAtom(3.65)).dtype
@@ -58,7 +101,7 @@
58
101
dtype('O')
59
102
```
60
103
61
-
==="Behaviour post change"
104
+
==="Behavior post change"
62
105
63
106
```python
64
107
>>> np.asarray(kx.FloatAtom(3.65)).dtype
@@ -71,7 +114,7 @@
71
114
72
115
- Fixed the returned type of an `exec` query with a single renamed column.
73
116
74
-
==="Behaviour prior to change"
117
+
==="Behavior prior to change"
75
118
76
119
```python
77
120
>>>type(kx.q.qsql.exec(qtab, {'symcol': 'col1'}))
@@ -80,7 +123,7 @@
80
123
pykx.wrappers.SymbolVector
81
124
```
82
125
83
-
==="Behaviour after change"
126
+
==="Behavior after change"
84
127
85
128
```python
86
129
>>>type(kx.q.qsql.exec(qtab, {'symcol': 'col1'}))
@@ -89,6 +132,10 @@
89
132
pykx.wrappers.Dictionary
90
133
```
91
134
135
+
### Deprecations & Removals
136
+
137
+
- Creating more than one `DB` instance without specifying `overwrite=True`
138
+
92
139
## PyKX 3.1.4
93
140
94
141
#### Release Date
@@ -379,8 +426,8 @@
379
426
│ └── time
380
427
```
381
428
382
-
- Fixed behaviourfor`PartitionedTable.copy_column()` operation on anymap columns. When copying `anymap` columns, the `#` and `##` files were not copied. Now all correct copying procedures are applied.
383
-
- Fixed behaviourfor`PartitionedTable.delete_column()` operation on anymap columns. When deleting `anymap` columns, the `#` and `##` files were left in. All relevant files are now deleted.
429
+
- Fixed behaviorfor`PartitionedTable.copy_column()` operation on anymap columns. When copying `anymap` columns, the `#` and `##` files were not copied. Now all correct copying procedures are applied.
430
+
- Fixed behaviorfor`PartitionedTable.delete_column()` operation on anymap columns. When deleting `anymap` columns, the `#` and `##` files were left in. All relevant files are now deleted.
384
431
- Fix creation of `ParseTree` objects from`QueryPhrase`or`Column` objects.
385
432
- Fix or operator `|`for`Column | ParseTree` use cases.
386
433
- Fixed an issue around the installation process when users attempted to set unlicensed mode after PyKX failed to load with a kdb+license.
|`labels` keyword for `rename` method |`mapper`| 2.5.0 | 3.1.0 |
@@ -20,6 +21,22 @@ A list of deprecated behaviors and the version in which they were removed.
20
21
|`PYKX_ENABLE_PANDAS_API`|| 3.0.0 | 3.0.0 |
21
22
|`.pd(raw_guids)`|| 2.5.0 | 2.5.0 |
22
23
24
+
## PyKX 3.1.5
25
+
26
+
Release Date: 2025-10-21
27
+
28
+
### Fixes and Improvements
29
+
30
+
- Users will be warned when they attempt to create more than one `DB` object.
31
+
32
+
```python
33
+
>>>import pykx as kx
34
+
>>> db = kx.DB(path="tmp/db1")
35
+
>>> db2 = kx.DB(path="tmp/db2")
36
+
PyKXWarning: Only one DBobject exists at a time within a process. Use overwrite=True to overwrite your existing DBobject. This warning will error in future releases.
Copy file name to clipboardExpand all lines: docs/release-notes/underq-changelog.md
+18-18Lines changed: 18 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
26
26
27
27
- Resolved `object has no attribute 't'` error for certain conversions
28
28
29
-
=== "Behaviour prior to change"
29
+
=== "Behavior prior to change"
30
30
31
31
```python
32
32
q).pykx.setdefault (),"k";
@@ -39,7 +39,7 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
39
39
":"~first a0:string x0;
40
40
```
41
41
42
-
=== "Behaviour post change"
42
+
=== "Behavior post change"
43
43
44
44
```python
45
45
q).pykx.setdefault (),"k";
@@ -137,14 +137,14 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
137
137
138
138
- Using `.pykx.toq`/`.pykx.toq0` now return the q representation of an object when passed a wrapped type conversion object
139
139
140
-
=== "Behaviour prior to change"
140
+
=== "Behavior prior to change"
141
141
142
142
```q
143
143
q).pykx.toq .pykx.topd ([] a:1 2 3)
144
144
enlist[`..pandas;;][...
145
145
```
146
146
147
-
=== "Behaviour post change"
147
+
=== "Behavior post change"
148
148
149
149
```q
150
150
q).pykx.toq .pykx.topd[([] a:1 2 3)]
@@ -157,14 +157,14 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
157
157
158
158
- When using `.pykx.toq`/`.pykx.toq0`, passing compositions such as `any` now returns the data as the appropriate object
159
159
160
-
=== "Behaviour prior to change"
160
+
=== "Behavior prior to change"
161
161
162
162
```q
163
163
q).pykx.toq any
164
164
'Expected foreign object for call to .pykx.toq
165
165
```
166
166
167
-
=== "Behaviour post change"
167
+
=== "Behavior post change"
168
168
169
169
```q
170
170
q).pykx.toq any
@@ -173,14 +173,14 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
173
173
174
174
- When failing to find a file loaded with `.pykx.loadPy` the name of the file which was loaded is now included in the error message
175
175
176
-
=== "Behaviour prior to change"
176
+
=== "Behavior prior to change"
177
177
178
178
```q
179
179
q).pykx.loadPy "file.py"
180
180
'FileNotFoundError(2, 'No such file or directory')
181
181
```
182
182
183
-
=== "Behaviour post change"
183
+
=== "Behavior post change"
184
184
185
185
```q
186
186
q).pykx.loadPy "file.py"
@@ -233,7 +233,7 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
233
233
234
234
### Fixes and Improvements
235
235
236
-
- Addition of function `.pykx.toq0` to support conversion of Python strings to q strings rather than q symbols as is the default behaviour
236
+
- Addition of function `.pykx.toq0` to support conversion of Python strings to q strings rather than q symbols as is the default behavior
237
237
238
238
```q
239
239
q)pystr:.pykx.eval["\"test\""]
@@ -245,22 +245,22 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
245
245
246
246
- Fix for `install_into_QHOME` with `overwrite_embedpy=True`. Previously loading PyKX through use of `p)` would fail.
247
247
248
-
=== "Behaviour prior to change"
248
+
=== "Behavior prior to change"
249
249
250
250
```q
251
251
q)p)print(1+1)
252
252
'pykx.q. OS reports: No such file or directory
253
253
[3] /home/user/q/p.k:1: \l pykx.q
254
254
```
255
255
256
-
=== "Behaviour post change"
256
+
=== "Behavior post change"
257
257
258
258
```q
259
259
q)p)print(1+1)
260
260
2
261
261
```
262
262
263
-
- Fix to minor memory leak when accessing attributes or retrieving global variables from Python objects. The following operations would lead to this behaviour
263
+
- Fix to minor memory leak when accessing attributes or retrieving global variables from Python objects. The following operations would lead to this behavior
264
264
265
265
```q
266
266
q)np:.pykx.import[`numpy]
@@ -273,7 +273,7 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
273
273
274
274
- When loading on Linux loading of `qlog` no longer loads the logging functionality into the `.pykx` namespace and instead loads it to the `.com_kx_log` namespace as expected under default conditions.
275
275
276
-
=== "Behaviour prior to change"
276
+
=== "Behavior prior to change"
277
277
278
278
```q
279
279
q)@[{get x;1b};`.pykx.configure;0b]
@@ -282,7 +282,7 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
282
282
0b
283
283
```
284
284
285
-
=== "Behaviour post change"
285
+
=== "Behavior post change"
286
286
287
287
```q
288
288
q)@[{get x;1b};`.pykx.configure;0b]
@@ -311,7 +311,7 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
311
311
312
312
- Previously PyKX conversions of generic lists (type 0h) would convert this data to it's `raw` representation rather than it's `python` representation as documented. This had the effect of restricting the usability of some types within PyKX under q in non-trivial use-cases. With the `2.5.2` changes to more accurately represent `raw` data at depth this became more obvious as an issue.
313
313
314
-
=== "Behaviour prior to change"
314
+
=== "Behavior prior to change"
315
315
316
316
```q
317
317
q).pykx.version[]
@@ -320,7 +320,7 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
320
320
[b'test', None, 49577290277400616]
321
321
```
322
322
323
-
=== "Behaviour post change"
323
+
=== "Behavior post change"
324
324
325
325
```q
326
326
q).pykx.print .pykx.eval["lambda x:x"]
@@ -586,7 +586,7 @@ This changelog provides updates from PyKX 2.0.0 and above, for information relat
586
586
587
587
- Update to default conversion logic for q objects passed to PyKX functions to more closely match embedPy based conversion expectations.For version <=2.0 conversions of KX lists would produce N Dimensional Numpy arrays of singular type. This results in issues when applying to many analytic libraries which rely on lists of lists rather than singular N Dimensional arrays. Additionally q tables and keyed tables would be converted to Numpy recarrays, these are now converted to Pandas DataFrames. To maintain previous behavior please set the following environment variable `PYKX_DEFAULT_CONVERSION="np"`.
0 commit comments