pgpq


Namepgpq JSON
Version 0.9.0 PyPI version JSON
download
home_page
SummaryArrow -> PostgreSQL encoder
upload_time2023-10-18 15:16:34
maintainer
docs_urlNone
authorAdrian Garcia Badaracco
requires_python>=3.7
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pgpq

Convert PyArrow RecordBatches to Postgres' native binary format.

## Usage

```python
"""Example for README.md"""
from tempfile import mkdtemp
import psycopg
import pyarrow.dataset as ds
import requests
from pgpq import ArrowToPostgresBinaryEncoder

# let's get some example data
tmpdir = mkdtemp()
with open(f"{tmpdir}/yellow_tripdata_2023-01.parquet", mode="wb") as f:
    resp = requests.get(
        "https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2023-01.parquet"
    )
    resp.raise_for_status()
    f.write(resp.content)

# load an arrow dataset
# arrow can load datasets from partitioned parquet files locally or in S3/GCS
# it handles buffering, matching globs, etc.
dataset = ds.dataset(tmpdir)

# create an encoder object which will do the encoding
# and give us the expected Postgres table schema
encoder = ArrowToPostgresBinaryEncoder(dataset.schema)
# get the expected Postgres destination schema
# note that this is _not_ the same as the incoming arrow schema
# and not necessarily the schema of your permanent table
# instead it's the schema of the data that will be sent over the wire
# which for example does not have timezones on any timestamps
pg_schema = encoder.schema()
# assemble ddl for a temporary table
# it's often a good idea to bulk load into a temp table to:
# (1) Avoid indexes
# (2) Stay in-memory as long as possible
# (3) Be more flexible with types
#     (you can't load a SMALLINT into a BIGINT column without casting)
cols = [f'"{col_name}" {col.data_type.ddl()}' for col_name, col in pg_schema.columns]
ddl = f"CREATE TEMP TABLE data ({','.join(cols)})"

with psycopg.connect("postgres://postgres:postgres@localhost:5432/postgres") as conn:
    with conn.cursor() as cursor:
        cursor.execute(ddl)  # type: ignore
        with cursor.copy("COPY data FROM STDIN WITH (FORMAT BINARY)") as copy:
            copy.write(encoder.write_header())
            for batch in dataset.to_batches():
                copy.write(encoder.write_batch(batch))
            copy.write(encoder.finish())
        # load into your actual table, possibly doing type casts
        # cursor.execute("INSERT INTO \"table\" SELECT * FROM data")
```


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "pgpq",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "",
    "author": "Adrian Garcia Badaracco",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/6d/4b/fb2642353f18b9cf60e7fe06711f705a1d57d9d108ee88012c95b4ddf586/pgpq-0.9.0.tar.gz",
    "platform": null,
    "description": "# pgpq\n\nConvert PyArrow RecordBatches to Postgres' native binary format.\n\n## Usage\n\n```python\n\"\"\"Example for README.md\"\"\"\nfrom tempfile import mkdtemp\nimport psycopg\nimport pyarrow.dataset as ds\nimport requests\nfrom pgpq import ArrowToPostgresBinaryEncoder\n\n# let's get some example data\ntmpdir = mkdtemp()\nwith open(f\"{tmpdir}/yellow_tripdata_2023-01.parquet\", mode=\"wb\") as f:\n    resp = requests.get(\n        \"https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2023-01.parquet\"\n    )\n    resp.raise_for_status()\n    f.write(resp.content)\n\n# load an arrow dataset\n# arrow can load datasets from partitioned parquet files locally or in S3/GCS\n# it handles buffering, matching globs, etc.\ndataset = ds.dataset(tmpdir)\n\n# create an encoder object which will do the encoding\n# and give us the expected Postgres table schema\nencoder = ArrowToPostgresBinaryEncoder(dataset.schema)\n# get the expected Postgres destination schema\n# note that this is _not_ the same as the incoming arrow schema\n# and not necessarily the schema of your permanent table\n# instead it's the schema of the data that will be sent over the wire\n# which for example does not have timezones on any timestamps\npg_schema = encoder.schema()\n# assemble ddl for a temporary table\n# it's often a good idea to bulk load into a temp table to:\n# (1) Avoid indexes\n# (2) Stay in-memory as long as possible\n# (3) Be more flexible with types\n#     (you can't load a SMALLINT into a BIGINT column without casting)\ncols = [f'\"{col_name}\" {col.data_type.ddl()}' for col_name, col in pg_schema.columns]\nddl = f\"CREATE TEMP TABLE data ({','.join(cols)})\"\n\nwith psycopg.connect(\"postgres://postgres:postgres@localhost:5432/postgres\") as conn:\n    with conn.cursor() as cursor:\n        cursor.execute(ddl)  # type: ignore\n        with cursor.copy(\"COPY data FROM STDIN WITH (FORMAT BINARY)\") as copy:\n            copy.write(encoder.write_header())\n            for batch in dataset.to_batches():\n                copy.write(encoder.write_batch(batch))\n            copy.write(encoder.finish())\n        # load into your actual table, possibly doing type casts\n        # cursor.execute(\"INSERT INTO \\\"table\\\" SELECT * FROM data\")\n```\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Arrow -> PostgreSQL encoder",
    "version": "0.9.0",
    "project_urls": {
        "documentation": "https://github.com/adriangb/pgpq/README.md",
        "homepage": "https://github.com/adriangb/pgpq",
        "repository": "https://github.com/adriangb/pgpq"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ca5b3ec6ced557b6bde764c8bf527c4fef10ba4fe8ae50c399b74feb30bcc40d",
                "md5": "28e298dffeb74431b21301f13aaf9db4",
                "sha256": "5d16e6f8c86339ae376e9f62ec5a15e73a1af4e39f982bf456904c03395eb2fa"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "28e298dffeb74431b21301f13aaf9db4",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 563723,
            "upload_time": "2023-10-18T15:15:55",
            "upload_time_iso_8601": "2023-10-18T15:15:55.079541Z",
            "url": "https://files.pythonhosted.org/packages/ca/5b/3ec6ced557b6bde764c8bf527c4fef10ba4fe8ae50c399b74feb30bcc40d/pgpq-0.9.0-cp37-abi3-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5f146bdd50f6bef237f398a6b3f6c335568c596c39b5c62d0a1a6e44b0441c1e",
                "md5": "6a709f02eaff9c5a191a50b4b59c39ad",
                "sha256": "b1c11911f7481b82c1a5272792953e40efe1d7e49290d4da787f5a927a1f3b1b"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "has_sig": false,
            "md5_digest": "6a709f02eaff9c5a191a50b4b59c39ad",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 1092773,
            "upload_time": "2023-10-18T15:15:57",
            "upload_time_iso_8601": "2023-10-18T15:15:57.061909Z",
            "url": "https://files.pythonhosted.org/packages/5f/14/6bdd50f6bef237f398a6b3f6c335568c596c39b5c62d0a1a6e44b0441c1e/pgpq-0.9.0-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e78f8dc0ddfafa31a35d0c32429b8d43583a79ac9369366c6b52a7ef6477f1a5",
                "md5": "4fde2e9b4b5d9a4da66b7598f4b206bc",
                "sha256": "ea47fcd7c5fae68f77a12a3a1b32d68f2f28a0dbccb98d89366d6e5973bb5c26"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "4fde2e9b4b5d9a4da66b7598f4b206bc",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 572005,
            "upload_time": "2023-10-18T15:15:58",
            "upload_time_iso_8601": "2023-10-18T15:15:58.591468Z",
            "url": "https://files.pythonhosted.org/packages/e7/8f/8dc0ddfafa31a35d0c32429b8d43583a79ac9369366c6b52a7ef6477f1a5/pgpq-0.9.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "27fd3359b4079439cc8d0e8746fadede0198de09a8f0c899c804f01ebcad8a19",
                "md5": "78a129c810ae6bfce966f3c677adad3a",
                "sha256": "cd00b7bb24e58d7dc14e7a1f51f15c5f6f69ad64502f8ee68b6963c214d10a86"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "78a129c810ae6bfce966f3c677adad3a",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 543310,
            "upload_time": "2023-10-18T15:16:00",
            "upload_time_iso_8601": "2023-10-18T15:16:00.031967Z",
            "url": "https://files.pythonhosted.org/packages/27/fd/3359b4079439cc8d0e8746fadede0198de09a8f0c899c804f01ebcad8a19/pgpq-0.9.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6c1449decb622edf24b0b5a3a1841748ba455caed9e024a3fa3fdc6ad1320427",
                "md5": "69bfa135ee973c837ee1ab0bb65dae3c",
                "sha256": "ea460f7abdd1bb17fdc8b2312f63f141d5e93c21a28f93dd47309db4a5cdfa01"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "69bfa135ee973c837ee1ab0bb65dae3c",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 842149,
            "upload_time": "2023-10-18T15:16:03",
            "upload_time_iso_8601": "2023-10-18T15:16:03.791668Z",
            "url": "https://files.pythonhosted.org/packages/6c/14/49decb622edf24b0b5a3a1841748ba455caed9e024a3fa3fdc6ad1320427/pgpq-0.9.0-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b09f7812366dd4e04d003e6209bf70a81e884d9685bb2840e66056ccb7f72bdc",
                "md5": "682e45caef0bf5e30765f8fc2e8d8126",
                "sha256": "d39a369f2b77db2428850d85622ed5fa0506fc89a58ac9122cb83c1535273231"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",
            "has_sig": false,
            "md5_digest": "682e45caef0bf5e30765f8fc2e8d8126",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 893330,
            "upload_time": "2023-10-18T15:16:02",
            "upload_time_iso_8601": "2023-10-18T15:16:02.159476Z",
            "url": "https://files.pythonhosted.org/packages/b0/9f/7812366dd4e04d003e6209bf70a81e884d9685bb2840e66056ccb7f72bdc/pgpq-0.9.0-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b4083d6f0c5086d8059ff9ac53785a34dbf6bb3f4cac4ffab8ec7cd5aa23141e",
                "md5": "971822f5388fb89ade70189471e8a321",
                "sha256": "a15a348d695e0a4a4998ab1ef0b8bbf5b927cbf53a124a89f9b7c3c51967833d"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "971822f5388fb89ade70189471e8a321",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 789915,
            "upload_time": "2023-10-18T15:16:05",
            "upload_time_iso_8601": "2023-10-18T15:16:05.480359Z",
            "url": "https://files.pythonhosted.org/packages/b4/08/3d6f0c5086d8059ff9ac53785a34dbf6bb3f4cac4ffab8ec7cd5aa23141e/pgpq-0.9.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5e1e0561c2fa8ca9f43781aba5cd3badb379bd3c59d39538cee9ef1461cf8fbd",
                "md5": "1f74ff90478199af1a4d5d447114cb55",
                "sha256": "9a34708f8a1d5ad202c5e7726969638f0dadffd8a9463ef23c00db51e3a110ec"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1f74ff90478199af1a4d5d447114cb55",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 604641,
            "upload_time": "2023-10-18T15:16:07",
            "upload_time_iso_8601": "2023-10-18T15:16:07.332030Z",
            "url": "https://files.pythonhosted.org/packages/5e/1e/0561c2fa8ca9f43781aba5cd3badb379bd3c59d39538cee9ef1461cf8fbd/pgpq-0.9.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2b1d9d465ea07f59fe3c256af3a0f40713b59646bed0a8366b26cf63a9888f9f",
                "md5": "b3823bc80ac64827b8aea92356e3e7a9",
                "sha256": "105b9bca22409fbb8adc8f2c1fc29d887c8d3bfdb8ab0defe911226f1681d3b1"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "b3823bc80ac64827b8aea92356e3e7a9",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 638664,
            "upload_time": "2023-10-18T15:16:08",
            "upload_time_iso_8601": "2023-10-18T15:16:08.728860Z",
            "url": "https://files.pythonhosted.org/packages/2b/1d/9d465ea07f59fe3c256af3a0f40713b59646bed0a8366b26cf63a9888f9f/pgpq-0.9.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7cfe10edc9c81f5fbc7cceffb1d5415bd7ef441021791192956f0ffd59254d79",
                "md5": "42c021d8e7fd76083345c080a7b36470",
                "sha256": "5fac7b1c0f64e0bf7f0c11e81720b527593acc2b83c48d20669fd059e5e67f24"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "42c021d8e7fd76083345c080a7b36470",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 749664,
            "upload_time": "2023-10-18T15:16:10",
            "upload_time_iso_8601": "2023-10-18T15:16:10.579870Z",
            "url": "https://files.pythonhosted.org/packages/7c/fe/10edc9c81f5fbc7cceffb1d5415bd7ef441021791192956f0ffd59254d79/pgpq-0.9.0-cp37-abi3-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "07680db33bc0540789ba6ec2b8eda176a7fbd309f6dfc26bd056981de46e77c9",
                "md5": "c5ed8ce413bce8df5555d3109c97e7e0",
                "sha256": "07068d5bf10fc54fafa6e28ed2c7551422d3366cce931f706ec184ed19ebac73"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "c5ed8ce413bce8df5555d3109c97e7e0",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 806469,
            "upload_time": "2023-10-18T15:16:12",
            "upload_time_iso_8601": "2023-10-18T15:16:12.070478Z",
            "url": "https://files.pythonhosted.org/packages/07/68/0db33bc0540789ba6ec2b8eda176a7fbd309f6dfc26bd056981de46e77c9/pgpq-0.9.0-cp37-abi3-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7c647703af6d71c9e5be32015f6a9ecffc797b09bf7ce071a2f0c62c1b3ecdff",
                "md5": "d6abdbbe361bb22fe8d89b9d7b2eb131",
                "sha256": "3e7cd18d0fa7fc216216561686cfa1da1c0ce6f2e175771b6f291edcdc0fb7b5"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "d6abdbbe361bb22fe8d89b9d7b2eb131",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 787550,
            "upload_time": "2023-10-18T15:16:13",
            "upload_time_iso_8601": "2023-10-18T15:16:13.984726Z",
            "url": "https://files.pythonhosted.org/packages/7c/64/7703af6d71c9e5be32015f6a9ecffc797b09bf7ce071a2f0c62c1b3ecdff/pgpq-0.9.0-cp37-abi3-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f81ec86c3c8807d48eccddc555e74c3c130d2baa07d1ff0626d87c8d7e2932bc",
                "md5": "11e933a4f7789d8bad10d60c035e7aa9",
                "sha256": "acd844a36807db1ecb18289f24001d44a3fc8aefff01fe6f7a4b352fda659960"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "11e933a4f7789d8bad10d60c035e7aa9",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 776250,
            "upload_time": "2023-10-18T15:16:15",
            "upload_time_iso_8601": "2023-10-18T15:16:15.433033Z",
            "url": "https://files.pythonhosted.org/packages/f8/1e/c86c3c8807d48eccddc555e74c3c130d2baa07d1ff0626d87c8d7e2932bc/pgpq-0.9.0-cp37-abi3-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3819896bec40ba040141cfb4bf028c940152ccd6ca80bfc756a70ea6bdcad041",
                "md5": "315a104fa250822198018d9faa559da9",
                "sha256": "56d06b6c2acdb0331135b298ffc6c9ea9c2785e153256c5cc1d2adbc0c85d096"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-win32.whl",
            "has_sig": false,
            "md5_digest": "315a104fa250822198018d9faa559da9",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 442228,
            "upload_time": "2023-10-18T15:16:17",
            "upload_time_iso_8601": "2023-10-18T15:16:17.146881Z",
            "url": "https://files.pythonhosted.org/packages/38/19/896bec40ba040141cfb4bf028c940152ccd6ca80bfc756a70ea6bdcad041/pgpq-0.9.0-cp37-abi3-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "df96e8f76dfcf12cbb40bda62867ec96aea19af626439578a0a602b309085973",
                "md5": "1844874c39ce1c8469539a78f2cc88d8",
                "sha256": "1058f1ebb6cf2e879351c42af4cc7836bcd239cdff9690ba5c738b74450e9cc7"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-cp37-abi3-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1844874c39ce1c8469539a78f2cc88d8",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.7",
            "size": 501010,
            "upload_time": "2023-10-18T15:16:18",
            "upload_time_iso_8601": "2023-10-18T15:16:18.445688Z",
            "url": "https://files.pythonhosted.org/packages/df/96/e8f76dfcf12cbb40bda62867ec96aea19af626439578a0a602b309085973/pgpq-0.9.0-cp37-abi3-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0a1598a0775d95bac085746d25fb320b78ffdca8abf029da2e5f5067dca5395f",
                "md5": "f0f13b66ccfa25ee7a41dd95bacee150",
                "sha256": "c6463e1b28ffc33efcb37d7fc5d4bf144078fc2f4bd8fc74c114e9883ae66b76"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f0f13b66ccfa25ee7a41dd95bacee150",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 565477,
            "upload_time": "2023-10-18T15:16:20",
            "upload_time_iso_8601": "2023-10-18T15:16:20.272269Z",
            "url": "https://files.pythonhosted.org/packages/0a/15/98a0775d95bac085746d25fb320b78ffdca8abf029da2e5f5067dca5395f/pgpq-0.9.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c5785535b0c119b987d90e57192e2549b6923868416a6c388b98aa4edffc6096",
                "md5": "cdbec72a1182a888a8307b88148be990",
                "sha256": "259b0aca8b06a1757dc16e668457a3a30a8074cd095612c2312c2e400e7f5418"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "cdbec72a1182a888a8307b88148be990",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 575646,
            "upload_time": "2023-10-18T15:16:22",
            "upload_time_iso_8601": "2023-10-18T15:16:22.220247Z",
            "url": "https://files.pythonhosted.org/packages/c5/78/5535b0c119b987d90e57192e2549b6923868416a6c388b98aa4edffc6096/pgpq-0.9.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7b8f492eb30c71d0bbf4e63396eeaceadc60a78b366413568c28bd4ecd6b3d0",
                "md5": "9a48d4160e28a9efc4fb7641ae2d5fe5",
                "sha256": "98aa74978b0b85076aaec6022bc0cef68417ac8922d8e53e7c8deabe70f35bab"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9a48d4160e28a9efc4fb7641ae2d5fe5",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.7",
            "size": 609155,
            "upload_time": "2023-10-18T15:16:23",
            "upload_time_iso_8601": "2023-10-18T15:16:23.824123Z",
            "url": "https://files.pythonhosted.org/packages/a7/b8/f492eb30c71d0bbf4e63396eeaceadc60a78b366413568c28bd4ecd6b3d0/pgpq-0.9.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6ee82e8dc2b4128619d5b764a673249b77bcbedf22dc9a9d895770850b9cb48b",
                "md5": "fd96e85f93d603dcca7e7ae6bdb97097",
                "sha256": "a8f963b79b54e10d6ce015b37a6ede386e9db450780623453cdcef18407d646c"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fd96e85f93d603dcca7e7ae6bdb97097",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 563714,
            "upload_time": "2023-10-18T15:16:25",
            "upload_time_iso_8601": "2023-10-18T15:16:25.466662Z",
            "url": "https://files.pythonhosted.org/packages/6e/e8/2e8dc2b4128619d5b764a673249b77bcbedf22dc9a9d895770850b9cb48b/pgpq-0.9.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9583e2821409067d6a71955af2ec01297c7fb4ee10dfbf307663b71b663ae6c7",
                "md5": "dea4aa9a1a4fe1df18a5ae6acfb9d741",
                "sha256": "329ec29c9784f380d0321aac0886363b016bf7da394e5e72bd329fe34ed041e9"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "dea4aa9a1a4fe1df18a5ae6acfb9d741",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 572551,
            "upload_time": "2023-10-18T15:16:26",
            "upload_time_iso_8601": "2023-10-18T15:16:26.774421Z",
            "url": "https://files.pythonhosted.org/packages/95/83/e2821409067d6a71955af2ec01297c7fb4ee10dfbf307663b71b663ae6c7/pgpq-0.9.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "99a83e3d173e0df878309a2bf67faa1f3c07e026c1a952c16f7086f344203807",
                "md5": "3c51218487f662a28b7779b0f3440aa5",
                "sha256": "160836cecce86fa60c02ce25166ff20ae03f87957cd0f85ab4aacd64c9891730"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3c51218487f662a28b7779b0f3440aa5",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.7",
            "size": 605891,
            "upload_time": "2023-10-18T15:16:28",
            "upload_time_iso_8601": "2023-10-18T15:16:28.085899Z",
            "url": "https://files.pythonhosted.org/packages/99/a8/3e3d173e0df878309a2bf67faa1f3c07e026c1a952c16f7086f344203807/pgpq-0.9.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a24abe6cc6f93a218920ad0308ac47422f25e0612048b404627cbc6b8bc2c08b",
                "md5": "5f7a7771eb511330c041fe50820e5680",
                "sha256": "8c2ad904babf35d966a441a1a6680b6eaef0a47093047c2914d86c8c0b5530a8"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5f7a7771eb511330c041fe50820e5680",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 563499,
            "upload_time": "2023-10-18T15:16:29",
            "upload_time_iso_8601": "2023-10-18T15:16:29.814405Z",
            "url": "https://files.pythonhosted.org/packages/a2/4a/be6cc6f93a218920ad0308ac47422f25e0612048b404627cbc6b8bc2c08b/pgpq-0.9.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "885b6b3a353258f09dbca0c466ba9aa0f0cd7d3382e829ce4af593be8e47f49f",
                "md5": "b0cd9accaeda462e0a01174a79912777",
                "sha256": "ea1e93168d79a30f99f17f0279e65978e6877b09097b0106503b7b543747aeaf"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b0cd9accaeda462e0a01174a79912777",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 572789,
            "upload_time": "2023-10-18T15:16:31",
            "upload_time_iso_8601": "2023-10-18T15:16:31.566362Z",
            "url": "https://files.pythonhosted.org/packages/88/5b/6b3a353258f09dbca0c466ba9aa0f0cd7d3382e829ce4af593be8e47f49f/pgpq-0.9.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "490bb1480d4d2daf1018489f340b2cc3c9653386eb1173cab963c3af61da4498",
                "md5": "5e5140ff363212e43a42743443c97de5",
                "sha256": "905f820238b970a516cbbd7fe5fed576ba157bd054da8abcae9c3d9e39447605"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5e5140ff363212e43a42743443c97de5",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.7",
            "size": 605555,
            "upload_time": "2023-10-18T15:16:33",
            "upload_time_iso_8601": "2023-10-18T15:16:33.021024Z",
            "url": "https://files.pythonhosted.org/packages/49/0b/b1480d4d2daf1018489f340b2cc3c9653386eb1173cab963c3af61da4498/pgpq-0.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d4bfb2642353f18b9cf60e7fe06711f705a1d57d9d108ee88012c95b4ddf586",
                "md5": "a6252a4372c7c6e771c313aa280bd97e",
                "sha256": "7341d9a2c9d905fd782aac4c7c24b98340995a5454f83d36c4918fcafca3d5d8"
            },
            "downloads": -1,
            "filename": "pgpq-0.9.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a6252a4372c7c6e771c313aa280bd97e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 24901,
            "upload_time": "2023-10-18T15:16:34",
            "upload_time_iso_8601": "2023-10-18T15:16:34.376801Z",
            "url": "https://files.pythonhosted.org/packages/6d/4b/fb2642353f18b9cf60e7fe06711f705a1d57d9d108ee88012c95b4ddf586/pgpq-0.9.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-10-18 15:16:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "adriangb",
    "github_project": "pgpq",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pgpq"
}
        
Elapsed time: 0.39182s