Metadata-Version: 2.0
Name: params
Version: 0.1.1
Summary: General purpose parameter validator for web development
Home-page: https://github.com/reorx/params
Author: reorx
Author-email: novoreorx@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Requires-Dist: click

# project_sketch

A nerd's boilerplate for your Python project.


## Usage

```bash
$ cp -r project_sketch <your_projects_name>
$ cd <your_projects_name>
$ mv project_sketch <your_projects_name>
```

And change every `project_sketch` word into `<your_projects_name>`.


## Hierarchy

```
project_sketch
├── project_sketch
│   ├── _module
│   │   └── __init__.py
│   └── __init__.py
├── .gitignore
├── setup.py
├── Makefile
├── manage.py
├── requirements.txt
├── dev-requirements.txt
└── README.md
```

## Explanation

- **project_sketch/**

  The Python package of this project, mostly has the same name with root folder

- **project_sketch/__init__.py**

  Essential file to claim a package, contains `__version__` variable.

- **project_sketch/_module/**

  A submodule of the project, there's also a necessary `__init__.py` under it.

  you can `cp _module whatever-you-like` to create a new submodule.

- **.gitignore**

  Simple, effective gitignore, much less verbose than
  [this windbag](https://github.com/github/gitignore/blob/master/Python.gitignore)

- **setup.py**

  You may hate it, but you can't ignore it. This `setup.py` does just what you want,
  and it automatically involves `requirements.txt` and `README.md`.

  If you rock, go and dig [this](https://pinboard.in/u:reorx/t:python/t:packaging).

- **Makefile**

  We love Makefile, not Rakefile nor Gruntfile nor whatever requires extra program.
  This awesome Makefile contains three commands at your service:

  * `make build`

    Build Python package with `setup.py`.

  * `make clean`

    Clean files & folders generated by `build`.

  * `make test`

    Run tests (if you have any) with nose.

- **manage.py**

  Try `pip install click` & `./manage.py ping` to see how it works.

  If you are writing something that needs to run in a complicated way,
  and you realize that this sort of code should not be put in the package,
  this is what you need. `manage.py` is an entrance script which you can customize
  your own command in it. By default, it uses [click](http://click.pocoo.org/3/)
  to define commands & options, you can replace it by other things like
  [docopt](http://docopt.org/), or [fabric](http://www.fabfile.org/)
  (the file should be named `fabfile.py` then), if you prefer.

  If you are writing a pure import-only package, feel free to remove it.

- **requirements.txt**

  Includes a `click` by default, this file contains packages your project depends on.

- **dev-requirements.txt**

  Includes a `nose` by default, this file contains packages you need in developing environment,
  which are not necessary in production.

- **README.md**

  A cute, well formatted `README.md` makes people happy.
  (True heros love `README.rst` :).


## Questions and Answers

Q: Why there's no `MANIFEST.in` file in the directory?

Q: Why there's no `setup.cfg` file in the directory?

Q: How to build and publish a distribution?

Q: Should I use wheel as my distribution format?

> Could be answered from http://python-packaging-user-guide.readthedocs.org/en/latest/distributing/


