Skip to main content

Django test tools

Project description

Build Status Coverage Status

Django test tools. Django >= 1.8

Наборы стандартных проверок для Django-форм

Пример теста tests/tests_for_project.py

Описание тестовых классов и их параметров для описания форм

GlobalTestMixIn

название поля

значение по умолчанию

описание

пример использования

all_unique

None

не использовать

choice_fields_values

{}

варианты значений для select, multiselect полей

choice_fields_values = {‘field1’: (value1, value2)}

custom_error_messages

{}

Кастомные сообщения для определенных полей

custom_error_messages = {‘field1’: {message_type: u”Текст сообщения об ошибке.”}}

errors

[]

не переопределять (хранит значения ошибок для текущего теста)

files

[]

список файлов в текущем тесте (используется для закрытия файлов в конце каждого теста)

f = open(filename); self.fields.append(f)

maxDiff

None

unittest.TestCase.maxDiff

non_field_error_key

‘__all__’

поле, в котором возвращаются общие (не привязанные к конкретному полю) для формы ошибки

unique_fields

None

список уникальных полей

unique_fields = (‘field1’, (‘field2’, ‘field3’), ‘field4’)

unique_with_case

()

Список уникальных полей, для которых при проверке униклаьности учитывается регистр

unique_with_case = (‘field1’, )

FormTestMixIn(GlobalTestMixIn)

название поля

значение по умолчанию

описание

пример использования

включает проверки

obj

None

модель, для котороый выполняются все проверки. Является необходимым для запуска любого теста

additional_params

{}

Дополнительные параметры для всех выполняющихся в тестах запросов

additional_params = {‘HTTP_X_REQUESTED_WITH’: ‘XMLHttpRequest’}

all_fields

default_params.keys()

Список всех полей, которые должны присутствовать на форме.

all_fields = (‘field1’, ‘field2’)

Проверка наличия полей на форме. Все поля заполнены (исключаются указанные в one_of_fields)

all_fields_add

all_fields or default_params_add.keys()

Список всех полей, которые должны присутствовать на форме создания

all_fields_add = (‘field1’, ‘field2’)

all_fields_edit

all_fields or default_params_edit.keys()

Список всех полей, которые должны присутствовать на форме редактирования

all_fields_edit = (‘field1’, ‘field2’)

check_null

None

Включать ли проверки на NULL байт?

check_null = True

NULL байт в строковых полях и именах файлов

check_null_file_positive

False, если установлено check_null

check_null_file_positive = True

NULL байт вырезается из имен файлов при сохранении

check_null_file_negative

True, если установлено check_null

check_null_file_negative = True

NULL байт в именах файлов. Ожидается сообщение об ошибке

check_null_str_positive

False, если установлено check_null

check_null_str_positive = True

NULL байт вырезается из строковых полей при сохранении

check_null_str_negative

True, если установлено check_null

check_null_str_negative = True

NULL байт в строковых полях. Ожидается сообщение об ошибке

choice_fields

[]

Список select полей

choice_fields = (‘field1’, ‘field2’)

Невалидные значения в полях (строка, число)

choice_fields_add

choice_fields

Список select полей на форме создания

choice_fields_add = (‘field1’, ‘field2’)

choice_fields_edit

choice_fields

Список select полей на форме редактирования

choice_fields_edit = (‘field1’, ‘field2’)

choice_fields_with_value_in_error

[]

Список select полей, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значение

choice_fields_with_value_in_error = (‘field1’, ‘field2’)

Невалидные значения в полях (строка, число)

choice_fields_add_with_value_in_error

choice_fields_with_value_in_error

Список select полей на странице создания, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значение

choice_fields_add_with_value_in_error = (‘field1’, ‘field2’)

choice_fields_edit_with_value_in_error

choice_fields_with_value_in_error

Список select полей на странице создания, при вводе невалидного значения в которых сообщение об ошибке содержит введенное значение

choice_fields_edit_with_value_in_error = (‘field1’, ‘field2’)

default_params

{}

Параметры по умолчанию, которые используются при создании/редактировании объекта

default_params = {‘field1’: value1, ‘field2: value2}

default_params_add

default_params

Параметры по умолчанию, которые используются при создании объекта

default_params_add = {‘field1’: value1, ‘field2: value2}

default_params_edit

default_params

Параметры по умолчанию, которые используются при редактировании объекта

default_params_edit = {‘field1’: value1, ‘field2: value2}

date_fields

