Skip to main content

A practical Python project skeleton generator.

Project description

https://img.shields.io/pypi/v/micc.svg https://img.shields.io/travis/etijskens/micc.svg Documentation Status

Micc is a Python project manager: it helps you organize your Python project from simple single file modules to fully fledged Python packages containing modules, sub-modules, apps and binary extension modules written in Fortran or C++. Micc organizes your project in a way that is considered good practice by a large part of the Python community.

  • Micc helps you create new projects. You can start small with a simple one-file package and add material as you go, such as:
    • Python sub-modules and sub-packages,
    • applications, also known as command line interfaces (CLIs).
    • binary extension modules written in C++ and Fortran. Boiler plate code is automatically added as to build these binary extension with having to go through al the details. This is, in fact, the foremost reason that got me started on this project: For High Performance Python it is essential to rewrite slow and time consuming parts of a Python script or module in a language that is made for High Performance Computing. As figuring out how that can be done, requires quite some effort, Micc was made to automate this part while maintaining the flexibility.
    • Micc adds typically files containing example code to show you how to add your own functionality.
  • You can automatically extract documentation from the doc-strings of your files, and build html documentation that you can consult in your browser, or a .pdf documentation file.
  • With a little extra effort the generated html documentation is automatically published to readthedocs. [documentation lacking]
  • Micc helps you with version management and control.
  • Micc helps you with testing your code.
  • Micc helps you with publishing your code to e.g. PyPI, so that you colleagues can use your code by simply running pip install your_nifty_package.

For details see the API documentation and the tutorials.

Micc does not do all of this by itself. For many things it relies on other strong open source tools and it is therefor open source as well (MIT Licence). Here is a list of tools micc is using or cooperating with happily:

  • poetry: dependency management, virtual environments.
  • pyenv: management of different Python versions
  • pipx: installation of CLIs in a system-wide way.
  • Cookiecutter for creating templates for all the things that can be added to your project.
  • git for version control.
  • python-semanticversion for managing version strings and dependency version constraints according to the Semver 2.0 specification.
  • pytest for testing your code.
  • click for a pythonic and intuitive definition of command-line interfaces (CLI).
  • sphinx to extract documentation from your project’s doc-strings.
  • sphinx-click for extracting documentation from the click command descriptions
  • F2py to transform modern Fortran code into performant binary extension modules interfacing nicely with Numpy.
  • CMake and pybind11 as the glue between C++ code and performant binary extension modules interfacing nicely with Numpy.

Roadmap

These features are still on our wishlist:

  • Contininous integtration (CI)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for et-micc, version 0.10.10
Filename, size File type Python version Upload date Hashes
Filename, size et_micc-0.10.10-py3-none-any.whl (60.4 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size et-micc-0.10.10.tar.gz (40.8 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page