{ "info": { "author": "Pior Bastida", "author_email": "pior@pbastida.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet" ], "description": "=======\nCaravan\n=======\n\n**Light python framework for AWS SWF**\n\nAbout this Project\n==================\n\nCaravan is being used at `Ludia `_ for projects\nlike marketing campaign system and on-demand distributed processing\nsystems (thanks to hundreds of Lambda functions).\n\nFeedbacks, ideas and contributions are highly welcomed. (Just open a\n`Github issue `_).\n\n- `Code on Github `_\n- `PyPi `_\n- `Tests `_ |travis| |coveralls|\n- Doc: ``TODO``\n\n.. |travis| image:: https://travis-ci.org/pior/caravan.svg?branch=master\n :target: https://travis-ci.org/pior/caravan\n\n.. |coveralls| image:: https://coveralls.io/repos/pior/caravan/badge.svg?branch=master&service=github\n :target: https://coveralls.io/github/pior/caravan?branch=master\n\nFocus of this project\n=====================\n\nSimilar projects exists (like Simpleflow which seems mature).\nHere is where Caravan differs from existing projects:\n\n- Support of AWS Lambda tasks\n- Boto3\n- KISS\n- Bring your own workflow framework (standard implementations as contribs)\n- No coupling between Decider code and Activity code\n- Paster compatible config file\n\nFeatures\n========\n\n- Decider worker\n- Activity task worker ``TODO``\n- Commands to start/signal/terminate an arbitrary workflow execution\n- Command to list open workflow execution\n- Command to register a domain / list domains\n\nConfiguration\n=============\n\nCaravan uses Boto3 to connect to AWS. See\n`Boto 3 configuration guide `_\nfor the complete documentation.\n\n.. warning::\n On AWS EC2, the metadata provider only provides the credentials, the\n must be provided by configuration.\n\nEnvironment Variables\n---------------------\n\n``AWS_ACCESS_KEY_ID``\n The access key for your AWS account.\n\n``AWS_SECRET_ACCESS_KEY``\n The secret key for your AWS account.\n\n``AWS_DEFAULT_REGION``\n The default region to use, e.g. `us-east-1`.\n\n``AWS_PROFILE``\n The default credential and configuration profile to use, if any.\n\nConfiguration Files\n-------------------\n\nThe credentials file is located at ``~/.aws/credentials``::\n\n [default]\n # The access key for your AWS account\n aws_access_key_id=\n\n # The secret key for your AWS account\n aws_secret_access_key=\n\nThe settings file is located at ``~/.aws/config``::\n\n [default]\n # The default region when making requests\n region=\n\nIt also supports profiles::\n\n [profile dev-profile]\n # The default region when using the dev-profile account\n region=\n\nDemo\n====\n\nSetup a SWF domain to run this example::\n\n $ caravan-domain-register -n CaravanDemo --retention-days 1\n\nWrite a workflow type (see full demo_)\n\n.. code:: python\n\n from caravan import Workflow\n\n\n class Demo(Workflow):\n\n \"\"\"Noop workflow using the bare caravan API.\"\"\"\n\n name = 'Demo'\n version = '0.1'\n default_execution_start_to_close_timeout = '600'\n default_task_start_to_close_timeout = '10'\n\n def run(self):\n self.task.print_events()\n self.task.add_decision('CompleteWorkflowExecution')\n\n.. _demo: https://github.com/pior/caravan/blob/master/caravan/examples/demo.py\n\nRun the decider with the Demo workflow::\n\n $ caravan-decider -d CaravanDemo -m caravan.examples.demo -t default --verbose\n\nStart an execution of the Demo workflow::\n\n $ caravan-start -d CaravanDemo -n Demo -v 0.1 -i 1\n\n (The Demo workflow will wait for 5 minutes)\n\nList the executions::\n\n $ caravan-list -d CaravanDemo\n $ caravan-list -d CaravanDemo --oldest 2015-01-01\n\nSend a signal to an execution::\n\n $ caravan-signal -d CaravanDemo -i 1 -s PRINT --input 'Hello World!'\n $ caravan-signal -d CaravanDemo -i 1 -s PRINT --input 'Lorem ipsum'\n $ caravan-signal -d CaravanDemo -i 1 -s STOP\n\nTerminate an execution::\n\n $ caravan-terminate -d CaravanDemo -i 1\n\nSimilar projects\n================\n\nPython:\n\n- Simpleflow: https://github.com/botify-labs/simpleflow\n- Flowy: https://github.com/severb/flowy\n- Garcon: https://github.com/xethorn/garcon\n\nRuby:\n\n- AWS Flow: https://github.com/aws/aws-flow-ruby\n\nReferences\n==========\n\n- `AWS Developer Guide for SWF `_\n- `AWS API reference for SWF `_\n\nDevelopment\n===========\n\nPossibly use `virtualenvwrapper `_\nto manage your virtualenvs.\n\n $ mkvirtualenv caravan\n\n or\n\n $ virtualenv caravan\n\nClone and install development dependencies::\n\n (caravan)$ git clone git@github.com:pior/caravan.git\n (caravan)$ cd caravan\n (caravan)$ pip install -e .[dev]\n\nRun tests::\n\n (caravan)$ nosetests\n\nRelease\n=======\n\nThe release process use zest.releaser::\n\n $ fullrelease\n\nLicense\n=======\n\nMIT licensed. See the bundled\n`LICENSE `_\nfile for more details", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/pior/caravan", "keywords": "AWS SWF workflow distributed background task", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "caravan", "package_url": "https://pypi.org/project/caravan/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/caravan/", "project_urls": { "Homepage": "https://github.com/pior/caravan" }, "release_url": "https://pypi.org/project/caravan/0.2.2/", "requires_dist": [ "boto3", "arrow", "six", "tabulate", "inflection", "nose; extra == 'dev'", "nosexcover; extra == 'dev'", "coverage; extra == 'dev'", "yanc (==0.2.4); extra == 'dev'", "mock; extra == 'dev'", "freezegun; extra == 'dev'", "abduct; extra == 'dev'", "httpretty (==0.8.10); extra == 'dev'", "moto; extra == 'dev'", "zest.releaser[recommended]; extra == 'dev'", "pylama; extra == 'dev'" ], "requires_python": "", "summary": "Light python framework for AWS SWF", "version": "0.2.2" }, "last_serial": 1883926, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "a8b752434a8aaabc518c46aec7308351", "sha256": "31b7f6b8fc600521275dd3c204cc7e657323a60ee52e79d629cc22825037ee13" }, "downloads": -1, "filename": "caravan-0.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "a8b752434a8aaabc518c46aec7308351", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10851, "upload_time": "2015-11-13T03:56:15", "url": "https://files.pythonhosted.org/packages/38/e5/c49322a902355c7dadd5cbb80a6fd1f538b6ad191904616fedb471c5487a/caravan-0.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3a2c986f28a9393f07fa846b4c1130b", "sha256": "200dc7ff7edd87ec14170dd4bb7ce017e9ea643ac94ecaebe5a6c0c0a8cbcf33" }, "downloads": -1, "filename": "caravan-0.0.2.tar.gz", "has_sig": false, "md5_digest": "a3a2c986f28a9393f07fa846b4c1130b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7553, "upload_time": "2015-11-13T03:56:19", "url": "https://files.pythonhosted.org/packages/e0/9d/6f0cdf6ceb5f0e36813043fdba8e07bb6c4aeeb484def1c6621e06191601/caravan-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "25d28d338dbd9b887e77e7e2123c51ee", "sha256": "e656473bd15bf52df0f68652f6dddae26ebcd1226fae2e6df0c843c1fe622c6b" }, "downloads": -1, "filename": "caravan-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "25d28d338dbd9b887e77e7e2123c51ee", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 13543, "upload_time": "2015-11-19T23:52:54", "url": "https://files.pythonhosted.org/packages/be/d3/2cff791e1a33c8202f788195b7519e5c8b981df2980cf79e82647448fd93/caravan-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e88e58a733fad6aaa3989e66d46c52c4", "sha256": "67ff6393503098d91b1eb76baa26b7a8a68f311a3645035d1b7ed68d771e8427" }, "downloads": -1, "filename": "caravan-0.1.0.tar.gz", "has_sig": false, "md5_digest": "e88e58a733fad6aaa3989e66d46c52c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9304, "upload_time": "2015-11-19T23:53:15", "url": "https://files.pythonhosted.org/packages/1b/9f/67938aaa2426026a1c8f80e70a0c20042bec2a31f6d1c7f3ee3f0cbbaf94/caravan-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e174809e94e35ca6a8d36a02a59ff860", "sha256": "ed68c1219e292c27370a81ce72eab6f609b3390a4003dec478dbbb0333f56f30" }, "downloads": -1, "filename": "caravan-0.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "e174809e94e35ca6a8d36a02a59ff860", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17732, "upload_time": "2015-11-23T20:15:06", "url": "https://files.pythonhosted.org/packages/c5/7d/295c555c7f4ca24ba4e85e78630996fd388c046c99e09849e55faf2a722f/caravan-0.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a204b471f46d9278e924e52bd7a582f3", "sha256": "9a38be556093bd537516b77206ee7760b35a3b20601a30f90f107f56bc1d40a9" }, "downloads": -1, "filename": "caravan-0.1.1.tar.gz", "has_sig": false, "md5_digest": "a204b471f46d9278e924e52bd7a582f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10770, "upload_time": "2015-11-23T20:15:16", "url": "https://files.pythonhosted.org/packages/28/37/8f2cea939ab1052caac86b0557643ae73e5e9f5ecd9b12547780eb72c6ff/caravan-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "08824f33f4657b624c3ea7275ba46902", "sha256": "cf26b253a5185f8440a9451ca3979e124bca88e0dc3c15ab4f1882fabcc48bf9" }, "downloads": -1, "filename": "caravan-0.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "08824f33f4657b624c3ea7275ba46902", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18038, "upload_time": "2015-11-24T16:01:28", "url": "https://files.pythonhosted.org/packages/ea/e7/f4e614f83cc630a3f85854848774ada0bce7e49607e6ac7635fbeee57e81/caravan-0.1.2-py2-none-any.whl" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "71d70026efb5de5d9f45da3159b84370", "sha256": "feeeb634f53628a7aacd3bebbc5f920bbe935b4a723f932ed59df0557021e8d3" }, "downloads": -1, "filename": "caravan-0.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "71d70026efb5de5d9f45da3159b84370", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18036, "upload_time": "2015-11-24T16:04:10", "url": "https://files.pythonhosted.org/packages/4f/ce/a2c47a25314498647b659ba28d8279d0183a2dc571b4f2f0328c05fa1ad7/caravan-0.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cffcc46aaf86ba7a5441991c4e5ea1cd", "sha256": "9cdd2daaeb1e195b0169addb717167635b9eac1e156d443d18fa367be54db843" }, "downloads": -1, "filename": "caravan-0.1.3.tar.gz", "has_sig": false, "md5_digest": "cffcc46aaf86ba7a5441991c4e5ea1cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11087, "upload_time": "2015-11-24T16:04:18", "url": "https://files.pythonhosted.org/packages/af/38/1d9930bfac92d1760c92cb40d8b6429adc6a5b239ae5a2791523a1a8f9e4/caravan-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "8e4448f48b117423f0c88a51cd2d5260", "sha256": "09753cd0652d17e6e6fa21cf53402e5a4ef65f5685c30057fd056afa0be87b9b" }, "downloads": -1, "filename": "caravan-0.1.4-py2-none-any.whl", "has_sig": false, "md5_digest": "8e4448f48b117423f0c88a51cd2d5260", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 18212, "upload_time": "2015-12-02T22:04:09", "url": "https://files.pythonhosted.org/packages/c6/63/3fff7a7149a9d96300164b140eceb965b96016833c458504c1a7599acdf1/caravan-0.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27bbb1507e3407e12440d0cf5f94d6c0", "sha256": "6d5d25938b01bc1aafda4549d04ec096ba2e0dbb0ac58c5c730262515878a6e8" }, "downloads": -1, "filename": "caravan-0.1.4.tar.gz", "has_sig": false, "md5_digest": "27bbb1507e3407e12440d0cf5f94d6c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11256, "upload_time": "2015-12-02T22:04:23", "url": "https://files.pythonhosted.org/packages/aa/73/a4ac4f251667b724af1a3a76b8f0fe1901836ed40207f96c6cba6209666f/caravan-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b45aeef2bd0e746f495fcf4825675946", "sha256": "8ebf77cce4c7744f0f70a69056904077615e59e37cbe432262144ff8b1b9f958" }, "downloads": -1, "filename": "caravan-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "b45aeef2bd0e746f495fcf4825675946", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 22011, "upload_time": "2015-12-03T16:38:46", "url": "https://files.pythonhosted.org/packages/e5/5f/f91aee794b86bf6269f86bec6f08b12f31074460f1fac7a9e932d1471fb7/caravan-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "06f5f851d4c0c3700ba5f1bc5482ec94", "sha256": "c218d160b6370e48f10e483f33a0d446e84cbabe58db3318208d47b0fb5002ec" }, "downloads": -1, "filename": "caravan-0.2.0.tar.gz", "has_sig": false, "md5_digest": "06f5f851d4c0c3700ba5f1bc5482ec94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13115, "upload_time": "2015-12-03T16:38:51", "url": "https://files.pythonhosted.org/packages/87/e0/accf52d1d152b666b00e27f2b7624198d1785805dd5f05c6e7b587f9454f/caravan-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f905ac15bdc55ae0b3698c5b6037d9b1", "sha256": "8a9f098358cd19c2082da3b783ad8889c3f79bbb96cfdcad60ba889517c6c8a4" }, "downloads": -1, "filename": "caravan-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "f905ac15bdc55ae0b3698c5b6037d9b1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 23576, "upload_time": "2015-12-08T02:15:17", "url": "https://files.pythonhosted.org/packages/67/5f/386e5ac114e2943016274c3c0d5b4f58733eef81891b397b6da2487220c7/caravan-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b0c6ef47bfca638ed32edf6b9227cd49", "sha256": "4adb9c746d65b27daa72b1b0a52997cf70238fe2c08873be8e7655542f6b130c" }, "downloads": -1, "filename": "caravan-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b0c6ef47bfca638ed32edf6b9227cd49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14314, "upload_time": "2015-12-08T02:15:23", "url": "https://files.pythonhosted.org/packages/0f/2a/a0cf77b4d4e7b61a7904e2af90a3eb169cb08b6feb7cbe6e4e0442ac50dc/caravan-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "27ca1e40c13a89093d1a59eb70292d9a", "sha256": "8748a069a437751b2c7ddd0ce80db959107c47eb714257474fb51c22aa14b9e4" }, "downloads": -1, "filename": "caravan-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "27ca1e40c13a89093d1a59eb70292d9a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32079, "upload_time": "2015-12-31T20:56:45", "url": "https://files.pythonhosted.org/packages/b0/81/a2f1dd81ec9273a93aadd2647b2e95f44b01234cd789f745a9dc286b3cf6/caravan-0.2.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23999c0fb1b91a59b3745e499fc66a6e", "sha256": "a2fe28892ba5657328527c2952f64deb639147bf117e756077f99c7d69a9a12b" }, "downloads": -1, "filename": "caravan-0.2.2.tar.gz", "has_sig": false, "md5_digest": "23999c0fb1b91a59b3745e499fc66a6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19691, "upload_time": "2015-12-31T20:56:50", "url": "https://files.pythonhosted.org/packages/69/56/cc47a1089782f2241379710f39f7ba88577fc701a623a3cae82f77e8d792/caravan-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "27ca1e40c13a89093d1a59eb70292d9a", "sha256": "8748a069a437751b2c7ddd0ce80db959107c47eb714257474fb51c22aa14b9e4" }, "downloads": -1, "filename": "caravan-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "27ca1e40c13a89093d1a59eb70292d9a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 32079, "upload_time": "2015-12-31T20:56:45", "url": "https://files.pythonhosted.org/packages/b0/81/a2f1dd81ec9273a93aadd2647b2e95f44b01234cd789f745a9dc286b3cf6/caravan-0.2.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23999c0fb1b91a59b3745e499fc66a6e", "sha256": "a2fe28892ba5657328527c2952f64deb639147bf117e756077f99c7d69a9a12b" }, "downloads": -1, "filename": "caravan-0.2.2.tar.gz", "has_sig": false, "md5_digest": "23999c0fb1b91a59b3745e499fc66a6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19691, "upload_time": "2015-12-31T20:56:50", "url": "https://files.pythonhosted.org/packages/69/56/cc47a1089782f2241379710f39f7ba88577fc701a623a3cae82f77e8d792/caravan-0.2.2.tar.gz" } ] }