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