Ключи из default_params_add, default_params_edit, значения из all_fields_add, all_fields_edit, содержащие в названии ‘date’

Названия полей, содержащих даты

date_fields = (‘field1’, ‘field2’)

datetime_fields

()

Названия полей, содержащих datetime

datetime_fields = (‘field1’, ‘field2’)

digital_fields

None

Названия полей, содержащих числа

digital_fields = (‘field1’, ‘field2’)

Позитивные: Максимальные, минимальные числовые значения. Негативные: Значения больше максимального, меньше минимального, строки

digital_fields_add

digital_fields или default_params_add.keys(), для которых значения являются числами и не указаны в choice_fields_add, choice_fields_add_with_value_in_error

Названия полей на форме создания, содержащих числа

digital_fields_add = (‘field1’, ‘field2’)

digital_fields_edit

digital_fields или default_params_edit.keys(), для которых значения являются числами и не указаны в choice_fields_edit, choice_fields_edit_with_value_in_error

Названия полей на форме редактирования, содержащих числа

digital_fields_edit = (‘field1’, ‘field2’)

disabled_fields

None

Названия полей, выводящихся на форме, но недоступных для редактирования

disabled_fields = (‘field1’, ‘field2’)

Наличие полей на форме. Попытка передать значения в недоступных полях при сохранении

disabled_fields_add

disabled_fields

Названия полей, выводящихся на форме создания, но недоступных для редактирования

disabled_fields_add = (‘field1’, ‘field2’)

disabled_fields_edit

disabled_fields

Названия полей, выводящихся на форме редактирования, но недоступных для редактирования

disabled_fields_edit = (‘field1’, ‘field2’)

email_fields

None

Названия полей для ввода email

email_fields = (‘field1’, ‘field2’)

Невалидные (строка, не являющаяся email’ом) значения в полях

email_fields_add

email_fields или ключи из default_params_add, содержащие в названии ‘email’

Названия полей для ввода email на форме создания

email_fields_add = (‘field1’, ‘field2’)

email_fields_edit

email_fields или ключи из default_params_edit, содержащие в названии ‘email’

Названия полей для ввода email на форме редактирования

email_fields_edit = (‘field1’, ‘field2’)

exclude_from_check

[]

Названия полей, которые нужно исключить из проверки значений во всех тестах. Актуально, например, для полей, содержащих дату обновления объекта

exclude_from_check = (‘field1’, ‘field2’)

exclude_from_check_add

exclude_from_check

Названия полей, которые нужно исключить из проверки значений в тестах создания объекта

exclude_from_check_add = (‘field1’, ‘field2’)

exclude_from_check_edit

exclude_from_check

Названия полей, которые нужно исключить из проверки значений в тестах редактирования объекта

exclude_from_check_edit = (‘field1’, ‘field2’)

fields_helptext

None

Хелптекст в полях формы

fields_helptext = {'url': 'For example "http://example.com/test"'}

Проверка наличия хелптекста в соответствующих полях формы

fields_helptext_add

fields_helptext

Хелптекст в полях формы

fields_helptext_add = {'url': 'For example "http://example.com/test"'}

Проверка наличия хелптекста в соответствующих полях формы создания

fields_helptext_edit

fields_helptext

Хелптекст в полях формы

fields_helptext_edit = {'url': 'For example "http://example.com/test"'}

Проверка наличия хелптекста в соответствующих полях формы редактирования

file_fields_params

{}

Параметры файловых полей

file_fields_params = {'field_name': {'extensions': ('jpg', 'txt'), 'max_count': 3, 'one_max_size': '3Mb', 'wrong_extensions': ('rar', 'zip'), 'min_width': 200, 'min_height': 100, 'max_width': 300, 'max_height': 200}}

file_fields_params_add

file_fields_params

Параметры файловых полей на форме создания

file_fields_params_edit

file_fields_params

Параметры файловых полей на форме редактирования

filter_params

None

Названия параметров для фильтрации списка объектов

filter_params = (‘filter_name1’, (‘filter_name2’, ‘any_valid_value’), )

Для тестов должен быть задан также url_list. Проверка с пустым, либо указанным в параметрах значением. Проверка со случайными значениями. В любом случае ожидается ответ 200

hidden_fields

None

Названия полей, выводящихся на форме в скрытом виде

hidden_fields = (‘field1’, ‘field2’)

Проверка наличия полей на форме

hidden_fields_add

hidden_fields

Названия полей, выводящихся на форме создания в скрытом виде

