Peter the penguin logo credits go to catalyststuff on freepik.com
Penguin is a lightweight, customizable stopwatch β± decorator that helps you determine how long it takes for your functions to run. It supports both synchronous (@penguin) and asynchronous (@penguin_async) functions.
The source code of this package lives here: https://github.com/espitiaandres/penguin
To install penguin-py with the command line, run this command:
pip install penguin-py.
To install penguin-py using a requirements.txt file, add this line to your requirements.txt file.
penguin-py==0.3.12
For synchronous functions, use the @penguin() decorator.
β To run with default kwargs:
from penguin_py import penguin
@penguin()
def foo(test1, test2=None):
# Note: this function can be anything!
for i in range(10000000):
pass
return "test", True
test = foo("", test2="")This will output the following to your logger:
β To run with user specified kwargs:
@penguin(
verbose=True,
show_args=True,
show_return=True,
foreground='cyan',
background='yellow',
)
def foo(test1, test2=None):
for i in range(10000000):
pass
return "test", True
test = foo("", test2="")This will output the following to your logger:
Note: For a more detailed list of all kwargs and their defaults, visit this section: List of kwargs
β Since penguin is a decorator that takes in kwargs, do not call it without the brackets ().
from penguin_py import penguin
@penguin
def foo(test1, test2=None):
# Note: this function can be anything!
for i in range(10000000):
pass
return "test", True
test = foo("", test2=":")If you do this, you'll get a TypeError relating to arguments.
For asynchronous functions, use the @penguin_async() decorator.
β To run with default kwargs:
from penguin_py import penguin
@penguin_async()
def foo(test1, test2=None):
# Note: this function can be anything!
for i in range(10000000):
pass
return "test", True
test = foo("", test2="")This will output the following to your logger:
β To run with user specified kwargs:
@penguin(
verbose=True,
show_args=True,
show_return=True,
foreground='cyan',
background='yellow',
)
def foo(test1, test2=None):
for i in range(10000000):
pass
return "test", True
test = foo("", test2="")This will output the following to your logger:
verbose: WhenTrue, it shows all logs that are described by the other kwargs. WhenFalse, each kwarg would determine if that specific log is shown - default:Falseshow_args: WhenTrue, it shows the function's signature, with the*argsand**kwargsbeing passed in.- default:
False
- default:
show_return: WhenTrue, it shows the function's return value(s).- default:
False
- default:
foreground: When chosen from this list,["red", "yellow", "green", "blue", "magenta", "cyan", "grey"], it colour the logger output text the chosen colour.- default:
"grey"
- default:
background: When chosen from this list,["red", "yellow", "green", "blue", "magenta", "cyan", "grey", "black", "white"], it colour the logger output background the chosen colour.- default:
"black"
- default:
Documentation of penguin-py can be found here: https://github.com/espitiaandres/penguin/blob/master/README.md
If you find any bugs or have any suggestions to penguin-py, submit them in the issues tab in the Github repo. This can be found here: https://github.com/espitiaandres/penguin/issues
Distributed under the terms of the MIT license, penguin-py is free and open source software.