asyncpg-🚀 -- A fast PostgreSQL Database Client Library for Python/asyncio that returns numpy arrays
====================================================================================================
.. image:: https://github.com/athenianco/asyncpg-rkt/workflows/Tests/badge.svg
:target: https://github.com/athenianco/asyncpg-rkt/actions?query=workflow%3ATests+branch%3Amaster
:alt: GitHub Actions status
.. image:: https://img.shields.io/pypi/v/asyncpg-rkt.svg
:target: https://pypi.python.org/pypi/asyncpg-rkt
**asyncpg-rkt** is a fork of **asyncpg**, a database interface library designed specifically for
PostgreSQL and Python/asyncio. asyncpg is an efficient, clean implementation
of PostgreSQL server binary protocol for use with Python's ``asyncio``
framework. You can read more about asyncpg in an introductory
`blog post <http://magic.io/blog/asyncpg-1m-rows-from-postgres-to-python/>`_.
**asyncpg-rkt** extends **asyncpg** as follows:
* Backward compatible with the origin.
* It is possible to set the numpy dtype for the fetched query.
* Such "typed" queries return numpy arrays instead of lists of Record objects.
* We construct numpy arrays directly from the low-level PostgreSQL protocol, without materializing any Python objects.
* Although, we support `object` fields, too.
* The time from receiving the response from PostgreSQL server until `Connection.fetch()` returns is ~20x less. This is because we avoid the overhead of dealing with Python objects in the result.
* We return `ravel()`-ed indexes of nulls while writing NaN-s/NaT-s at the corresponding places in the array.
* There is an option to return data by column vs. by row.
**asyncpg-rkt** provides the best performance when there are thousands of rows returned and the field types map to numpy.
Read the blog post with the introduction.
asyncpg-🚀 requires Python 3.8 or later and is supported for PostgreSQL
versions 9.5 to 14. Older PostgreSQL versions or other databases implementing
the PostgreSQL protocol *may* work, but are not being actively tested.
Documentation
-------------
The project documentation can be found
`here <https://magicstack.github.io/asyncpg/current/>`_.
See below about how to use the fork's special features.
Performance
-----------
In our testing asyncpg is, on average, **3x** faster than psycopg2
(and its asyncio variant -- aiopg).
.. image:: https://raw.githubusercontent.com/athenianco/asyncpg-rkt/master/performance.png
:target: https://gistpreview.github.io/?b8eac294ac85da177ff82f784ff2cb60
The above results are a geometric mean of benchmarks obtained with PostgreSQL
`client driver benchmarking toolbench <https://github.com/MagicStack/pgbench>`_
in November 2020 (click on the chart to see full details).
Further improvement from writing numpy arrays is ~20x:
.. image:: https://raw.githubusercontent.com/athenianco/asyncpg-rkt/master/benchmark_20220522_142813.svg
.. image:: https://raw.githubusercontent.com/athenianco/asyncpg-rkt/master/benchmark_20220522_143838.svg
Features
--------
asyncpg implements PostgreSQL server protocol natively and exposes its
features directly, as opposed to hiding them behind a generic facade
like DB-API.
This enables asyncpg to have easy-to-use support for:
* **prepared statements**
* **scrollable cursors**
* **partial iteration** on query results
* automatic encoding and decoding of composite types, arrays,
and any combination of those
* straightforward support for custom data types
Installation
------------
asyncpg-🚀 is available on PyPI and requires numpy 1.21+.
Use pip to install::
$ pip install asyncpg-rkt
Basic Usage
-----------
.. code-block:: python
import asyncio
import asyncpg
from asyncpg.rkt import set_query_dtype
import numpy as np
async def run():
conn = await asyncpg.connect(user='user', password='password',
database='database', host='127.0.0.1')
dtype = np.dtype([
("a", int),
("b", "datetime64[s]"),
])
array, nulls = await conn.fetch(
set_query_dtype('SELECT * FROM mytable WHERE id = $1', dtype),
10,
)
await conn.close()
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
License
-------
asyncpg-🚀 is developed and distributed under the Apache 2.0 license, just like the original project.
Raw data
{
"_id": null,
"home_page": "https://github.com/MagicStack/asyncpg",
"name": "asyncpg-rkt",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7.0",
"maintainer_email": "",
"keywords": "",
"author": "MagicStack Inc",
"author_email": "hello@magic.io",
"download_url": "https://files.pythonhosted.org/packages/70/56/c7fdd67ad9602499d3d0fe7596738a92b97b541078a9711f9de95de6eceb/asyncpg-rkt-0.27.3.tar.gz",
"platform": "macOS",
"description": "asyncpg-\ud83d\ude80 -- A fast PostgreSQL Database Client Library for Python/asyncio that returns numpy arrays\n====================================================================================================\n\n.. image:: https://github.com/athenianco/asyncpg-rkt/workflows/Tests/badge.svg\n :target: https://github.com/athenianco/asyncpg-rkt/actions?query=workflow%3ATests+branch%3Amaster\n :alt: GitHub Actions status\n.. image:: https://img.shields.io/pypi/v/asyncpg-rkt.svg\n :target: https://pypi.python.org/pypi/asyncpg-rkt\n\n**asyncpg-rkt** is a fork of **asyncpg**, a database interface library designed specifically for\nPostgreSQL and Python/asyncio. asyncpg is an efficient, clean implementation\nof PostgreSQL server binary protocol for use with Python's ``asyncio``\nframework. You can read more about asyncpg in an introductory\n`blog post <http://magic.io/blog/asyncpg-1m-rows-from-postgres-to-python/>`_.\n\n**asyncpg-rkt** extends **asyncpg** as follows:\n\n* Backward compatible with the origin.\n* It is possible to set the numpy dtype for the fetched query.\n* Such \"typed\" queries return numpy arrays instead of lists of Record objects.\n* We construct numpy arrays directly from the low-level PostgreSQL protocol, without materializing any Python objects.\n* Although, we support `object` fields, too.\n* The time from receiving the response from PostgreSQL server until `Connection.fetch()` returns is ~20x less. This is because we avoid the overhead of dealing with Python objects in the result.\n* We return `ravel()`-ed indexes of nulls while writing NaN-s/NaT-s at the corresponding places in the array.\n* There is an option to return data by column vs. by row.\n\n**asyncpg-rkt** provides the best performance when there are thousands of rows returned and the field types map to numpy.\n\nRead the blog post with the introduction.\n\nasyncpg-\ud83d\ude80 requires Python 3.8 or later and is supported for PostgreSQL\nversions 9.5 to 14. Older PostgreSQL versions or other databases implementing\nthe PostgreSQL protocol *may* work, but are not being actively tested.\n\n\nDocumentation\n-------------\n\nThe project documentation can be found\n`here <https://magicstack.github.io/asyncpg/current/>`_.\n\nSee below about how to use the fork's special features.\n\nPerformance\n-----------\n\nIn our testing asyncpg is, on average, **3x** faster than psycopg2\n(and its asyncio variant -- aiopg).\n\n.. image:: https://raw.githubusercontent.com/athenianco/asyncpg-rkt/master/performance.png\n :target: https://gistpreview.github.io/?b8eac294ac85da177ff82f784ff2cb60\n\nThe above results are a geometric mean of benchmarks obtained with PostgreSQL\n`client driver benchmarking toolbench <https://github.com/MagicStack/pgbench>`_\nin November 2020 (click on the chart to see full details).\n\nFurther improvement from writing numpy arrays is ~20x:\n\n.. image:: https://raw.githubusercontent.com/athenianco/asyncpg-rkt/master/benchmark_20220522_142813.svg\n\n.. image:: https://raw.githubusercontent.com/athenianco/asyncpg-rkt/master/benchmark_20220522_143838.svg\n\nFeatures\n--------\n\nasyncpg implements PostgreSQL server protocol natively and exposes its\nfeatures directly, as opposed to hiding them behind a generic facade\nlike DB-API.\n\nThis enables asyncpg to have easy-to-use support for:\n\n* **prepared statements**\n* **scrollable cursors**\n* **partial iteration** on query results\n* automatic encoding and decoding of composite types, arrays,\n and any combination of those\n* straightforward support for custom data types\n\n\nInstallation\n------------\n\nasyncpg-\ud83d\ude80 is available on PyPI and requires numpy 1.21+.\nUse pip to install::\n\n $ pip install asyncpg-rkt\n\n\nBasic Usage\n-----------\n\n.. code-block:: python\n\n import asyncio\n import asyncpg\n from asyncpg.rkt import set_query_dtype\n import numpy as np\n\n async def run():\n conn = await asyncpg.connect(user='user', password='password',\n database='database', host='127.0.0.1')\n dtype = np.dtype([\n (\"a\", int),\n (\"b\", \"datetime64[s]\"),\n ])\n array, nulls = await conn.fetch(\n set_query_dtype('SELECT * FROM mytable WHERE id = $1', dtype),\n 10,\n )\n await conn.close()\n\n loop = asyncio.get_event_loop()\n loop.run_until_complete(run())\n\n\nLicense\n-------\n\nasyncpg-\ud83d\ude80 is developed and distributed under the Apache 2.0 license, just like the original project.\n",
"bugtrack_url": null,
"license": "Apache License, Version 2.0",
"summary": "An asyncio PostgreSQL driver that returns numpy arrays",
"version": "0.27.3",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "45fff0e3fe8720756a45cb29a628d388cb68db0be55badd475713cb5060bcebc",
"md5": "1fc802bcdbd78a51a121abf792dab704",
"sha256": "c293fc2094c07b8d01f13b120b2083515f9724f0742e79016006b516501c746c"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1fc802bcdbd78a51a121abf792dab704",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7.0",
"size": 686488,
"upload_time": "2023-04-19T20:39:54",
"upload_time_iso_8601": "2023-04-19T20:39:54.184102Z",
"url": "https://files.pythonhosted.org/packages/45/ff/f0e3fe8720756a45cb29a628d388cb68db0be55badd475713cb5060bcebc/asyncpg_rkt-0.27.3-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a4792433a278febc82c8887dd1d26aa4a861a3d01c38751d653eccdb25371461",
"md5": "bfefadb4e9ab08874a530456c44aacd7",
"sha256": "de3186163c0dc042a9e099c0f08ec0d4f367b86dc501c00dc1f281b02bbe92ce"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "bfefadb4e9ab08874a530456c44aacd7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7.0",
"size": 2807223,
"upload_time": "2023-04-19T20:39:56",
"upload_time_iso_8601": "2023-04-19T20:39:56.784524Z",
"url": "https://files.pythonhosted.org/packages/a4/79/2433a278febc82c8887dd1d26aa4a861a3d01c38751d653eccdb25371461/asyncpg_rkt-0.27.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4717d8d8bc38480c34f9c02760684efa3cf8d1a125836d5fa383b70145770200",
"md5": "da509c4e1bd61854ae8a66ec1a0a09e3",
"sha256": "d714470e38305fe805a83ff9ee8056ef6d23dc88c18e28cfa8d86b0636d420d6"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp310-cp310-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "da509c4e1bd61854ae8a66ec1a0a09e3",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7.0",
"size": 3364364,
"upload_time": "2023-04-19T20:39:59",
"upload_time_iso_8601": "2023-04-19T20:39:59.238736Z",
"url": "https://files.pythonhosted.org/packages/47/17/d8d8bc38480c34f9c02760684efa3cf8d1a125836d5fa383b70145770200/asyncpg_rkt-0.27.3-cp310-cp310-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5c090eb9c136f0687b2bb09135ec812cc1eb8f36c0abcdaf011196c429cc7850",
"md5": "a88ff637609b2878cf3239eff0875187",
"sha256": "168287edb9b9b9286ae481c646892317cd7f58664865a53341d519f28ec7d15d"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "a88ff637609b2878cf3239eff0875187",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.7.0",
"size": 559624,
"upload_time": "2023-04-19T20:40:01",
"upload_time_iso_8601": "2023-04-19T20:40:01.891478Z",
"url": "https://files.pythonhosted.org/packages/5c/09/0eb9c136f0687b2bb09135ec812cc1eb8f36c0abcdaf011196c429cc7850/asyncpg_rkt-0.27.3-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "324a648bd9121a2c7709e430923749e4e36e021cc9e3c5c98035fd5356716470",
"md5": "e48ff8ad3cab4a5cd515c6eaf763df68",
"sha256": "8d1dc0720509ae57a1827c75f7067a24227aef3ea9e757c6fc1b8066296cbaf9"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "e48ff8ad3cab4a5cd515c6eaf763df68",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7.0",
"size": 670202,
"upload_time": "2023-04-19T20:40:03",
"upload_time_iso_8601": "2023-04-19T20:40:03.794960Z",
"url": "https://files.pythonhosted.org/packages/32/4a/648bd9121a2c7709e430923749e4e36e021cc9e3c5c98035fd5356716470/asyncpg_rkt-0.27.3-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f289863948155de3448832526e600ee5b076073ff001598af389f8e9b4ffc655",
"md5": "1ad0b588f4a578794b9eb9560ef3c3ed",
"sha256": "33ff2f172414622f99947c8ef1825962111e9a58acc62d7ca1180044db1cf5b8"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "1ad0b588f4a578794b9eb9560ef3c3ed",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7.0",
"size": 2953084,
"upload_time": "2023-04-19T20:40:05",
"upload_time_iso_8601": "2023-04-19T20:40:05.755988Z",
"url": "https://files.pythonhosted.org/packages/f2/89/863948155de3448832526e600ee5b076073ff001598af389f8e9b4ffc655/asyncpg_rkt-0.27.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fd77812e101c3bacf66738cbed14c23b5075ff7fc0c9fd197559e9f8ef409dc1",
"md5": "cb87a53679b2b98157fd19efba72a5af",
"sha256": "c96755890cf818b40b087b8c9acdc8c1dd2b3dc13aa4b36296ba9ca89f420c8c"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp311-cp311-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "cb87a53679b2b98157fd19efba72a5af",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7.0",
"size": 3533576,
"upload_time": "2023-04-19T20:40:08",
"upload_time_iso_8601": "2023-04-19T20:40:08.089051Z",
"url": "https://files.pythonhosted.org/packages/fd/77/812e101c3bacf66738cbed14c23b5075ff7fc0c9fd197559e9f8ef409dc1/asyncpg_rkt-0.27.3-cp311-cp311-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "67e8e017cc0a65469cb9867f8918ad3d2a0ed61d098832970e2c0455695912df",
"md5": "332004359dfa7d3f7605216827075922",
"sha256": "5375dffd414f2bb53064afacfa738b2e0ca8435db41b96ca1ab7643921d3dae7"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "332004359dfa7d3f7605216827075922",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.7.0",
"size": 551213,
"upload_time": "2023-04-19T20:40:09",
"upload_time_iso_8601": "2023-04-19T20:40:09.523719Z",
"url": "https://files.pythonhosted.org/packages/67/e8/e017cc0a65469cb9867f8918ad3d2a0ed61d098832970e2c0455695912df/asyncpg_rkt-0.27.3-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3621804b522e1da22d64d2b55f1c92f44b6e5b8e503cb4a108cbb1f9ae62f8c7",
"md5": "c57920d2a9ed1c30fe5919e64b8500d2",
"sha256": "0a093e33909f3ef82f25a6fff8006afb31894fa90c72d8f4a349b2d3de4b539c"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "c57920d2a9ed1c30fe5919e64b8500d2",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7.0",
"size": 694794,
"upload_time": "2023-04-19T20:40:11",
"upload_time_iso_8601": "2023-04-19T20:40:11.824326Z",
"url": "https://files.pythonhosted.org/packages/36/21/804b522e1da22d64d2b55f1c92f44b6e5b8e503cb4a108cbb1f9ae62f8c7/asyncpg_rkt-0.27.3-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6cfca3973223a9880057cdac6df0ceff3c786ec0405b6d80c93b4e13220d26f6",
"md5": "6529fbce9eaa88c53ac19b5db2156596",
"sha256": "2c5dfa236eefb2ff1c90d5662dca4f98521677ab9ab1ab01f6c84e26e07725e5"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "6529fbce9eaa88c53ac19b5db2156596",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7.0",
"size": 3326930,
"upload_time": "2023-04-19T20:40:14",
"upload_time_iso_8601": "2023-04-19T20:40:14.279489Z",
"url": "https://files.pythonhosted.org/packages/6c/fc/a3973223a9880057cdac6df0ceff3c786ec0405b6d80c93b4e13220d26f6/asyncpg_rkt-0.27.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0ab43fda468e1e248bb1fc6a4027ebace23d78a085aaa32770cd66ca547fc1fa",
"md5": "ca3dd9176dfb98d5317b174815615e0d",
"sha256": "90e01f3f983607e65e7edbe315c6a0e1429ed97da3c6d13bc6179b0ca772795c"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp38-cp38-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "ca3dd9176dfb98d5317b174815615e0d",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7.0",
"size": 3785475,
"upload_time": "2023-04-19T20:40:16",
"upload_time_iso_8601": "2023-04-19T20:40:16.713449Z",
"url": "https://files.pythonhosted.org/packages/0a/b4/3fda468e1e248bb1fc6a4027ebace23d78a085aaa32770cd66ca547fc1fa/asyncpg_rkt-0.27.3-cp38-cp38-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8098abe7e4ffc2c32fede71727a53fb110ba003015c63fc8f032dc71e001168a",
"md5": "495a14cfc7e0991b7a5bc5ed7ff422b3",
"sha256": "a5675018955a2efb272c6313c916e4ec1e7a569f523a8cef752480e756534e1e"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "495a14cfc7e0991b7a5bc5ed7ff422b3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.7.0",
"size": 574748,
"upload_time": "2023-04-19T20:40:18",
"upload_time_iso_8601": "2023-04-19T20:40:18.116388Z",
"url": "https://files.pythonhosted.org/packages/80/98/abe7e4ffc2c32fede71727a53fb110ba003015c63fc8f032dc71e001168a/asyncpg_rkt-0.27.3-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6a220d9691150fd89e45104fe333c41f33424a55629f126b2b3143ecb4b8f1ec",
"md5": "b0ef978b2881c6f2d2334d5b81d7a168",
"sha256": "ee09b3d855a7fb97db3e5c51455080b2ee2f5f449dd29c26ca23615c8ed03854"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "b0ef978b2881c6f2d2334d5b81d7a168",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7.0",
"size": 704183,
"upload_time": "2023-04-19T20:40:20",
"upload_time_iso_8601": "2023-04-19T20:40:20.109720Z",
"url": "https://files.pythonhosted.org/packages/6a/22/0d9691150fd89e45104fe333c41f33424a55629f126b2b3143ecb4b8f1ec/asyncpg_rkt-0.27.3-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8478b2e3a8e571f72ed0e83b466508cf962cf1a282a9228efe29ee15e5d9d9bd",
"md5": "c82bb06626f37ca201436bb50b1e9047",
"sha256": "0be243f8ee104fd447e3c8ac46694a85f84febddc54220774c1fad4d592b1f21"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "c82bb06626f37ca201436bb50b1e9047",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7.0",
"size": 2912978,
"upload_time": "2023-04-19T20:40:22",
"upload_time_iso_8601": "2023-04-19T20:40:22.050575Z",
"url": "https://files.pythonhosted.org/packages/84/78/b2e3a8e571f72ed0e83b466508cf962cf1a282a9228efe29ee15e5d9d9bd/asyncpg_rkt-0.27.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e83f07ba0d735b2fbfa981fe99d33d389cdb9b36b06b6dacc4de7657eab099cf",
"md5": "ab4137849982d2fb4d7369d6cb833c3f",
"sha256": "b9ca11382d3250ac9e28669329e0fbc18891c88063331086f229d9b2b6f4442e"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp39-cp39-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "ab4137849982d2fb4d7369d6cb833c3f",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7.0",
"size": 3433577,
"upload_time": "2023-04-19T20:40:24",
"upload_time_iso_8601": "2023-04-19T20:40:24.343030Z",
"url": "https://files.pythonhosted.org/packages/e8/3f/07ba0d735b2fbfa981fe99d33d389cdb9b36b06b6dacc4de7657eab099cf/asyncpg_rkt-0.27.3-cp39-cp39-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "aa2cda46fa72113d1413da15fcbdb37eca10d05b60606fbb17ce42a11ed73c7d",
"md5": "cdb31e553af225f0b64ccce79da3350d",
"sha256": "7e1cb69641043a92e54a6a155a57a4f5babde74936853f8553aa6a64668c9c05"
},
"downloads": -1,
"filename": "asyncpg_rkt-0.27.3-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "cdb31e553af225f0b64ccce79da3350d",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.7.0",
"size": 574215,
"upload_time": "2023-04-19T20:40:26",
"upload_time_iso_8601": "2023-04-19T20:40:26.667374Z",
"url": "https://files.pythonhosted.org/packages/aa/2c/da46fa72113d1413da15fcbdb37eca10d05b60606fbb17ce42a11ed73c7d/asyncpg_rkt-0.27.3-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7056c7fdd67ad9602499d3d0fe7596738a92b97b541078a9711f9de95de6eceb",
"md5": "09008d8747e3d1466d7ded1a5223329f",
"sha256": "36318dc9e354b7c9390dc684f66ef0ea42f6279b4ba0a943e84a0ab446f4759f"
},
"downloads": -1,
"filename": "asyncpg-rkt-0.27.3.tar.gz",
"has_sig": false,
"md5_digest": "09008d8747e3d1466d7ded1a5223329f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7.0",
"size": 884889,
"upload_time": "2023-04-19T20:40:28",
"upload_time_iso_8601": "2023-04-19T20:40:28.403948Z",
"url": "https://files.pythonhosted.org/packages/70/56/c7fdd67ad9602499d3d0fe7596738a92b97b541078a9711f9de95de6eceb/asyncpg-rkt-0.27.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-19 20:40:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "MagicStack",
"github_project": "asyncpg",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "asyncpg-rkt"
}