hidden_fields_add = (‘field1’, ‘field2’)

hidden_fields_edit

hidden_fields

Названия полей, выводящихся на форме редактирования в скрытом виде

hidden_fields_edit = (‘field1’, ‘field2’)

int_fields

None

Названия полей, содержащих целые числа

int_fields = (‘field1’, ‘field2’)

см. digital_fields

int_fields_add

int_fields или поля из digital_fields_add, для которых значения полей в default_params_add целочисленные

Названия полей на форме создания, содержащих целые числа

int_fields_add = (‘field1’, ‘field2’)

int_fields_edit

int_fields или поля из digital_fields_edit, для которых значения полей в default_params_edit целочисленные

Названия полей на форме редактирования, содержащих целые числа

int_fields_edit = (‘field1’, ‘field2’)

intervals

None

Существующие на форме временные интервалы

intervals = (('field1', field2'), ('field3, 'field4', '>='))

Окончание интервала больше, меньше, равно началу интервала

max_blocks

None

Словарь количества строка в инлайн блоках

max_blocks = {‘inline_block_1’: 10}

Максимальное число строк, число строк больше максимального

max_fields_length

{}

Словарь максимальной допустимой длины значений (для текстовых) или максимального допустимого значения (для числовых) в полях

max_fields_length = {‘string_field_name’: 100, ‘digital_field_name’: 99999}

Максимальные значения (для файловых полей в тестах редактирования сохранение и проверка выполняется дважды). Значения больше максимальных.

min_fields_length

{}

Словарь минимальной допустимой длины значений (для текстовых) или минимального допустимого значения (для числовых) в полях

min_fields_length = {‘string_field_name’: 5, ‘digital_field_name’: -1}

Минимальные значения. Значения меньше минимальных

multiselect_fields

None

Список multiselect полей

multiselect_fields = (‘field1’, ‘field2’)

Невалидные значения (число)

multiselect_fields_add

multiselect_fields или default_params_add.keys() если значения для них являются списками

Список multiselect полей на форме создания

multiselect_fields_add = (‘field1’, ‘field2’)

multiselect_fields_edit

multiselect_fields или default_params_edit.keys() если значения для них являются списками

Список multiselect полей на форме редактирования

multiselect_fields_edit = (‘field1’, ‘field2’)

not_empty_fields

None

Обязательные для заполнения поля

not_empty_fields = (‘field1’, (‘field2’, ‘field3’))

Заполнены только обязательные поля. Одно из обязательных полей (выполняется для всех) не заполнено.

not_empty_fields_add

not_empty_fields или required_fields_add или default_params_add.keys()

Обязательные для заполнения поля на форме создания

not_empty_fields_add = (‘field1’, (‘field2’, ‘field3’))

not_empty_fields_edit

not_empty_fields или required_fields_edit или default_params_edit.keys()

Обязательные для заполнения поля на форме редактирования

not_empty_fields_edit = (‘field1’, (‘field2’, ‘field3’))

only_if_value

None

Поля, доступные для в зависимости от значения в другом поле

only_if_value = {‘field1’: {‘field2’: ‘value1’}}

Указано значение, включающее поле. Указано другое значение, поле заполнено.

one_of_fields

None

Список наборов полей, которые могут быть заполнены только отдельно друг от друга

one_of_fields = ((‘field1’, ‘field2’), (‘field1’, ‘field3’, ‘field4’))

Заполнено одно из группы. Одновременно заполненные поля (если связанных полей больше трех, разбиваются также попарно)

one_of_fields_add

one_of_fields

Список наборов полей, которые могут быть заполнены только отдельно друг от друга на форме создания

one_of_fields_add = ((‘field1’, ‘field2’), (‘field1’, ‘field3’, ‘field4’))

one_of_fields_edit

one_of_fields

Список наборов полей, которые могут быть заполнены только отдельно друг от друга на форме редактирования

one_of_fields_edit = ((‘field1’, ‘field2’), (‘field1’, ‘field3’, ‘field4’))

required_fields

None

Поля, которые должны присутствовать в запросе.

required_fields = (‘field1’, (‘field2’, ‘field3’))

Заполнены только обязательные поля. Одно из обязательных полей (выполняется для всех) отсутствует

required_fields_add

required_fields или default_params_add.keys()

Обязательные для заполнения поля на форме создания

required_fields_add = (‘field1’, (‘field2’, ‘field3’))

required_fields_edit

required_fields или default_params_edit.keys()

