Skip to main content

包含包装类的模块,用于通过管理控制台和 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):此测量的唯一 ID
  • default_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]):此测量的唯一 ID
  • status(可选[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):此测量的唯一 ID
  • source_id(str): 字符串 SyDesk 中的数据源 ID
  • default_value(float):要写入 Sydesk 的值。默认为 0
  • default_expiration(int):Sydesk 中测量的到期时间(以秒为单位)。默认为 3600
  • default_description(可选[str],可选):测量的描述。默认为无。

书写测量:

Measurement.write(
    "measure id"
    value=1.5,
    expiration=2,
    description="foo bar"
)
  • id(str):此测量的唯一 ID
  • value(浮点型,可选):要写入 Sydesk 的值。如果未提供,则使用 self.measurements[id]["default_value"]。默认为 0
  • expiration(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是可选的。它们分别默认为0None

例子

与管理控制台一起使用

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 (13.2 kB 查看哈希

已上传 source

内置分布

urpameasure-0.1.1-py3-none-any.whl (12.8 kB 查看哈希

已上传 py3