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

Если функция инициализации достигнет лимита файлов для хеширования, то она завершиться досрочно и вернет False, в противном случае True. В обоих случаях инициализация будет считаться успешной.

Функция generate

() -> str | None

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

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

from CupDefs import vergen
from CupDefs import utils

utils.get_code_dir('C')  # меняем текущую директорию на директорию кода, на основе которого будет генерироваться версия
#  см. модуль utils

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' Функция вернет директорию скрипта без добавления дополнительного пути.

Регистр символов не важен. Любые символы, не присутствующие в таблице выше, будут проигнорированы. Также, если вызвать функцию с флагом '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

Функция clear

() -> None

Очищает экран консоли, используя команду clear, если не была произведена инициализация.
Инициализация устанавливает команду очистки консоли в зависимости от ОС. Для Windows - cls, для всех остальных clear. Инициализация происходит при вызове функции инициализации модуля init.

Переменные

Модуль vars


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

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

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.6.tar.gz (12.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.6-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cupdefs-1.6.tar.gz
  • Upload date:
  • Size: 12.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.6.tar.gz
Algorithm Hash digest
SHA256 c3f3c37b81a035d86189fd3107749d5c52bc8c5a56e9608490c4fc78de325358
MD5 dd8fd71f7f50199f5b1c645dbe066a57
BLAKE2b-256 fd2d04334ee14541007e9bfa37a933eff36374d2dd2d40ce7f501406c5725cfd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: CupDefs-1.6-py3-none-any.whl
  • Upload date:
  • Size: 9.9 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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 1ffd2c8c59376d497fffb654af599573effe284a0777db95fd631e64226d8a9d
MD5 0f229b7fa0116ef1518f9d4b066ca441
BLAKE2b-256 dbf486579a73ca94f08f7073064db521de7d4e6b94ce1f8f7fe52604b718eaa1

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