Обязательные для заполнения поля на форме редактирования

required_fields_edit = (‘field1’, (‘field2’, ‘field3’))

required_if

None

Поля, обязательные для заполнения, если заполнено другое поле

required_if = {'field1': 'field2', 'field2': ('field1', 'field3')}

Заполнено основное, но не заполнено зависимое. Не заполнены основное и зависимое. Заполнено и основное, и зависимое.

required_if_value

None

Поля, обязательные для заполнения в зависимости от значения в другом поле

required_if_value = {‘field1’: {‘field2’: ‘value1’}}

Указано значение, включающее обязательность: поле заполнено, поле не заполнено. Указано другое значение: поле заполнено, поле не заполнено.

required_if_add

required_if или {}

Поля, обязательные для заполнения, если заполнено другое поле на форме создания

required_if_add = {'field1': 'field2', 'field2': ('field1', 'field3')}

required_if_edit

required_if или {}

Поля, обязательные для заполнения, если заполнено другое поле на форме редактирования

required_if_edit = {'field1': 'field2', 'field2': ('field1', 'field3')}

status_code_error

200

Статус ответа при наличии ошибок

status_code_not_exist

404

Статус ответа при манипуляциях с несуществующим объектом

status_code_success_add

200

Статус ответа при успешном создании объекта

status_code_success_edit

200

Статус ответа при успешном редактировании объекта

unique_fields

None

список уникальных полей

unique_fields = (‘field1’, (‘field2’, ‘field3’), ‘field4’)

Объект с такими полями уже существует. Для текстовых полей проверяется также в uppercase

unique_fields_add

unique_fields (учитывается наличие в all_fields_add)

Cписок уникальных полей на форме создания

unique_fields_add = (‘field1’, (‘field2’, ‘field3’), ‘field4’)

unique_fields_edit

unique_fields (учитывается наличие в all_fields_edit)

Cписок уникальных полей на форме редактирования

unique_fields_edit = (‘field1’, (‘field2’, ‘field3’), ‘field4’)

url_list

URL, на котором находится список объектов, например, в админке. Включает все тесты, связанные со списком

url_list = ‘modelname:url_name’ или url_list = ‘/path/to/list/’

with_captcha

Наличие поля ‘captcha’ в all_fields или в all_fields_add или в all_fields_edit

Используется ли капча на форме. Если True, во всех тестах отправляемые параметры дополняются полями капчи

file_fields_params

название поля

описание

включает проверки

extensions

разрешенные расширения

Все валидные расширения. Невалидные расширения.

wrong_extensions

дополнительные невалидные расширения

Добавляет значения для проверки в тесте невалидных расширений

max_count

максимальное количество файлов (для полей с множественным выбором файлов)

Максимальное число файлов. Число файлов больше максимального

one_max_size

максимальный размер файла (одного файла для полей с множественным выбором файлов)

Максимальный размер файла. Размер файла больше максимального

min_width

минимальная ширина изображения

Изображение с минимальной шириной. Изображение с шириной меньше минимальной

min_height

минимальная высота изображения

Изображение с минимальной высотой. Изображение с высотой меньше минимальной

max_width

максимальная ширина изображения

Изображение с максимальной шириной. Изображение с шириной меньше максимальной

max_height

максимальная высота изображения

Изображение с максимальной высотой. Изображение с высотой меньше максимальной

custom_error_messages (То же используется в settings.ERROR_MESSAGES)

название

описание

required

  • Не заполнено обязательное поле

  • Отсутствует обязательное поле

without_required

Отсутствует обязательное поле

empty_required

Не заполнено обязательное поле

max_length

  • Превышена максимальная длина текста в поле

  • Превышено максимальное значение в числовом поле

  • Превышена максимальная длина имени файла

max_length_digital

Превышено максимальное значение в числовом поле

max_length_file

Превышена максимальная длина имени файла

min_length

  • Длина текста в поле меньше минимальной

  • Числовое значение меньше минимального

min_length_digital

Числовое значение меньше минимального

wrong_value

В селект/мультиселект поле указано невалидное значение

wrong_value_int

В целочисленном поле указано не целое число

wrong_value_digital

В числовом поле указано не число

wrong_value_email

В поле адреса электронной почты указано невалидное значение

unique

Объект с указанными уникальными параметрами уже существует

delete_not_exists

Удаляемый объект не существует

recovery_not_exists

Восстанавливаемый из корзины объект не существует

empty_file

Пустой файл

max_count_file

