{ "info": { "author": "F\u00e1bio Mac\u00eado Mendes", "author_email": "fabiomacedomendes@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: POSIX", "Programming Language :: Python", "Topic :: Software Development :: Libraries" ], "description": ".. image:: https://travis-ci.org/fabiommendes/python-boilerplate.svg?branch=master\n :target: https://travis-ci.org/fabiommendes/python-boilerplate\n\n.. image:: https://coveralls.io/repos/github/fabiommendes/python-boilerplate/badge.svg?branch=master\n :target: https://coveralls.io/github/fabiommendes/python-boilerplate?branch=master\n\n\nStarting a new Python project from the scratch is boring and error prone:\n* First create a setup.py script\n* Create documentation\n* Provide installation instructions\n* A README file\n* Write tests\n* etc, etc, etc.\n\nThis time-consuming and error prone work gives little satisfaction, but is\nnecessary to make your project a good citizen in the open source community.\n\npython-boilerplate produces skeletons for your Python projects so you can get\nup and running fast. It is influenced by this blog post:\nhttp://jeffknupp.com/blog/2013/08/16/open-sourcing-a-python-project-the-right-way/,\nalthough we do not follow these recommendations by the letter.\n\n\nThe filesystem structure\n========================\n\nWe start a python-boilerplate skeleton by calling the ``python-boilerplate init``\ncommand on the root directory of your project. It creates the following tree::\n\n .\n |- .coveragerc\n |- .gitignore\n |- .travis.yml\n |- LICENSE\n |- MANIFEST.in\n |- INSTALL.rst\n |- README.rst\n |- VERSION\n |- requirements.txt\n |- setup.py\n |- tasks.py\n |- tox.ini\n |- docs/\n | |- index.rst\n | |- apidoc.rst\n | |- changelog.rst\n | | ...\n | |- conf.py\n | |- make.bat\n | |- Makefile\n | |- _static/*\n | \\- _templates/*\n \\- src/\n \\- \n |- __init__.py\n |- __main__.py\n |- __meta__.py\n |- .py\n \\- tests/\n |- __init__.py\n |- __main__.py\n \\- test_.py\n\n\nsetup.py\n--------\n\nThe main entry point for installation and management of your project. We provide\na minimum working script based on setuptools. In order to avoid duplication of\nwork, the setup.py script reuses the project description from README.rst and\nuses the version string in a separate VERSION file. Users still have\nto edit this file and provide the short description of the project.\n\nDon't forget to ``python setup.py register`` your project to PyPI before someone\ntakes it name!\n\n\nsrc/*\n-----\n\npython-boilerplate puts all source code for your project under the ``src/``\nfolder. This contrasts with the other typical approach of leaving the python\npackages directly in the root of the the source tree. We believe that a separate\nsrc folder is more organized and manageable in the long run.\n\n\nsrc//tests/*\n---------------------\n\nWe also create a \".tests\" module for unit testing and distribute it\nwith the main package. The drawback of this approach is a slightly larger\ndistribution. In most systems, this small price is greatly offset by the ability\nto ask users to easily run the test suite when dealing with bug reports.\npython-boilerplate creates a ``__main__.py`` file in the tests package that\nenable anyone can run the test suite simply by calling ``python -m .tests``.\n\ndocs/*\n------\n\npython-boilerplate creates the skeleton for a Sphinx_-based documentation. The\ndocumentation reuses both the README.rst and INSTALL.rst files. In most cases,\nit is probably a good idea to create a relatively small README.rst with a\nsuccinct overview of your project and leave most details of the documentation to\nspecific files inside the ``docs/`` directory.\n\nThe README.rst file in python-boilerplate itself is perhaps too big ;-)\n\n_ Sphinx: https://sphinx-doc.org\n\n\nREADME.rst and INSTALL.rst\n--------------------------\n\nWe provide a default INSTALL.rst file with generic installation instructions for\nPython packages. Unless your project requires something fancy, this probably can\nbe left as is.\n\nThe README.rst file, however, provides a detailed overview of your project.\nYou should edit this file to provide a meaningful description, otherwise a not so\nflattering default will be used. The contents of README.rst are also displayed in\nthe index page of the project's documentation.\n\n\nVERSION\n-------\n\nYour project's version is conveniently centralized in a single file. The\nsetup.py script uses this value to register you package and it also saves\nthe correct version in the .__version__ attribute in your module.\n\nYou may bump version numbers using an invoke task::\n\n $ inv bump-version\n\nThis method assumes that the version string is in the form \"..\".\n\nrequirements.txt\n----------------\n\nThe requirements.txt uses the ``- e .`` directive to tell pip to search for the\nrequirements in the setup.py script. As a general rule, dependencies should be\nspecified only in the ``install_requires`` flag in your setup.py.\n\nYou may want to use your requirements.txt to freeze packages to specific\nversions by adding lines such as::\n\n my-package==1.2.3\n\nFreezing makes sense for packages that are meant to run only on their own private\nenvironments such as a Django project running in it own virtualenv or docker\ncontainer. Avoid freezing package versions in your main Python installation.\n\nMANIFEST.in\n-----------\n\nDefine files to be included in the source distributions created by setuptools.\n\nLICENSE\n-------\n\nPython boilerplate accepts the most common open source licenses (or at least it\nshould). If the license you want to use is not supported, we gladly accept\npatches!\n\n.gitignore\n----------\n\nThe default .gitignore excludes python bytecode and all build directories.\n\n\nTasks\n-----\n\nThe ``tasks.py`` define some invoke tasks for your project. You can define new\ntasks by defining python functions just as the example given in this file. Think\nof ``tasks.py`` as a Python replacement of a Makefile: it is used to define\ncommands that automate repetitive tasks and chores. We define a few general\npurpose tasks. They are executed using the inv(oke) command.\n\n``inv test``:\n Runs py.test with the main test suite.\n``inv coverage``:\n Runs py.test and display a coverage report.\n``inv build``:\n Calls setup.py build and also builds the documentation.\n``inv bump-version``:\n Controls the version number in the VERSION file.\n\n\n\nContinuous integration\n----------------------\n\npython-boilerplate ships a working ``.travis.yml`` file and a ``tox.ini``. You\ncan use tox to run the test suite for different Python versions locally (but\nyou'll need several working interpreters simultaneously installed in your\nsystem).\n\nAssuming that you are hosting your code at Github, enable Travis-CI integration\nunder \"Settings > Integrations and services\" option in your main repository\npage. Also enable \"Coveralls\" integration to have good quality reports on code\ncoverage evolution.\n\nYou need to enable support for your repository both in `Travis-CI`\nand `Coveralls` websites. Continuous integration tasks\nwill run every time you *push* something new to Github.\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/fabiommendes/python-boilerplate", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "python-boilerplate", "package_url": "https://pypi.org/project/python-boilerplate/", "platform": "any", "project_url": "https://pypi.org/project/python-boilerplate/", "project_urls": { "Homepage": "https://github.com/fabiommendes/python-boilerplate" }, "release_url": "https://pypi.org/project/python-boilerplate/0.4.10/", "requires_dist": null, "requires_python": "", "summary": "Creates the skeleton of your Python project.", "version": "0.4.10" }, "last_serial": 2388715, "releases": { "0.2.2": [ { "comment_text": "", "digests": { "md5": "b2d0291b251ab384186fc8e22877b86c", "sha256": "d08c9e8c17bc98ab4138427fd4171293a29f75adbf55e23728a4b500e7b8508e" }, "downloads": -1, "filename": "python-boilerplate-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b2d0291b251ab384186fc8e22877b86c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23157, "upload_time": "2016-03-30T14:39:44", "url": "https://files.pythonhosted.org/packages/a9/d3/9aa0ab369b8e5b73e874ee01e5adbf88a3abede61a82bf9be0056b2045ef/python-boilerplate-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "c170e9dea66bddc8c7d71d40893997dc", "sha256": "c19478826555f92842fdc22188deba81c469a23395fc9f9f849f3be0b1badd2e" }, "downloads": -1, "filename": "python-boilerplate-0.2.3.tar.gz", "has_sig": false, "md5_digest": "c170e9dea66bddc8c7d71d40893997dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23177, "upload_time": "2016-06-22T23:34:25", "url": "https://files.pythonhosted.org/packages/34/23/d6bf7e96197e8129340e2ed77fdcaf350ed0892c15145d0aef3a07c8b416/python-boilerplate-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d5e4b2991437626d52d013c58b325a0a", "sha256": "bfdc70d64f50f9f448589e07fa4601deab51f381758e0b027df7056edf2dc9aa" }, "downloads": -1, "filename": "python-boilerplate-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d5e4b2991437626d52d013c58b325a0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23487, "upload_time": "2016-06-23T00:33:18", "url": "https://files.pythonhosted.org/packages/65/a5/28d7a8b17c776f3e4399fe3c20c9b9c6ae3f70bb480a724c8e6bc3ae3769/python-boilerplate-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7b6b49d3e6dd723cfd8ffac9ca541ac6", "sha256": "e38bf4c8890916d93a0c9f98c9dd3da76603e436e97f91bf49d3379e15da10ec" }, "downloads": -1, "filename": "python-boilerplate-0.3.0.tar.gz", "has_sig": false, "md5_digest": "7b6b49d3e6dd723cfd8ffac9ca541ac6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26121, "upload_time": "2016-07-08T20:08:53", "url": "https://files.pythonhosted.org/packages/37/bc/650224e6a4ab74c2cfbcfed62f76c125bdd76e6555a4006c01e95d8d5a45/python-boilerplate-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "cf7a1318ad5bce8a2f1fa8dd139db20e", "sha256": "eff0596ded06961ca1c7b440127a6a533e2c723abd12b00a4cb4d749f49d7772" }, "downloads": -1, "filename": "python-boilerplate-0.3.1.tar.gz", "has_sig": false, "md5_digest": "cf7a1318ad5bce8a2f1fa8dd139db20e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26446, "upload_time": "2016-07-08T21:19:50", "url": "https://files.pythonhosted.org/packages/4a/3c/d5730b98250aa63893e4bd7fd6b11a95cf7585e5549195743273c005055e/python-boilerplate-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "2d7ee0c9d72919738b764ea135d67bee", "sha256": "3d6c8d51ce69be8d18338c699a9dcfde5457b1c85a991bf4aa6b61859e32397f" }, "downloads": -1, "filename": "python-boilerplate-0.3.2.tar.gz", "has_sig": false, "md5_digest": "2d7ee0c9d72919738b764ea135d67bee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26805, "upload_time": "2016-08-24T14:13:26", "url": "https://files.pythonhosted.org/packages/68/5d/16e120f6a2f5afcf11f12df78ddb58c7f5bb7a8f1ae58dac93ced60a5e2e/python-boilerplate-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "d758ee85e3ec0fa50a49165e4766abca", "sha256": "05c537f915f0f1a12fa0efffac3790f4943bc631410573183ffc671f80756125" }, "downloads": -1, "filename": "python-boilerplate-0.4.0.tar.gz", "has_sig": false, "md5_digest": "d758ee85e3ec0fa50a49165e4766abca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28711, "upload_time": "2016-08-25T21:57:20", "url": "https://files.pythonhosted.org/packages/c5/a0/94fdf71fec00933ff9082b7f9f0783e5cb2abd7ccc93363e689c33bbc6d7/python-boilerplate-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "53aba2f9f8f733d04b311f270b71f1a2", "sha256": "f3b90c892fd8079a50ce77fef75642bfe0c5ce70b4fb0ebb24e1b066c8f104b1" }, "downloads": -1, "filename": "python-boilerplate-0.4.1.tar.gz", "has_sig": false, "md5_digest": "53aba2f9f8f733d04b311f270b71f1a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29159, "upload_time": "2016-08-26T16:34:48", "url": "https://files.pythonhosted.org/packages/f8/b2/8c4e1e266d44f4f79c2d31e3d6cf510115606908c2113882a22071a55472/python-boilerplate-0.4.1.tar.gz" } ], "0.4.10": [ { "comment_text": "", "digests": { "md5": "5c081261ab81434929ab8829258fb48f", "sha256": "0f91668f491c7492524494895943597d16cce4499ddd11bc02d086da6e9be127" }, "downloads": -1, "filename": "python-boilerplate-0.4.10.tar.gz", "has_sig": false, "md5_digest": "5c081261ab81434929ab8829258fb48f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37375, "upload_time": "2016-10-08T20:49:20", "url": "https://files.pythonhosted.org/packages/b9/a4/e482de9298377cee20aee7b5062fb9a0867358798bf5a6cb68aff1948abd/python-boilerplate-0.4.10.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "c92f8e44e19aa601bdb0d61c740afb01", "sha256": "ad9c1dea3a15c206842c898341cb25863eea6c13ad34711aa86380231d5104bd" }, "downloads": -1, "filename": "python-boilerplate-0.4.2.tar.gz", "has_sig": false, "md5_digest": "c92f8e44e19aa601bdb0d61c740afb01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31172, "upload_time": "2016-09-13T22:46:06", "url": "https://files.pythonhosted.org/packages/70/3a/0a5b662103756d7fd43373b0bb133bb5fba204dcee744a534bc6159f22af/python-boilerplate-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "58de99182bdde72f5b9cfa36d8a62764", "sha256": "5209f670e2ba0230ebe21643f5f27faeb78cd8912c2fad34741d310e07e59045" }, "downloads": -1, "filename": "python-boilerplate-0.4.3.tar.gz", "has_sig": false, "md5_digest": "58de99182bdde72f5b9cfa36d8a62764", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31077, "upload_time": "2016-09-13T22:57:19", "url": "https://files.pythonhosted.org/packages/76/2c/1e8d9a50229e3713bba2bd8e6511a0a31bed07dd7c7c59e7a3fe4735abd9/python-boilerplate-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "78599c8f7bd074a1b691f347389e66ac", "sha256": "dbac33f56b859eb82b81e6379ea1d245cf4005a19bad4e086e2e337a7b15c196" }, "downloads": -1, "filename": "python-boilerplate-0.4.4.tar.gz", "has_sig": false, "md5_digest": "78599c8f7bd074a1b691f347389e66ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31163, "upload_time": "2016-09-13T23:03:03", "url": "https://files.pythonhosted.org/packages/06/03/c2ad17307d0c6d58b11e0b7024f6130352c181ef96934ae22e913d81febc/python-boilerplate-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "37666c76991772d447d9e6c0b318fd53", "sha256": "744e796c8d8521477445263f114ba03f79bfa39b09452b9dbf44b8ceaaed3673" }, "downloads": -1, "filename": "python-boilerplate-0.4.5.tar.gz", "has_sig": false, "md5_digest": "37666c76991772d447d9e6c0b318fd53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32540, "upload_time": "2016-09-16T16:52:19", "url": "https://files.pythonhosted.org/packages/0c/18/395a2549494a244fcfcafaeb084101d8e758590fa5ce0e99d56de108d898/python-boilerplate-0.4.5.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "42f17c67ad04e252ac70d681e7f73212", "sha256": "6d74ad583b5606275f3913fdc2424deb93b0d4e7ca06b1b29a6fd18c74c8d43f" }, "downloads": -1, "filename": "python-boilerplate-0.4.7.tar.gz", "has_sig": false, "md5_digest": "42f17c67ad04e252ac70d681e7f73212", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35423, "upload_time": "2016-09-17T21:58:27", "url": "https://files.pythonhosted.org/packages/b7/a7/d195e591d763f0bdce405b358d9da860d06a1c2485f6b25509a23b2c409c/python-boilerplate-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "51b3f874a7c35fc5088cfd8795f12f13", "sha256": "f60609f89ce0babe049e8de087aabb5aa3b7d8f8ec08e53464a602021e1f76d8" }, "downloads": -1, "filename": "python-boilerplate-0.4.8.tar.gz", "has_sig": false, "md5_digest": "51b3f874a7c35fc5088cfd8795f12f13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 36325, "upload_time": "2016-09-21T21:34:54", "url": "https://files.pythonhosted.org/packages/ed/e1/aee9a5f5d8b187220361e98089330010ab2c9bb0a3686155d89423a9ed7d/python-boilerplate-0.4.8.tar.gz" } ], "0.4.9": [ { "comment_text": "", "digests": { "md5": "d82053042a2060f7262bb4f0fe88f16c", "sha256": "df9f638b26bd03acbff41603fafe69b7d8ec7f96826b1747b4e3f742a79a5b8c" }, "downloads": -1, "filename": "python-boilerplate-0.4.9.tar.gz", "has_sig": false, "md5_digest": "d82053042a2060f7262bb4f0fe88f16c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37250, "upload_time": "2016-09-22T23:20:57", "url": "https://files.pythonhosted.org/packages/ff/be/884c98c5ce7afe9658ef2845d686c9ae2150c09e952df9b566f131f727e1/python-boilerplate-0.4.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5c081261ab81434929ab8829258fb48f", "sha256": "0f91668f491c7492524494895943597d16cce4499ddd11bc02d086da6e9be127" }, "downloads": -1, "filename": "python-boilerplate-0.4.10.tar.gz", "has_sig": false, "md5_digest": "5c081261ab81434929ab8829258fb48f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37375, "upload_time": "2016-10-08T20:49:20", "url": "https://files.pythonhosted.org/packages/b9/a4/e482de9298377cee20aee7b5062fb9a0867358798bf5a6cb68aff1948abd/python-boilerplate-0.4.10.tar.gz" } ] }