{ "info": { "author": "kitconcept GmbH | Timo Stollenwerk", "author_email": "stollenwerk@kitconcept.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.11", "Framework :: Django :: 1.5", "Framework :: Django :: 1.6", "Framework :: Django :: 1.7", "Framework :: Django :: 1.8", "Framework :: Django :: 1.9", "Framework :: Robot Framework", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython" ], "description": "==============================================================================\nA robot framework library for Django.\n==============================================================================\n\n.. image:: https://travis-ci.org/kitconcept/robotframework-djangolibrary.svg?branch=master\n :target: https://travis-ci.org/kitconcept/robotframework-djangolibrary\n\n.. image:: https://img.shields.io/pypi/status/robotframework-djangolibrary.svg\n :target: https://pypi.python.org/pypi/robotframework-djangolibrary/\n :alt: Egg Status\n\n.. image:: https://img.shields.io/pypi/v/robotframework-djangolibrary.svg\n :target: https://pypi.python.org/pypi/robotframework-djangolibrary/\n :alt: Latest Version\n\n.. image:: https://img.shields.io/pypi/l/robotframework-djangolibrary.svg\n :target: https://pypi.python.org/pypi/robotframework-djangolibrary/\n :alt: License\n\n|\n\n.. image:: https://raw.githubusercontent.com/kitconcept/robotframework-djangolibrary/master/kitconcept.png\n :alt: kitconcept\n :target: https://kitconcept.com/\n\n\nIntroduction\n------------\n\nDjangoLibrary is a web testing library to test Django with Robot Framework.\nIt uses SeleniumLibrary to run tests against a real browser instance.\n\nThe library will automatically start and stop your Django instance while running the tests.\nIt also comes with serveral autologin keywords that allow you to login different users during your tests, without the need to actually access the login page.\n\nDjangoLibrary is currently tested against Django 1.8.x, 1.9.x, 1.11.x with SQLite and Postgres on Python 2.7 and 3.6.\n\n\nDocumentation\n-------------\n\n`Robot Framework Django Library Keyword Documentation`_\n\n\nInstallation\n------------\n\nInstall robotframework-djangolibrary with pip::\n\n $ pip install robotframework-djangolibrary\n\nIn order to be able to use DjangoLibrary's `Autologin`, `FactoryBoy`, or\n`QuerySet` keywords you have to add the corresponding middleware classes to\nyour MIDDLEWARE_CLASSES in yoursettings.py::\n\n MIDDLEWARE_CLASSES = (\n ...\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'DjangoLibrary.middleware.AutologinAuthenticationMiddleware',\n 'DjangoLibrary.middleware.FactoryBoyMiddleware',\n 'DjangoLibrary.middleware.QuerySetMiddleware',\n )\n\n.. DANGER::\n Make sure that you add those middlewares only to your test setup and\n NEVER to your deployment! The Autologin middleware just checks for a\n 'autologin' cookie and then authenticates and login ANY user.\n\n\nFirst Robot Test\n----------------\n\nIn order to write your first robot test, make sure that you include SeleniumLibrary and DjangoLibrary. Create a test.robot file with the\nfollowing content::\n\n *** Variables ***\n\n ${HOSTNAME} 127.0.0.1\n ${PORT} 55001\n ${SERVER} http://${HOSTNAME}:${PORT}/\n ${BROWSER} firefox\n\n\n *** Settings ***\n\n Documentation Django Robot Tests\n Library SeleniumLibrary timeout=10 implicit_wait=0\n Library DjangoLibrary ${HOSTNAME} ${PORT} path=mysite/mysite manage=mysite/manage.py settings=mysite.settings\n Suite Setup Start Django and open Browser\n Suite Teardown Stop Django and close Browser\n\n\n *** Keywords ***\n\n Start Django and open Browser\n Start Django\n Open Browser ${SERVER} ${BROWSER}\n\n Stop Django and close browser\n Close Browser\n Stop Django\n\n\n *** Test Cases ***\n\n Scenario: As a visitor I can visit the django default page\n Go To ${SERVER}\n Wait until page contains element id=explanation\n Page Should Contain It worked!\n Page Should Contain Congratulations on your first Django-powered page.\n\n\nLicense\n-------\n\nCopyright kitconcept GmbH.\n\nDistributed under the terms of the Apache License 2.0, robotframework-djangolibrary is free and Open Source software.\n\n\nContribute\n----------\n\n- `Source code at Github `_\n- `Issue tracker at Github `_\n\n\nSupport\n-------\n\nIf you are having issues, `please let us know `_. If you require professional support feel free to contact us at `info@kitconcept.com. `_\n\n\nRun Tests\n---------\n\nThen you can run the test with robot::\n\n $ robot test.robot\n\nThe output should look like this::\n\n ==============================================================================\n Test :: Django Robot Tests\n ==============================================================================\n Scenario: As a visitor I can visit the django default page | PASS |\n ------------------------------------------------------------------------------\n Test :: Django Robot Tests | PASS |\n 1 critical test, 1 passed, 0 failed\n 1 test total, 1 passed, 0 failed\n ==============================================================================\n Output: /home/timo/workspace/prounix/robotframework-djangolibrary/output.xml\n Log: /home/timo/workspace/prounix/robotframework-djangolibrary/log.html\n Report: /home/timo/workspace/prounix/robotframework-djangolibrary/report.html\n\n\nTest Isolation\n--------------\n\nrobotframework-djangolibrary does not provide isolation between tests by\ndefault. This means if you add an object to the database in a test, this\nobject will be present in the next test as well. You need to cleanup\nyourself in order to have a proper isolation between the tests. You can use\nthe robotframework \"Test Teardown\" call to call the \"Clear DB\" keyword after\neach test::\n\n *** Settings ***\n\n Library SeleniumLibrary timeout=10 implicit_wait=0\n Library DjangoLibrary ${HOSTNAME} ${PORT} path=mysite/mysite manage=mysite/manage.py settings=mysite.settings db=mysite/db.sqlite3\n Suite Setup Start Django and open Browser\n Suite Teardown Stop Django and close Browser\n Test Teardown Clear DB\n\n\nDevelopment\n-----------\n\nCheckout repository from github::\n\n $ git clone https://github.com/kitconcept/robotframework-djangolibrary.git\n\nCreate a virtual Python environment::\n\n $ cd robotframework-djangolibrary/\n $ virtualenv .py27\n $ source .py27/bin/activate\n\nInstall robotframework-djangolibrary in development mode::\n\n $ python setup.py develop\n\nInstall the requirements::\n\n $ pip install -r requirements.txt\n\nRun Unit/Integration-Tests::\n\n $ py.test mysite/\n\nRun Acceptance Tests::\n\n $ robot DjangoLibrary/tests/\n\n.. _`Robot Framework Django Library Keyword Documentation`: https://kitconcept.github.io/robotframework-djangolibrary/\n\n\n\n3.1.0 (2018-12-24)\n------------------\n\nNew Features:\n\n- Python 3.7 support.\n [timo]\n\n\n3.0.0 (2018-11-26)\n------------------\n\nBreaking Changes:\n\n- Depend on SeleniumLibrary instead of Selenium2Library.\n The name changed from Selenium2Library to SeleniumLibrary.\n See https://github.com/robotframework/SeleniumLibrary/blob/master/docs/SeleniumLibrary-3.0.0.rst#name-changed-from-selenium2library-to-seleniumlibrary\n for details.\n [timo]\n\nNew Features:\n\n- Python 3.6 support (earlier versions most likely do support Python 3.6 as well, we just did not test it so far).\n [timo]\n\n\n2.0.2 (2018-03-03)\n------------------\n\nBugfixes / Minor Changes:\n\n- Fix Pypi markup.\n [timo]\n\n\n2.0.1 (2018-03-03)\n------------------\n\nBugfixes / Minor Changes:\n\n- Fix outdated documentation.\n [timo]\n\n\n2.0 (2017-09-20)\n----------------\n\nBreaking Changes:\n\n- Remove deprecated method from internal startup flow.\n [cdvv7788]\n\nNew Features:\n\n- Use AUTH_MODEL to create user instead of django's default\n [cdvv7788]\n\n- Upgrade FactoryBoy to version 2.8.1\n [amarandon]\n\n- Add Django 1.10.7 and 1.11.1 support.\n [timo]\n\n- LICENSE.txt added.\n [timo]\n\nBugfixes / Minor Changes:\n\n- Move tests to use Chrome.\n [timo]\n\n- Upgrade tests to Django 1.11.5, 1.10.8, 1.9.13, 1.8.18.\n [timo]\n\n- Add Django 1.11 and 1.10 to setup.py.\n [timo]\n\n\n1.2 (2016-07-08)\n----------------\n\nNew Features:\n\n- Make Factory Boy keyword return 'pk' attribute.\n [timo]\n\n\n1.1 (2016-07-07)\n----------------\n\nNew Features:\n\n- Add QuerySet keyword.\n [timo]\n\n- Make it possible to override subfactories when using the `FactoryBoy`\n keyword.\n [timo]\n\nBugfixes:\n\n- Use Django's model_to_dict method to serialize the response objects for the\n factory_boy keyword.\n [timo]\n\n\n1.0 (2016-06-30)\n----------------\n\n- Re-release 1.0a6 as 1.0.\n [timo]\n\n\n1.0a6 (2016-04-29)\n------------------\n\nNew Features:\n\n- Python 3 compatibility. Note that the latest offical release of\n robotframework-selenium2library is currently not compatible with Python 3.\n See https://github.com/HelioGuilherme66/robotframework-selenium2library/releases for a working pre-release and details.\n [timo]\n\n- Support for Postgres added. All Django database backends should work.\n We test SQLite and Postgres only though.\n [timo]\n\n- Add 'Factory Boy' keyword. This allows us to use factory_boy factories in\n Robot Framework tests.\n [timo]\n\nBreaking Changes:\n\n- Drop Django 1.7.x support. We test and support Django 1.8.x and 1.9.x.\n [timo]\n\n- Change 'Clear DB' implementation to use \"python manage.py flush\" instead of\n deleting and re-building the database.\n [timo]\n\n- Remove 'Debug' and 'Pause' keywords. The 'Debug' keyword, which is\n provided by robotframework-debuglibrary is sufficient.\n [timo]\n\n\n1.0a5 (2016-02-11)\n------------------\n\n- Make middleware part Python 3 compatible.\n\n robotframework-djangolibrary is still not compatible with Python 3 because\n robotframework-selenium2library does not work with Python 3 yet. Though, you\n can install robotframwork-djangolibrary on Python 3 with \"pip install\n robotframework-djangolibrary --no-deps\" and then run your tests with\n Python 2.7.\n [timo]\n\n- Add 'Framework :: Robot Framework' classifier to setup.py.\n [timo]\n\n\n1.0a4 (2016-02-05)\n------------------\n\n- Use 'migrate' instead of 'syncdb' for Django > 1.7.x.\n [timo]\n\n\n1.0a3 (2015-09-28)\n------------------\n\n- Add list_classifiers to setup.py.\n [timo]\n\n- Fix user creation and startup. This fixes #3.\n [MatthewWilkes]\n\n\n1.0a2 (2015-06-25)\n------------------\n\n- Remove Django and zest.releaser from requirements.txt. This fixes #2.\n [timo]\n\n\n1.0a1 (2015-06-24)\n------------------\n\n- Initial release.\n [timo]", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://kitconcept.com", "keywords": "robotframework django test", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "robotframework-djangolibrary", "package_url": "https://pypi.org/project/robotframework-djangolibrary/", "platform": "", "project_url": "https://pypi.org/project/robotframework-djangolibrary/", "project_urls": { "Homepage": "https://kitconcept.com" }, "release_url": "https://pypi.org/project/robotframework-djangolibrary/3.1.0/", "requires_dist": null, "requires_python": "", "summary": "A Robot Framework library for Django.", "version": "3.1.0" }, "last_serial": 4630715, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "ca0636e9a683de1c38ba48bc38f88875", "sha256": "cb9693cee0da49f5478fcfced04947fda998ebe8845c74cb34f1f64dd399aad5" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.0.tar.gz", "has_sig": false, "md5_digest": "ca0636e9a683de1c38ba48bc38f88875", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55829, "upload_time": "2016-06-30T13:11:26", "url": "https://files.pythonhosted.org/packages/60/5a/5861f7d42eb82d84f20e53a83e391dbf7a6814d0c48bc29046e946123869/robotframework-djangolibrary-1.0.tar.gz" } ], "1.0a1": [ { "comment_text": "", "digests": { "md5": "f2a5ea7268aecb720887ee926eb29022", "sha256": "de1e6a93924a70b3a3593268954933e01c403dcdbced4644697f95cab5e46f13" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.0a1.tar.gz", "has_sig": false, "md5_digest": "f2a5ea7268aecb720887ee926eb29022", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50988, "upload_time": "2015-06-24T10:10:07", "url": "https://files.pythonhosted.org/packages/5e/99/f5ad9da62ac987da26b2e208095c480257938752f19c0e08a1b46a97cbed/robotframework-djangolibrary-1.0a1.tar.gz" } ], "1.0a2": [ { "comment_text": "", "digests": { "md5": "883d85a97e3d73d9725dac38eaea1611", "sha256": "3d9e84d6a2c153a4dc44ec30c18e4547d7e66a5d5edfdbe3b6bc6293a9cae78b" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.0a2.tar.gz", "has_sig": false, "md5_digest": "883d85a97e3d73d9725dac38eaea1611", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51064, "upload_time": "2015-06-25T05:46:37", "url": "https://files.pythonhosted.org/packages/29/c0/26df1e4bc03850961603315687d1d8971435e18c8dcd04098911a4901e34/robotframework-djangolibrary-1.0a2.tar.gz" } ], "1.0a3": [ { "comment_text": "", "digests": { "md5": "ad566ea0c2edf2cb5399905594613434", "sha256": "02fefac646458a8fada99f3dba8f0267764606ddddd02b58b14db9d3873af8ab" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.0a3.tar.gz", "has_sig": false, "md5_digest": "ad566ea0c2edf2cb5399905594613434", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51273, "upload_time": "2015-09-28T14:37:11", "url": "https://files.pythonhosted.org/packages/4f/5b/677b8568c28ef63c46158e75fd195781a6b505dd2ff8ff7350a98d3f3256/robotframework-djangolibrary-1.0a3.tar.gz" } ], "1.0a4": [ { "comment_text": "", "digests": { "md5": "b381c389caff85feb7577d77f02985b6", "sha256": "f1f5209062b489098ff4b08840aea46e00839eb88693b89438b8aed603950d8f" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.0a4.tar.gz", "has_sig": false, "md5_digest": "b381c389caff85feb7577d77f02985b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52213, "upload_time": "2016-02-05T11:45:26", "url": "https://files.pythonhosted.org/packages/b8/06/f5d55ad31b5395bf7a8442784541579d21f8135737a411cba0aa17c25d47/robotframework-djangolibrary-1.0a4.tar.gz" } ], "1.0a5": [ { "comment_text": "", "digests": { "md5": "c2715420c57be5f90dcf5b573883ad1c", "sha256": "7e08060d98e40366dc2101dad35d362eb313f4b5853caae4cfd24e656e4eb3fb" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.0a5.tar.gz", "has_sig": false, "md5_digest": "c2715420c57be5f90dcf5b573883ad1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53165, "upload_time": "2016-02-11T19:33:55", "url": "https://files.pythonhosted.org/packages/67/d7/116bffaf6a6770fc1d0840f4d19c6bded7da1467e72b167592715d9a86ea/robotframework-djangolibrary-1.0a5.tar.gz" } ], "1.0a6": [ { "comment_text": "", "digests": { "md5": "0bc1ceb043bb58ea28234e6b37c1f6d6", "sha256": "2d1d4fbcc3abcf31ad6407aa92d94e62dc5604b782c23b6e48cee39292c4814a" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.0a6.tar.gz", "has_sig": false, "md5_digest": "0bc1ceb043bb58ea28234e6b37c1f6d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55813, "upload_time": "2016-04-29T11:35:04", "url": "https://files.pythonhosted.org/packages/05/a2/f6e45762845fe0d7554d727cc0b1bafb049b0e7062dd16b004f56a28eb13/robotframework-djangolibrary-1.0a6.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "094a46d1a4dd056dfd999e4025e6b627", "sha256": "ec2940a6ca3393f967ce24c0582411ef391f19de82d9186927c1f758f88ac816" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.1.tar.gz", "has_sig": false, "md5_digest": "094a46d1a4dd056dfd999e4025e6b627", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57769, "upload_time": "2016-07-07T13:20:15", "url": "https://files.pythonhosted.org/packages/4a/86/48ddf591630bef95fbb162116a6b2a06e7df5ae834ceed3f91a510708082/robotframework-djangolibrary-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "08d15b3d8650b80c94e15bdaea0e2c10", "sha256": "ea1fecaa33053fe17ff4e7684bb6852980c31155bc0d0c4f2ca04127b545b628" }, "downloads": -1, "filename": "robotframework-djangolibrary-1.2.tar.gz", "has_sig": false, "md5_digest": "08d15b3d8650b80c94e15bdaea0e2c10", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58200, "upload_time": "2016-07-08T14:05:04", "url": "https://files.pythonhosted.org/packages/84/26/a6cd31ccf52cfcbb86894728fdaec54809aacced307a9d220104434901f0/robotframework-djangolibrary-1.2.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "f71dbb5868ed02d791f806ba369dc9f5", "sha256": "9594220989ed1299f9f0a49d219df9a6c5381be7d1ae0eb9dda6f06f4c7aa11d" }, "downloads": -1, "filename": "robotframework-djangolibrary-2.0.tar.gz", "has_sig": false, "md5_digest": "f71dbb5868ed02d791f806ba369dc9f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66346, "upload_time": "2017-09-20T12:20:26", "url": "https://files.pythonhosted.org/packages/a8/0b/b36bf91b8077308dae5e137be3ec09edf6907410cd28b25dfdafb6ee90c4/robotframework-djangolibrary-2.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "bf5d20ca025c7112fe961d701c5a454a", "sha256": "f2680a0b9a9b513b9b6dbced97bccbd6b80a9a5307e432b6bea259984a9f1c80" }, "downloads": -1, "filename": "robotframework-djangolibrary-2.0.1.tar.gz", "has_sig": false, "md5_digest": "bf5d20ca025c7112fe961d701c5a454a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69930, "upload_time": "2018-03-03T04:28:38", "url": "https://files.pythonhosted.org/packages/75/92/bf77946c2c17106ee2479654894c034a8850645131d9f80328221c023423/robotframework-djangolibrary-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "2200f523d4f13c902466a51b9a5de599", "sha256": "38ba7db8429357a9d64c147659826ee40ddb8e4035b52279bf4b0cf2c3e36847" }, "downloads": -1, "filename": "robotframework-djangolibrary-2.0.2.tar.gz", "has_sig": false, "md5_digest": "2200f523d4f13c902466a51b9a5de599", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69894, "upload_time": "2018-03-03T04:30:16", "url": "https://files.pythonhosted.org/packages/b2/39/6896344d4ab698ff82282df1204396d04c88925700d748b0ca0d1dcc32e5/robotframework-djangolibrary-2.0.2.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "09f0f6bca8b2f90eecc811bd5cce9fa6", "sha256": "19a9065dfc267dce50c25263a34dbbcdeda4e407297ba0819da2e45833866799" }, "downloads": -1, "filename": "robotframework_djangolibrary-3.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "09f0f6bca8b2f90eecc811bd5cce9fa6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 15520, "upload_time": "2018-11-26T09:30:53", "url": "https://files.pythonhosted.org/packages/90/0d/830dbf12aad4efcd20623d02701c857cbc9ea50c12eab194a0861cd95e7f/robotframework_djangolibrary-3.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "95c0ce375111f8ae66431b6117db48bc", "sha256": "af3c829b0ce1aba5d85f0509acfc72a4a44c96ac1912df7a07f7ba7f4111e8e2" }, "downloads": -1, "filename": "robotframework-djangolibrary-3.0.0.tar.gz", "has_sig": false, "md5_digest": "95c0ce375111f8ae66431b6117db48bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70647, "upload_time": "2018-11-26T09:30:51", "url": "https://files.pythonhosted.org/packages/64/ae/6d528742bd2fbda0a75154eb542ef3a4546603a9e041afbca051bf3b261a/robotframework-djangolibrary-3.0.0.tar.gz" } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "4ce4932c81b80bf11a29f701ce483b03", "sha256": "ee2df555462e58691986103297564f31f6bef73ae1212a87506a9a63770474ce" }, "downloads": -1, "filename": "robotframework-djangolibrary-3.1.0.tar.gz", "has_sig": false, "md5_digest": "4ce4932c81b80bf11a29f701ce483b03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70720, "upload_time": "2018-12-24T06:17:19", "url": "https://files.pythonhosted.org/packages/d7/f4/09014888f58e1dfa50b3e6f4e3cea4cd2e5f2a58364493a66bef322d7364/robotframework-djangolibrary-3.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4ce4932c81b80bf11a29f701ce483b03", "sha256": "ee2df555462e58691986103297564f31f6bef73ae1212a87506a9a63770474ce" }, "downloads": -1, "filename": "robotframework-djangolibrary-3.1.0.tar.gz", "has_sig": false, "md5_digest": "4ce4932c81b80bf11a29f701ce483b03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70720, "upload_time": "2018-12-24T06:17:19", "url": "https://files.pythonhosted.org/packages/d7/f4/09014888f58e1dfa50b3e6f4e3cea4cd2e5f2a58364493a66bef322d7364/robotframework-djangolibrary-3.1.0.tar.gz" } ] }