Skip to content

dewnull/cookiecutter-pypackage-cpp

 
 

Repository files navigation

Cookiecutter Python Package with C++

Updates

Cookiecutter template for a Python package with C++ extension.

Let's say you want to create a new Python Package, and you have a really good reason to write part of your code in C++. Furthermore, you want to use the Python/C API to accomplish this task (Extend Python with C++ code).

You can use this cookiecutter template to help you setup a scaffolding for your project that optionally includes Google Test framework and Visual Studio 2017 solution files. GTest and VS 2017 become very useful if you a large existing C/C++ project or if you need to do lots of mixed code debugging.

Features

  • Testing setup with unittest and python setup.py test or py.test
  • Travis-CI: Ready for Travis Continuous Integration testing
  • Tox testing: Setup to easily test for Python 3.3, 3.4, 3.5
  • Sphinx docs: Documentation ready for generation with, for example, ReadTheDocs
  • Bumpversion: Pre-configured version bumping with a single command
  • Auto-release to PyPI when you push a new tag to master (optional)
  • Command line interface using Click (optional)
  • Google Test Framework
  • Visual Studio 2017 integration

Build Status

Linux:

Linux build status on Travis CI

Windows:

Windows build status on Appveyor

Quickstart

Install the latest Cookiecutter if you haven't installed it yet (this requires Cookiecutter 1.4.0 or higher):

pip install -U cookiecutter

Generate a Python package project:

cookiecutter https://github.com/dewnull/cookiecutter-pypackage-cpp.git

Then:

  • Create a repo and put it there.
  • Add the repo to your Travis-CI account.
  • Install the dev requirements into a virtualenv. (pip install -r requirements_dev.txt)
  • Run the script travis_pypi_setup.py to encrypt your PyPI password in Travis config and activate automated deployment on PyPI when you push a new tag to master branch.
  • Add the repo to your ReadTheDocs account + turn on the ReadTheDocs service hook.
  • Release your package by pushing a new tag to master.
  • Add a requirements.txt file that specifies the packages you will need for your project and their versions. For more info see the pip docs for requirements files.
  • Activate your project on pyup.io.

For more details, see the cookiecutter-pypackage tutorial.

Not Exactly What You Want?

Don't worry, you have options:

Similar Cookiecutter Templates

Fork This / Create Your Own

If you have differences in your preferred setup, I encourage you to fork this to create your own version. Or create your own; it doesn't strictly have to be a fork.

  • Once you have your own version working, add it to the Similar Cookiecutter Templates list above with a brief description.
  • It's up to you whether or not to rename your fork/own version. Do whatever you think sounds good.

Or Submit a Pull Request

I also accept pull requests on this, if they're small, atomic, and if they make my own packaging experience better.

About

Cookiecutter template for a Python package that includes C++ code and Google Tests

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 65.5%
  • Makefile 20.5%
  • Batchfile 14.0%