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.
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” 💖
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…
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 https://github.com/tiangolo/full-stack-fastapi-postgresql
My templates with a template per branch: https://gitlab.com/cdlr75/python-template
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.
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
… to be continue, with your comment ?
PS: Building micro-services ? I wrote another medium article that may interest you.