{ "info": { "author": "Nasreddine Bac Ali", "author_email": "nasreddine.bacali95@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# cf-code-submit\n\n[![PyPI version](https://badge.fury.io/py/cf-submit.svg)](https://badge.fury.io/py/cf-submit)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d51504426d894fa6800556dd1c3331b5)](https://app.codacy.com/app/bacali95/cf_submit?utm_source=github.com&utm_medium=referral&utm_content=bacali95/cf_submit&utm_campaign=Badge_Grade_Dashboard)\n\nSubmit code to codeforces from the command line, and other stuff (display solves for each problem, display standings).
\n\nIn order to save the huge number of seconds needed to reach for the mouse during codeforces contests, I needed to be able to submit from the command line. There are many tools to do this for codeforces contests but I was unable to find an existing tool that allowed submissions to the codeforces gym for virtual contests, so I made this.\n\nAfter being able to submit from the command line, I noticed that I was wasting too much time staring at the standings on codeforces. Now I waste less time (hopefully) by staring at the standings in the terminal.\n\nThen I realized I would rather not navigate codeforces in my browser because looking for my mouse is a hassle, so now I can look at the number of solves for each problem in the terminal as well.\n\n# NEW\nAdd autocomplete while writing the command (double TAB).\n\n# Setup (Linux)\n- Install from pip. `sudo pip install cf_submit`\n\n# Uses\n## Submissions\n- `con` or `gym` to set default contest or gym ID. Example: `cf con 844` or `cf gym 101482`\n- `gcon` to set default group and contest ID. Example: `cf gcon dyEemqw7jN 233642`\n- `ext` to set default file extension. Will be used when no file extension is given. (`cf submit a`)\n- `submit` to submit code. Will try to guess problem. Batch submit allowed. Example: `cf submit` or `cf submit a.cpp`\n- `--prob` or `-p` to specify problem. Example: `cf submit code.cpp -p 844a`\n- `--watch` or `-w` to Watch the status of submission after submitting it. Example: `cf submit a.cpp -p 844a -w`\n- `peek` to look at status of the last submission. Example: `cf peek`\n- `watch` to watch the status of the last submission if `-w` was not used. Example: `cf watch`\n- `login` to store login info (username and password), will prompt you to enter password. Example: `cf login` or `cf login `\n- `info` to show stored handle and contest id. Example: `cf info`\n- `time` to show time left in contest\n- `open` to open the selected problem in the browser\n\nExamples: `cf submit code.cpp -p844a -w`
\n\n## Parse problem samples\n- `parse` to import selected problem samples data\n\nExamples: `cf parse -p 1108a` or `cf parse -p a`
\n\n## Test solution\n- `test` to test the selected source code with the imported tests data\n\nExamples: `cf test main.cpp`, you should specify the version for python (use `-l py2|py3`)
\n\n## Print Standings\n- `standings` or `st` to look at friends' standings. Example: `cf standings`\n- `--contest` or `-c` to specify the ID of the contest to look at. Example: `cf standings -c 844`\n- `--group` to specify the ID of the group to look at. Example: `cf standings --group dyEemqw7jN`\n- `--verbose` or `-v` to print standings with more info. Example: `cf standings -v`\n- `--top` or `-t` to look top contestants. Defaults to top 50 if `-t` is not included, top 10 if `--top` is included but no number is given. Example: `cf standings -t 20`\n- `--all` or `-a` to look at all contestants instead of only friends. Example: `cf standings --all`\n- `--sort` or `-s` to merge the solves of different rows belonging to the same handle. Will not merge two correct submissions on different rows. Example: `cf standings -s`\n\nExamples: `cf st -v -t7` or `cf standings -c844 -v -a`
\n\n## Print Problem Stats\n- `problems` or `pb` to look at the number of solves for each unsolved problem in a contest. Example: `cf problems`\n- `--contest` or `-c` to specify the ID of the contest. Example: `cf problems -c 844`\n- `--group` to specify the ID of the group. Example: `cf problems --group dyEemqw7jN`\n- `--verbose` or `-v` to show solved problems as well. Example: `cf problems -v`\n- `--sort` or `-s` to sort problems by: number of `solves`, or `index` (`id`). Default sort is by number of solves (you do not need to use `--sort`). Example: `cf problems -s id`\n\nExmaples: `cf pb -v -s id` or `cf problems -c100187 -v`
\n\n## Hack\n- `hack` to begin the hack proccess. \n- `--prob` or `-p` to specify problem. \n- `--number` or `-n` to specify the number of tests to try. \n\nExmaples: `cf hack generator.cpp checker.cpp bruteforce.cpp --prob a`
\n\n## Note\nThis script uses python3\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bacali95/cf_submit", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "cf-submit", "package_url": "https://pypi.org/project/cf-submit/", "platform": "", "project_url": "https://pypi.org/project/cf-submit/", "project_urls": { "Homepage": "https://github.com/bacali95/cf_submit" }, "release_url": "https://pypi.org/project/cf-submit/1.1.7/", "requires_dist": [ "lxml", "robobrowser", "prettytable", "javalang" ], "requires_python": "", "summary": "Submit Codeforces codes via terminal and other coll stuff", "version": "1.1.7" }, "last_serial": 5735239, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "8a4df5b0517ca3d5dcfd42ae6c70f81c", "sha256": "966cc7c0f4028d2d886084a48467f49d09b98a524b6e9c154ecb20170df1c83b" }, "downloads": -1, "filename": "cf_submit-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8a4df5b0517ca3d5dcfd42ae6c70f81c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 131651, "upload_time": "2019-02-07T21:25:13", "url": "https://files.pythonhosted.org/packages/28/35/5d69395d2b493a8f8cbab27ff3cbb1b84bb2767c3c9fcdf20b9e1c6dfe37/cf_submit-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8faf0be41264a175fb883eac24c0e03a", "sha256": "37ea14f53511cbdafdb223ee8592358bba5ddf3c0e92aab6579b7b6bad0ae33a" }, "downloads": -1, "filename": "cf_submit-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8faf0be41264a175fb883eac24c0e03a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 117034, "upload_time": "2019-02-07T21:25:15", "url": "https://files.pythonhosted.org/packages/ad/2d/166b144718bd25eabfabaf7ecae7d1a567d07f411028a4e6fe9046cec426/cf_submit-1.0.0.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "b1c3f68918fb26f01b263874f4d563f0", "sha256": "79749cd3d9e4f68d428428bf9af99bef574384f22217990ec953f26bff34b920" }, "downloads": -1, "filename": "cf_submit-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b1c3f68918fb26f01b263874f4d563f0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 131510, "upload_time": "2019-02-07T23:25:58", "url": "https://files.pythonhosted.org/packages/43/f4/ff088cb9d806e197e504578c283b709b29b4615abb3108a689d7050c13b4/cf_submit-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f377abdbb138e3da866a51661342b0c", "sha256": "6900cc063b8ad85fde247788eabdddc6c2c70baf9ad6b3aa5b34e3b172054800" }, "downloads": -1, "filename": "cf_submit-1.0.2.tar.gz", "has_sig": false, "md5_digest": "7f377abdbb138e3da866a51661342b0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 116761, "upload_time": "2019-02-07T23:30:27", "url": "https://files.pythonhosted.org/packages/bf/dc/5af90b36273ba287fc6482a3b0bbc0dbf6091c0d2cc156029e5552d2fd34/cf_submit-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "5fe6dac189277fbe7d1c39cc921a2259", "sha256": "7363b06c24166ad8ef012528276e7bc68cf2fdc0ba4e60568d245796b09f7d5b" }, "downloads": -1, "filename": "cf_submit-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5fe6dac189277fbe7d1c39cc921a2259", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 120044, "upload_time": "2019-02-08T19:01:30", "url": "https://files.pythonhosted.org/packages/7a/83/204de08766616fa2b8636b6b469d54dec929ebeedc70959385e707715046/cf_submit-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d8b5a7cbaa82da6a500da3f4ad9f540", "sha256": "2f1675ec47d0261050a004c06e0ddc213fecffa972bf7451acb5a287da5a5905" }, "downloads": -1, "filename": "cf_submit-1.0.3.tar.gz", "has_sig": false, "md5_digest": "5d8b5a7cbaa82da6a500da3f4ad9f540", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 116763, "upload_time": "2019-02-08T19:01:32", "url": "https://files.pythonhosted.org/packages/10/94/c72c1b69dcea4f0ca0380fa7b30f513984e6bf893f7de9efaaa3703058ac/cf_submit-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "026f10d0e5869d486085ec7a6f06cef0", "sha256": "d9e5deaff7d89f0ac1ce188bebfed0cc4e54b5fa426dbfebc078d522480e4306" }, "downloads": -1, "filename": "cf_submit-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "026f10d0e5869d486085ec7a6f06cef0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 121873, "upload_time": "2019-02-21T17:49:55", "url": "https://files.pythonhosted.org/packages/10/bc/5748ec73621a7bcb594163d16eb2eb7fae6cf838d464afa934a412f2fa90/cf_submit-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ab0845b1504ed0dc04775fb9a11f08f6", "sha256": "d8db697dc2b6770bbf2f744e6075524d4740380488616afc37bc659d585d6461" }, "downloads": -1, "filename": "cf_submit-1.1.0.tar.gz", "has_sig": false, "md5_digest": "ab0845b1504ed0dc04775fb9a11f08f6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 117946, "upload_time": "2019-02-21T17:49:58", "url": "https://files.pythonhosted.org/packages/9c/e5/4d32d4500d984d0706ae1a7d491d5114c58f4360b68b505f4177f87af119/cf_submit-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "102891bd83d48c4abdaa2c8e4487d27f", "sha256": "d60cf244529b3b020099b7c62d2251ad4ea45c0bd2881f1b228fd674821ad0a2" }, "downloads": -1, "filename": "cf_submit-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "102891bd83d48c4abdaa2c8e4487d27f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 123316, "upload_time": "2019-04-07T23:53:08", "url": "https://files.pythonhosted.org/packages/d2/83/ff5e20eda28e981c4eb2bf0035da505d9c3852fb6be7b7f6acf8493f08b9/cf_submit-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ca71edaaca026b908899f825a0fb665", "sha256": "1f871b757d370ee99115b6d3d42a60c08e2a80829542b6baded2d8d96463414b" }, "downloads": -1, "filename": "cf_submit-1.1.1.tar.gz", "has_sig": false, "md5_digest": "6ca71edaaca026b908899f825a0fb665", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118261, "upload_time": "2019-04-07T23:53:10", "url": "https://files.pythonhosted.org/packages/ab/69/a162936e673efc119578977a36f2baa8274f2ca1f44f847c469ac753edfc/cf_submit-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "acff799b1621df3f336e931cc4bd48e3", "sha256": "3f058848dd88a436882d0c46cb4a084158f735114af06fce8c5f4fecd9111662" }, "downloads": -1, "filename": "cf_submit-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "acff799b1621df3f336e931cc4bd48e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 123324, "upload_time": "2019-04-07T23:56:21", "url": "https://files.pythonhosted.org/packages/a0/58/b0b3c7a380b5232273997519751d71b9952c06b39c352bc04f8403c9503d/cf_submit-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9f153c387bfdf1d5304f3ba1e76551f8", "sha256": "dfa04b70cf4098d3804eed2663a6ab08d123a3bd10cc1d2c64e37b4bdd87ce93" }, "downloads": -1, "filename": "cf_submit-1.1.2.tar.gz", "has_sig": false, "md5_digest": "9f153c387bfdf1d5304f3ba1e76551f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118268, "upload_time": "2019-04-07T23:56:23", "url": "https://files.pythonhosted.org/packages/1b/f2/53e819f9db9a9113fe043217d28bc99809a2d3329b1fdd4bfab5c6983022/cf_submit-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "834386053b752dfe973e91acd16ab9d3", "sha256": "0c4414bb891a6d6225c4403a1266b72cc1f54f15b29656e4c6b7b62139863e0c" }, "downloads": -1, "filename": "cf_submit-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "834386053b752dfe973e91acd16ab9d3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 123322, "upload_time": "2019-04-13T17:17:15", "url": "https://files.pythonhosted.org/packages/23/df/cd0bd444f821c6d87cc5c262c2e9f8a51e8a21f5c1417c7d7605a0bab4ff/cf_submit-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6eb050cc9f306e576ec419ceb783ffa9", "sha256": "4ecbbe3d913bb5aee4802822ed02faa0d823e2ec0b409167c27ba93c09c6ada3" }, "downloads": -1, "filename": "cf_submit-1.1.3.tar.gz", "has_sig": false, "md5_digest": "6eb050cc9f306e576ec419ceb783ffa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118242, "upload_time": "2019-04-13T17:17:17", "url": "https://files.pythonhosted.org/packages/58/ee/e9836b90b26ba95f61d424ad7d048ff705bd6d942c46767c128e994da847/cf_submit-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "737b91cee7a47be036ada0a88db07970", "sha256": "3d63ecf3c25c9d327f3042ace6a50315e3cc0053a3c5c522d7a16bf36de78c38" }, "downloads": -1, "filename": "cf_submit-1.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "737b91cee7a47be036ada0a88db07970", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 123484, "upload_time": "2019-05-23T22:30:03", "url": "https://files.pythonhosted.org/packages/68/28/e61816847c327bacbd341c84913f6f48bb6d385fecf03523fb3c494cd0f1/cf_submit-1.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "869a5d7a0e7d9457777cf930590fc7cd", "sha256": "607792b2490a804578b015168259a6b9587351ef5a289a12a1d54c3f03ebaf9b" }, "downloads": -1, "filename": "cf_submit-1.1.4.tar.gz", "has_sig": false, "md5_digest": "869a5d7a0e7d9457777cf930590fc7cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118333, "upload_time": "2019-05-23T22:30:06", "url": "https://files.pythonhosted.org/packages/a9/2f/0be466508c967384bdc60b53e2c750d91c1db81f4f81563ad23a07ec4111/cf_submit-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "918a0d84b351f6ee9a46c05f0a7bf387", "sha256": "e3b9b6a6ca9eb94e8c24e383a38d2ec65fd3d57608a7adac3ec3eeb0f935b370" }, "downloads": -1, "filename": "cf_submit-1.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "918a0d84b351f6ee9a46c05f0a7bf387", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 123486, "upload_time": "2019-05-23T22:37:42", "url": "https://files.pythonhosted.org/packages/fa/7c/917121cb74d8e989170641a22543e48255da374a113fd504e9c19dbb3b37/cf_submit-1.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ee5c904d8c8d8e65bf344ca4bfd8c7d9", "sha256": "7d9ed0379b4b9156a3ce949f12c818c6a2d08273dc6717c91ad5e91395649b9f" }, "downloads": -1, "filename": "cf_submit-1.1.5.tar.gz", "has_sig": false, "md5_digest": "ee5c904d8c8d8e65bf344ca4bfd8c7d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118349, "upload_time": "2019-05-23T22:37:45", "url": "https://files.pythonhosted.org/packages/55/1a/bfbf4edb8e93e9e18e652666b97ac21fb602d316655de353900cb1fd3674/cf_submit-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "38f998432ad4f93c6024c9a4139e139d", "sha256": "411f9ff94cb382f826515b23539615496e203fede9ac5a789d60716e46372afb" }, "downloads": -1, "filename": "cf_submit-1.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "38f998432ad4f93c6024c9a4139e139d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 123474, "upload_time": "2019-06-09T19:49:01", "url": "https://files.pythonhosted.org/packages/0e/ed/b94da16c5684c3cd9ef45c8bdd11656435ac1a19b7bd3e3f854dcf39b638/cf_submit-1.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4fd56b04a768beffcb2a8ba1a243ca5e", "sha256": "2e56cc2ef7a65d920598cc55efeef4b9fab0b21ac591ddf7c5739e045b5aa05d" }, "downloads": -1, "filename": "cf_submit-1.1.6.tar.gz", "has_sig": false, "md5_digest": "4fd56b04a768beffcb2a8ba1a243ca5e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118358, "upload_time": "2019-06-09T19:49:03", "url": "https://files.pythonhosted.org/packages/8f/9d/648f3fd3da76517f5887641fde7b69e73b09908d5bcb50f90ee63a13aa22/cf_submit-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "70398d951c2cb8743ca13554963c8704", "sha256": "44bd8503f5130ca14270090d2c8c37cf338125468dc74e9dfb7f7fc21859bd00" }, "downloads": -1, "filename": "cf_submit-1.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "70398d951c2cb8743ca13554963c8704", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 123646, "upload_time": "2019-08-27T07:53:39", "url": "https://files.pythonhosted.org/packages/60/c3/956761b81e756397180c2eeaace76ae60be9a1c626f1685e60b02ae2fc5e/cf_submit-1.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdcc4d32deb2159a7f4e6627c4402065", "sha256": "5541e944a60165926c2a09244cba6016b27aab49aa6a21e325fb52b0d0e604e9" }, "downloads": -1, "filename": "cf_submit-1.1.7.tar.gz", "has_sig": false, "md5_digest": "cdcc4d32deb2159a7f4e6627c4402065", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118723, "upload_time": "2019-08-27T07:53:41", "url": "https://files.pythonhosted.org/packages/81/6b/c823243c69771cbd8b9b3eb9d9f89f76ba425f7de90a8ff4b3a117552e78/cf_submit-1.1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "70398d951c2cb8743ca13554963c8704", "sha256": "44bd8503f5130ca14270090d2c8c37cf338125468dc74e9dfb7f7fc21859bd00" }, "downloads": -1, "filename": "cf_submit-1.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "70398d951c2cb8743ca13554963c8704", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 123646, "upload_time": "2019-08-27T07:53:39", "url": "https://files.pythonhosted.org/packages/60/c3/956761b81e756397180c2eeaace76ae60be9a1c626f1685e60b02ae2fc5e/cf_submit-1.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdcc4d32deb2159a7f4e6627c4402065", "sha256": "5541e944a60165926c2a09244cba6016b27aab49aa6a21e325fb52b0d0e604e9" }, "downloads": -1, "filename": "cf_submit-1.1.7.tar.gz", "has_sig": false, "md5_digest": "cdcc4d32deb2159a7f4e6627c4402065", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118723, "upload_time": "2019-08-27T07:53:41", "url": "https://files.pythonhosted.org/packages/81/6b/c823243c69771cbd8b9b3eb9d9f89f76ba425f7de90a8ff4b3a117552e78/cf_submit-1.1.7.tar.gz" } ] }