BaseUtils¶
run_as_thread¶
-
static
BaseUtils.
run_as_thread
(fn)[исходный код]¶ Декоратор для запуска функций в отдельном потоке.
Результат: Функция в отдельном потоке Тип результата: threading.Thread
Examples
>>> import time >>> >>> >>> @BaseUtils.run_as_thread >>> def run_count_timer(): ... time.sleep(1) ... host.stats()["run_count"] += 1 >>> >>> >>> run_count_timer()
win_encode_path¶
-
static
BaseUtils.
win_encode_path
(path)[исходный код]¶ Изменяет кодировку на
"cp1251"
для WinOS.Параметры: path ( str
) – Путь до файла или папкиРезультат: Декодированый путь до файла или папки Тип результата: str
Examples
>>> path = r"D:/Shots/Скриншот.jpeg" >>> os.path.isfile(path) False >>> os.path.isfile(BaseUtils.win_encode_path(path)) True
is_file_exists¶
-
static
BaseUtils.
is_file_exists
(file_path, tries=1)[исходный код]¶ Проверяет, существует ли файл.
Проверка происходит в течении
tries
секунд.Предупреждение
Запускайте функцию только в отдельном потоке еслиtries > 1
Вторая и последующие проверки производятся сtime.sleep(1)
Параметры: Результат: True
if file exists,False
otherwiseТип результата: Examples
>>> BaseUtils.is_file_exists("_t1server.settings") True
is_folder_exists¶
-
static
BaseUtils.
is_folder_exists
(folder)[исходный код]¶ Проверяет существование папки и доступ на запись.
Параметры: folder ( str
) – Путь к папке.Raises: IOError
– Если папка не существуетExamples
>>> BaseUtils.is_folder_exists("/test_path") IOError: Folder '/test_path' is not exists
is_template_exists¶
cat¶
-
classmethod
BaseUtils.
cat
(filepath, check_ext=True)[исходный код]¶ Выводит на отображение текстовую инфомрацию.
Совет
- WinOS: открывает файл программой по умолчанию
- TrassirOS: открывает файл в терминале с помощью утилиты cat
Примечание
Доступные расширения файлов:[".txt", ".csv", ".log"]
Если открываете файл с другим расширением установитеcheck_ext=False
Параметры: Examples
>>> BaseUtils.cat("/home/trassir/ Trassir 3 License.txt")
Raises: TypeError
– Еслиcheck_ext=True
расширение файла нет в списке_TEXT_FILE_EXTENSIONS
to_json¶
-
classmethod
BaseUtils.
to_json
(data, **kwargs)[исходный код]¶ Сериализация объекта в JSON стрку
Примечание
Не вызывает ошибку при сериализации объектов
datetime
,date
,SE_Settings
,SE_Object
Параметры: data ( obj
) – Объект для сериализацииРезультат: JSON строка Тип результата: str
Examples
>>> obj = {"now": datetime.now()} >>> json.dumps(obj) TypeError: datetime.datetime(2019, 4, 2, 18, 01, 33, 881000) is not JSON serializable >>> BaseUtils.to_json(obj, indent=None) '{"now": "2019-04-02T18:01:33.881000"}'
ts_to_dt¶
-
static
BaseUtils.
ts_to_dt
(ts)[исходный код]¶ Конвертирует timestamp в
datetime
объектПараметры: ts ( int
) – TimestampРезультат: Datetime объект Тип результата: datetime
Examples
>>> BaseUtils.ts_to_dt(1564109694242000) datetime.datetime(2019, 7, 26, 9, 54, 54, 242000)
dt_to_ts¶
-
static
BaseUtils.
dt_to_ts
(dt)[исходный код]¶ Конвертирует
datetime
объект в trassir timestampПараметры: dt ( datetime
) – DatetimeРезультат: Trassir timestamp Тип результата: int
Examples
>>> BaseUtils.ts_to_dt(datetime(2019, 7, 26, 9, 54, 54, 242000)) 1564109694242000
lpr_flags_decode¶
-
classmethod
BaseUtils.
lpr_flags_decode
(flags)[исходный код]¶ Преобразует флаги события AutoTrassir
Приводит флаги события человекочитаемый список
Примечание
Список доступных флагов:
LPR_UP
- Направление движения вверхLPR_DOWN
- Направление движения внизLPR_BLACKLIST
- Номер в черном спискеLPR_WHITELIST
- Номер в черном спискеLPR_INFO
- Номер в информационном спискеLPR_FIRST_LANE
- Автомобиль двигается по первой полосеLPR_SECOND_LANE
- Автомобиль двигается по второй полосеLPR_THIRD_LANE
- Автомобиль двигается по третей полосеLPR_EXT_DB_ERROR
- Ошибка во внешнем спискеLPR_CORRECTED
- Номер исправлен оператором
Параметры: flags ( int
) – Биты LPR события. Как правило аргументev.flags
событияSE_LprEvent
AutoTrassir. Например536870917
Результат: Список флагов Тип результата: List[ str
]Examples
>>> BaseUtils.lpr_flags_decode(536870917) ['LPR_UP', 'LPR_BLACKLIST']
event_type_encode¶
-
classmethod
BaseUtils.
event_type_encode
(event_type)[исходный код]¶ Преобразует тип события
str
->int
Примечание
События в БД хранятся в
int
, в скриптах приходят в человекочитаемом, строковом формате.Параметры: event_type ( str
) – Тип события как в скриптах.Examples
>>> BaseUtils.event_type_encode("Border Crossed A -> B") -2010220362
Результат: Тип события как в БД Тип результата: int
event_type_decode¶
-
classmethod
BaseUtils.
event_type_decode
(event_type)[исходный код]¶ Преобразует тип события
int
->str
Примечание
События в БД хранятся в
int
, в скриптах приходят в человекочитаемом, строковом формате.Параметры: event_type ( int
) – Тип события как в БД.Examples
>>> BaseUtils.event_type_encode(-2010220362) "Border Crossed A -> B"
Результат: Тип события как в скриптах Тип результата: str
image_to_base64¶
-
classmethod
BaseUtils.
image_to_base64
(image)[исходный код]¶ Создает base64 из изображения
Параметры: image ( str
) – Путь к изображению или изображениеРезультат: Base64 image Тип результата: str
Examples
>>> BaseUtils.image_to_base64(r"manual/en/cloud-devices-16.png") 'iVBORw0KGgoAAAANSUhEUgAAB1MAAAH0CAYAAABo5wRhAAAACXBIWXMAAC4jA...' >>> BaseUtils.image_to_base64(open(r"manual/en/cloud-devices-16.png", "rb").read()) 'iVBORw0KGgoAAAANSUhEUgAAB1MAAAH0CAYAAABo5wRhAAAACXBIWXMAAC4jA...'
base64_to_html_img¶
-
classmethod
BaseUtils.
base64_to_html_img
(image_base64, **kwargs)[исходный код]¶ Возвращает base64 изображение в <img> html теге
Параметры: Результат: html image
Тип результата: Examples
>>> base64_image = BaseUtils.image_to_base64(r"manual/en/cloud-devices-16.png") >>> html_image = BaseUtils.base64_to_html_img(base64_image, width=280, height=75) >>> html_image '<img src="data:image/png;base64,iVBORw0KGgoAA...Jggg==" width="280" height="75">' >>> host.message(html_image)
save_pkl¶
-
static
BaseUtils.
save_pkl
(file_path, data)[исходный код]¶ Сохраняет данные в .pkl файл
Параметры: - file_path (
str
) – Путь до файла - data – Данные для сохранения
Результат: Абсолютный путь до файла
Тип результата: Examples
>>> data = {"key": "value"} >>> BaseUtils.save_pkl("saved_data.pkl", data) 'D:\DSSL\Trassir-4.1-Client\saved_data.pkl'
- file_path (
load_pkl¶
-
static
BaseUtils.
load_pkl
(file_path, default_type=<type 'dict'>)[исходный код]¶ Загружает данные из .pkl файла
Параметры: Результат: Данные из файла или
default_type()
Examples
>>> BaseUtils.load_pkl("fake_saved_data.pkl") {} >>> BaseUtils.load_pkl("fake_saved_data.pkl", default_type=list) [] >>> BaseUtils.load_pkl("fake_saved_data.pkl", default_type=int) 0 >>> BaseUtils.load_pkl("fake_saved_data.pkl", default_type=str) '' >>> BaseUtils.load_pkl("saved_data.pkl") {'key': 'value'}
get_operator_gui¶
-
classmethod
BaseUtils.
get_operator_gui
()[исходный код]¶ Возвращает объект интерфейса оператора
Результат: Объект интерфейса оператора Тип результата: OperatorGUI
Raises: ScriptError
– Если не удается загрузить интерфейсExamples
Открыть интерфейс Trassir а мониторе №1
>>> operator_gui = BaseUtils.get_operator_gui() >>> operator_gui.raise_monitor(1)
get_server_guid¶
-
classmethod
BaseUtils.
get_server_guid
()[исходный код]¶ Возвращает guid текущего сервра
Результат: Guid сервера Тип результата: str
Examples
>>> BaseUtils.get_server_guid() 'client'
get_script_name¶
-
classmethod
BaseUtils.
get_script_name
()[исходный код]¶ Возвращает имя текущего скрипта
Результат: Имя скрипта Тип результата: str
Examples
>>> BaseUtils.get_script_name() 'Новый скрипт'
get_screenshot_folder¶
-
classmethod
BaseUtils.
get_screenshot_folder
()[исходный код]¶ Возвращает путь до папки скриншотов
При этом производит проверку папки методом
BaseUtils.is_folder_exists()
Результат: Полный путь к папке скриншотов Тип результата: str
Examples
>>> BaseUtils.get_screenshot_folder() '/home/trassir/shots'
get_logger¶
-
classmethod
BaseUtils.
get_logger
(host_log='WARNING', popup_log='ERROR', file_log=None, file_name=None, file_max_bytes=5242880, file_backup_count=2)[исходный код]¶ Возвращает логгер с предустановленными хэндлерами
- Доступные хэндлеры:
- host_log: Пишет сообщения в основной лог сервера _t1server.log
- popup_log: Показывает всплывающие сообщения
message/alert/error
- file_log: Пишет сообщения в отдельный файл в папку скриншотов
Для каждого хэндлера можно установить разный уровень логирования
По умолчанию
host_log="WARNING"
иpopup_log="ERROR"
Примечание
Имя файла лога можно указать с расширение «.log» или без.
Параметры: - host_log (
str
, optional) – Уровень логирования в основной лог. По умолчанию"WARNING"
- popup_log (
str
, optional) – Уровень логирования во всплывающих сообщениях. По умолчанию"ERROR"
- file_log (
str
, optional) – Уровень логирования в отдельный файл По умолчаниюNone
- file_name (
str
, optional) – Имя файла для логирования. По умолчаниюNone
и равно<имени скрипта>.log
- file_max_bytes (
int
, optional) – Максимальный размер файла лога в байтах. По умолчанию5 * 1024 * 1024
- file_backup_count (
int
, optional) – Макссимальное кол-во бэкапов лога. По умолчанию2
Результат: Логгер
Тип результата: logging.logger
Examples
>>> logger = BaseUtils.get_logger() >>> logger.warning("My warning message") >>> try: ... # noinspection PyUnresolvedReferences ... do_something() ... except NameError: ... logger.error("Function is not defined", exc_info=True)
set_script_name¶
-
classmethod
BaseUtils.
set_script_name
(fmt=None, script_name=None)[исходный код]¶ Автоматически изменяет имя скрипта
Новое имя скрипта создается на основе параметров скрипта. По желанию можно изменить шаблон имени. По умолчанию
"{title} v{version}"
Примечание
Имя изменяется только если сейчас у скрипта стандартное имя, например
"Новый скрипт"
или"Unnamed Script"
и др.Параметры: Examples
>>> BaseUtils.set_script_name() 'trassir_script_framework v0.4'
>>> BaseUtils.set_script_name(fmt="{title}") 'trassir_script_framework'