pykx


Namepykx JSON
Version 3.0.0 PyPI version JSON
download
home_pagehttps://code.kx.com/pykx
SummaryAn interface between Python and q
upload_time2024-11-12 07:07:59
maintainerNone
docs_urlNone
authorKX
requires_python>=3.7
licenseThis work is dual licensed under "Apache 2.0" and the "Software License for q.so", users are required to abide by the terms of both licenses in their entirety. The terms of these licenses are included below *********************************************************************************** Apache 2.0 *********************************************************************************** Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. *************************************************************************** License Terms for q.so *************************************************************************** Software License for q.so KX Confidential Version Number: 1.0 Date Last Revised: April 2023 Software License Agreement for use of q.so (“Agreement”) CAREFULLY READ THE FOLLOWING TERMS AND CONDITIONS. BY DOWNLOADING OR USING THE SOFTWARE, YOU ACKNOWLEDGE AND AGREE TO BE BOUND BY THESE TERMS AND CONDITIONS, WHICH MAY BE UPDATED FROM TIME TO TIME. “END USER” OR “YOU” MEANS YOU, THE USER OF THE SOFTWARE. YOU WARRANT THAT THE IDENTIFICATION DETAILS AND INFORMATION THAT YOU PROVIDE TO US, INCLUDING BUT NOT LIMITED TO, YOUR NAME, EMAIL ADDRESS, LOCATION, TELEPHONE NUMBER AND INTENDED USE ARE TRUE AND CORRECT. YOU ACKNOWLEDGE AND AGREE THAT THIS AGREEMENT IS ENFORCEABLE AND LEGALLY BINDING. NO ACCESS OR USE OF THE SOFTWARE IS PERMITTED FROM THOSE COUNTRIES WHERE SUCH USE IS PROHIBITED BY TRADE CONTROL LAWS. This Agreement is made between KX Systems, Inc. (“KX” or “we”) and the End User for access and use of KX’s q.so software, any updates, new versions and/or any documentation provided to you by KX (jointly, the “Software”). You agree to use the Software subject to the terms and conditions set forth below which shall be subject to change from time to time. 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.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. In addition to the foregoing, End User shall not in the course of using the Software access, store, distribute or transmit any material that: (a) is unlawful, harmful, threatening, defamatory, obscene, infringing, harassing or racially or ethnically offensive; (b) facilitates illegal activity; (c) depicts sexually explicit images; (d) promotes unlawful violence; (e) is discriminatory based on race, gender, colour, religious belief, sexual orientation, disability; or (f) is otherwise illegal or causes damage or injury to any person or property, including any material which may: prevent, impair or otherwise adversely affect the operation of any computer software, hardware or network, any telecommunications service, equipment or network or any other service or device; prevent, impair or otherwise adversely affect access to or the operation of any programme or data, including the reliability of any programme or data (whether by re-arranging, altering or erasing the programme or data in whole or part or otherwise); or adversely affect the user experience, including worms, trojan horses, viruses and other similar things or devices. End User agrees that it is reasonable that KX shall have no liability of any kind in any circumstances to it or a third party for any breach of the foregoing. 1.3 Software Performance. End User shall not distribute or otherwise make available to any third party any report regarding the performance of the Software, Software benchmarks or any information from such a report. 1.4 Intellectual Property Ownership Rights. End User acknowledges and agrees that KX owns all rights, title and interest in and to the Software and in and to all of KX’s patents, trademarks, trade names, inventions, copyrights, know-how and trade secrets relating to its design, manufacture and operation, including all inventions, customizations, enhancements, improvements, updates, derivative works and other modifications and all related rights shall automatically vest in KX immediately upon creation. You will not register any trademark, patent or copyright which uses or references the Software. The use by End User of such proprietary rights is authorized only for the purposes set forth herein, and upon termination of this Agreement for any reason, such authorization will cease. End User acknowledges that the Software is proprietary and contains confidential and valuable trade secrets of KX. 2. SUPPORT. KX may at its discretion provide support to End User in relation to the Software. 3. FEES. The Software is licensed to End User without charge. 4. NO WARRANTY. THE SOFTWARE IS PROVIDED “AS IS.” KX EXPRESSLY DISCLAIMS AND NEGATES ALL WARRANTIES, WHETHER EXPRESSED, IMPLIED, STATUTORY OR OTHERWISE, AND SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF INTELLECTUAL PROPERTY OR OTHER VIOLATION OF RIGHTS. KX DOES NOT WARRANT THAT THE SOFTWARE WILL MEET END USER REQUIREMENTS OR THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE. 5. LIMITATION OF LIABILITY. WE DO NOT EXCLUDE OR LIMIT IN ANY WAY OUR LIABILITY TO END USER WHERE IT WOULD BE UNLAWFUL TO DO SO. SUBJECT TO THE FOREGOING SENTENCE, KX SHALL HAVE NO LIABILITY UNDER OR IN CONNECTION WITH THIS AGREEMENT UNDER ANY LEGAL OR EQUITABLE THEORY, INCLUDING BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY, NOR FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR OTHER SIMILAR DAMAGES, INCLUDING BUT NOT LIMITED TO DAMAGE TO REPUTATION, LOSS OF EARNINGS AND INJURY TO FEELINGS IN CONNECTION WITH OR ARISING OUT OF THIS AGREEMENT AND/OR THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF KX HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NEITHER IS KX LIABLE FOR ANY BUSINESS LOSSES. KX WILL HAVE NO LIABILITY TO END USER FOR ANY LOSS OF PROFIT, LOSS OF BUSINESS, BUSINESS INTERRUPTION, OR LOSS OF BUSINESS OPPORTUNITY. 6. TERM AND TERMINATION OF AGREEMENT. This Agreement shall terminate immediately upon KX’s written notice to End User and KX may at its discretion suspend or terminate End User’s use of the Software at any time. Upon termination of this Agreement or at any time upon KX’s written request, End User shall permanently delete or destroy all copies of the Software in its possession. 7. GOVERNING LAW AND JURISDICTION. This Agreement and all related documents and all matters arising out of or relating to this Agreement whether in contract, tort, or statute shall be governed by and construed in accordance with the laws of the State of New York, United States of America, except as to copyright matters covered by U.S. Federal Law. Each party irrevocably and unconditionally agrees to the exclusive jurisdiction of the State of New York, and it will not commence any action, litigation, or proceeding of any kind whatsoever against any other party in any way arising from or relating to this Agreement and all contemplated transactions, including, but not limited to, contract, equity, tort, fraud, and statutory claims, in any forum other than the State of New York (except as permitted by KX as detailed below). End User hereby waives any objections to venue in those courts. Each party agrees that a final judgment in any such action, litigation, or proceeding is conclusive and may be enforced in other jurisdictions by suit on the judgment or in any other manner provided by law. Should any provision of this Agreement be declared unenforceable in any jurisdiction, then such provision shall be deemed to be severed from this Agreement and shall not affect the remainder hereof. Furthermore, with respect to a violation by End User of Section 1 (License Grant), KX will have the right at its discretion to seek remedies in courts of competent jurisdiction within any applicable territory. The United Nations Convention on Contracts for the International Sale of Goods and the Uniform Computer information Transactions Act, as currently enacted by any jurisdiction or as may be codified or amended from time to time by any jurisdiction, do not apply to this Agreement. 8. TRADE CONTROL. You acknowledge that Software (including its related technical data and services) may be deemed dual use and is subject to, without limitation, the export control laws and regulations of the United Kingdom, European Union, and United States of America (“Trade Control Laws”). You agree to fully comply with those Trade Control Laws in connection with Software including where applicable assisting in obtaining any necessary governmental approvals, licenses and undertakings. You will not, and will not allow any third party, to use, export, re-export or transfer, directly or indirectly, of any part of the Software in violation of any Trade Control Laws or to a destination subject to US, UN, EU, UK or Organisation for Security and Cooperation in Europe (OSCE) embargo, or to any individual or entity listed on the denied parties’ lists. A statement on the Export Controls applicable to the Software, is available at the following website: Export Statement – KX. Any dispute in relation to this clause 8 shall be governed in accordance with clause 7 unless Trade Control Laws determine otherwise. You acknowledge that we may not be permitted (and, in such an event, shall be excused from any requirement) to deliver or grant access to the Software, or perform support or services, due to an embargo, trade sanction or other comparable restrictive measure. 9. GENERAL. This is the only Agreement between End User and KX relating to the Software. The provisions of section 1.4 (“Intellectual Property Ownership Rights”), section 4 (“No Warranty”), section 5 (“Limitation of Liability”), section 6 (“Term and Termination”), section 9 (“General”) shall survive the termination of this Agreement for any reason. All other rights and obligations of the parties shall cease upon termination of this Agreement. This Agreement constitutes the sole and entire agreement of the parties with respect to the subject matter of this Agreement and supersedes all prior and contemporaneous understandings, agreements, and representations and warranties, both written and oral, with respect to such subject matter. You agree that you shall have no remedies in respect of any statement, representation, assurance or warranty (whether made innocently or negligently) that is not set out in this Agreement. You agree that you shall have no claim for innocent or negligent misrepresentation or negligent misstatement based on any statement in this Agreement. Except for the limited rights and licenses expressly granted under this Agreement, nothing in this Agreement grants, by implication, waiver, estoppel, or otherwise, to you or any third party. If we fail to insist that you perform any of your obligations under this Agreement, or if we do not enforce our rights against you, or if we delay in doing so, that will not mean that we have waived our rights against you and will not mean that you do not have to comply with those obligations. If we do waive a default by you, we will only do so in writing and that will not mean that we will automatically waive any later default by you.
keywords pykx q kx database ffi
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # PyKX

