ploomber_core.telemetry

ploomber_core.telemetry#

class ploomber_core.telemetry.Telemetry(api_key, package_name, version, *, print_cloud_message=True)#
log_call(action=None, payload=False, log_args=False, ignore_args=None, group=None)#

Log function call

Parameters:
  • action (str, default=None) – The action taken by the user. If None, it’ll use the function’s name

  • payload (bool, default=False) – If True, the function will be called with payload as its first argument (a dictionary), yoyu may add values to it and they will be logged

  • log_args (bool, default=False) – If True, function parameters a logger (but only bool, int, float, str, tuple, and set)

  • ignore_args (set, default=None) – A set of parameters to ignore, it only has effect when log_args=True

  • group (str, default=None) – An arbitrary string to group events. You may use this to group calls to methods in the same class

Examples

Log function call:

>>> from ploomber_core.telemetry import Telemetry
>>> telemetry = Telemetry("APIKEY", "packagename", "0.1")
>>> @telemetry.log_call()
... def add(x, y):
...     return x + y
>>> add(x=1, y=2)
3

Customize action name (by default, it’ll use the name of the function):

>>> from ploomber_core.telemetry import Telemetry
>>> telemetry = Telemetry("APIKEY", "packagename", "0.1")
>>> @telemetry.log_call(action="sum")
... def add(x, y):
...     return x + y
>>> add(x=1, y=2)
3

Log extra data:

>>> from ploomber_core.telemetry import Telemetry
>>> telemetry = Telemetry("APIKEY", "packagename", "0.1")
>>> @telemetry.log_call(payload=True)
... def add(payload, x, y):
...     payload["key"] = "value to log"
...     return x + y
>>> add(x=1, y=2)
3

Log input arguments:

>>> from ploomber_core.telemetry import Telemetry
>>> telemetry = Telemetry("APIKEY", "packagename", "0.1")
>>> @telemetry.log_call(log_args=True)
... def add(x, y):
...     return x + y
>>> add(x=1, y=2)
3

Ignore some input arguments:

>>> from ploomber_core.telemetry import Telemetry
>>> telemetry = Telemetry("APIKEY", "packagename", "0.1")
>>> @telemetry.log_call(log_args=True, ignore_args={"y"})
... def add(x, y):
...     return x + y
>>> add(x=1, y=2)
3

Log method calls in a class (creating a group will add the class name to all actions):

>>> from ploomber_core.telemetry import Telemetry
>>> telemetry = Telemetry("APIKEY", "packagename", "0.1")
>>> telemetry_my_class = telemetry.create_group("MyClass")
>>> class MyClass:
...     @telemetry_my_class.log_call()
...     def add(self, x, y):
...         return x + y
>>> obj = MyClass()
>>> obj.add(x=1, y=2)
3

Unit testing (check the _telemetry attribute):

>>> from ploomber_core.telemetry import Telemetry
>>> telemetry = Telemetry("APIKEY", "packagename", "0.1")
>>> @telemetry.log_call()
... def add(x, y):
...     return x + y
>>> add._telemetry["action"]
'packagename-add'
>>> add._telemetry["payload"]
False
>>> add._telemetry["log_args"]
False
>>> add._telemetry["ignore_args"]
set()
>>> add._telemetry["group"]