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".

Функция get_code_dir

(mode: str, add: str | None = '') -> str

Функция позволяет получить расположение скрипта, в котором она была вызвана. Первый аргумент принимает в себя строку, состоящую из определенных букв, каждая буква меняет поведение функции как указано в таблице:

Буква Значение
'C' Меняет текущую рабочую папку программы на директорию расположения скрипта (без учета дополнительного пути).
'A' Добавляет директорию скрипта в sys.path (без учета дополнительного пути).
'W' Функция вернет директорию скрипта без добавления дополнительного пути.

Регистр символов не важен. Любые символы, не присутствующие в таблице выше, будут проигнорированы.

Второй аргумент - дополнительный путь который будет добавлен в конец пути директории скрипта, может указывать как на папку, так и на файл

По-умолчанию, функция возвращает путь до директории скрипта + добавочный путь

Пример:

# file home/project/test.py

from CupDefs import utils

utils.get_code_dir('')  # home/project/
utils.get_code_dir('', 'meme/')  # home/project/meme/
utils.get_code_dir('W', 'meme/')  # home/project/

Переменные

Модуль vars


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

Имя переменной Тип Назначение Значение по-умолчанию
PRINT_CUPDEFS_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.4.tar.gz (11.9 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.4-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for cupdefs-1.4.tar.gz
Algorithm Hash digest
SHA256 b6459eaa0be457447a2cc2ae9a4f2d105faa18fb4369658780dcdf584364e5c8
MD5 2425947e4f82b624ff4253458249e3e0
BLAKE2b-256 11663379ff4712cbfa07e3c1488068db028bf5132ba9b2b011abb8f0fc0c7a02

See more details on using hashes here.

File details

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

File metadata

  • Download URL: CupDefs-1.4-py3-none-any.whl
  • Upload date:
  • Size: 9.4 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 503b9e4243e198b0d05a0aae34a2b4c564203e872fd9d8bb408db3f1d40ff967
MD5 78b5cc608fcdc6a3e286fbcd44201d24
BLAKE2b-256 0c282cae952fd0d72e8689d6dd0fda5bdc983c9814cab4496133fcd8f0b35d36

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