Skip to content

Instantly share code, notes, and snippets.

def iter_lines(gen):
buffer = ""
for chunk in gen:
buffer += chunk
while True:
pos = buffer.find('\n')
if pos <= -1:
break
yield buffer[:pos+1]
buffer = buffer[pos+1:]
@grubberr
grubberr / pty_spawn.py
Created February 12, 2022 09:58
Usage: pty_spawn.py COMMAND
#!/usr/bin/env python3
import os
import sys
import pty
def waitstatus_to_exitcode(status):
"""
https://github.com/python/cpython/blob/e0bc8ee945af96f9395659bbe3cc30b082e7a361/Modules/posixmodule.c#L14658-L14748
#!/Users/ant/temp/.venv/bin/python3
import io
import csv
import random
import string
import requests
import responses
import tracemalloc
(Pdb) print(json.dumps(schema, indent=4))
{
"allOf": [
{
"$ref": "#/definitions/PaginationStrategy"
},
{
"type": "object",
"required": [
"page_size"
@grubberr
grubberr / csv_field_limit_error.py
Created September 1, 2023 12:48
csv field limit error
import io
import csv
buff = io.StringIO("field\nvalue1\nvalue" + csv.field_size_limit() * 'e')
reader = csv.reader(buff)
for row in reader:
pass
@grubberr
grubberr / csv_a_lot_fields_read.py
Created September 1, 2023 12:50
csv_a_lot_fields_read.py
import io
import csv
data = []
for l in range(10):
fields = []
for f in range(1000000):
fields.append('"field{}"'.format(f))
@grubberr
grubberr / class_get_attr_name_as_string.py
Created November 2, 2023 18:21
class_get_attr_name_as_string.py
#!/usr/bin/env python3
class cstr(str):
"""to avoid string to be 'interned'"""
class Meta(type):
def __new__(cls, name, bases, attrs):
for k, v in attrs.items():