Giter Club home page Giter Club logo

template-python's Introduction

Jace's Python Template

This is a cookiecutter template for a typical Python library following modern packaging conventions. It utilizes popular libraries alongside Make and Graphviz to fully automate all development and deployment tasks. Check out the live demo: jacebrowning/template-python-demo

Build Status

Features

  • Preconfigured setup for CI, coverage, and analysis services
  • pyproject.toml for managing dependencies and package metadata
  • Makefile for automating common development tasks:
    • Installing dependencies with poetry
    • Automatic formatting with isort and black
    • Static analysis with pylint
    • Type checking with mypy
    • Docstring styling with pydocstyle
    • Running tests with pytest
    • Building documentation with mkdocs
    • Publishing to PyPI using poetry
  • Tooling to launch an IPython session with automatic reloading enabled

If you are instead looking for a Python application template, check out one of the sibling projects:

Examples

Here are a few sample projects based on this template:

Usage

Install cookiecutter and generate a project:

$ pip install cookiecutter
$ cookiecutter gh:jacebrowning/template-python -f

Cookiecutter will ask you for some basic info (your name, project name, python package name, etc.) and generate a base Python project for you. Once created, run the code formatter to updates files based on your chosen names:

$ cd <github_repo>
$ make format

Finally, commit all files generated by this template.

Updates

Run the update tool, which is generated inside each project:

$ bin/update

template-python's People

Contributors

destos avatar jacebrowning avatar joshfriend avatar otto-aa avatar sheplecjs avatar williambonvini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

template-python's Issues

Add `$ make help` to Makefile

It might be helpful to provide a place holder for the template functionality so it can be grown with added features.

Development is difficult without Internet

My past two flights, I've tried to work on code. But inevitably, I'll touch something in the Makefile and it will try to install things without Internet. It would be cool if this could be handled gracefully.

Some options:

  • check for Internet before installing
  • let installs fail and warn about it
  • add a variable to disable installs (e.g. NO_INTERNET=1 make do-stuff)

Research the arguments for/against tests in the package

Currently, the template suggests putting the tests in the package, but I'd like to remember the main arguments.

The first I can think of is that if you have doctests you can simply run your entire package through your test runner.

Python 3.5

Now that RC1 is out (with RC2 coming in a few days) and py.test assert rewriting is fixed (pytest-dev/pytest#744) 3.5 should be added to the build matrix

PYTHON_MINOR ignored on *nix systems

when not building on windows, the SYS_PYTHON variable is set as follows:

SYS_PYTHON := python$(PYTHON_MAJOR)

it should be something like:

SYS_PYTHON := python$(PYTHON_MAJOR).$(PYTHON_MINOR)

Extend the template for Cython

I've just started a new project and thought about using template-python. Unfortunately, I'll have to use Cython to speed up parts of my code. In the context of this framework, how do I proceed best in including Cython code?

I've found some resources on the web, which document my confusion perfectly:
http://pages.uoregon.edu/cfulton/posts/building_python_modules.html
http://comments.gmane.org/gmane.comp.python.cython.user/11186

Basically, I looks like the makefile could take over the generation of the .c files from the .pyx files and only the .c files are then mentioned as ext_modules in setuptools.setup.

Do you have any opinions or recommendations on this matter?

Consider removing coverage requirement

Coveralls supports setting a minimum coverage percentage. If the threshold is not met, it will post a failing status to the GitHub Status API for that pull request. Using this instead of the current setup would let the coverage check fail the pull request checks separately from unit tests run by travis.

Consider installing tools system-wide

It seems like the dependencies installed by $ make depends-ci and $make depends-dev could be installed and used from the system Python to save time/space. In the Makefile, they could each be invoked by $(SYS_PYTHON) -m <name.

Add HTML coverage report generation

  • create a variable to control the HTML directory
  • delete the directory when coverage results are cleared
  • generate HTML reports before displaying text reports

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.