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 символа"
Вычисляются по следующему принципу:
- Ищутся все файлы, начиная с директории, указанной в vars.VERGEN_HASH_PATH, и далее рекурсивно.
- Происходит вычисление хеша всех файлов по их содержимому.
- Все полученные хеши соединяются в одну строку и вычисляется конечный хеш.
После чего "цифры" и "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' |
Функция вернет директорию скрипта без добавления дополнительного пути. |
Регистр символов не важен. Любые символы, не присутствующие в таблице выше, будут проигнорированы. Также, если вызвать функцию с флагом
'C'и дополнительным путём, указывающим на файл, то это приведёт к исключению.
Второй аргумент - дополнительный путь который будет добавлен в конец пути директории скрипта, может указывать как на папку, так и на файл
По-умолчанию, функция возвращает путь до директории скрипта + добавочный путь
Пример:
# 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cupdefs-1.5.tar.gz.
File metadata
- Download URL: cupdefs-1.5.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c657f259a7abc47aac87db89513691821a7442255b5b5e2fe98f6b566fbe0bd
|
|
| MD5 |
d10bf1e8d6af97f2bcb3be2fd194a0bb
|
|
| BLAKE2b-256 |
683cf01643a1896a8f18bfaaeeaf5f5f79e54b7b56fb23e73c6ee66e5ecee333
|
File details
Details for the file CupDefs-1.5-py3-none-any.whl.
File metadata
- Download URL: CupDefs-1.5-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a139f17be468a0f5e1a4cffe8dd001e9b7bb62ff23b2369aeb74139144ebf080
|
|
| MD5 |
d0b5aa0de07b6a8e040d47e75a777ac2
|
|
| BLAKE2b-256 |
ce9f24338784671050b33660cdea3e98f038cbabe32ccf9b0f9e12817866823e
|