Skip to content

Instantly share code, notes, and snippets.

@bofm
bofm / flatten.lua
Created June 10, 2019 17:26
lua flatten table
local function noop(...)
return ...
end
-- convert a nested table to a flat table
local function flatten(t, sep, key_modifier, res)
if type(t) ~= 'table' then
return t
end
@bofm
bofm / myqueue.py
Created December 7, 2016 13:50
Enhanced Python queue with additional .getall(), .clear() and .close() methods.
import threading
from queue import Empty, Full
class QueueClosed(Exception):
pass
class MyQueue():
@bofm
bofm / calculate_new_coverage.py
Last active September 11, 2023 07:52
Calculate test coverage for the new code only. Usable in pull/merge requests.
"""
Calculates test coverage for the new code only, that is for the added and
changed lines of code.
Usage:
pytest --cov --cov-report=xml
git diff master..HEAD |python calculate_new_coverage.py --coverage-report coverage.xml
"""
@bofm
bofm / argparse_call.py
Created July 6, 2023 08:56
Automatically parse args and call a function based on it's signature.
import inspect
from argparse import ArgumentParser
def argparse_call(fn):
sig = inspect.signature(fn)
p = ArgumentParser()
for param in sig.parameters.values():
kwargs = {
'type': param.annotation,
@bofm
bofm / x.md
Created August 29, 2018 12:29
Tarantool upgrate problem

How to reproduce?

$ docker network create n1

first instance

$ docker run --rm -it --name t1 --net n1  -e TARANTOOL_REPLICATION=t1:3301,t2:3301 progaudi/tarantool:1.10.1-135-g193ef4150
@bofm
bofm / pydantic_typed_dict.py
Last active January 13, 2021 21:00
python pydantic typed dict validation
from functools import wraps
from typing import TypedDict
from pydantic import BaseModel, validate_arguments
def replace_typed_dict_annotations(annotations):
new_annotations = {}
for k, T in annotations.items():
if type(T).__name__ == '_TypedDictMeta':
from typing import (
Any,
Dict,
NamedTuple,
)
import pytest
class Case(NamedTuple):
from dataclasses import dataclass
import pytest
from lib.util import paths_eq
from collections.abc import Mapping
_MISS = object()
@bofm
bofm / f.py
Last active June 28, 2020 11:37
f
from functools import partial
class F:
__slots__ = ('fns',)
def __init__(self, *fns):
self.fns = fns
def __call__(self, *args, **kwargs):
@bofm
bofm / compose.py
Last active June 12, 2020 22:23
Python compose picklable
class compose:
__slots__ = ('f', 'fs')
def __init__(self, *fs):
self.f, *self.fs = reversed(fs)
def __call__(self, *args, **kwargs):
result = self.f(*args, **kwargs)
for f in self.fs:
result = f(result)