Skip to main content

Package designed to enhance the development process by providing a collection of tools/utilities

Project description

🐣💻 Developing Tools

Test Pipeline Lint Pipeline Coverage Pipeline Package Version Supported Python Versions

The "Developing Tools" project is a Python 🐍 package designed to enhance the development process by providing a collection of tools/utilities aimed at improving debugging, performance measurement, error handling, ...

These tools ⚒️ are intended to assist developers in identifying performance bottlenecks, handling transient errors, and gaining insights into function behavior during runtime. The package is easy to install and use, making it a good addition to any Python developer's toolkit 🚀.

Table of Contents

🔼 Back to top

📥 Installation

pip install developing-tools



🔼 Back to top

💻 Utilization

Execution Time

The execution_time decorator allows you to measure the execution time of a function. The decorator has one parameter:

  • output_decimals: Number of decimal places to display in the output. Default is 10.
from time import sleep
from developing_tools.functions import execution_time

@execution_time(output_decimals=2)
def too_slow_function() -> None:
    sleep(2)

too_slow_function()

# >>> Function "too_slow_function" took 2.00 seconds to execute.

🔼 Back to top

Retry It

The retryit decorator allows you to retry a function multiple times in case of failure. The decorator has two parameters:

  • attempts: The number of attempts to execute the function, if None the function will be executed indefinitely. Default is None.
  • delay: The delay between attempts in seconds, if a tuple is provided the delay will be randomized between the two values. Default is 5 seconds.
  • raise_exception: If True the decorator will raise the last caught exception if the function fails all attempts. Default is True.
  • valid_exceptions: A tuple of exceptions that the decorator should catch and retry the function, if None the decorator will catch all exceptions. Default is None.
from developing_tools.functions import retryit

@retryit(attempts=3, delay=0.5, raise_exception=True, valid_exceptions=(ValueError,))
def failing_function() -> None:
    raise ValueError('This function always fails!')

failing_function()

# >>> Function failed with error: "This function always fails!". Retrying in 0.50 seconds ...
# >>> Attempt [2/3] to execute function "failing_function".
# >>> Function failed with error: "This function always fails!". Retrying in 0.50 seconds ...
# >>> Attempt [3/3] to execute function "failing_function".
# >>> Function failed with error: "This function always fails!". No more attempts.
# Traceback (most recent call last):
#   File "<file_path>/main.py", line 7, in <module>
#     failing_function()
#   File "<file_path>/developing_tools/functions/retryit.py", line 132, in wrapper
#     raise exception
#   File "<file_path>/developing_tools/functions/retryit.py", line 124, in wrapper
#     return function(*args, **kwargs)
#            ^^^^^^^^^^^^^^^^^^^^^^^^^
#   File "<file_path>/main.py", line 5, in failing_function
#     raise ValueError('This function always fails!')
# ValueError: This function always fails!

🔼 Back to top

Print Parameters

The print_parameters decorator allows you to print the parameters of a function. The decorator has two parameters:

  • show_types: If True the decorator will print the types of the parameters. Default is False.
  • include_return: If True the decorator will print the return value of the function. Default is True.
from developing_tools.functions import print_parameters

@print_parameters(show_types=True, include_return=True)
def normal_function(a: int, b: str, c: int, d) -> str:
    return a

normal_function(1, 'Hello', c=3, d=4)

# >>> Positional arguments:
# >>>         Argument 1: value "1", type int
# >>>         Argument 2: value "Hello", type str
# >>>
# >>> Keyword arguments:
# >>>         Argument c: value "3", supposed type int, real type int
# >>>         Argument d: value "4", supposed type Any, real type int
# >>>
# >>> Return value:
# >>>         "1", supposed type str, real type int

🔼 Back to top

Timeout

The timeout decorator allows you to set a maximum execution time for a function. The decorator has one parameter:

  • seconds: The maximum number of seconds the function is allowed to execute before raising a TimeoutError. Default is 10 seconds.
from time import sleep
from developing_tools.functions import timeout

@timeout(seconds=2)
def too_slow_function() -> None:
    sleep(5)

too_slow_function()

# >>> TimeoutError: Function too_slow_function exceeded the 2 seconds timeout.



🔼 Back to top

🔑 License

This project is licensed under the terms of the MIT license.

🔼 Back to top

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

developing_tools-2024.10.22.tar.gz (12.4 kB view hashes)

Uploaded Source

Built Distribution

developing_tools-2024.10.22-py3-none-any.whl (14.4 kB view hashes)

Uploaded Python 3

Supported by

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