..
    This file is part of Invenio.
    Copyright (C) 2015-2018 CERN.

    Invenio is free software; you can redistribute it and/or modify it
    under the terms of the MIT License; see LICENSE file for more details.

Learning Python
===============

Anti-patterns
-------------

Learn to recognise and avoid Python `anti-patterns
<http://docs.quantifiedcode.com/python-anti-patterns/index.html>`_.

3. **Contributing code?**

   i. Read `The Zen of Python <https://en.wikipedia.org/wiki/Zen_of_Python>`_.

   ii. Read `Python Anti-Patterns
       <http://docs.quantifiedcode.com/python-anti-patterns/>`_.
   iii. Code with style. Plug `pycodestyle
        <https://pypi.python.org/pypi/pycodestyle>`_ (`PEP-8
        <https://www.python.org/dev/peps/pep-0008/>`_), `pydocstyle
        <https://pypi.python.org/pypi/pydocstyle>`_ (`PEP-257
        <https://www.python.org/dev/peps/pep-0257/>`_), `Flake8
        <https://pypi.python.org/pypi/flake8>`_, `ISort
        <https://pypi.python.org/pypi/isort>`_ tools into your editor.


Entry points
------------

We use Python `entry_points`_ as a way to provide extensions for packages.

.. _entry_points: https://setuptools.readthedocs.io/en/latest/pkg_resources.html#entry-points
