Skip to content

Instantly share code, notes, and snippets.

🚚
keep on truckin'

Alec Nikolas Reiter justanr

🚚
keep on truckin'
Block or report user

Report or block justanr

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@justanr
justanr / deprecate.py
Last active Apr 16, 2018
Setting up deprecations of Pluggy Hooks
View deprecate.py
import sys
import warnings
import inspect
from pluggy import HookimplMarker, HookspecMarker, PluginManager, _HookCaller, normalize_hookimpl_opts, HookImpl
class MetadataHookspecMarker(HookspecMarker):
"""
Allows storing arbitrary metadata on the hookspec options
instead of what Pluggy sets by default.
"""
View comparator.py
from abc import ABCMeta, abstractmethod
ABC = ABCMeta('ABC', (object,), {})
class ConversionStrategy(ABC):
@abstractmethod
def convert(self, a):
raise NotImplementedError
class IntegerConversionStrategy(ConversionStrategy):
View uncle_vernon.py
from datetime import datetime
SUNDAY = 6
class UncleVernonMiddleware(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
if environ['REQUEST_METHOD'].lower() == 'post' and datetime.now().weekday() == SUNDAY:
@justanr
justanr / example.py
Last active Jun 15, 2016
Proof of Concept for adding kinda Implicits to Python
View example.py
class Thing:
def r(self):
pass
class HasWhatever(metaclass=ImplicitMeta, companion=Thing):
whatever = lambda s: print(s, 1)
@property
def nine(self):
return 'nine'
View tox.ini
[tox]
envlist = cov-init,py27,py34,py35,py36,cov-report
[testenv]
usedevelop = True
setenv =
COVERAGE_FILE = .coverage.{envname}
PYTHONDONTWRITEBYTECODE = pls
commands =
py.test --cov={toxinidir}/flask_sleepy --cov-report term-missing
@justanr
justanr / builder.py
Last active Feb 17, 2016
Test Builder
View builder.py
from copy import deepcopy
class Builder(object):
def __init__(self, target, *args, **kwargs):
self._target = target
self._kwargs = kwargs
self._args = list(args)
def having(self, *args, **kwargs):
@justanr
justanr / money.py
Last active Jul 20, 2016
Example of a small value object representing money.
View money.py
import decimal
from functools import total_ordering
from numbers import Real
class Context(object):
def __init__(self, **kwargs):
self.context = decimal.Context(**kwargs)
def __enter__(self):
with decimal.localcontext(self.context) as c:
@justanr
justanr / _core.py
Last active Jun 3, 2019
Clean Architecture In Python
View _core.py
from abc import ABC, ABCMeta, abstractmethod
from collections import namedtuple
from itertools import count
PayloadFactory = namedtuple('PayloadFactory', [
'good', 'created', 'queued', 'unchanged', 'requires_auth',
'permission_denied', 'not_found', 'invalid', 'error'
])
"""
View example.py
class UserNotFound(Exception):
@classmethod
def by_username(cls, username):
return cls("No user found with username: {0}".format(username))
def find_user(username):
user = User.query.filter_by(username==username).first()
if not user:
raise UserNotFound.by_username(username)
return user
@justanr
justanr / actually_do_the_thing.py
Last active Sep 17, 2015
Todo: Support loading from arbitrary data store (yaml, xml, Mongo, etc)
View actually_do_the_thing.py
from .command_bus import DefaultCommandBus, ValidatingCommandBus, LoggingCommandBus, SupportsSelfExecution
from .command_name_formatters import (ChangeToOn_CommandName, ChangeToLowerCaseCommandName,
RemoveCommandFromName, MultipleCommandNameFormatter)
from .command_validators import LogsFailedValidationsValidator, GenerousMappingCommandValidator
from .commands import HelloPersonCommand, HelloPersonHandler
from .dependencies import DependencyStore, BasicDependencySatsifier
from .displayer import CallableDisplayer
from .formatter import StringFormatter
from .inflector import (CallableOrNextInflector, DefaultInflector, InstantiatingInflector
CommandNameInflector, MultipleCommandNameInflector, FirstOneWinsInflector)
You can’t perform that action at this time.