{ "info": { "author": "Daniel Langer", "author_email": "daniel@langer.me", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Topic :: Software Development :: Testing" ], "description": "nose-parallel\n=============\n\nA plugin to help split up your tests runs across multiple machines.\n\nIn an ideal world, test suites should be fast enough that they can\nbe run locally on a single machine without extra engineering. This\nplugin is there to help when you can't make that to happen.\n\nThis **won't** help you run tests in parallel on one machine in different\nthreads; that's what the built-in `multiprocess\n`_ plugin\nis for.\n\nThis **will** help you split up your test suites so that you can run the\nsuites on multiple machines and not have the same test run twice - think\nJenkins with the\n`multijob `_\nplugin, or CI services like `CircleCI `_.\n\n\nInstall\n-------\n\n.. code:: bash\n\n pip install nose-parallel\n\n\nUsage\n-----\n\nOn each machine:\n\n#. Export environment variables ``NODE_TOTAL`` (the number of machines on which the suite will be run) and and ``NODE_INDEX`` (the 0-based index of the current machine)\n#. Run nosetests with the ``--with-parallel`` flag\n#. Do something to join the results from all the machines back together\n\nFor example, this is how we'd run nosetests on the second machine in a\nfour-machine testing cluster:\n\n.. code:: bash\n\n NODE_TOTAL=4 NODE_INDEX=1 nosetests --with-parallel\n\n\nIf you don't set those variables, ``nose-parallel`` will do the right thing and run all your tests.\nThe CircleCI and Buildkite versions of the environment variables (``CIRCLE_NODE_TOTAL`` and ``CIRCLE_NODE_INDEX``, \nor ``BUILDKITE_PARALLEL_JOB_COUNT`` and ``BUILDKITE_PARALLEL_JOB`` respectively) are also natively supported.\n\nIf you want to further randomize the distribution of tests, so\nthat the same test cases don't always run together on the same node, you may\nuse the ``--parallel-salt`` option or ``NOSE_PARALLEL_SALT`` environment variable \nto specify a salt value for the randomization (e.g. a build number, the day of the month). \nThe salt must be the same on each node during a parallel build, otherwise some test cases might be missed. \n\nFor example, on CircleCI you could do:\n\n.. code:: bash\n\n nosetests --with-parallel --parallel-salt-env CIRCLE_BUILD_NUM\n\n\nLicense\n-------\n\n``nose-parallel`` is released under the MIT license.\n\n\nContribute\n----------\n\n- Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug.\n- Fork the repository on GitHub to start making your changes to the master branch (or branch off of it).\n- Send a pull request and bug the maintainer until it gets merged and published.\n- Add yourself to the authors list in ``setup.py``\n\n\nThanks To\n---------\n\n- `@mahmoudimus `_, whose `nose-timer `_ plugin this is based off of\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dlanger/nose-parallel", "keywords": "", "license": "LICENSE", "maintainer": "", "maintainer_email": "", "name": "nose-parallel", "package_url": "https://pypi.org/project/nose-parallel/", "platform": "", "project_url": "https://pypi.org/project/nose-parallel/", "project_urls": { "Homepage": "https://github.com/dlanger/nose-parallel" }, "release_url": "https://pypi.org/project/nose-parallel/0.3.1/", "requires_dist": null, "requires_python": "", "summary": "A nosetests plugin to split test suites to run in parallel", "version": "0.3.1" }, "last_serial": 4428735, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "589e799fd15a79bf1c3f5d1411ff41f6", "sha256": "1321c95d01cc1465880403e94eadcce612c3110c8dfa755292d9c64e3ae8f987" }, "downloads": -1, "filename": "nose_parallel-0.1.1-py27-none-any.whl", "has_sig": false, "md5_digest": "589e799fd15a79bf1c3f5d1411ff41f6", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5355, "upload_time": "2013-12-05T21:29:59", "url": "https://files.pythonhosted.org/packages/34/48/60b99a4f55ce76b310c8504af39bb3fc783e03c2abbc628aa7afa649cf3a/nose_parallel-0.1.1-py27-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8cbc95a1d73d30d1764e8e6a5f4889f0", "sha256": "dc224b26b7a9fbf948e76585e4fe88a2ab3adef7d37c94fc8763f992047a4173" }, "downloads": -1, "filename": "nose-parallel-0.1.1.tar.gz", "has_sig": false, "md5_digest": "8cbc95a1d73d30d1764e8e6a5f4889f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3283, "upload_time": "2013-12-05T21:37:56", "url": "https://files.pythonhosted.org/packages/9d/1d/7657edb29fe1bec9c4ce8a9878a072d1081d2dad6ecb0f3c3b8d9a1fa7e4/nose-parallel-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "348c714f8f55836835119d1180261c4b", "sha256": "f97a362fda08dfbc3ab956383e2dd7553056d152fbefe3f886e352df265ea51a" }, "downloads": -1, "filename": "nose_parallel-0.1.2-py27-none-any.whl", "has_sig": false, "md5_digest": "348c714f8f55836835119d1180261c4b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5356, "upload_time": "2013-12-05T21:39:02", "url": "https://files.pythonhosted.org/packages/42/6d/8f7559c5b408dc82f1d22d3ef3f501ebaf062b378b0174fc40c745976e46/nose_parallel-0.1.2-py27-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfbfbb9e50e0c84a0efb7bef9dedaf8b", "sha256": "3098bd19b104b241b841b068dd61efa6990f1b76714bdb7496624f571a62f6b3" }, "downloads": -1, "filename": "nose-parallel-0.1.2.tar.gz", "has_sig": false, "md5_digest": "cfbfbb9e50e0c84a0efb7bef9dedaf8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3289, "upload_time": "2013-12-05T21:39:10", "url": "https://files.pythonhosted.org/packages/47/fe/7aa112045c906254dfdb5446d0e1a2ad37848666b5ecf1f87f83d82c2cc8/nose-parallel-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e3fe271fdd84d3e60acc3c42518e73a6", "sha256": "74f3af79b343d98da9fce5ec73cde57981dd0f21319786a62e2e6d54caa6d538" }, "downloads": -1, "filename": "nose-parallel-0.1.3.tar.gz", "has_sig": false, "md5_digest": "e3fe271fdd84d3e60acc3c42518e73a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3306, "upload_time": "2013-12-05T21:42:24", "url": "https://files.pythonhosted.org/packages/36/20/13ca37a6e1d734b773b697bce89b266749c60b3394ce9da0b7058120c9e2/nose-parallel-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "bae676f8bba33b3e1183f23d363eb83b", "sha256": "51a20d72a919894e27a015d6256e61f2fb427c436643b0001592fbc7c04e1279" }, "downloads": -1, "filename": "nose_parallel-0.1.4-py27-none-any.whl", "has_sig": false, "md5_digest": "bae676f8bba33b3e1183f23d363eb83b", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 5381, "upload_time": "2013-12-05T21:45:23", "url": "https://files.pythonhosted.org/packages/41/d4/5d324536a4c5ff4903f8b08b9a67de31b46132d7a7428e2b0553d1765395/nose_parallel-0.1.4-py27-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f785c60fcc58954fd8c12f7f11f02666", "sha256": "82f8a14ccd96bc412675f19b59f0de1348830e9b4afa8937633e56691d3fe9f3" }, "downloads": -1, "filename": "nose-parallel-0.1.4.tar.gz", "has_sig": false, "md5_digest": "f785c60fcc58954fd8c12f7f11f02666", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3307, "upload_time": "2013-12-05T21:44:39", "url": "https://files.pythonhosted.org/packages/fc/dd/41c51078370d5903552247f3cecf73e89c3a65a1f023db7dbf15c5371382/nose-parallel-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "74d8bb91ae3ac22ac8e37d9a9490e770", "sha256": "6d8cd3502991fe0d3bbf498cc4e26cfbf15f158fdcb3114f4cab4caec0ea7f76" }, "downloads": -1, "filename": "nose_parallel-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "74d8bb91ae3ac22ac8e37d9a9490e770", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6424, "upload_time": "2016-05-02T01:06:37", "url": "https://files.pythonhosted.org/packages/87/e6/7bc045aa002a84e6a13350546875d3599b5389acb8728f1d57dc9b9bf3d0/nose_parallel-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d148489557c4bfcf093080cef14cc23f", "sha256": "583763e15deac4845ee17125c499250a988e7be62459b192c5543e06d1d81f31" }, "downloads": -1, "filename": "nose-parallel-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d148489557c4bfcf093080cef14cc23f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3848, "upload_time": "2016-05-02T01:06:16", "url": "https://files.pythonhosted.org/packages/84/30/20d56c36ed1aedb191dbaa977d078396fba92631754b65beea43d69bc158/nose-parallel-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "9bd76ab987b7da576d22dfbb625a4612", "sha256": "7767f13ac96492926814fc66aeb55f0342e5672349f4d2cadc674cd8abe04f59" }, "downloads": -1, "filename": "nose_parallel-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "9bd76ab987b7da576d22dfbb625a4612", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 6257, "upload_time": "2017-03-12T20:57:20", "url": "https://files.pythonhosted.org/packages/92/a1/1d3f4cad16a806f57b9004faa7b5eb3ce4ec8c1ec16cf8398c86d5ed66e5/nose_parallel-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e6c4078ecabd14f6c38a29c57e85e7a0", "sha256": "c425cf75e8246edb17636c331a7ac5d72b374cdf6eaa556a10e34a653f212df9" }, "downloads": -1, "filename": "nose-parallel-0.2.1.tar.gz", "has_sig": false, "md5_digest": "e6c4078ecabd14f6c38a29c57e85e7a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3819, "upload_time": "2017-03-12T20:57:19", "url": "https://files.pythonhosted.org/packages/2a/44/8990d49027b8a367a9a2a49d1730d17e29d6d53c30e19da635790973a893/nose-parallel-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a778ae425097371412a3ec8394f8af7f", "sha256": "f3e2305513018da678d84e4e6c3ebeae86d7cca865bba3bd8ce74a2b16ef3330" }, "downloads": -1, "filename": "nose_parallel-0.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "a778ae425097371412a3ec8394f8af7f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6225, "upload_time": "2018-10-29T18:50:16", "url": "https://files.pythonhosted.org/packages/42/af/4c7d161b280bcf213eb215759a3374596bf850ab0e2c67143dc928d973e4/nose_parallel-0.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e394b697827b7eeb55fd2521ad51995", "sha256": "ea245821ed1ee325bffc9bfc163caf8466d97f98c5b946d116fb68a3cb9bfadb" }, "downloads": -1, "filename": "nose-parallel-0.3.0.tar.gz", "has_sig": false, "md5_digest": "3e394b697827b7eeb55fd2521ad51995", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3824, "upload_time": "2018-10-29T18:50:20", "url": "https://files.pythonhosted.org/packages/a3/0a/299aae3ab4c0f829a026898fa544cec5f52dcaf3c6549a8ea84d6cdc75ac/nose-parallel-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "18617c5a46823accfbf5846bfd3d885f", "sha256": "b7ab744071a79abe77f52f9f2b0e34d9af8f6b7608f0e2e3565854893f2fd39a" }, "downloads": -1, "filename": "nose_parallel-0.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "18617c5a46823accfbf5846bfd3d885f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6228, "upload_time": "2018-10-29T19:05:13", "url": "https://files.pythonhosted.org/packages/88/8f/5f7507bba52b0404c1f930bcaf5476188502c415d41b08ca124aada136cc/nose_parallel-0.3.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfea1e87a1495d093ae69454183d9ce7", "sha256": "b66571113c4efa8c702aa31e480fb9d614270389dc0efd9b0e706f8fcd2a6982" }, "downloads": -1, "filename": "nose-parallel-0.3.1.tar.gz", "has_sig": false, "md5_digest": "cfea1e87a1495d093ae69454183d9ce7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3826, "upload_time": "2018-10-29T19:05:14", "url": "https://files.pythonhosted.org/packages/18/58/b1d82f42e78a99c29552832df9e0fdbfe7582a537c08d9c8058f7ff9fefb/nose-parallel-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18617c5a46823accfbf5846bfd3d885f", "sha256": "b7ab744071a79abe77f52f9f2b0e34d9af8f6b7608f0e2e3565854893f2fd39a" }, "downloads": -1, "filename": "nose_parallel-0.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "18617c5a46823accfbf5846bfd3d885f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 6228, "upload_time": "2018-10-29T19:05:13", "url": "https://files.pythonhosted.org/packages/88/8f/5f7507bba52b0404c1f930bcaf5476188502c415d41b08ca124aada136cc/nose_parallel-0.3.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cfea1e87a1495d093ae69454183d9ce7", "sha256": "b66571113c4efa8c702aa31e480fb9d614270389dc0efd9b0e706f8fcd2a6982" }, "downloads": -1, "filename": "nose-parallel-0.3.1.tar.gz", "has_sig": false, "md5_digest": "cfea1e87a1495d093ae69454183d9ce7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3826, "upload_time": "2018-10-29T19:05:14", "url": "https://files.pythonhosted.org/packages/18/58/b1d82f42e78a99c29552832df9e0fdbfe7582a537c08d9c8058f7ff9fefb/nose-parallel-0.3.1.tar.gz" } ] }