{ "info": { "author": "Jimmy Do", "author_email": "UNKNOWN", "bugtrack_url": null, "classifiers": [], "description": "Grain\n=====\n\nOverview\n--------\n\nSimple, extensible test assertions.\n\nUsage\n-----\n\nUse `expect` to build test assertions.\n\n```python\nfrom grain import expect\nfrom yourmodule import your_func\n\nn = your_func(10)\n\n# Raises an `AssertionError` if `n` is not equal to `100`.\nexpect(n).equal(100)\n\n# Raises an `AssertionError` if `your_func(None)` does not raise a `TypeError`.\nwith expect.raises(TypeError):\n your_func(None)\n```\n\nAvailable assertion methods:\n\n- expect(a).equal(b)\n- expect(a).not_equal(b)\n- expect(a).is_(b)\n- expect(a).is_not(b)\n- expect(a).true()\n- expect(a).false()\n- expect(a).in_(b)\n- expect(a).not_in(b)\n- expect(a).less(b)\n- expect(a).less_equal(b)\n- expect(a).greater(b)\n- expect(a).greater_equal(b)\n- expect(a).almost_equal(b)\n- expect(a).not_almost_equal(b)\n- expect.raises(exception_class)\n- expect.fail()\n\nCustom Assertions\n-----------------\n\n`expect` is actually just a class. You can use `expect.extend()` to conveniently\ncreate a copy that mixes in additional methods. This lets you add custom\nassertion methods that work exactly like the built-in methods.\n\nThe following code will replace `expect` with a new copy that includes two\nadditional `even` and `odd` assertion methods.\n\n```python\nfrom grain import expect\n\nclass CustomAssertions(object):\n def even(self):\n if self.actual % 2 == 0:\n return\n self.fail('Expected {} to be even'.format(repr(self.actual)))\n\n def odd(self):\n if self.actual % 2 != 0:\n return\n self.fail('Expected {} to be odd'.format(repr(self.actual)))\n\nexpect = expect.extend(CustomAssertions)\n\nexpect(2).even()\nexpect(3).odd()\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/jimmydo/grain", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "grain", "package_url": "https://pypi.org/project/grain/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/grain/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/jimmydo/grain" }, "release_url": "https://pypi.org/project/grain/0.1.4/", "requires_dist": null, "requires_python": null, "summary": "Simple, extensible test assertions.", "version": "0.1.4" }, "last_serial": 772743, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "d961c1c2c0fcbce9f6d53d3e60c7f62f", "sha256": "8f11ae99b7ed45d8edf904219cababff9730eb9da0e444903d18402c976a61b1" }, "downloads": -1, "filename": "grain-0.1.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "d961c1c2c0fcbce9f6d53d3e60c7f62f", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 65102, "upload_time": "2013-06-17T06:01:28", "url": "https://files.pythonhosted.org/packages/6d/48/14983b875ffa89e6346e937d668d014fb2146e0e126b368b11d2e0a201db/grain-0.1.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "ae0008b3f7a69f45dce903437abe1237", "sha256": "e9c451091af582aa08a20ef9954dc7c8ca05618f9ab53224368bbcd1b3d94845" }, "downloads": -1, "filename": "grain-0.1.tar.gz", "has_sig": false, "md5_digest": "ae0008b3f7a69f45dce903437abe1237", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1644, "upload_time": "2013-06-17T06:01:22", "url": "https://files.pythonhosted.org/packages/76/1b/2e3a7b9fa25c971caa7beaa8204ac409cad74eba9c4e9684657e171b8848/grain-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2f8773c94986a082fb7fce76845f6270", "sha256": "17b609bad2f66705914bdce4bca135acd47d8a19f729af6d7207be4c5707d9ec" }, "downloads": -1, "filename": "grain-0.1.1.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "2f8773c94986a082fb7fce76845f6270", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 65114, "upload_time": "2013-06-17T06:07:19", "url": "https://files.pythonhosted.org/packages/8b/ec/992e9d277ffa32312fd1477b77eaa8fea1eaec9dff7df4ab9f130c84ec8e/grain-0.1.1.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "976e24f6a664cfb0a58be077e183a02a", "sha256": "c0f6125394502b9e2784f670895eac2487d3a64d3affe06e828c141d67506d7f" }, "downloads": -1, "filename": "grain-0.1.1.tar.gz", "has_sig": false, "md5_digest": "976e24f6a664cfb0a58be077e183a02a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1882, "upload_time": "2013-06-17T06:07:15", "url": "https://files.pythonhosted.org/packages/47/b9/0fd31771440197520fec6306e2434e517baed576fb4b1167161ae52a2a41/grain-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "1fe4e874aba7c1e5941984189bb54f2f", "sha256": "fc933af5984c8d3824daacd9648e2c5e1bc3388a78094bae5a3f1f2d50475a39" }, "downloads": -1, "filename": "grain-0.1.2.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "1fe4e874aba7c1e5941984189bb54f2f", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 65194, "upload_time": "2013-06-17T06:23:09", "url": "https://files.pythonhosted.org/packages/c4/fc/fd10de9c9361c102959b480a4d15a7554ebeea4195cd61bf00fe49fc7973/grain-0.1.2.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "ff62eaf0287fe61aa54c9decc53312a4", "sha256": "dfb100e185fbc135e107ba2d1a3f272f10ead42c60c3acd0d7843b8af520db96" }, "downloads": -1, "filename": "grain-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ff62eaf0287fe61aa54c9decc53312a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1880, "upload_time": "2013-06-17T06:23:05", "url": "https://files.pythonhosted.org/packages/30/b8/00a22e123e8292cfad00c4a4bfcdcff8b3ebed38a4e35f0064fd572ff0cb/grain-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "a4942eb077aca237fa6e03203dedc546", "sha256": "34029ce6dd928b2c0c891f0c4ae1da1fca91f45300a725ec1f6a77687012203b" }, "downloads": -1, "filename": "grain-0.1.3.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "a4942eb077aca237fa6e03203dedc546", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 65191, "upload_time": "2013-06-17T06:31:00", "url": "https://files.pythonhosted.org/packages/a2/79/ca09bbf724f751e93a3de00941f22b73b5c20bed39e1acd6a939799d7664/grain-0.1.3.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "fd3edba2ddc0e3b4721cefb0585e1a7a", "sha256": "96c3dc935c5cf89e278f4eabee27b42dc694b5a724bde5bd19b44aad913b84f1" }, "downloads": -1, "filename": "grain-0.1.3.tar.gz", "has_sig": false, "md5_digest": "fd3edba2ddc0e3b4721cefb0585e1a7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1879, "upload_time": "2013-06-17T06:30:56", "url": "https://files.pythonhosted.org/packages/82/0e/c22becca03a014c17025f26511d4151046060de78c3c7a36e18ab681b762/grain-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "45678faa17abb195e663c18f308ff736", "sha256": "03025de951b93e87b571b286e38f533902c89745bc5cc0e6c704c21e60e4172b" }, "downloads": -1, "filename": "grain-0.1.4.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "45678faa17abb195e663c18f308ff736", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 65295, "upload_time": "2013-06-17T06:43:00", "url": "https://files.pythonhosted.org/packages/c1/d0/b869b00bf5c0b1e3ee0e9ac5b174427b583f65ccac6290e71e73d3de4215/grain-0.1.4.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "2eb84523c59d0e8c93409302642e5f88", "sha256": "df950c4229a16f3f300b8439fdec4beb1c6dcaf2b53280186b120d01ef291866" }, "downloads": -1, "filename": "grain-0.1.4.tar.gz", "has_sig": false, "md5_digest": "2eb84523c59d0e8c93409302642e5f88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1910, "upload_time": "2013-06-17T06:42:56", "url": "https://files.pythonhosted.org/packages/ef/af/48baa058f2b9754e0f41f06dde0ea61c8f3bdfc9ff2e1b728bdf32d51dc9/grain-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "45678faa17abb195e663c18f308ff736", "sha256": "03025de951b93e87b571b286e38f533902c89745bc5cc0e6c704c21e60e4172b" }, "downloads": -1, "filename": "grain-0.1.4.macosx-10.8-x86_64.exe", "has_sig": false, "md5_digest": "45678faa17abb195e663c18f308ff736", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 65295, "upload_time": "2013-06-17T06:43:00", "url": "https://files.pythonhosted.org/packages/c1/d0/b869b00bf5c0b1e3ee0e9ac5b174427b583f65ccac6290e71e73d3de4215/grain-0.1.4.macosx-10.8-x86_64.exe" }, { "comment_text": "", "digests": { "md5": "2eb84523c59d0e8c93409302642e5f88", "sha256": "df950c4229a16f3f300b8439fdec4beb1c6dcaf2b53280186b120d01ef291866" }, "downloads": -1, "filename": "grain-0.1.4.tar.gz", "has_sig": false, "md5_digest": "2eb84523c59d0e8c93409302642e5f88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1910, "upload_time": "2013-06-17T06:42:56", "url": "https://files.pythonhosted.org/packages/ef/af/48baa058f2b9754e0f41f06dde0ea61c8f3bdfc9ff2e1b728bdf32d51dc9/grain-0.1.4.tar.gz" } ] }