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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file developing_tools-2024.10.22.tar.gz.

File metadata

  • Download URL: developing_tools-2024.10.22.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.7

File hashes

Hashes for developing_tools-2024.10.22.tar.gz
Algorithm Hash digest
SHA256 dd39613ade48358e2d11a4fd05c6bd3601bc3a7e357be7b502ee0da620826bce
MD5 4188e6e24aee5392b22e44714cadcbcf
BLAKE2b-256 765788300b031be9471bdd7ed068be1af8d708f2a85fca6670556f5e4e3a6eb1

See more details on using hashes here.

File details

Details for the file developing_tools-2024.10.22-py3-none-any.whl.

File metadata

File hashes

Hashes for developing_tools-2024.10.22-py3-none-any.whl
Algorithm Hash digest
SHA256 84510b1fa89e733b6442c49ef4f415a56f6b71fdc8ddc97abec7c2923044d0e1
MD5 02c6cac056a15510efb3d6fb37f48315
BLAKE2b-256 f7d7db250943327397ace6e9a55686c9dce3e66b1964603a95aafdcfcc29425d

See more details on using hashes here.

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