{ "info": { "author": "Tomasz J. Kotarba", "author_email": "tomasz@kotarba.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: End Users/Desktop", "Intended Audience :: System Administrators", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Topic :: Desktop Environment", "Topic :: Internet", "Topic :: Utilities" ], "description": "=============\nrapidpro-pull\n=============\n|pypi-release| |pypi-status| |pypi-format| |pypi-licence|\n\n|linux-ci| |macos-ci| |windows-ci| |coveralls|\n\n|code-quality| |code-health| |codecov|\n\n`rapidpro-pull`_ is an open-source command-line tool for pulling data from\n`RapidPro`_ servers, printing it in the JSON format and caching it in local or\nremote relational databases (any database supported by `SQLAlchemy`_ - e.g.\nPostgreSQL, Oracle, SQLite). It has been developed for `UNICEF`_ to create a\nfoundation for a new `ETL`_ subsystem for `IMAMD`_ but it is a standalone tool\nwhich can be used independently.\n\nIntallation and usage\n---------------------\n\nTo install and get started::\n\n $ pip install rapidpro-pull\n $ rapidpro-pull --help\n\nUsage::\n\n rapidpro-pull --flow-runs --api-token= [--address=
]\n [--before= --after=]\n [--with-contacts --with-flows]\n [--cache=]\n\n rapidpro-pull --flows --api-token= [--address=
]\n [--before= --after=]\n [--uuid= ...]\n [--cache=]\n\n rapidpro-pull --contacts --api-token= [--address=
]\n [--before= --after=]\n [--uuid= ...]\n [--cache=]\n\n rapidpro-pull --help\n\n Options:\n --flow-runs download flow runs\n --flows download flows\n --contacts download contacts\n -a, --address=
a RapidPro server [default: rapidpro.io]\n -t, --api-token= a RapidPro API token\n\n -h, --help display this help and exit\n\n --before= download all older than ISO 8601 date/time\n --after= download all newer than ISO 8601 date/time\n\n --uuid= fetch objects matching UUID(s) (repeatable)\n\n --with-flows download associated flows, too\n --with-contacts download associated contacts, too\n\n --cache= use database-url as cache (store retrieved\n objects in cache; retrieve objects from\n cache instead of downloading from RapidPro\n when possible)\n\n\nExamples:\n\n\nrapidpro-pull --api-token=a-token -flow-runs >all-flow-runs.json\n Use a RapidPro API token a-token to download all flow runs and save them into\n a JSON file all-flow-runs.json.\n\n\nrapidpro-pull -t a-token --address https://rapidpro.kotarba.net --flow-runs\n Use a RapidPro API token a-token to download all flow runs from an alternative\n RapidPro service rapidpro.kotarba.net over HTTPS and print them in the JSON\n format.\n\n\nrapidpro-pull -t a-token --flow-runs --with-flows --cache=sqlite:////tmp/rp.db\n Use token a-token to download all flow runs and their associated flows. Do\n not download flows already cached in the provided SQLite database in file\n /tmp/rp.db and do not overwrite cached flow runs. Add all newly downloaded\n objects to the database for later processing.\n\n\nrapidpro-pull --flow-runs --with-flows --with-contacts --api-token=a-token\n Use a RapidPro API token a-token to download all flow runs together with all\n associated flows and contacts\n\n\nrapidpro-pull -t a-token --flows --after 2016-01-01T12:12:12.596000Z\n Use token a-token to download all flows newer than 2016-01-01T12:12:12.596Z.\n\n\nrapidpro-pull -t a-token --contacts --uuid=a --uuid=b --uuid=c\n Use token a-token to download contacts with UUIDs a, b or c.\n\n\nDevelopment\n-----------\n|code-quality-dev| |code-health-dev| |coveralls-dev|\n\n|linux-ci-dev| |macos-ci-dev| |windows-ci-dev| |codecov-dev|\n\nWorking on `rapidpro-pull`_ requires the installation of a small number of\ndevelopment dependencies (in addition to the dependencies required to just run\nthe program). These dependencies are listed in tests_require in the setup.py\nfile but one does not need to install them by hand unless one chooses to invoke\nthe project test runners manually (see: alternative ways to run tests). In\norder to get started one may want to do the following::\n\n $ # Create a virtualenv and activate it, e.g.: mkvirtualenv rapidpro-pull\n $ git clone https://github.com/system7-open-source/rapidpro-pull.git\n $ cd rapidpro-pull\n $ pip install --editable .\n\nTo use the alternative ways of running tests one needs to explicitly install\nthe aforementioned additional dependencies (this step is optional and not\nrequired to run tests)::\n\n $ pip install --editable .[development]\n\nThe project has been developed using the BDD / outside-in TDD approach and\nthere are two separate groups of tests: features and scenarios describing the\nhigh-level/system behaviour using the Gherkin syntax (and, underneath, Python),\nand the low-level unit tests (the author is not a mockist but a classicist which\nmeans that mocking and stubbing is used where it seems to make sense instead of\neverywhere ;) ). The provided unit tests ensure 100% code coverage (statement\n+ branch). Apart from the coverage reports printed after each execution of unit\ntests, one can view the latest HTML report stored in the htmlcov directory.\n\nThe functional tests (features/scenarios) are found in the features/\ndirectory. To execute them::\n\n $ python setup.py behave_test # please use -b to pass arguments to behave\n $ behave # an alternative way of running tests, please see: behave --help\n\nThe unit tests are found in the tests/ directory. To execute them::\n\n $ python setup.py pytest # please use -p to pass arguments to py.test\n $ python setup.py test # an alias for pytest\n $ py.test # an alternative way of running tests, please see: py.test -h\n\nAlternatively, to run all tests on all supported implementations and versions of\nPython, one can just execute the following command::\n\n $ tox\n\nContinuous Integration\n----------------------\n\nWe use tox together with various continuous integration services to analyse the\ncode quality and test rapidpro-pull on all supported platforms (Linux, MacOS,\nWindows) and on all supported implementations and versions of Python. The\nstatus of the current stable release can be easily checked by looking at the\nstatus badges at the top of this document (`rapidpro-pull`_). For developers,\nthe status of the develop branch is displayed in the `Development`_ section.\n\nContact\n-------\n\nPlease feel free to use this project issue tracker where appropriate, fork\nthis repository and generate pull requests. The author can also be contacted\nvia e-mail_: Tomasz J. Kotarba .\n\nSpecial Thanks\n--------------\n\nSpecial thanks to Robert Johnston (a crusading saint of UNICEF, always ready to\nfight dragons to save those in need) without whom this project would never be.\n\n----\n\n.. _rapidpro-pull: https://github.com/system7-open-source/rapidpro-pull/\n.. _RapidPro: https://rapidpro.github.io/rapidpro/\n.. _SQLAlchemy: https://en.wikipedia.org/wiki/SQLAlchemy\n.. _UNICEF: http://www.unicef.org/\n.. _ETL: https://en.wikipedia.org/wiki/Extract,_transform,_load\n.. _IMAMD: https://github.com/system7-open-source/imamd\n.. _e-mail: mailto:tomasz@kotarba.net?subject=rapidpro-pull:\n\n.. |pypi-release| image:: https://img.shields.io/pypi/v/rapidpro-pull.svg\n :target: https://pypi.python.org/pypi/rapidpro-pull\n :alt: Release on PyPI\n\n.. |pypi-status| image:: https://img.shields.io/pypi/status/rapidpro-pull.svg\n :target: https://pypi.python.org/pypi/rapidpro-pull\n :alt: Status on PyPI\n\n.. |pypi-format| image:: https://img.shields.io/pypi/format/rapidpro-pull.svg\n :target: https://pypi.python.org/pypi/rapidpro-pull\n :alt: Format\n\n.. |pypi-licence| image:: https://img.shields.io/pypi/l/rapidpro-pull.svg\n :target: https://pypi.python.org/pypi/rapidpro-pull\n :alt: Licence\n\n.. |code-quality| image:: https://img.shields.io/scrutinizer/g/system7-open-source/rapidpro-pull/master.svg\n :target: https://scrutinizer-ci.com/g/system7-open-source/rapidpro-pull/?branch=master\n :alt: Code Quality (Scrutinizer)\n\n.. |code-health| image:: https://landscape.io/github/system7-open-source/rapidpro-pull/master/landscape.svg?style=flat\n :target: https://landscape.io/github/system7-open-source/rapidpro-pull/master\n :alt: Code Health (Landscape / Prospector)\n\n.. |linux-ci| image:: https://img.shields.io/travis/system7-open-source/rapidpro-pull/master.svg?label=CI%3A%20Linux\n :target: https://travis-ci.org/system7-open-source/rapidpro-pull\n :alt: Continuous Integration Testing (Linux)\n\n.. |macos-ci| image:: https://img.shields.io/travis/system7-open-source/rapidpro-pull/master.svg?label=CI%3A%20MacOS\n :target: https://travis-ci.org/system7-open-source/rapidpro-pull\n :alt: Continuous Integration Testing (MacOS)\n\n.. |windows-ci| image:: https://img.shields.io/appveyor/ci/system7ltd/rapidpro-pull/master.svg?label=CI%3A%20Windows\n :target: https://ci.appveyor.com/project/system7ltd/rapidpro-pull?branch=master\n :alt: Continuous Integration Testing (Windows)\n\n.. |coveralls| image:: https://coveralls.io/repos/github/system7-open-source/rapidpro-pull/badge.svg?branch=master\n :target: https://coveralls.io/github/system7-open-source/rapidpro-pull?branch=master\n :alt: Test Coverage (coveralls)\n\n.. |codecov| image:: https://codecov.io/gh/system7-open-source/rapidpro-pull/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/system7-open-source/rapidpro-pull\n :alt: Test Coverage (codecov)\n\n.. |code-quality-dev| image:: https://img.shields.io/scrutinizer/g/system7-open-source/rapidpro-pull/develop.svg\n :target: https://scrutinizer-ci.com/g/system7-open-source/rapidpro-pull/?branch=develop\n :alt: Code Quality (Scrutinizer)\n\n.. |code-health-dev| image:: https://landscape.io/github/system7-open-source/rapidpro-pull/develop/landscape.svg?style=flat\n :target: https://landscape.io/github/system7-open-source/rapidpro-pull/develop\n :alt: Code Health (Landscape / Prospector)\n\n.. |windows-ci-dev| image:: https://img.shields.io/appveyor/ci/system7ltd/rapidpro-pull/develop.svg?label=CI%3A%20Windows\n :target: https://ci.appveyor.com/project/system7ltd/rapidpro-pull?branch=develop\n :alt: Continuous Integration Testing (Windows)\n\n.. |linux-ci-dev| image:: https://img.shields.io/travis/system7-open-source/rapidpro-pull/develop.svg?label=CI%3A%20Linux\n :target: https://travis-ci.org/system7-open-source/rapidpro-pull\n :alt: Continuous Integration Testing (Linux)\n\n.. |macos-ci-dev| image:: https://img.shields.io/travis/system7-open-source/rapidpro-pull/develop.svg?label=CI%3A%20MacOS\n :target: https://travis-ci.org/system7-open-source/rapidpro-pull\n :alt: Continuous Integration Testing (MacOS)\n\n.. |coveralls-dev| image:: https://coveralls.io/repos/github/system7-open-source/rapidpro-pull/badge.svg?branch=develop\n :target: https://coveralls.io/github/system7-open-source/rapidpro-pull?branch=develop\n :alt: Test Coverage (coveralls)\n\n.. |codecov-dev| image:: https://codecov.io/gh/system7-open-source/rapidpro-pull/branch/develop/graph/badge.svg\n :target: https://codecov.io/gh/system7-open-source/rapidpro-pull\n :alt: Test Coverage (codecov)", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/system7-open-source/rapidpro-pull", "keywords": "rapidpro", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "rapidpro-pull", "package_url": "https://pypi.org/project/rapidpro-pull/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/rapidpro-pull/", "project_urls": { "Homepage": "https://github.com/system7-open-source/rapidpro-pull" }, "release_url": "https://pypi.org/project/rapidpro-pull/1.0.3/", "requires_dist": [ "docopt (>=0.6,<1)", "rapidpro-python (<3,>=2.1.1)", "sqlalchemy (>=1.1.3,<2)", "PyHamcrest (>=1.9,<2); extra == 'development'", "behave (>=1.2.5,<2); extra == 'development'", "iocapture (>=0.1.2,<1); extra == 'development'", "mock (<3,>=2); extra == 'development'", "pretenders (>=1.4.2,<2); extra == 'development'", "pytest (>=3,<4); extra == 'development'", "pytest-cov (>=2.4,<3); extra == 'development'", "pytz (>=2016.7); extra == 'development'", "tox-travis; extra == 'development'" ], "requires_python": ">=2.7,!=3.*", "summary": "An open-source tool to pull and cache data from RapidPro servers.", "version": "1.0.3" }, "last_serial": 2614995, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "879c326eb524af5b603ef38751dc12c3", "sha256": "f7afbe286f4d4eb40bb3d831483c28f2a3c7ad6380838a7448166b0119d0edfc" }, "downloads": -1, "filename": "rapidpro_pull-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "879c326eb524af5b603ef38751dc12c3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.*", "size": 13449, "upload_time": "2016-12-22T17:07:53", "url": "https://files.pythonhosted.org/packages/7d/f4/66a41716528428d8df808e51cdf498b8f2646568648970d89e7b0ee0c9e1/rapidpro_pull-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3b122aa5385dd4943a3a361341ed2c1", "sha256": "4cede7ae0a8b9214f98c7c49b33819981e0e8dfc006dfc38ee526bb0bfb1d7e1" }, "downloads": -1, "filename": "rapidpro-pull-1.0.0.tar.gz", "has_sig": false, "md5_digest": "e3b122aa5385dd4943a3a361341ed2c1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.*", "size": 9150, "upload_time": "2016-12-22T17:07:55", "url": "https://files.pythonhosted.org/packages/12/12/df3f91016b9841ddb45549dd041edc98716ec38cacccab6726aef90f1f2e/rapidpro-pull-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "aae80c8eb0a2a4e5f96e69fb57a164f0", "sha256": "ffc647dffc861962a01587734865a656563faa87a0214131f01eac8ae7e11ab1" }, "downloads": -1, "filename": "rapidpro_pull-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aae80c8eb0a2a4e5f96e69fb57a164f0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.*", "size": 13438, "upload_time": "2016-12-24T11:59:12", "url": "https://files.pythonhosted.org/packages/d3/b4/5daa144f229733954a9c56b6b9423d0d9ba6bd7a893ddac08cf461f2adc4/rapidpro_pull-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6016ae5e82b51ab63fe7c2af8223e02d", "sha256": "a70c5508d8b2f9b2aabcc0741cd051817863e7c05b333deb303ae6c84f71a8c7" }, "downloads": -1, "filename": "rapidpro-pull-1.0.1.tar.gz", "has_sig": false, "md5_digest": "6016ae5e82b51ab63fe7c2af8223e02d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.*", "size": 9159, "upload_time": "2016-12-24T11:59:14", "url": "https://files.pythonhosted.org/packages/79/9a/ca6832c191f3ddfae2f77d3cf62a6ea305e86ab64e5cf22d58bcf8e7f13e/rapidpro-pull-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "36b2487226747a2ebda51f8680687415", "sha256": "961d408493495b3b32cb7655612c3fe24dffc562eeeb88a78c9e8ca129b40ab1" }, "downloads": -1, "filename": "rapidpro_pull-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "36b2487226747a2ebda51f8680687415", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14369, "upload_time": "2017-01-19T16:18:33", "url": "https://files.pythonhosted.org/packages/3c/90/5851c2612f9a66ede18377c73ef059b6da170500c2f1ad19e71f13998c7b/rapidpro_pull-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "52cea7f96975b4e121d2f6d222d260be", "sha256": "fb4793ee86d12f6956e28550a20e431b931149a3dea6b617a7cd52782bf68518" }, "downloads": -1, "filename": "rapidpro-pull-1.0.2.tar.gz", "has_sig": false, "md5_digest": "52cea7f96975b4e121d2f6d222d260be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9822, "upload_time": "2017-01-19T16:18:35", "url": "https://files.pythonhosted.org/packages/70/6c/3aa681b7480a0b444977241529b0d00eb3f853bdd5af7949f75f369f92dd/rapidpro-pull-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "68054e30ff1f82aca9ffb24997d2eaa6", "sha256": "04403f4f63b70ea0ace4c10bd9b61913d3dd9201f2f49dc924ca428c356a1a89" }, "downloads": -1, "filename": "rapidpro_pull-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "68054e30ff1f82aca9ffb24997d2eaa6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.*", "size": 15179, "upload_time": "2017-02-02T17:46:29", "url": "https://files.pythonhosted.org/packages/a3/ad/2f370618282e5f94c52758ee7b16256eb644d9ae4bb8e492286d7285c701/rapidpro_pull-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "334bafd1b1327b5f91148879ddb51155", "sha256": "61e8cda680166ec0f0066b00d927960896b79c61af2cd8ca045d1801e90dff1d" }, "downloads": -1, "filename": "rapidpro-pull-1.0.3.tar.gz", "has_sig": false, "md5_digest": "334bafd1b1327b5f91148879ddb51155", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.*", "size": 10559, "upload_time": "2017-02-02T17:46:31", "url": "https://files.pythonhosted.org/packages/3e/3f/182660bf74d3d919938c6042243d2c8754c2d565f9f76f544b0e8d8e3cf5/rapidpro-pull-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "68054e30ff1f82aca9ffb24997d2eaa6", "sha256": "04403f4f63b70ea0ace4c10bd9b61913d3dd9201f2f49dc924ca428c356a1a89" }, "downloads": -1, "filename": "rapidpro_pull-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "68054e30ff1f82aca9ffb24997d2eaa6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7,!=3.*", "size": 15179, "upload_time": "2017-02-02T17:46:29", "url": "https://files.pythonhosted.org/packages/a3/ad/2f370618282e5f94c52758ee7b16256eb644d9ae4bb8e492286d7285c701/rapidpro_pull-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "334bafd1b1327b5f91148879ddb51155", "sha256": "61e8cda680166ec0f0066b00d927960896b79c61af2cd8ca045d1801e90dff1d" }, "downloads": -1, "filename": "rapidpro-pull-1.0.3.tar.gz", "has_sig": false, "md5_digest": "334bafd1b1327b5f91148879ddb51155", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7,!=3.*", "size": 10559, "upload_time": "2017-02-02T17:46:31", "url": "https://files.pythonhosted.org/packages/3e/3f/182660bf74d3d919938c6042243d2c8754c2d565f9f76f544b0e8d8e3cf5/rapidpro-pull-1.0.3.tar.gz" } ] }