Skip to main content

Penguin: a customizable stopwatch decorator

Project description

🐧 penguin-py 🐧

Penguin is a lightweight, customizable stopwatch ⏱ decorator that helps you determine how long it takes for your functions to run. It supports both synchronous and asynchronous functions.

Source code

The source code of this package lives here: https://github.com/espitiaandres/penguin

Installation

With Command Line

To install penguin-py with the command line, run this command:

pip install penguin-py.

With a requirements.txt file

To install penguin-py using a requirements.txt file, add this line to your requirements.txt file.

penguin-py==0.3.14

Usage

Synchronous Functions

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="")

✅ 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="")

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 = test_func("", test2=":")

If you do this, you'll get a TypeError relating to arguments.

Asynchronous Functions

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:

Sample penguin output

✅ 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:

Sample penguin output kwargs

List of kwargs

  • verbose: When True, it shows all logs that are described by the other kwargs. When False, each kwarg would determine if that specific log is shown - default: False
  • show_args: When True, it shows the function's signature, with the *args and **kwargs being passed in.
    • default: False
  • show_return: When True, it shows the function's return value(s).
    • default: False
  • foreground: When chosen from this list, ["red", "yellow", "green", "blue", "magenta", "cyan", "grey"], it colour the logger output text the chosen colour.
    • default: "grey"
  • 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"
  • log_level: The logging level to use for all log messages from this decorator (e.g., logging.DEBUG, logging.INFO, logging.WARNING).
    • default: logging.DEBUG

Documentation

Documentation of penguin-py can be found here: https://github.com/espitiaandres/penguin/blob/master/README.md

Bugs/Requests

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

License

Distributed under the terms of the MIT license, penguin-py is free and open source software.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

penguin_py-0.3.14.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

penguin_py-0.3.14-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file penguin_py-0.3.14.tar.gz.

File metadata

  • Download URL: penguin_py-0.3.14.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.6

File hashes

Hashes for penguin_py-0.3.14.tar.gz
Algorithm Hash digest
SHA256 a4800b4665cffa490ef84ff3d958fb2f78d815ac010a600b8b8288e6fdb9c30a
MD5 7abf0d9f4d14abf47af0af36bd1877c2
BLAKE2b-256 11ab55501f76c12ef99f7a72f5be70b9a9f294b891b8c4d9f0d7474ee1e1724d

See more details on using hashes here.

File details

Details for the file penguin_py-0.3.14-py3-none-any.whl.

File metadata

  • Download URL: penguin_py-0.3.14-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.6

File hashes

Hashes for penguin_py-0.3.14-py3-none-any.whl
Algorithm Hash digest
SHA256 b28b83db3bd78ca22b77f8977e1b39b24379fc95b8954ad931e321630b67b42f
MD5 278df30731f1a5285a2e3d14139adb0e
BLAKE2b-256 a4ea55f76a7bd944eca72cf7d981bbd50f4a53253fe2e90a12e05804e5e70dce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page