This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
with suppress(FileNotFoundError): | |
with open('.env') as f: | |
line = f.readline() | |
while line: | |
k, v = line.split('=', 1) | |
os.environ[k] = v.strip() | |
line = f.readline() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class SetQueue(Queue): | |
def _init(self, maxsize): | |
self.queue = set() | |
def _put(self, item): | |
self.queue.add(item) | |
def _get(self): | |
return self.queue.pop() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import time | |
from pathlib import Path | |
import pywintypes | |
import win32con | |
import win32file | |
import winerror | |
WATCHED_DIR = str(Path("./").absolute()) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# based on https://stackoverflow.com/a/56428123/23972 | |
import commonmark | |
def docstring(app, what, name, obj, options, lines): | |
if len(lines) > 1 and lines[0] == "@&ismd": | |
md = "\n".join(lines[1:]) | |
ast = commonmark.Parser().parse(md) | |
rst = commonmark.ReStructuredTextRenderer().render(ast) | |
lines.clear() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://stackoverflow.com/a/49725198/23972 | |
// https://www.typescriptlang.org/play?#code/C4TwDgpgBAShCOBXAlgJwgQWAGQgQwGdgB5AOwgB4AVAGigGkIQCoIAPYCUgExYGsmAewBmUKlAC8UASBFiAfJICwAKCjqoABWQBjPtToBRNjoA2ibpRlzaDJgXnzVGqADIoAb2cuNAbXpQyKR2zAC6ALQA-ABcsAgo6NwU2noGDI5uWniowMh4psm6+rbGZhaUjMx09I5OahoAvv72oaqqQZyowng60ACyXIgAkpwAtp7eucCmELFEqEEA5gDc3jqCo2CC5KTAMVCkiKMARhCoq-VmRfuHJ2cX6rrbc8ALpCuqDW0qoJBQAMKmIrEVD-DZbHbASRxJBoTA4fBEMiUAaHEYQUZ0ADkVz0WKgAB8oDjwdsuMAsXVVOtSEQoAB3ZDAAAWYM2ZN2sUBwNBpMh0K89XUUxmsQARJwiGKaN51Ot2ZDYgBWABMMqFgRp4qepDFn2+NLpjJZ3L0XKBehBbIh5IFsqgItmUAlECl6pcuL4yoALO6NDrtTS9Sovipqds6WdUIJUAB1JnMgByEATZ3NPOtHKhUkFLkd4slwGl9oDzp1wdD4dpUNIgkMqGjcYTACFBCz05beQrbTn7fnnYXixrPT6-XK+eTYirfSWtWWg-qwypDVCozH4yzWyzY8yuMiABKEWPR95UcBO018K0T3Z2jX9l1u+0jqBKmfDm-AcUEZmCRCmbgoFOA4jlOVAoF3dAhxcUsxXLRdvl+aA4FhdAyFMEBkTSSoWHYTgeH4IRRHEKRrGIxQJHtFJiiMExzEsCgyLEap7Ece13A8KB-ECYIcIiGJ7RcFCEggJJqOwtiNRcdxNGyXJ8goOB1lQJJSnoip7GqeQ6EQHgIGEIJRMklwmj4xDzygdDMPIS9r27W8pGEuErKw1FhjGbFPXxIkSXsikqWXCMazrBt1wTFzyFiCKIFsrsbQ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://stackoverflow.com/a/49725198/23972 | |
export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick< | |
T, | |
Exclude<keyof T, Keys> | |
> & | |
{ | |
[K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>; | |
}[Keys]; | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://css-tricks.com/click-outside-detector/ | |
// https://codepen.io/chriscoyier/project/editor/AxPzxn | |
import React, { useEffect, useRef, forwardRef } from 'https://cdn.skypack.dev/react'; | |
const ClickOutsideDetector = forwardRef(function ClickOutsideDetector( | |
{ listen, onClickOutside, ignore, ...props }, | |
ref | |
) { | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://stackoverflow.com/a/51865579/23972 | |
function fakeBaseClass<T>(): new () => Pick<T, keyof T> { | |
return class {} as any; | |
} | |
// USAGE: | |
class FooProxy extends fakeBaseClass<Foo>(){ | |
private foo: Foo; // I would make this private as it is not really accessible on what the constructor of FooProxy returns (maybe remove it as I see no use for it) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import resolveConfig from "tailwindcss/resolveConfig"; | |
// Update next import to the location of your tailwind config. If you're using CRA | |
// and your `tailwind.config.js` is outside of `src`, you might have to do | |
// Shenanigans™ to import it. (You can use craco and https://stackoverflow.com/a/60353355/23972) | |
import tailwindConfig from "../../tailwind.config"; | |
const THEME = resolveConfig(tailwindConfig).theme; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Given list of stings, access nested properties in object. | |
* | |
* @param {Object<string, *>} object | |
* @param {Array<string>} accessors | |
* @returns {*} | |
*/ | |
function nestedGet(object, accessors) { | |
return accessors.reduce((acc, prop) => { | |
return acc?.[prop]; |