Skip to main content

Opinionated python 3.5+ project management.

Project description

✚ 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

Project details


Download files

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

Source Distribution

medikit-0.6.1.tar.gz (38.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

medikit-0.6.1-py3.7.egg (113.5 kB view details)

Uploaded Egg

medikit-0.6.1-py3.6.egg (113.1 kB view details)

Uploaded Egg

medikit-0.6.1-py3.5.egg (114.7 kB view details)

Uploaded Egg

medikit-0.6.1-py2.py3-none-any.whl (51.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file medikit-0.6.1.tar.gz.

File metadata

  • Download URL: medikit-0.6.1.tar.gz
  • Upload date:
  • Size: 38.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for medikit-0.6.1.tar.gz
Algorithm Hash digest
SHA256 1c58a7988ade570d2f5e467156e066af1e18b6c04e284ade9d458f2d68bee14d
MD5 bcbd9e386995c0372a3603f230b19027
BLAKE2b-256 4f09df8244d2dfaffc762ad2e98c126e71cb904d2946cf0ad3da54d16eadb005

See more details on using hashes here.

File details

Details for the file medikit-0.6.1-py3.7.egg.

File metadata

  • Download URL: medikit-0.6.1-py3.7.egg
  • Upload date:
  • Size: 113.5 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for medikit-0.6.1-py3.7.egg
Algorithm Hash digest
SHA256 a36587523ccd8d3171e8483faac8af3b744b025abdb352e8828378c7b757d09d
MD5 efd47f0e52929e7f070989d4356c1e55
BLAKE2b-256 e15798a6becce15d45cd54e400918b13790ecf6473dc99ede3bc88c768b56ef5

See more details on using hashes here.

File details

Details for the file medikit-0.6.1-py3.6.egg.

File metadata

  • Download URL: medikit-0.6.1-py3.6.egg
  • Upload date:
  • Size: 113.1 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for medikit-0.6.1-py3.6.egg
Algorithm Hash digest
SHA256 96b385c6a41953f6fdee15b9f7d5dd12ae248e3b9553a304dc6302a0e20dc90c
MD5 120f6417ecda320171630e2328df8cfc
BLAKE2b-256 91a76ac7a1076d2009b6a5dae47d8d8faca490893f2212127faae7c8bc0eee4b

See more details on using hashes here.

File details

Details for the file medikit-0.6.1-py3.5.egg.

File metadata

  • Download URL: medikit-0.6.1-py3.5.egg
  • Upload date:
  • Size: 114.7 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for medikit-0.6.1-py3.5.egg
Algorithm Hash digest
SHA256 d089ff9d28cb2dcb0c02c7614fadca2f65b6ed7250d3819ce13ddffe3927aed8
MD5 c58d460c8ae7353a87b98b027aa8d55a
BLAKE2b-256 9fe8d06e371a21004f338b75d2982ba084014b35a0cd9bfe1a7a8bdf68228f10

See more details on using hashes here.

File details

Details for the file medikit-0.6.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for medikit-0.6.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 07f2c56e83b1a7f3fcc948182bde7cb86bdb540a2201221417a4f557c79b2e61
MD5 aa04755ecd604282643c256e33c55656
BLAKE2b-256 fcbfe25aee83ced6774bf858ed66bf1e3f75354c354dbe74d66647dc1602750e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page