В поле со множественной загрузкой загружено больше допустимого количества файлов

max_size_file

Превышен максимальный размер файла

max_sum_size_file

В поле со множественной загрузкой файлов превышен допустимый суммарный размер файлов

wrong_extension

Загружен файл с недопустимым расширением

min_dimensions

Размеры загруженного изображения меньше, чем минимальные допустимые

one_of

Поля, которые могут быть заполнены только по отдельности, заполнены вместе

max_block_count

Превышено максимальное число инлайн-полей в блоке

not_exist

Объект не существует (используется для проверки message в тестах редактирования и удаления)

FormAddTestMixIn(FormTestMixIn)

название поля

значение по умолчанию

описание

пример использования

url_add

‘’

URL, по которому добавляются объекты. Включает все тесты на добавление

url_add = ‘modelname:url_name_add’ или url_add = ‘/path/to/add/’

FormEditTestMixIn(FormTestMixIn)

название поля

значение по умолчанию

описание

пример использования

second_save_available

True

Доступно ли повторное сохранение объекта при редактировании. Позволяет выключить проверки повторного сохранения, если после редактирования объект меняет статус или по другим причинам становится нередактируемым

second_save_available = False

url_edit

‘’

URL, по которому редактируются объекты. Включает все тесты на редактирование

url_edit = ‘modelname:url_name_change’ или url_edit = ‘/path/to/edit/1/’ (в этом случае по умолчанию для редактирования будет браться объект с pk=1)

FormDeleteTestMixIn(FormTestMixIn)

название поля

значение по умолчанию

описание

пример использования

url_delete

‘’

URL, по которому удаляются объекты

url_delete = ‘modelname:url_name_delete’ или url_delete = ‘/path/to/delete/1/’

FormRemoveTestMixIn(FormTestMixIn)

Тесты для объектов, удаление которых происходит в корзину

название поля

значение по умолчанию

описание

пример использования

url_delete

‘’

URL, по которому удаляются объекты

url_delete = ‘modelname:url_name_remove’ или url_delete = ‘/path/to/remove/1/’

url_recovery

‘’

URL, по которому выполняется восстановление объекта

url_recovery = ‘modelname:url_name_recovery’ или url_recovery = ‘/path/to/recovery/1/’

url_edit_in_trash

‘’

URL, по которому открывается страница редактирования объекта в корзине

url_edit_in_trash = ‘modelname:url_name_trash_edit’ или url_edit_in_trash = ‘/path/to/trash/edit/1/’

ChangePasswordMixIn(GlobalTestMixIn, LoginMixIn)

Тесты смены пароля пользователя

название поля

значение по умолчанию

описание

пример использования

current_password

‘qwerty’

Пароль редактируемого пользователя

current_password = ‘qwerty’

field_old_password

None

Поле для ввода старого пароля

field_old_password = ‘old_password’

field_password

None

Поле для ввода нового пароля

field_password = ‘password1’

field_password_repeat

None

Поле для ввода подтверждения нового пароля

field_password_repeat = ‘password2’

password_max_length

128

Максимальная допустимая длина пароля

password_max_length = 128

password_min_length

6

Минимальная допустимая длина пароля

password_min_length = 6

password_params

default_params или {field_old_password: current_password, field_password: some_new_value, field_password_repeat: some_new_value}

Параметры по умолчанию, которые используются для смены пароля

password_params = {‘password1’: ‘qwe123’, ‘password2’: ‘qwe123’}

obj

None

Модель пользователя

obj = User

password_positive_values

[get_randname(10, ‘w’) + str(randint(0, 9)), str(randint(0, 9)) + get_randname(10, ‘w’), get_randname(10, ‘w’).upper() + str(randint(0, 9)), ]

Допустимые значения для пароля

password_positive_values = [‘qwe+’, ‘qwe*’, ‘QwE1’]

password_similar_fields

None

Поля в модели пользователя, на значения которых не должен быть похож новый пароль

password_similar_fields = (‘email’, ‘first_name’)

password_wrong_values

[‘йцукенг’, ]

Недопустимые значения для пароля (с допустимой длиной)

password_wrong_values = [‘qwerty’, ‘йцукен’, ‘123456’]

url_change_password

‘’

URL, по которому выполняется смена пароля. Если не содержит pk пользователя, задавать как /url/, иначе - можно задавать через urlname

url_change_password = ‘admin:auth_user_password_change’

LoginTestMixIn

Тесты логина пользователя

название поля

