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 и версию CupDefs в виде 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.2.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.2-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cupdefs-1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 ab97f28a9a95d0ca8a0814f16c6c95a77320817c9c7060bab47dc484dea4428b
MD5 02f590d7b8dc4f38d3045288b855c5bb
BLAKE2b-256 48a26263180716d5335ebbf60f4e33842b1280eda7032d1d74bfedd6b2ad0c77

See more details on using hashes here.

File details

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

File metadata

  • Download URL: CupDefs-1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.2 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2d2f09f9c5564ae5016386e150028751afaf5b97deb95b327a23ff942ae252f4
MD5 b2b8d56975e454ae901ea8cf2d6e5a5e
BLAKE2b-256 954961a88e91e21ac7fa2935b4468217964795edfad25f89d07c49fd3502d21a

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