Skip to content

Instantly share code, notes, and snippets.

@internetimagery
internetimagery / pew.py
Last active July 21, 2025 09:49
loading animation
import time
import sys
anim = (
"\r| |",
"\r| |",
"\r| |",
"\r| |",
"\r| |",
"\r} |",
@internetimagery
internetimagery / factory.py
Last active July 12, 2025 21:34
Separate factory from class
import dataclasses
class DataFactory(type):
def from_number(cls, num: int) -> "Data":
return cls(str(num))
@dataclasses.dataclass
class Data(metaclass=DataFactory):
value: str
@internetimagery
internetimagery / .vimrc
Last active June 13, 2025 07:42
Current vimrc base
" Install vim-plug with following command
" curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
" Then ':PlugInstall' to install them
" Set leader to space. This is set up before plugins are loaded.
let mapleader = " " " map leader to Space
" Declare plugins
call plug#begin()
@internetimagery
internetimagery / emoji.py
Last active October 27, 2024 08:35
Apply functions happily
from functools import partial
import builtins
class Emoji:
""" Execute functions with style """
__empty = object()
def __init__(self, left=__empty, right=__empty):
self.__left = left
self.__right = right
@internetimagery
internetimagery / range_expression.py
Last active April 24, 2023 11:20
Simple range expression parsing.
import re
def parse_compact_range(expression):
numbers = set()
for match_ in re.finditer(r"(?:(\d+)\s*\-\s*(\d+)|(\d+))\s*(?:,|$)", expression):
start, stop, exact = match_.group(1,2,3)
if exact is not None:
numbers.add(int(exact))
else:
begin, end = sorted(map(int, (start, stop)))
@internetimagery
internetimagery / git_annex_notes.md
Last active June 4, 2025 21:59
Git Annex Notes
@internetimagery
internetimagery / img_sync.py
Last active April 21, 2023 21:43
Extract thumbnail images from gpx files for gps usage.
import re
import os
import html
import shutil
import logging
import tempfile
from functools import partial
from threading import Lock
from urllib.request import urlopen, Request
@internetimagery
internetimagery / gevent_multiprocess.py
Last active September 22, 2022 11:05
Simple multiprocess with gevent
from multiprocessing import Pool as MPool, current_process
from gevent.threadpool import ThreadPool
from gevent.pool import Pool as GPool
from contextlib import closing
class ProcessPool(ThreadPool):
def __init__(self, procs, **kwargs):
super(ProcessPool, self).__init__(procs)
self._m_pool = MPool(procs, **kwargs)
from PyQt5 import QtWidgets, QtCore
import gevent
import random
import weakref
def getData(key):
data = "{}_{}_{}".format(key[0], key[1], random.choice("abcdefg"))
gevent.sleep(random.random() * 5 + 2)
return data
@internetimagery
internetimagery / gevent_poll_loop.py
Last active July 20, 2022 10:29
Super simple gevent qt loop polling
from PyQt5 import QtWidgets, QtCore
import gevent
def test():
print("PRESSED")
for i in range(5):
gevent.sleep(1)
print("Waited", i)
print("Done")