包含包装类的模块,用于通过管理控制台和 Sydesk 与 UltimateRPA 机器人一起发送测量结果
项目描述
超测量
UltimateRPA 的简单测量
可与管理控制台和 Sydesk 一起使用
基本用法
urpameasure 模块为使用 UltimateRPA 机器人发送测量结果提供了更高阶的功能。它封装了用于使用两种测量变体的类 - Management Console 和 Sydesk。
使用管理控制台
首先,我们需要创建测量对象
import urpameasure
Measurement = urpameasure.Console()
然后我们可以开始添加我们想要测量的指标
Measurement.add("login", default_name="01 Login Measurement")
Measurement.add("processed", default_unit="%")
Measurement.add("time", default_unit="seconds")
最后,所要做的就是编写测量值。登录和时间测量可以通过装饰器编写
@Measurement.measure_login("login")
def login():
pass
@Measurement.measure_time("time")
def main():
login()
for i in range(1, 101):
measurement.write("processed", value=i)
与赛特克合作
使用 Sydesk 与使用 Console 几乎相同。唯一的区别在于测量接受的参数。本文档的文档部分中描述了所有可能的参数
import urpameasure
Measurement = urpameasure.Sydesk("/path/to/dir")
Measurement.add("some measurement", "SYDESK_SOURCE_ID")
Measurement.add("another measurement", "ANOTHER_SYDESK_SOURCE_ID", default_description="foo bar")
Measurement.write("some measurement", value=5)
Measurement.write("another measurement", value=2, expiration=5)
文档
该模块有两个主要类:Console分别Sydesk用于管理控制台和 Sydesk。这两个类非常相似。它们的区别仅在于可以用它们写入的测量值。
课堂控制台
创建实例:
import urpameasure
Measurement = urpameasure.Console()
添加指标:
Measurement.add(
"measure id"
default_status=urpameasure.INFO,
default_name="01 My measurement",
default_value=0,
default_unit="%",
default_tolerance=0,
default_description="this is a measurement",
default_precision=2,
strict_mode=True,
)
以 开头的参数default_是用作清除状态的默认值(请参阅)或在未提供measurement.clear()时写入的值measurement.write()
id(str):此测量的唯一 IDdefault_status(str,可选):要写入控制台的状态。默认为 urpameasure.NONE。default_name(str,可选):要写入控制台的名称。默认为“0 未命名测量”。default_value(Optional[float], optional):要写入控制台的值。默认为无。default_unit(str,可选):要写入控制台的单元。默认为“”。default_tolerance(浮动,可选):要写入控制台的容差。默认为 0。default_description(可选[str],可选):要写入控制台的描述。默认为无。default_precision(Optional[int], optional): 写入控制台的精度。默认为无。strict_mode(布尔,可选):defalut_name如果启用,则必须以数字开头。默认为真。
书写测量:
Measurement.write(
"measure id",
status=urpameasure.SUCCESS,
name="a02 Some measurement",
value=99.5,
unit="%",
tolerance=2,
description="foo bar",
precision=2,
strict_mode=False,
)
如果某些关键字 args 未提供,将使用 calldefault_xxxx指定的关键字measurement.add()
id([type]):此测量的唯一 IDstatus(可选[str],可选):要写入控制台的状态。如果未提供,则使用 self.measurements[id]["default_status"]。name(可选[str],可选):要写入控制台的名称。如果未提供,则使用 self.measurements[id]["default_name"]。value(Optional[float], optional):要写入控制台的值。如果未提供,则使用 self.measurements[id]["default_value"]。unit(str,可选):要写入控制台的单元。如果未提供,则使用 self.measurements[id]["default_unit"]。tolerance(Optional[float], optional): 写入控制台的容差。如果未提供,则使用 self.measurements[id]["default_tolerance"]。description(可选[str],可选):要写入控制台的描述。如果未提供 self.measurements[id]["default_description"] 则使用。precision(Optional[int], optional): 写入控制台的精度。如果未提供 self.measurements[id]["default_precision"] 则使用。strict_mode(布尔,可选):name如果启用,则必须以数字开头。默认为真。
清除测量:
Measurement.clear("measure id")
此方法调用会将所有测量值设置为调用default_xxxx指定的值measurement.add()
清除所有测量
Measurement.clear_all()
迭代所有测量并将它们的值设置为default_xxxx
更改测量的默认值:
Measurement.edit_default_value("measure id", "default_description", "Edited default description")
测量时间装饰器:
# first define measurement for sending time
Measurement.add("09 time", default_unit="minutes")
# then decorate a function you want to measure time of execution of
@Measurement.measure_time("09 time", time_unit=urpameasure.MINUTES)
def main():
pass
注意:不要default_unit混淆time_unit:
default_unit是显示在管理控制台前端的字符串time_unit是用于 urpameasure 模块内的时间转换的单位。默认为 urpameasure.SECONDS
测量登录装饰器:
@Measurement.measure_login("01 login")
def login():
pass
如果函数执行完成,则发送值 100 - SUCCESS login()。如果在函数执行期间引发异常,则发送值 0 - ERRORlogin()
measure_login()装饰器有两个可选的关键字参数:
- error_status - 默认为 urpameasure.ERROR(登录值为 0 时显示的状态)
- success_status - 默认为 urpameasure.SUCCESS(登录值为 100 时显示的状态)
类 Sydesk
创建实例:
import urpameasure
Measurement = urpameasure.Sydesk("/path/to/directory")
添加指标:
Measurement.add(
"measure id"
"source id"
default_value=0,
default_expiration=60 * 60,
default_description="this is a measurement"
)
id(str):此测量的唯一 IDsource_id(str): 字符串 SyDesk 中的数据源 IDdefault_value(float):要写入 Sydesk 的值。默认为 0default_expiration(int):Sydesk 中测量的到期时间(以秒为单位)。默认为 3600default_description(可选[str],可选):测量的描述。默认为无。
书写测量:
Measurement.write(
"measure id"
value=1.5,
expiration=2,
description="foo bar"
)
id(str):此测量的唯一 IDvalue(浮点型,可选):要写入 Sydesk 的值。如果未提供,则使用 self.measurements[id]["default_value"]。默认为 0expiration(int,可选):Sydesk 中的测量到期时间(以秒为单位)。self.measurements[id]["default_expiration"] 如果未提供,则使用。默认为 0。description([类型],可选):测量的描述。如果未提供 self.measurements[id]["default_description"] 则使用。默认为无。
清除测量:
Measurement.clear("measure id")
此方法调用会将所有测量值设置为调用default_xxxx指定的值measurement.add()
清除所有测量
Measurement.clear_all()
迭代所有测量并将它们的值设置为default_xxxx
更改测量的默认值:
Measurement.edit_default_value("measure id", "default_value", 100)
测量时间装饰器:
# first define measurement for sending time
Measurement.add("time", "source id")
# then decorate a function you want to measure time of execution of
@Measurement.measure_time("time")
def main():
pass
测量登录装饰器:
@Measurement.measure_login("login", expiration=0, description="time measurement")
def login():
pass
关键字参数expiration广告description是可选的。它们分别默认为0和None
例子
与管理控制台一起使用
import urpa
import urpameasure
# create Console class instance
Measurement = urpameasure.Console()
# add all desired metrics
Measurement.add("login", default_name="01 App login")
Measurement.add(
"app_navigation",
default_status=urpameasure.ERROR,
default_name="02 App Navigation",
default_value=0,
default_unit="%",
default_tolerance=0,
default_description="Keeps track of navigation steps trough the app",
default_precision=2
)
Measurement.add("records_done", default_status=urpameasure.INFO, default_name="03 Percentage done", default_unit="%")
# turn off strict mode so we can use default_name that doesn't start with a digit
Measurement.add("time", default_name="Time elapsed", strcit_mode=False)
@Measurement.measure_login("login")
def login(app):
app.find_first("Login").send_mouse_click()
@Measurement.measure_time("time")
def main():
# Clear all measurements. `default_xxxx` values defined with Measure.add() method call will be used
Measurement.clear_all()
# Write a measurement to Management Console. All arguments that are not supplied will use values defined with Measure.add() method call
Measurement.write("app_navigation", value=0)
app = urpa.open_app(1234)
# Update a measurement and override some of its default values
Measurement.write("app_navigation", value=50, description="App opened")
login(app)
Measurement.write("app_navigation", value=100, status=urpameasure.SUCCESS)
for record_index in range(1, 101):
# do some work here
Measurement.write("records_done", value=record_index, description=f"Records remaining: {100 - record_index}")
# We can clear only one measurement at a time
Measurement.clear("app_navigation")
# We can edit some of its default values that are used as a clear state
Measurement.edit_default_value("app_navigation", "default_unit", "Procenta")
Measurement.clear("app_navigation")
更好地控制登录和时间功能装饰器 - 管理控制台
# We can override statuses which by default are SUCCESS for value 100, ERROR for value 0 and NONE for values other than 0 and 100
# Values 0 and 100 are implicitly written by this function decorator (0: exception was raised, 100: exception was not raised)
@Measurement.measure_login("login", error_status=urpameasure.WARNING, success_status=urpameasure.INFO)
def login(app):
# We can write arbitrary value to login measure to hint some other state than success/error
Measurement.write("login", value=50, status=urpameasure.NONE, description="The robot did not attempt login yet")
app.find_first("Login").send_mouse_click()
# Time units can be urpameasure.SECONDS, urpameasure.MINUTES, urpameasure.HOURS
# The time conversion is done automaticaly based on this value
@Measurement.measure_time("time", time_units=urpameasure.MINUTES, status=urpameasure.NONE)
def main():
pass
更好地控制登录和时间函数装饰器 - Sydesk
# We can override expiration and description
@Measurement.measure_login("login", expiration=2, description="A login success measurement")
def login(app):
app.find_first("Login").send_mouse_click()
@Measurement.measure_time("time", expiration=2, description="A time measurement")
def main():
pass
自定义错误
MeasurementIdExistsError- 当用户尝试使用已经存在的 id 添加另一个测量时引发InvalidMeasurementIdError- 当用户尝试使用不存在的 id 访问测量时引发SourceIdTooLongError- 仅适用于 Sydesk:当用户尝试定义超过 32 个字符的 source_id 时引发
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
urpameasure -0.1.1.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 0a0043f6de79d85324acb8609d8e759a69cd665eab788e9098c0525f1353224a |
|
| MD5 | e2ca0aa35579b8fbedc7c087005625be |
|
| 布莱克2-256 | fc72d57db0aed106bee65788d8ccdf3a878bdc1ded551f166dde47bd80dc011b |
urpameasure -0.1.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | cf87809bc54e883464d0ddb5c8177194db6f4859800736cc46a33ed6adee5aeb |
|
| MD5 | 013267f64cdf89c732a9aff76cdb1927 |
|
| 布莱克2-256 | 3a5cf389fdff923b920500daf61173626db07e47d7d622fdefb34d8c87ce22d6 |