{ "info": { "author": "Bradley Ayers", "author_email": "bradley.ayers@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "=============\ndjango-attest\n=============\n\n.. figure:: https://travis-ci.org/bradleyayers/django-tables2.png\n\nAn alternative testing framework for Django, based on Attest.\n\nAttempts to provide a more Pythonic testing API than ``unittest``. Useful\ntesting features in recent version of Django have been included for use with\nolder version.\n\n\nInstallation\n============\n\nRequires:\n\n- Django \u22651.2.\n- Attest >= 0.6 (use master)\n\nUse pip::\n\n pip install django-attest\n\nOn Django \u22651.3, a custom test runner can be used::\n\n TEST_RUNNER = \"django_attest.Runner\"\n\nUsage\n=====\n\nCreate some tests, then run them (replace ``tests.settings`` with your own)::\n\n DJANGO_SETTINGS_MODULE=tests.settings attest -r django\n\nCreate a test collection and optionally include one of ``django-attest``'s test\ncontexts. The result is that a ``client`` argument is passed to each test\nwithin the collection. ``client`` is a ``django.test.TestClient`` object and\nallows you to make HTTP requests to your project.\n\n::\n\n from attest import Tests\n from django_attest import TestContext\n\n tests = Tests()\n tests.context(TestContext())\n\n @tests.test\n def can_add(client):\n client.get('/some-url/') # same as self.client.get() if you were using\n # django.test.TestCase\n\nSee the `TestCase.client documentation`__ for more details.\n\n.. __: http://docs.djangoproject.com/en/1.3/topics/testing/#django.test.TestCase.client\n\nWhen using a ``django.test.TestCase`` subclass, you're able to specify various\noptions that affect the environment in which your tests are executed.\n``django-attest`` provides the same functionality via keyword arguments to the\n``TestContext``. The following keyword arguments are supported:\n\n- ``fixtures`` -- http://docs.djangoproject.com/en/1.3/topics/testing/#django.test.TestCase.fixtures\n- ``urls`` -- http://docs.djangoproject.com/en/1.3/topics/testing/#django.test.TestCase.urls\n- ``client_class`` -- http://docs.djangoproject.com/en/1.3/topics/testing/#django.test.TestCase.client_class\n- ``multi_db`` -- http://docs.djangoproject.com/en/1.3/topics/testing/#django.test.TestCase.multi_db\n\nFor example if you want to specify fixtures, urls, a client_class,\nor multi_db, simply pass\nin these options when creating the ``django_tables.TestContext`` object::\n\n from attest import Tests\n from django_attest import TestContext\n\n tests = Tests()\n tests.context(TestContext(fixtures=['testdata.json'], urls='myapp.urls'))\n\n\nTransaction management in tests\n-------------------------------\n\nIf you need to test transaction management within your tests, use\n``TransactionTestContext`` rather than ``TestContext``, e.g.::\n\n from attest import Tests\n from django_attest import TransactionTestContext\n\n tests = Tests()\n tests.context(TransactionTestContext())\n\n @tests.test\n def some_test(client):\n # test something\n ...\n\n\nTesting a reusable Django app\n-----------------------------\n\nA flexible approach is to create a ``tests`` Django project. This shouldn't be\nthe fully-fledged output of ``django-admin.py startproject``, but instead the\nminimum required to keep Django happy.\n\n\ntests/__init__.py\n^^^^^^^^^^^^^^^^^\n\n::\n\n from attest import Tests\n\n\n suite = Tests()\n\n\n @suite.test\n def example():\n assert len(\"abc\") == 3\n\nDjango's built-in test runner performs various environment initialisation and\ncleanup tasks. It's important that tests are run using one of the loaders from\ndjango-attest.\n\n\ntests/settings.py\n^^^^^^^^^^^^^^^^^\n\n::\n\n DATABASES = {\n 'default': {\n 'ENGINE': 'django.db.backends.sqlite3',\n 'NAME': ':memory:',\n }\n }\n\n INSTALLED_APPS = [\n 'django.contrib.sessions',\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'my_reusable_app',\n ]\n\n SECRET_KEY = 'abcdefghiljklmnopqrstuvwxyz'\n\n ROOT_URLCONF = 'tests.urls'\n\n\ntests/urls.py\n^^^^^^^^^^^^^\n\n::\n\n from django.conf.urls import patterns\n urlpatterns = patterns('')\n\n\nTesting non-reusable apps in a Django project\n---------------------------------------------\n\nTo test non-reusable apps in a Django project, the app must contain either a\n``tests`` or ``models`` module with either a ``suite`` function that returns a\n``unittest.TestCase``, or simply contains ``TestCase`` classes. (see `Django's\ndocumentation `_\nfor details).\n\nAs of Attest 0.6 you should use test cases::\n\n # myapp/tests.py\n from attest import Tests\n\n template = Tests()\n\n @template.test\n def filter():\n # ...\n\n template = template.test_case()\n\nThis allows Django to find your tests, and allows you to run individual tests,\ne.g.::\n\n python manage.py test myapp.template.test_filter\n\n.. note::\n\n When a ``unittest.TestCase`` is created from a test collection, the\n function names are prefixed with ``test_``.\n\nPrior to Attest 0.6, you must use the test suite option, which unfortunately\ndoesn't support running individual tests::\n\n from attest import Tests\n\n template = Tests()\n\n @template.test\n def filter():\n # ...\n\n suite = template.test_suite\n\n\nassert hook\n-----------\n\nSince Django uses ``manage.py`` as its entry point, django-attest enables the\nassert hook automatically when it's first imported.\n\nThis means that you need to do the following:\n\n1. Make sure ``django_attest`` is imported as soon as possible.\n2. Add ``from attest import assert_hook`` to the top of each test module.\n\n\nDjango assertions\n-----------------\n\nFor details on each of these, see ``django_attest/assertion.py``.\n\nredirects\n^^^^^^^^^\n\nAssert that a response redirects to some resource::\n\n from django_attest import redirects\n\n response = client.get('/')\n redirects(response, url=\"http://example.com:8000/foo/?key=value#frag\")\n redirects(response, scheme=\"http\")\n redirects(response, domain=\"example.com\")\n redirects(response, port=\"8000\")\n redirects(response, path=\"/foo/\")\n redirects(response, query=\"key=value\")\n redirects(response, fragment=\"frag\")\n\nEach component can only be asserted if it exists explicitly in the URL, e.g.\n\n with attest.raises(AssertionError):\n redirects(client.get('/'), port=80) # port is rarely explicit\n\n\nqueries\n^^^^^^^\n\nAssert an expected set of queries took place::\n\n from django_attest import queries\n\n with queries() as qs:\n User.objects.count()\n assert len(qs) == 5\n\n # The same could be rewritten as\n with queries(count=5):\n User.objects.count()\n\n\nContext managers\n----------------\n\ndjango-attest has some context managers to simplify common tasks:\n\n\nsettings(**settings)\n^^^^^^^^^^^^^^^^^^^^\n\nChange global settings within a block, same functionality as Django 1.4's\n``TestCase.settings``::\n\n from django_attest import settings\n\n with settings(MEDIA_ROOT=\"/tmp\"):\n # ...\n\nCode that's sensitive to settings changes should use the\n``django_attest.signals.setting_changed`` signal to overcome any assumptions of\nsettings remaining constant.\n\n.. note::\n\n On Django >=1.4, ``django_attest.signals.setting_changed`` is an alias of\n ``django.test.signals.setting_changed``.\n\n\ntranslation(language_code, deactivate=False)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nActivate a specific translation/language. The semantics are the same as Django\n1.4's ``django.utils.translation.override``::\n\n from django_attest import translation\n from django.utils.translation import ugettext\n\n with translation('de'):\n assert ugettext('the apple') == 'der Apfel'\n\n\nurlconf(patterns)\n^^^^^^^^^^^^^^^^^\n\nTakes a list of URL patterns and promotes them up as the root URLconf. This\navoids the need to have a dedicated *test project* and ``urls.py`` for simple\ncases::\n\n @suite.test\n def foo(client):\n def view(request):\n return HttpResponse('success')\n\n urls = patterns('', (r'view/', view))\n with urlconf(urls):\n assert client.get(reverse(view)).content == 'success'\n\nIf you want to provide a dotted path to a ``urls.py``, use\n``settings(ROOT_URLCONF=...)`` instead, it takes care to clear URL resolver\ncaches.\n\n\nBackports\n---------\n\n- ``django_attest.RequestFactory`` (from Django 1.4)\n- ``django_attest.settings`` (``override_settings`` inspired from Django 1.4)\n- ``django_attest.translation`` (``django.utils.translation.override`` port from Django 1.4)\n\n\nChangelog\n=========\n\nv0.10.0\n-------\n\n- Add ``translation`` context manager\n- Add Travis CI testing\n\nv0.9.1\n------\n\n- Fix requirements for Attest\n\nv0.9.0\n------\n\n- Setting up the Django environment is no longer part of the distuils loader,\n rather it's builtin to the django-attest reporters.\n- Declare reporter entry points (named ``django-...``)\n\nv0.8.1\n------\n\n- Make test runner compatible with Python 2.6\n- Add support for Python 3.2\n\nv0.8.0\n------\n\n- Add test runner to show proper Attest formatting of assertion errors\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bradleyayers/django-attest/", "keywords": null, "license": "Simplified BSD", "maintainer": null, "maintainer_email": null, "name": "django-attest", "package_url": "https://pypi.org/project/django-attest/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-attest/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/bradleyayers/django-attest/" }, "release_url": "https://pypi.org/project/django-attest/0.10.0/", "requires_dist": null, "requires_python": null, "summary": "Provides Django specific testing helpers to Attest", "version": "0.10.0" }, "last_serial": 789124, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "016c7e764eccf12e547e867f8b418e3e", "sha256": "0abd440a5543032ed156276a807db613a3398069d7a9eca37e8bf5d975824471" }, "downloads": -1, "filename": "django-attest-0.1.0.tar.gz", "has_sig": false, "md5_digest": "016c7e764eccf12e547e867f8b418e3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2088, "upload_time": "2011-05-19T07:27:45", "url": "https://files.pythonhosted.org/packages/68/9c/ac5d689ec0fbf559e8ddd424cc03b643f573797ed585e6dae247d1786b59/django-attest-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5ffac6320cce240a018a19d157175c63", "sha256": "c855ee79dfe43b0934aa62b5d06e5ca9ae150be7404d5b7e184b218c91f26e37" }, "downloads": -1, "filename": "django-attest-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5ffac6320cce240a018a19d157175c63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2112, "upload_time": "2011-10-13T03:56:07", "url": "https://files.pythonhosted.org/packages/d0/e1/5de1e63d6ac13cd4c9ae5c02fe410c22451df827eaaf4d502811e57b3087/django-attest-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "055563c7a9005ff26076bd2ee58bed45", "sha256": "5d04b068f2c88c3bd089fa00b61d9080cebcd43db458d24e62f013f416d6297b" }, "downloads": -1, "filename": "django-attest-0.1.2.tar.gz", "has_sig": false, "md5_digest": "055563c7a9005ff26076bd2ee58bed45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2355, "upload_time": "2011-11-16T04:10:17", "url": "https://files.pythonhosted.org/packages/ca/5f/fe5c3cfc62981bcf129dba8f9513a0c8ff1022fdaffabcc1ae8d73057736/django-attest-0.1.2.tar.gz" } ], "0.1.alpha2": [], "0.10.0": [ { "comment_text": "", "digests": { "md5": "84da97bf288e0decc659eefa12726197", "sha256": "6052f7ebb5ea2cdc9ddfffa422f38ae4c45fc983f30a5066db052401fcf7936c" }, "downloads": -1, "filename": "django-attest-0.10.0.tar.gz", "has_sig": false, "md5_digest": "84da97bf288e0decc659eefa12726197", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10723, "upload_time": "2013-01-10T01:09:00", "url": "https://files.pythonhosted.org/packages/10/e7/410a89380c38d26ae7bb65ac4c375caf4da1347343c379e3a6b66b0641c0/django-attest-0.10.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "bda35f169ab9f5a2103a736aa2bcc625", "sha256": "9eec43bbc5b43f0972834063c9d9076d076aafc9fc1743e00b9756527d8bc540" }, "downloads": -1, "filename": "django-attest-0.2.1.tar.gz", "has_sig": false, "md5_digest": "bda35f169ab9f5a2103a736aa2bcc625", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5655, "upload_time": "2011-11-17T06:34:02", "url": "https://files.pythonhosted.org/packages/5f/df/54a40d9ae75c404be674260208bb7982cedacb0e7b7ff0ed51efdc08249f/django-attest-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "6e6ba1a758e2184d06290ecab5e64aa0", "sha256": "792bdc74a42a4d3989837f6f67de9507bfe3b432e297c58b4a082c7117f28b02" }, "downloads": -1, "filename": "django-attest-0.2.2.tar.gz", "has_sig": false, "md5_digest": "6e6ba1a758e2184d06290ecab5e64aa0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5322, "upload_time": "2011-11-17T08:19:35", "url": "https://files.pythonhosted.org/packages/53/5a/bbf5c74d7400e5cb960f8a31487556e8063413221cd682da2d59495e52d6/django-attest-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "4f6828e85d3a51da5cb6508ad554e75e", "sha256": "87a5b41a4583ea9b00c7b5a029b5371ec53d0209fb5c0f14e5781df49d927c2e" }, "downloads": -1, "filename": "django-attest-0.2.3.tar.gz", "has_sig": false, "md5_digest": "4f6828e85d3a51da5cb6508ad554e75e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2418, "upload_time": "2012-03-15T20:58:41", "url": "https://files.pythonhosted.org/packages/66/bb/6e0349e4dab8da00c6ddabec77f6c52d73866085d2dbbf918fc0d2b43d28/django-attest-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "05b00ad5e0d1a4a84066e0715c11da47", "sha256": "f43ea2db099105cc3998f3cc085ea4d3700e04991ac5724e0d041288ca2fd7d8" }, "downloads": -1, "filename": "django-attest-0.2.4.tar.gz", "has_sig": false, "md5_digest": "05b00ad5e0d1a4a84066e0715c11da47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2422, "upload_time": "2012-03-26T22:41:55", "url": "https://files.pythonhosted.org/packages/77/86/34940b39a3b366fdacdd1a3479214dc7fd8ec24120bc9fd942b659ada022/django-attest-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "b775271dc262f3d4726c5269c4bdb3c3", "sha256": "8eeee9b09c09df62efa118b3a405e7637a2a2cbb0c61e23dfbe0116fdeb33082" }, "downloads": -1, "filename": "django-attest-0.2.5.tar.gz", "has_sig": false, "md5_digest": "b775271dc262f3d4726c5269c4bdb3c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2531, "upload_time": "2012-05-08T02:48:34", "url": "https://files.pythonhosted.org/packages/e1/0e/4e5e8524bf9812a2043859bae8907027e9eba5b8eb19dd0a8ba92dbf10ab/django-attest-0.2.5.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4963e74ecfd975e6c9c9bedc7a0f1a47", "sha256": "6a1b2746d0ffd5531646020a85d2c25bd2c1972c5788efa1fd637052d40f9bd3" }, "downloads": -1, "filename": "django-attest-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4963e74ecfd975e6c9c9bedc7a0f1a47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2787, "upload_time": "2012-05-10T03:39:42", "url": "https://files.pythonhosted.org/packages/0f/e4/cae8f1dd12566a71f270031981a588e930dee92036878490d053aa03e5b9/django-attest-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "9608edded5e727ba8b36c7c36d47eb45", "sha256": "09b0f8592a51b958c4e09da6c8f4184034e3524dd4b6ea412f100fca930bedb3" }, "downloads": -1, "filename": "django-attest-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9608edded5e727ba8b36c7c36d47eb45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2794, "upload_time": "2012-05-10T04:32:58", "url": "https://files.pythonhosted.org/packages/e5/a7/f3492df3299cc7f110e132bc6ac528a344b355924486be5535b08ab46b7a/django-attest-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "de98a839c02d1da581a950d1fa11cafb", "sha256": "599ddf8bd8e63c408e31a07af841563acca4e7e464138051471ca150ac107178" }, "downloads": -1, "filename": "django-attest-0.4.0.tar.gz", "has_sig": false, "md5_digest": "de98a839c02d1da581a950d1fa11cafb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2863, "upload_time": "2012-06-04T01:43:30", "url": "https://files.pythonhosted.org/packages/5c/06/c780d2bcc6d846a66901a4f495e277a1aa0c52897b19e3623fa7197542e2/django-attest-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "9af6b2f0218276a1f0678668b891dbd5", "sha256": "c3b4b3972030817dc40b5ed2170e949b925348aed9aca646015243c25e219648" }, "downloads": -1, "filename": "django-attest-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9af6b2f0218276a1f0678668b891dbd5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6161, "upload_time": "2012-09-09T21:59:34", "url": "https://files.pythonhosted.org/packages/87/ee/26fdbd5f945a8fdfe672ade9f75a02ea1d9d8aec844846e17c4e1d7b7125/django-attest-0.5.0.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "3ef15a5209d3959e6e58a4ecdeab7fa8", "sha256": "f232d1571404e2bb82e92756897695f51a32364d137d5ca39440462f331d154f" }, "downloads": -1, "filename": "django-attest-0.5.2.tar.gz", "has_sig": false, "md5_digest": "3ef15a5209d3959e6e58a4ecdeab7fa8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6802, "upload_time": "2012-09-17T01:02:41", "url": "https://files.pythonhosted.org/packages/c9/65/3154fef9c257f061ad4048ad9082c0fe4205e2e9be02bda0685b7168f709/django-attest-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "431c91edd3cbf14fe5bd2109c7ce5c1e", "sha256": "4487da864cfcc956ddb46ab84a70af47a452c35eeb42480d7c6debe5a9359db8" }, "downloads": -1, "filename": "django-attest-0.5.3.tar.gz", "has_sig": false, "md5_digest": "431c91edd3cbf14fe5bd2109c7ce5c1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6802, "upload_time": "2012-09-17T01:24:20", "url": "https://files.pythonhosted.org/packages/54/61/41176509aa5a4db0dec0ee2f146c496bf1d9ee28f8276bcfa12061ad94e3/django-attest-0.5.3.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "2087c921a8fb7d762e02026f514a1c49", "sha256": "c63b54cdc3cf3e5a7c7ac060104232244fbaa55270282f9176f70d4e35ae497f" }, "downloads": -1, "filename": "django-attest-0.6.0.tar.gz", "has_sig": false, "md5_digest": "2087c921a8fb7d762e02026f514a1c49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7280, "upload_time": "2012-09-17T08:30:30", "url": "https://files.pythonhosted.org/packages/19/24/1e4f9d5a9bbdaa3f781b082e926a0545800edbb74f550e8edc0d56e54dc0/django-attest-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "92fc636b847bb7c93d12a288ccd1473e", "sha256": "34523a429aef50949459d5b08cecdeebd97b229cc196e00e9617b655658288bc" }, "downloads": -1, "filename": "django-attest-0.7.0.tar.gz", "has_sig": false, "md5_digest": "92fc636b847bb7c93d12a288ccd1473e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9120, "upload_time": "2012-09-21T11:01:06", "url": "https://files.pythonhosted.org/packages/ef/da/f867702fdc8e9977650cdcd1535da1bd61d3e1eda42871ac94b16c598807/django-attest-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "c012b7df36738dcdf5855cd6bd5bc146", "sha256": "251372e3a83af2780d9482b450fc04d30a2fd3cbc5ab059ecda4b1b675ddf979" }, "downloads": -1, "filename": "django-attest-0.7.1.tar.gz", "has_sig": false, "md5_digest": "c012b7df36738dcdf5855cd6bd5bc146", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9122, "upload_time": "2012-09-21T11:12:46", "url": "https://files.pythonhosted.org/packages/dc/3a/2add54ecff13362eaf119671b195d54911df0ad01873446c643fb800c926/django-attest-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "7f1ea2f2a63ce6851fd85f179ac076f7", "sha256": "3d81ebadb7423d9335cc49490a5c3830309da6d9dd148c8468e75515ae410e73" }, "downloads": -1, "filename": "django-attest-0.8.0.tar.gz", "has_sig": false, "md5_digest": "7f1ea2f2a63ce6851fd85f179ac076f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9717, "upload_time": "2012-10-02T22:25:34", "url": "https://files.pythonhosted.org/packages/2d/f9/f313602d541c99804275e1b051458aa16ff4b9f5f0614031e4475c61301b/django-attest-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "fb5b407e8ad0dec4450c0b0d29a9d1f2", "sha256": "329320b9937b69e8d59aece9eb012f5b8510de25156d25331470ca49ae97ad2f" }, "downloads": -1, "filename": "django-attest-0.8.1.tar.gz", "has_sig": false, "md5_digest": "fb5b407e8ad0dec4450c0b0d29a9d1f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9752, "upload_time": "2012-10-12T00:19:37", "url": "https://files.pythonhosted.org/packages/a9/c7/4496834c7fb7ee1a4742a84856e4ff5a3e74bd34cd751caf3e58ea8c6c47/django-attest-0.8.1.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "c39664038dddea3db9489f9f826b48d4", "sha256": "1bf6952e7027ab27811b1e1d2dd63d7bb6249aa18baf12871c99825de40d5fa4" }, "downloads": -1, "filename": "django-attest-0.9.0.tar.gz", "has_sig": false, "md5_digest": "c39664038dddea3db9489f9f826b48d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10050, "upload_time": "2012-10-17T02:41:50", "url": "https://files.pythonhosted.org/packages/70/8e/535e01078b0687b626e1fac8ae104660ccfb573452de3ee5612f751f7dac/django-attest-0.9.0.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "686ebbd9fa9ba3cf24d69f59f8dd5b02", "sha256": "7db473dc8e0ce4ca847c08d05e3f85134cabde5eba35f086c67140c4cf79d90e" }, "downloads": -1, "filename": "django-attest-0.9.1.tar.gz", "has_sig": false, "md5_digest": "686ebbd9fa9ba3cf24d69f59f8dd5b02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10063, "upload_time": "2012-10-18T01:27:28", "url": "https://files.pythonhosted.org/packages/fc/43/40bb40516e9e2fcdf11e6e3a6f393734efb8f917eb2854ecb1e181ad7bd1/django-attest-0.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "84da97bf288e0decc659eefa12726197", "sha256": "6052f7ebb5ea2cdc9ddfffa422f38ae4c45fc983f30a5066db052401fcf7936c" }, "downloads": -1, "filename": "django-attest-0.10.0.tar.gz", "has_sig": false, "md5_digest": "84da97bf288e0decc659eefa12726197", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10723, "upload_time": "2013-01-10T01:09:00", "url": "https://files.pythonhosted.org/packages/10/e7/410a89380c38d26ae7bb65ac4c375caf4da1347343c379e3a6b66b0641c0/django-attest-0.10.0.tar.gz" } ] }