Package: et-micc
Miccis 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++.Miccorganizes your project in a way that is considered good
practice by a large part of the Python community.Micchelps you create new projects. You can start small with a simple one-file
package and add material as you go, such as:Pythonsub-modulesandsub-packages,applications, also known as command line interfaces (CLIs).binary extension moduleswritten 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: ForHigh Performance Pythonit 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,Miccwas made to automate this part while maintaining the
flexibility.Miccadds typically files containing example code to show you how to add your
own functionality.You can automaticallyextract documentationfrom 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 htmldocumentation is automatically publishedtoreadthedocs.Micchelps you withversion management and control.Micchelps you withtestingyour code.Micchelps you withpublishingyour code to e.g.PyPI, so
that you colleagues can use your code by simply running:> pip install your_nifty_packageCreditsMiccdoes 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 toolsmiccis using or cooperating with happily:Pyenv: management of different Python versions.Pipxfor installation of CLIs in a system-wide
way.Poetryfor dependency management, virtual
environment management, packaging and publishing.Gitfor version control.CMakeis usde for building binary extension modules written
in C++.The above tools are not dependencies ofMiccand must be installed separately. Then
there are a number of python packages on whichmiccdepends and which are automatically
installed whenpoetrycreates a virtual environment for a project.Cookiecutterfor creating boilerplate
code from templates for all the parts that can be added to your project.Python-semanticversionfor managing version strings and dependency version constraints according to theSemver 2.0specification.Pytestfor testing your code.Clickfor a pythonic and intuitive definition
of command-line interfaces (CLIs).Sphinxto extract documentation from your project’s
doc-strings.Sphinx-clickfor extracting documentation
from theclickcommand descriptions.F2pyfor transforming modern Fortran code into performant
binary extension modules interfacing nicely withNumpy.Pybind11as the
glue between C++ source code and performant binary extension modules, also interfacing nicely withNumpy.RoadmapThese features are still on our wish list:Contininous integtration (CI)Code style, e.g.flake8orblackProfilingGui for debugging C++/Fortran binary extensionsMicc projects on Windows (So far, only support on Linux and MacOS).