Accrocchio is a library to mark and being notified of smelly code (a.k.a, "accrocchio").
Project description
accrocchio
Accrocchio is a library to mark and being notified of smelly code (a.k.a, “accrocchio”).
Example
from accrocchio.badgeofshame import accrocchio
from accrocchio import observers
class AClassThatSmells(metaclass=accrocchio):
pass
@accrocchio
def a_function_that_smells():
pass
accrocchio.how_many() # here we have 1, as you have declared a smelly class
AClassThatSmells()
accrocchio.how_many() # here we have 2, as you have created an instance of a smelly class
a_function_that_smells()
accrocchio.how_many() # here we have 3, as you have invoked a smelly function
accrocchio.reset()
accrocchio.how_many() # here we have 0
# You can also be notified of smelly code execution, such as:
class MyAccrocchioObserver(observers.AccrocchioObserver):
def on_accrocchio(self):
print('Another accrocchio!')
def reset(self):
print('Reset accrocchi')
accrocchio.add_observer(MyAccrocchioObserver())
a_function_that_smells() # prints 'Another accrocchio!'
accrocchio.reset() # prints 'Reset accrocchi'
The library also implements Michael Duell’s resign patterns.
from accrocchio.badgeofshame import accrocchio, detonator
@accrocchio
def accrocchio_fun():
pass
@detonator
def detonator_fun():
pass
accrocchio_fun()
accrocchio.how_many() # here we have 1, as you have invoked an accrocchio function
detonator.how_many() # here we have 0, as you have never invoked a detonator function
detonator_fun()
detonator.how_many() # here we have 1, as you have invoked a detonator function
accrocchio.how_many() # here we have 2, as you have invoked a detonator function, which is an accrocchio
For a full list of the implemented accrocchio resign patterns, please consult Michael Duell’s resign patterns.
Some final notes:
This library is useful only if a small part of the software is an accrocchio
We intentionally left out Python versions before 3.5, as we think they are a complete accrocchio.
We intentionally did not pass the accrocchio to the ‘on_accrocchio’ observer function, as you should treat all the accrocchios the same way
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.