значение по умолчанию

описание

пример использования

blacklist_model

None

Модель объекта, в котором хранится информация о некорректных логинах с ip

blacklist_model = BlackList

default_params

{self.field_username: self.username, self.field_password: self.password}

Параметры по умолчанию, которые используются для логина пользователя

default_params = {‘username’: ‘test@test.test’, ‘password’: ‘qwerty’}

field_password

‘password’

Поле для ввода пароля

field_password = ‘password’

field_username

‘username’

Поле для ввода юзернейма

field_username = ‘username’

password

‘qwerty’

Пароль тестируемого пользователя

password = ‘qwerty’

passwords_for_check

[]

Пароли для проверки (будут проверены все)

passwords_for_check = [‘qwerty’, ‘йцукен’, ‘123456’]

obj

None

Модель пользователя

obj = User

username

None

Юзернейм тестируемого пользователя

username = ‘test@test.test

url_login

‘’

URL для логина

url_login = ‘admin:login’

url_redirect_to

‘’

URL на который выполняется редирект после логина

url_redirect_to = ‘accounts:cabinet’

urls_for_redirect

[‘/’, ]

Урлы, доступные пользователю (будет выбран один для проверки редиректа)

urls_for_redirect = [‘accounts:profile’,]

Дополнительные настройки

Могут быть переопределены в django settings

Название

Значение по умолчанию

Описание

CAPTCHA_TYPE

‘simplecaptcha’

тип используемой в проекте капчи. ‘supercaptcha’ или ‘simplecaptcha’

COLORIZE_TESTS

False

раскраска вывода результатов тестов

LOGIN_URL_NAME

‘login’

url, по которому выполняется логин

LOGOUT_URL_NAME

‘auth_logout’

url, по которому выполняется логаут

ERROR_MESSAGES

{}

переопределение сообщений об ошибках для всего проекта

SIMPLE_TEST_EMAIL

False

генерация случайных значений адресов электронной почты исключая спецсимволы

TEST_DATE_INPUT_FORMAT

settings.DATE_INPUT_FORMATS[0]

формат входных значений дат

TEST_DATETIME_INPUT_FORMAT

settings.DATETIME_INPUT_FORMATS[0]

формат входных значений в datetime-полях

TEST_TIME_INPUT_FORMAT

settings.TIME_INPUT_FORMATS[0]

формат входных значений времени

TEST_GENERATE_REAL_SIZE_FILE

True

генерация файлов с указанным размером. При False для обработки файлов используется FakeSizeMemoryFileUploadHandler

TEST_REAL_FORM_FIELDS

False

получение полей из ответа сервера из content, а не context

TEST_SPEEDUP_EXPERIMENTAL

False

ускоряет выполнение тестов путем ранней обработки декораторов

TEST_TRACEBACK_LIMIT

None

глубина трейсбека в результатах тестов

TEST_USE_REAL_SETTINGS

False

если True, не переопределяются номера баз редиса, используются реальные пути для сохранения файлов

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

ttoolly-0.38.0.tar.gz (119.7 kB view details)

Uploaded Source

Built Distribution

ttoolly-0.38.0-py3-none-any.whl (96.0 kB view details)

Uploaded Python 3

File details

Details for the file ttoolly-0.38.0.tar.gz.

File metadata

  • Download URL: ttoolly-0.38.0.tar.gz
  • Upload date:
  • Size: 119.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.10.12

File hashes

Hashes for ttoolly-0.38.0.tar.gz
Algorithm Hash digest
SHA256 cb1df221921a0d196bc051034d2c5844f5490569b7f1a17c6012d5a024ec46b0
MD5 63f16af6942fb66b2fd8a81c78e4361f
BLAKE2b-256 9ea201f0be038bd5483b55eeef3478857402b590b283fc8a4b9ec257c7ea91e7

See more details on using hashes here.

File details

Details for the file ttoolly-0.38.0-py3-none-any.whl.

File metadata

  • Download URL: ttoolly-0.38.0-py3-none-any.whl
  • Upload date:
  • Size: 96.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.10.12

File hashes

Hashes for ttoolly-0.38.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b2d5dac185d6aefe27350dc584eb85ac5a0489146cc1cae26744d4c099fa1c08
MD5 7446be506c5e590f42807f2d6baaf35b
BLAKE2b-256 189c92b1a540303cea6ea285e2b348bd0d1c0033814ae358e24be74d7dd2ea5d

See more details on using hashes here.

Supported by

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