Skip to content

Instantly share code, notes, and snippets.

View soxofaan's full-sized avatar

Stefaan Lippens soxofaan

View GitHub Profile
@soxofaan
soxofaan / dict_item.py
Created October 28, 2020 11:50
Python descriptor for attribute-like access in dict subclasses
class dict_item:
"""
Create an attribute in a custom dict subclass that accesses
the dict value keyed by the attribute's name:
>>> class UserInfo(dict):
>>> name = dict_item()
>>> age = dict_item()
>>> user = UserInfo(name="John")
>>> print(user.name)
@soxofaan
soxofaan / ignore_order.py
Last active November 3, 2020 11:10
Order ignoring list/tuple comparison asserts for pytest
from typing import Union
class IgnoreOrder:
"""
pytest helper to test equality of lists/tuples ignoring item order
E.g., these asserts pass:
>>> assert [1, 2, 3, 3] == IgnoreOrder([3, 1, 2, 3])
>>> assert {"foo": [1, 2, 3]} == {"foo": IgnoreOrder([3, 2, 1])}
@soxofaan
soxofaan / ensure_pyspark_executor_logging.py
Created April 7, 2020 08:54
Decorator based trick to enable Python logging from PySpark executors
import functools
import logging
import pyspark
from typing import Callable
LOG_FORMAT = "[P%(process)s/%(name)s] %(levelname)s: %(message)s"
def ensure_executor_logging(
f=None, *,
@soxofaan
soxofaan / openeo-mask-example.ipynb
Last active March 27, 2020 08:08
openeo-mask-example.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@soxofaan
soxofaan / Issue107-graph-merging.ipynb
Created February 10, 2020 11:17
openeo python client issue #107 example
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@soxofaan
soxofaan / pyrasite-stacktrace-how-to.md
Last active April 25, 2024 10:50 — forked from reywood/how-to.md
How to get a stack trace from a stuck/hanging python script

How to get a stack trace for each thread in a running Python script

Sometimes a Python script will simply hang forever with no indication of what is going wrong. Perhaps it's polling a service that will never return a value that allows the program to move forward.

Here's a way to see where the program is currently stuck, using pyrasite a tool for injecting code into running Python processes.

Install gdb and pyrasite

Install gdb.

@soxofaan
soxofaan / openeo-mask-example.ipynb
Created January 13, 2020 08:35
OpenEO mask example
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@soxofaan
soxofaan / openeo-vito-binary-download.ipynb
Created December 10, 2019 13:13
openEO VITO download binary mask
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.