{ "info": { "author": "George Brighton", "author_email": "oss@gebn.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "pullover\n========\n\n.. image:: https://img.shields.io/pypi/status/pullover.svg\n :target: https://pypi.python.org/pypi/pullover\n.. image:: https://img.shields.io/pypi/v/pullover.svg\n :target: https://pypi.python.org/pypi/pullover\n.. image:: https://img.shields.io/pypi/pyversions/pullover.svg\n :target: https://pypi.python.org/pypi/pullover\n.. image:: https://readthedocs.org/projects/pullover/badge/?version=latest\n :target: http://pullover.readthedocs.io/en/latest/?badge=latest\n.. image:: https://travis-ci.org/gebn/pullover.svg?branch=master\n :target: https://travis-ci.org/gebn/pullover\n.. image:: https://coveralls.io/repos/github/gebn/pullover/badge.svg?branch=master\n :target: https://coveralls.io/github/gebn/pullover?branch=master\n\nThe simplest Pushover API wrapper for Python.\n\nFeatures\n--------\n\n- No extraneous requests - just sends non-emergency messages quickly and without fuss\n- Aims to get the basics right, and be open to extension for more advanced use cases\n- Timeouts and automatic back-off should Pushover be experiencing issues\n- Intuitive command-line interface with sane, parseable output\n- Unit and integration tested\n- Signed PyPi releases\n\nLimitations\n-----------\n\nPullover does not support:\n\n- Anything other than sending messages\n- Sending messages to a subset of a user's devices\n- Emergency messages\n- Customising the notification sound\n\nIf you need one of these, I'd recommend using Karan Lyons's Chump_ wrapper.\n\n.. _Chump: https://github.com/karanlyons/chump\n\nInstallation\n------------\n\n::\n\n $ pip install pullover\n\nModule\n-------\n\nThe following code snippets demonstrate the main features of pullover. For an exhaustive guide, see the documentation_.\n\n.. _documentation: https://pullover.readthedocs.io/en/latest/\n\nHigh-level\n~~~~~~~~~~\n\n.. code-block:: python\n\n import pullover\n\n response = pullover.send('message', 'user key', 'app token')\n if response.ok:\n print(response.id) # 647d2300-702c-4b38-8b2f-d56326ae460b\n\nLow-level\n~~~~~~~~~\n\n.. code-block:: python\n\n from pullover import Application, User, Message, ClientSendError, \\\n ServerSendError\n\n try:\n aws = Application('app token')\n george = User('user key')\n message = Message('message', title='hello')\n response = message.send(aws, george)\n response.raise_for_status()\n print(response.id) # 647d2300-702c-4b38-8b2f-d56326ae460b\n except ClientSendError as e:\n # it was our fault\n print(e.status, e.errors)\n except ServerSendError:\n # Pushover is having issues\n print(e.response.text)\n\nCLI\n---\n\nThe CLI supports the same functionality as the library.\n\n::\n\n $ pullover -a -u hello!\n 647d2300-702c-4b38-8b2f-d56326ae460b\n $ export PUSHOVER_APP_TOKEN=token\n $ export PUSHOVER_USER_KEY=key\n $ pullover hello!\n 647d2300-702c-4b38-8b2f-d56326ae460b\n $ pullover --help\n usage: pullover [-h] [-V] [-v] -a APP -u USER [-p PRIORITY] [-t TITLE]\n [--timestamp TIMESTAMP] [--url URL] [--url-title URL_TITLE]\n message\n\n The simplest Pushover API wrapper for Python.\n\n positional arguments:\n message the message content to send\n\n optional arguments:\n -h, --help show this help message and exit\n -V, --version show program's version number and exit\n -v, --verbosity increase output verbosity\n -a APP, --app APP the application token to send from; defaults to\n PUSHOVER_APP_TOKEN\n -u USER, --user USER the user key to send to; defaults to PUSHOVER_USER_KEY\n -p PRIORITY, --priority PRIORITY\n the priority of the message, either an integer or\n string (e.g. '0' or 'normal')\n -t TITLE, --title TITLE\n the title of the message; defaults to the name of the\n sending application\n --timestamp TIMESTAMP\n the timestamp of the message, in ISO 8601 format;\n defaults to now\n --url URL a url to include in footer of the message\n --url-title URL_TITLE\n the URL title; requires --url\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/gebn/pullover", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pullover", "package_url": "https://pypi.org/project/pullover/", "platform": "", "project_url": "https://pypi.org/project/pullover/", "project_urls": { "Homepage": "https://github.com/gebn/pullover" }, "release_url": "https://pypi.org/project/pullover/1.1.1/", "requires_dist": [ "backoff", "requests", "python-dateutil", "pytz", "six (>=1.9.0)" ], "requires_python": "", "summary": "The simplest Pushover API wrapper for Python.", "version": "1.1.1" }, "last_serial": 3217141, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "6d706a21aeb395aef5e7b4914ca1b10a", "sha256": "1b39ca1e98fa1fb52f1c08c604c8bbd2bcff82a8bf22059acbe1db7764de0ebf" }, "downloads": -1, "filename": "pullover-1.0.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "6d706a21aeb395aef5e7b4914ca1b10a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20161, "upload_time": "2017-10-01T17:20:37", "url": "https://files.pythonhosted.org/packages/bc/35/d90620efc157b4ca4c2738bf4c76ff9204e84afc8aaddb678d62e430c4c2/pullover-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0563efd9c908018bdc53d583d61560a7", "sha256": "5a4df2065ab9ebad192f773d9e79deb4f3bd98d463e56ca033328e65714d1b12" }, "downloads": -1, "filename": "pullover-1.0.0.tar.gz", "has_sig": true, "md5_digest": "0563efd9c908018bdc53d583d61560a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14322, "upload_time": "2017-10-01T17:20:48", "url": "https://files.pythonhosted.org/packages/10/5e/cfdbab7135b9a6caba0ea6bfe5d9dac0f9f338638812d662cfbbd8f5d620/pullover-1.0.0.tar.gz" } ], "1.0.0rc1": [ { "comment_text": "", "digests": { "md5": "84c3f096a1bc97598b41c8e11fecc752", "sha256": "d49a8f461ff43c7ff7cd898fde28e51a9b40b186d4cabd03ddbaba26fd506deb" }, "downloads": -1, "filename": "pullover-1.0.0rc1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "84c3f096a1bc97598b41c8e11fecc752", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12522, "upload_time": "2017-09-24T23:20:24", "url": "https://files.pythonhosted.org/packages/73/fd/19941edbbf53b51bc13d14f66ad1cbe516a54591a63eae2da9da4feb9606/pullover-1.0.0rc1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e665680e776a5ceb2279a1f93ea5d1d", "sha256": "a57cb6fcd218e2b1f9036f5342f069d33f99ad158a7a0754bbcfb6fb0cc9f1cd" }, "downloads": -1, "filename": "pullover-1.0.0rc1.tar.gz", "has_sig": true, "md5_digest": "8e665680e776a5ceb2279a1f93ea5d1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8334, "upload_time": "2017-09-24T23:20:33", "url": "https://files.pythonhosted.org/packages/4c/de/7e01e80ef562a4040fb6099812d7cbc44bf95ab8c6e584ed4ebaa81de3b4/pullover-1.0.0rc1.tar.gz" } ], "1.0.0rc2": [ { "comment_text": "", "digests": { "md5": "b35c97b1774f543e753142bd8ede2b2f", "sha256": "f6c45395d56a51981201a5d81b69c97d7b07b453b42a263175e3bbd2864af4d8" }, "downloads": -1, "filename": "pullover-1.0.0rc2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "b35c97b1774f543e753142bd8ede2b2f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15331, "upload_time": "2017-09-25T22:39:10", "url": "https://files.pythonhosted.org/packages/e8/70/4518d723af247a65830a119df79b77edc7b7f67323a43f756625b01f36a5/pullover-1.0.0rc2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6625aea325d2455a00971a859a596203", "sha256": "1cc567360370d91a5b73f8215970be5a3a7005279d114a66d002515d48cbf3d2" }, "downloads": -1, "filename": "pullover-1.0.0rc2.tar.gz", "has_sig": true, "md5_digest": "6625aea325d2455a00971a859a596203", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10426, "upload_time": "2017-09-25T22:39:20", "url": "https://files.pythonhosted.org/packages/27/39/4388a42b1122958a1f31c0958aa88393b49dc4cc4f1c47e0e812b92694cb/pullover-1.0.0rc2.tar.gz" } ], "1.0.0rc3": [ { "comment_text": "", "digests": { "md5": "8de564954b308909adecb5ce015fe060", "sha256": "859b5c3388d43ff87131d16392a619f03271362f7efe26fa17c120d6b9199a63" }, "downloads": -1, "filename": "pullover-1.0.0rc3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "8de564954b308909adecb5ce015fe060", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19317, "upload_time": "2017-10-01T01:04:59", "url": "https://files.pythonhosted.org/packages/6d/38/bf484cfb9bd6e3d34e22036e980a0016c3fb407496ef2485766c6cd3584f/pullover-1.0.0rc3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fed6c28de0673261045bed15b7bae484", "sha256": "ed0055b3b2ef3eaeb9eb4d54e0c62fcd6699b6f91240c725a14f49fa2d34f84e" }, "downloads": -1, "filename": "pullover-1.0.0rc3.tar.gz", "has_sig": true, "md5_digest": "fed6c28de0673261045bed15b7bae484", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13641, "upload_time": "2017-10-01T01:05:19", "url": "https://files.pythonhosted.org/packages/8f/ca/6a97bc051046adfadf2175026dc7a8960ecb48d45338f37831d0d236f2f5/pullover-1.0.0rc3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "5bb6b76482267912c50cc6a0f3451918", "sha256": "b4d373bbc228c2ad5cd69ec84f1908be69b888fdf21a208ec4ab00731ec5254b" }, "downloads": -1, "filename": "pullover-1.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5bb6b76482267912c50cc6a0f3451918", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20509, "upload_time": "2017-10-01T18:08:12", "url": "https://files.pythonhosted.org/packages/8b/84/7e98614afd4c36444c52c79227ec239f23d69090df159699932c60117f73/pullover-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea581e74f3aa9257840d04bf4c6e6e8c", "sha256": "d62b10b14a7c12d6063980fa02194c7f5e9367030a5c02da34c15fe80b825710" }, "downloads": -1, "filename": "pullover-1.1.0.tar.gz", "has_sig": true, "md5_digest": "ea581e74f3aa9257840d04bf4c6e6e8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14590, "upload_time": "2017-10-01T18:08:21", "url": "https://files.pythonhosted.org/packages/c7/62/aa2edec9b132bd7e56d61ad393dbfaef48cd11ff7a62890873e9c88093dc/pullover-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "c62fa8008e54d3cbe5a5a8b759a867d9", "sha256": "3a3c09d84a4e0572fa2a0611de312a36e4759ed28e3c60e40142a0cedd2f877a" }, "downloads": -1, "filename": "pullover-1.1.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c62fa8008e54d3cbe5a5a8b759a867d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20566, "upload_time": "2017-10-01T19:07:16", "url": "https://files.pythonhosted.org/packages/d6/02/7d0925fac6dc75578d2633645c8cadb7f17f51da032c44e8fc6b940963e3/pullover-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d4a0f1f4eb98b7b103eb55c4011d004", "sha256": "ded4b33d8f7383996ed40dba063b79b6a4662ee0512ed11c2bc4dd1273669fb9" }, "downloads": -1, "filename": "pullover-1.1.1.tar.gz", "has_sig": true, "md5_digest": "2d4a0f1f4eb98b7b103eb55c4011d004", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14635, "upload_time": "2017-10-01T19:07:26", "url": "https://files.pythonhosted.org/packages/f1/2a/6b3623e39a68f0c57638a7742795b895ae72375b79c5cebb3312120127aa/pullover-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c62fa8008e54d3cbe5a5a8b759a867d9", "sha256": "3a3c09d84a4e0572fa2a0611de312a36e4759ed28e3c60e40142a0cedd2f877a" }, "downloads": -1, "filename": "pullover-1.1.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c62fa8008e54d3cbe5a5a8b759a867d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 20566, "upload_time": "2017-10-01T19:07:16", "url": "https://files.pythonhosted.org/packages/d6/02/7d0925fac6dc75578d2633645c8cadb7f17f51da032c44e8fc6b940963e3/pullover-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2d4a0f1f4eb98b7b103eb55c4011d004", "sha256": "ded4b33d8f7383996ed40dba063b79b6a4662ee0512ed11c2bc4dd1273669fb9" }, "downloads": -1, "filename": "pullover-1.1.1.tar.gz", "has_sig": true, "md5_digest": "2d4a0f1f4eb98b7b103eb55c4011d004", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14635, "upload_time": "2017-10-01T19:07:26", "url": "https://files.pythonhosted.org/packages/f1/2a/6b3623e39a68f0c57638a7742795b895ae72375b79c5cebb3312120127aa/pullover-1.1.1.tar.gz" } ] }