Skip to main content

✚ medikit ✚

Strongly opinionated python 3.5+ project management.

Continuous Integration Status Coverage Status Documentation Status 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.

Install

Before installing the package, you must make sure that pip and virtualenv are installed and available to be used in your current environment.

pip install medikit

Now, you may want to bootstrap a python package source tree.

mkdir my.awesome.pkg
cd my.awesome.pkg
medikit init .

You’re done with the bootstrap. You can now run:

make install
make test
git commit -m 'Damn that was fast ...'

Happy?

Update

If you change the Projectfile content, or update the library, you will need to run the generator again.

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:

git diff --cached

You can then commit the generated changes.

Gotchas

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 …

Architecture

Medikit uses a single configuration file in your project, called Projectfile.

This file contains all the specific of your project:

  • What features you wanna use.

  • The customizations of those features

  • The additional event listeners (more on this later) you need.

  • The eventual pipelines that you need.

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:

  • Unlike usual project templates and generators, it can both bootstrap and update your project, as best practice evolves.

  • It’s not a dependency of your project. Once it has run, you can forget it. Either you choose to maintain your project assets with it and you’ll need it installed while updating, or you can remove it and just keep the generated files.

F.A.Q

  • I’m using PasteScript, isn’t that enough?

    • PasteScript with the basic_package template will only generate a very minimalistic tree, while we install a few tools and generate more boilerplate than it does. The fact is, we were using it before but still had a lot of repeated actions to do then, and the exact aim of this project is to automate the whole. Also, PasteScript cannot update a project once generated, while we do.

  • Should I use it?

    • You’re a grown man, right?

  • Is it stable / production ready?

    • Not really relevant to this project, as it’s more a development tool than something you’ll use in operations. However, please note that on some points and until version 1.0, we will tune things and change the way it works to find the most flexible way to operate. Thus, if you relly on a specific implementation, updates may break things. The good news is that you’ll be able to review changes using 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?

    • Yes, but the right vs wrong choices decision is up to us. Probably a good idea to discuss about it (in an issue for example) first.

  • Can you include feature «foo»?

    • Probably, or maybe not. Come on github issues to discuss it, if we agree on the fact this feature is good for a lot of usages, your patch will be welcome. Also, we’re working on a simple way to write “feature plugins”, so even if we don’t agree on something, you’ll be able to code and even distribute addons that make things work the way you like.

  • Do you support python 3?

    • Of course, and for quite some times we decided to only support python 3, as we think the “10 years incubation period” we just had is a sufficient maturation period to just forget about python 2.

License

License Status

Metadata

Release files for medikit 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for medikit 0.8.0
File Size Uploaded Provenance
medikit-0.8.0.tar.gz 44.6 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for medikit 0.8.0
File
medikit-0.8.0-py3.9.egg Legacy Egg format - - Details
medikit-0.8.0-py3.8.egg Legacy Egg format - - Details
medikit-0.8.0-py3.7.egg Legacy Egg format - - Details
medikit-0.8.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 483.8 kB

Release files / medikit-0.8.0.tar.gz

Download URL medikit-0.8.0.tar.gz
Size 44.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2c0897195b04ae6b46e3ac568c5af84aaa10c3f4d8fb6923233748a562dc234c
BLAKE2b-256 checksum
How to use checksums
2617a176246aa11862cfcd66d2e9691297b86f3449572299a23a87701ab0b58a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.7.9

Release files / medikit-0.8.0-py3.9.egg

Download URL medikit-0.8.0-py3.9.egg
Size 127.8 kB
Tags Egg
SHA-256 checksum
How to use checksums
589b1d3701139c42bb0961b1096b19b0f58d755498f43ae3b690a895ca358c14
BLAKE2b-256 checksum
How to use checksums
97ad5070ca4dcfa7bef682bd2c1ebdb300f278241c4b1f504cf364291fa076f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.7.9

Release files / medikit-0.8.0-py3.8.egg

Download URL medikit-0.8.0-py3.8.egg
Size 127.6 kB
Tags Egg
SHA-256 checksum
How to use checksums
0faf9d7a230c276a7728385352541bb49512031ac063b5638905cf121b5fb380
BLAKE2b-256 checksum
How to use checksums
e697da49449d55d6d1adde7841b3c36ad512f83d1f4b3292b2c8508f513dc29e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.7.9

Release files / medikit-0.8.0-py3.7.egg

Download URL medikit-0.8.0-py3.7.egg
Size 127.1 kB
Tags Egg
SHA-256 checksum
How to use checksums
9910c5c08b6d566996b05f0c9485be7de3a736c69bc9c75912501100f97acc0c
BLAKE2b-256 checksum
How to use checksums
afdc50316951440cb449fe52236e27800b39e87fe66f79acc72dc8ec10f408e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.7.9

Release files / medikit-0.8.0-py2.py3-none-any.whl

Download URL medikit-0.8.0-py2.py3-none-any.whl
Size 56.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
03a190a9b8c7fed10db17852e6e616c5fb0b045a86125c44804df5ce58754937
BLAKE2b-256 checksum
How to use checksums
f40200e71784d5f09c77a27ee0eb22544efd85120ca09a64ada052b7d72a36f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.7.9

Security for medikit 0.8.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.8.0 This release

5 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page