Python variable length arguments

Ever wondered what these *varargs or *kwargs in python functions parameter mean? Let me explain! varargs varargs is short for variable arguments. It is declared like this: def print_person_varargs(name, *vargs): pass You can pass as many arguments as you like. In this case we pass two after the first positional argument ‘name:’ print_person_varargs(“Jörn”, 40, “Emskirchen”)…

pytest Tutorial – Part 1

At PyConDE Berlin 2019 Florian Bruhin gave a really nice session about testing with pytest, which I try to recap here. Writing Tests If You want to work with pytest you can install it via: pip install pytest When you know basic python unittest fixtures, good news ahead: pytest is compatible and will run your…

Software Testing Concepts

My Tale of Woe When I graduated from university and had my first job as a software engineer at Harman Becker Automotive Systems GmbH I should do the parental leave cover for a colleague. He showed me his project, gave me some info e.g. contact person and went off to Canada. Literally on the second…

Python Package parameterized

Stackoverflowing around I found this nice package https://github.com/wolever/parameterized Parameterized testing in Python sucks. parameterized fixes that. For everything. Parameterized testing for nose, parameterized testing for py.test, parameterized testing for unittest. Reading this description I had very high expectations 🙂 So let’s see if the package can hold up to it.

PyConDE Berlin 2019

I’ve always wanted to go to a conference and with PyConDE I’ve found one that suited me well: The price point of 300 bucks for 3 days of conference, 2 days of workshops and the opportunity to go to Berlin and visit my friend Thomas was fascinating!

Flask 1.1 is here!

From the flask release notes: Returning a dict from a view function will produce a JSON response. This makes it even easier to get started building an API. To get a minimal REST-Api all you have to do is: from flask import Flask app = Flask(__name__) @app.route(‘/return_dict’, methods=[‘GET’]) def return_dict(): return {“x”: “1”} if __name__…

Overcoming PyInstaller Pitfalls

When using PyInstaller to package an application to a self-containing bundle you might run into some pitfalls: Pitfall 1: PyInstaller overwrites spec file The first time you run pyinstaller you run it with pyi-makespec my_module.py instead of pyinstaller my_module.py pyi-makespec will generate a my_module.spec which you can alter. Afterwards you just ran pyinstaller my_module.spec to…

Python Protocols

In my article Python Type Checking I wrote about type hints. Type hints are around the block since Python 3.5. Python 3.7 introduced another interesting concept to make Python code even more type safe: Protocols Duck typing If it walks like a duck and it quacks like a duck, then it must be a duck…