{ "info": { "author": "Ben Currie", "author_email": "benjamin.w.currie@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Side Kick\n\nSide Kick is a simple, lightweight scheduler for Django management commands. Anything can be a management command, whether it is doing database back ups or sending emails. \nSimply create the task, add the decorator and then in Django's admin you can set when it should run and also enable or \ndisable it. It will also make sure that the task will only run if there is no other instance of the task already running\nto avoid unexpected issues if a task takes longer to complete than expected.\n\n\nInstallation:\n\n``pip install side-kick``\n\nMake sure you add ``sidekick`` to your installed apps.\n\nCreate a file somewhere within the project called ``tasks.txt``. The file can be wherever you want, as long as it is\ninside the main project directory. This is where the tasks will be written to, which will be explained shortly.\n\nAdd the following to your settings file:\n\n SIDEKICK = {\n 'SIDEKICK_REGISTERED_APPS': [],\n 'ENVIRONMENT': \"\",\n 'DJANGO_PATH': \"\",\n 'CRON_PATH': \"\",\n 'LOCK_PATH': \"\"\n }\n\n\n``SIDEKICK_REGISTERED_APPS`` is where you will need to define all the apps which have tasks that sidekick will handle.\nYou just need to put the app name and then as soon as django loads it will import the tasks.py file of each app within\nthis list. Any tasks that have the ``@sidekick_task`` decorator will create a new RegisteredTask instance if it does\nnot already exist.\n\nEach time you want to register a new task, don't forget to add it to this list.\n``SIDEKICK_REGISTERED_APPS = ['stock', 'customers', 'pizzas',]``\n\n``ENVIRONMENT`` is where you will define the user and the start-up file of that user for example:\n\n ENVIRONMENT = \"root . /root/.profile\"\n\n`DJANGO_PATH` is the path to your project directory and then the path to python, followed by the manage.py command\nwhich will be used to trigger the tasks. For example:\n\n DJANGO_PATH = \"/var/www/myproject && /var/www/virtualenv/bin/python manage.py\"\n\n\n``CRON_PATH`` is the path to the tasks.txt file that you created earlier. This is where the cron files will be written,\nso you can check within this file once you have registered a task that it is working correctly.\n\n CRON_PATH = \"/var/www/myproject/sidekick_tasks/tasks.txt\"\n\n\n``LOCK_FILE`` is the path to a directory where the lock files will be created when a task starts running and then deleted\nfrom when it is completed. The reason for this is to stop the same task running concurrently if the first instance of \nthe task hasn't completed yet. This also can go anywhere but for ease of use I would suggest keeping it within the same\ndirectory you choose to create the tasks.txt file.\n\n LOCK_PATH = \"/var/www/myproject/sidekick_tasks/lock_files/\"\n\nThese settings were designed so you can customise them and use different paths depending on the environment you are\nworking in etc.\n\nOnce this is done, you will need to migrate to create the side kick models which you can then manage \nthrough the django admin.\n\nThe basic set up is now complete!\n\nWhen it comes to creating and registering tasks, follow these simple steps:\n\nAdd the ``@sidekick_task`` decorator to any tasks you wish to register, make sure the task is in your tasks.py file of your\napp:\n\n from sidekick.decorators import sidekick_task\n\n @sidekick_task\n def my_task():\n # Whatever task you wish to complete\n ...\n\nThen add the name of the app to the ``SIDEKICK_REGISTERED_APPS`` list in your settings file.\n\nCreate a new directory within the app called ``management`` and then a subdirectory called `commands`. Add a\n``__init__.py`` file and then a file with the name of the app eg. ``customers.py`` to the ``commands`` directory.\n\nIf you already have management commands in this file, that is fine, you can skip this step, but make sure to add the \ncode for ``add_arguments()`` and also ``handle()`` in the next step.\n\nFile structure would be as follows:\n\n myproject\n |_ customers\n |_management\n |_commands\n |_ __init__.py\n |_ customers.py\n\nWithin ``customers.py`` (or whatever your app is) add the following:\n\n\n import logging\n\n from django.core.management.base import BaseCommand\n from sidekick.services.helpers import get_task_name, get_app_name\n from sidekick.services.crontab import CronTask\n\n from sidekick.models import RegisteredTask\n\n logger = logging.getLogger(__name__)\n app_name = get_app_name(__name__)\n\n\n class Command(BaseCommand):\n help = \"Commands for the Stock app\"\n\n def add_arguments(self, parser):\n \"\"\"Defines the arguments \"\"\"\n\n for task in RegisteredTask.objects.filter(task_name__startswith=app_name):\n task_name = task.task_name.split(' ')[1]\n parser.add_argument(\n task_name,\n action='store_true',\n dest=task_name[2:]\n )\n\n def handle(self, *args, **options):\n \"\"\"Handle stock management commands.\n\n :param args:\n :param options: Arguments passed with command e.g. send_emails_to_customers, verbosity etc.\n \"\"\"\n task_name = get_task_name(options)\n rt_task_name = \"{} --{}\".format(app_name, task_name)\n\n if RegisteredTask.objects.filter(task_name=rt_task_name):\n try:\n CronTask(task_name=task_name, registered_task_name=rt_task_name, app=app_name).run()\n except Exception as e:\n logger.error(msg=e)\n\n\nYou will need to have this same file structure in each app you want to have tasks registered to.\n\nOnce this is done, you need to create a file within the ``/etc/cron.d`` directory called anything you like, I would\nsuggest something like ``sidekick_tasks``, and then create a sym link between this file and the tasks.txt file you\ncreated earlier.\n\nYou can do this by connecting to your server and then:\n\n cd /etc/cron.d\n touch sidekick_tasks\n ln -sf /var/www/myproject/path/to/tasks.txt /etc/cron.d/sidekick_tasks\n\nOnce this is done then you're all good to go, you can now register tasks with a simple decorator and easily \nmanage them using django admin.\n\n\n![Side Kick Admin Example](./sidekick/static/images/SideKickAdmin.png?raw=true \"Side Kick Admin Example\")\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/CurrieBen/sidekick", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "side-kick", "package_url": "https://pypi.org/project/side-kick/", "platform": "", "project_url": "https://pypi.org/project/side-kick/", "project_urls": { "Homepage": "https://github.com/CurrieBen/sidekick" }, "release_url": "https://pypi.org/project/side-kick/0.1.16/", "requires_dist": null, "requires_python": "", "summary": "A lightweight task runner for django with easy admin controls", "version": "0.1.16" }, "last_serial": 5842736, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "132d8a72badc0ffb5a15d72a7247d7a3", "sha256": "8730c7a7e58ffbd231986dc8ec4f9aae5d074b7ed4a60bdb2655c1ba08426f3c" }, "downloads": -1, "filename": "side_kick-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "132d8a72badc0ffb5a15d72a7247d7a3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2673, "upload_time": "2018-12-18T17:19:04", "url": "https://files.pythonhosted.org/packages/b4/5a/7f390bf736c33213840100907d278577605b9ded19d530e5ed52c4930b19/side_kick-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82bf7716f4b7928727164a772dd9e22f", "sha256": "c2b4d363b189415db0c78058d2929f1e37b69fc22224c2a6a9161cc283c9b74a" }, "downloads": -1, "filename": "side-kick-0.0.1.tar.gz", "has_sig": false, "md5_digest": "82bf7716f4b7928727164a772dd9e22f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1253, "upload_time": "2018-12-18T17:19:06", "url": "https://files.pythonhosted.org/packages/f3/3d/37d4025f443528282ff4c4a3bae247ac0a7b5e5944e7890dcedd4d23d0b8/side-kick-0.0.1.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "a9016f9c4bf3b9be7fbdf316835daa40", "sha256": "f1aaba9bc6eee0730a9d0723a8f72dd7906c9fad4edbd66fb994d6f650e30478" }, "downloads": -1, "filename": "side_kick-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "a9016f9c4bf3b9be7fbdf316835daa40", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12396, "upload_time": "2018-12-20T14:19:43", "url": "https://files.pythonhosted.org/packages/96/db/f34ba37ac707301568c505e06462dcdb3470ffcd254bfedc5a07166f9adf/side_kick-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "525892d617470b0da3fe2631d75a0810", "sha256": "19d4d228450ab89172b5ed4f631dd21abf7e7e54d85ebc1e2cfc906fdbaa83d4" }, "downloads": -1, "filename": "side-kick-0.0.11.tar.gz", "has_sig": false, "md5_digest": "525892d617470b0da3fe2631d75a0810", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6380, "upload_time": "2018-12-20T14:19:44", "url": "https://files.pythonhosted.org/packages/53/5c/dd9f01192dbcf2dbbcd0310d849ca4b96c8aa296c048c54d66a8935ecc1e/side-kick-0.0.11.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "44e06df4d5766c2cbf5b1d33a71fe444", "sha256": "9c959defda452cb7e6602b1991b27a32bf9fc6d3bd99214c6a6cd48957bce997" }, "downloads": -1, "filename": "side_kick-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "44e06df4d5766c2cbf5b1d33a71fe444", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3237, "upload_time": "2018-12-18T17:39:00", "url": "https://files.pythonhosted.org/packages/a9/db/60044d5294be0c1ca7b4fc973bf01d9eb93423d8534dfe382966ebe87f27/side_kick-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7bccd5a1cf9315c17102ecf94ad5c0ee", "sha256": "5eb2a42658a503b2de6aef229bd6cebad8b5e444f0c10e6a8bebe03535bbdcb7" }, "downloads": -1, "filename": "side-kick-0.0.2.tar.gz", "has_sig": false, "md5_digest": "7bccd5a1cf9315c17102ecf94ad5c0ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1311, "upload_time": "2018-12-18T17:39:02", "url": "https://files.pythonhosted.org/packages/80/6c/7f594ec68d2363c26dc6818974bb22e03fc819284c50735829b27e1a145b/side-kick-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "bab07ba223fa07fa9886095341d92891", "sha256": "0fcd0e3d54af5ce75bda0462d812bad887e019b804d9f44138b33427aedfc774" }, "downloads": -1, "filename": "side_kick-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "bab07ba223fa07fa9886095341d92891", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3597, "upload_time": "2018-12-18T17:46:53", "url": "https://files.pythonhosted.org/packages/d8/fa/1f9fcc2b23376f0e112fd1c571416d2b145e95024069f4693c7bac003bc5/side_kick-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a51718be55e41e383f839dd56a3660d4", "sha256": "d4491c1566f26dc8685d09ab06c974a0d6db834666e5597268f4eef86d37ec83" }, "downloads": -1, "filename": "side-kick-0.0.3.tar.gz", "has_sig": false, "md5_digest": "a51718be55e41e383f839dd56a3660d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1305, "upload_time": "2018-12-18T17:46:55", "url": "https://files.pythonhosted.org/packages/27/be/c1dfd9d7d309ac15f8ab5f8b0c7a654f8d0edab41a4b8c187f094e5c342c/side-kick-0.0.3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "99888aebc254606a37fe9f532b7ab5ce", "sha256": "bb32ed5448003693e46cc615ccdb3666986baf9ff9efec69e2a1542676735712" }, "downloads": -1, "filename": "side_kick-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "99888aebc254606a37fe9f532b7ab5ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11322, "upload_time": "2018-12-21T13:14:59", "url": "https://files.pythonhosted.org/packages/df/55/a7e416b2ab8669bc341d25a8a1c9cae1c735455100365ce561e7d7844ec3/side_kick-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9d5040cb6336f59a7064cc5389311b00", "sha256": "ec346623cec90bb947d97265ef07b0771a6ad84c2909b2d9f48597d566eb4c2e" }, "downloads": -1, "filename": "side-kick-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9d5040cb6336f59a7064cc5389311b00", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9860, "upload_time": "2018-12-21T13:15:00", "url": "https://files.pythonhosted.org/packages/b9/73/65e203b3dc0118c1ba42f2f3be2ca0927e26bcd440ceda7c79e8f984d493/side-kick-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "834a11a4e6493d95acfe966c5de62f50", "sha256": "ef1128c145e451d2dd728e6fd5113a7a7db844096f91a8d08c000d9f749fe234" }, "downloads": -1, "filename": "side_kick-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "834a11a4e6493d95acfe966c5de62f50", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11312, "upload_time": "2018-12-21T13:18:27", "url": "https://files.pythonhosted.org/packages/d3/9d/074a4b4d4f970c83eefa657b41f3bc56f0675864af7f178ac1c102ed74de/side_kick-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d31fbc1b8e69ac179e6cc7169cc8323", "sha256": "72268a07706c68356642dd7897d961ade90a7d05ecf96fce766432b5f84aba0c" }, "downloads": -1, "filename": "side-kick-0.1.1.tar.gz", "has_sig": false, "md5_digest": "0d31fbc1b8e69ac179e6cc7169cc8323", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9836, "upload_time": "2018-12-21T13:18:29", "url": "https://files.pythonhosted.org/packages/b1/d1/94a5f928a89c0ba0c1928477f71d19a3e78c9d5b1589d1c96827472e8606/side-kick-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "ac0995526fe296208b7f79cea0060a5f", "sha256": "de283ae3178c7fd4a5e293deb750b5723433d45c8ab2ef2f366b7adb147b7ab8" }, "downloads": -1, "filename": "side_kick-0.1.10-py3-none-any.whl", "has_sig": false, "md5_digest": "ac0995526fe296208b7f79cea0060a5f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14802, "upload_time": "2019-07-16T12:28:02", "url": "https://files.pythonhosted.org/packages/e4/20/23c1a11c3ac7ce3a0ae19aac58deee8c522b93dfaaf1d70b43cdd7cd249e/side_kick-0.1.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11a19635d0efce69d83b20acbd78f95d", "sha256": "608b4e7d8a40df35f6d627abc651e1b3ecd71b5d0712c29f03fea77a08bde5fe" }, "downloads": -1, "filename": "side-kick-0.1.10.tar.gz", "has_sig": false, "md5_digest": "11a19635d0efce69d83b20acbd78f95d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11657, "upload_time": "2019-07-16T12:28:03", "url": "https://files.pythonhosted.org/packages/57/4a/8e90254160585f5ea4a03ac947bdf41e95a2f49b1670345612c8f47ac85f/side-kick-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "dd6b5c4f27c1e1b99fe9ef9c70e45358", "sha256": "24e1800e4b043d03f259bdbd7e373d7999cd008a81d1de503de0c861eb43175d" }, "downloads": -1, "filename": "side_kick-0.1.11-py3-none-any.whl", "has_sig": false, "md5_digest": "dd6b5c4f27c1e1b99fe9ef9c70e45358", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14827, "upload_time": "2019-07-16T12:54:11", "url": "https://files.pythonhosted.org/packages/76/5a/1c1cdba0c6215e6fe5be2facb3462d1d14bb23ab3798f64c64e47f962e05/side_kick-0.1.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72fbc1afc0be3c253cd3fed4b6143096", "sha256": "3d6660bd7352b8df09aa90e351df3d53942633d8455571a0d1447b3f30230d1d" }, "downloads": -1, "filename": "side-kick-0.1.11.tar.gz", "has_sig": false, "md5_digest": "72fbc1afc0be3c253cd3fed4b6143096", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11676, "upload_time": "2019-07-16T12:54:12", "url": "https://files.pythonhosted.org/packages/5c/2a/52fe3ccd25f5810854fc4060763454231e3635acfd9291f553099d7500c8/side-kick-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "08a565b8c086a944eeec0d956ef34155", "sha256": "4291ab61f3276f7c741a4d9d1f7ad2eff9ac27799e474550f32586e243d32242" }, "downloads": -1, "filename": "side_kick-0.1.12-py3-none-any.whl", "has_sig": false, "md5_digest": "08a565b8c086a944eeec0d956ef34155", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14911, "upload_time": "2019-07-18T10:44:15", "url": "https://files.pythonhosted.org/packages/2d/90/0c62a8ef8b487595b4a60d179655c835340ff5a85b696c04ebcaf2ece8b7/side_kick-0.1.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "caced29a36cee669969160ff795cabef", "sha256": "7dffed4a1b08e23ae86256abe974cf3500bc416570847e2c99d9e9b9641158fa" }, "downloads": -1, "filename": "side-kick-0.1.12.tar.gz", "has_sig": false, "md5_digest": "caced29a36cee669969160ff795cabef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11713, "upload_time": "2019-07-18T10:44:16", "url": "https://files.pythonhosted.org/packages/dc/74/cdcc2b0787e3b5e12daf93ee3c1f306e75d4f4c5771b2aa11a6036368000/side-kick-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "205ec62ff05dfe7eeee3b0786520316e", "sha256": "f0c66a3840f0508b60b8605c3322ed13fc937dc12b78ef893d1dbb0c488cf835" }, "downloads": -1, "filename": "side_kick-0.1.13-py3-none-any.whl", "has_sig": false, "md5_digest": "205ec62ff05dfe7eeee3b0786520316e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15164, "upload_time": "2019-08-06T15:32:37", "url": "https://files.pythonhosted.org/packages/b3/db/bc28322c41ff97ff3f611eefde0a4985382c9a43382ab1183b8f211d65a0/side_kick-0.1.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "640cab4155918104e54a35aeadaa89be", "sha256": "bdb388975ea1c5dd178bbe68de5e8e4298c8fe41f33b49d35f24c4d8830f1340" }, "downloads": -1, "filename": "side-kick-0.1.13.tar.gz", "has_sig": false, "md5_digest": "640cab4155918104e54a35aeadaa89be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9544, "upload_time": "2019-08-06T15:32:39", "url": "https://files.pythonhosted.org/packages/37/36/c69c58ab07a2521c6b89af61236d80848d1399524c3da329d60e2c44898e/side-kick-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "6cb86bbb995a35e19ed43f76751a5fa4", "sha256": "39fe3e0cce7497ff05161ce9e2478619def939b6ead3d37813ce2cec36d9b485" }, "downloads": -1, "filename": "side_kick-0.1.14-py3-none-any.whl", "has_sig": false, "md5_digest": "6cb86bbb995a35e19ed43f76751a5fa4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15169, "upload_time": "2019-08-07T14:46:41", "url": "https://files.pythonhosted.org/packages/58/17/2bc5c2a6c232c5ee356d40f703c140b024949e4f9a356c0fa87773f5e28a/side_kick-0.1.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b9d4ce303ccbaf15a7af1978bb08c0f3", "sha256": "f82e86e649dfc814c46c05bda62ea0634e36d0edafb9a14b624c11d4f62e04e8" }, "downloads": -1, "filename": "side-kick-0.1.14.tar.gz", "has_sig": false, "md5_digest": "b9d4ce303ccbaf15a7af1978bb08c0f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9560, "upload_time": "2019-08-07T14:46:43", "url": "https://files.pythonhosted.org/packages/e8/74/b14f20793287c34fb2a132c4098cd601cad45609dc3c9957e5d92535e402/side-kick-0.1.14.tar.gz" } ], "0.1.15": [ { "comment_text": "", "digests": { "md5": "9ec47032ff73fc6fc9892e5ef190afd5", "sha256": "767fe65b015dfc4963bae2d484698c01eff47a128e64c3cafe26509cb794624a" }, "downloads": -1, "filename": "side_kick-0.1.15-py3-none-any.whl", "has_sig": false, "md5_digest": "9ec47032ff73fc6fc9892e5ef190afd5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15212, "upload_time": "2019-08-13T11:53:38", "url": "https://files.pythonhosted.org/packages/26/68/1f942c8ad0d84c226bdbb83ccf3186389d2ffaa0a9871528d2ebdcea9718/side_kick-0.1.15-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7b8bd9e1f789f3fbdf5eea803da6efc", "sha256": "91d376ab722cfd3f9e78af95efc1e653cbd68b20dc28c89e171c8d2dacc4352b" }, "downloads": -1, "filename": "side-kick-0.1.15.tar.gz", "has_sig": false, "md5_digest": "e7b8bd9e1f789f3fbdf5eea803da6efc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9557, "upload_time": "2019-08-13T11:53:39", "url": "https://files.pythonhosted.org/packages/e4/2e/d47f97b61543d15a01eee038cb96c6f3601b39d9dbc7f51382a5fbafe770/side-kick-0.1.15.tar.gz" } ], "0.1.16": [ { "comment_text": "", "digests": { "md5": "e4e07b2337569e07a96ca2efbb0e84c0", "sha256": "685d0a208129381c0a3dbe409cab45e43ab0ebfdbbe6d6e8b13a8bf604339a69" }, "downloads": -1, "filename": "side_kick-0.1.16-py3-none-any.whl", "has_sig": false, "md5_digest": "e4e07b2337569e07a96ca2efbb0e84c0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14942, "upload_time": "2019-09-17T16:53:55", "url": "https://files.pythonhosted.org/packages/51/e5/ed16799c389061dde73014925e70720b27e6bddb6a1935121773d4ddac10/side_kick-0.1.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf19447c13604a3e2d1d3fa4a132e01c", "sha256": "f648df1c383acb3ef407664513eadb1e0bde976e7dd92af3f9f349b9f3322db2" }, "downloads": -1, "filename": "side-kick-0.1.16.tar.gz", "has_sig": false, "md5_digest": "bf19447c13604a3e2d1d3fa4a132e01c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9411, "upload_time": "2019-09-17T16:53:57", "url": "https://files.pythonhosted.org/packages/6c/52/b761629d091c5f7e96b71a5ea2f74b982ab412b0d63e8e5b31ba24953a81/side-kick-0.1.16.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "d6fd60ca58fba2a35c60376fc880cbcf", "sha256": "8ec4e839fb20b02ac138f711e4077fe814d8eb3aef2be5e254095dbc708f19b2" }, "downloads": -1, "filename": "side_kick-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d6fd60ca58fba2a35c60376fc880cbcf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12020, "upload_time": "2019-02-08T13:27:48", "url": "https://files.pythonhosted.org/packages/5a/a1/e50add286d42babe64f8b1e7ba389eec9d3f43f57e48802affddd7565c2c/side_kick-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c94aad0658f423de76243f0fb8063eea", "sha256": "da1da357c4fcebd3549efa56c8cf76dfb7be17696deb78c4f30b9ead5d1c40ff" }, "downloads": -1, "filename": "side-kick-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c94aad0658f423de76243f0fb8063eea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10288, "upload_time": "2019-02-08T13:27:49", "url": "https://files.pythonhosted.org/packages/1b/8a/7a158c02a999b880ac22b0ee3bed590ae0efec71b74067ffb2149bbd4310/side-kick-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "3c800d054638ddd794a42f086e669d23", "sha256": "afda265fa5c0aa9db3cd9766241e3688c569f69c4801c5ee5083735005a50861" }, "downloads": -1, "filename": "side_kick-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3c800d054638ddd794a42f086e669d23", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13153, "upload_time": "2019-02-11T17:04:03", "url": "https://files.pythonhosted.org/packages/60/14/494a52651f8bf43519a1e2b7af58dcb0fbe5e17b3fdad2eea11660bcebc3/side_kick-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b5fc41112551ce9468eb00da8f8c445", "sha256": "97682e4a2e070d732cbcd78ce7169ca43e912b1c25932423ff01cfdcd88cb3c1" }, "downloads": -1, "filename": "side-kick-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1b5fc41112551ce9468eb00da8f8c445", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10794, "upload_time": "2019-02-11T17:04:05", "url": "https://files.pythonhosted.org/packages/4f/7b/202886bb619509474c9f5b58d5f3cc68d82749e47b52147d71b1b32fe2b6/side-kick-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "f3c900181962dfbd207de178c39ca687", "sha256": "4ad5b8ebf4b98897990e653403241ee39bf4aa02877e8dc652eebe2fe891f51c" }, "downloads": -1, "filename": "side_kick-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "f3c900181962dfbd207de178c39ca687", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13410, "upload_time": "2019-02-12T11:01:00", "url": "https://files.pythonhosted.org/packages/da/96/8d48b69f12616fabe100db134a618d5ad7982a737b49ab53b7d2fc544ec8/side_kick-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e921ca2b1af98c75bfddf47341020e29", "sha256": "7ab0226a813e895bcea107034fc087b59a82275ef39e4f7030bd0adce97899c2" }, "downloads": -1, "filename": "side-kick-0.1.4.tar.gz", "has_sig": false, "md5_digest": "e921ca2b1af98c75bfddf47341020e29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10907, "upload_time": "2019-02-12T11:01:01", "url": "https://files.pythonhosted.org/packages/b4/ed/1c4b37f8aa3dd85141730ce1782c4fb7969f036e45c099d6dace7fe1b5f8/side-kick-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "faf1f03e475cb890cfde4e8b4e582cc5", "sha256": "2582a0e3e2c18942363f0ccb170c9abf28e3fc4f419aa4a2f2b0b0bb2d5a71aa" }, "downloads": -1, "filename": "side_kick-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "faf1f03e475cb890cfde4e8b4e582cc5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13414, "upload_time": "2019-02-12T12:04:58", "url": "https://files.pythonhosted.org/packages/ce/58/59904caba5e23edba50eb266de56b65744be3e42376a5637b005d824917a/side_kick-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91324f7ea7a260b7190559ba9d99c1fe", "sha256": "e8732ba3901673a0cb4c715ad850c4dec299cf1baaf29f5824596c9d59483734" }, "downloads": -1, "filename": "side-kick-0.1.5.tar.gz", "has_sig": false, "md5_digest": "91324f7ea7a260b7190559ba9d99c1fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10909, "upload_time": "2019-02-12T12:04:59", "url": "https://files.pythonhosted.org/packages/9b/27/dc70e4095c0ba7f24d8b272a00cefd9ba7169252ea4a66d1d0a281b42f12/side-kick-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "5299fed5b0d490ab0c04a0e8075d7652", "sha256": "f116e8dee19889af73d85e420c0b3a1dd3964f172a9802bd2f8597f16240ee84" }, "downloads": -1, "filename": "side_kick-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "5299fed5b0d490ab0c04a0e8075d7652", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13396, "upload_time": "2019-02-12T12:21:12", "url": "https://files.pythonhosted.org/packages/03/13/6739dfba43856737118e347b810c03872ba23d7d39ccd4b39de26bcd9b96/side_kick-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0054b1fb3a2d2f45ca21509b7a737b5f", "sha256": "88ed7e44b700afe9646f35370c12a966159d9c4ce51aa830492ce0989ba1d338" }, "downloads": -1, "filename": "side-kick-0.1.6.tar.gz", "has_sig": false, "md5_digest": "0054b1fb3a2d2f45ca21509b7a737b5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10892, "upload_time": "2019-02-12T12:21:14", "url": "https://files.pythonhosted.org/packages/d5/4b/3a2637acb143333cb744fafc1c64dc53e448b11da9f843494a90ac497498/side-kick-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "698f850ff68f81cca4e39120737d24be", "sha256": "4f26d03f9bf0b476328743198ad1006cdc10b071538127586bf378d9b3f5c1a2" }, "downloads": -1, "filename": "side_kick-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "698f850ff68f81cca4e39120737d24be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13413, "upload_time": "2019-02-12T13:42:33", "url": "https://files.pythonhosted.org/packages/ed/fb/a15b038da830fde03150b19f4b3a963d06736b3379a55e4dad3ab8a988e6/side_kick-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "87776a8a0ac27ddf368fc676bbf0b780", "sha256": "8858b9b172c7956c2223a80b4aa1a7786beb3bd135e2022cf9784e7c4642e6e5" }, "downloads": -1, "filename": "side-kick-0.1.7.tar.gz", "has_sig": false, "md5_digest": "87776a8a0ac27ddf368fc676bbf0b780", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10904, "upload_time": "2019-02-12T13:42:35", "url": "https://files.pythonhosted.org/packages/45/ff/f402b0cfef0973f663ecd5d9696185641dbde79e7dd7617c96a733e8253c/side-kick-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "16dfc9da9be554d8b9dc26b97f0948fc", "sha256": "8491e206ccb4a1ea4140e4ff26d84e259f81a0941145f47f2842f54f1e876bbe" }, "downloads": -1, "filename": "side_kick-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "16dfc9da9be554d8b9dc26b97f0948fc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13415, "upload_time": "2019-03-05T09:55:50", "url": "https://files.pythonhosted.org/packages/95/a9/e25168c7f31c125369f7cf76f02e29dfe8e6088ac1bcf1368243aee6dbde/side_kick-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ec61cccd7b78ead4635a66a2630b830d", "sha256": "76f0809b5a02ba4e8d02e1ad447a063b7dae1ef7213432383f80e870d11e3a71" }, "downloads": -1, "filename": "side-kick-0.1.8.tar.gz", "has_sig": false, "md5_digest": "ec61cccd7b78ead4635a66a2630b830d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10905, "upload_time": "2019-03-05T09:55:52", "url": "https://files.pythonhosted.org/packages/13/67/e16325745cbf6f0fada4c6bf4f2571e002ab574b7571146ae5b9c180564f/side-kick-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "fbb86ff8334f380eafb24f893c77a2c4", "sha256": "02612c93208aa9ed01929c90d1de6ab34ed608d6d7d24c995e87fe6652f8701c" }, "downloads": -1, "filename": "side_kick-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "fbb86ff8334f380eafb24f893c77a2c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14170, "upload_time": "2019-07-16T12:02:52", "url": "https://files.pythonhosted.org/packages/5e/b5/4e3f00ba8760392b5fd455e128c67c23426cd5656390079afdf151417af2/side_kick-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "288fafc84f8884dbf51786f97740ef4e", "sha256": "6207c20762440ee9a2dbce64f6145ae34a8648a52956cd613e23d03f8c3492ee" }, "downloads": -1, "filename": "side-kick-0.1.9.tar.gz", "has_sig": false, "md5_digest": "288fafc84f8884dbf51786f97740ef4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11501, "upload_time": "2019-07-16T12:02:54", "url": "https://files.pythonhosted.org/packages/d7/84/96626cfc211577c21b75bcdc45739f981ec65bd5f5b2abed0488e9e38365/side-kick-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e4e07b2337569e07a96ca2efbb0e84c0", "sha256": "685d0a208129381c0a3dbe409cab45e43ab0ebfdbbe6d6e8b13a8bf604339a69" }, "downloads": -1, "filename": "side_kick-0.1.16-py3-none-any.whl", "has_sig": false, "md5_digest": "e4e07b2337569e07a96ca2efbb0e84c0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14942, "upload_time": "2019-09-17T16:53:55", "url": "https://files.pythonhosted.org/packages/51/e5/ed16799c389061dde73014925e70720b27e6bddb6a1935121773d4ddac10/side_kick-0.1.16-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf19447c13604a3e2d1d3fa4a132e01c", "sha256": "f648df1c383acb3ef407664513eadb1e0bde976e7dd92af3f9f349b9f3322db2" }, "downloads": -1, "filename": "side-kick-0.1.16.tar.gz", "has_sig": false, "md5_digest": "bf19447c13604a3e2d1d3fa4a132e01c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9411, "upload_time": "2019-09-17T16:53:57", "url": "https://files.pythonhosted.org/packages/6c/52/b761629d091c5f7e96b71a5ea2f74b982ab412b0d63e8e5b31ba24953a81/side-kick-0.1.16.tar.gz" } ] }