{ "info": { "author": "Zoran Plesiv\u010dak", "author_email": "z@plesiv.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Education", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Education" ], "description": "**************************************\nHAC: Helper for Algorithm Competitions\n**************************************\n|license| |pypi_version| |pypi_downloads| |python_versions| |linux_build| |code_quality|\n\n\n**hac** is *extensible* and *configurable* command-line tool for algorithm\ncompetitions. It:\n\n- prepares directory structures and source files,\n- prepares runner files (scripts used to test solutions),\n- downloads test-cases.\n\n\n=======\nInstall\n=======\n\nRecommended to install as non-root:\n\n.. code-block:: bash\n\n $ pip install --upgrade --user hac\n\n\n=====\nUsage\n=====\n\n---------\nExample 1\n---------\n\n**A)** For problems \"A\", \"B\" and \"C\" from `Codeforces contest #527\n`_ prepare:\n\n- source file from *cpp* highest priority template (has lowest *X* among\n *cpp.X* language templates),\n- runner from *sh.5* template (interpolated for *cpp* language template),\n- test-cases downloaded from `Codeforces `_.\n\n.. code-block:: bash\n\n $ hac -lcpp -rsh.5 codeforces/527 a b c\n\n\nWith default configuration all of the next lines do same as the one above:\n\n.. code-block:: bash\n\n $ hac -lcpp.5 -rsh.5 prep http://codeforces.com/527/A B C\n $ hac prep codeforces.com/527 B 1 c\n $ hac -d2 CODEFORCES/527 1 2 3\n $ hac forc/527 a b c\n\n\n**B)** Write solution for problem \"B\" and test it on test-cases:\n\n.. code-block:: bash\n\n $ cd 527/B\n $ # ... modify B.cpp\n $ ./B.cpp.sh -e # test solution on test-cases\n $ ./B.cpp.sh -c # clean generated outputs\n\n\n**C)** Debug solution for problem \"B\" on 2nd test-case:\n\n.. code-block:: bash\n\n $ ./B.cpp.sh -d 2\n\n\n---------\nExample 2\n---------\n\nDisplay general information about **hac**:\n\n.. code-block:: bash\n\n $ hac --help\n $ hac --version\n\nDisplay information about **hac** and selected site/problems:\n\n.. code-block:: bash\n\n $ hac -v show codeforces/527 # verbose\n $ hac -V show codeforces/527 # terse\n\n\n\n\n=======\nSupport\n=======\n\n**Sites:**\n\n+------------------------------------------------+----------------------+----------------------+\n| Site \\\\ Fetching problems from | Contest | Archive |\n+================================================+======================+======================+\n| `Codeforces.com `_ | **YES** | **NO** |\n+------------------------------------------------+----------------------+----------------------+\n| `Rosalind `_ | | **YES** |\n+------------------------------------------------+----------------------+----------------------+\n| `Sphere online judge `_ | | **PARTIAL** |\n+------------------------------------------------+----------------------+----------------------+\n| `Codechef `_ | **NO** | **NO** |\n+------------------------------------------------+----------------------+----------------------+\n\n\n**Runner/language combinations:**\n\n+-----------------+----------------+------------------+-----------------+-------------------+------------------+\n| | C | C++ | Python | Java | Pascal |\n+=================+================+==================+=================+===================+==================+\n| **POSIX shell** | *sh.5* / *c.5* | *sh.5* / *cpp.5* | *sh.5* / *py.5* | *sh.5* / *java.5* | *sh.5* / *pas.5* |\n+-----------------+----------------+------------------+-----------------+-------------------+------------------+\n\n\n\n=============\nConfiguration\n=============\n\nUser specific configuration should be placed in ``~/.config/hac`` directory by\ndefault (to change configuration directory you need to set ``HAC_CONFIG_DIR``\nenvironment variable).\n\nIn order to configure **hac** according to your preferences:\n\n1. copy default configuration files in a temporary directory,\n\n.. code-block:: bash\n\n $ HAC_CONFIG_DIR=~/temp_config hac --copy-config\n\n2. customize interesting files in ``~/temp_config``,\n3. move *only customized* files to ``~/.config/hac``, e.g.\n\n.. code-block:: bash\n\n $ mkdir -p ~/.config/hac\n $ cp ~/temp_config/hacrc ~/.config/hacrc\n\n4. remove temporary directory.\n\n.. code-block:: bash\n\n $ rm -r ~/temp_config\n\nThis approach is desirable because only configuration files that differ from\nthe default ones should be present in configuration directory, thereby\neffectively overshadowing the default configuration.\n\n\n\n==========\nAdditional\n==========\n\nFor more information about **hac** please see `User manual\n`_\n\nFor information about *contributions* please check `Contributing\n`_ chapter\nfrom *User manual*.\n\n\n\n==========\nChange Log\n==========\n\nPlease see `CHANGELOG `_.\n\n\n\n=======\nLicence\n=======\n\nPlease see `LICENSE `_.\n\n\n.. |license| image:: https://img.shields.io/github/license/plesiv/hac.svg?style=plastic\n :target: https://github.com/plesiv/hac/blob/master/LICENSE\n :alt: License\n\n.. |pypi_version| image:: https://img.shields.io/pypi/v/hac.svg?style=plastic\n :target: https://pypi.python.org/pypi/hac\n :alt: PyPI Version\n\n.. |pypi_downloads| image:: https://img.shields.io/pypi/dm/hac.svg?style=plastic\n :target: https://pypi.python.org/pypi/hac\n :alt: PyPI Monthly downloads\n\n.. |python_versions| image:: https://img.shields.io/pypi/pyversions/hac.svg?style=plastic\n :target: https://pypi.python.org/pypi/hac\n :alt: PyPI Supported Python versions\n\n.. |linux_build| image:: https://img.shields.io/travis/plesiv/hac/master.svg?label=linux%20build&style=plastic\n :target: http://travis-ci.org/plesiv/hac\n :alt: Linux Build status\n\n.. |code_quality| image:: https://img.shields.io/codacy/0e405bf71d584768aabd44b82f6f4e47.svg?style=plastic\n :target: https://www.codacy.com/app/z_2/hac/files\n :alt: Code Quality", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/plesiv/hac", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/plesiv/hac/blob/master/README.rst", "keywords": "algorithm competitions", "license": "hac.__license__", "maintainer": "", "maintainer_email": "", "name": "hac", "package_url": "https://pypi.org/project/hac/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/hac/", "project_urls": { "Download": "https://github.com/plesiv/hac", "Homepage": "https://github.com/plesiv/hac/blob/master/README.rst" }, "release_url": "https://pypi.org/project/hac/1.0.5/", "requires_dist": [ "lxml (>=3.3.5)", "requests (>=2.3.0)" ], "requires_python": "", "summary": "hac - Helper for Algorithm Competitions", "version": "1.0.5" }, "last_serial": 1770996, "releases": { "1.0.0": [], "1.0.1": [ { "comment_text": "", "digests": { "md5": "c9a6f777ccc05cdd47e75bf864e4b989", "sha256": "fa76db0bfa936e74bc701ecb068f6a9cc234f7132a66c3ef98115f0c5af63fc5" }, "downloads": -1, "filename": "hac-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c9a6f777ccc05cdd47e75bf864e4b989", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 31691, "upload_time": "2015-05-23T18:50:07", "url": "https://files.pythonhosted.org/packages/3c/dc/51508b59d77980aebd766fdc0b1452db7ec8ca3cc97a04b968e46202d189/hac-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bb9407daf8f976df20ac8c0f60c4a16", "sha256": "8d224f3e4e233bb5522bea5343dcacdbd3822f88713178dfec927bf3e2ce1eb2" }, "downloads": -1, "filename": "hac-1.0.1.tar.gz", "has_sig": false, "md5_digest": "5bb9407daf8f976df20ac8c0f60c4a16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28831, "upload_time": "2015-05-23T18:50:03", "url": "https://files.pythonhosted.org/packages/9b/7b/fac6e55ab6f523071c1af6e33eb535d36c0c608abf93acf49b8013827764/hac-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "f770b948632b187d4a6fd05940f2a9f3", "sha256": "15068bb750e78b052e8478bd0f329c4900b2e766b7ba2a4615420e63f1e2ac16" }, "downloads": -1, "filename": "hac-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f770b948632b187d4a6fd05940f2a9f3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 31706, "upload_time": "2015-05-23T21:36:31", "url": "https://files.pythonhosted.org/packages/ab/9b/3404389b3de01b1a9b240b5e9a16206966bd15ef2258a0d0ae3dd3f70b1b/hac-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa2c4acc2e3b02e0a85acdcfd6fa52e0", "sha256": "e24a827a02dbd675ced84a37981de14e3ea38c3292882273f00f4c8b8dbe98e5" }, "downloads": -1, "filename": "hac-1.0.2.tar.gz", "has_sig": false, "md5_digest": "aa2c4acc2e3b02e0a85acdcfd6fa52e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28837, "upload_time": "2015-05-23T21:36:27", "url": "https://files.pythonhosted.org/packages/72/1d/25ac756cc1eac41d1f628d5917949fa1368957c237a317f7497c8347b966/hac-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "f356a6af3e70b3c59e0eb9bf2160858f", "sha256": "45a0aa54c1e67540ec93eb7e71640de1b1a54f91f73b2d5da9c48f94ab503973" }, "downloads": -1, "filename": "hac-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f356a6af3e70b3c59e0eb9bf2160858f", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 32579, "upload_time": "2015-05-24T00:01:45", "url": "https://files.pythonhosted.org/packages/e5/ed/16fba89ea805aaade69a3034d0092835303cffe405e677824269ab983e76/hac-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e812ed8b6cf2bf99fa01f3f0b76b468", "sha256": "a9762e2c53010b3595f076767e7587807548d5e16bdc74d1632ccafc97438cf1" }, "downloads": -1, "filename": "hac-1.0.3.tar.gz", "has_sig": false, "md5_digest": "3e812ed8b6cf2bf99fa01f3f0b76b468", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29375, "upload_time": "2015-05-24T00:01:41", "url": "https://files.pythonhosted.org/packages/93/f5/3106109caa45657b1d4c71228d46b5050a7f79fbb352d67a05389885d601/hac-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "60b799e80a47972f087f542f840eb342", "sha256": "9d6bfeec081cf6b9c2f2c2541c9c5c22853209c97eef33ad5472757b637f9c86" }, "downloads": -1, "filename": "hac-1.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "60b799e80a47972f087f542f840eb342", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 34038, "upload_time": "2015-05-24T14:49:06", "url": "https://files.pythonhosted.org/packages/bc/7a/8d3967178e95b734970d06848c81e601004ff88a26ed73ae8a5e43ce8446/hac-1.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "876d8ee454923df7f90a40e2f47274b1", "sha256": "cb8c5c883a864892517c7f04d2bbf0b925ceeeb8c378334910b6d646c5d8f85c" }, "downloads": -1, "filename": "hac-1.0.4.tar.gz", "has_sig": false, "md5_digest": "876d8ee454923df7f90a40e2f47274b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30469, "upload_time": "2015-05-24T14:49:01", "url": "https://files.pythonhosted.org/packages/d3/bd/9faa70594d0520652fae40978dd427cdd31cb08c90920c80224752f23d97/hac-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "6036ff10175c915df1a4cff5e0f25056", "sha256": "7ef4f62c11f4bf0d40e8d3da255e90024be0f5270972faaca9493910b81981e9" }, "downloads": -1, "filename": "hac-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6036ff10175c915df1a4cff5e0f25056", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42326, "upload_time": "2015-10-16T00:13:57", "url": "https://files.pythonhosted.org/packages/dc/61/4c4bf7425575152485fbe9d13d273a7a36e13697ef4d9f728eea0de566ab/hac-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e17894c9df755a337202c6352466ef6", "sha256": "df596b999975a30988f40245b343ecf3c5a53b445beef5f0328e38faa84218f5" }, "downloads": -1, "filename": "hac-1.0.5.tar.gz", "has_sig": false, "md5_digest": "0e17894c9df755a337202c6352466ef6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33712, "upload_time": "2015-10-16T00:14:01", "url": "https://files.pythonhosted.org/packages/97/77/c5e280720061ffee05ec134738afc39f0904747174100b145f3d0377f0cc/hac-1.0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6036ff10175c915df1a4cff5e0f25056", "sha256": "7ef4f62c11f4bf0d40e8d3da255e90024be0f5270972faaca9493910b81981e9" }, "downloads": -1, "filename": "hac-1.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6036ff10175c915df1a4cff5e0f25056", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42326, "upload_time": "2015-10-16T00:13:57", "url": "https://files.pythonhosted.org/packages/dc/61/4c4bf7425575152485fbe9d13d273a7a36e13697ef4d9f728eea0de566ab/hac-1.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e17894c9df755a337202c6352466ef6", "sha256": "df596b999975a30988f40245b343ecf3c5a53b445beef5f0328e38faa84218f5" }, "downloads": -1, "filename": "hac-1.0.5.tar.gz", "has_sig": false, "md5_digest": "0e17894c9df755a337202c6352466ef6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33712, "upload_time": "2015-10-16T00:14:01", "url": "https://files.pythonhosted.org/packages/97/77/c5e280720061ffee05ec134738afc39f0904747174100b145f3d0377f0cc/hac-1.0.5.tar.gz" } ] }