{ "info": { "author": "kyuridenamida", "author_email": "tyotyo3@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "[![Build Status](https://travis-ci.org/kyuridenamida/atcoder-tools.svg?branch=master)](https://travis-ci.org/kyuridenamida/atcoder-tools)\n[![codecov](https://codecov.io/gh/kyuridenamida/atcoder-tools/branch/master/graph/badge.svg)](https://codecov.io/gh/kyuridenamida/atcoder-tools)\n[![PyPI](https://img.shields.io/pypi/v/atcoder-tools.svg)](https://pypi.python.org/pypi/atcoder-tools)\n\nAtCoder Tools\n====\nPython 3.5 \u4ee5\u964d\u3067\u52d5\u4f5c\u3059\u308b [AtCoder](http://atcoder.jp/) \u304b\u3089\u30b5\u30f3\u30d7\u30eb\u5165\u529b\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u308a\u3059\u308b\u969b\u306b\u4fbf\u5229\u306a\u30c4\u30fc\u30eb\u3067\u3059\u3002\n\n\u3053\u306e\u30c4\u30fc\u30eb\u306b\u306f\u6b21\u306e\u3088\u3046\u306a\u6a5f\u80fd\u304c\u3042\u308a\u307e\u3059\u3002\n- AtCoder\u3078\u306e\u30ed\u30b0\u30a4\u30f3\uff0c\u5165\u51fa\u529b\u4f8b\u30c7\u30fc\u30bf\u306a\u3069\u306e\u62bd\u51fa\n- \u679d\u5208\u308a\u63a2\u7d22\u306b\u3088\u308b\u9ad8\u7cbe\u5ea6\u30fb\u9ad8\u901f\u306a\u5165\u529b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u89e3\u6790 (ARC\u3001ABC\u3001AGC\u306b\u3064\u3044\u3066\u306f\u7d049\u5272\u307b\u3069)\n- \u554f\u984c\u6587\u4e2d\u306b\u542b\u307e\u308c\u308bMOD\u5024\u3001YES/NO\u6587\u5b57\u5217\u3001\u8aa4\u5dee\u30b8\u30e3\u30c3\u30b8\u306e\u305f\u3081\u306e\u8aa4\u5dee\u5024\u7b49\u306e\u5b9a\u6570\u5024\u62bd\u51fa\n- \u30b5\u30f3\u30d7\u30eb\u306e\u30ed\u30fc\u30ab\u30eb\u30c6\u30b9\u30c8\u6a5f\u80fd\n - \u8aa4\u5dee\u30b8\u30e3\u30c3\u30b8\u306b\u5bfe\u5fdc by [@chaemon](https://github.com/chaemon/)\n- \u30b3\u30fc\u30c9\u63d0\u51fa\u6a5f\u80fd\n- \u5165\u529b\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u89e3\u6790\u7d50\u679c\u3084\u62bd\u51fa\u3057\u305f\u5b9a\u6570\u5024\u3092\u7528\u3044\u305f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u306e\u30b3\u30fc\u30c9\u81ea\u52d5\u751f\u6210(\u4ee5\u4e0b\u306e\u8868\u306b\u8a18\u8f09\u3055\u308c\u3066\u3044\u308b\u8a00\u8a9e\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059)\n - \u30ab\u30b9\u30bf\u30e0\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u5bfe\u5fdc\n - \u4ed6\u8a00\u8a9e\u5bfe\u5fdc\u306e\u305f\u3081\u306e\u30b3\u30f3\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3(\u2252\u4e2d\u9593\u5f62\u5f0f\u304b\u3089\u30b3\u30fc\u30c9\u306b\u5909\u63db\u3059\u308b\u90e8\u5206\u306ePR)\u3092\u52df\u96c6\u4e2d\u3067\u3059!\n\n|\u5bfe\u5fdc\u8a00\u8a9e |Contributor 1|Contributor 2|\n|---:|:---:|:---:|\n|C++|[@kyuridenamida](https://github.com/kyuridenamida/) (generator, template)|[@asi1024](https://github.com/asi1024/) (template)|\n|Java|[@kyuridenamida](https://github.com/kyuridenamida/) (generator, template)||\n|Rust|[@fukatani](https://github.com/fukatani/) (generator, template)|[@koba-e964](https://github.com/koba-e964/) (template, CR)|\n|Python3|[@kmyk](https://github.com/kmyk/) (generator, template)|[@penpenpng](https://github.com/penpenpng/) (generator)|\n|D|[@penpenpng](https://github.com/penpenpng/) (generator, template)||\n|Nim|[@chaemon](https://github.com/chaemon/) (generator, template)||\n|C#|[@chaemon](https://github.com/chaemon/) (generator, template)||\n\n## Demo\n\n\n## How to install\n`pip3 install atcoder-tools` \n\n\u305f\u3060\u306e`pip`\u3060\u3068Python 2\u7cfb\u3092\u4f7f\u3063\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u305f\u3081\u3046\u307e\u304f\u3044\u304b\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\n\n## Userscript by [@kmyk](https://github.com/kmyk/) (NEW! 2019/03/06)\nTampermonkey(\u5404\u7a2e\u30d6\u30e9\u30a6\u30b6\u3067\u52d5\u4f5c)\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u306aUserscript\u3067\u3059\u3002\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u904e\u53bb\u554f\u3092\u5bfe\u8c61\u3068\u3057\u3066\u3001atcoder-tools\u3067\u81ea\u52d5\u751f\u6210\u3055\u308c\u305f\u30b3\u30fc\u30c9\u3092\u305d\u306e\u307e\u307eAtCoder\u306e\u30b9\u30cb\u30da\u30c3\u30c8\u4e0a\u3067\u5229\u7528\u3067\u304d\u307e\u3059\u3002\n1. Tampermonkey \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b ([Chrome](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo), [FireFox](https://addons.mozilla.org/en-US/firefox/addon/tampermonkey/))\n2. https://kyuridenamida.github.io/atcoder-tools/index.user.js \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066Userscript\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n3. \u30ed\u30b0\u30a4\u30f3\u3057\u305f\u72b6\u614b\u3067\u9069\u5f53\u306a\u554f\u984c\u30da\u30fc\u30b8\u306b\u884c\u304f(e.g. https://atcoder.jp/contests/abc120/tasks/abc120_d)\n4. \u6b63\u3057\u304f\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u5834\u5408\u3001\u30da\u30fc\u30b8\u4e0b\u90e8\u306e\u30b3\u30fc\u30c9\u30b9\u30cb\u30da\u30c3\u30c8\u306b\u30b3\u30fc\u30c9\u304c\u6a19\u6e96\u3067\u57cb\u3081\u8fbc\u307e\u308c\u3066\u3044\u308b (atcoder-tools\u306e\u5bfe\u5fdc\u8a00\u8a9e\u306e\u307f)\n\n\n## Analysis\nhttps://kyuridenamida.github.io/atcoder-tools/\n\n\u5404\u554f\u984c\u3054\u3068\u306e\u89e3\u6790\u7d50\u679c\u306a\u3069\u304c\u8f09\u3063\u3066\u3044\u307e\u3059\u3002\n\n## Usage\n\n\n*\u91cd\u8981: \u304b\u3064\u3066\u30d1\u30b9\u30ef\u30fc\u30c9\u5165\u529b\u306a\u3057\u3067\u30ed\u30b0\u30a4\u30f3\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b`AccountInformation.py`\u306b\u30ed\u30b0\u30a4\u30f3\u60c5\u5831\u3092\u66f8\u304d\u8fbc\u3080\u3053\u3068\u3092\u8981\u6c42\u3057\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ea\u30b9\u30af\u304c\u9ad8\u3059\u304e\u308b\u305f\u3081\u3001\u30bb\u30c3\u30b7\u30e7\u30f3\u60c5\u5831\u306e\u307f\u3092\u4fdd\u6301\u3059\u308b\u65b9\u91dd\u306b\u5207\u308a\u66ff\u3048\u307e\u3057\u305f\u3002\n\u4eca\u5f8c\u306f\u3067\u304d\u308b\u3060\u3051\u4fdd\u6301\u3055\u308c\u3066\u3044\u308b\u30bb\u30c3\u30b7\u30e7\u30f3\u60c5\u5831\u3092\u5229\u7528\u3057\u3066AtCoder\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u518d\u5165\u529b\u3092\u8981\u6c42\u3057\u307e\u3059\u3002\n\u904e\u53bb\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u7686\u69d8\u306b\u306f`AccountInformation.py`\u3092\u524a\u9664\u3057\u3066\u9802\u304f\u3088\u3046\u304a\u9858\u3044\u7533\u3057\u4e0a\u3052\u307e\u3059\u3002*\n\n\n- `atcoder-tools gen {contest_id}` \u30b3\u30f3\u30c6\u30b9\u30c8\u74b0\u5883\u3092\u7528\u610f\u3057\u307e\u3059\u3002\n- `atcoder-tools test` \u30ab\u30ec\u30f3\u30c8\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4e0a\u306b\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u3068\u5165\u51fa\u529b(in_\\*.txt, out_\\*.txt)\u304c\u3042\u308b\u72b6\u614b\u3067\u5b9f\u884c\u3059\u308b\u3068\u30ed\u30fc\u30ab\u30eb\u30c6\u30b9\u30c8\u3092\u884c\u3044\u307e\u3059\u3002\n- `atcoder-tools submit` \u30ab\u30ec\u30f3\u30c8\u30fb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u4e0a\u3067\u5b9f\u884c\u3059\u308b\u3068\u5bfe\u5fdc\u3059\u308b\u554f\u984c\u304c\u30b5\u30f3\u30d7\u30eb\u306b\u901a\u308b\u5834\u5408\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u63d0\u51fa\u3057\u307e\u3059\u3002\u65e2\u306bAtCoder\u4e0a\u306b\u305d\u306e\u554f\u984c\u306b\u5bfe\u3059\u308b\u63d0\u51fa\u304c\u3042\u308b\u5834\u5408\u3001`-u`\u3092\u6307\u5b9a\u3057\u306a\u3044\u3068\u63d0\u51fa\u3067\u304d\u306a\u3044\u3088\u3046\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\n- `atcoder-tools version` \u73fe\u5728\u306e atcoder-tools \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u51fa\u529b\u3057\u307e\u3059\u3002\n\n`atcoder-tools gen --help`\u3067`atcoder-tools gen`\u306e\u5f15\u6570\u306e\u8a73\u7d30\u306b\u3064\u3044\u3066\u78ba\u8a8d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\n\n\u4f8b: \n```console\natcoder-tools gen agc001\ncd ~/atcoder-workspace/agc001/A\ng++ main.cpp\natcoder-tools test\n```\n\n`--without-login` \u5f15\u6570\u3092\u6307\u5b9a\u3059\u308b\u3068\u30ed\u30b0\u30a4\u30f3\u306a\u3057\u3067\u30c7\u30fc\u30bf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059(\u4e00\u822c\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u30b3\u30f3\u30c6\u30b9\u30c8\u306e\u307f)\u3002\n\n```console\n$ atcoder-tools gen [contest_id] --without-login\n```\n\n### gen \u306e\u8a73\u7d30\n```\nusage: atcoder-tools gen\n [-h] [--without-login] [--workspace WORKSPACE] [--lang LANG]\n [--template TEMPLATE] [--parallel] [--save-no-session-cache]\n [--config CONFIG]\n contest_id\n\npositional arguments:\n contest_id Contest ID (e.g. arc001)\n\noptional arguments:\n -h, --help show this help message and exit\n --without-login Download data without login\n --workspace WORKSPACE\n Path to workspace's root directory. This script will create files in {WORKSPACE}/{contest_name}/{alphabet}/ e.g. ./your-workspace/arc001/A/\n [Default] /home/kyuridenamida/atcoder-workspace\n --lang LANG Programming language of your template code, cpp or java or rust or python or nim or d or cs.\n [Default] cpp\n --template TEMPLATE File path to your template code\n [Default (C++)] /atcodertools/tools/templates/default_template.cpp\n [Default (Java)] /atcodertools/tools/templates/default_template.java\n [Default (Rust)] /atcodertools/tools/templates/default_template.rs\n [Default (Python3)] /atcodertools/tools/templates/default_template.py\n [Default (NIM)] /atcodertools/tools/templates/default_template.nim\n [Default (D)] /atcodertools/tools/templates/default_template.d\n [Default (C#)] /atcodertools/tools/templates/default_template.cs\n --parallel Prepare problem directories asynchronously using multi processors.\n --save-no-session-cache\n Save no session cache to avoid security risk\n --config CONFIG File path to your config file\n [Default (Primary)] /home/kyuridenamida/.atcodertools.toml\n [Default (Secondary)] /atcoder-tools/atcodertools/tools/atcodertools-default.toml\n```\n\n### test \u306e\u8a73\u7d30\n\n```\nusage: atcoder-tools test [-h] [--exec EXEC] [--num NUM]\n [--dir DIR] [--timeout TIMEOUT]\n [--knock-out]\n [--skip-almost-ac-feedback]\n [--judge-type JUDGE_TYPE]\n [--error-value ERROR_VALUE]\n\noptional arguments:\n -h, --help show this help message and exit\n --exec EXEC, -e EXEC File path to the execution target. [Default] Automatically detected exec file\n --num NUM, -n NUM The case number to test (1-origin). All cases are tested if not specified.\n --dir DIR, -d DIR Target directory to test. [Default] Current directory\n --timeout TIMEOUT, -t TIMEOUT\n Timeout for each test cases (sec) [Default] 1\n --knock-out, -k Stop execution immediately after any example's failure [Default] False\n --skip-almost-ac-feedback, -s\n Hide inputs and expected/actual outputs if result is correct and there are error outputs [Default] False,\n --judge-type JUDGE_TYPE, -j JUDGE_TYPE\n error type must be one of [normal, absolute, relative, absolute_or_relative]\n --error-value ERROR_VALUE, -v ERROR_VALUE\n error value for decimal number judge: [Default] 0.000000001\n```\n\n\n### submit \u306e\u8a73\u7d30\n\n```\nusage: atcoder-tools submit [-h] [--exec EXEC] [--dir DIR]\n [--timeout TIMEOUT] [--code CODE]\n [--force] [--save-no-session-cache]\n [--unlock-safety]\n [--judge-type JUDGE_TYPE]\n [--error-value ERROR_VALUE]\n\noptional arguments:\n -h, --help show this help message and exit\n --exec EXEC, -e EXEC File path to the execution target. [Default] Automatically detected exec file\n --dir DIR, -d DIR Target directory to test. [Default] Current directory\n --timeout TIMEOUT, -t TIMEOUT\n Timeout for each test cases (sec) [Default] 1\n --code CODE, -c CODE Path to the source code to submit [Default] Code path written in metadata.json\n --force, -f Submit the code regardless of the local test result [Default] False\n --save-no-session-cache\n Save no session cache to avoid security risk\n --unlock-safety, -u By default, this script only submits the first code per problem. However, you can remove the safety by this option in order to submit codes twice or more.\n --judge-type JUDGE_TYPE, -j JUDGE_TYPE\n error type must be one of [normal, absolute, relative, absolute_or_relative]\n --error-value ERROR_VALUE, -v ERROR_VALUE\n error value for decimal number judge: [Default] 1e-09\n```\n\n### codegen \u306e\u8a73\u7d30\n\n```\nusage: ./atcoder-tools codegen [-h] [--without-login] [--lang LANG]\n [--template TEMPLATE] [--save-no-session-cache]\n [--config CONFIG]\n url\n\npositional arguments:\n url URL (e.g. https://atcoder.jp/contests/abc012/tasks/abc012_3)\n\noptional arguments:\n -h, --help show this help message and exit\n --without-login Download data without login\n --lang LANG Programming language of your template code, cpp or java or rust.\n [Default] cpp\n --template TEMPLATE File path to your template code\n [Default (C++)] /home/user/GitHub/atcoder-tools/atcodertools/tools/templates/default_template.cpp\n [Default (Java)] /home/user/GitHub/atcoder-tools/atcodertools/tools/templates/default_template.java\n [Default (Rust)] /home/user/GitHub/atcoder-tools/atcodertools/tools/templates/default_template.rs\n --save-no-session-cache\n Save no session cache to avoid security risk\n --config CONFIG File path to your config file\n [Default (Primary)] /home/user/.atcodertools.toml\n [Default (Secondary)] /home/user/GitHub/atcoder-tools/atcodertools/tools/atcodertools-default.toml\n```\n\n\n## \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e\u4f8b\n`~/.atcodertools.toml`\u306b\u4ee5\u4e0b\u306e\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3059\u308b\u3068\u3001\u30b3\u30fc\u30c9\u30b9\u30bf\u30a4\u30eb\u3084\u3001\u30b3\u30fc\u30c9\u751f\u6210\u5f8c\u306b\u5b9f\u884c\u3059\u308b\u30b3\u30de\u30f3\u30c9\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\n\n\u4ee5\u4e0b\u306f\u3001\u6b21\u306e\u6319\u52d5\u3092\u671f\u5f85\u3059\u308b\u5834\u5408\u306e`~/.atcodertools.toml`\u306e\u4f8b\u3067\u3059\u3002\n\n- `indent_type='space'` \u30b9\u30da\u30fc\u30b9\u304c\u30a4\u30f3\u30c7\u30f3\u30c8\u306b\u4f7f\u308f\u308c\u308b(`'tab'`\u3092\u6307\u5b9a\u3057\u305f\u5834\u5408\u306f\u30bf\u30d6\u304c\u4f7f\u308f\u308c\u308b)\n- `indent_width=4` \u30a4\u30f3\u30c7\u30f3\u30c8\u5e45\u306f4\u3067\u3042\u308b (`indent_width`\u304c\u7121\u6307\u5b9a\u306e\u5834\u5408`4`(nim\u8a00\u8a9e\u4ee5\u5916), `2`(nim\u8a00\u8a9e)\u304c\u898f\u5b9a\u5024\u3068\u3057\u3066\u4f7f\u308f\u308c\u307e\u3059\u3002)\n- `template_file='~/my_template.cpp'` \u30b3\u30fc\u30c9\u751f\u6210\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u3057\u3066`~/my_template.cpp`\u3092\u4f7f\u3046\n- `workspace_dir='~/atcoder-workspace/'` \u30ef\u30fc\u30af\u30b9\u30da\u30fc\u30b9\u306e\u30eb\u30fc\u30c8\u306f `~/atcoder-workspace/`\n- `lang='cpp'` \u8a00\u8a9e\u8a2d\u5b9a\u306f `cpp` (\u63d0\u51fa\u6642\u3082\u3057\u304f\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30b3\u30fc\u30c9\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc\u751f\u6210\u6642\u306b\u4f7f\u308f\u308c\u307e\u3059)\n- `code_generator_file=\"~/custom_code_generator.py\"` \u30ab\u30b9\u30bf\u30e0\u30b3\u30fc\u30c9\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc `~/custom_code_generator.py`\u3092\u6307\u5b9a\u3059\u308b\n- `exec_on_each_problem_dir='clang-format -i ./*.cpp'` `exec_on_contest_dir='touch CMakeLists.txt'`\n - \u554f\u984c\u7528\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u5185\u3067\u6bce\u56de`clang-format`\u3092\u5b9f\u884c\u3057\u3066\u3001\u6700\u5f8c\u306b`CMakeLists.txt`(\u7a7a)\u3092\u30b3\u30f3\u30c6\u30b9\u30c8\u7528\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u751f\u6210\u3059\u308b\n- `download_without_login=false` AtCoder\u306b\u30ed\u30b0\u30a4\u30f3\u305b\u305a\u306b\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u884c\u3046\u6a5f\u80fd\u3092\u4f7f\u308f\u306a\u3044 (\u516c\u958b\u30b3\u30f3\u30c6\u30b9\u30c8\u306b\u5bfe\u3057\u3066\u306e\u307f\u53ef\u80fd)\n- `parallel_download=false` \u30c7\u30fc\u30bf\u306e\u4e26\u5217\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3092\u7121\u52b9\u306b\u3059\u308b\n- `save_no_session_cache=false` \u30ed\u30b0\u30a4\u30f3\u60c5\u5831\u306e\u30af\u30c3\u30ad\u30fc\u3092\u4fdd\u5b58\u3059\u308b\n- `in_example_format=\"in_{}.txt\"` \u30c6\u30b9\u30c8\u30b1\u30fc\u30b9(input)\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3092`in_1.txt, in_2.txt, ...`\u3068\u3059\u308b\n- `out_example_format=\"out_{}.txt\"` \u30c6\u30b9\u30c8\u30b1\u30fc\u30b9(output)\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3092`out_1.txt, out_2.txt, ...`\u3068\u3059\u308b\n\n```toml\n[codestyle]\nindent_type='space' # 'tab' or 'space'\nindent_width=4\ntemplate_file='~/my_template.cpp'\nworkspace_dir='~/atcoder-workspace/'\nlang='cpp' # Check README.md for the supported languages.\ncode_generator_file=\"~/custom_code_generator.py\"\n[postprocess]\nexec_on_each_problem_dir='clang-format -i ./*.cpp'\nexec_on_contest_dir='touch CMakeLists.txt'\n\n[etc]\ndownload_without_login=false\nparallel_download=false\nsave_no_session_cache=false\nin_example_format=\"in_{}.txt\"\nout_example_format=\"out_{}.txt\"\n\n```\n\n### \u30ab\u30b9\u30bf\u30e0\u30b3\u30fc\u30c9\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc\n[\u6a19\u6e96\u306eC++\u30b3\u30fc\u30c9\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc](https://github.com/kyuridenamida/atcoder-tools/blob/master/atcodertools/codegen/code_generators/cpp.py)\u306b\u5023\u3063\u3066\u3001\n`(CogeGenArgs) -> str(\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9)`\u304c\u578b\u3067\u3042\u308b\u3088\u3046\u306a`main`\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u305f.py\u30d5\u30a1\u30a4\u30eb\u3092`code_generator_file`\u3067\u6307\u5b9a\u3059\u308b\u3068\u3001\u30b3\u30fc\u30c9\u751f\u6210\u6642\u306b\u30ab\u30b9\u30bf\u30e0\u30b3\u30fc\u30c9\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc\u3092\u5229\u7528\u3067\u304d\u307e\u3059\u3002\n\n## \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4f8b\n`atcoder-tools gen`\u30b3\u30de\u30f3\u30c9\u306b\u5bfe\u3057`--template`\u3067\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9\u3092\u6307\u5b9a\u3067\u304d\u307e\u3059\u3002\n\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u4ed5\u69d8\u306b\u3064\u3044\u3066\u306f[jinja2](http://jinja.pocoo.org/docs/2.10/) \u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u6e21\u3055\u308c\u308b\u5909\u6570\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002\n\n\n- **prediction_success** \u5165\u529b\u5f62\u5f0f\u306e\u63a8\u8ad6\u306b\u6210\u529f\u3057\u305f\u3068\u304d `True`\u3001 \u5931\u6557\u3057\u305f\u3068\u304d `False`\u304c\u683c\u7d0d\u3055\u308c\u3066\u3044\u308b\u3002\u3053\u306e\u5024\u304c`True`\u306e\u3068\u304d\u6b21\u306e3\u7a2e\u985e\u306e\u5909\u6570\u3082\u5b58\u5728\u3059\u308b\u3053\u3068\u304c\u4fdd\u8a3c\u3055\u308c\u308b\u3002\n - **input_part** input\u7528\u306e\u30b3\u30fc\u30c9\n - **formal_arguments** \u578b\u3064\u304d\u5f15\u6570\u5217\n - **actual_arguments** \u578b\u306a\u3057\u5f15\u6570\u5217\n\n- **mod** \u554f\u984c\u6587\u4e2d\u306b\u5b58\u5728\u3059\u308bmod\u306e\u6574\u6570\u5024\n- **yes_str** \u554f\u984c\u6587\u4e2d\u306b\u5b58\u5728\u3059\u308b yes \u3084 possible \u306a\u3069\u306e\u771f\u3092\u8868\u3057\u305d\u3046\u306a\u6587\u5b57\u5217\u5024\n- **no_str** \u554f\u984c\u6587\u4e2d\u306b\u5b58\u5728\u3059\u308b no \u3084 impossible \u306a\u3069\u306e\u507d\u3092\u8868\u3057\u305d\u3046\u306a\u6587\u5b57\u5217\u5024\n\n```c++\n#include \nusing namespace std;\n\n{% if mod %}\nconst long long MOD = {{ mod }};\n{% endif %}\n{% if yes_str %}\nconst string YES = \"{{ yes_str }}\";\n{% endif %}\n{% if no_str %}\nconst string NO = \"{{ no_str }}\";\n{% endif %}\n\n{% if prediction_success %}\nvoid solve({{ formal_arguments }}){\n\n}\n{% endif %}\n\nint main(){\n {% if prediction_success %}\n {{input_part}}\n solve({{ actual_arguments }});\n {% else %}\n // Failed to predict input format\n {% endif %}\n return 0;\n}\n```\n\n\n## Contribution\n\u6c17\u8efd\u306bPR\u3092\u9001\u3063\u3066\u304f\u3060\u3055\u3044\u3002\n\n## Licence\n\n[MIT](https://github.com/kyuridenamida/ToolsForAtCoder/blob/master/LICENCE)\n\n## Author\n\n[kyuridenamida](https://github.com/kyuridenamida) ([@kyuridenamida](https://twitter.com/kyuridenamida))\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/kyuridenamida/atcoder-tools", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "atcoder-tools", "package_url": "https://pypi.org/project/atcoder-tools/", "platform": "", "project_url": "https://pypi.org/project/atcoder-tools/", "project_urls": { "Homepage": "https://github.com/kyuridenamida/atcoder-tools" }, "release_url": "https://pypi.org/project/atcoder-tools/1.1.6/", "requires_dist": [ "beautifulsoup4", "requests", "colorama", "toml", "jinja2" ], "requires_python": "", "summary": "Convenient modules & tools for AtCoder users, written in Python 3.5", "version": "1.1.6" }, "last_serial": 5933997, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "b746b7c4d3dfbd3c84239dba3a5d22db", "sha256": "bb9dc250837fbfbbef551531024870c74b171518d6ee6e6b7adac359c21c65f3" }, "downloads": -1, "filename": "atcoder_tools-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b746b7c4d3dfbd3c84239dba3a5d22db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32593, "upload_time": "2018-12-25T22:26:18", "url": "https://files.pythonhosted.org/packages/cc/2a/aaabde6dc85c16bdf88773e2a80e46a6a0fc2fd4873fbd813a7112248a1c/atcoder_tools-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "717fa5f0cdfac83887c13ec6f0325ff1", "sha256": "9649158f9b7d9e66c0751947ea662b6f07f44225ad83fef92992371dba22818f" }, "downloads": -1, "filename": "atcoder-tools-1.0.2.tar.gz", "has_sig": false, "md5_digest": "717fa5f0cdfac83887c13ec6f0325ff1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20941, "upload_time": "2018-12-25T22:26:20", "url": "https://files.pythonhosted.org/packages/5d/9c/644756a640fb07f9ccc59ac2487adab21edaf3a44eb30a40482cce436c08/atcoder-tools-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "a43338cb9bc4499e4147f0657e493c30", "sha256": "082fcaf0d0356b3859927227d88b211dcbfe6a71fe382f263ec77e5e9028c4d8" }, "downloads": -1, "filename": "atcoder_tools-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "a43338cb9bc4499e4147f0657e493c30", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32915, "upload_time": "2018-12-27T14:50:15", "url": "https://files.pythonhosted.org/packages/c5/62/61bcbe992d47e9d971cbcba6ae5f6deba37592d82dc96233c39cd9f290e0/atcoder_tools-1.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "963199eecd7dc0ec32ec408174e47a6f", "sha256": "ccb5bc527d03f1f72af2493f06a5d540e054a6e81608936f6cdb3db472f6051e" }, "downloads": -1, "filename": "atcoder-tools-1.0.3.tar.gz", "has_sig": false, "md5_digest": "963199eecd7dc0ec32ec408174e47a6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21275, "upload_time": "2018-12-27T14:50:17", "url": "https://files.pythonhosted.org/packages/52/16/070a5fc1e0d18f20ce4f934de12b20134d20aa83ad9e0ba8058da9dc7134/atcoder-tools-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "d3fa9b5d260079544835d953344a6141", "sha256": "0d8a5b954ef766f0c278919435efa1fca2ff356547de809ac9a505893e3780d4" }, "downloads": -1, "filename": "atcoder_tools-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "d3fa9b5d260079544835d953344a6141", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34276, "upload_time": "2018-12-29T20:20:23", "url": "https://files.pythonhosted.org/packages/76/a2/08a9b7e3ce7fee73d36bbe05b9c2559700fbf43b2de0b290271322ff6f54/atcoder_tools-1.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ac2c4a65a80cac75e36792ab78be77c", "sha256": "29b9a3e8d17ac2119137cc310ff81f19f8b300b0996830d4cac8f1678871c4c8" }, "downloads": -1, "filename": "atcoder-tools-1.0.4.tar.gz", "has_sig": false, "md5_digest": "5ac2c4a65a80cac75e36792ab78be77c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24050, "upload_time": "2018-12-29T20:20:24", "url": "https://files.pythonhosted.org/packages/8b/85/0ab4627cb3baf96147b3160b751a7cec0e192573a9e8d53d770e99594363/atcoder-tools-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "fc658ffdde92ee96095d4fce147afb4b", "sha256": "447e337951e483c9f9816d0eec296780568cdf2cf517e7a9dcfaf05c83aeae9f" }, "downloads": -1, "filename": "atcoder_tools-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "fc658ffdde92ee96095d4fce147afb4b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 46632, "upload_time": "2019-01-06T04:28:14", "url": "https://files.pythonhosted.org/packages/5b/45/fa53fd721c79ee80f2ae994b69e542a26e6e3e34a8649aa089e34c4e93d8/atcoder_tools-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e800a19debc6424326676d297b761c25", "sha256": "0dd949c7072b15cad6dcf417619d9a5cf6da42a8df10881d0e41331c0a3e4f41" }, "downloads": -1, "filename": "atcoder-tools-1.0.5.tar.gz", "has_sig": false, "md5_digest": "e800a19debc6424326676d297b761c25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33118, "upload_time": "2019-01-06T04:28:18", "url": "https://files.pythonhosted.org/packages/68/9d/b1a17e2c770d2d995614c389a8d106a2f75d6c1c7831e771449676531249/atcoder-tools-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "8e27ed13d524af70fe55fe489ab1cb0a", "sha256": "bd16db3c4749a4e37456de93c9e29ac2acdfb16becdd36a175def90bc5a1caef" }, "downloads": -1, "filename": "atcoder_tools-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "8e27ed13d524af70fe55fe489ab1cb0a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49684, "upload_time": "2019-01-12T21:21:40", "url": "https://files.pythonhosted.org/packages/6e/70/2bacd69d46ba9c9773d9e1a0f8506c2202d510de9385b76e28966034616d/atcoder_tools-1.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2a3998c58e05bc2b1b465f6b3494f11e", "sha256": "db5808b59ffdc8ae7cdf9a8dd4ed165c1afada8db58469873e73297118ed6bca" }, "downloads": -1, "filename": "atcoder-tools-1.0.6.tar.gz", "has_sig": false, "md5_digest": "2a3998c58e05bc2b1b465f6b3494f11e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32632, "upload_time": "2019-01-12T21:21:42", "url": "https://files.pythonhosted.org/packages/36/b5/84a8b32da1a475ae36c1bbb784d71a302c16143aa12ea3bae95ee3f6ae26/atcoder-tools-1.0.6.tar.gz" } ], "1.0.6.1": [ { "comment_text": "", "digests": { "md5": "3a66e068789182184155b3c9f2588ffe", "sha256": "a8bb49145d97b450ab0842da3f1672897c1d64466700fbed196a7cea1d7f6e59" }, "downloads": -1, "filename": "atcoder_tools-1.0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3a66e068789182184155b3c9f2588ffe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49681, "upload_time": "2019-01-13T06:59:24", "url": "https://files.pythonhosted.org/packages/1c/09/99f9a26e44333d448c87312b02cfcabc27a6ca37d62cd9f508c67ad672c3/atcoder_tools-1.0.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a61f6fe39bb431d7a695dcd2e09751a7", "sha256": "f3ce78dc173092f9e310d4eb076b57ae9a7657d793723dda94e737b00dbb5ad1" }, "downloads": -1, "filename": "atcoder-tools-1.0.6.1.tar.gz", "has_sig": false, "md5_digest": "a61f6fe39bb431d7a695dcd2e09751a7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32593, "upload_time": "2019-01-13T06:59:25", "url": "https://files.pythonhosted.org/packages/fa/53/7547d465ba5ed8811ace24a46918f5033c9d28938e1bbd8a8f5c04f7dd53/atcoder-tools-1.0.6.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "52405d295f17560533fe580410697127", "sha256": "2ee70264edb18ea48400e4aacaeb5b39f451d16b277475a73b9edc3bee8c2501" }, "downloads": -1, "filename": "atcoder_tools-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "52405d295f17560533fe580410697127", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 51392, "upload_time": "2019-01-17T19:02:14", "url": "https://files.pythonhosted.org/packages/df/1a/7f520979d91699078bbc2ded664eb2cda833c8711ea0a8b515ffe3028de7/atcoder_tools-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "444386cd9972f7d5f1d33a1a4d163a41", "sha256": "99a37fa036ef153e6cf5e88213ef4c7c6fcdf53eaf6032f7ec71df775cae4757" }, "downloads": -1, "filename": "atcoder-tools-1.1.0.tar.gz", "has_sig": false, "md5_digest": "444386cd9972f7d5f1d33a1a4d163a41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33873, "upload_time": "2019-01-17T19:02:16", "url": "https://files.pythonhosted.org/packages/a8/24/8c56751cb4ca462203bfd14b61f413d5d2a5f7819cf2b1b112a947994a9c/atcoder-tools-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "f9e56df158304d82f0b16322e6d9ea1c", "sha256": "b966be8105a5f0eb6b2e2babd1e8956b00b9e1cf1ef58d09c22081a8d3dfb9c2" }, "downloads": -1, "filename": "atcoder_tools-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f9e56df158304d82f0b16322e6d9ea1c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56657, "upload_time": "2019-02-14T13:30:52", "url": "https://files.pythonhosted.org/packages/72/71/2a3be3ec6b28087d38236d92c86bdaa2c491ff2cf3a10398b6542f350498/atcoder_tools-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6257a8865cce6aaa61251debde3c11b2", "sha256": "373b765298fa1650f372a9f6b3b196ad29e1d2ae9b33729f87ce009fd11ac754" }, "downloads": -1, "filename": "atcoder-tools-1.1.1.tar.gz", "has_sig": false, "md5_digest": "6257a8865cce6aaa61251debde3c11b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36633, "upload_time": "2019-02-14T13:30:54", "url": "https://files.pythonhosted.org/packages/ee/df/59d2fd78571f37f25e4844f18eaa7d2cb26357d5727c070d6bd8cc5f7ce9/atcoder-tools-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "6ce5c6e8fb8ffc0ba55b0e66ee79fba1", "sha256": "77058a192bcbfd6f60ad996b03a34d1b8129b3e29b7c3bc01aa134a1df8edd48" }, "downloads": -1, "filename": "atcoder_tools-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6ce5c6e8fb8ffc0ba55b0e66ee79fba1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61726, "upload_time": "2019-02-20T16:22:49", "url": "https://files.pythonhosted.org/packages/37/c5/4c5f6f3e775a4c9f96f37d1fed217dcd34b72aebb13c93c3fd9a1572ecf4/atcoder_tools-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bce5a4af6aaaab7bb17ac1d51591578", "sha256": "16d125d816db8eff3b69247a336ab2bf8c9671efa290e3c16f27adc1c2739294" }, "downloads": -1, "filename": "atcoder-tools-1.1.2.tar.gz", "has_sig": false, "md5_digest": "9bce5a4af6aaaab7bb17ac1d51591578", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40430, "upload_time": "2019-02-20T16:22:51", "url": "https://files.pythonhosted.org/packages/47/89/2b0797dea2262b0c6819812031002c4d885684ae83d80d34c7d3fe33b49d/atcoder-tools-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "691075ae1c83068710c45000f6b1ab35", "sha256": "1d6f0cac8c15730aeaca3bd242aead90c3f3820f013a1003a8736ce139a43546" }, "downloads": -1, "filename": "atcoder_tools-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "691075ae1c83068710c45000f6b1ab35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 62158, "upload_time": "2019-03-05T17:31:32", "url": "https://files.pythonhosted.org/packages/d8/1f/52f2e50465b6dce6cf881789a17b2aee4a7e649ec2e4799352359d047a0e/atcoder_tools-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e955579d41b8b54e6e8f4593433e7ca2", "sha256": "d653367b6523a727e35c1cc256a672cfa0b90307cd6fd709b509caace74e126c" }, "downloads": -1, "filename": "atcoder-tools-1.1.3.tar.gz", "has_sig": false, "md5_digest": "e955579d41b8b54e6e8f4593433e7ca2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44068, "upload_time": "2019-03-05T17:31:35", "url": "https://files.pythonhosted.org/packages/29/58/16bbf7dddda7a29db0c672095f8f0e77bbaf83721f325d127a510e36095d/atcoder-tools-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "abe1a9368a4769743e5f66aae6e9cb57", "sha256": "3d5078d2534f234c18a6d1366c9113ad654248d83349042a258d9adc3afb5388" }, "downloads": -1, "filename": "atcoder_tools-1.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "abe1a9368a4769743e5f66aae6e9cb57", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 62700, "upload_time": "2019-04-10T15:35:12", "url": "https://files.pythonhosted.org/packages/c0/8d/f3fc06cfc842cd8291b2427a0c772575e4b66323809bfe9704e228797751/atcoder_tools-1.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76449d55e76c4716ed589fb5f1091531", "sha256": "08dc053a494dd1230580eba0c4cebbd557841368341e72210c368f20e7ae91eb" }, "downloads": -1, "filename": "atcoder-tools-1.1.4.tar.gz", "has_sig": false, "md5_digest": "76449d55e76c4716ed589fb5f1091531", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41102, "upload_time": "2019-04-10T15:35:14", "url": "https://files.pythonhosted.org/packages/f0/4e/e3d5733c044db4c22ff60b9c6691d0a8ca6cb2b9ebd1b41d3fad06888b68/atcoder-tools-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "e05c77bdb1b1b524be20d9edd164fac2", "sha256": "d48b03de404f874ada96ad75c62d88b627d69588a0d92a371099a9566a01b53a" }, "downloads": -1, "filename": "atcoder_tools-1.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "e05c77bdb1b1b524be20d9edd164fac2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 68550, "upload_time": "2019-08-19T18:18:45", "url": "https://files.pythonhosted.org/packages/e7/73/837ef2b714d6dfcaad2a33d1a823344f97d670fb1a18c39a8ee5989d4768/atcoder_tools-1.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "404c74cb06ba742fba364e1259de336d", "sha256": "f987f127ad98465bfcd60de0e135255ab6fbeeefc268c4d98047d28892e1c2a4" }, "downloads": -1, "filename": "atcoder-tools-1.1.5.tar.gz", "has_sig": false, "md5_digest": "404c74cb06ba742fba364e1259de336d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43448, "upload_time": "2019-08-19T18:18:47", "url": "https://files.pythonhosted.org/packages/78/17/3e4b53911a471820f0d6f2ccd0eef621fc3916a4f73a9878be503f5eb490/atcoder-tools-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "0453c9452454541549beb65649bbe18d", "sha256": "4a414fbef6477c4418d8fc3e6dffd7bff56115efdcd697d34fd3c6b4cf72a9c9" }, "downloads": -1, "filename": "atcoder_tools-1.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "0453c9452454541549beb65649bbe18d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 73951, "upload_time": "2019-10-06T06:25:05", "url": "https://files.pythonhosted.org/packages/0b/33/eeaf1fd34f1fc56ed66faa603d880774f04ce38a4d60542116c87b38483e/atcoder_tools-1.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a23194fb7a2a5852abcc1a3b0749a01", "sha256": "3927c1b6a823224d1275f858f253838ae2feb595aafa21f6e0ee4415a73f0d64" }, "downloads": -1, "filename": "atcoder-tools-1.1.6.tar.gz", "has_sig": false, "md5_digest": "7a23194fb7a2a5852abcc1a3b0749a01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46538, "upload_time": "2019-10-06T06:25:08", "url": "https://files.pythonhosted.org/packages/83/a7/70eb5b28e7e3f31601a845d5b3f33db486afeecde8491cdb790c4243d8bc/atcoder-tools-1.1.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0453c9452454541549beb65649bbe18d", "sha256": "4a414fbef6477c4418d8fc3e6dffd7bff56115efdcd697d34fd3c6b4cf72a9c9" }, "downloads": -1, "filename": "atcoder_tools-1.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "0453c9452454541549beb65649bbe18d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 73951, "upload_time": "2019-10-06T06:25:05", "url": "https://files.pythonhosted.org/packages/0b/33/eeaf1fd34f1fc56ed66faa603d880774f04ce38a4d60542116c87b38483e/atcoder_tools-1.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a23194fb7a2a5852abcc1a3b0749a01", "sha256": "3927c1b6a823224d1275f858f253838ae2feb595aafa21f6e0ee4415a73f0d64" }, "downloads": -1, "filename": "atcoder-tools-1.1.6.tar.gz", "has_sig": false, "md5_digest": "7a23194fb7a2a5852abcc1a3b0749a01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46538, "upload_time": "2019-10-06T06:25:08", "url": "https://files.pythonhosted.org/packages/83/a7/70eb5b28e7e3f31601a845d5b3f33db486afeecde8491cdb790c4243d8bc/atcoder-tools-1.1.6.tar.gz" } ] }