## Introduction

PyKX is a Python first interface to the worlds fastest time-series database kdb+ and it's underlying vector programming language q. PyKX takes a Python first approach to integrating q/kdb+ with Python following 10+ years of integrations between these two languages. Fundamentally it provides users with the ability to efficiently query and analyze huge amounts of in-memory and on-disk time-series data.

This interface exposes q as a domain-specific language (DSL) embedded within Python, taking the approach that q should principally be used for data processing and management of databases. This approach does not diminish the ability for users familiar with q or those wishing to learn more about it from making the most of advanced analytics and database management functionality but rather empowers those who want to make use of the power of kdb+/q who lack this expertise to get up and running fast.

PyKX supports three principal use cases:

- It allows users to store, query, manipulate and use q objects within a Python process.
- It allows users to query external q processes via an IPC interface.
- It allows users to embed Python functionality within a native q session using it's under q functionality.

Users wishing to install the library can do so following the instructions [here](https://code.kx.com/pykx/getting-started/installing.html).

Once you have the library installed you can get up and running with PyKX following the quickstart guide [here](https://code.kx.com/pykx/getting-started/quickstart.html).

### What is q/kdb+?

Mentioned throughout the documentation q and kdb+ are respectively a highly efficient vector programming language and highly optimised time-series database used to analyse streaming, real-time and historical data. Used throughout the financial sector for 25+ years this technology has been a cornerstone of modern financial markets providing a storage mechanism for historical market data and tooling to make the analysis of this vast data performant.

Kdb+ is a high-performance column-oriented database designed to process and store large amounts of data. Commonly accessed data is available in RAM which makes it faster to access than disk stored data. Operating with temporal data types as a first class entity the use of q and it's query language qsql against this database creates a highly performant time-series analysis tool.

q is the vector programming language which is used for all interactions with kdb+ databases and which is known both for its speed and expressiveness.

For more information on using q/kdb+ and getting started with see the following links:

- [An introduction to q/kdb+](https://code.kx.com/q/learn/tour/)
- [Tutorial videos introducing kdb+/q](https://code.kx.com/q/learn/q-for-all/)

## Installation

### Installing PyKX using `pip`

Ensure you have a recent version of pip:

```bash
pip install --upgrade pip
```

Then install the latest version of PyKX with the following command:

```bash
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

```bash
pip install pykx==<INSERT_VERSION>
```

**Warning:** Python packages should typically be installed in a virtual environment. [This can be done with the venv package from the standard library](https://docs.python.org/3/library/venv.html).

### 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.

#### Personal 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. Visit https://kx.com/kdb-insights-personal-edition-license-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.

### 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

### Dependencies

#### Python Dependencies

PyKX depends on the following third-party Python packages:

- `pandas>=1.2, < 2.0; python_version=='3.8'`
- `pandas>=1.2, < 2.2.0; python_version>'3.8'`
- `numpy~=1.22, <2.0; python_version<'3.11'`
- `numpy~=1.23, <2.0; python_version=='3.11'`
- `numpy~=1.26, <2.0; python_version=='3.12'`
- `pytz>=2022.1`
- `toml~=0.10.2`
- `dill>=0.2.0`

They are installed automatically by `pip` when PyKX is installed.

PyKX also has an optional Python dependency of `pyarrow>=3.0.0`, which can be included by installing the `pyarrow` extra, e.g. `pip install pykx[pyarrow]`

When using PyKX with KX Dashboards users will be required to install `ast2json~=0.3` this can be installed using the `dashboards` extra, e.g. `pip install pykx[dashboards]`

When using PyKX Streaming users may require the ability to stop processes initialized in a now unavailable process to facilitate this PyKX can make use of `psutil` this can be installed using the `streaming` extra, e.g. `pip install pykx[streaming]`

When using Streamlit users will be required to install `streamlit~=1.28` this can be installed using the `streamlit` extra, e.g. `pip install pykx[streamlit]`

**Warning:** Trying to use the `pa` conversion methods of `pykx.K` objects or the `pykx.toq.from_arrow` method when PyArrow is not installed (or could not be imported without error) will raise a `pykx.PyArrowUnavailable` exception.

#### Optional Non-Python Dependencies

- `libssl` for TLS on [IPC connections](docs/api/ipc.md).
- `libpthread` on Linux/MacOS when using the `PYKX_THREADING` environment variable.

## Building from source

### Installing Dependencies

The full list of supported environments is detailed [here](https://code.kx.com/pykx/getting-started/installing.html#supported-environments). Installation of dependencies will vary on different platforms.

`apt` example:

```bash
apt-install python3 python3-venv build-essential python3-dev
```

`yum` example:

```bash
yum install python3 gcc gcc-c++ python3-devel.x86_64
```

Windows:

* [Python](https://www.python.org/downloads/windows/)
* [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/?q=build+tools).
* [dlfcn-win32](https://github.com/dlfcn-win32/dlfcn-win32). Can be installed using [Vcpkg](https://github.com/microsoft/vcpkg).

To install the above dependencies, you can run the `w64_install.ps1` script as an administrator:

```PowerShell
cd pykx
.\w64_install.ps1
```

### Building

Using a Python virtual environment is recommended:

```bash
python3 -m venv pykx-dev
source pykx-dev/bin/activate
```

Build and install PyKX:

```bash
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)

Now you can run/test PyKX:

```bash
(pykx-dev) /data/pykx$ python
Python 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pykx
>>> pykx.q('1+1')
pykx.LongAtom(pykx.q('2'))
```

### Testing

Contributions to the project must pass a linting check:

```bash
pflake8
```

Contributions to the project must include tests. To run tests:

```bash
export PATH="$PATH:/location/of/your/q/l64" # q must be on PATH for tests
export QHOME=/location/of/your/q #q needs QHOME available
python -m pytest -vvv -n 0 --no-cov --junitxml=report.xml
```

## PyKX Licenses

This work is dual licensed under [Apache 2.0](https://code.kx.com/pykx/license.html#apache-2-license) and the [Software License for q.so](https://code.kx.com/pykx/license.html#qso-license) and users are required to abide by the terms of both licenses in their entirety.

## Community Help

If you have any issues or questions you can post them to [community.kx.com](https://community.kx.com/). Also available on Stack Overflow are the tags [pykx](https://stackoverflow.com/questions/tagged/pykx) and [kdb](https://stackoverflow.com/questions/tagged/kdb).

## Customer Support

* Inquires or feedback: [`pykx@kx.com`](mailto:pykx@kx.com)
* Support for Licensed Subscribers: [support.kx.com](https://support.kx.com/support/home)

            

Raw data

            {
    "_id": null,
    "home_page": "https://code.kx.com/pykx",
    "name": "pykx",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "pykx, q, kx, database, ffi",
    "author": "KX",
    "author_email": "KX <pykx@kx.com>",
    "download_url": null,
    "platform": null,
    "description": "# PyKX\n\n## Introduction\n\nPyKX is a Python first interface to the worlds fastest time-series database kdb+ and it's underlying vector programming language q. PyKX takes a Python first approach to integrating q/kdb+ with Python following 10+ years of integrations between these two languages. Fundamentally it provides users with the ability to efficiently query and analyze huge amounts of in-memory and on-disk time-series data.\n\nThis interface exposes q as a domain-specific language (DSL) embedded within Python, taking the approach that q should principally be used for data processing and management of databases. This approach does not diminish the ability for users familiar with q or those wishing to learn more about it from making the most of advanced analytics and database management functionality but rather empowers those who want to make use of the power of kdb+/q who lack this expertise to get up and running fast.\n\nPyKX supports three principal use cases:\n\n- It allows users to store, query, manipulate and use q objects within a Python process.\n- It allows users to query external q processes via an IPC interface.\n- It allows users to embed Python functionality within a native q session using it's under q functionality.\n\nUsers wishing to install the library can do so following the instructions [here](https://code.kx.com/pykx/getting-started/installing.html).\n\nOnce you have the library installed you can get up and running with PyKX following the quickstart guide [here](https://code.kx.com/pykx/getting-started/quickstart.html).\n\n### What is q/kdb+?\n\nMentioned throughout the documentation q and kdb+ are respectively a highly efficient vector programming language and highly optimised time-series database used to analyse streaming, real-time and historical data. Used throughout the financial sector for 25+ years this technology has been a cornerstone of modern financial markets providing a storage mechanism for historical market data and tooling to make the analysis of this vast data performant.\n\nKdb+ is a high-performance column-oriented database designed to process and store large amounts of data. Commonly accessed data is available in RAM which makes it faster to access than disk stored data. Operating with temporal data types as a first class entity the use of q and it's query language qsql against this database creates a highly performant time-series analysis tool.\n\nq is the vector programming language which is used for all interactions with kdb+ databases and which is known both for its speed and expressiveness.\n\nFor more information on using q/kdb+ and getting started with see the following links:\n\n- [An introduction to q/kdb+](https://code.kx.com/q/learn/tour/)\n- [Tutorial videos introducing kdb+/q](https://code.kx.com/q/learn/q-for-all/)\n\n## Installation\n\n### Installing PyKX using `pip`\n\nEnsure you have a recent version of pip:\n\n```bash\npip install --upgrade pip\n```\n\nThen install the latest version of PyKX with the following command:\n\n```bash\npip install pykx\n```\n\nTo install a specific version of PyKX run the following command replacing <INSERT_VERSION> with a specific released semver version of the interface\n\n```bash\npip install pykx==<INSERT_VERSION>\n```\n\n**Warning:** Python packages should typically be installed in a virtual environment. [This can be done with the venv package from the standard library](https://docs.python.org/3/library/venv.html).\n\n### PyKX License access and enablement\n\nInstallation 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.\n\n#### Personal Evaluation License\n\nThe following steps outline the process by which a user can gain access to an install a kdb Insights license which provides access to PyKX\n\n1. Visit https://kx.com/kdb-insights-personal-edition-license-download/ and fill in the attached form following the instructions provided.\n2. On receipt of an email from KX providing access to your license download this file and save to a secure location on your computer.\n3. 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/).\n\t* Variable Name: `QLIC`\n\t* Variable Value: `/user/path/to/folder`\n\n#### Commercial Evaluation License\n\nThe following steps outline the process by which a user can gain access to an install a kdb Insights license which provides access to PyKX\n\n1. Contact you KX sales representative or sales@kx.com requesting a trial license for PyKX evaluation. Alternately apply through https://kx.com/book-demo.\n2. On receipt of an email from KX providing access to your license download this file and save to a secure location on your computer.\n3. 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/).\n\t* Variable Name: `QLIC`\n\t* Variable Value: `/user/path/to/folder`\n\n__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.\n\n### Supported Environments\n\nKX 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:\n\n- Linux (`manylinux_2_17_x86_64`) with CPython 3.8-3.11\n- macOS (`macosx_10_10_x86_64`) with CPython 3.8-3.11\n- Windows (`win_amd64`) with CPython 3.8-3.11\n\n### Dependencies\n\n#### Python Dependencies\n\nPyKX depends on the following third-party Python packages:\n\n- `pandas>=1.2, < 2.0; python_version=='3.8'`\n- `pandas>=1.2, < 2.2.0; python_version>'3.8'`\n- `numpy~=1.22, <2.0; python_version<'3.11'`\n- `numpy~=1.23, <2.0; python_version=='3.11'`\n- `numpy~=1.26, <2.0; python_version=='3.12'`\n- `pytz>=2022.1`\n- `toml~=0.10.2`\n- `dill>=0.2.0`\n\nThey are installed automatically by `pip` when PyKX is installed.\n\nPyKX also has an optional Python dependency of `pyarrow>=3.0.0`, which can be included by installing the `pyarrow` extra, e.g. `pip install pykx[pyarrow]`\n\nWhen using PyKX with KX Dashboards users will be required to install `ast2json~=0.3` this can be installed using the `dashboards` extra, e.g. `pip install pykx[dashboards]`\n\nWhen using PyKX Streaming users may require the ability to stop processes initialized in a now unavailable process to facilitate this PyKX can make use of `psutil` this can be installed using the `streaming` extra, e.g. `pip install pykx[streaming]`\n\nWhen using Streamlit users will be required to install `streamlit~=1.28` this can be installed using the `streamlit` extra, e.g. `pip install pykx[streamlit]`\n\n**Warning:** Trying to use the `pa` conversion methods of `pykx.K` objects or the `pykx.toq.from_arrow` method when PyArrow is not installed (or could not be imported without error) will raise a `pykx.PyArrowUnavailable` exception.\n\n#### Optional Non-Python Dependencies\n\n- `libssl` for TLS on [IPC connections](docs/api/ipc.md).\n- `libpthread` on Linux/MacOS when using the `PYKX_THREADING` environment variable.\n\n## Building from source\n\n### Installing Dependencies\n\nThe full list of supported environments is detailed [here](https://code.kx.com/pykx/getting-started/installing.html#supported-environments). Installation of dependencies will vary on different platforms.\n\n`apt` example:\n\n```bash\napt-install python3 python3-venv build-essential python3-dev\n```\n\n`yum` example:\n\n```bash\nyum install python3 gcc gcc-c++ python3-devel.x86_64\n```\n\nWindows:\n\n* [Python](https://www.python.org/downloads/windows/)\n* [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/?q=build+tools).\n* [dlfcn-win32](https://github.com/dlfcn-win32/dlfcn-win32). Can be installed using [Vcpkg](https://github.com/microsoft/vcpkg).\n\nTo install the above dependencies, you can run the `w64_install.ps1` script as an administrator:\n\n```PowerShell\ncd pykx\n.\\w64_install.ps1\n```\n\n### Building\n\nUsing a Python virtual environment is recommended:\n\n```bash\npython3 -m venv pykx-dev\nsource pykx-dev/bin/activate\n```\n\nBuild and install PyKX:\n\n```bash\ncd pykx\npip3 install -U '.[all]'\n```\n\nTo 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)\n\nNow you can run/test PyKX:\n\n```bash\n(pykx-dev) /data/pykx$ python\nPython 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0] on linux\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n>>> import pykx\n>>> pykx.q('1+1')\npykx.LongAtom(pykx.q('2'))\n```\n\n### Testing\n\nContributions to the project must pass a linting check:\n\n```bash\npflake8\n```\n\nContributions to the project must include tests. To run tests:\n\n```bash\nexport PATH=\"$PATH:/location/of/your/q/l64\" # q must be on PATH for tests\nexport QHOME=/location/of/your/q #q needs QHOME available\npython -m pytest -vvv -n 0 --no-cov --junitxml=report.xml\n```\n\n## PyKX Licenses\n\nThis work is dual licensed under [Apache 2.0](https://code.kx.com/pykx/license.html#apache-2-license) and the [Software License for q.so](https://code.kx.com/pykx/license.html#qso-license) and users are required to abide by the terms of both licenses in their entirety.\n\n## Community Help\n\nIf you have any issues or questions you can post them to [community.kx.com](https://community.kx.com/). Also available on Stack Overflow are the tags [pykx](https://stackoverflow.com/questions/tagged/pykx) and [kdb](https://stackoverflow.com/questions/tagged/kdb).\n\n## Customer Support\n\n* Inquires or feedback: [`pykx@kx.com`](mailto:pykx@kx.com)\n* Support for Licensed Subscribers: [support.kx.com](https://support.kx.com/support/home)\n",
    "bugtrack_url": null,
    "license": "This work is dual licensed under \"Apache 2.0\" and the \"Software License for q.so\", users are required to abide by the terms of both licenses in their entirety. The terms of these licenses are included below  *********************************************************************************** Apache 2.0 ***********************************************************************************  Apache License Version 2.0, January 2004 http://www.apache.org/licenses/  TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION  1. Definitions.  \"License\" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.  \"Licensor\" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.  \"Legal Entity\" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, \"control\" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.  \"You\" (or \"Your\") shall mean an individual or Legal Entity exercising permissions granted by this License.  \"Source\" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.  \"Object\" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.  \"Work\" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).  \"Derivative Works\" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.  \"Contribution\" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, \"submitted\" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as \"Not a Contribution.\"  \"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.  2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.  3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.  4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:  (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and  (b) You must cause any modified files to carry prominent notices stating that You changed the files; and  (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and  (d) If the Work includes a \"NOTICE\" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.  You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.  5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.  6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.  7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.  8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.  9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.  END OF TERMS AND CONDITIONS  APPENDIX: How to apply the Apache License to your work.  To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets \"[]\" replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same \"printed page\" as the copyright notice for easier identification within third-party archives.  Copyright [yyyy] [name of copyright owner]  Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at  http://www.apache.org/licenses/LICENSE-2.0  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.   *************************************************************************** License Terms for q.so ***************************************************************************  Software License for q.so  KX Confidential  Version Number: 1.0 Date Last Revised: April 2023  Software License Agreement for use of q.so (\u201cAgreement\u201d)  CAREFULLY READ THE FOLLOWING TERMS AND CONDITIONS. BY DOWNLOADING OR USING THE SOFTWARE, YOU ACKNOWLEDGE AND AGREE TO BE BOUND BY THESE TERMS AND CONDITIONS, WHICH MAY BE UPDATED FROM TIME TO TIME. \u201cEND USER\u201d OR \u201cYOU\u201d MEANS YOU, THE USER OF THE SOFTWARE. YOU WARRANT THAT THE IDENTIFICATION DETAILS AND INFORMATION THAT YOU PROVIDE TO US, INCLUDING BUT NOT LIMITED TO, YOUR NAME, EMAIL ADDRESS, LOCATION, TELEPHONE NUMBER AND INTENDED USE ARE TRUE AND CORRECT. YOU ACKNOWLEDGE AND AGREE THAT THIS AGREEMENT IS ENFORCEABLE AND LEGALLY BINDING. NO ACCESS OR USE OF THE SOFTWARE IS PERMITTED FROM THOSE COUNTRIES WHERE SUCH USE IS PROHIBITED BY TRADE CONTROL LAWS.  This Agreement is made between KX Systems, Inc. (\u201cKX\u201d or \u201cwe\u201d) and the End User for access and use of KX\u2019s q.so software, any updates, new versions and/or any documentation provided to you by KX (jointly, the \u201cSoftware\u201d). You agree to use the Software subject to the terms and conditions set forth below which shall be subject to change from time to time.  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.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.  In addition to the foregoing, End User shall not in the course of using the Software access, store, distribute or transmit any material that:  (a) is unlawful, harmful, threatening, defamatory, obscene, infringing, harassing or racially or ethnically offensive; (b) facilitates illegal activity; (c) depicts sexually explicit images; (d) promotes unlawful violence; (e) is discriminatory based on race, gender, colour, religious belief, sexual orientation, disability; or (f) is otherwise illegal or causes damage or injury to any person or property, including any material which may: prevent, impair or otherwise adversely affect the operation of any computer software, hardware or network, any telecommunications service, equipment or network or any other service or device; prevent, impair or otherwise adversely affect access to or the operation of any programme or data, including the reliability of any programme or data (whether by re-arranging, altering or erasing the programme or data in whole or part or otherwise); or adversely affect the user experience, including worms, trojan horses, viruses and other similar things or devices. End User agrees that it is reasonable that KX shall have no liability of any kind in any circumstances to it or a third party for any breach of the foregoing.  1.3 Software Performance. End User shall not distribute or otherwise make available to any third party any report regarding the performance of the Software, Software benchmarks or any information from such a report.  1.4 Intellectual Property Ownership Rights. End User acknowledges and agrees that KX owns all rights, title and interest in and to the Software and in and to all of KX\u2019s patents, trademarks, trade names, inventions, copyrights, know-how and trade secrets relating to its design, manufacture and operation, including all inventions, customizations, enhancements, improvements, updates, derivative works and other modifications and all related rights shall automatically vest in KX immediately upon creation. You will not register any trademark, patent or copyright which uses or references the Software. The use by End User of such proprietary rights is authorized only for the purposes set forth herein, and upon termination of this Agreement for any reason, such authorization will cease. End User acknowledges that the Software is proprietary and contains confidential and valuable trade secrets of KX.  2. SUPPORT. KX may at its discretion provide support to End User in relation to the Software.  3. FEES. The Software is licensed to End User without charge.  4. NO WARRANTY. THE SOFTWARE IS PROVIDED \u201cAS IS.\u201d KX EXPRESSLY DISCLAIMS AND NEGATES ALL WARRANTIES, WHETHER EXPRESSED, IMPLIED, STATUTORY OR OTHERWISE, AND SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT OF INTELLECTUAL PROPERTY OR OTHER VIOLATION OF RIGHTS. KX DOES NOT WARRANT THAT THE SOFTWARE WILL MEET END USER REQUIREMENTS OR THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR FREE.  5. LIMITATION OF LIABILITY. WE DO NOT EXCLUDE OR LIMIT IN ANY WAY OUR LIABILITY TO END USER WHERE IT WOULD BE UNLAWFUL TO DO SO. SUBJECT TO THE FOREGOING SENTENCE, KX SHALL HAVE NO LIABILITY UNDER OR IN CONNECTION WITH THIS AGREEMENT UNDER ANY LEGAL OR EQUITABLE THEORY, INCLUDING BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY, NOR FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR OTHER SIMILAR DAMAGES, INCLUDING BUT NOT LIMITED TO DAMAGE TO REPUTATION, LOSS OF EARNINGS AND INJURY TO FEELINGS IN CONNECTION WITH OR ARISING OUT OF THIS AGREEMENT AND/OR THE USE OF OR INABILITY TO USE THE SOFTWARE, EVEN IF KX HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. NEITHER IS KX LIABLE FOR ANY BUSINESS LOSSES. KX WILL HAVE NO LIABILITY TO END USER FOR ANY LOSS OF PROFIT, LOSS OF BUSINESS, BUSINESS INTERRUPTION, OR LOSS OF BUSINESS OPPORTUNITY.  6. TERM AND TERMINATION OF AGREEMENT. This Agreement shall terminate immediately upon KX\u2019s written notice to End User and KX may at its discretion suspend or terminate End User\u2019s use of the Software at any time. Upon termination of this Agreement or at any time upon KX\u2019s written request, End User shall permanently delete or destroy all copies of the Software in its possession.  7. GOVERNING LAW AND JURISDICTION. This Agreement and all related documents and all matters arising out of or relating to this Agreement whether in contract, tort, or statute shall be governed by and construed in accordance with the laws of the State of New York, United States of America, except as to copyright matters covered by U.S. Federal Law. Each party irrevocably and unconditionally agrees to the exclusive jurisdiction of the State of New York, and it will not commence any action, litigation, or proceeding of any kind whatsoever against any other party in any way arising from or relating to this Agreement and all contemplated transactions, including, but not limited to, contract, equity, tort, fraud, and statutory claims, in any forum other than the State of New York (except as permitted by KX as detailed below). End User hereby waives any objections to venue in those courts. Each party agrees that a final judgment in any such action, litigation, or proceeding is conclusive and may be enforced in other jurisdictions by suit on the judgment or in any other manner provided by law. Should any provision of this Agreement be declared unenforceable in any jurisdiction, then such provision shall be deemed to be severed from this Agreement and shall not affect the remainder hereof. Furthermore, with respect to a violation by End User of Section 1 (License Grant), KX will have the right at its discretion to seek remedies in courts of competent jurisdiction within any applicable territory. The United Nations Convention on Contracts for the International Sale of Goods and the Uniform Computer information Transactions Act, as currently enacted by any jurisdiction or as may be codified or amended from time to time by any jurisdiction, do not apply to this Agreement.  8. TRADE CONTROL. You acknowledge that Software (including its related technical data and services) may be deemed dual use and is subject to, without limitation, the export control laws and regulations of the United Kingdom, European Union, and United States of America (\u201cTrade Control Laws\u201d). You agree to fully comply with those Trade Control Laws in connection with Software including where applicable assisting in obtaining any necessary governmental approvals, licenses and undertakings. You will not, and will not allow any third party, to use, export, re-export or transfer, directly or indirectly, of any part of the Software in violation of any Trade Control Laws or to a destination subject to US, UN, EU, UK or Organisation for Security and Cooperation in Europe (OSCE) embargo, or to any individual or entity listed on the denied parties\u2019 lists. A statement on the Export Controls applicable to the Software, is available at the following website:\u202fExport Statement \u2013 KX. Any dispute in relation to this clause 8 shall be governed in accordance with clause 7 unless Trade Control Laws determine otherwise. You acknowledge that we may not be permitted (and, in such an event, shall be excused from any requirement) to deliver or grant access to the Software, or perform support or services, due to an embargo, trade sanction or other comparable restrictive measure.  9. GENERAL. This is the only Agreement between End User and KX relating to the Software. The provisions of section 1.4 (\u201cIntellectual Property Ownership Rights\u201d), section 4 (\u201cNo Warranty\u201d), section 5 (\u201cLimitation of Liability\u201d), section 6 (\u201cTerm and Termination\u201d), section 9 (\u201cGeneral\u201d) shall survive the termination of this Agreement for any reason. All other rights and obligations of the parties shall cease upon termination of this Agreement. This Agreement constitutes the sole and entire agreement of the parties with respect to the subject matter of this Agreement and supersedes all prior and contemporaneous understandings, agreements, and representations and warranties, both written and oral, with respect to such subject matter. You agree that you shall have no remedies in respect of any statement, representation, assurance or warranty (whether made innocently or negligently) that is not set out in this Agreement. You agree that you shall have no claim for innocent or negligent misrepresentation or negligent misstatement based on any statement in this Agreement. Except for the limited rights and licenses expressly granted under this Agreement, nothing in this Agreement grants, by implication, waiver, estoppel, or otherwise, to you or any third party. If we fail to insist that you perform any of your obligations under this Agreement, or if we do not enforce our rights against you, or if we delay in doing so, that will not mean that we have waived our rights against you and will not mean that you do not have to comply with those obligations. If we do waive a default by you, we will only do so in writing and that will not mean that we will automatically waive any later default by you. ",
    "summary": "An interface between Python and q",
    "version": "3.0.0",
    "project_urls": {
        "Homepage": "https://code.kx.com/pykx",
        "changelog": "https://code.kx.com/pykx/changelog.html",
        "documentation": "https://code.kx.com/pykx",
        "repository": "https://code.kx.com/pykx"
    },
    "split_keywords": [
        "pykx",
        " q",
        " kx",
        " database",
        " ffi"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "255149125dcd83445181a14d66d2836da70e62324788223a963065905a4f4c4f",
                "md5": "26b8a93c6a2cf522ce4b45107c3b6b85",
                "sha256": "35ab4df083647c670c24cb78dbfdcceebe0be4de1c4dde362856b31bd3a6cb72"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp310-cp310-manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "26b8a93c6a2cf522ce4b45107c3b6b85",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 11494620,
            "upload_time": "2024-11-12T07:07:59",
            "upload_time_iso_8601": "2024-11-12T07:07:59.272756Z",
            "url": "https://files.pythonhosted.org/packages/25/51/49125dcd83445181a14d66d2836da70e62324788223a963065905a4f4c4f/pykx-3.0.0-cp310-cp310-manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "16d1c562e85b3d54536bb0d78f43ba64fa7fcf948ffbb945f5cb80b6afe4ad79",
                "md5": "63c65b429e65730592a9ac8445be6e54",
                "sha256": "00ccd83e09e9e188622a7439dce93959b3429f446197ebfcc87d874fe197cc57"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "63c65b429e65730592a9ac8445be6e54",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 11747024,
            "upload_time": "2024-11-12T07:08:03",
            "upload_time_iso_8601": "2024-11-12T07:08:03.066086Z",
            "url": "https://files.pythonhosted.org/packages/16/d1/c562e85b3d54536bb0d78f43ba64fa7fcf948ffbb945f5cb80b6afe4ad79/pykx-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4e7d9200894852d134882b8749c8c8a593d48d2a8c76e7fb1052be0b5ef311e5",
                "md5": "71c5494bf6dd9f3c4bb0d6df815c441c",
                "sha256": "3af843216f94db933efd52a5f0d553703c908d8d3d008dcb0d25876e059937cb"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "71c5494bf6dd9f3c4bb0d6df815c441c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 8202164,
            "upload_time": "2024-11-12T07:08:06",
            "upload_time_iso_8601": "2024-11-12T07:08:06.442576Z",
            "url": "https://files.pythonhosted.org/packages/4e/7d/9200894852d134882b8749c8c8a593d48d2a8c76e7fb1052be0b5ef311e5/pykx-3.0.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "beb5ed51784057313356e1fbea3bead1630b7ea88f86328fa53df56948558337",
                "md5": "ae824bca3c528fc70ae8afd90f52cc89",
                "sha256": "51add52de012571ae605906a24b448a7450a3633a8b2ccecdf0b646bbabf7f50"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp311-cp311-manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "ae824bca3c528fc70ae8afd90f52cc89",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 12743393,
            "upload_time": "2024-11-12T07:08:07",
            "upload_time_iso_8601": "2024-11-12T07:08:07.852800Z",
            "url": "https://files.pythonhosted.org/packages/be/b5/ed51784057313356e1fbea3bead1630b7ea88f86328fa53df56948558337/pykx-3.0.0-cp311-cp311-manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "519775dea47e2c785895cb6f95c25d08b8621b498a278e24da8f90cb1139d7e2",
                "md5": "40e47cb9ec631247758fe03365cb3a1d",
                "sha256": "5b80e1086b1172e4f8928462fe03ca911a320d4fdb50281b7691c3c4b954ebe8"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "40e47cb9ec631247758fe03365cb3a1d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 13136384,
            "upload_time": "2024-11-12T07:08:10",
            "upload_time_iso_8601": "2024-11-12T07:08:10.521411Z",
            "url": "https://files.pythonhosted.org/packages/51/97/75dea47e2c785895cb6f95c25d08b8621b498a278e24da8f90cb1139d7e2/pykx-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2f45de8cd4a496ba0503be756c35ca8d89573997346cb1454beeb0a515a725d9",
                "md5": "9a960811479044ad58e792c183a1a845",
                "sha256": "46c26f164c6365825480d897dfe52605813519b8e58d20c3a1724089a280edfd"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "9a960811479044ad58e792c183a1a845",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 8204030,
            "upload_time": "2024-11-12T07:08:13",
            "upload_time_iso_8601": "2024-11-12T07:08:13.029051Z",
            "url": "https://files.pythonhosted.org/packages/2f/45/de8cd4a496ba0503be756c35ca8d89573997346cb1454beeb0a515a725d9/pykx-3.0.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cc0dba3e3ac9034733a8005b02b9260411af23ec7175d40ff1fbd249ffdd8eba",
                "md5": "730b5420f34beb368a21fe53b78b052b",
                "sha256": "28d9d6bcc2dad777faa308df2f5477b2391341920b6281cb0ab160e2bd1837fc"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp312-cp312-manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "730b5420f34beb368a21fe53b78b052b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 11852352,
            "upload_time": "2024-11-12T07:08:14",
            "upload_time_iso_8601": "2024-11-12T07:08:14.548699Z",
            "url": "https://files.pythonhosted.org/packages/cc/0d/ba3e3ac9034733a8005b02b9260411af23ec7175d40ff1fbd249ffdd8eba/pykx-3.0.0-cp312-cp312-manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eee49b52d163915332089a2d3a16b9aa3a7bbc80f77d64e49b6f41bd2b106437",
                "md5": "6f1207a1057c2a889e414387c759f656",
                "sha256": "49b77308c974fa1352851fa3817990998b4b79beb5a8c2a1f4ae52ea7b77213d"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6f1207a1057c2a889e414387c759f656",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 12502610,
            "upload_time": "2024-11-12T07:08:17",
            "upload_time_iso_8601": "2024-11-12T07:08:17.348618Z",
            "url": "https://files.pythonhosted.org/packages/ee/e4/9b52d163915332089a2d3a16b9aa3a7bbc80f77d64e49b6f41bd2b106437/pykx-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8c6dd2788aa83e67706950ac4e8ffc3ea2fe1db1c8ac91414eb3b7dc107a48d0",
                "md5": "4ebdb789056c7cc690d85606867848dc",
                "sha256": "fdcda7924acebc503e0f723ddeb2a80520e5c7c6cc988b50001c159f878c13e3"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4ebdb789056c7cc690d85606867848dc",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 8154950,
            "upload_time": "2024-11-12T07:08:19",
            "upload_time_iso_8601": "2024-11-12T07:08:19.270437Z",
            "url": "https://files.pythonhosted.org/packages/8c/6d/d2788aa83e67706950ac4e8ffc3ea2fe1db1c8ac91414eb3b7dc107a48d0/pykx-3.0.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9f9c1380ab8957b3ca2bab8ecb2c2746d28f7fdf84e36242eed177ab550ad3cb",
                "md5": "8dc687e71bda9957c749019da162d645",
                "sha256": "a03f950dc9b8664c6794b8d9e1edaec1a5d3aae10355b0ac2dc7f5f83dad4ef7"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp38-cp38-manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "8dc687e71bda9957c749019da162d645",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 11594166,
            "upload_time": "2024-11-12T07:08:20",
            "upload_time_iso_8601": "2024-11-12T07:08:20.831428Z",
            "url": "https://files.pythonhosted.org/packages/9f/9c/1380ab8957b3ca2bab8ecb2c2746d28f7fdf84e36242eed177ab550ad3cb/pykx-3.0.0-cp38-cp38-manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f7f332fd4b9a0547e1e00da92a0ff116024a98acd282f1f4b6bf29dc3e439cab",
                "md5": "08ed9396fc2c30d089d4035de6952ce2",
                "sha256": "47e08d550b7c117b58b09a40b33781d37031f479c3b564a373fb2fbc586230f9"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "08ed9396fc2c30d089d4035de6952ce2",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 11849614,
            "upload_time": "2024-11-12T07:08:23",
            "upload_time_iso_8601": "2024-11-12T07:08:23.855090Z",
            "url": "https://files.pythonhosted.org/packages/f7/f3/32fd4b9a0547e1e00da92a0ff116024a98acd282f1f4b6bf29dc3e439cab/pykx-3.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fe4cc39e60195a4a641eb3d2dff88239f9becdf50c325fc5ca3f00a62e9b825a",
                "md5": "699c64afec64948bc66e7e61db6aeedb",
                "sha256": "c61002f1382a12b6f52c945c883e6867ea5995e26bf0c6d72181d189bdad3581"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "699c64afec64948bc66e7e61db6aeedb",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 8214447,
            "upload_time": "2024-11-12T07:08:26",
            "upload_time_iso_8601": "2024-11-12T07:08:26.655582Z",
            "url": "https://files.pythonhosted.org/packages/fe/4c/c39e60195a4a641eb3d2dff88239f9becdf50c325fc5ca3f00a62e9b825a/pykx-3.0.0-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "02aa42ddd26e3ad79a213240211f818e76c97a2d3b9b20b90bded8998784c553",
                "md5": "2bc90a5cf4e66c566b77cb84867757ba",
                "sha256": "36366f09e623a43300165039db6c0bdca53d80c398ef540dce641bed1e812ad7"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp39-cp39-manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "2bc90a5cf4e66c566b77cb84867757ba",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 11495202,
            "upload_time": "2024-11-12T07:08:28",
            "upload_time_iso_8601": "2024-11-12T07:08:28.956436Z",
            "url": "https://files.pythonhosted.org/packages/02/aa/42ddd26e3ad79a213240211f818e76c97a2d3b9b20b90bded8998784c553/pykx-3.0.0-cp39-cp39-manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c26e0fdc85b9f0ab711b1736eba6470f2c5a05f44ba9e391a95e0202e78c05f1",
                "md5": "2547aa9318f88e0fcec3fd37123e95ce",
                "sha256": "5cf9f8e73f0d082c019a5a0b6d0b47fd2df75e0db903448de4cbd8b6e22b03d1"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2547aa9318f88e0fcec3fd37123e95ce",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 11749995,
            "upload_time": "2024-11-12T07:08:31",
            "upload_time_iso_8601": "2024-11-12T07:08:31.465086Z",
            "url": "https://files.pythonhosted.org/packages/c2/6e/0fdc85b9f0ab711b1736eba6470f2c5a05f44ba9e391a95e0202e78c05f1/pykx-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1484b58e4e2da115706b03e8c58546aa38d2709cedb5161581b0959278630b3c",
                "md5": "678570d4a01a60fe70ef7805d8ee18bd",
                "sha256": "f001a8399c34c8d41cfbe0c465485733943f5828c265c92ad7f5400871a0cf9b"
            },
            "downloads": -1,
            "filename": "pykx-3.0.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "678570d4a01a60fe70ef7805d8ee18bd",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 8202779,
            "upload_time": "2024-11-12T07:08:34",
            "upload_time_iso_8601": "2024-11-12T07:08:34.187862Z",
            "url": "https://files.pythonhosted.org/packages/14/84/b58e4e2da115706b03e8c58546aa38d2709cedb5161581b0959278630b3c/pykx-3.0.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-12 07:07:59",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "pykx"
}
        
KX
Elapsed time: 9.44008s