Lazy python developer toolkit

I am willing to invest 30 minutes in a tool if it can save me 2s every day for few years.

Image for post
Image for post

As a (python) developer working on many projects simultaneously and starting new ones occasionally, I spent time to look for what could make my daily life easier. I want to share here the list of tools I’m using (and those I’m not using). If you know a tool not listed here that you find useful, please share it in comments! Sharing is caring.

My favorite vcs is not svn. ¯\_(ツ)_/¯

It is the most advanced platform to manage IT projects. The built-in issues system and CI/CD are absolutely awesome. It still has less popularity than Github but I think this will change.

This python package creates virtual environment for each python project. Enjoy virtual environments with 3 commands:

mkvirtualenv hodl # create a new venv associate to current dir
setvirtualenvproject # link name “hodl” with the current dir
workon hodl # active venv and move to project dir “hodl” 💖

The most advanced and the less boring of auto correct pep8 tools.

pip install autopep8 && autopep8 -i -r .

I have tried “yapf” and “black” but they both deeply change the code and the usage is less user friendly.

The best linter. It’s a all-in-one cheking PEP8, useless imports and variables etc… To use on tests also ! 😉
Here is fews lines to avoid to fails the flake8 job :

pip install flake8
echo "flake8 ." >> .git/hooks/pre-commit
chmod u+x .git/hooks/pre-commit

Generate a whole project from a template in a single command. Here is an example of a full stack template
My templates with a template per branch:

This python package will manage your project version from git tags. Not having to keep a variable VERSION up to date on each release save time and avoid mistakes. It’s main drawback is the pep8ness of generated files.

This is a git wrapper that manage branches via the “git flow” command. As the name suggest, it offer a project management framework. It’s comfortable to retrieve the same flow, i.e. release process, on every project.

IMO nothing is less boring and easy to screw up than a changelog. This package generate a changelog from git tags. Perfect match with git flow that ask you to write a message tag on each release —DRY

Using git flow, you need to know the next release version. This package save you a git describecommand and create the release/hotfix branch for you.
As changelogfromtags, this package has no dependencies.

Tools I disliked

This is a list of tools that I have tried but does not bring a significant improvement to a project (most of the time because it’s too time consuming) IMHO:
- poetry for packaging (too slow…)
- tox (useless since we have containers running our pipeline on gitlab)
- pylint (need configuration, cli without --fail-under)

… to be continue, with your comment ?

PS: Building micro-services ? I wrote another medium article that may interest you.

Written by

Software Engineer & co-founder of Botcrypto

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store