{ "info": { "author": "JR Conlin", "author_email": "src+webpusher@jrconlin.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP" ], "description": "`Build Status `__\n`Requirements\nStatus `__\n\nWebpush Data encryption library for Python\n==========================================\n\nThis is a work in progress. This library is available on `pypi as\npywebpush `__. Source is\navailable on `github `__.\n\nInstallation\n------------\n\nYou\u2019ll need to run ``python virtualenv``. Then\n\n::\n\n bin/pip install -r requirements.txt\n bin/python setup.py develop\n\nUsage\n-----\n\nIn the browser, the promise handler for\n`registration.pushManager.subscribe() `__\nreturns a\n`PushSubscription `__\nobject. This object has a .toJSON() method that will return a JSON\nobject that contains all the info we need to encrypt and push data.\n\nAs illustration, a ``subscription_info`` object may look like:\n\n.. code:: json\n\n {\"endpoint\": \"https://updates.push.services.mozilla.com/push/v1/gAA...\", \"keys\": {\"auth\": \"k8J...\", \"p256dh\": \"BOr...\"}}\n\nHow you send the PushSubscription data to your backend, store it\nreferenced to the user who requested it, and recall it when there\u2019s a\nnew push subscription update is left as an exercise for the reader.\n\nSending Data using ``webpush()`` One Call\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nIn many cases, your code will be sending a single message to many\nrecipients. There\u2019s a \u201cOne Call\u201d function which will make things easier.\n\n.. code:: python\n\n from pywebpush import webpush\n\n webpush(subscription_info,\n data,\n vapid_private_key=\"Private Key or File Path[1]\",\n vapid_claims={\"sub\": \"mailto:YourEmailAddress\"})\n\nThis will encode ``data``, add the appropriate VAPID auth headers if\nrequired and send it to the push server identified in the\n``subscription_info`` block.\n\n**Parameters**\n\n*subscription_info* - The ``dict`` of the subscription info (described\nabove).\n\n*data* - can be any serial content (string, bit array, serialized JSON,\netc), but be sure that your receiving application is able to parse and\nunderstand it. (e.g. ``data = \"Mary had a little lamb.\"``)\n\n*content_type* - specifies the form of Encryption to use, either\n``'aes128gcm'`` or the deprecated ``'aesgcm'``. NOTE that not all User\nAgents can decrypt ``'aesgcm'``, so the library defaults to the RFC 8188\nstandard form.\n\n*vapid_claims* - a ``dict`` containing the VAPID claims required for\nauthorization (See\n`py_vapid `__\nfor more details). If ``aud`` is not specified, pywebpush will attempt\nto auto-fill from the ``endpoint``.\n\n*vapid_private_key* - Either a path to a VAPID EC2 private key PEM file,\nor a string containing the DER representation. (See\n`py_vapid `__\nfor more details.) The ``private_key`` may be a base64 encoded DER\nformatted private key, or the path to an OpenSSL exported private key\nfile.\n\ne.g.\u00a0the output of:\n\n::\n\n openssl ecparam -name prime256v1 -genkey -noout -out private_key.pem\n\n**Example**\n\n.. code:: python\n\n from pywebpush import webpush, WebPushException\n\n try:\n webpush(\n subscription_info={\n \"endpoint\": \"https://push.example.com/v1/12345\",\n \"keys\": {\n \"p256dh\": \"0123abcde...\",\n \"auth\": \"abc123...\"\n }},\n data=\"Mary had a little lamb, with a nice mint jelly\",\n vapid_private_key=\"path/to/vapid_private.pem\",\n vapid_claims={\n \"sub\": \"mailto:YourNameHere@example.org\",\n }\n )\n except WebPushException as ex:\n print(\"I'm sorry, Dave, but I can't do that: {}\", repr(ex))\n # Mozilla returns additional information in the body of the response.\n if ex.response and ex.response.json():\n extra = ex.response.json()\n print(\"Remote service replied with a {}:{}, {}\",\n extra.code,\n extra.errno,\n extra.message\n )\n\nMethods\n~~~~~~~\n\nIf you expect to resend to the same recipient, or have more needs than\njust sending data quickly, you can pass just\n``wp = WebPusher(subscription_info)``. This will return a ``WebPusher``\nobject.\n\nThe following methods are available:\n\n``.send(data, headers={}, ttl=0, gcm_key=\"\", reg_id=\"\", content_encoding=\"aes128gcm\", curl=False, timeout=None)``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nSend the data using additional parameters. On error, returns a\n``WebPushException``\n\n**Parameters**\n\n*data* Binary string of data to send\n\n*headers* A ``dict`` containing any additional headers to send\n\n*ttl* Message Time To Live on Push Server waiting for the client to\nreconnect (in seconds)\n\n*gcm_key* Google Cloud Messaging key (if using the older GCM push\nsystem) This is the API key obtained from the Google Developer Console.\n\n*reg_id* Google Cloud Messaging registration ID (will be extracted from\nendpoint if not specified)\n\n*content_encoding* ECE content encoding type (defaults to \u201caes128gcm\u201d)\n\n*curl* Do not execute the POST, but return as a ``curl`` command. This\nwill write the encrypted content to a local file named\n``encrpypted.data``. This command is meant to be used for debugging\npurposes.\n\n*timeout* timeout for requests POST query. See `requests\ndocumentation `__.\n\n**Example**\n\nto send from Chrome using the old GCM mode:\n\n.. code:: python\n\n WebPusher(subscription_info).send(data, headers, ttl, gcm_key)\n\n``.encode(data, content_encoding=\"aes128gcm\")``\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nEncode the ``data`` for future use. On error, returns a\n``WebPushException``\n\n**Parameters**\n\n*data* Binary string of data to send\n\n*content_encoding* ECE content encoding type (defaults to \u201caes128gcm\u201d)\n\n**Example**\n\n.. code:: python\n\n encoded_data = WebPush(subscription_info).encode(data)\n\nStand Alone Webpush\n-------------------\n\nIf you\u2019re not really into coding your own solution, there\u2019s also a\n\u201cstand-alone\u201d ``pywebpush`` command in the ./bin directory.\n\nThis uses two files: \\* the *data* file, which contains the message to\nsend, in whatever form you like. \\* the *subscription info* file, which\ncontains the subscription information as JSON encoded data. This is\nusually returned by the Push ``subscribe`` method and looks something\nlike:\n\n.. code:: json\n\n {\"endpoint\": \"https://push...\",\n \"keys\": {\n \"auth\": \"ab01...\",\n \"p256dh\": \"aa02...\"\n }}\n\nIf you\u2019re interested in just testing your applications WebPush\ninterface, you could use the Command Line:\n\n.. code:: bash\n\n ./bin/pywebpush --data stuff_to_send.data --info subscription.info\n\nwhich will encrypt and send the contents of ``stuff_to_send.data``.\n\nSee ``./bin/pywebpush --help`` for available commands and options.\n\n\n# I am terrible at keeping this up-to-date.\n\n## 1.10.0 (2019-08-13)\nfeat: Add `--verbose` flag with some initial commentary\nbug: Update tests to use latest VAPID version\n\n## 1.9.4 (2019-05-09)\nbug: update vapid `exp` header if missing or expired\n\n## 0.7.0 (2017-02-14)\nfeat: update to http-ece 0.7.0 (with draft-06 support)\nfeat: Allow empty payloads for send()\nfeat: Add python3 classfiers & python3.6 travis tests\nfeat: Add README.rst\nbug: change long to int to support python3\n\n## 0.4.0 (2016-06-05)\nfeat: make python 2.7 / 3.5 polyglot\n\n## 0.3.4 (2016-05-17)\nbug: make header keys case insenstive\n\n## 0.3.3 (2016-05-17)\nbug: force key string encoding to utf8\n\n## 0.3.2 (2016-04-28)\nbug: fix setup.py issues\n\n## 0.3 (2016-04-27)\nfeat: added travis, normalized directories\n\n\n## 0.2 (2016-04-27)\nfeat: Added tests, restructured code\n\n\n## 0.1 (2016-04-25)\n\nInitial release", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/web-push-libs/pywebpush", "keywords": "push webpush publication", "license": "MPL2", "maintainer": "", "maintainer_email": "", "name": "pywebpush", "package_url": "https://pypi.org/project/pywebpush/", "platform": "", "project_url": "https://pypi.org/project/pywebpush/", "project_urls": { "Homepage": "https://github.com/web-push-libs/pywebpush" }, "release_url": "https://pypi.org/project/pywebpush/1.10.0/", "requires_dist": null, "requires_python": "", "summary": "WebPush publication library", "version": "1.10.0" }, "last_serial": 5673915, "releases": { "0.2": [ { "comment_text": "built for Linux-3.13.0-85-generic-x86_64-with-glibc2.4", "digests": { "md5": "510554da087b9e304093fc16482a4d05", "sha256": "ebb29159aef0914d07b9a83a531bc47b0156d35240b8b5b16bce9d67816777c2" }, "downloads": -1, "filename": "pywebpush-0.2.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "510554da087b9e304093fc16482a4d05", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 1913, "upload_time": "2016-04-27T17:07:43", "url": "https://files.pythonhosted.org/packages/8e/73/35b8a4a84bc32ed930fe0e977a5d13dc51ec3b2d8c353d6d35221e96327f/pywebpush-0.2.linux-x86_64.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "962db1d1b0b9e09b9ea5bac442a6196e", "sha256": "916c8c6b07f037102b8aef9af99b53a71e2be0444ada3aa0d6e7c62f861e8da6" }, "downloads": -1, "filename": "pywebpush-0.3.tar.gz", "has_sig": false, "md5_digest": "962db1d1b0b9e09b9ea5bac442a6196e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2350, "upload_time": "2016-04-27T19:49:02", "url": "https://files.pythonhosted.org/packages/dd/77/dd4625c605d9ceb45d95cf96065cf6332ef1841414d7d634846267cedcb9/pywebpush-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "d26c677b30941c09229b6e33a4fec700", "sha256": "63136c0af4e1be62af4b7a3eed98eb9730215591862d1eb65564aad4366180fc" }, "downloads": -1, "filename": "pywebpush-0.3.1.tar.gz", "has_sig": false, "md5_digest": "d26c677b30941c09229b6e33a4fec700", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8102, "upload_time": "2016-04-27T20:05:20", "url": "https://files.pythonhosted.org/packages/e7/39/d9be97e3b5116269d28ae7a68dac9cea371cdec3e1435bd8d52a090958cd/pywebpush-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "054dcab4034356d68848ed4723a3ef4e", "sha256": "1278bf4c7c072949597651d43fb5a30885d003ff3df5df276d4f8a6d33d75c40" }, "downloads": -1, "filename": "pywebpush-0.3.2.tar.gz", "has_sig": false, "md5_digest": "054dcab4034356d68848ed4723a3ef4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9780, "upload_time": "2016-04-28T21:03:30", "url": "https://files.pythonhosted.org/packages/c9/1e/29ab9f967c1bfdf2a9f2e0dc07ae74f7a58e4ae7f1d2fa4def328917ee75/pywebpush-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "16508327b7f5e06b6a7e8f4f81254d6c", "sha256": "046e68662f459da764d8b0f5a43994e6a0cae8c8bc822e438ad07fef21f53768" }, "downloads": -1, "filename": "pywebpush-0.3.3.tar.gz", "has_sig": false, "md5_digest": "16508327b7f5e06b6a7e8f4f81254d6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9866, "upload_time": "2016-05-17T17:30:20", "url": "https://files.pythonhosted.org/packages/5c/49/d6389e7464dfcc366d6af8b22a8547b062847e19bcebc7a7fb8240b9d41a/pywebpush-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "fca6246724309e2ad72b9c239af76485", "sha256": "544642281b461a640661bfc7dce82b312228a9cefd411941fae1392c39280e62" }, "downloads": -1, "filename": "pywebpush-0.3.4.tar.gz", "has_sig": false, "md5_digest": "fca6246724309e2ad72b9c239af76485", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10090, "upload_time": "2016-05-17T23:26:32", "url": "https://files.pythonhosted.org/packages/f2/54/d764750908e30f3474feea4fc50d65dfa72e6ee577f151a4a7a47a46d595/pywebpush-0.3.4.tar.gz" } ], "0.4.0": [ { "comment_text": "built for Linux-4.4.0-22-generic-x86_64-with-glibc2.7", "digests": { "md5": "59a5fab3beb531a64562b6f2b33d14c5", "sha256": "5f7072f9a655e79f5e2a64b620550f3378c8f0fe65215509d3017ddd57f07e1c" }, "downloads": -1, "filename": "pywebpush-0.4.0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "59a5fab3beb531a64562b6f2b33d14c5", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 7011, "upload_time": "2016-06-11T13:17:31", "url": "https://files.pythonhosted.org/packages/8d/cd/b74cacf633a188fbc246d817aa988c05d3005d747af0c111ea1864db5a0f/pywebpush-0.4.0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "868e34486fcf22205dd7245a72e41512", "sha256": "1fa75fa8a95882935681c46a13568dec1fa2d1bf1d916614f68e4ed9407c9fb6" }, "downloads": -1, "filename": "pywebpush-0.4.0.tar.gz", "has_sig": false, "md5_digest": "868e34486fcf22205dd7245a72e41512", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10665, "upload_time": "2016-06-16T17:26:44", "url": "https://files.pythonhosted.org/packages/d9/7e/547a772297e525ec1bc71925a3a0df74b4d75e5e3543ebedef222958ad66/pywebpush-0.4.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "5461781f4548e4dcc6f37a91ef506863", "sha256": "e1508fe1e9e62d37f68f765bca0afefa4b2bc42b590af6a4bfce2e96ef15f0c7" }, "downloads": -1, "filename": "pywebpush-0.6.0.tar.gz", "has_sig": false, "md5_digest": "5461781f4548e4dcc6f37a91ef506863", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10966, "upload_time": "2016-09-05T18:30:03", "url": "https://files.pythonhosted.org/packages/97/d5/c86d26e4fda93add5b198f2e6a0432d1b71705694b5a9534fd6dc756a632/pywebpush-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "b395888b4f54f36489acbcc3b2385761", "sha256": "d2551ad3ad1cbd63d815f728b580249ace9f421ed6f9b0b22a66267423be0451" }, "downloads": -1, "filename": "pywebpush-0.6.1.tar.gz", "has_sig": false, "md5_digest": "b395888b4f54f36489acbcc3b2385761", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11807, "upload_time": "2016-09-05T18:59:19", "url": "https://files.pythonhosted.org/packages/1e/aa/51c1a32212d929cd637c2ed020a52ff1979d1bf0e62560f36d3c9103ac51/pywebpush-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "66f3c7a7bcc927bed661c3eb7733deb0", "sha256": "ac672ded0d7918eadca35b9993feff2d07d46d5681a8bee9385cc1c7119095b3" }, "downloads": -1, "filename": "pywebpush-0.6.2.tar.gz", "has_sig": false, "md5_digest": "66f3c7a7bcc927bed661c3eb7733deb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11359, "upload_time": "2017-02-07T00:35:11", "url": "https://files.pythonhosted.org/packages/4b/75/3850fad7f25a33ceae7c0e262abb8af0e9ad56a1839d2a5c3851a8e10d03/pywebpush-0.6.2.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "dc1b114b782c8eaf02f2f1a0643c8bc9", "sha256": "2ae24b9310f04c944d6d27c2f7bb6aa872b3a4223629354c775c546924386a0b" }, "downloads": -1, "filename": "pywebpush-0.7.0.tar.gz", "has_sig": false, "md5_digest": "dc1b114b782c8eaf02f2f1a0643c8bc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11840, "upload_time": "2017-02-14T23:06:17", "url": "https://files.pythonhosted.org/packages/40/92/6fff79fee5f0535af59fa729ca0f1f014ca26753f03eba20137bf2dc98c9/pywebpush-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "60016b57cfa55285032a3c432cc934d9", "sha256": "d174c41ec8220fd22b241f827981c372a1521765b34caf8b3abdac80304056b7" }, "downloads": -1, "filename": "pywebpush-0.8.0.tar.gz", "has_sig": false, "md5_digest": "60016b57cfa55285032a3c432cc934d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18719, "upload_time": "2017-03-22T18:28:32", "url": "https://files.pythonhosted.org/packages/89/13/ac2b600cabe8f6bf3d60d67f0c0c3c556f075a0b64d0d95f54b3b7c3ca38/pywebpush-0.8.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "960505fd22b55e09890e780ddcf38b7f", "sha256": "334b38b62d43bcf8418a38934955a7a54dd62e1e0c5ec4875f75a73eccebd226" }, "downloads": -1, "filename": "pywebpush-1.0.0.tar.gz", "has_sig": false, "md5_digest": "960505fd22b55e09890e780ddcf38b7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18974, "upload_time": "2017-05-10T23:34:10", "url": "https://files.pythonhosted.org/packages/a6/9d/54a37b585a4e81a6dbf0ec71e8c7fd4f68fc2b46f924a79b42049274822e/pywebpush-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "ed07184525c399426f6106282a082ee3", "sha256": "f3363f4572260fd28c9b17d12863302337bec963204f8524dccda15889a63498" }, "downloads": -1, "filename": "pywebpush-1.0.1.tar.gz", "has_sig": false, "md5_digest": "ed07184525c399426f6106282a082ee3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18920, "upload_time": "2017-05-15T16:28:58", "url": "https://files.pythonhosted.org/packages/8e/68/32824aec9403ab789c729712d531a2a052b903d0769125d84af2b0a63587/pywebpush-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "206d81b88aa4d93c24757e6eaefe5b50", "sha256": "581b2b05febceb9808e917ead883dd5e6a3a121949c7fca6914b4438ffebe94b" }, "downloads": -1, "filename": "pywebpush-1.0.2.tar.gz", "has_sig": false, "md5_digest": "206d81b88aa4d93c24757e6eaefe5b50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18931, "upload_time": "2017-05-23T22:03:43", "url": "https://files.pythonhosted.org/packages/c8/25/25ea8ea6a1615a75e58d5390c8a2a6e2638a2b8fa2ead32dad08b847d6b3/pywebpush-1.0.2.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "86975e4b38d9ece3259eea3eb5275082", "sha256": "4aea33937a5f0c4e9dc761fa14cd4fb8e44c49c1e9b64ff3ef4df55e63df268f" }, "downloads": -1, "filename": "pywebpush-1.0.4.tar.gz", "has_sig": false, "md5_digest": "86975e4b38d9ece3259eea3eb5275082", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18936, "upload_time": "2017-06-05T14:47:32", "url": "https://files.pythonhosted.org/packages/23/39/8f5d7f0969f6e7ae391f91fc79c4e3b0c117c4344e40b7de6792a2384d99/pywebpush-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "c98ce757034cd9217d35e69f7fa89dec", "sha256": "ca3e697828329846e86d06222ef68257b75db218cc486882b9cbf4aacc625908" }, "downloads": -1, "filename": "pywebpush-1.0.5.tar.gz", "has_sig": false, "md5_digest": "c98ce757034cd9217d35e69f7fa89dec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18943, "upload_time": "2017-06-08T15:04:10", "url": "https://files.pythonhosted.org/packages/8a/c0/6f0fd66bae091b3b0517c40f41f7d04543d2ceac860152901c17f26ae5e8/pywebpush-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "141ffd183c045b01162d958ee323b0de", "sha256": "36dff2d2d529c89e8d9c385ef79437117132706de1c7f4a1eeb098e2138028d9" }, "downloads": -1, "filename": "pywebpush-1.0.6.tar.gz", "has_sig": false, "md5_digest": "141ffd183c045b01162d958ee323b0de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20830, "upload_time": "2017-07-17T18:23:44", "url": "https://files.pythonhosted.org/packages/0c/78/8be41b2266fa8db74f5851480e59c8664cbeedddd901ff7721cd3453a99f/pywebpush-1.0.6.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "45b4bea62eeb80d27d3edca96a25844a", "sha256": "8d3d00d89106f427562d94ad17e880c0e4f17811e8fa4ca66c15fed8db8027b4" }, "downloads": -1, "filename": "pywebpush-1.1.0.tar.gz", "has_sig": false, "md5_digest": "45b4bea62eeb80d27d3edca96a25844a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19166, "upload_time": "2017-07-26T15:51:42", "url": "https://files.pythonhosted.org/packages/6d/9a/624f791753b897eff86cc2934b4b3e0ded928b52613038ac8b6f27c4197c/pywebpush-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "5ad9e96449ff4810e3e64a2324e0ca96", "sha256": "066dd08ac0aaabb729f4632d67db1e91dee8bf619e5f6fc72e05ab57cad46d3e" }, "downloads": -1, "filename": "pywebpush-1.1.1.tar.gz", "has_sig": false, "md5_digest": "5ad9e96449ff4810e3e64a2324e0ca96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21552, "upload_time": "2017-12-04T23:05:46", "url": "https://files.pythonhosted.org/packages/c2/53/2027010f4d494c29e8421a9846c6ef8dbbefbad94eca73f0fa222a45bffd/pywebpush-1.1.1.tar.gz" } ], "1.10.0": [ { "comment_text": "", "digests": { "md5": "b65f242ec7ee3c7c27acf3647ea2e7a0", "sha256": "de8b7e638c6b595c6405f16fd5356e92d2feb8237ab4e50a89770e4ed93aebd6" }, "downloads": -1, "filename": "pywebpush-1.10.0.tar.gz", "has_sig": false, "md5_digest": "b65f242ec7ee3c7c27acf3647ea2e7a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23795, "upload_time": "2019-08-13T22:18:35", "url": "https://files.pythonhosted.org/packages/81/3f/5d91840bff754fe538c87912b48dbc81c9990607acc27bab4ca55f37b24e/pywebpush-1.10.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "9ce7f40f859ccb83245df440bd1847be", "sha256": "3d73fa0495808b7a687817fc0060ea5dcbad7d65770b53da618a4e0c9b0f996e" }, "downloads": -1, "filename": "pywebpush-1.2.0.tar.gz", "has_sig": false, "md5_digest": "9ce7f40f859ccb83245df440bd1847be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21560, "upload_time": "2017-10-03T20:54:16", "url": "https://files.pythonhosted.org/packages/8d/14/3aab936e6ed233b7bd0e647124c4106a48ce01f70b45d511675c7d0b6c6e/pywebpush-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "d9843f456dfb46d728eb66a7652e9634", "sha256": "9f2b98e6ee4e3a52f17529207e9482f34739c2420a3c3379827972dd2a7bfa5b" }, "downloads": -1, "filename": "pywebpush-1.3.0.tar.gz", "has_sig": false, "md5_digest": "d9843f456dfb46d728eb66a7652e9634", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21715, "upload_time": "2017-10-10T17:05:03", "url": "https://files.pythonhosted.org/packages/4f/c8/e88dbecfd2151323c7729cdf9b108bbeaa9eea73ebe2c4cccf9d4e7ac567/pywebpush-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "e2079e90dde803bbe4050c9433720db8", "sha256": "a7865d1d417cd695a67334c2df96473d3b424525f1f995e8b296920343276b4f" }, "downloads": -1, "filename": "pywebpush-1.3.1.tar.gz", "has_sig": false, "md5_digest": "e2079e90dde803bbe4050c9433720db8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21703, "upload_time": "2017-12-04T23:34:02", "url": "https://files.pythonhosted.org/packages/7b/91/ea3fc57c0cee11086790ad35af6345cbc86cd90925aa9c62f40e7788854a/pywebpush-1.3.1.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "7fbb59c4bdaed7fe3932af48fda07fd5", "sha256": "575f18d7939b9cb75766cc1f41232ef81e2d5265a406c48c46e36333679bc933" }, "downloads": -1, "filename": "pywebpush-1.4.0.tar.gz", "has_sig": false, "md5_digest": "7fbb59c4bdaed7fe3932af48fda07fd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21901, "upload_time": "2017-12-18T17:57:31", "url": "https://files.pythonhosted.org/packages/99/07/abff6576ab4a6b48072af39d2f73203e5032674747cda1420bdc2670891f/pywebpush-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "1a0d43784022bac0df6d66dbb5da0087", "sha256": "f05bed5ab40c9f021aecf4b4985edadb5e5701c2d28c590699541c35b1db6bc9" }, "downloads": -1, "filename": "pywebpush-1.5.0.tar.gz", "has_sig": false, "md5_digest": "1a0d43784022bac0df6d66dbb5da0087", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20860, "upload_time": "2018-01-07T01:01:15", "url": "https://files.pythonhosted.org/packages/8b/7c/d0c3331bc40b61bcbd59b53559914f443b7974983d89064eeab819c7958d/pywebpush-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "8e6ef4365970cd44e5db9e81575af319", "sha256": "40a61133f885c801092134256712bbd19d533c70bb382fed46cf2856c9e9816e" }, "downloads": -1, "filename": "pywebpush-1.6.0.tar.gz", "has_sig": false, "md5_digest": "8e6ef4365970cd44e5db9e81575af319", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20890, "upload_time": "2018-02-01T18:20:40", "url": "https://files.pythonhosted.org/packages/6b/19/c62e52c1ac418d84f3577252c5030c713d1f7657d493df6917ef93c1e501/pywebpush-1.6.0.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "7695adfb74dd320e2b2d966aa3fa8e7e", "sha256": "8b97d8c59234013d8b07797dcd1eff2ddbf7695233289ce27eff8e3969e28763" }, "downloads": -1, "filename": "pywebpush-1.6.1.tar.gz", "has_sig": false, "md5_digest": "7695adfb74dd320e2b2d966aa3fa8e7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20886, "upload_time": "2018-03-08T17:30:32", "url": "https://files.pythonhosted.org/packages/7a/81/e576ca2f4ed86fc74482b28d18cc298af7f51ca76d6180a92e0d7b406509/pywebpush-1.6.1.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "b98052b39e7b6380d55ed156bb42fbc3", "sha256": "53b46773a9023a42f45c922f76b610e02427a44748092b5e0a8f594fb347ed6d" }, "downloads": -1, "filename": "pywebpush-1.7.0.tar.gz", "has_sig": false, "md5_digest": "b98052b39e7b6380d55ed156bb42fbc3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22862, "upload_time": "2018-04-02T15:51:25", "url": "https://files.pythonhosted.org/packages/37/66/560df3cd2657405f6c75202db9ae18a85465bd1f1da4e6b2397837e93d0c/pywebpush-1.7.0.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "109645206d61e518efc598d3f3afd35b", "sha256": "0c2a75827f5544c6d28610340b5321527a7f072609407156e01fa3b0d4a48010" }, "downloads": -1, "filename": "pywebpush-1.8.0.tar.gz", "has_sig": false, "md5_digest": "109645206d61e518efc598d3f3afd35b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21821, "upload_time": "2019-01-07T16:35:48", "url": "https://files.pythonhosted.org/packages/29/72/7c54b90b0e80890e7cf33b3b22dc8beaa81ff6cfc5545d0ae1da7177af3f/pywebpush-1.8.0.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "31333342f964baa347f84d99e1a86b5b", "sha256": "ca35b850816f6b824e6179976a2eab252eb6d569de998aef74490172a6011577" }, "downloads": -1, "filename": "pywebpush-1.9.0.tar.gz", "has_sig": false, "md5_digest": "31333342f964baa347f84d99e1a86b5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21925, "upload_time": "2019-03-13T22:57:18", "url": "https://files.pythonhosted.org/packages/ce/51/38a4d1ec4160f16d1669f067150cdc9b1abcfb89d7657f83a70a32820551/pywebpush-1.9.0.tar.gz" } ], "1.9.1": [ { "comment_text": "", "digests": { "md5": "4c2358df144ea99ed4d667844f64d41a", "sha256": "b7c39f10fdec78d13f87c56b82de51ae00ce06c7c2db1b1c78bca300e251035c" }, "downloads": -1, "filename": "pywebpush-1.9.1.tar.gz", "has_sig": false, "md5_digest": "4c2358df144ea99ed4d667844f64d41a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21913, "upload_time": "2019-03-17T23:23:54", "url": "https://files.pythonhosted.org/packages/a2/f3/1932de8db53210c788945d7d1c57c08fc93334f39ce50b9f928fd1f6df25/pywebpush-1.9.1.tar.gz" } ], "1.9.2": [ { "comment_text": "", "digests": { "md5": "20f68de7c47cec833d4f2828506000b2", "sha256": "239711cb640904fee4646a5d5e262b93a091960904a151bfca6ce330eb5dcc4f" }, "downloads": -1, "filename": "pywebpush-1.9.2.tar.gz", "has_sig": false, "md5_digest": "20f68de7c47cec833d4f2828506000b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22223, "upload_time": "2019-04-02T20:35:00", "url": "https://files.pythonhosted.org/packages/a6/26/71fb28fb2c03820abd6e19df5c4e1e6f6257cdfdfc8f737c016b9c7a7b83/pywebpush-1.9.2.tar.gz" } ], "1.9.3": [ { "comment_text": "", "digests": { "md5": "ee06433d1ab49883026d27579f91858d", "sha256": "041d41a899aff72d3669176c9e049182cd0f52797418d98ea9e505f8685efc4e" }, "downloads": -1, "filename": "pywebpush-1.9.3.tar.gz", "has_sig": false, "md5_digest": "ee06433d1ab49883026d27579f91858d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23300, "upload_time": "2019-04-13T01:20:36", "url": "https://files.pythonhosted.org/packages/dc/43/026237916bf8c32aa5853ff0c5237547c4cb1c149979ec38db10b7cf181e/pywebpush-1.9.3.tar.gz" } ], "1.9.4": [ { "comment_text": "", "digests": { "md5": "572105e5454fb60bbdf8995dad3e107d", "sha256": "e3ded57c9715159f64a5624a656791ee9228b9e076ea0208baa73b53be8c130f" }, "downloads": -1, "filename": "pywebpush-1.9.4.tar.gz", "has_sig": false, "md5_digest": "572105e5454fb60bbdf8995dad3e107d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23586, "upload_time": "2019-05-09T17:10:29", "url": "https://files.pythonhosted.org/packages/a3/96/acc11373f5a6707f22e3beaaad4adaf6c2b6bb5fd6b302c52ea245de4920/pywebpush-1.9.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b65f242ec7ee3c7c27acf3647ea2e7a0", "sha256": "de8b7e638c6b595c6405f16fd5356e92d2feb8237ab4e50a89770e4ed93aebd6" }, "downloads": -1, "filename": "pywebpush-1.10.0.tar.gz", "has_sig": false, "md5_digest": "b65f242ec7ee3c7c27acf3647ea2e7a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23795, "upload_time": "2019-08-13T22:18:35", "url": "https://files.pythonhosted.org/packages/81/3f/5d91840bff754fe538c87912b48dbc81c9990607acc27bab4ca55f37b24e/pywebpush-1.10.0.tar.gz" } ] }