Strongly opinionated python 3.5+ project management.
.. image:: https://travis-ci.org/python-medikit/medikit.svg?branch=master :target: https://travis-ci.org/python-medikit/medikit :alt: Continuous Integration Status
.. image:: https://coveralls.io/repos/github/python-medikit/medikit/badge.svg?branch=master :target: https://coveralls.io/github/python-medikit/medikit?branch=master :alt: Coverage Status
.. image:: https://readthedocs.org/projects/medikit/badge/?version=latest :target: http://edgyproject.readthedocs.org/en/latest/?badge=latest :alt: Documentation Status
.. image:: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpython-medikit%2Fmedikit.svg?type=shield :target: https://app.fossa.io/projects/git%2Bgithub.com%2Fpython-medikit%2Fmedikit?ref=badge_shield :alt: License Status
Medikit is the first-aid toolkit to manage your project's boilerplate, like package files, versions, config, test suite, runners, ...
This package helps you create python (or not) source trees using best practices (or at least the practices we consider as best for us) in a breeze.
Don't worry about setting up git, a makefile, usual project targets, unit tests framework, pip, wheels, virtualenv, code coverage, namespace packages, setup.py files ...
Medikit's got you covered on all this, using one simple and fast command.
Before installing the package, you must make sure that pip
and virtualenv
are installed and available to be used in your current environment.
.. code-block:: shell
pip install medikit
Now, you may want to bootstrap a python package source tree.
.. code-block:: shell
mkdir my.awesome.pkg
cd my.awesome.pkg
medikit init .
You're done with the bootstrap. You can now run:
.. code-block:: shell
make install
make test
git commit -m 'Damn that was fast ...'
Happy?
If you change the Projectfile
content, or update the library, you will need to run
the generator again.
.. code-block:: shell
medikit update
To better control what changes are made, I suggest that you run it on a clean git repository, then look at the dofferences using:
.. code-block:: shell
git diff --cached
You can then commit the generated changes.
As the headline says, we have made strong opinionated choices about how a project tree should be organized.
For example, we choose to use make to provide the main project entrypoints (install, test). We also choose to use git. And pytest. And to put root package in the project root (as opposed to a src dir or something like this). Etc.
For beginners, that's a good thing, because they won't have to ask themselves questions like "What should I put in setup.py ?" or "Should I create a «src» dir or not ?". For more advanced users, it can be either a good thing if you agree with our choices, or a bad one ...
Medikit uses a single configuration file in your project, called Projectfile.
This file contains all the specific of your project:
At its heart, medikit uses an "event dispatcher" model.
An update will dispatch a "medikit.on_start" event, and features that you required can listen (react) to this event by adding jobs to run in response. They also can dispatch their own events.
As a result, you'll get your projects files updated, that will be a combination of all the events listeners executed.
It means two things:
I'm using PasteScript, isn't that enough?
Should I use it?
Is it stable / production ready?
git diff --cached
, and either rollback or report
issues saying how much you're disappointed (and why, don't forget the why,
please).Can I contribute?
Can you include feature «foo»?
Do you support python 3?
.. image:: https://app.fossa.io/api/projects/git%2Bgithub.com%2Fpython-medikit%2Fmedikit.svg?type=large :target: https://app.fossa.io/projects/git%2Bgithub.com%2Fpython-medikit%2Fmedikit?ref=badge_large :alt: License Status