Skip to content

Instantly share code, notes, and snippets.

View phalt's full-sized avatar
🐍

Paul Hallett phalt

🐍
View GitHub Profile
@phalt
phalt / async.py
Created October 19, 2023 20:35
Run async functions together and return them
import asyncio
async def gather_functions(funcs):
tasks = [asyncio.create_task(f) for f in funcs]
return await asyncio.gather(*tasks)
def run(funcs):
"""
Run a list of async functions and return the results.
@phalt
phalt / dict_to_xml.py
Created August 28, 2020 01:50
Python dictionary to xml string
from xml.etree.ElementTree import Element, tostring
def dict_to_xml(tag: str, d: dict) -> str:
"""
Converts a Python dictionary to an XML tree, and then returns
it as a string.
Works with recursively nested dictionaries!
"tag" is the name of the top-level XML tag.
"""
elem = Element(tag)

Functions that print their own source code.

Python

x = ['print("x =", x)', 'for s in x: print(s)']
print("x =", x)
for s in x: print(s)
@phalt
phalt / example.py
Created November 6, 2018 17:16
Context Manager and a decorator too!
from contextlib import ContextDecorator
class me_decorate(ContextDecorator):
def __init__(self, *args, **kwargs):
self.input_value = kwargs.get('keyword')
super(me_decorate, self).__init__()
def __enter__(self, *args, **kwargs):
print(self.input_value)
@phalt
phalt / ordered_set.py
Created December 7, 2017 13:55
Python 3.6 ordered set using a Dict
'''
In python 3.6 dictionaries are ordered:
"The order-preserving aspect of this new implementation
is considered an implementation detail and should
not be relied upon."
But let's face it, we're going to use it and it is
going to become a consistent feature.
@phalt
phalt / abstract.py
Created September 7, 2017 09:00
Abstract Base models
from django.db import models
class DateTimeModel(models.Model):
class Meta:
abstract = True
date_created = models.DateTimeField(auto_now_add=True)
date_updated = models.DateTimeField(auto_now=True)
@phalt
phalt / .bash_profile
Created September 4, 2017 15:52
bash_profile
# Virtualenv wrapper stuff
export WORKON_HOME=~/Envs
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
# Make sure virtualenv is active before using pip
export PIP_REQUIRE_VIRTUALENV=true
# Various git shorthands
alias gs="git status"
@phalt
phalt / com.googlecode.iterm2.plist
Last active September 1, 2017 14:30
iterm2 config
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>AboutToPasteTabsWithCancel</key>
<true/>
<key>AboutToPasteTabsWithCancel_selection</key>
<integer>2</integer>
<key>AppleAntiAliasingThreshold</key>
<integer>1</integer>
@phalt
phalt / reverse.py
Last active March 8, 2017 10:41
0(n) runtime string reverse
# 0(n) runtime
# Only needs to move up to half the way of the list in order to shuffle things around.
# Something fast would be a merge sort with a key that knows the new order
words = 'hello world'
# Create to a List of the words and get the length as an Int.
# We don't actually need to cast it to a List in Python.
# Indexing Strings in Python works like a List.

Keybase proof

I hereby claim:

  • I am phalt on github.
  • I am phalt (https://keybase.io/phalt) on keybase.
  • I have a public key whose fingerprint is 138D 0025 66E7 B92D A195 4591 7A5E E47C 51C0 E3BA

To claim this, I am signing this object: