{ "info": { "author": "fluffy", "author_email": "fluffy@beesbuzz.biz", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Internet :: WWW/HTTP :: Site Management :: Link Checking" ], "description": "# Pushl\n\nA simple tool that parses content feeds and sends out appropriate push notifications (WebSub, webmention, etc.) when they change.\n\nSee http://publ.beesbuzz.biz/blog/113-Some-thoughts-on-WebMention for the motivation.\n\n## Features\n\n* Will send WebSub notifications for feeds which declare a WebSub hub\n* Will send WebMention notifications for entries discovered on those feeds or specified directly\n* Can perform autodiscovery of additional feeds on entry pages\n* Can do a full backfill on Atom feeds configured with [RFC 5005](https://tools.ietf.org/html/rfc5005)\n* When configured to use a cache directory, can detect entry deletions and updates to implement the webmention update and delete protocols (as well as saving some time and bandwidth)\n\n\n## Site setup\n\nFirst, you'll want to have your Atom (or RSS) feed implement [the WebSub protocol](https://indieweb.org/WebSub). The short version is that you should have a `` in your feed's top-level element.\n\nThere are a number of WebSub hubs available; I use [Superfeedr](http://pubsubhubbub.superfeedr.com).\n\nFor [WebMentions](https://indieweb.org/Webmention), configure your site templates with the various microformats; by default, Pushl will use the following tags as the top-level entry container, in descending order of priority:\n\n* Anything with a `class` of `h-entry`\n* An `
` tag\n* Anything with a `class` of `entry`\n\nFor more information on how to configure your site templates, see the [microformats h-entry specification](http://microformats.org/wiki/h-entry).\n\n## Installation\n\nYou can install it using `pip` with e.g.:\n\n```bash\npip3 install pushl\n```\n\nHowever, I recommend installing it in a virtual environment with e.g.:\n\n```bash\nvirtualenv3 $HOME/pushl\n$HOME/pushl/bin/pip3 install pushl\n```\n\nand then putting a symlink to `$HOME/pushl/bin/pushl` to a directory in your $PATH, e.g.\n\n```bash\nln -s $HOME/pushl/bin/pushl $HOME/bin/pushl\n```\n\n## Usage\n\n### Basic\n\n```bash\npushl -c $HOME/var/pushl-cache http://example.com/feed.xml\n```\n\nWhile you can run it without the `-c` argument, its use is highly recommended so that subsequent runs are both less spammy and so that it can detect changes and deletions.\n\n### Sending pings from individual entries\n\nIf you just want to send webmentions from an entry page without processing an entire feed, the `-e/--entry` flag indicates that the following URLs are pages or entries, rather than feeds; e.g.\n\n```bash\npushl -e http://example.com/some/page\n```\n\nwill simply send the webmentions for that page.\n\n### Additional feed discovery\n\nThe `-r/--recurse` flag will discover any additional feeds that are declared on entries and process them as well. This is useful if you have per-category feeds that you would also like to send WebSub notifications on. For example, [my site](http://beesbuzz.biz) has per-category feeds which are discoverable from individual entries, so `pushl -r http://beesbuzz.biz/feed` will send WebSub notifications for all of the categories which have recent changes.\n\nNote that `-r` and `-e` in conjunction will also cause the feed declared on the entry page to be processed further. While it is tempting to use this in a feed autodiscovery context e.g.\n\n```bash\npushl -re http://example.com/blog/\n```\n\nthis will also send webmentions from the blog page itself which is probably *not* what you want to do.\n\n### Backfilling old content\n\nIf your feed implements [RFC 5005](https://tools.ietf.org/html/rfc5005), the `-a` flag will scan past entries for WebMention as well. It is recommended to only use this flag when doing an initial backfill, as it can end up taking a long time on larger sites (and possibly make endpoint operators very grumpy at you). To send updates of much older entries it's better to just use `-e` to do it on a case-by-case basis.\n\n### Dual-protocol/multi-domain websites\n\nIf you have a website which has multiple URLs that can access it (for example, http+https, or multiple domain names), you generally only want WebMentions to be sent from the canonical URL. You can configure this in Pushl by having the secondary feeds be WebSub-only, using the `-s/--websub-only` flag:\n\n```bash\npushl -r https://example.com/feed -s http://example.com/feed http://alt-domain.example.com/feed\n```\n\n## Automated updates\n\n`pushl` can be run from a cron job, although it's a good idea to use `flock -n` to prevent multiple instances from stomping on each other. An example cron job for updating a site might look like:\n\n```crontab\n*/5 * * * * flock -n $HOME/.pushl-lock pushl -rc $HOME/.pushl-cache http://example.com/feed\n```\n\n### My setup\n\nIn my setup, I have `pushl` installed in my website's pipenv:\n\n```bash\ncd $HOME/beesbuzz.biz\npipenv install pushl\n```\n\nand created this script as `$HOME/beesbuzz.biz/pushl.sh`:\n\n```bash\n#!/bin/sh\n\ncd $(dirname \"$0\")\nLOG=$(date +%Y%m%d.log)\n\nif [ \"$1\" == \"quiet\" ] ; then\n exec >> $LOG 2>&1\nelse\n exec 2>&1 | tee -a $LOG\nfi\n\ndate\nflock -n run.lock $HOME/.local/bin/pipenv run pushl -rvvc $HOME/var/pushl \\\n https://beesbuzz.biz/feed \\\n http://publ.beesbuzz.biz/feed \\\n https://tumblr.beesbuzz.biz/rss \\\n -s http://beesbuzz.biz/feed\n```\n\nThen I have a cron job:\n\n```crontab\n*/5 * * * * $HOME/beesbuzz.biz/pushl.sh quiet\n```\n\nwhich runs it every 5 minutes.\n\nI also have a [git deployment hook](http://publ.beesbuzz.biz/441) for my website, and its final step (after restarting `gunicorn`) is to run `pushl.sh`, in case a maximum latency of 5 minutes just isn't fast enough.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/PlaidWeb/Pushl", "keywords": "publishing blog webmention websub push", "license": "", "maintainer": "", "maintainer_email": "", "name": "Pushl", "package_url": "https://pypi.org/project/Pushl/", "platform": "", "project_url": "https://pypi.org/project/Pushl/", "project_urls": { "Bug Reports": "https://github.com/PlaidWeb/Pushl/issues", "Discord": "https://beesbuzz.biz/discord", "Funding": "https://liberapay.com/fluffy", "Homepage": "https://github.com/PlaidWeb/Pushl", "Source": "https://github.com/PlaidWeb/Pushl/" }, "release_url": "https://pypi.org/project/Pushl/0.2.12/", "requires_dist": [ "feedparser", "beautifulsoup4", "awesome-slugify", "aiohttp", "lxml", "async-lru", "pylint ; extra == 'dev'", "twine ; extra == 'dev'", "flake8 ; extra == 'dev'", "isort ; extra == 'dev'", "autopep8 ; extra == 'dev'" ], "requires_python": ">=3.4", "summary": "A conduit for pushing changes in a feed to the rest of the IndieWeb", "version": "0.2.12" }, "last_serial": 5922387, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0d20bcf31227df99bcca0fcfa7bcefb4", "sha256": "77bcae72ee988be3c4fbafeb25ac745266f17ad3ee37c4f634e3d31197a379ea" }, "downloads": -1, "filename": "Pushl-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0d20bcf31227df99bcca0fcfa7bcefb4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 6445, "upload_time": "2018-10-09T05:26:44", "url": "https://files.pythonhosted.org/packages/52/19/cd6af8378144b12542c13b92d284b35132c8c6ffe2f90f447ef8a179d23a/Pushl-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "03ef39927ab411a4de1674148f99d802", "sha256": "b2904ec456f13ae5cedc31c820a91490a77da06c8a4566c213c61665bc9bbd38" }, "downloads": -1, "filename": "Pushl-0.0.1.tar.gz", "has_sig": false, "md5_digest": "03ef39927ab411a4de1674148f99d802", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 4949, "upload_time": "2018-10-09T05:26:45", "url": "https://files.pythonhosted.org/packages/ac/5e/587fe43d325d66d8d71371a57827a19ac5f70d92d7e79ed69ea10fbee1ee/Pushl-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "bcaaa16ff0724bd8e59cdcf90a61f447", "sha256": "07f06de1962731f6efd3e5704712897a8bae575844f6a9ee637ba0c450b9db77" }, "downloads": -1, "filename": "Pushl-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bcaaa16ff0724bd8e59cdcf90a61f447", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 10129, "upload_time": "2018-10-10T19:43:37", "url": "https://files.pythonhosted.org/packages/dc/53/46ca8ed94a447d880d4a4671c7537f0eb40a3a8518aba2941b57dd107078/Pushl-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9387327799e57276f7affd9c0166c8e", "sha256": "ea6b57b1527640f2cc618d37ac4bd9c1845b664ebcf33246d35fd7c1505e2c99" }, "downloads": -1, "filename": "Pushl-0.0.2.tar.gz", "has_sig": false, "md5_digest": "b9387327799e57276f7affd9c0166c8e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 7622, "upload_time": "2018-10-10T19:43:38", "url": "https://files.pythonhosted.org/packages/fe/b6/ad9e5354c872c380500bc864c21f01e3bb5e70658d160168dfc5d26777ea/Pushl-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "d6e7e95db515c7d85870cbd3ac09e642", "sha256": "b86a527fdeaf699f7ce20d95e2db3e590ad9e53705baa2112b3842adb03f4f50" }, "downloads": -1, "filename": "Pushl-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d6e7e95db515c7d85870cbd3ac09e642", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 10557, "upload_time": "2018-10-11T05:16:03", "url": "https://files.pythonhosted.org/packages/a9/59/21624da608927400488079f6c2c649ccda54f6672f33efc5fe9caf04a72e/Pushl-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bbf7f42c2267f2ab0266de14eafea1d", "sha256": "745868028a434f4041d0aaa45370f1dc073f3666c6772f81b0fcb93523f43b26" }, "downloads": -1, "filename": "Pushl-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9bbf7f42c2267f2ab0266de14eafea1d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 8047, "upload_time": "2018-10-11T05:16:04", "url": "https://files.pythonhosted.org/packages/af/54/1b18ebf19ff1ce823baf1baa54fb6070ca77780f1eaca27de21903bb0b17/Pushl-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "8eed79dbfcbb7cd7f916d49f935d5f35", "sha256": "08cac31b2e02ed59799b3065484de3006daa890da95abd40144339740e8708de" }, "downloads": -1, "filename": "Pushl-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8eed79dbfcbb7cd7f916d49f935d5f35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 10584, "upload_time": "2018-10-11T07:22:41", "url": "https://files.pythonhosted.org/packages/9c/56/7906eccca12d61dd303f911c721df46e340d7601b180b50dc3d6e01d7d41/Pushl-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98cba8fc4e3a169a1c536147ca64f429", "sha256": "507ff44b04cc9471c337859b9647cb82c1d3225df5c115ef1ec005bced8d51df" }, "downloads": -1, "filename": "Pushl-0.1.1.tar.gz", "has_sig": false, "md5_digest": "98cba8fc4e3a169a1c536147ca64f429", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 8081, "upload_time": "2018-10-11T07:22:42", "url": "https://files.pythonhosted.org/packages/f1/80/e5656382a18289fdbc4d196b9ffa57f7bed3e816b0b63d7cbf9ff46f0779/Pushl-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "5a8fd63dfc4fe0251598c221e864b91f", "sha256": "63257828a4c1a8366a33b0075fbb75ca2d19e651aa2141810c151deb4cb9370a" }, "downloads": -1, "filename": "Pushl-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5a8fd63dfc4fe0251598c221e864b91f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 11409, "upload_time": "2018-10-12T03:15:19", "url": "https://files.pythonhosted.org/packages/ae/c3/b941eca43f2ed0d4452399ccb2209962a0e61964e2d2c286c7ac42b24540/Pushl-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0ac1c37f8fe92b3850059f673544c74", "sha256": "b9a5df3ac97092ba96f6bbd6e2ee5c931188c3c9f6204e7f856e27075859683f" }, "downloads": -1, "filename": "Pushl-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f0ac1c37f8fe92b3850059f673544c74", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 8929, "upload_time": "2018-10-12T03:15:21", "url": "https://files.pythonhosted.org/packages/bc/cf/d84da9ef87575936ebae0120c8699783add8f38331aefd27c80ba418ac00/Pushl-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "a66a156587fce8e564ac1d60e47daad0", "sha256": "01fb17b06897e5d70f9338df281aa2ded71b3efcccb43e2c9645e129d6019c89" }, "downloads": -1, "filename": "Pushl-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a66a156587fce8e564ac1d60e47daad0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 12006, "upload_time": "2018-11-28T07:35:02", "url": "https://files.pythonhosted.org/packages/cc/4a/a1960890612fbe281517a5c469910b270f366a5362655f61df995c941e9e/Pushl-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5fe528ae7abcea874379eddca54f4276", "sha256": "bbf3e66d0944ac7664cdc8dba357bf1eed8cd13a2888ea08562f2f38925c9842" }, "downloads": -1, "filename": "Pushl-0.1.3.tar.gz", "has_sig": false, "md5_digest": "5fe528ae7abcea874379eddca54f4276", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 9651, "upload_time": "2018-11-28T07:35:03", "url": "https://files.pythonhosted.org/packages/15/13/da6c8bd89bade304145ec86d5912dbeed0d213bc050f22f33d95d99e7dd8/Pushl-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "bed8e62835b11352b8bd646b056aa115", "sha256": "dc3694bfc631d8e6f697a6364928a6061529c4abaf8c14f71456cfd8e43ea16c" }, "downloads": -1, "filename": "Pushl-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "bed8e62835b11352b8bd646b056aa115", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 12023, "upload_time": "2018-11-29T00:16:08", "url": "https://files.pythonhosted.org/packages/31/90/9f1f8d72721906d5ee005826d4b8efb4ced0a7bc4e49dfbb8a51a853192c/Pushl-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a7ef104aa99646d3a7ad415079d6e52", "sha256": "ccb024f5f11442150bbd497737b3c47c9b9dd6d90b6c6c807609b6b7db9da8c7" }, "downloads": -1, "filename": "Pushl-0.1.4.tar.gz", "has_sig": false, "md5_digest": "6a7ef104aa99646d3a7ad415079d6e52", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 9671, "upload_time": "2018-11-29T00:16:09", "url": "https://files.pythonhosted.org/packages/7a/32/2be8511c1fcc12fb57ab91403672646964ccf5b4462d00623d41483cb451/Pushl-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "02e90849156cedaa9aff231a10394a03", "sha256": "f242ceaace05fd2f48d696979ae6d9e9a4d2b39220209d3e4a9d5d2b04e58f0f" }, "downloads": -1, "filename": "Pushl-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "02e90849156cedaa9aff231a10394a03", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 12705, "upload_time": "2018-12-22T09:32:37", "url": "https://files.pythonhosted.org/packages/66/8c/c0ddc27f65749650c8c28835374149286f465cca891adaf3b6c4c4c1fee6/Pushl-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "752aca364c238d46a5c86ef25deb2080", "sha256": "180b948eb116bef160b7df3f36c2a7c453a22d246a7fd36587ec566484c738bf" }, "downloads": -1, "filename": "Pushl-0.1.5.tar.gz", "has_sig": false, "md5_digest": "752aca364c238d46a5c86ef25deb2080", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 10096, "upload_time": "2018-12-22T09:32:38", "url": "https://files.pythonhosted.org/packages/cf/97/18bc26ef7bd393936992e8e1114fac439e2df92690c80827f6d34b612747/Pushl-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "a4ea89c656cf2b2d947091965fc1051b", "sha256": "c00cbf0e0cea5191f9e362b043954c23b62085d8c290bd7c00e2bbafd27a9073" }, "downloads": -1, "filename": "Pushl-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "a4ea89c656cf2b2d947091965fc1051b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 12892, "upload_time": "2019-01-14T04:45:33", "url": "https://files.pythonhosted.org/packages/9e/61/1e6bb21152d5a7e5693f6aa5d3631b70bbcbfb215e745853472ec0f73f43/Pushl-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cce8b60790d1f99396316fb38ce711b5", "sha256": "48eb6cbf4deaf3329bc82619cc3eca24fa12cd3b92c26c3d554c1c540138598c" }, "downloads": -1, "filename": "Pushl-0.1.6.tar.gz", "has_sig": false, "md5_digest": "cce8b60790d1f99396316fb38ce711b5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 10269, "upload_time": "2019-01-14T04:45:35", "url": "https://files.pythonhosted.org/packages/76/a8/2acf8405addf23108819927e16cac10557d8efe9e6bea715687908eba5be/Pushl-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "af4ef249954f8362ccaf5207f2319ec0", "sha256": "9ea3203f621a0e5b2949f3be40b13274f25a8f0aedc4a23b0c45cee0ff2ab639" }, "downloads": -1, "filename": "Pushl-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "af4ef249954f8362ccaf5207f2319ec0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 12959, "upload_time": "2019-01-15T05:04:54", "url": "https://files.pythonhosted.org/packages/f0/98/fa995f2e3c0932866cfcc984f2656616e2ad95c1553428935c7cb078e245/Pushl-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76dbc0455a85bdae2847512019bc75d9", "sha256": "8ddbfb21dc5fd285de54a3bc919c7e8f3764d3a0a04abcaa7dbe0c14c8b225b9" }, "downloads": -1, "filename": "Pushl-0.1.7.tar.gz", "has_sig": false, "md5_digest": "76dbc0455a85bdae2847512019bc75d9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 10383, "upload_time": "2019-01-15T05:04:55", "url": "https://files.pythonhosted.org/packages/f7/94/90e75e8df3343619ad0aafbbac533fee29add9f7de8352b717d029fc5b9d/Pushl-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "5a7d6337421c06439e6aa4ee718e7299", "sha256": "aa4dc782c50f81669d4d53c923a157510956b19b78510feeb943bb84d20d2e72" }, "downloads": -1, "filename": "Pushl-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "5a7d6337421c06439e6aa4ee718e7299", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 13175, "upload_time": "2019-03-02T19:24:40", "url": "https://files.pythonhosted.org/packages/cf/c4/ed09b3207a54118cd6a781e44fcdf8fc47f50eb784113cfc21c6b7c65201/Pushl-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ce16c333d9af12b2b144a1fa6873c4d", "sha256": "a41f1d1b26b65cab95665ed3680db8d89f7eb896a9f3a3e4cc1463db5caccc86" }, "downloads": -1, "filename": "Pushl-0.1.8.tar.gz", "has_sig": false, "md5_digest": "2ce16c333d9af12b2b144a1fa6873c4d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 10506, "upload_time": "2019-03-02T19:24:41", "url": "https://files.pythonhosted.org/packages/5d/53/c098d1513e3ea9509311ed6a73a98f49b3c302fe3b1463da871b39d10a91/Pushl-0.1.8.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "8b7c776220b852511f749222463449ad", "sha256": "4066b1ccfac6bb53b9fb89343dda230668704080e087a1a0c9b5bbaa7ba1555e" }, "downloads": -1, "filename": "Pushl-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8b7c776220b852511f749222463449ad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 13869, "upload_time": "2019-03-07T07:58:24", "url": "https://files.pythonhosted.org/packages/3b/1b/ccb1a9bf6b91e99d247120d6246e726590e307c9c9bd94cdec07b5c30b39/Pushl-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "230bc51e8bc792f18b58f7e7ca2576e8", "sha256": "daa2089affbf6f900274c8e22e0067d5af6a95edcc402237018036ec1892e780" }, "downloads": -1, "filename": "Pushl-0.2.0.tar.gz", "has_sig": false, "md5_digest": "230bc51e8bc792f18b58f7e7ca2576e8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 11544, "upload_time": "2019-03-07T07:58:26", "url": "https://files.pythonhosted.org/packages/22/9d/eda6071c1cde5f2c507bcda0e6d30f5098a1161d45adfbb8df802d8a47c7/Pushl-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4daac3f23c5494043d1d6e6171ed6917", "sha256": "5ecef82aaa9a927e6212a0f5a56f4750cf386ad6d13d47733851c89eb44f91fe" }, "downloads": -1, "filename": "Pushl-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4daac3f23c5494043d1d6e6171ed6917", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 15009, "upload_time": "2019-03-08T06:22:23", "url": "https://files.pythonhosted.org/packages/06/57/761e81c651a12d5002b49e6dc42e617e1570a91d6bacc18814f0c8f2883b/Pushl-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b72885e16bc82894beac0056d6bfa598", "sha256": "4cb4773e22f8ca7bd1c3b3b296d6fcd052d414b777437fd79271e1c60f5fc525" }, "downloads": -1, "filename": "Pushl-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b72885e16bc82894beac0056d6bfa598", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 12367, "upload_time": "2019-03-08T06:22:25", "url": "https://files.pythonhosted.org/packages/17/70/317d9fc16261f4cdfbe68d602ae74c347184cf6942fef7c5d2615a1e6ee5/Pushl-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "9b68d2203ed12780cc5c8191257aeb1a", "sha256": "d20ea3bc5eff6bf4b35b4294ef29eaea61264015e30eae8529a587db86d9be40" }, "downloads": -1, "filename": "Pushl-0.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "9b68d2203ed12780cc5c8191257aeb1a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 17329, "upload_time": "2019-09-17T22:05:42", "url": "https://files.pythonhosted.org/packages/a8/2b/33266893966d5f388c0edf5617c8778075458d50d684f4fe83be86ba335a/Pushl-0.2.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "95f3022912548e24c71f2a6ba9d0f4d3", "sha256": "9067fad6b3b4decc7929910bbd117780fa961fbc8084073d57e9e5817e76a43d" }, "downloads": -1, "filename": "Pushl-0.2.10.tar.gz", "has_sig": false, "md5_digest": "95f3022912548e24c71f2a6ba9d0f4d3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 14255, "upload_time": "2019-09-17T22:05:44", "url": "https://files.pythonhosted.org/packages/37/bb/a581d85bfbb625d59f85491ec9aec1328d7dcc3c86a40eef9a4fe5efa19d/Pushl-0.2.10.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "163312aa69a36e8f150c73fabb221867", "sha256": "f04688b2f54429e3b699d816375601589b8618dcc9f8158333b445a946f2dec4" }, "downloads": -1, "filename": "Pushl-0.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "163312aa69a36e8f150c73fabb221867", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 18091, "upload_time": "2019-09-23T06:46:13", "url": "https://files.pythonhosted.org/packages/b6/53/6c091cfd98050c08f41d5ce9ccd08221922f8caa7d66b2cd6db4644146fd/Pushl-0.2.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "250b07a31aaedfbf9d602777042079e1", "sha256": "c2e35f89849c21511b950a4b48a5e0e6529f0a7724744ef240c92221f478fb2f" }, "downloads": -1, "filename": "Pushl-0.2.11.tar.gz", "has_sig": false, "md5_digest": "250b07a31aaedfbf9d602777042079e1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 15055, "upload_time": "2019-09-23T06:46:15", "url": "https://files.pythonhosted.org/packages/d3/da/8554f952fea4ed7210fb80309fbc79d52d107a5b66f9bf020aeac7930789/Pushl-0.2.11.tar.gz" } ], "0.2.11.post1": [ { "comment_text": "", "digests": { "md5": "1f0d262f85cf691c8e7f35a8ecaf334b", "sha256": "90deac4c76e9d0026adef354132b6bd8669ccf531eb6371dc12f1d560155810d" }, "downloads": -1, "filename": "Pushl-0.2.11.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "1f0d262f85cf691c8e7f35a8ecaf334b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 18180, "upload_time": "2019-09-23T18:47:24", "url": "https://files.pythonhosted.org/packages/c3/cd/13e55ef6a9ba1dbde0dcac9916171b69527a0966633e989970d24f4120a6/Pushl-0.2.11.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aed38c8526ce6bbb98a2ff083a8191f7", "sha256": "ee7aee684191dd6112600b98bd66f4fb61f611f7926868ecf52029a9f5e45bfd" }, "downloads": -1, "filename": "Pushl-0.2.11.post1.tar.gz", "has_sig": false, "md5_digest": "aed38c8526ce6bbb98a2ff083a8191f7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 15063, "upload_time": "2019-09-23T18:47:26", "url": "https://files.pythonhosted.org/packages/fa/25/3bc0d65509f80eee77a22406d425415176c43ffe491054e7be59b76e7726/Pushl-0.2.11.post1.tar.gz" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "4c2e143f18709ab73841db7327c86370", "sha256": "0b32ce00ecb45b8385da84501af0ccd964a43fcb6ce0866438ae3bb125d49980" }, "downloads": -1, "filename": "Pushl-0.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "4c2e143f18709ab73841db7327c86370", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 18220, "upload_time": "2019-10-03T08:47:09", "url": "https://files.pythonhosted.org/packages/d5/c6/dc6feb630836f5d3a8e90387828c25a321f23bfa1de9d2ff2b7fd7909a11/Pushl-0.2.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fccbd3ff184d59f724f8d05b247dc8fc", "sha256": "ddf6f6a9b2c0f2fb8a156fd6cf13d18f26bdac459b2e1a5cd8c113213d7fb1b2" }, "downloads": -1, "filename": "Pushl-0.2.12.tar.gz", "has_sig": false, "md5_digest": "fccbd3ff184d59f724f8d05b247dc8fc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 15160, "upload_time": "2019-10-03T08:47:11", "url": "https://files.pythonhosted.org/packages/14/fe/152881d4da3afc0f8c90a86ba01aaa3c2c2a823b851c5741c3d975bec000/Pushl-0.2.12.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "181c6df2edcb9358f24860ee7ea983fe", "sha256": "6f561a788ad8c38a4c057359336d638d3d8cbc92c6b3c64aa7b21c62ca99307f" }, "downloads": -1, "filename": "Pushl-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "181c6df2edcb9358f24860ee7ea983fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 15561, "upload_time": "2019-03-10T23:53:33", "url": "https://files.pythonhosted.org/packages/2f/65/591b576c98a929c04e67c9565d97cf7b4b29a68522d608684e88f8233187/Pushl-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c287cfee8338f5640dcb60ae56e19631", "sha256": "d32a664706ead76923928da52fc8d34ebd5d606dafafaa25019a1aae1fb97805" }, "downloads": -1, "filename": "Pushl-0.2.2.tar.gz", "has_sig": false, "md5_digest": "c287cfee8338f5640dcb60ae56e19631", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 12924, "upload_time": "2019-03-10T23:53:35", "url": "https://files.pythonhosted.org/packages/a7/5a/aab50d35cacda20304ee5cb5075eca074c323b7c6ff0e6de0009fa7f6066/Pushl-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "a519c2b94a4193a3f5240643e5a45a25", "sha256": "b741d04a008f1a753a0a4bd268404c2e4d64f7b642d4920bb6b161238d8eb825" }, "downloads": -1, "filename": "Pushl-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a519c2b94a4193a3f5240643e5a45a25", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 15518, "upload_time": "2019-03-11T18:42:48", "url": "https://files.pythonhosted.org/packages/76/7f/3a879307e79ee3cc982e456d4d606d598db8187888e8050213e0d41320cc/Pushl-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b66e2d2ebe48f5ff141ca81d53a9670e", "sha256": "d07d21407dcdb516820541db1eef7dc40287ceac1625b846b15913af19b15373" }, "downloads": -1, "filename": "Pushl-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b66e2d2ebe48f5ff141ca81d53a9670e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 12897, "upload_time": "2019-03-11T18:42:49", "url": "https://files.pythonhosted.org/packages/25/da/a31ac0d0e7739c4197f5ba6032cc00f777329c70003e1f45029e69525562/Pushl-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "e41001b9d15621dfa0b5e171b1b755ae", "sha256": "c82a907da2a312d320bba930053425b51497e28016a961175feebeb7d468051c" }, "downloads": -1, "filename": "Pushl-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "e41001b9d15621dfa0b5e171b1b755ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 15768, "upload_time": "2019-03-16T00:25:06", "url": "https://files.pythonhosted.org/packages/b2/06/917c2f4f772585622808cf941cd33410187a3d6d5542bcd445af7cdaa874/Pushl-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a86e2fa19ab7055380d40216884e0332", "sha256": "af411b9fd823b569a48d79fa36fddcd3ba007e4084c26959bacb6ec702a469ac" }, "downloads": -1, "filename": "Pushl-0.2.4.tar.gz", "has_sig": false, "md5_digest": "a86e2fa19ab7055380d40216884e0332", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 13077, "upload_time": "2019-03-16T00:25:07", "url": "https://files.pythonhosted.org/packages/4c/d8/f5498b3fa44b91b85a51eb9c95fe1f5dd8e4fe4330e4755f1cbfb88766c2/Pushl-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "d377e7f459aa43f0eb2b822d16753888", "sha256": "2c3031a6760da2103037842eabcdc71f855d56581188db40c2504b1c4c90af11" }, "downloads": -1, "filename": "Pushl-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d377e7f459aa43f0eb2b822d16753888", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 16165, "upload_time": "2019-04-01T17:53:11", "url": "https://files.pythonhosted.org/packages/7b/58/d496342482b9f7b19f6ab485838bc928fedf935a47baca7ccc876737872f/Pushl-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6fc2f91b77f5275ac43f7435c129c274", "sha256": "d14086b482f9e0684e079df8c862cbaf79c29f84871981035469be3b608e66bc" }, "downloads": -1, "filename": "Pushl-0.2.5.tar.gz", "has_sig": false, "md5_digest": "6fc2f91b77f5275ac43f7435c129c274", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 13494, "upload_time": "2019-04-01T17:53:13", "url": "https://files.pythonhosted.org/packages/ef/2e/9f1c658fa2091b63b31cf11aeb031ccdc4d8148cfeb0803a9877af5f3ecb/Pushl-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "2cbd66fd70e5d06827596c41f00fcb2b", "sha256": "bd2c6f4e285ead5aa99b904932704066745952ffc4879a2f0fb8e44ebc377ed5" }, "downloads": -1, "filename": "Pushl-0.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "2cbd66fd70e5d06827596c41f00fcb2b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 16350, "upload_time": "2019-07-15T21:02:54", "url": "https://files.pythonhosted.org/packages/cb/74/10ef3481afb429cb91662f3e8879482141b7011a82219620be86f9e91e05/Pushl-0.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "976fb5a4225dd58e001572d5130e5703", "sha256": "4d135dab581e1082cd769779d958ee97832abff2c24d502a7f3b32dfdf0c9d62" }, "downloads": -1, "filename": "Pushl-0.2.6.tar.gz", "has_sig": false, "md5_digest": "976fb5a4225dd58e001572d5130e5703", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 13692, "upload_time": "2019-07-15T21:02:56", "url": "https://files.pythonhosted.org/packages/92/d6/5f5d87f9fe310d583ba3cc1fcf917313d479e930e2800c7c2c4a1075a706/Pushl-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "61ab1e2bb9ef74145f86e24b0fc4284b", "sha256": "0e7d282e1e79b27e8a17cced5dfe977b3c07c363795469782cdfd923ee1702d3" }, "downloads": -1, "filename": "Pushl-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "61ab1e2bb9ef74145f86e24b0fc4284b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 16925, "upload_time": "2019-08-13T00:21:13", "url": "https://files.pythonhosted.org/packages/f0/b4/d20a95403780d7cbe6421d00f786d999ada2811c5259f35a17a8b70e19f8/Pushl-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa6c0879ec3f50345bb4509b09befd72", "sha256": "4eab2bd028763cf5f484282312697c9eaf87f27438c0c2f91ab81d016a173bb7" }, "downloads": -1, "filename": "Pushl-0.2.7.tar.gz", "has_sig": false, "md5_digest": "fa6c0879ec3f50345bb4509b09befd72", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 13930, "upload_time": "2019-08-13T00:21:15", "url": "https://files.pythonhosted.org/packages/96/a1/e8a762086f8d8c53fed2c2a4bc301a781a46a0789db2d88e5ec4daaecb4a/Pushl-0.2.7.tar.gz" } ], "0.2.7.post1": [ { "comment_text": "", "digests": { "md5": "74032f02744256448e71e4e5c1ef23b5", "sha256": "169dc13d7ec0744d76ac0d0e56c141f910f4b4cf96a5ca9438bbc852dc4fdeb1" }, "downloads": -1, "filename": "Pushl-0.2.7.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "74032f02744256448e71e4e5c1ef23b5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 17022, "upload_time": "2019-08-19T09:09:22", "url": "https://files.pythonhosted.org/packages/a8/e7/5d22a1f5119da46244aba10d3662079b9b02698aeaf468c6ed69a35c0d10/Pushl-0.2.7.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa6704db0348ffe0d15cd6b9b529a1c4", "sha256": "3fa15cef93a21b9ea7ccb67502ce28aebdcb8d735cd3f813bf581f7e1576c86d" }, "downloads": -1, "filename": "Pushl-0.2.7.post1.tar.gz", "has_sig": false, "md5_digest": "fa6704db0348ffe0d15cd6b9b529a1c4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 13953, "upload_time": "2019-08-19T09:09:24", "url": "https://files.pythonhosted.org/packages/9a/9b/f878608092047f1cbe161dea43c8bad80a842b00582b776c8691885170de/Pushl-0.2.7.post1.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "470e82c1fe734a4db9b9e0bd72d08d32", "sha256": "624308c4f2891821a3855ed3d1a05a59bd082a49201770046f7771db6306114c" }, "downloads": -1, "filename": "Pushl-0.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "470e82c1fe734a4db9b9e0bd72d08d32", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 17295, "upload_time": "2019-08-21T20:42:20", "url": "https://files.pythonhosted.org/packages/2e/5c/d25fe289e015e75ba997553c745f69ae07c5e208db14e9fb0a0dc3128940/Pushl-0.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f7f32770afee92e1708c4f512175f3b2", "sha256": "9d490b4c481a5bf666e704cfbba9e83f8df3edfa0ff0ab13f4bb418a02724e55" }, "downloads": -1, "filename": "Pushl-0.2.8.tar.gz", "has_sig": false, "md5_digest": "f7f32770afee92e1708c4f512175f3b2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 14297, "upload_time": "2019-08-21T20:42:22", "url": "https://files.pythonhosted.org/packages/be/51/d7dbf84fd724975521fe406a6f497e88651949c32798a51f10164a6a1aef/Pushl-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "fa03c93989f0b1d6b249f652199105a1", "sha256": "67aebf0797ed3cab70a33bc175c0ef6c16e24e5f31ceae2c1e218dfcd1c1fb1e" }, "downloads": -1, "filename": "Pushl-0.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "fa03c93989f0b1d6b249f652199105a1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 17302, "upload_time": "2019-09-12T03:03:26", "url": "https://files.pythonhosted.org/packages/30/c4/e1d6b6b6cb9c903666312f337a92bdf46811c55d0324be7d46fee527405a/Pushl-0.2.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43152441557903e519a96017efda9f74", "sha256": "23437222e890d40f9ba33374ffe45ac7c242c672344c8050f5f5fb7f4a007270" }, "downloads": -1, "filename": "Pushl-0.2.9.tar.gz", "has_sig": false, "md5_digest": "43152441557903e519a96017efda9f74", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 14246, "upload_time": "2019-09-12T03:03:27", "url": "https://files.pythonhosted.org/packages/3c/b3/07064a972960f61f146c6476c36ee3dc0e8d8bc808bda18620403a783aac/Pushl-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4c2e143f18709ab73841db7327c86370", "sha256": "0b32ce00ecb45b8385da84501af0ccd964a43fcb6ce0866438ae3bb125d49980" }, "downloads": -1, "filename": "Pushl-0.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "4c2e143f18709ab73841db7327c86370", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 18220, "upload_time": "2019-10-03T08:47:09", "url": "https://files.pythonhosted.org/packages/d5/c6/dc6feb630836f5d3a8e90387828c25a321f23bfa1de9d2ff2b7fd7909a11/Pushl-0.2.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fccbd3ff184d59f724f8d05b247dc8fc", "sha256": "ddf6f6a9b2c0f2fb8a156fd6cf13d18f26bdac459b2e1a5cd8c113213d7fb1b2" }, "downloads": -1, "filename": "Pushl-0.2.12.tar.gz", "has_sig": false, "md5_digest": "fccbd3ff184d59f724f8d05b247dc8fc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 15160, "upload_time": "2019-10-03T08:47:11", "url": "https://files.pythonhosted.org/packages/14/fe/152881d4da3afc0f8c90a86ba01aaa3c2c2a823b851c5741c3d975bec000/Pushl-0.2.12.tar.gz" } ] }