What are Python properties?

In “What’s the difference between classmethod and staticmethod in Python?” we looked at static and class methods. The third big decorator is the @property decorator import pytest class Person: def __init__(self, name): self._name = name @property def name(self): print(‘Getting name’) return self._name @name.setter def name(self, value): print(f’Setting name to {value}’) self._name = value @name.deleter def…

How to let test cases run in a predefined order

Motivation pytest executes tests in a randomly order. Sometimes it can be useful to have a predefined order in which test cases can run. pytest has a neat plugin for this specific use case. Installation pip install pytest-order Usage import pytest @pytest.mark.order(1) def test_foo(): assert True @pytest.mark.order(2) def test_bar(): assert True @pytest.mark.order(3) def test_foobar(): assert…

RAII in C++ and Python for custom types

Resource Acquisition Is Initialization (RAII) is a programming idiom that describes how resource acquisition and deallocation should be tied to object lifetime. Wikipedia demonstrates how the C++ standard library implements this idiom using the types std::lock_guard<> and std::ofstream as examples. But is it really necessary to implement this idiom in every type you create? Can’t…

How to manipulate nested dictionaries with dotty

Motivation Sometimes a task which should be easy can be hard to accomplish in practice. Manipulating nested dictionaries in Python seems to be such a task. Without dotty Accessing nested dictionaries looks like this: data = { ‘a’: { ‘b’: { ‘c’: ‘d’ } } } assert data[‘a’][‘b’][‘c’] == ‘d’ You have to chain the…

Introduction to VBA

A horrifying amount of business is still driven by Microsoft Excel. Need some stats? Excel. Need some number crunching? Excel Most of the time you can work with formulas in your sheet and you will be fine. But sometimes you need more power: Time to level up your VBA skills History VBA stands for “Visual…

Reading files with Kotlin

Before Kotlin BufferedReader br = new BufferedReader(new FileReader(“data.txt”)); try { StringBuilder sb = new StringBuilder(); String line = br.readLine(); while (line != null) { sb.append(line); sb.append(System.lineSeparator()); line = br.readLine(); } String content = sb.toString(); } finally { br.close(); } This is a code sample reading a files content in plain old Java. What a mess…

How to store sensible data in a .env file

Motivation Whether you need credentials to log into a system or some configuration parameters for your application, the .env concept might help you. Installation pip install python-dotenv Usage .env file Create an .env file in your project root folder You should not share this file or commit/push it to your version control. You should add…