Skip to content

Instantly share code, notes, and snippets.

View meadsteve's full-sized avatar
🌲
stuff

Steve Brazier meadsteve

🌲
stuff
View GitHub Profile
class LolDomainString(str):
def __matmul__(self, other):
return LolDomainString(f"{self}@{other}")
def __getattr__(self, item):
return LolDomainString(f"{self}.{item}")
steve = LolDomainString("meadsteve")
@meadsteve
meadsteve / unique.py
Created June 29, 2022 06:45
Iterate over unique items in a python iterable
from typing import Iterable, Hashable
def iterate_uniquely(items: Iterable[Hashable]):
already_emitted = set()
for item in items:
key = hash(item)
if key not in already_emitted:
yield item
already_emitted.add(key)
CODE = "def say_message(message):;0;1print(message);0say_message('hello')"
exec(CODE.replace(";0", "\n").replace(";1", "\t"))
@meadsteve
meadsteve / collections.py
Last active September 9, 2020 08:13
Constrained types in python
class NonEmptyList(list, Generic[T]):
def __init__(self, *members: T):
super().__init__([*members])
self._validate_constraints()
def _validate_constraints(self):
if len(self) < 1:
raise RuntimeError("NonEmptyList must have at least one member")
@meadsteve
meadsteve / deserialize_pydantic.py
Last active August 1, 2019 14:15 — forked from henriklindgren/deserialize_pydantic.py
Unpack dict based on pydantic BaseModel into model
#This is free and unencumbered software released into the public domain.
#
#Anyone is free to copy, modify, publish, use, compile, sell, or
#distribute this software, either in source code form or as a compiled
#binary, for any purpose, commercial or non-commercial, and by any
#means.
#
#In jurisdictions that recognize copyright laws, the author or authors
#of this software dedicate any and all copyright interest in the
#software to the public domain. We make this dedication for the benefit
@meadsteve
meadsteve / Dockerfile
Last active April 2, 2019 08:11 — forked from philcross/Dockerfile
docker example
#services/php/Dockerfile
FROM php:7.3-fpm
WORKDIR /var/www/html
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV COMPOSER_NO_INTERACTION=1
ENV COMPOSER_HOME=/usr/local/share/composer
@meadsteve
meadsteve / keybase.md
Created June 29, 2018 08:27
keybase.md

Keybase proof

I hereby claim:

  • I am meadsteve on github.
  • I am meadsteve (https://keybase.io/meadsteve) on keybase.
  • I have a public key whose fingerprint is C00A D434 70A0 113C EF31 8E28 6B08 AFC9 C001 CE6F

To claim this, I am signing this object:

@meadsteve
meadsteve / gist:8419414
Last active January 3, 2016 05:59
For when you need something. Anything in php.
<?php
class something implements \ArrayAccess, \Iterator
{
protected $loopable = true;
public function offsetExists($offset)
{
return true;
}
@meadsteve
meadsteve / Selenium2Driver.php
Created August 20, 2013 08:11
Alteration of the Selenium2Driver file to allow selectOption to pick based on label as well as value.
<?php
namespace Behat\Mink\Driver;
use Behat\Mink\Session,
Behat\Mink\Element\NodeElement,
Behat\Mink\Exception\DriverException;
use WebDriver\WebDriver;
use WebDriver\Key;
@meadsteve
meadsteve / gist:4665196
Last active December 11, 2015 21:48 — forked from jazlalli/gist:4663914
var converter = (function () {
'use strict';
var romanNumeralsArray = [
{roman: 'I', number: 1},
{roman: 'V', number: 5},
{roman: 'X', number: 10},
{roman: 'L', number: 50},
{roman: 'C', number: 100},
{roman: 'D', number: 500},