Skip to content

Instantly share code, notes, and snippets.

View dvarrazzo's full-sized avatar

Daniele Varrazzo dvarrazzo

View GitHub Profile
@dvarrazzo
dvarrazzo / dicttuple.py
Last active September 7, 2022 16:08
DictCursor for psycopg 3
class DictTuple(tuple):
"""Tuple class with added item getting by name.
"""
def __new__(cls, d):
rv = super().__new__(cls, d.values())
rv._map = d
return rv
def __repr__(self):
return f"{type(self).__qualname__}({self._map!r})"
@dvarrazzo
dvarrazzo / stream.mermaid
Created May 1, 2022 19:41
Flow diagram of a cursor.stream() iteration in psycopg 3
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@dvarrazzo
dvarrazzo / tests.yaml
Created March 1, 2021 00:13
Sketch of psycopg3 test action
name: Tests
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
tests-python:
@dvarrazzo
dvarrazzo / dchost
Last active January 27, 2021 16:21
#!/bin/bash
# Return the ip address for a container in docker-compose
set -euo pipefail
# set -x
if [[ "${1:-}" == "" ]]; then
echo "usage: $0 container
#!/usr/bin/env python3
"""
Apply database patches.
Applied patches are recorded in the schema_patch table of the database.
The dsn to connect to defaults to a local one (empty connection string). It can
be chosen using the command line or an environment variable. Patches
application is interactive by default.
@dvarrazzo
dvarrazzo / ministan.py
Last active April 19, 2020 01:00
A simple way to generate valid xhtml in Python (circa 2007)
r"""Implementation of a `stan`_\ -like XML description language.
.. _stan: http://www.kieranholland.com/code/documentation/nevow-stan/
An example XHTML page can be generated by:
.. python::
def items():
return [ T.li['foo'], T.li['bar'], T.li['baz'] ]
@dvarrazzo
dvarrazzo / test_anyio.py
Created April 1, 2020 11:02
A test to use psycopg3 with anyio
"""
A quick test to try and run psycopg3 with anyio
"""
import anyio
from psycopg3 import exceptions as exc
from psycopg3.waiting import Wait, Ready
from psycopg3.connection import AsyncConnection
import logging
#!/bin/bash
# A backup solution based on rsync with hard links and no deletion of old images
# Deletion would be delegated to a script such as weeder
# https://pypi.org/project/weeder/
set -euo pipefail
set -x
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
#!/usr/bin/env python3
"""Render a view of the k8s status in a namespace.
Example:
# Display the state in console
k8splore.py -n my-ns -c my-cx --format text
# Display the state as a graph, with some nodes omitted.
k8splore.py -n my-ns -c my-cx --drop-kind ReplicaSet Pod Job \\
@dvarrazzo
dvarrazzo / dfhash.py
Created February 1, 2020 13:59
Stable hash of Dockerfile content
#!/usr/bin/env python3
"""Emit an hash on stdout of a dockerfile and the files added by it.
- Dockerfile comments don't affect the hash value.
- If a directory is added by dockerfile, only the git-versioned files are
included in the hash.
- A single file hash matches md5sum result.
"""
import os