{ "info": { "author": "Joachim Jablon", "author_email": "ewjoachim@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "#####\nPyler\n#####\n\n.. image:: https://badge.fury.io/py/pyler.svg\n :target: https://badge.fury.io/py/pyler\n :alt: PyPI\n\n.. image:: https://travis-ci.org/ewjoachim/pyler.svg?branch=master\n :target: https://travis-ci.org/ewjoachim/pyler\n :alt: Travis\n\n.. image:: https://ci.appveyor.com/api/projects/status/m682wag0w47yexyw?svg=true\n :target: https://ci.appveyor.com/project/ewjoachim/pyler\n :alt: AppVeyor\n\n.. image:: https://img.shields.io/codecov/c/github/ewjoachim/pyler/master.svg\n :target: https://codecov.io/github/ewjoachim/pyler?branch=master\n :alt: Codecov\n\nPyler is a lib that helps tackling Project Euler problems using Python\n\nHow ?\n=====\n\n.. code-block:: console\n\n $ pip install pyler\n\n\nGenerate a file\n---------------\n\n.. code-block:: console\n\n # generates the file for problem 1\n $ pyler gen 1\n # generates the file for problems 1 to 10, 14 and 17 to 24\n $ pyler gen 1-10,14,17-24\n # generates the first not-yet-generated problem\n $ pyler gen next\n # generates all available problems\n $ pyler gen all\n\n\nYou get the idea !\n\nThis will generate a file that has more or less everything for beginning the real work.\nJust fill the variables and code your solution into solver.\n\n.. code-block:: python\n\n from pyler import EulerProblem\n\n\n class Problem0001(EulerProblem):\n \"\"\"\n If we list all the natural numbers below 10 that are multiples of 3 or 5, we\n get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the\n multiples of 3 or 5 below 1000.\n \"\"\"\n problem_id = 1\n simple_input = 0\n simple_output = 1\n real_input = 0\n\n def solver(self, input_val):\n return 0\n\n if __name__ == '__main__':\n import unittest\n unittest.main()\n\nYou can change the path where the files are being generated using ``--path`` and\nthe template used with ``--template=path/to/template.py``, the template file must be compatible\nwith Python's [``.format``](https://pyformat.info/) function and will recieve 2 variables : ``doc``\nand ``problem_id``\n\nBTW : yes, the docstring is scraped from the website.\n\nTest your solution\n------------------\n\n.. code-block:: console\n\n # Tests the implementation of the first problem\n $ pyler test 1\n # Well I'm sure you know what this does\n $ pyler test 1-10,14,17-24\n # Tests the last problem\n $ pyler test last\n\n\nYou may also use unittest or the testing tool of your choice that accept unittest TestCases.\nCalling Python on the problem file directly will also launch the tests.\n\nLaunching the tests on your solution module will test your solution for :\n\n* The simple test case (the one that's given in the statement)\n* The real test case (it will check on the real website to do so). The first\n time, it will ask for your credentials (stored in a local file\n ``.pyler.conf``) and now and then, it will ask you to solve the captchas. If\n you have already validated the problem, it will check the solution from the\n page. Otherwise, it will submit the solution for you.\n* A test ensuring that your implementation takes less than 1 minute. If you're\n not using Windows, it will stop at 1 minute. Otherwise, it will fail when\n the computation is over.\n\nYou can use any number of ``--only=x`` and ``--skip=x`` flags with x\nbeing ``simple``, ``real``, ``time``.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ewjoachim/pyler", "keywords": "project-euler,tdd", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyler", "package_url": "https://pypi.org/project/pyler/", "platform": "", "project_url": "https://pypi.org/project/pyler/", "project_urls": { "Homepage": "https://github.com/ewjoachim/pyler" }, "release_url": "https://pypi.org/project/pyler/0.2.0/", "requires_dist": [ "beautifulsoup4", "requests", "wheel; extra == 'dev'", "sphinx; extra == 'dev'", "tox; extra == 'dev'", "zest.releaser[recommended]; extra == 'dev'", "prospector[with_pyroma]; extra == 'dev'", "pytest; extra == 'tests'", "pytest-cov; extra == 'tests'", "pytest-mock; extra == 'tests'" ], "requires_python": "", "summary": "Helper architecture for tackling Project Euler problems", "version": "0.2.0" }, "last_serial": 3143649, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "bee94628305603769574aa9a7084c9fd", "sha256": "b889b9a2fb613b413758c43e46859726f9b234e2141938cb52055d916e1d8efd" }, "downloads": -1, "filename": "pyler-0.1.0.tar.gz", "has_sig": false, "md5_digest": "bee94628305603769574aa9a7084c9fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7827, "upload_time": "2015-11-08T23:31:51", "url": "https://files.pythonhosted.org/packages/f7/29/430cb45ad25311366b3c2e2b1582b75914cbac2a1c25e1aa45c2649cd7c8/pyler-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9207f10807c189e6ab13d74f3d3bf9fa", "sha256": "18bf6bce4f7049b004e68495f991db912fccea6722763e784af57441337035b2" }, "downloads": -1, "filename": "pyler-0.1.1.tar.gz", "has_sig": false, "md5_digest": "9207f10807c189e6ab13d74f3d3bf9fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7832, "upload_time": "2015-11-08T23:47:48", "url": "https://files.pythonhosted.org/packages/02/cf/45d0c01319e1258ea81dffe8c2e0ff0636a640baa222566f837dac51b6f9/pyler-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "95f65e60526d340b9d989e2598287e4c", "sha256": "3b2e2eb2c1ae0b9d16c6c2fda9b166f63514ac0be2696e355e473f951bda3463" }, "downloads": -1, "filename": "pyler-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "95f65e60526d340b9d989e2598287e4c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5390, "upload_time": "2017-09-02T21:27:54", "url": "https://files.pythonhosted.org/packages/f8/4b/56b17bea4c62784bd96c3fa87301d1d0eddac0ba7eb34a5cdcbe71d1fbd7/pyler-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f520ecdccd75cd07b64c96f5e6cb7f11", "sha256": "f4c5a99ef2b5ca3db4371c8107f66ba9985d0089fb94b17f652ca87b5a26f24d" }, "downloads": -1, "filename": "pyler-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f520ecdccd75cd07b64c96f5e6cb7f11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8030, "upload_time": "2017-09-02T21:27:55", "url": "https://files.pythonhosted.org/packages/74/d5/5b85750f13e45aea2881fb839e09d449c80c5115358410b7239b9578e5cd/pyler-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "95f65e60526d340b9d989e2598287e4c", "sha256": "3b2e2eb2c1ae0b9d16c6c2fda9b166f63514ac0be2696e355e473f951bda3463" }, "downloads": -1, "filename": "pyler-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "95f65e60526d340b9d989e2598287e4c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5390, "upload_time": "2017-09-02T21:27:54", "url": "https://files.pythonhosted.org/packages/f8/4b/56b17bea4c62784bd96c3fa87301d1d0eddac0ba7eb34a5cdcbe71d1fbd7/pyler-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f520ecdccd75cd07b64c96f5e6cb7f11", "sha256": "f4c5a99ef2b5ca3db4371c8107f66ba9985d0089fb94b17f652ca87b5a26f24d" }, "downloads": -1, "filename": "pyler-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f520ecdccd75cd07b64c96f5e6cb7f11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8030, "upload_time": "2017-09-02T21:27:55", "url": "https://files.pythonhosted.org/packages/74/d5/5b85750f13e45aea2881fb839e09d449c80c5115358410b7239b9578e5cd/pyler-0.2.0.tar.gz" } ] }