Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions LICENSE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -218,8 +218,8 @@ Software License for q.so

KX Confidential

Version Number: 1.0
Date Last Revised: April 2023
Version Number: 1.1
Date Last Revised: June 2026

Software License Agreement for use of q.so (“Agreement”)

Expand All @@ -231,7 +231,7 @@ This Agreement is made between KX Systems, Inc. (“KX” or “we”) and the E

 1. LICENSE GRANTS

1.1 Grant of License. KX hereby grants End User a non-transferable, non-exclusive license, without right of sublicense, to install and use the Software solely for the purpose of compiling and running the PyKX software made available by KX under separate licensing terms. End User will not attempt to circumvent any restrictions imposed on the Software or use the Software for any purpose other than stated above. If End User is using the PyKX software under the terms of a commercial licence from KX, the End User must obtain a separate licence from KX for the use of the Software.
1.1 Grant of License. KX hereby grants End User a non-transferable, non-exclusive license, without right of sublicense, to install and use the Software solely for the purpose of compiling and running the PyKX or KDB-X software made available by KX under separate licensing terms. End User will not attempt to circumvent any restrictions imposed on the Software or use the Software for any purpose other than stated above. If End User is using the PyKX or KDB-X software under the terms of a commercial licence from KX, the End User must obtain a separate licence from KX for the use of the Software.

1.2 Software Use Restrictions. End User may not: (a) modify any part of the Software or create derivative works thereof, (b) sell, lease, license or distribute the Software to any third party, (c) attempt to decompile, disassemble or reverse engineer the Software, (d) copy the Software, except for purposes of installing and executing it within the limitations set out at clause 1.1, (e) use or attempt to use the Software in any way that is unlawful or fraudulent or has any unlawful or fraudulent purpose or effect, (f) use or attempt to use the Software in any way that would breach the license granted herein.

Expand Down
36 changes: 9 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Then install the latest version of PyKX with the following command:
pip install pykx
```

To install a specific version of PyKX run the following command replacing <INSERT_VERSION> with a specific released semver version of the interface
To install a specific version of PyKX run the following command replacing `<INSERT_VERSION>` with a specific released semver version of the interface

```bash
pip install pykx==<INSERT_VERSION>
Expand All @@ -55,45 +55,27 @@ pip install pykx==<INSERT_VERSION>

### PyKX License access and enablement

Installation of PyKX via pip provides users with access to the library with limited functional scope, full details of these limitations can be found [here](docs/user-guide/advanced/modes.md). To access the full functionality of PyKX you must first download and install a kdb+ license, this can be achieved either through use of a personal evaluation license or receipt of a commercial license.
Installation of PyKX via pip provides users with access to the library with limited functional scope, full details of these limitations can be found [here](docs/user-guide/advanced/modes.md). To access the full functionality of PyKX you must first download and install a license.

