{ "info": { "author": "F\u00e1bio Mac\u00eado Mendes", "author_email": "fabiomacedomendes@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries" ], "description": "`ejudge` is a library that implements a basic electronic judge/grader for code.\nIt can run Python, Ruby, C, and C++ code in a sandbox and supporting other\nlanguages is easy.\n\nThis library uses the ``iospec`` format for specifying the expected inputs and\noutputs for the some program execution. For more info, refer to the iospec_\nmanual.\n\n.. _iospec: https://readthedocs.org/iospec/\n\n\nCommand line\n============\n\nThe ``ejudge`` accepts two sub-commands:\n\n``$ ejudge run ``:\n Runs the given input source code and passes all inputs defined\n in the file. The inputs may be either a simple text file with one\n input per line or an IoSpec source file with an `.iospec` extension.\n``$ ejudge grade ``:\n Runs the input source code and compares the result with the given IoSpec\n test cases. It than returns a feedback message telling if the code ran as\n expected and, in case of errors, what are the probable problems.\n\nLibrary\n=======\n\nThe main entry points in the :mod:`ejudge` module are the :func:`ejudge.run` and\n:func:`ejudge.grade` functions. The first is responsible for running code against\na set of inputs and collect the resulting IO. The second function runs code and\ncompares it with the expected iospec result.\n\n>>> from ejudge import run\n>>> src = 'print(\"hello %s!\" % input(\"name: \"))'\n>>> inputs = ['john']\n>>> spec = run(src, inputs, lang='python')\n>>> list(spec[0]) # fetch the first test case\n[Out('name: '), In('john'), Out('hello john!')]\n", "description_content_type": null, "docs_url": "https://pythonhosted.org/ejudge/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/fabiommendes/ejudge", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "ejudge", "package_url": "https://pypi.org/project/ejudge/", "platform": "any", "project_url": "https://pypi.org/project/ejudge/", "project_urls": { "Homepage": "http://github.com/fabiommendes/ejudge" }, "release_url": "https://pypi.org/project/ejudge/0.5.17/", "requires_dist": null, "requires_python": "", "summary": "A simple ejudge for Python. Supports several languages and sandboxing.", "version": "0.5.17" }, "last_serial": 2717725, "releases": { "0.3.2": [ { "comment_text": "", "digests": { "md5": "f5b501a9ba8d12ed615dc13732e73185", "sha256": "3422f8ecd3fde7d6c9ea6d5f27345eea15928edad23217ea1942f183414b29e4" }, "downloads": -1, "filename": "ejudge-0.3.2.tar.gz", "has_sig": false, "md5_digest": "f5b501a9ba8d12ed615dc13732e73185", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19692, "upload_time": "2016-03-27T00:55:08", "url": "https://files.pythonhosted.org/packages/53/f9/95195686bb301cf0b68f1b89da9396badaceac7cc7b788145256c3ba7f39/ejudge-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "f86e1df6322c505d85b450b0215f1ea2", "sha256": "6c6f091347721cc1f6fa718570d618a1a8094be3f7e56d91e0719dddc4d92686" }, "downloads": -1, "filename": "ejudge-0.3.3.tar.gz", "has_sig": false, "md5_digest": "f86e1df6322c505d85b450b0215f1ea2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16307, "upload_time": "2016-03-28T03:55:33", "url": "https://files.pythonhosted.org/packages/37/2e/98b27f08913f438dbd42e77dc2f56c4d2f7af3eb7a405637011e85134001/ejudge-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "9716d2b8cf66a4f67969a6c110973b29", "sha256": "3cf9bb9ef8c2d6c237cca26143c9956004b1d48eef6210295bd61d29efc2314a" }, "downloads": -1, "filename": "ejudge-0.3.4.tar.gz", "has_sig": false, "md5_digest": "9716d2b8cf66a4f67969a6c110973b29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16196, "upload_time": "2016-03-30T00:22:53", "url": "https://files.pythonhosted.org/packages/5a/a5/74ef3be381bf601fcf0e3038d14286d2dad1467ea670defc3b419b934951/ejudge-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "4a62a25b9fe64483467386b8b761ac14", "sha256": "c48c102f4a57e53bf023561b384403fbf05b89624f222676e11d11c772979e95" }, "downloads": -1, "filename": "ejudge-0.3.5.tar.gz", "has_sig": false, "md5_digest": "4a62a25b9fe64483467386b8b761ac14", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16995, "upload_time": "2016-03-31T16:43:14", "url": "https://files.pythonhosted.org/packages/30/d2/99acfda1b8186ae950e2ae9225cc3b407faaf899b074979c5cbe55471d6c/ejudge-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "28c4f026c7538b56d3ba91412b1ad398", "sha256": "3bdb1c577b58c8ab2a53bd87d8d9762247fb429275cbb948c18e7b38c0d3466e" }, "downloads": -1, "filename": "ejudge-0.3.6.tar.gz", "has_sig": false, "md5_digest": "28c4f026c7538b56d3ba91412b1ad398", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17000, "upload_time": "2016-04-06T19:11:04", "url": "https://files.pythonhosted.org/packages/4a/de/e0ee4a7a194f22c402427b4d54619a3fb0f2e6a72d67ff18792a8c6e61f0/ejudge-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "8f46fafe57b65821190eb87d27abc382", "sha256": "5f3f45b942e73886d1f84d7fc2c3c3ba3e934f9206d845e2633ab488a9d734dc" }, "downloads": -1, "filename": "ejudge-0.3.7.tar.gz", "has_sig": false, "md5_digest": "8f46fafe57b65821190eb87d27abc382", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17021, "upload_time": "2016-04-13T04:32:30", "url": "https://files.pythonhosted.org/packages/a4/a8/2d369fc8462a54adb201f336558aff04fb33c7f400546a328e6d0c7df28b/ejudge-0.3.7.tar.gz" } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "4ebe368fa497eb2d222f132b2f0ec75f", "sha256": "c84006ac135bc0e72aec775da031bd12c05ea866401a4bbfe45ba901dc52cdde" }, "downloads": -1, "filename": "ejudge-0.3.8.tar.gz", "has_sig": false, "md5_digest": "4ebe368fa497eb2d222f132b2f0ec75f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17179, "upload_time": "2016-04-19T18:05:52", "url": "https://files.pythonhosted.org/packages/ac/8a/ef5a3768b6c54816ae1c412887e5f1831e139ed12e0fe3ffea1048ff20f5/ejudge-0.3.8.tar.gz" } ], "0.3.9": [ { "comment_text": "", "digests": { "md5": "25f3d28a449908ae72a69c7302723e53", "sha256": "8531158b92c87618197bb2b1b08de6ff3fce1cf4630cb97d6ecdfbb40aedd9d6" }, "downloads": -1, "filename": "ejudge-0.3.9.tar.gz", "has_sig": false, "md5_digest": "25f3d28a449908ae72a69c7302723e53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17359, "upload_time": "2016-05-02T03:20:55", "url": "https://files.pythonhosted.org/packages/16/3a/ffec59dbfb1b9e3efb8d5da7a911f3b2300649b2a0f23598c206f4fdfa60/ejudge-0.3.9.tar.gz" } ], "0.3.post1": [ { "comment_text": "", "digests": { "md5": "b24b15cd79f33a4197e08e595cc3d44f", "sha256": "fac17106e3c82702ea19aded72777770df18024099b30e85965ab05470a174af" }, "downloads": -1, "filename": "ejudge-0.3.post1.tar.gz", "has_sig": false, "md5_digest": "b24b15cd79f33a4197e08e595cc3d44f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19568, "upload_time": "2016-03-23T16:53:53", "url": "https://files.pythonhosted.org/packages/29/c6/cbcefc4586178c42fd2ccb50db6772e7005140333c18dde19db981dfd08a/ejudge-0.3.post1.tar.gz" } ], "0.3a2": [ { "comment_text": "", "digests": { "md5": "567b97fe0cf6e89bf7c7206fbcc99e0a", "sha256": "ec8bddebc4e87eb73e8a16741d6cda274467cbe95d8e2398596cc00923326a50" }, "downloads": -1, "filename": "ejudge-0.3a2.tar.gz", "has_sig": false, "md5_digest": "567b97fe0cf6e89bf7c7206fbcc99e0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18363, "upload_time": "2016-03-26T12:42:00", "url": "https://files.pythonhosted.org/packages/6e/bd/bf1b0a184b0f01ecce0ae5edab519acb8e6997092e0947c8cbfe95d6ed2a/ejudge-0.3a2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "683c1237075abf8d06f53da8847d4a11", "sha256": "8731952b5441f8c78b47fc67160bd7da4c729965b41485842ac8b50a8170db7c" }, "downloads": -1, "filename": "ejudge-0.4.0.tar.gz", "has_sig": false, "md5_digest": "683c1237075abf8d06f53da8847d4a11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17081, "upload_time": "2016-05-03T23:53:10", "url": "https://files.pythonhosted.org/packages/8d/ef/68ce72b03e90ffee74fd74052f5d9c51134de02557e3d6fbe8b7b909e62a/ejudge-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "96cecdae0b07c59cb45b03bbf1865926", "sha256": "c970d4a151d8694e705d4de131d300513de83e46ba249b1de289726545ca0ec8" }, "downloads": -1, "filename": "ejudge-0.4.1.tar.gz", "has_sig": false, "md5_digest": "96cecdae0b07c59cb45b03bbf1865926", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17455, "upload_time": "2016-05-16T02:29:41", "url": "https://files.pythonhosted.org/packages/b6/1d/37965390544170501ff20b611a7764e457408804558e5016f9f6d3ebd844/ejudge-0.4.1.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "e4a75600fbebbcce045303a124a90436", "sha256": "790d9235fd7d93f8873e671d254fa702fe08a692ddc4d21250743775fa6536d6" }, "downloads": -1, "filename": "ejudge-0.5.1.tar.gz", "has_sig": false, "md5_digest": "e4a75600fbebbcce045303a124a90436", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18887, "upload_time": "2016-08-10T04:08:30", "url": "https://files.pythonhosted.org/packages/c9/c6/592489a8f58065b31c701a0c09785780491c4a86bbbebb9055124c7844e2/ejudge-0.5.1.tar.gz" } ], "0.5.10": [ { "comment_text": "", "digests": { "md5": "efc1b5df3df6b1dc78e97d1272047704", "sha256": "1936448925fbcc08c8f740a8bf456950a5d3f2b7bdec518501be85ea0d702b34" }, "downloads": -1, "filename": "ejudge-0.5.10.tar.gz", "has_sig": false, "md5_digest": "efc1b5df3df6b1dc78e97d1272047704", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23053, "upload_time": "2016-10-09T16:57:41", "url": "https://files.pythonhosted.org/packages/b5/42/99484c9ca9156d60f9de6f54125dbf09ab580e900ae9bdc14e28590849cb/ejudge-0.5.10.tar.gz" } ], "0.5.11": [ { "comment_text": "", "digests": { "md5": "c062523acdb88f4c2ddf7bd6d04d86df", "sha256": "35b4791734e8e2f19af18b5ffa62e019285446c6eafa81ad8a1f493bcfffaff9" }, "downloads": -1, "filename": "ejudge-0.5.11.tar.gz", "has_sig": false, "md5_digest": "c062523acdb88f4c2ddf7bd6d04d86df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23516, "upload_time": "2016-10-10T04:09:59", "url": "https://files.pythonhosted.org/packages/a1/b0/03f29b33e628d84322569b1dfd47afefe910c1c099b1adc047da9be30329/ejudge-0.5.11.tar.gz" } ], "0.5.12": [ { "comment_text": "", "digests": { "md5": "8ec0f1d060eb03df5c773da99a3d3330", "sha256": "071115e479932ed5650f50511e8d077676952f84cb263c0c7a667d8c4565ea9a" }, "downloads": -1, "filename": "ejudge-0.5.12.tar.gz", "has_sig": false, "md5_digest": "8ec0f1d060eb03df5c773da99a3d3330", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23584, "upload_time": "2016-10-10T04:51:43", "url": "https://files.pythonhosted.org/packages/04/f0/52218ad945d8e51d17a8c870741795e57cce955f97bed3fe27670128c61c/ejudge-0.5.12.tar.gz" } ], "0.5.13": [ { "comment_text": "", "digests": { "md5": "1933acd16723d98600282d3b1a23f4bc", "sha256": "c94a243e37412d756967177ff7e5027aa2f451a440e999ce9d263121aa95431a" }, "downloads": -1, "filename": "ejudge-0.5.13.tar.gz", "has_sig": false, "md5_digest": "1933acd16723d98600282d3b1a23f4bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23569, "upload_time": "2016-10-10T05:02:01", "url": "https://files.pythonhosted.org/packages/33/5a/c873c5722b5a2182eb5d1cf6b032418010c36848fb5fc1c8f1e04e631ea5/ejudge-0.5.13.tar.gz" } ], "0.5.14": [ { "comment_text": "", "digests": { "md5": "1aa83b800ac333675797ee8526376b56", "sha256": "06ce93620f3253e7630b53b47250ff5dccee02450a4d6d6d886aa05a6964fc00" }, "downloads": -1, "filename": "ejudge-0.5.14.tar.gz", "has_sig": false, "md5_digest": "1aa83b800ac333675797ee8526376b56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24161, "upload_time": "2016-10-11T21:41:16", "url": "https://files.pythonhosted.org/packages/3c/15/92dfbaab8e86942fee33b01a838c1629983d459e8e4b7e40a00fb21569a3/ejudge-0.5.14.tar.gz" } ], "0.5.15": [ { "comment_text": "", "digests": { "md5": "fdcdef8329b73542443ed8254e20b57f", "sha256": "166d3415df50c65bc05e7d8d58dcdf947eba283d8d52000acb9d24a0ffffee65" }, "downloads": -1, "filename": "ejudge-0.5.15.tar.gz", "has_sig": false, "md5_digest": "fdcdef8329b73542443ed8254e20b57f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24169, "upload_time": "2016-10-11T23:11:32", "url": "https://files.pythonhosted.org/packages/d0/e8/701cb89cd7650cc5ba01ffe7d5885a410ae99c5105d2a1b385cbc1133117/ejudge-0.5.15.tar.gz" } ], "0.5.16": [ { "comment_text": "", "digests": { "md5": "394d81236e63fb779bbf6dee55da926d", "sha256": "031698844d28723b03326ec5389d3da6b65e9906730a456922af3f28ad2df5ee" }, "downloads": -1, "filename": "ejudge-0.5.16.tar.gz", "has_sig": false, "md5_digest": "394d81236e63fb779bbf6dee55da926d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24312, "upload_time": "2017-03-16T20:28:38", "url": "https://files.pythonhosted.org/packages/f9/a3/dbfd15318c24cf58d9f83ab37d03e0f8f4d66c0f45b0ce21788bd7b7123b/ejudge-0.5.16.tar.gz" } ], "0.5.17": [ { "comment_text": "", "digests": { "md5": "ec50fafa2a1614664e7b49c28ddc3ad5", "sha256": "0fbeaca7e3941f17ad1f48ffea038f1d711ff63a3bf4f2466052a068b4a602ee" }, "downloads": -1, "filename": "ejudge-0.5.17.tar.gz", "has_sig": false, "md5_digest": "ec50fafa2a1614664e7b49c28ddc3ad5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24315, "upload_time": "2017-03-20T14:34:52", "url": "https://files.pythonhosted.org/packages/15/bc/e38802df4bc09b8f5f93735edb9ef043b757da33841b1e442db3e9e9be88/ejudge-0.5.17.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "80016b92a7d91ee9f1318c539968c2cd", "sha256": "8e00420821efbabd9ad15c28c2c6945992c6f7a321688d24353735a5ecbecb22" }, "downloads": -1, "filename": "ejudge-0.5.2.tar.gz", "has_sig": false, "md5_digest": "80016b92a7d91ee9f1318c539968c2cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18938, "upload_time": "2016-08-24T15:00:55", "url": "https://files.pythonhosted.org/packages/00/b7/40eb49dad11d79aa57f1a6ff39fae37d638c5de81d96ad50122c03fca75d/ejudge-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "76eeba30771ec82e16852ad7c050c7bc", "sha256": "d23ff4801b3fe2ce2c1b80807354ae98e45fb3ba0b0b7953c16f6a19c69c2d1a" }, "downloads": -1, "filename": "ejudge-0.5.3.tar.gz", "has_sig": false, "md5_digest": "76eeba30771ec82e16852ad7c050c7bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18643, "upload_time": "2016-09-03T19:36:27", "url": "https://files.pythonhosted.org/packages/fb/2e/1924e52a0cd0139b36931d34516db84037e658e71452a50bff54262c701b/ejudge-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "dc1368e3301f942a578bb21a5baa8524", "sha256": "bf878ea850d3bb9088df971249d182c173e934deade53654ea4f7f9cf9456b8b" }, "downloads": -1, "filename": "ejudge-0.5.4.tar.gz", "has_sig": false, "md5_digest": "dc1368e3301f942a578bb21a5baa8524", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19286, "upload_time": "2016-09-18T23:53:10", "url": "https://files.pythonhosted.org/packages/be/f6/8a48d1fb37e3ba0c5e2ed0c9d0a0e6cbee9bbb62c6bbd6660e5434b82c97/ejudge-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "ba65c184a99eaf4510ff0478b82851b8", "sha256": "fcdb49fa88d6083a0fa0d51ae9b1b30d746ed4fb6732cdd1f95bec30da62750b" }, "downloads": -1, "filename": "ejudge-0.5.5.tar.gz", "has_sig": false, "md5_digest": "ba65c184a99eaf4510ff0478b82851b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20530, "upload_time": "2016-09-21T14:09:20", "url": "https://files.pythonhosted.org/packages/53/1f/0e13f02bcbd03d3735e075cecf23d063c14ad6381c1b60bee4d37f3a6dd3/ejudge-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "397d75233a3c10259f2aebaafd4dc056", "sha256": "63f9217319f754c274e5efb708c9da01184e5b7cb17a6380a917b663330ed675" }, "downloads": -1, "filename": "ejudge-0.5.6.tar.gz", "has_sig": false, "md5_digest": "397d75233a3c10259f2aebaafd4dc056", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21994, "upload_time": "2016-10-03T13:40:32", "url": "https://files.pythonhosted.org/packages/89/93/9640b1669502e953f0eb47a4a045d516499aa68711005dc5d945c684e07d/ejudge-0.5.6.tar.gz" } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "cff82a70c3adb1f97e40129e2f8bc5f4", "sha256": "df4d859a1d7c487484c08460839cf372eb8833ef2a1adc18f79e430594ac556a" }, "downloads": -1, "filename": "ejudge-0.5.7.tar.gz", "has_sig": false, "md5_digest": "cff82a70c3adb1f97e40129e2f8bc5f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22156, "upload_time": "2016-10-04T18:34:00", "url": "https://files.pythonhosted.org/packages/06/30/681df64cd61b6dc9cf71f71b45750310e1c8cf75f0aef68ff8495d833ae0/ejudge-0.5.7.tar.gz" } ], "0.5.8": [ { "comment_text": "", "digests": { "md5": "eb01c5f48f7ce9a1c6204b50f29d5715", "sha256": "a72a7e92685dc2d52c5507bf9ad32522eabc45714867d850799cefda86bc48a9" }, "downloads": -1, "filename": "ejudge-0.5.8.tar.gz", "has_sig": false, "md5_digest": "eb01c5f48f7ce9a1c6204b50f29d5715", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22425, "upload_time": "2016-10-08T21:44:57", "url": "https://files.pythonhosted.org/packages/29/70/7e4680a4ef80e7740322b480e26f2e23aa9237b300f50d809fe91cbaabf2/ejudge-0.5.8.tar.gz" } ], "0.5.9": [ { "comment_text": "", "digests": { "md5": "1e4131d7a1c12aa716d5b8dab79887f0", "sha256": "18e9bc020978c6206c0dac0c615bd1ac38c7626999fd44d5b1a48e2a001ad6ae" }, "downloads": -1, "filename": "ejudge-0.5.9.tar.gz", "has_sig": false, "md5_digest": "1e4131d7a1c12aa716d5b8dab79887f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22597, "upload_time": "2016-10-09T01:21:02", "url": "https://files.pythonhosted.org/packages/3a/54/90b76fdbe1a8351cbab2ab50c87ad41b3bde09204caa582af10b1aeaba0e/ejudge-0.5.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ec50fafa2a1614664e7b49c28ddc3ad5", "sha256": "0fbeaca7e3941f17ad1f48ffea038f1d711ff63a3bf4f2466052a068b4a602ee" }, "downloads": -1, "filename": "ejudge-0.5.17.tar.gz", "has_sig": false, "md5_digest": "ec50fafa2a1614664e7b49c28ddc3ad5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24315, "upload_time": "2017-03-20T14:34:52", "url": "https://files.pythonhosted.org/packages/15/bc/e38802df4bc09b8f5f93735edb9ef043b757da33841b1e442db3e9e9be88/ejudge-0.5.17.tar.gz" } ] }