Skip to main content

No project description provided

Project description

CupDefs

Пространства имён (файлы):

Инициализация

Модуль init


Инициализация выполняется функцией init(*args) модуля init

from CupDefs import init
init.init()

Функция init принимает неограниченное кол-во аргументов. Передача некоторых строк позволяет настроить инициализацию.
Список строк:

  • "no_color" - отключает инициализацию модуля colorama и цветной вывод
  • "no_vergen" - отключает инициализацию генератора номера сборки
  • "no_logo" - отключает вывод логотипа

Прочие строки и/или значения ни к чему не приведут.

Функция init также возвращает True, если инициализация была успешной, иначе - False

Логирование

Модуль logger


Класс LogType

Нужен для указания типа записи в логах.

Значения:

Имя поля Цвет лога Смысл Префикс в логах
DONE Зелёный Успех [OK ]
ERROR Красный Ошибка [ERR]
WARNING Жёлтый Предупреждение [WRN]
INFO Голубой Прочая информация [INF]

Значения, по-факту, представляют собой функции цветного вывода модуля utils и являются вызываемыми объектами

from CupDefs import logger
logger.LogType.DONE  # этот тип лога обозначает успешно выполненную задачу

Класс Logger

Нужен для ведения логов во время выполнения программы.

Статическая функция init_logs

() -> bool

Инициализирует модуль ведения логов.
В качестве аргумента принимает строку или None. Строка обозначает путь до файла, куда будут записаны логи. Если файл, уже существует, то он будет очищен, если нет, то будет создан. В случае успеха возвращает True, иначе - False.

Если указана пустая строка или None, то в качестве пути будет использована строка "./last_launch.log", что создаст файл лога в папке с исполняемым файлом

from CupDefs import logger

logger.Logger.init_logs('example.log')  # создаст файл лога с именем example.log

Статическая функция mklog

(log_type, text: str) -> None

Функция принимает одно из значений класса LogType и строку, которая будет записана в логи.

Если не была вызвана функция init_logs, то запись в логи не произойдёт и будет выведено сообщение об ошибке.

from CupDefs import logger
from CupDefs import init

init.init()  # инициализация

logger.Logger.init_logs('example.md')
logger.Logger.mklog(logger.LogType.DONE, 'ОШИБОЧКА ПРОИЗОШЛА!')
logger.Logger.mklog(logger.LogType.INFO, 'кстати, вот инфа')
logger.Logger.mklog(logger.LogType.WARNING, 'тут проблема...')

Статическая функция mklogif

(condition: bool | typing.Callable, log_type, text: str) -> None

Функция принимает в первый аргумент булево значение или вызываемый объект (напр. Функция), затем она принимает одно из значений класса LogType и строку, которая будет записана в логи.
Запись происходит только если аргумент condition является истинным или вызываемый объект возвращает истину.

Если не была вызвана функция init_logs, то запись в логи не произойдёт и будет выведено сообщение об ошибке.

close_logs

() -> bool

Закрывает файл логов. Чтобы снова иметь возможность осуществлять запись - требуется снова вызвать функцию init_logs В случае успеха возвращает True, иначе - False.

Формат логов

<префикс>[день.месяц.год-час:минута:секунда] <сообщения лога>

пример:
[OK ][28.08.24-17:54:16] Операция завершилась успешно.

Время в логах указывается по UTC. 24-часовой формат. Год указывается без 2000. Числа выравниваются нулями слева.

Генератор номера сборки


Инициализация генератора номера сборки происходит путём вызова init_vergen(), если он до этого не был инициализирован функцией init модуля init

Функция generate

() -> str | None

Функция генерирует номер сборки.

Если генератор не был инициализирован, то функция будет выводить надпись об ошибке и возвращать None, если же всё прошло успешно, то функция вернет сгенерированный номер сборки.

from CupDefs import vergen

vergen.init_vergen()
result = vergen.generate()
# (случайный пример)
print(result)  # 2342bf0c

Алгоритм вычисления номера сборки

Генерируемый номер сборки состоит из двух частей: цифры и 4 символа

"Цифры"

Алгоритм их генерации основан на методе нумерации сборок игры S.T.A.L.K.E.R.

Оригинальный алгоритм:

days = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 303, 334, 365]  # число дней с начала года
m = 6  # 0 <= m <= 11
y = 2009
d = 25
num = 365 * (y - 1999) - 31 + days[m] + d  # результат: 3825

Алгоритм, используемый в CupDefs:

days = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 303, 334, 365]  # число дней с начала года
m = 7  # 1 <= m <= 12
y = 2023
d = 25
num = 365 * (y - 2020) - 31 + days[(m - 1)] + d  # результат: 1270

В обоих случаях,

  • y - текущий год
  • m - текущий месяц
  • d - текущий день

"4 символа"

Вычисляются по следующему принципу:

  1. Ищутся все файлы, начиная с директории, указанной в vars.VERGEN_HASH_PATH, и далее рекурсивно.
  2. Происходит вычисление хеша всех файлов по их содержимому.
  3. Все полученные хеши соединяются в одну строку и вычисляется конечный хеш.

После чего "цифры" и "4 символа соединяются", что и является конечным результатом.

Утилиты

Модуль utils


Этот модуль содержит различные вспомогательные функции, которые используются пакетом CupDefs, а также их можно использовать и отдельно.

Функции pdone, pwarn, perror, pinfo

(text: str) -> None

Функции выводят цветной текст. Вывод происходит с переносом на новую строку.

Имя функции Цвет текста
pdone Зелёный
perror Красный
pwarn Жёлтый
pinfo Голубой

Если была вызвана функция инициализации модуля init с флагом "no_color" то, вывод этих функций не будет цветным.

Функция print_logo

(colorize: bool) -> None

Функция выводит логотип Cuplarax в виде ASCII-арта.
Если аргумент colorize истинный, то будет выведена цветная версия, иначе - бесцветная.
Логотип также выводится при вызове функции инициализации модуля init, если не был передан флаг "no_logo".

Переменные

Модуль vars


Модуль содержит переменные, которые отвечают за поведение некоторых функций.

Имя переменной Тип Назначение Значение по-умолчанию
AUTO_PRINT_ERROR bool Выводить ли сообщения об ошибках CupDefs или нет True
PRINT_LOGS_CLI bool Выводить ли в консоль сообщения, которые записываются в логи True
VERGEN_HASH_SIZE int Размер конечного хеша 2
VERGEN_HASH_PATH str Корневая директория, откуда будут браться файлы для генерации хеша "."

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cupdefs-1.1.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

CupDefs-1.1-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file cupdefs-1.1.tar.gz.

File metadata

  • Download URL: cupdefs-1.1.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.0

File hashes

Hashes for cupdefs-1.1.tar.gz
Algorithm Hash digest
SHA256 4109a102ae35aec4f55bbc4bd947b671eb8d4fade3d3fecb02e3f232814931ef
MD5 1da28d9bd3817bc4c4bfa8296fb48d84
BLAKE2b-256 76cfbaf947139dcb8624e224f908c90f74da77d224e0bce052aeb0c7514e97f0

See more details on using hashes here.

File details

Details for the file CupDefs-1.1-py3-none-any.whl.

File metadata

  • Download URL: CupDefs-1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.0

File hashes

Hashes for CupDefs-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 59f68f2be9784d10da43612e9c41888c0c63a64ecc5151f5a81722a42fe92617
MD5 197ef0e09c309d43b69b0e5100a0ce8b
BLAKE2b-256 2e31a8aa587d80d9b970eae0197af9bc2b92d29ac5a8f24efd969b69eca2b41d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page