Skip to content

Instantly share code, notes, and snippets.

View durden's full-sized avatar

Luke Lee durden

View GitHub Profile
@durden
durden / parse_codeowners.py
Created December 27, 2024 16:28
Faster way to check CODEOWNERS on specific file/folders
"""
To use this you'll need the following installed into your env
- https://pypi.org/project/codeowners/
- https://pypi.org/project/tabulate/
Usage: parse_codeowners.py <git root> <space separated list of paths to check codeowners on>
The main benefit this over running just `codeowners <folder>` is that this script will ignore files
not tracked by git, making it much faster since for python projects it will ignore __pycache__
folders, etc.
@durden
durden / notes.md
Last active July 14, 2021 07:28
Script, Library, or Executable: You can have it all!
@durden
durden / logger_size.py
Created November 15, 2017 10:15
Get size in KB of your logging infrastructure
import sys
import logging
def get_logger_memory_footprint():
"""
Get tuple of (logger names, size in KB)
"""
loggers = logging.Logger.manager.loggerDict
@durden
durden / mock.py
Created November 14, 2017 08:55
Simple mocking in Python
import contextlib
@contextlib.contextmanager
def mock_attr(object_, orig_attr_name, mock_attr):
"""
Temporarily mock object attribute for testing
This is similiar to the unittest.patch.object in Python 3.3 just much
simpler for our limited needs and use in Python 2.7.
@durden
durden / getsizeof_recursive.py
Last active July 29, 2024 12:24
Get size of Python object recursively to handle size of containers within containers
##### Taken from https://github.com/bosswissam/pysize
import sys
def get_size(obj, seen=None):
"""Recursively finds size of objects"""
size = sys.getsizeof(obj)
if seen is None:
seen = set()
@durden
durden / css_edits.diff
Created June 27, 2016 08:05
CSS edits for markdown rendering
diff --git a/pskb_website/static/css/base.css b/pskb_website/static/css/base.css
index 519b677..30dfec1 100644
--- a/pskb_website/static/css/base.css
+++ b/pskb_website/static/css/base.css
@@ -588,7 +588,6 @@ a:hover.emphasize-dark {
}
#article pre, #article blockquote, #article form {
- margin-left: 21px;
word-wrap: break-word;

A common definition of a Python decorator is 'A function that takes a function and returns a function.' This is a straight-forward definition, however, it's a bit inaccurate. In practice, a Python decorator is actually more flexible than simply a function.

Callables

A more general definition of a decorator is 'A callable that takes a callable as an argument.' This is a subtle distinction, but it opens up a few new possibilities. This new definition now leads to another question.

@durden
durden / article.md
Last active October 26, 2015 09:06
Python versioning

Python spelunking

Motivation

I recently spent a little time reviewing a Python bug report and determining if I was running with a fixed version of the Python interpreter. I think this is a useful exercise for someone who is overly curious and not a core developer of the language.

This post is a rundown of my thought process while trying to figure this out.