Skip to content

Instantly share code, notes, and snippets.

View mplanchard's full-sized avatar

Matthew Planchard mplanchard

View GitHub Profile
@mplanchard
mplanchard / 2d_array.py
Created March 13, 2019 17:14
2D Array Problem
test_array = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
]
# [2][0]
@mplanchard
mplanchard / time_inline_v_static.py
Created January 3, 2019 14:34
Timing of Static Methods vs. Inline Functions
"""
========================================================================
Timing Static Methods vs. Inline Functions
========================================================================
A simple test to compare the overhead of calling static functions vs.
defining and calling inline functions.
At least in this experiment, static methods are ~15-20% faster. This
is of course not even considering their improvements in testability
@mplanchard
mplanchard / pytest_parametrize_stack.py
Created February 18, 2018 04:01
pytest parametrize stack
import pytest
@pytest.mark.parametrize('foo', ('a', 'b'))
@pytest.mark.parametrize('bar', (True, False))
def test_multi(foo, bar):
print(foo, bar)
@mplanchard
mplanchard / pytest_parametrize_product.py
Created February 18, 2018 03:55
pytest_parametrize_product
import itertools
import pytest
@pytest.mark.parametrize(
'foo, bar', itertools.product(('a', 'b'), (True, False))
)
def test_multi(foo, bar):
print(foo, bar)
@mplanchard
mplanchard / pytest_parametrize_multi.py
Created February 18, 2018 03:48
pytest parametrize multi
import pytest
@pytest.mark.parametrize('foo, bar', (
('a', True),
('a', False),
('b', True),
('b', False)
))
def test_multi(foo, bar):
print(foo, bar)
@mplanchard
mplanchard / pytest_parametrize_basic.py
Last active February 18, 2018 03:46
pytest parametrize basic
import pytest
@pytest.mark.parametrize('foo', ('a', 'b'))
def test_something(foo):
print(foo)
@mplanchard
mplanchard / version_check_2_3.py
Created January 23, 2018 14:47
Python 2/3 Compatible Version Checking without Third Party Packages
"""This gist describes how to check which version of Python is running.
This one is easy enough that there's really no reason to reach for six's
PY2/PY3 attributes.
"""
from sys import version_info
# verison_info acts like a named tuple of the form
# (major, minor, micro, releaselevel, serial), so standard tuple
@mplanchard
mplanchard / metaclasses_2_3.py
Created January 23, 2018 14:35
Python 2/3 Compatible Metaclasses Without Third Party Dependencies
"""This example uses the ABCMeta class as its exemplar metaclass."""
from abc import ABCMeta
# Create an instance of the metaclass. We can define __slots__ to be
# an empty tuple, because we don't need this class to store any attributes.
# This instance can be used multiple times, imported, etc., as desired.
ABC = ABCMeta('ABC', (object,), {'__slots__': ()})
@mplanchard
mplanchard / pytest_logtest.py
Created November 28, 2017 22:02
PyTest memory utilization test
from logging import basicConfig, getLogger
import pytest
basicConfig()
log = getLogger()
log.setLevel('DEBUG')
def func_that_logs_a_lot():
for i in range(1000):
log.info('foo output %s/1000', i)
@mplanchard
mplanchard / datetime.py
Created March 1, 2017 17:51
Datetime New Obj vs Replace
from datetime import datetime
from timeit import timeit
iterations = int(1e6)
def method_one():
now = datetime.now()
hour = datetime(now.year, now.month, now.day, now.hour)