Skip to main content

Python timeframe tool for time monitoring for each event, error handling, traceback recording...

Project description

timeframe

Python timeframe tool for time monitoring for each event, error handling, traceback recording...

Downloads Downloads Downloads PyPI version

How to install

pip install timeframe-event

You can also copy timeframe.py from GitHub and drop it in your project

This project/file only uses standard libraries so installation of additional dependency is not required

Example

import random, time
from timeframe import TimeFrame
async def func(timeframe: TimeFrame, *args, **kwargs): # Create rt(realtime) function 
    timeframe.print_mono()
    print(args, kwargs)
    

with TimeFrame('test args', name='Text request', rt=func, test_kwargs='test kwargs') as time_frame:
    with time_frame.create(name='Prompt') as group_prompt:
        with group_prompt.create(name='Prompt request', retries=5, ignore_retries=(TimeoutError,)) as event_frame:
            function_call = False
            for frame in event_frame:
                async with frame:
                    time.sleep(random.uniform(0, 0.4))  # Stimulate doing network operation
                    if random.random() < 0.2:
                        raise ValueError  # Stimulate a complete random chance of a network error occur
                    if random.random() < 0.3:
                        raise TimeoutError # Stimulate a complete internet breakdown
                    if random.random() < 0.9:
                        function_call = True
        if function_call:
            with group_prompt.create(name='Function call `mul`', retries=0):
                time.sleep(random.uniform(0, 0.01))  # Stimulate doing network operation
            with group_prompt.create(name='Function Response', retries=5) as event_frame:
                for frame in event_frame:
                    async with frame:
                        time.sleep(random.uniform(0, 0.4))  # Stimulate doing network operation
                        if random.random() < 0.7:
                            raise ValueError  # Stimulate a complete random chance of a network error occur
>>> print(time_frame.traceback_format())
[596869.233s] Error raised on Attempt 'Attempt #1' from parent 'Prompt request' at TimeFrame 'Text request':
Traceback (most recent call last):

  File "...\timeframe.py", line 260, in test
    raise ValueError  # Stimulate a complete random chance of a network error occur
    ^^^^^^^^^^^^^^^^

ValueError

[596869.397s] Error raised on Attempt 'Attempt #2' from parent 'Prompt request' at TimeFrame 'Text request':
Traceback (most recent call last):

  File "...\timeframe.py", line 260, in test
    raise ValueError  # Stimulate a complete random chance of a network error occur
    ^^^^^^^^^^^^^^^^

ValueError

[596870.032s] Error raised on Attempt 'Attempt #1' from parent 'Function Response' at TimeFrame 'Text request':
Traceback (most recent call last):

  File "...\timeframe.py", line 271, in test
    raise ValueError  # Stimulate a complete random chance of a network error occur
    ^^^^^^^^^^^^^^^^

ValueError

[596870.171s] Error raised on Attempt 'Attempt #2' from parent 'Function Response' at TimeFrame 'Text request':
Traceback (most recent call last):

  File "...\timeframe.py", line 271, in test
    raise ValueError  # Stimulate a complete random chance of a network error occur
    ^^^^^^^^^^^^^^^^

ValueError
>>> print(time_frame.frame_format_dc(limit=1024)) #Character limit of discord embed field value
Total: 0001.252s (Total Frames: 11)
✅-Prompt (0001.252s)
> ⚠️-Prompt request (0000.607s)
> - ❌-Attempt #1 (0000.203s)
> - ❌-Attempt #2 (0000.164s)
> - ✅-Attempt #3 (0000.240s)
> ✅-Function call `mul` (0000.005s)
> ⚠️-Function Response (0000.640s)
> - ❌-Attempt #1 (0000.390s)
> - ❌-Attempt #2 (0000.139s)
> - ✅-Attempt #3 (0000.111s)

Example: image

>>> print(time_frame.frame_format_mono()) # Use of export as file or display on console
Total: 0001.252s (Total Frames: 11)
✅-Text request (0001.252s)
  ✅-Prompt (0001.252s)
    ⚠️-Prompt request (0000.607s)
      ❌-Attempt #1 (0000.203s)
      ❌-Attempt #2 (0000.164s)
      ✅-Attempt #3 (0000.240s)
    ✅-Function call `mul` (0000.005s)
    ⚠️-Function Response (0000.640s)
      ❌-Attempt #1 (0000.390s)
      ❌-Attempt #2 (0000.139s)
      ✅-Attempt #3 (0000.111s)
print(timeframe.frame_format_custom()) # Default with markdown

Total: 0000.826s (Total Frames: 11)

✅-Prompt (0000.826s)

  • ⚠️-Prompt request (0000.690s)
  • ❌-Attempt #1 (0000.135s)
  • ❌-Attempt #2 (0000.020s)
  • ❌-Attempt #3 (0000.126s)
  • ❌-Attempt #4 (0000.349s)
  • ✅-Attempt #5 (0000.060s)
  • ✅-Function call mul (0000.004s)
  • ✅-Function Response (0000.132s)

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

timeframe_event-1.1.7.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

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

timeframe_event-1.1.7-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file timeframe_event-1.1.7.tar.gz.

File metadata

  • Download URL: timeframe_event-1.1.7.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.4 Windows/10

File hashes

Hashes for timeframe_event-1.1.7.tar.gz
Algorithm Hash digest
SHA256 38a6f42282fb20d7cdb5b725579575f7d915157c46f7255d5e6cf02c8910dc70
MD5 5ecfb65094be7c831ad395b867116b7b
BLAKE2b-256 78374c34daa3b43963b78edfdcbc02aa8cdf2eab3cef51217cb9a198645dc2de

See more details on using hashes here.

File details

Details for the file timeframe_event-1.1.7-py3-none-any.whl.

File metadata

  • Download URL: timeframe_event-1.1.7-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.4 Windows/10

File hashes

Hashes for timeframe_event-1.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 b4488862eb089f39ad611b2cacd1fe34efee38a697776391e35f7af8bb3466fb
MD5 eebdedc7950d43aafe7cc259bf61ab5b
BLAKE2b-256 d4a824a1a16d9b3e9f247100670510ac8346d3e9e67639800e7c75c900728ab4

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