#### Personal Evaluation License
If you do not have a license go to the [KX Developer Center](https://developer.kx.com/products/kdb-x/install) to obtain a KDB-X license.
You will need to update to KDB-X Python `pykx>=4.0.0` to use the provided license.

The following steps outline the process by which a user can gain access to an install a kdb Insights license which provides access to PyKX

1. Visit https://kx.com/kdb-insights-sdk-personal-edition-download/ and fill in the attached form following the instructions provided.
2. On receipt of an email from KX providing access to your license download this file and save to a secure location on your computer.
3. Set an environment variable on your computer pointing to the folder containing the license file (instructions for setting environment variables on PyKX supported operating systems can be found [here](https://chlee.co/how-to-setup-environment-variables-for-windows-mac-and-linux/).
* Variable Name: `QLIC`
* Variable Value: `/user/path/to/folder`

#### Commercial Evaluation License

The following steps outline the process by which a user can gain access to an install a kdb Insights license which provides access to PyKX

1. Contact you KX sales representative or sales@kx.com requesting a trial license for PyKX evaluation. Alternately apply through https://kx.com/book-demo.
2. On receipt of an email from KX providing access to your license download this file and save to a secure location on your computer.
3. Set an environment variable on your computer pointing to the folder containing the license file (instructions for setting environment variables on PyKX supported operating systems can be found [here](https://chlee.co/how-to-setup-environment-variables-for-windows-mac-and-linux/).
* Variable Name: `QLIC`
* Variable Value: `/user/path/to/folder`

__Note:__ PyKX will not operate with a vanilla or legacy kdb+ license which does not have access to specific feature flags embedded within the license. In the absence of a license with appropriate feature flags PyKX will fail to initialise with full feature functionality.
Full instructions on license installation are covered on the [Installing page](docs/getting-started/installing.md).

### Supported Environments

KX only officially supports versions of PyKX built by KX, i.e. versions of PyKX installed from wheel files. Support for user-built installations of PyKX (e.g. built from the source distribution) is only provided on a best-effort basis. Currently, PyKX provides wheels for the following environments:

- Linux (`manylinux_2_17_x86_64`) with CPython 3.8-3.11
- macOS (`macosx_10_10_x86_64`) with CPython 3.8-3.11
- Windows (`win_amd64`) with CPython 3.8-3.11
- Linux (`manylinux2014_x86_64`, `manylinux2014_aarch64`) with CPython 3.9-3.14
- macOS (`macosx_10_15_x86_64`, `macosx_10_15_arm64`) with CPython 3.9-3.14
- Windows (`win_amd64`) with CPython 3.9-3.14

### Dependencies

#### Python Dependencies

PyKX depends on the following third-party Python packages:

- `pandas>=1.2, <2.0; python_version=='3.8'`
- `pandas>=1.2, <3.0; python_version>'3.8'`
- `numpy>=1.22; python_version<'3.11'`
- `numpy>=1.23; python_version=='3.11'`
Expand Down Expand Up @@ -169,7 +151,7 @@ cd pykx
pip3 install -U '.[all]'
```

To run PyKX in licensed mode ensure to follow the steps to receive a [Personal Evaluation License](https://code.kx.com/pykx/getting-started/installing.html#personal-evaluation-license)
To run in licensed mode see [here](docs/getting-started/installing.md).

Now you can run/test PyKX:

Expand Down
1 change: 0 additions & 1 deletion conda-recipe/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
python:
- 3.8
- 3.9
- 3.10
- 3.11
Expand Down
8 changes: 2 additions & 6 deletions conda-recipe/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ requirements:
- numpy==2.0.* # [py==311]
- numpy==2.0.* # [py==310]
- numpy==2.0.* # [py==39]
- numpy==1.22.* # [py==38]
- numpy==1.20.* # [py==37]
- tomli>=2.0.1
- wheel>=0.36
- sysroot_linux-64 ==2.17 # [linux and py<314]
Expand All @@ -37,12 +35,10 @@ requirements:

run:
- python
- numpy>=1.20 # [py==37]
- numpy>=1.22 # [py>37 , py<314]
- numpy>=1.22 # [py>38 , py<314]
- numpy>=2.3.0 # [py==314]
- pandas>=1.2, <3.0 # [py>38 , py<314]
- pandas>=1.2 , <3.0 # [py>38 , py<314]
- pandas>=2.3.3, <3.0 # [py==314]
- pandas<2.0 # [py==38]
- pyarrow>=3.0.0
- pytz>=2022.1
- toml>=0.10.2
Expand Down
11 changes: 0 additions & 11 deletions custom_theme/main.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,4 @@
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-PG938LS');</script>
<!-- End Google Tag Manager -->
<!-- Delighted Survey tool -->
<script type="text/javascript">
!function(e,t,r,n){if(!e[n]){for(var a=e[n]=[],i=["survey","reset","config","init","set","get","event","identify","track","page","screen","group","alias"],s=0;s<i.length;s++){var c=i[s];a[c]=a[c]||function(e){return function(){var t=Array.prototype.slice.call(arguments);a.push([e,t])}}(c)}a.SNIPPET_VERSION="1.0.1";var o=t.createElement("script");o.type="text/javascript",o.async=!0,o.src="https://d2yyd1h5u9mauk.cloudfront.net/integrations/web/v1/library/"+r+"/"+n+".js";var p=t.getElementsByTagName("script")[0];p.parentNode.insertBefore(o,p)}}(window,document,"QKBtsIp633c7g2I2","delightedThumbsP");

delightedThumbsP.survey({
properties: { // extra context (optional)
product: "PyKX"
}
});
</script>
<!-- End Delighted Survey tool -->
{% endblock %}
37 changes: 14 additions & 23 deletions custom_theme/partials/header.html.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@
var currVersion = '{{ config.curr_docs_version }}'
</script>
<style>
/* mkdocs-material 9.7.6 no longer sets position:relative on
.md-version, so the absolutely-positioned list anchored to a
wide ancestor and the old "margin-top: 20%" hack dropped it
into the page. Re-anchor it directly under the version button. */
.md-version { position: relative; }
.md-version:focus-within .md-version__list, .md-version:hover .md-version__list {
max-height: 6rem;
opacity: 1;
Expand All @@ -33,7 +38,7 @@
</style>
<div class="md-version">
<button class="md-version__current" aria-label="Select version">{{ config.curr_docs_version }}</button>
<ul class="md-version__list" style="margin-top: 20%;">
<ul class="md-version__list" style="margin-top: 2.2rem;">
<div id="versionList"></div>
</ul>
</div>
Expand Down Expand Up @@ -85,11 +90,14 @@
</div>
</div>
{% endif %}
{% if "search" in config["plugins"] %}
<label class="md-header__button md-icon" for="__search">
{% include ".icons/material/magnify.svg" %}
</label>
{% include "partials/search.html" %}
{% if "material/search" in config.plugins %}
{% set search = config.plugins["material/search"] | attr("config") %}
{% if search.enabled %}
<label class="md-header__button md-icon" for="__search">
{% include ".icons/material/magnify.svg" %}
</label>
{% include "partials/search.html" %}
{% endif %}
{% endif %}
{% if config.repo_url %}
<div class="md-header__source">
Expand All @@ -108,23 +116,6 @@
.md-typeset span{display:none;}
}
/* Button used to open the chat form - fixed at the bottom of the page */
.open-button {
background-color: var(--md-typeset-a-color);
border: none;
border-radius: 10px;
bottom: 23px;
box-sizing: border-box;
color: var(--md-default-bg-color);
cursor: pointer;
font-size: 13px;
opacity: 0.8;
padding: 10px 10px;
position: fixed;
right: 28px;
width: 160px;
z-index: 3;
}
</style>
<body>
<button class="open-button md-typeset" onclick="window.location.href='https://kx.com/slack'"><span class="twemoji"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M256 32C114.6 32 0 125.1 0 240c0 47.6 19.9 91.2 52.9 126.3C38 405.7 7 439.1 6.5 439.5c-6.6 7-8.4 17.2-4.6 26S14.4 480 24 480c61.5 0 110-25.7 139.1-46.3C192 442.8 223.2 448 256 448c141.4 0 256-93.1 256-208S397.4 32 256 32zm0 368c-26.7 0-53.1-4.1-78.4-12.1l-22.7-7.2-19.5 13.8c-14.3 10.1-33.9 21.4-57.5 29 7.3-12.1 14.4-25.7 19.9-40.2l10.6-28.1-20.6-21.8C69.7 314.1 48 282.2 48 240c0-88.2 93.3-160 208-160s208 71.8 208 160-93.3 160-208 160z"></path></svg></span>&nbsp;Ask a question</button>
</body>
2 changes: 1 addition & 1 deletion docs/examples/interface-overview.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,7 @@
"source": [
"### 3.5 Query external processes via IPC\n",
"\n",
"One of the most common usage patterns in organizations with access to data in kdb+/q is to query data from an external server process infrastructure. For the example below you need to [install q](https://kx.com/kdb-insights-sdk-personal-edition-download/).\n",
"One of the most common usage patterns in organizations with access to data in kdb+/q is to query data from an external server process infrastructure. For the example below you need to [install q](https://code.kx.com/q/).\n",
"\n",
"First, set up a q/kdb+ server. Set it on port 5050 and populate it with some data in the form of a table `tab`:"
]
Expand Down
Loading
Loading