edgy.project
============

Strongly opinionated python project management.

This package helps you create python source trees using best practices (or at
least the practices we consider as best for us) in a breeze.

Don't worry about setting up git, a makefile, usual project targets, unit tests
framework, pip, wheels, virtualenv, code coverage, namespace packages, setup.py
files ... Project's got you covered on all this, using one simple and fast
command.


Install
=======

Before installing the package, you must make sure that `pip` and `virtualenv`
are installed and available to be used in your current environment.

.. code-block:: shell

    pip install edgy.project

Now, you may want to bootstrap a python package source tree.

.. code-block:: shell

    mkdir my.awesome.pkg
    cd my.awesome.pkg
    cat >Projectfile <<EOF
    name = 'my.awesome.pkg'
    description = 'Amazing description.'
    license = 'Apache License, Version 2.0'
    EOF
    python -m edgy.project init

You're done with the bootstrap. You can now run:

.. code-block:: shell

    make install
    make test
    git commit -m 'Damn that was fast ...'

Happy?


Gotchas
=======

As the headline says, we have made strong opinionated choices about how a project
tree should be organized.

For example, we choose to use make to provide the main project entrypoints
(install, test). We also choose to use git. And nosetests. And to put root package
in the project root. Etc.

For beginners, that's a good thing, because they won't have to ask themselves
questions like "What should I put in setup.py ?" or "Should I create a «src»
dir or not ?". For more advanced users, it can be either a good thing if you
agree with our choices, or a bad one ...


F.A.Q
=====

* I'm using PasteScript, isn't that enough?

  * PasteScript with the basic_package template will only generate a very
    minimalistic tree, while we install a few tools and generate more boilerplate
    than it does. The fact is, we were using it before but still had a lot of
    repeated actions to do then, and the exact aim of this project is to automate
    the whole. Also, PasteScript cannot update a project once generated, while we
    do.

* Should I use it?

  * You're a grown man, right?

* Can I contribute?

  * Yes, but the right vs wrong choices decision is up to us. Probably a good
    idea to discuss about it (in an issue for example) first.
