A small package for tracing function calls
Project description
Call Traces
A small package for tracing function calls
Installing ⏬
pip install calltraces
Usage 📝
Python code:
from calltraces.linetrace import traceInfo
from calltraces.functiontrace import functiontrace
# ...
@functiontrace # Add a function decorator
def myFunction():
traceInfo("some log message...")
# ...
# Whenever the function is called:
myFunction()
This will produce the output:
[INFO:01] 2022-06-26 18:00:32,234 __main__.myFunction Starting Function
[INFO:02] 2022-06-26 18:00:32,235 some log message...
[INFO:01] 2022-06-26 18:00:32,235 __main__.myFunction Finished Function
Advanced Usage 🪆
Python code:
from calltraces.linetrace import traceInfo
from calltraces.functiontrace import functiontrace
# ...
@functiontrace
def myFunction1():
traceInfo("some log message...")
@functiontrace
def myFunction2():
myFunction1()
@functiontrace
def myFunction3():
# Calling a function twice
myFunction2()
myFunction2()
# ...
# Whenever the function is called:
myFunction3()
This will produce the output:
[INFO:01] 2022-06-26 18:06:38,625 __main__.myFunction3 Starting Function
[INFO:02] 2022-06-26 18:06:38,626 __main__.myFunction2 Starting Function
[INFO:03] 2022-06-26 18:06:38,634 __main__.myFunction1 Starting Function
[INFO:04] 2022-06-26 18:06:38,634 some log message...
[INFO:03] 2022-06-26 18:06:38,634 __main__.myFunction1 Finished Function
[INFO:02] 2022-06-26 18:06:38,634 __main__.myFunction2 Finished Function
[INFO:02] 2022-06-26 18:06:38,634 __main__.myFunction2 Starting Function
[INFO:03] 2022-06-26 18:06:38,635 __main__.myFunction1 Starting Function
[INFO:04] 2022-06-26 18:06:38,635 some log message...
[INFO:03] 2022-06-26 18:06:38,635 __main__.myFunction1 Finished Function
[INFO:02] 2022-06-26 18:06:38,635 __main__.myFunction2 Finished Function
[INFO:01] 2022-06-26 18:06:38,635 __main__.myFunction3 Finished Function
Usage with classes 📦
Adding the python decorator on a class will automatically add trace wrappers to public functions.
⚠️ Private functions will stay unaffected.
Python code:
from calltraces.linetrace import traceInfo
from calltraces.classtrace import classtrace
# ...
@classtrace # Add a class decorator
class MyObject:
def __init__(self, input) -> None:
self._x = input
def _privateFunction(self):
self._x = self._x * 2
def __superPrivateFunction(self):
self._x = self._x * 3
def publicBaseFunction(self):
self._privateFunction()
self.__superPrivateFunction()
traceInfo("some log message...")
def publicWrapperFunction(self) -> None:
return self.publicBaseFunction()
# ...
# Whenever the object functions are called
myObj = MyObject(input=12345)
myObj.publicWrapperFunction()
This will produce the output:
[INFO:01] 2022-06-26 18:17:15,456 __main__.MyObject.publicWrapperFunction Starting Function
[INFO:02] 2022-06-26 18:17:15,456 __main__.MyObject.publicBaseFunction Starting Function
[INFO:03] 2022-06-26 18:17:15,456 some log message...
[INFO:02] 2022-06-26 18:17:15,456 __main__.MyObject.publicBaseFunction Finished Function
[INFO:01] 2022-06-26 18:17:15,456 __main__.MyObject.publicWrapperFunction Finished Function
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
calltraces-2022.6.30.0.tar.gz
(3.8 kB
view hashes)
Built Distribution
Close
Hashes for calltraces-2022.6.30.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ceb9293eba7faefff5b0f6c0759e3e2f59710d1d49e9e349c3aabeeca3d6598 |
|
MD5 | 36b133b7dcb32d8c1a67d5b44ae8de69 |
|
BLAKE2b-256 | 49c0e609fc6a376c5d8d3faf5787bd074262361ad70ddeefe7c31507381c3114 |