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.

Constantin De La Roche
3 min readOct 4, 2020

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.

Git

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

Gitlab

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.

Virtualenvwrapper

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” 💖

Git prompt

Unmissable for your terminal! A bash prompt that displays information about the current git repository. In particular the branch name, difference with remote branch, number of files staged, changed, etc…

Autopep8

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.

Flake8

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

Cookiecutter

Generate a whole project from a template in a single command. Here is an example of a full stack template https://github.com/tiangolo/full-stack-fastapi-postgresql
My templates with a template per branch: https://gitlab.com/cdlr75/python-template

Versionneer

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.

Git flow

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.

Changelogfromtags

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

auto-git-flow

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.

--

--