{ "info": { "author": "sonntagsgesicht", "author_email": "sonntagsgesicht@icloud.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Education", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Education", "Topic :: Software Development" ], "description": "\n\nPython library *auxilium*\n-------------------------\n\n.. image:: https://img.shields.io/codeship/5b8cc2e0-ac1d-0137-31a2-06d5e6117547/master.svg\n :target: https://codeship.com//projects/362165\n :alt: Codeship\n\n.. image:: https://travis-ci.org/sonntagsgesicht/auxilium.svg?branch=master\n :target: https://travis-ci.org/sonntagsgesicht/auxilium\n :alt: Travis ci\n\n.. image:: https://img.shields.io/readthedocs/auxilium\n :target: http://auxilium.readthedocs.io\n :alt: Read the Docs\n\n.. image:: https://img.shields.io/codefactor/grade/github/sonntagsgesicht/auxilium/master\n :target: https://www.codefactor.io/repository/github/sonntagsgesicht/auxilium\n :alt: CodeFactor Grade\n\n.. image:: https://img.shields.io/codeclimate/maintainability/sonntagsgesicht/auxilium\n :target: https://codeclimate.com/github/sonntagsgesicht/auxilium/maintainability\n :alt: Code Climate maintainability\n\n.. image:: https://img.shields.io/codecov/c/github/sonntagsgesicht/auxilium\n :target: https://codecov.io/gh/sonntagsgesicht/auxilium\n :alt: Codecov\n\n.. image:: https://img.shields.io/lgtm/grade/python/g/sonntagsgesicht/auxilium.svg\n :target: https://lgtm.com/projects/g/sonntagsgesicht/auxilium/context:python/\n :alt: lgtm grade\n\n.. image:: https://img.shields.io/lgtm/alerts/g/sonntagsgesicht/auxilium.svg\n :target: https://lgtm.com/projects/g/sonntagsgesicht/auxilium/alerts/\n :alt: total lgtm alerts\n\n.. image:: https://img.shields.io/github/license/sonntagsgesicht/auxilium\n :target: https://github.com/sonntagsgesicht/auxilium/raw/master/LICENSE\n :alt: GitHub\n\n.. image:: https://img.shields.io/github/release/sonntagsgesicht/auxilium?label=github\n :target: https://github.com/sonntagsgesicht/auxilium/releases\n :alt: GitHub release\n\n.. image:: https://img.shields.io/pypi/v/auxilium\n :target: https://pypi.org/project/auxilium/\n :alt: PyPI Version\n\n.. image:: https://img.shields.io/pypi/pyversions/auxilium\n :target: https://pypi.org/project/auxilium/\n :alt: PyPI - Python Version\n\n.. image:: https://img.shields.io/pypi/dm/auxilium\n :target: https://pypi.org/project/auxilium/\n :alt: PyPI Downloads\n\nA Python project for an automated test and deploy toolkit - 100% reusable.\n\n\nCode, Documentation and Tests\n-----------------------------\n\nModern software development comes as a triple of\n\n .. image:: ../pix/code-test-doc.png\n :alt: **code is for machines** // **tests links docs and code** // **docs are for humans**\n\n * The **code** is the actual software program or library which can executed or invoked.\n\n * The **documentation** should give an introducing the idea and mission, guide how to use it, describe functionality and features.\n\n * Finally, intensive **tests** increases the confidence that the documented functionality is correctly implemented.\n\n\nTo support this **auxilium** is designed to build, to auto-doc, to test and to deploy\nsmall to medium size Python projects in **3 simple steps**.\n\n 1. copy your **source code** into a boilerplate project structure\n\n 2. write useful **documentation** in your python source code doc strings\n\n 3. add as many as possible **test cases** in a designated test directory structure\n\nOnce setup up, **auxilium** provides - out of the box - tools\nto build a ci/cd (continuous integration/continuous deployment) framework with\n\n * conventions on how the project is structured, i.e. where to find source, test and doc files\n\n * provides useful template structure of files which can be easy modified and extended\n\n * keeps always a single source of truth for project information (like version number)\n\n * sets up a clear and straight structure of the project as well as the corresponding documentation\n\n * minimises the places to edit, e.g. for the documentation there are by default only thre files to edit\n\n * comes with a shell script to trigger plenty test and analysis routines incl. drafting releases on github.com and distribute on pypi.org\n\n * uses standard community tools like *unittest*, *pylint*, *coverage*, *sphinx* and more\n\n * no detailed configurations of any tools are needed, so you can focus completely on coding your project\n\n * demo of how to use the framework and various services to build true *ci/cd*; a full automated test and deploy pineline.\n\nMoreover, we recommend to use *pyenv* and *virtualenv* to test different python installations, too.\n\n\nQuick Start a Project\n---------------------\n\nOnce installed simply invoke :code:`auxilium create` and enter a few project details.\n\nThe whole project structure will be created. Full functioning incl. documentation gerneration, testing, etc..\n\n\n.. code-block:: bash\n\n $ auxilium create\n\n *** create new project ***\n Please enter project details.\n\n Enter project name : unicorn\n Enter project slogan: Always be a unicorn.\n Enter author name : dreamer\n Enter author email : dreamer@ho\n\n Created project unicorn with these files:\n\n unicorn/CHANGES.rst\n unicorn/dev.py\n unicorn/HOWTO.rst\n unicorn/LICENSE\n unicorn/MANIFEST.in\n unicorn/README.rst\n unicorn/requirements.txt\n unicorn/setup.py\n unicorn/upgrade_requirements.txt\n\n unicorn/doc/.DS_Store\n\n unicorn/doc/sphinx/.DS_Store\n unicorn/doc/sphinx/conf.py\n unicorn/doc/sphinx/doc.rst\n unicorn/doc/sphinx/index.rst\n unicorn/doc/sphinx/intro.rst\n unicorn/doc/sphinx/logo.png\n unicorn/doc/sphinx/releases.rst\n unicorn/doc/sphinx/tutorial.rst\n\n unicorn/test/__init__.py\n unicorn/test/unittests.py\n\n unicorn/unicorn/__init__.py\n\n Consider a first full run via: 'cd unicorn; auxilium full;'\n\n\n\n\nDefault Structure of a Project\n------------------------------\n\nThe top level of the directory structure consists of three sub-dirs for source, doc and test files\nand some more or less standard project files. Assume the project is called *auxilium*.\n\n.. code-block:: bash\n\n /unicorn (project root dir)\n\n /unicorn (python source files)\n /doc/sphinx (sphinx files)\n /test/unittests (unittest files)\n\n LICENSE (license to use)\n\n CHANGES.rst (change history)\n HOWTO.rst (user guide)\n README.rst (introduction)\n\n requirements.txt (pip dependencies)\n upgrade_requirements.txt (pip dependencies which always have to be upgraded)\n\n setup.py (configuration file to build a distribution)\n\nYour python source files can be structured as you like.\nOnly few information on your project is required\nand has to be found in\n\n.. code-block:: bash\n\n /unicorn/unicorn/__init__.py\n\nMost of them are needed to setup the *pip* installation (using *setuptools*)\nas well as the sphinx configuration for generation a documentation.\nSee here how :code:`unicorn/unicorn/__init__.py` looks like.\n\n.. code-block:: python\n\n # -*- coding: utf-8 -*-\n\n # unicorn\n # -------\n # Always be a unicorn.\n #\n # Author: dreamer\n # Version: 0.1, copyright Thursday, 29 August 2019\n # Website: https://github.com/dreamer/unicorn\n # License: Apache License 2.0 (see LICENSE file)\n\n\n import logging\n\n logging.getLogger(__name__).addHandler(logging.NullHandler())\n\n __doc__ = 'Always be a unicorn.'\n __license__ = 'Apache License 2.0'\n\n __author__ = 'dreamer'\n __email__ = 'unicorn@home'\n __url__ = 'https://github.com/' + __author__ + '/' + __name__\n\n __date__ = 'Thursday, 29 August 2019'\n __version__ = '0.1'\n __dev_status__ = '3 - Alpha'\n\n __dependencies__ = ()\n __dependency_links__ = ()\n __data__ = ()\n __scripts__ = ()\n\n\nOn top level we have the following files\n\n.. code-block:: bash\n\n /auxilium (project root dir)\n\n LICENSE\n\n CHANGES.rst\n HOWTO.rst\n README.rst\n\n requirements.txt\n upgrade_requirements.txt\n\n setup.py\n\nWhich serve for\n\n * **LICENSE** is the license how to use, change or distribute the project.\n\n * **CHANGES.rst** will contain the whole change and release history\n\n * **HOWTO.rst** gives a intro how to use your project. This will show up in your documentation as tutorial.\n\n * **README.rst** is this page which show up on repository homepage at first. Moreover, this will show up in your documentation as introduction.\n\n * **requirements.txt** are additional python packages, which are required for development and/or testing\n\n * **upgrade_requirements.txt** are additional python packages (same as *requirements.txt*), which have to be upgraded, i.e. installed by :code:`pip` with the *--upgrade* option. Usually used for dev repos.\n\n * **setup.py** configs the installation procedure with pip and the meta keywords of your project on pypi.org. Most of the entries are found in the project **__init__.py** file.\n\nThe structure of\n\n.. code-block:: bash\n\n /auxilium (project root dir)\n\n /auxilium (python source files)\n /doc/sphinx (sphinx files)\n\n\nAutomated Documentation Generation\n----------------------------------\n\nThe documentation is located at\n\n.. code-block:: bash\n\n /auxilium (project root dir)\n\n /doc/sphinx (sphinx files)\n\n**auxilium** extracts all docs from the source code file and links to some top level *rst* files.\nSo usually no file under :code:`/doc/sphinx` requires to be edited.\n\nThe site-map of a documentation will look like this\n\n.. code-block:: bash\n\n /index.rst\n /intro.rst -> README.rst\n /tutorial.rst -> HOWTO.rst\n /doc.rst -> api/* (generated by *sphinx-apidoc* via :code:`auxilium api`)\n /releases.rst -> CHANGES.rst\n\nSphinx has a configuration (*conf.py*) to build *html* and *latex* resp. *pdf* documentation.\nThe later requires a latex installation to work.\n\nAnd it can run *code-blocks* of code examples of your documentation.\n\nSince only **doc.rst** will not refer to a top level doc file of the project it is generated from the source code.\nSo here the work starts to write good python doc strings.\n\nBut if a more *sphinx* specific file reps. documentation is preferred.\nMay be in order to provide detailed insights into the project:\nSimply delete :code:`api/*` (if existing) and replace the contents of **doc.rst**.\n\n\nAutomated Test and Test Coverage Framework\n------------------------------------------\n\nTest are invoked by using *unittest discovery* script which searches by default for files\ncontaining :code:`unittest.TestCase` classes and process them.\n\nSame for measuring the test coverage using *coverage.py*\n\n.. todo add more test frameworks like **nosetest**, **tox**, **py.test**, **regtest**\n\n\n.. code-block:: bash\n\n /auxilium (project root dir)\n\n /test/unittests (unittest files)\n\n\n\nInstallation\n------------\n\nThe latest stable version can always be installed or updated via pip:\n\n.. code-block:: bash\n\n $ pip install auxilium\n\n\n\nDevelopment Version\n-------------------\n\nThe latest development version can be installed directly from GitHub:\n\n.. code-block:: bash\n\n $ pip install --upgrade git+https://github.com/sonntagsgesicht/auxilium.git\n\n\nContributions\n-------------\n\n.. _issues: https://github.com/sonntagsgesicht/auxilium/issues\n.. __: https://github.com/sonntagsgesicht/auxilium/pulls\n\nIssues_ and `Pull Requests`__ are always welcome.\n\n\nLicense\n-------\n\n.. __: https://github.com/sonntagsgesicht/auxilium/raw/master/LICENSE\n\nCode and documentation are available according to the Apache Software License (see LICENSE__).\n\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sonntagsgesicht/auxilium", "keywords": "", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "auxilium", "package_url": "https://pypi.org/project/auxilium/", "platform": "any", "project_url": "https://pypi.org/project/auxilium/", "project_urls": { "Homepage": "https://github.com/sonntagsgesicht/auxilium" }, "release_url": "https://pypi.org/project/auxilium/0.1.3/", "requires_dist": [ "pylint", "coverage", "bandit", "twine", "sphinx", "sphinx-rtd-theme", "flake8", "codecov" ], "requires_python": "", "summary": "A Python project for an automated test and deploy toolkit - 100% reusable.", "version": "0.1.3" }, "last_serial": 5850338, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "aef7675dc4ad51a4e0af2395bb03eb5a", "sha256": "aaa7c3daab0af8870e3024e074df31743912d9ace0c2f04f86b6c6c0b9f7cbf6" }, "downloads": -1, "filename": "auxilium-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "aef7675dc4ad51a4e0af2395bb03eb5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 48654, "upload_time": "2019-08-29T00:06:50", "url": "https://files.pythonhosted.org/packages/b4/57/3ffcfcc0af6449d0395adc6b1d5eb008a13637c876dac0e447d27bf1a990/auxilium-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "933815082a410e575f57368f3f64f0d8", "sha256": "52a863756de39c59e162607879095d24074db98e0a0d5d15a285fdce1bead13d" }, "downloads": -1, "filename": "auxilium-0.1.tar.gz", "has_sig": false, "md5_digest": "933815082a410e575f57368f3f64f0d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50018, "upload_time": "2019-08-29T00:06:53", "url": "https://files.pythonhosted.org/packages/b7/5a/669067bc17d8fc2fe86fa6bdae10f08c01556f9ce6fafb180fcc3e7ec2b6/auxilium-0.1.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "9b7fce9e8b89ff7d57c173638a0c8736", "sha256": "4b86d5c93ae97b9737a2deb3197176c1b7de18159aa61f42f6c518dc4d3760d4" }, "downloads": -1, "filename": "auxilium-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9b7fce9e8b89ff7d57c173638a0c8736", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49359, "upload_time": "2019-09-18T13:31:57", "url": "https://files.pythonhosted.org/packages/80/81/7dddf4c08f285908896b4dca0733c8d19c1e17fb7b2650979ec445465a56/auxilium-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d4d53ad98f1b53ea8b10ce45f7d2c94", "sha256": "e9363caf71d3be1ea3eacf0490857f41899ad66b590eefc64dc4801f7510c759" }, "downloads": -1, "filename": "auxilium-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1d4d53ad98f1b53ea8b10ce45f7d2c94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50284, "upload_time": "2019-09-18T13:32:00", "url": "https://files.pythonhosted.org/packages/e4/2f/64203ce8ea9abf0769668406e984738fae9c07f5d538ae0378d2517fc42b/auxilium-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9b7fce9e8b89ff7d57c173638a0c8736", "sha256": "4b86d5c93ae97b9737a2deb3197176c1b7de18159aa61f42f6c518dc4d3760d4" }, "downloads": -1, "filename": "auxilium-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9b7fce9e8b89ff7d57c173638a0c8736", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49359, "upload_time": "2019-09-18T13:31:57", "url": "https://files.pythonhosted.org/packages/80/81/7dddf4c08f285908896b4dca0733c8d19c1e17fb7b2650979ec445465a56/auxilium-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d4d53ad98f1b53ea8b10ce45f7d2c94", "sha256": "e9363caf71d3be1ea3eacf0490857f41899ad66b590eefc64dc4801f7510c759" }, "downloads": -1, "filename": "auxilium-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1d4d53ad98f1b53ea8b10ce45f7d2c94", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50284, "upload_time": "2019-09-18T13:32:00", "url": "https://files.pythonhosted.org/packages/e4/2f/64203ce8ea9abf0769668406e984738fae9c07f5d538ae0378d2517fc42b/auxilium-0.1.3.tar.gz" } ] }