kola


Namekola JSON
Version 1.5.2 PyPI version JSON
download
home_pageNone
Summarya Python Polars interface to kdb+/q
upload_time2024-11-21 14:45:07
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords q kdb polars dataframe arrow
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # kola

a Python [Polars](https://pola-rs.github.io/polars/) Interface to kdb+/q

## Basic Data Type Map

### Deserialization

#### Atom

| k type      | n   | size | python type | note                        |
| ----------- | --- | ---- | ----------- | --------------------------- |
| `boolean`   | 1   | 1    | `bool`      |                             |
| `guid`      | 2   | 16   | `str`       |                             |
| `byte`      | 4   | 1    | `int`       |                             |
| `short`     | 5   | 2    | `int`       |                             |
| `int`       | 6   | 4    | `int`       |                             |
| `long`      | 7   | 8    | `int`       |                             |
| `real`      | 8   | 4    | `float`     |                             |
| `float`     | 9   | 8    | `float`     |                             |
| `char`      | 10  | 1    | `str`       |                             |
| `string`    | 10  | 1    | `str`       |                             |
| `symbol`    | 11  | \*   | `str`       |                             |
| `timestamp` | 12  | 8    | `datetime`  |                             |
| `month`     | 13  | 4    | `-`         |                             |
| `date`      | 14  | 4    | `date`      | 0001.01.01 - 9999.12.31     |
| `datetime`  | 15  | 8    | `datetime`  |                             |
| `timespan`  | 16  | 8    | `timedelta` |                             |
| `minute`    | 17  | 4    | `time`      | 00:00 - 23:59               |
| `second`    | 18  | 4    | `time`      | 00:00:00 - 23:59:59         |
| `time`      | 19  | 4    | `time`      | 00:00:00.000 - 23:59:59.999 |

#### Composite Data Type

| k type           | n   | size | python type              |
| ---------------- | --- | ---- | ------------------------ |
| `boolean list`   | 1   | 1    | `pl.Boolean`             |
| `guid list`      | 2   | 16   | `pl.List(pl.Binary(16))` |
| `byte list`      | 4   | 1    | `pl.Uint8`               |
| `short list`     | 5   | 2    | `pl.Int16`               |
| `int list`       | 6   | 4    | `pl.Int32`               |
| `long list`      | 7   | 8    | `pl.Int64`               |
| `real list`      | 8   | 4    | `pl.Float32`             |
| `float list`     | 9   | 8    | `pl.Float64`             |
| `char list`      | 10  | 1    | `pl.Utf8`                |
| `string list`    | 10  | 1    | `pl.Utf8`                |
| `symbol list`    | 11  | \*   | `pl.Categorical`         |
| `timestamp list` | 12  | 8    | `pl.Datetime`            |
| `month list`     | 13  | 4    | `-`                      |
| `date list`      | 14  | 4    | `pl.Date`                |
| `datetime list`  | 15  | 8    | `pl.Datetime`            |
| `timespan list`  | 16  | 8    | `pl.Duration`            |
| `minute list`    | 17  | 4    | `pl.Time`                |
| `second list`    | 18  | 4    | `pl.Time`                |
| `time list`      | 19  | 4    | `pl.Time`                |
| `table`          | 98  | \*   | `pl.DataFrame`           |
| `dictionary`     | 99  | \*   | `-`                      |
| `keyed table`    | 99  | \*   | `pl.DataFrame`           |

> performance is impacted by converting guid to string, deserialize the uuid to 16 fixed binary list, use .hex() to convert binary to string if required

> real/float 0n is mapped to Polars null not NaN

> short/int/long 0Nh/i/j, 0Wh/i/j and -0Wh/i/j are mapped to null

```
df.with_columns([
    (pl.col("uuid").apply(lambda u: u.hex()))
    ])
```

### Serialization

#### Basic Data Type

| python type | k type      | note                        |
| ----------- | ----------- | --------------------------- |
| `bool`      | `boolean`   |                             |
| `int`       | `long`      |                             |
| `float`     | `float`     |                             |
| `str`       | `symbol`    |                             |
| `bytes`     | `string`    |                             |
| `datetime`  | `timestamp` |                             |
| `date`      | `date`      | 0001.01.01 - 9999.12.31     |
| `datetime`  | `datetime`  |                             |
| `timedelta` | `timespan`  |                             |
| `time`      | `time`      | 00:00:00.000 - 23:59:59.999 |

#### Dictionary, Series and DataFrame

| python type              | k type    |
| ------------------------ | --------- |
| `dict`                   | dict      |
| `pl.Boolean`             | boolean   |
| `pl.List(pl.Binary(16))` | guid      |
| `pl.Uint8`               | byte      |
| `pl.Int16`               | short     |
| `pl.Int32`               | int       |
| `pl.Int64`               | long      |
| `pl.Float32`             | real      |
| `pl.Float64`             | float     |
| `pl.Utf8`                | char      |
| `pl.Categorical`         | symbol    |
| `pl.Datetime`            | timestamp |
| `pl.Date`                | date      |
| `pl.Datetime`            | datetime  |
| `pl.Duration`            | timespan  |
| `pl.Time`                | time      |
| `pl.DataFrame`           | table     |

> Limited Support for dictionary as arguments, requires `string` as keys.

## Quick Start

### Create a Connection

```python
import polars as pl
import kola
q = kola.Q('localhost', 1800)

# with retries for IO Errors, 1s, 2s, 4s ...
q = kola.Q('localhost', 1800, retries=3)

# with read timeout error, 2s, "Resource temporarily unavailable"
q = kola.Q('localhost', 1800, retries=3, timeout=2)
```

### Connect(Optional)

Automatically connect when querying q process

```python
q.connect()
```

### Disconnect

Automatically disconnect if any IO error

```python
q.disconnect()
```

### String Query

```python
q.sync("select from trade where date=last date")
```

### Lambda Query

When the first string starts with `{` and ends with `}`, it is treated as a lambda.

```python
d = {"a": 1, "b": 2}
q.sync("{key x}", d)
```

### Functional Query

For functional query, `kola` supports Python [Basic Data Type](#basic-data-type), `pl.Series`, `pl.DataFrame` and Python Dictionary with string keys and Python [Basic Data Type](#basic-data-type) and `pl.Series` values.

```python
from datetime import date, time

q.sync(
    ".gw.query",
    "table",
    {
        "date": date(2023, 11, 21),
        "syms": pl.Series("", ["sym0", "sym1"], pl.Categorical),
        # 09:00
        "startTime": time(9),
        # 11:30
        "endTime": time(11, 30),
    },
)
```

### Send DataFrame

```python
# pl_df is a Polars DataFrame
q.sync("upsert", "table", pl_df)
```

```python
# pd_df is a Pandas DataFrame, use pl.DateFrame to cast Pandas DataFrame
q.sync("upsert", "table", pl.DataFrame(pd_df))
```

### Async Query

```python
# pl_df is a Polars DataFrame
q.asyn("upsert", "table", pl_df)
```

### Subscribe

```python
from kola import QType

q.sync(".u.sub", pl.Series("", ["table1", "table2"], QType.Symbol), "")

# specify symbol filter
q.sync(
    ".u.sub",
    pl.Series("", ["table1", "table2"], QType.Symbol),
    pl.Series("", ["sym1", "sym2"], QType.Symbol),
)

while true:
    # ("upd", "table", pl.Dataframe)
    upd = self.q.receive()
    print(upd)
```

### Generate IPC

```python
import polars as pl
from kola import generate_ipc

df = pl.DataFrame(
    {
        "sym": pl.Series("sym", ["a", "b", "c"], pl.Categorical),
        "price": [1, 2, 3],
    }
)
# without compression
buffer = generate_ipc("sync", False, ["upd", "table", df])

# with compression
buffer = generate_ipc("sync", True, ["upd", "table", df])
```

## Polars Documentations

Refer to

- [User Guide](https://pola-rs.github.io/polars/user-guide/)
- [API Reference](https://pola-rs.github.io/polars/py-polars/html/reference/index.html)


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "kola",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "q, kdb, polars, dataframe, arrow",
    "author": null,
    "author_email": "Jo Shinonome <jo.shinonome@gmail.com>",
    "download_url": null,
    "platform": null,
    "description": "# kola\n\na Python [Polars](https://pola-rs.github.io/polars/) Interface to kdb+/q\n\n## Basic Data Type Map\n\n### Deserialization\n\n#### Atom\n\n| k type      | n   | size | python type | note                        |\n| ----------- | --- | ---- | ----------- | --------------------------- |\n| `boolean`   | 1   | 1    | `bool`      |                             |\n| `guid`      | 2   | 16   | `str`       |                             |\n| `byte`      | 4   | 1    | `int`       |                             |\n| `short`     | 5   | 2    | `int`       |                             |\n| `int`       | 6   | 4    | `int`       |                             |\n| `long`      | 7   | 8    | `int`       |                             |\n| `real`      | 8   | 4    | `float`     |                             |\n| `float`     | 9   | 8    | `float`     |                             |\n| `char`      | 10  | 1    | `str`       |                             |\n| `string`    | 10  | 1    | `str`       |                             |\n| `symbol`    | 11  | \\*   | `str`       |                             |\n| `timestamp` | 12  | 8    | `datetime`  |                             |\n| `month`     | 13  | 4    | `-`         |                             |\n| `date`      | 14  | 4    | `date`      | 0001.01.01 - 9999.12.31     |\n| `datetime`  | 15  | 8    | `datetime`  |                             |\n| `timespan`  | 16  | 8    | `timedelta` |                             |\n| `minute`    | 17  | 4    | `time`      | 00:00 - 23:59               |\n| `second`    | 18  | 4    | `time`      | 00:00:00 - 23:59:59         |\n| `time`      | 19  | 4    | `time`      | 00:00:00.000 - 23:59:59.999 |\n\n#### Composite Data Type\n\n| k type           | n   | size | python type              |\n| ---------------- | --- | ---- | ------------------------ |\n| `boolean list`   | 1   | 1    | `pl.Boolean`             |\n| `guid list`      | 2   | 16   | `pl.List(pl.Binary(16))` |\n| `byte list`      | 4   | 1    | `pl.Uint8`               |\n| `short list`     | 5   | 2    | `pl.Int16`               |\n| `int list`       | 6   | 4    | `pl.Int32`               |\n| `long list`      | 7   | 8    | `pl.Int64`               |\n| `real list`      | 8   | 4    | `pl.Float32`             |\n| `float list`     | 9   | 8    | `pl.Float64`             |\n| `char list`      | 10  | 1    | `pl.Utf8`                |\n| `string list`    | 10  | 1    | `pl.Utf8`                |\n| `symbol list`    | 11  | \\*   | `pl.Categorical`         |\n| `timestamp list` | 12  | 8    | `pl.Datetime`            |\n| `month list`     | 13  | 4    | `-`                      |\n| `date list`      | 14  | 4    | `pl.Date`                |\n| `datetime list`  | 15  | 8    | `pl.Datetime`            |\n| `timespan list`  | 16  | 8    | `pl.Duration`            |\n| `minute list`    | 17  | 4    | `pl.Time`                |\n| `second list`    | 18  | 4    | `pl.Time`                |\n| `time list`      | 19  | 4    | `pl.Time`                |\n| `table`          | 98  | \\*   | `pl.DataFrame`           |\n| `dictionary`     | 99  | \\*   | `-`                      |\n| `keyed table`    | 99  | \\*   | `pl.DataFrame`           |\n\n> performance is impacted by converting guid to string, deserialize the uuid to 16 fixed binary list, use .hex() to convert binary to string if required\n\n> real/float 0n is mapped to Polars null not NaN\n\n> short/int/long 0Nh/i/j, 0Wh/i/j and -0Wh/i/j are mapped to null\n\n```\ndf.with_columns([\n    (pl.col(\"uuid\").apply(lambda u: u.hex()))\n    ])\n```\n\n### Serialization\n\n#### Basic Data Type\n\n| python type | k type      | note                        |\n| ----------- | ----------- | --------------------------- |\n| `bool`      | `boolean`   |                             |\n| `int`       | `long`      |                             |\n| `float`     | `float`     |                             |\n| `str`       | `symbol`    |                             |\n| `bytes`     | `string`    |                             |\n| `datetime`  | `timestamp` |                             |\n| `date`      | `date`      | 0001.01.01 - 9999.12.31     |\n| `datetime`  | `datetime`  |                             |\n| `timedelta` | `timespan`  |                             |\n| `time`      | `time`      | 00:00:00.000 - 23:59:59.999 |\n\n#### Dictionary, Series and DataFrame\n\n| python type              | k type    |\n| ------------------------ | --------- |\n| `dict`                   | dict      |\n| `pl.Boolean`             | boolean   |\n| `pl.List(pl.Binary(16))` | guid      |\n| `pl.Uint8`               | byte      |\n| `pl.Int16`               | short     |\n| `pl.Int32`               | int       |\n| `pl.Int64`               | long      |\n| `pl.Float32`             | real      |\n| `pl.Float64`             | float     |\n| `pl.Utf8`                | char      |\n| `pl.Categorical`         | symbol    |\n| `pl.Datetime`            | timestamp |\n| `pl.Date`                | date      |\n| `pl.Datetime`            | datetime  |\n| `pl.Duration`            | timespan  |\n| `pl.Time`                | time      |\n| `pl.DataFrame`           | table     |\n\n> Limited Support for dictionary as arguments, requires `string` as keys.\n\n## Quick Start\n\n### Create a Connection\n\n```python\nimport polars as pl\nimport kola\nq = kola.Q('localhost', 1800)\n\n# with retries for IO Errors, 1s, 2s, 4s ...\nq = kola.Q('localhost', 1800, retries=3)\n\n# with read timeout error, 2s, \"Resource temporarily unavailable\"\nq = kola.Q('localhost', 1800, retries=3, timeout=2)\n```\n\n### Connect(Optional)\n\nAutomatically connect when querying q process\n\n```python\nq.connect()\n```\n\n### Disconnect\n\nAutomatically disconnect if any IO error\n\n```python\nq.disconnect()\n```\n\n### String Query\n\n```python\nq.sync(\"select from trade where date=last date\")\n```\n\n### Lambda Query\n\nWhen the first string starts with `{` and ends with `}`, it is treated as a lambda.\n\n```python\nd = {\"a\": 1, \"b\": 2}\nq.sync(\"{key x}\", d)\n```\n\n### Functional Query\n\nFor functional query, `kola` supports Python [Basic Data Type](#basic-data-type), `pl.Series`, `pl.DataFrame` and Python Dictionary with string keys and Python [Basic Data Type](#basic-data-type) and `pl.Series` values.\n\n```python\nfrom datetime import date, time\n\nq.sync(\n    \".gw.query\",\n    \"table\",\n    {\n        \"date\": date(2023, 11, 21),\n        \"syms\": pl.Series(\"\", [\"sym0\", \"sym1\"], pl.Categorical),\n        # 09:00\n        \"startTime\": time(9),\n        # 11:30\n        \"endTime\": time(11, 30),\n    },\n)\n```\n\n### Send DataFrame\n\n```python\n# pl_df is a Polars DataFrame\nq.sync(\"upsert\", \"table\", pl_df)\n```\n\n```python\n# pd_df is a Pandas DataFrame, use pl.DateFrame to cast Pandas DataFrame\nq.sync(\"upsert\", \"table\", pl.DataFrame(pd_df))\n```\n\n### Async Query\n\n```python\n# pl_df is a Polars DataFrame\nq.asyn(\"upsert\", \"table\", pl_df)\n```\n\n### Subscribe\n\n```python\nfrom kola import QType\n\nq.sync(\".u.sub\", pl.Series(\"\", [\"table1\", \"table2\"], QType.Symbol), \"\")\n\n# specify symbol filter\nq.sync(\n    \".u.sub\",\n    pl.Series(\"\", [\"table1\", \"table2\"], QType.Symbol),\n    pl.Series(\"\", [\"sym1\", \"sym2\"], QType.Symbol),\n)\n\nwhile true:\n    # (\"upd\", \"table\", pl.Dataframe)\n    upd = self.q.receive()\n    print(upd)\n```\n\n### Generate IPC\n\n```python\nimport polars as pl\nfrom kola import generate_ipc\n\ndf = pl.DataFrame(\n    {\n        \"sym\": pl.Series(\"sym\", [\"a\", \"b\", \"c\"], pl.Categorical),\n        \"price\": [1, 2, 3],\n    }\n)\n# without compression\nbuffer = generate_ipc(\"sync\", False, [\"upd\", \"table\", df])\n\n# with compression\nbuffer = generate_ipc(\"sync\", True, [\"upd\", \"table\", df])\n```\n\n## Polars Documentations\n\nRefer to\n\n- [User Guide](https://pola-rs.github.io/polars/user-guide/)\n- [API Reference](https://pola-rs.github.io/polars/py-polars/html/reference/index.html)\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "a Python Polars interface to kdb+/q",
    "version": "1.5.2",
    "project_urls": {
        "Repository": "https://github.com/jshinonome/kola"
    },
    "split_keywords": [
        "q",
        " kdb",
        " polars",
        " dataframe",
        " arrow"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d23cd1d05fb95a719e6999562a008752f3e90c0497e6bf7baacda8489acd353f",
                "md5": "69fe2e18c1b74e4f406e0af5dbb0adcd",
                "sha256": "9c631094747490a09a5129496e7b3d59c0cba9b47392d46ec7e51d86749f37bc"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "69fe2e18c1b74e4f406e0af5dbb0adcd",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 4616386,
            "upload_time": "2024-11-21T14:45:07",
            "upload_time_iso_8601": "2024-11-21T14:45:07.838785Z",
            "url": "https://files.pythonhosted.org/packages/d2/3c/d1d05fb95a719e6999562a008752f3e90c0497e6bf7baacda8489acd353f/kola-1.5.2-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ef7a027f38a43485cd184bae2aecbdbe230b986584b1080de6c345337c238eb3",
                "md5": "ff415b5f77be0cb58e6185e731a73cda",
                "sha256": "b23b777cfab3988d3b3535a47f74ff68166d0dd7a2706260380fb521b09e180e"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp310-cp310-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ff415b5f77be0cb58e6185e731a73cda",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 7130463,
            "upload_time": "2024-11-21T14:27:04",
            "upload_time_iso_8601": "2024-11-21T14:27:04.421848Z",
            "url": "https://files.pythonhosted.org/packages/ef/7a/027f38a43485cd184bae2aecbdbe230b986584b1080de6c345337c238eb3/kola-1.5.2-cp310-cp310-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "391770d2b2c19396da8684e257e3e8b407a3470337403c4870d8b9c491e217a4",
                "md5": "4965856547714b97349ae4d713a1df9a",
                "sha256": "266b37b43f7a95dfd51a4fd05b6c07102fb2093e1687bda5934455f37834656e"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4965856547714b97349ae4d713a1df9a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 4852867,
            "upload_time": "2024-11-21T14:32:21",
            "upload_time_iso_8601": "2024-11-21T14:32:21.489097Z",
            "url": "https://files.pythonhosted.org/packages/39/17/70d2b2c19396da8684e257e3e8b407a3470337403c4870d8b9c491e217a4/kola-1.5.2-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7dbe53bda0264d037da4a993f6157ac4e1de7e2ac578fdb19b37e21bba15ef53",
                "md5": "4100996b567b2a23b8e42e07ad9812ae",
                "sha256": "63d70d2d2fddef2fb227f62756f67e29a3e105c1a3c7e843f818ecf10fb5fc21"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "4100996b567b2a23b8e42e07ad9812ae",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 4615741,
            "upload_time": "2024-11-21T14:45:10",
            "upload_time_iso_8601": "2024-11-21T14:45:10.701006Z",
            "url": "https://files.pythonhosted.org/packages/7d/be/53bda0264d037da4a993f6157ac4e1de7e2ac578fdb19b37e21bba15ef53/kola-1.5.2-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ede858eb3854423385c5df0dda8f6bf2a543bb0bc11161d93c44604d7509774a",
                "md5": "cde41fa5ee166328bbecfb78c755c339",
                "sha256": "d1be6ca7a7d43e6c5e31197662f2acc51bb740d685faf3677f8212fe381fbeb2"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp311-cp311-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "cde41fa5ee166328bbecfb78c755c339",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 7130184,
            "upload_time": "2024-11-21T14:27:07",
            "upload_time_iso_8601": "2024-11-21T14:27:07.521088Z",
            "url": "https://files.pythonhosted.org/packages/ed/e8/58eb3854423385c5df0dda8f6bf2a543bb0bc11161d93c44604d7509774a/kola-1.5.2-cp311-cp311-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ae4792447308ab5fcbb120de1e6f95bda03d01513b1428316ed3e80720e75168",
                "md5": "13c9c496a2242ca72a7f192c09366ad4",
                "sha256": "7fd5d0d65f3ac8162894c9d63cff064371131d8278f0a1b5fb097dd5da41d229"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "13c9c496a2242ca72a7f192c09366ad4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 4853181,
            "upload_time": "2024-11-21T14:32:23",
            "upload_time_iso_8601": "2024-11-21T14:32:23.981724Z",
            "url": "https://files.pythonhosted.org/packages/ae/47/92447308ab5fcbb120de1e6f95bda03d01513b1428316ed3e80720e75168/kola-1.5.2-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3753d56eedc83de7acec3e3f1592b1c0a176260b12c605c0c1b2b642680901d0",
                "md5": "25bff077d82eb6683665c4ebf2a60fc3",
                "sha256": "41321fb42c7480e1f9d4755385e9de78c1dd664df2c9bd0ccc180cfcdb0c794a"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "25bff077d82eb6683665c4ebf2a60fc3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 4615624,
            "upload_time": "2024-11-21T14:45:13",
            "upload_time_iso_8601": "2024-11-21T14:45:13.673903Z",
            "url": "https://files.pythonhosted.org/packages/37/53/d56eedc83de7acec3e3f1592b1c0a176260b12c605c0c1b2b642680901d0/kola-1.5.2-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5c20c329e927b5bd1ab9435ee6c732e3f0981f072042d06dcaa5304670699673",
                "md5": "568599f2e5ce29aecd1063e2dc7414f0",
                "sha256": "7f239df39b34b5ff60cabbe38dae1412acbf8faa2e60563f49161fc19fc60054"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp312-cp312-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "568599f2e5ce29aecd1063e2dc7414f0",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 7129088,
            "upload_time": "2024-11-21T14:27:09",
            "upload_time_iso_8601": "2024-11-21T14:27:09.742545Z",
            "url": "https://files.pythonhosted.org/packages/5c/20/c329e927b5bd1ab9435ee6c732e3f0981f072042d06dcaa5304670699673/kola-1.5.2-cp312-cp312-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "afb888c17ecc3f426c70ab55a06305996d1dc98c39fbc2f89a1e9e19e167bac0",
                "md5": "d1c58e3af1693f02b3b784b89753231a",
                "sha256": "4d5e4f462ee7f2c7bc7dc42d94e72401d3239920d588e48d74db9f86d29499f0"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp312-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d1c58e3af1693f02b3b784b89753231a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 4852480,
            "upload_time": "2024-11-21T14:32:25",
            "upload_time_iso_8601": "2024-11-21T14:32:25.776225Z",
            "url": "https://files.pythonhosted.org/packages/af/b8/88c17ecc3f426c70ab55a06305996d1dc98c39fbc2f89a1e9e19e167bac0/kola-1.5.2-cp312-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3f888c6754e1b1d080bc31ad709e389945ad829b158c2be13135faa6054ec05d",
                "md5": "72cf71e6ab674a49fb94121a7e28d2e7",
                "sha256": "0a81915132f2ecc405994a74139534f0b781c7a096fe928055e2092726b67d60"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "72cf71e6ab674a49fb94121a7e28d2e7",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 4615372,
            "upload_time": "2024-11-21T14:45:17",
            "upload_time_iso_8601": "2024-11-21T14:45:17.031980Z",
            "url": "https://files.pythonhosted.org/packages/3f/88/8c6754e1b1d080bc31ad709e389945ad829b158c2be13135faa6054ec05d/kola-1.5.2-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6dfe59440a3eff3d3f57f5ee0fd3d8e9acf03428e93b1f499cdfe2b24f480714",
                "md5": "0c236cc95d3446b8c91743ff68428ef5",
                "sha256": "38739f6bed86fab8f40703be9e9d9389ba00397e85ea45adab67859b00b6c1b6"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp313-cp313-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0c236cc95d3446b8c91743ff68428ef5",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 7128219,
            "upload_time": "2024-11-21T14:27:12",
            "upload_time_iso_8601": "2024-11-21T14:27:12.508755Z",
            "url": "https://files.pythonhosted.org/packages/6d/fe/59440a3eff3d3f57f5ee0fd3d8e9acf03428e93b1f499cdfe2b24f480714/kola-1.5.2-cp313-cp313-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2f76508f97baf8ffce2489fc7de062fbab1ab51c29bdd5f54d5f64b1aa264bae",
                "md5": "519de885001468faa0784160adc49541",
                "sha256": "483af56f1342b2c9150dfe9ff2e254196ddd90114b8e05fa48ffa7971610603f"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp313-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "519de885001468faa0784160adc49541",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 4851968,
            "upload_time": "2024-11-21T14:32:28",
            "upload_time_iso_8601": "2024-11-21T14:32:28.163976Z",
            "url": "https://files.pythonhosted.org/packages/2f/76/508f97baf8ffce2489fc7de062fbab1ab51c29bdd5f54d5f64b1aa264bae/kola-1.5.2-cp313-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "73fbfb303c3cb7b7763e783920e6b5ec640c4c1ca98c7b8e6a86538cd623e9cb",
                "md5": "d101c5514e73fa52ddc502f707b65aed",
                "sha256": "981ba0be9377312225b84339a48b4199ebc739e97e32f05f0ddc4c1fc7eef17c"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "d101c5514e73fa52ddc502f707b65aed",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 4618173,
            "upload_time": "2024-11-21T14:45:19",
            "upload_time_iso_8601": "2024-11-21T14:45:19.981122Z",
            "url": "https://files.pythonhosted.org/packages/73/fb/fb303c3cb7b7763e783920e6b5ec640c4c1ca98c7b8e6a86538cd623e9cb/kola-1.5.2-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "68b79fa91a5e88ad2266c56c1ba24e7b2d02bc07cda8e6dd4345039ec10f3bcd",
                "md5": "1588dc94ceab1e0fffcd44bf53490237",
                "sha256": "5f9d337d57005d251727cde904bedbe831078bfe0bcf0e0a5a9ebf7dd19f9980"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp39-cp39-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1588dc94ceab1e0fffcd44bf53490237",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 7130296,
            "upload_time": "2024-11-21T14:27:15",
            "upload_time_iso_8601": "2024-11-21T14:27:15.342303Z",
            "url": "https://files.pythonhosted.org/packages/68/b7/9fa91a5e88ad2266c56c1ba24e7b2d02bc07cda8e6dd4345039ec10f3bcd/kola-1.5.2-cp39-cp39-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e70de66b990778507133341447f965d78799da2eaf29beec42f19daef9e07a39",
                "md5": "41b9749847132e16b39ef4c63472e932",
                "sha256": "0864f26c166a1f2d123f2ccbe577c4f37b87695147a95a70318760d179cfb090"
            },
            "downloads": -1,
            "filename": "kola-1.5.2-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "41b9749847132e16b39ef4c63472e932",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 4854464,
            "upload_time": "2024-11-21T14:32:30",
            "upload_time_iso_8601": "2024-11-21T14:32:30.666056Z",
            "url": "https://files.pythonhosted.org/packages/e7/0d/e66b990778507133341447f965d78799da2eaf29beec42f19daef9e07a39/kola-1.5.2-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-21 14:45:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jshinonome",
    "github_project": "kola",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "kola"
}
        
Elapsed time: 0.36503s