frat: added screen timers_screen, added new buttons: back, delete_timer, new_timer and the functionality is connected to them, udated fuc list_timers() for work with timers_screens for data;
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
from sqlalchemy import select, insert, update, delete
|
from sqlalchemy import select, insert, update, delete
|
||||||
|
|
||||||
from kawai_focus.schemas import TimerModel, TimerListModel
|
from kawai_focus.schemas import TimerModel
|
||||||
from kawai_focus.database.session import db
|
from kawai_focus.database.session import db
|
||||||
from kawai_focus.database.models import Timer
|
from kawai_focus.database.models import Timer
|
||||||
from kawai_focus.database.decor_erors import crud_error_guard
|
from kawai_focus.database.decor_erors import crud_error_guard
|
||||||
@@ -26,15 +26,30 @@ def get_timer(timer_id: int) -> TimerModel:
|
|||||||
|
|
||||||
|
|
||||||
@crud_error_guard
|
@crud_error_guard
|
||||||
def list_timers() -> list[TimerListModel]:
|
def list_timers() -> list[dict[str, int | str]]:
|
||||||
"""Функция для получения списка таймеров"""
|
"""Функция для получения списка таймеров"""
|
||||||
|
|
||||||
with db.get_session() as session:
|
with db.get_session() as session:
|
||||||
query = select(Timer.id, Timer.title)
|
query = select(
|
||||||
|
Timer.id,
|
||||||
|
Timer.title,
|
||||||
|
Timer.pomodoro_time,
|
||||||
|
Timer.count_pomodoro
|
||||||
|
)
|
||||||
result = session.execute(query)
|
result = session.execute(query)
|
||||||
timers = result.mappings().fetchall()
|
timers = result.mappings().fetchall()
|
||||||
|
|
||||||
return [TimerListModel.model_validate(obj=accept, from_attributes=True) for accept in timers]
|
return [
|
||||||
|
{
|
||||||
|
'timer_id': timer.id,
|
||||||
|
'text': (
|
||||||
|
f'{timer.title}\n'
|
||||||
|
f'Помидоров: {timer.count_pomodoro}, '
|
||||||
|
f'размер помидора: {timer.pomodoro_time}'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
for timer in timers
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
@crud_error_guard
|
@crud_error_guard
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import logging
|
|||||||
|
|
||||||
from kawai_focus.screens.timer_screen import TimerScreen
|
from kawai_focus.screens.timer_screen import TimerScreen
|
||||||
from kawai_focus.screens.timer_constructor_screen import TimerConstructorScreen
|
from kawai_focus.screens.timer_constructor_screen import TimerConstructorScreen
|
||||||
|
from kawai_focus.screens.timers_screen import TimersScreen
|
||||||
|
from kawai_focus.database.cruds import list_timers
|
||||||
|
|
||||||
|
|
||||||
Logger.setLevel(logging.DEBUG)
|
Logger.setLevel(logging.DEBUG)
|
||||||
@@ -24,10 +26,16 @@ class KawaiFocusApp(App):
|
|||||||
# Загрузка kv файла
|
# Загрузка kv файла
|
||||||
Builder.load_file('kv/timer_screen.kv')
|
Builder.load_file('kv/timer_screen.kv')
|
||||||
Builder.load_file('kv/timer_constructor_screen.kv')
|
Builder.load_file('kv/timer_constructor_screen.kv')
|
||||||
|
Builder.load_file('kv/timers_screen.kv')
|
||||||
|
|
||||||
screen_manager = ScreenManager()
|
screen_manager = ScreenManager()
|
||||||
|
timers = list_timers()
|
||||||
|
timers_screen = TimersScreen(name='timers_screen')
|
||||||
|
timers_screen.ids.timers_view.data = timers
|
||||||
|
|
||||||
|
screen_manager.add_widget(timers_screen)
|
||||||
screen_manager.add_widget(TimerConstructorScreen(name='timer_constructor_screen'))
|
screen_manager.add_widget(TimerConstructorScreen(name='timer_constructor_screen'))
|
||||||
screen_manager.add_widget(TimerScreen(name='timers_screen'))
|
screen_manager.add_widget(TimerScreen(name='timer_screen'))
|
||||||
return screen_manager
|
return screen_manager
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class TimerConstructorScreen(Screen):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if timer:
|
if timer:
|
||||||
screen_timer = self.manager.get_screen('timers_screen')
|
screen_timer = self.manager.get_screen('timer_screen')
|
||||||
screen_timer.timer = timer
|
screen_timer.timer = timer
|
||||||
time_culc = calculate_time(mm_user=timer.pomodoro_time)
|
time_culc = calculate_time(mm_user=timer.pomodoro_time)
|
||||||
screen_timer.timer_start_time = time_culc
|
screen_timer.timer_start_time = time_culc
|
||||||
@@ -42,10 +42,10 @@ class TimerConstructorScreen(Screen):
|
|||||||
screen_timer.source_timer_names = gen_types_timers(count_pomodoro=timer.count_pomodoro)
|
screen_timer.source_timer_names = gen_types_timers(count_pomodoro=timer.count_pomodoro)
|
||||||
|
|
||||||
self.manager.state_machine = screen_timer.source_timer_names.copy()
|
self.manager.state_machine = screen_timer.source_timer_names.copy()
|
||||||
self.manager.current = 'timers_screen'
|
self.manager.current = 'timer_screen'
|
||||||
|
|
||||||
|
|
||||||
def back(self, instance) -> None:
|
def back(self, instance) -> None:
|
||||||
"""Метод для кнопки назад - возврат в меню таймеров"""
|
"""Метод для кнопки назад - возврат в меню таймеров"""
|
||||||
|
|
||||||
pass
|
self.manager.current = 'timers_screen'
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ from kivy.clock import Clock
|
|||||||
from kivy.core.audio import SoundLoader
|
from kivy.core.audio import SoundLoader
|
||||||
|
|
||||||
from kawai_focus.utils.utils import data_json, custom_timer, calculate_time
|
from kawai_focus.utils.utils import data_json, custom_timer, calculate_time
|
||||||
|
from kawai_focus.database.cruds import del_timer, list_timers
|
||||||
|
|
||||||
|
|
||||||
class TimerScreen(Screen):
|
class TimerScreen(Screen):
|
||||||
@@ -88,7 +89,30 @@ class TimerScreen(Screen):
|
|||||||
if not len(self.manager.state_machine):
|
if not len(self.manager.state_machine):
|
||||||
self.manager.state_machine = self.source_timer_names.copy()
|
self.manager.state_machine = self.source_timer_names.copy()
|
||||||
|
|
||||||
self.choice_timer()
|
self.choice_timer()
|
||||||
|
|
||||||
|
def back(self, instance) -> None:
|
||||||
|
"""Метод для кнопки назад - возврат в меню таймеров"""
|
||||||
|
|
||||||
|
if self.ids.title_warning.text:
|
||||||
|
self.ids.title_warning.text = ''
|
||||||
|
self.ids.del_timer.color = (1, 1, 1, 1)
|
||||||
|
|
||||||
|
self.manager.current = 'timers_screen'
|
||||||
|
|
||||||
|
def delete_timer(self, instance) -> None:
|
||||||
|
"""Метод для удаления таймера"""
|
||||||
|
|
||||||
|
if not self.ids.title_warning.text:
|
||||||
|
self.ids.title_warning.text = ('Вы действительно хотите удалить таймер?\n'
|
||||||
|
'Если да, то нажмите кнопку "удалить" ещё раз.')
|
||||||
|
self.ids.del_timer.color = (1, 0.3, 0.3, 1)
|
||||||
|
else:
|
||||||
|
del_timer(timer_id=self.timer.id)
|
||||||
|
timers = list_timers()
|
||||||
|
timers_screen = self.manager.get_screen('timers_screen')
|
||||||
|
timers_screen.ids.timers_view.data = timers
|
||||||
|
self.manager.current = 'timers_screen'
|
||||||
|
|
||||||
def play_sound(self, dt) -> None:
|
def play_sound(self, dt) -> None:
|
||||||
"""Метод для воспроизведения звука"""
|
"""Метод для воспроизведения звука"""
|
||||||
|
|||||||
33
kawai_focus/screens/timers_screen.py
Normal file
33
kawai_focus/screens/timers_screen.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
from kivy.uix.screenmanager import Screen
|
||||||
|
|
||||||
|
from kawai_focus.utils.utils import calculate_time, gen_types_timers
|
||||||
|
from kawai_focus.database.cruds import get_timer
|
||||||
|
|
||||||
|
|
||||||
|
class TimersScreen(Screen):
|
||||||
|
"""Экран таймеры"""
|
||||||
|
|
||||||
|
def __init__(self, **kwargs):
|
||||||
|
super(TimersScreen, self).__init__(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
def switch_new_timer(self, instance) -> None:
|
||||||
|
"""Метод для переключения на экран Конструктор таймера"""
|
||||||
|
|
||||||
|
self.manager.current = 'timer_constructor_screen'
|
||||||
|
|
||||||
|
|
||||||
|
def switch_timer(self, instance) -> None:
|
||||||
|
"""Метод для кнопки переключения на выбранный таймер"""
|
||||||
|
|
||||||
|
timer = get_timer(timer_id=instance.timer_id)
|
||||||
|
screen_timer = self.manager.get_screen('timer_screen')
|
||||||
|
screen_timer.timer = timer
|
||||||
|
time_culc = calculate_time(mm_user=timer.pomodoro_time)
|
||||||
|
screen_timer.timer_start_time = time_culc
|
||||||
|
screen_timer.ids.time_label.text = time_culc
|
||||||
|
screen_timer.ids.title_label.text = timer.title
|
||||||
|
screen_timer.source_timer_names = gen_types_timers(count_pomodoro=timer.count_pomodoro)
|
||||||
|
|
||||||
|
self.manager.state_machine = screen_timer.source_timer_names.copy()
|
||||||
|
self.manager.current = 'timer_screen'
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
<TimerConstructorScreen>:
|
<TimerConstructorScreen>:
|
||||||
FloatLayout:
|
FloatLayout:
|
||||||
# поле вовода "название"
|
|
||||||
TextInput:
|
TextInput:
|
||||||
id: title
|
id: title
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
@@ -19,7 +18,6 @@
|
|||||||
height: 20
|
height: 20
|
||||||
pos_hint: {"center_x": 0.5, "center_y": 0.8}
|
pos_hint: {"center_x": 0.5, "center_y": 0.8}
|
||||||
|
|
||||||
# числовой счётчик "время помидора"
|
|
||||||
Label:
|
Label:
|
||||||
text: "помидор"
|
text: "помидор"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
@@ -46,7 +44,6 @@
|
|||||||
pos_hint: {"center_x": 0.7, "center_y": 0.7}
|
pos_hint: {"center_x": 0.7, "center_y": 0.7}
|
||||||
on_press: time_tomato_input.increment()
|
on_press: time_tomato_input.increment()
|
||||||
|
|
||||||
# числовой счётчик "время прерыва"
|
|
||||||
Label:
|
Label:
|
||||||
text: "перерыв"
|
text: "перерыв"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
@@ -73,7 +70,6 @@
|
|||||||
pos_hint: {"center_x": 0.7, "center_y": 0.6}
|
pos_hint: {"center_x": 0.7, "center_y": 0.6}
|
||||||
on_press: time_break_input.increment()
|
on_press: time_break_input.increment()
|
||||||
|
|
||||||
# числовой счётчик "время длительного перерыва"
|
|
||||||
Label:
|
Label:
|
||||||
text: "перерывище"
|
text: "перерывище"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
@@ -99,8 +95,7 @@
|
|||||||
size: 40, 40
|
size: 40, 40
|
||||||
pos_hint: {"center_x": 0.7, "center_y": 0.5}
|
pos_hint: {"center_x": 0.7, "center_y": 0.5}
|
||||||
on_press: time_long_break_input.increment()
|
on_press: time_long_break_input.increment()
|
||||||
|
|
||||||
# числовой счётчик "колличество помидоров"
|
|
||||||
Label:
|
Label:
|
||||||
text: "помидоров"
|
text: "помидоров"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
@@ -127,20 +122,18 @@
|
|||||||
pos_hint: {"center_x": 0.7, "center_y": 0.4}
|
pos_hint: {"center_x": 0.7, "center_y": 0.4}
|
||||||
on_press: count_tomatos_input.increment()
|
on_press: count_tomatos_input.increment()
|
||||||
|
|
||||||
# Кнопка "Создать"
|
|
||||||
Button:
|
Button:
|
||||||
text: 'Создать'
|
text: "Создать"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
height: 40
|
height: 40
|
||||||
width: 100
|
width: 100
|
||||||
pos_hint: {'center_x': 0.7, 'center_y': 0.1}
|
pos_hint: {"center_x": 0.7, "center_y": 0.1}
|
||||||
on_press: root.create_timer(self)
|
on_press: root.create_timer(self)
|
||||||
|
|
||||||
# Кнопка "Назад"
|
|
||||||
Button:
|
Button:
|
||||||
text: 'Назад'
|
text: "Назад"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
height: 40
|
height: 40
|
||||||
width: 100
|
width: 100
|
||||||
pos_hint: {'center_x': 0.3, 'center_y': 0.1}
|
pos_hint: {"center_x": 0.3, "center_y": 0.1}
|
||||||
on_press: root.back(self)
|
on_press: root.back(self)
|
||||||
@@ -2,51 +2,71 @@
|
|||||||
|
|
||||||
<TimerScreen>:
|
<TimerScreen>:
|
||||||
FloatLayout:
|
FloatLayout:
|
||||||
# Label для названия таймера
|
|
||||||
Label:
|
Label:
|
||||||
id: title_label
|
id: title_label
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
pos_hint: {'center_x': 0.3, 'center_y': 0.7}
|
pos_hint: {"center_x": 0.3, "center_y": 0.7}
|
||||||
|
|
||||||
# Label для типа таймера
|
|
||||||
Label:
|
Label:
|
||||||
id: type_timer_label
|
id: type_timer_label
|
||||||
text: 'Помидор'
|
text: "Помидор"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
pos_hint: {'center_x': 0.7, 'center_y': 0.7}
|
pos_hint: {"center_x": 0.7, "center_y": 0.7}
|
||||||
|
|
||||||
# Кнопка "Старт"
|
|
||||||
Button:
|
Button:
|
||||||
text: 'Старт'
|
text: "Старт"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
height: 40
|
height: 40
|
||||||
width: 100
|
width: 100
|
||||||
pos_hint: {'center_x': 0.3, 'center_y': 0.5}
|
pos_hint: {"center_x": 0.3, "center_y": 0.5}
|
||||||
on_release: root.start_timer(self)
|
on_release: root.start_timer(self)
|
||||||
|
|
||||||
# Кнопка "Пауза"
|
|
||||||
Button:
|
Button:
|
||||||
text: 'Пауза'
|
text: "Пауза"
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
height: 40
|
height: 40
|
||||||
width: 100
|
width: 100
|
||||||
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
|
pos_hint: {"center_x": 0.5, "center_y": 0.5}
|
||||||
on_release: root.pause_timer(self)
|
on_release: root.pause_timer(self)
|
||||||
|
|
||||||
# Кнопка "Стоп"
|
|
||||||
Button:
|
Button:
|
||||||
id: stop_button
|
id: stop_button
|
||||||
text: 'Стоп'
|
text: "Стоп"
|
||||||
opacity: 0
|
opacity: 0
|
||||||
disabled: True
|
disabled: True
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
height: 40
|
height: 40
|
||||||
width: 100
|
width: 100
|
||||||
pos_hint: {'center_x': 0.7, 'center_y': 0.5}
|
pos_hint: {"center_x": 0.7, "center_y": 0.5}
|
||||||
on_release: root.stop_timer(self)
|
on_release: root.stop_timer(self)
|
||||||
|
|
||||||
# Label для отображения времени
|
|
||||||
Label:
|
Label:
|
||||||
id: time_label
|
id: time_label
|
||||||
size_hint: None, None
|
size_hint: None, None
|
||||||
pos_hint: {'center_x': 0.5, 'center_y': 0.6}
|
pos_hint: {"center_x": 0.5, "center_y": 0.6}
|
||||||
|
|
||||||
|
Label:
|
||||||
|
id: title_warning
|
||||||
|
text: ""
|
||||||
|
color: (1, 0.3, 0.3, 1)
|
||||||
|
font_size: 14
|
||||||
|
size_hint_y: None
|
||||||
|
height: 20
|
||||||
|
pos_hint: {"center_x": 0.5, "center_y": 0.4}
|
||||||
|
|
||||||
|
Button:
|
||||||
|
text: "Назад"
|
||||||
|
size_hint: None, None
|
||||||
|
height: 40
|
||||||
|
width: 100
|
||||||
|
pos_hint: {"center_x": 0.3, "center_y": 0.1}
|
||||||
|
on_press: root.back(self)
|
||||||
|
|
||||||
|
Button:
|
||||||
|
id: del_timer
|
||||||
|
text: "Удалить"
|
||||||
|
size_hint: None, None
|
||||||
|
height: 40
|
||||||
|
width: 120
|
||||||
|
pos_hint: {"center_x": 0.7, "center_y": 0.1}
|
||||||
|
on_press: root.delete_timer(self)
|
||||||
49
kv/timers_screen.kv
Normal file
49
kv/timers_screen.kv
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#:kivy 2.3.1
|
||||||
|
|
||||||
|
<TimersScreen>:
|
||||||
|
FloatLayout:
|
||||||
|
RecycleView:
|
||||||
|
id: timers_view
|
||||||
|
size_hint: 1, 1
|
||||||
|
pos_hint: {"x": 0, "y": 0}
|
||||||
|
|
||||||
|
viewclass: "TimerButton"
|
||||||
|
|
||||||
|
RecycleBoxLayout:
|
||||||
|
default_size: None, dp(50)
|
||||||
|
default_size_hint: 1, None
|
||||||
|
size_hint_y: None
|
||||||
|
height: self.minimum_height
|
||||||
|
orientation: "vertical"
|
||||||
|
spacing: dp(5)
|
||||||
|
|
||||||
|
Button:
|
||||||
|
id: new_timer
|
||||||
|
text: 'Новый таймер'
|
||||||
|
size_hint: None, None
|
||||||
|
height: 40
|
||||||
|
width: 120
|
||||||
|
pos_hint: {"center_x": 0.3, "center_y": 0.1}
|
||||||
|
on_release: root.switch_new_timer(self)
|
||||||
|
|
||||||
|
<TimerButton@Button>:
|
||||||
|
timer_id: None
|
||||||
|
text: ""
|
||||||
|
on_release: app.root.get_screen("timers_screen").switch_timer(self)
|
||||||
|
size_hint: None, None
|
||||||
|
height: dp(50)
|
||||||
|
background_normal: "" # отключаем стандартный фон
|
||||||
|
background_color: 0, 0, 0, 0 # прозрачный
|
||||||
|
|
||||||
|
canvas.before:
|
||||||
|
Color:
|
||||||
|
rgba: 1, 1, 1, 1 # белый контур
|
||||||
|
Line:
|
||||||
|
width: 1.5
|
||||||
|
rectangle: (self.x, self.y, self.width, self.height)
|
||||||
|
|
||||||
|
Color:
|
||||||
|
rgba: (0, 0.5, 1, 0.5) if self.state == "down" else (0, 0, 0, 0)
|
||||||
|
Rectangle:
|
||||||
|
pos: self.pos
|
||||||
|
size: self.size
|
||||||
207
poetry.lock
generated
207
poetry.lock
generated
@@ -32,6 +32,33 @@ files = [
|
|||||||
{file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"},
|
{file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "asyncgui"
|
||||||
|
version = "0.6.3"
|
||||||
|
description = "A thin layer that helps to wrap a callback-style API in an async/await-style API"
|
||||||
|
optional = false
|
||||||
|
python-versions = "<4.0.0,>=3.8.1"
|
||||||
|
groups = ["main"]
|
||||||
|
files = [
|
||||||
|
{file = "asyncgui-0.6.3-py3-none-any.whl", hash = "sha256:46723e65d8bf023e28d141f6a9d38634ef5b97a5236fafdaf80b47e13275a5eb"},
|
||||||
|
{file = "asyncgui-0.6.3.tar.gz", hash = "sha256:05de49c2221128d3530f010df98491f3553183ec8909d205a0c0250bee5d6e0c"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "asynckivy"
|
||||||
|
version = "0.6.4"
|
||||||
|
description = "Async library for Kivy"
|
||||||
|
optional = false
|
||||||
|
python-versions = "<4.0,>=3.9"
|
||||||
|
groups = ["main"]
|
||||||
|
files = [
|
||||||
|
{file = "asynckivy-0.6.4-py3-none-any.whl", hash = "sha256:4e26bb6dbc9768d5ca593bae7b36927c06e43915c44b02ddcaa64dc223a2d5e2"},
|
||||||
|
{file = "asynckivy-0.6.4.tar.gz", hash = "sha256:58c34876a2422464f39df120b659c8b22e044852dd7ff94c5b9cb9dad84e902b"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
asyncgui = ">=0.6,<0.7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "certifi"
|
name = "certifi"
|
||||||
version = "2025.1.31"
|
version = "2025.1.31"
|
||||||
@@ -417,6 +444,31 @@ files = [
|
|||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
requests = "*"
|
requests = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "kivymd"
|
||||||
|
version = "2.0.1.dev0"
|
||||||
|
description = "Set of widgets for Kivy inspired by Google's Material Design"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.7"
|
||||||
|
groups = ["main"]
|
||||||
|
files = [
|
||||||
|
{file = "master.zip", hash = "sha256:f6dd87020e485c08afc63b5ed80daa2e042d3b77cc52c0fb9e5ff2b392e5948b"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
asynckivy = ">=0.6,<0.7"
|
||||||
|
kivy = ">=2.3.0"
|
||||||
|
materialyoucolor = ">=2.0.7"
|
||||||
|
pillow = "*"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
dev = ["black", "coveralls", "flake8", "isort[pyproject]", "pre-commit", "pyinstaller[hook-testing]", "pytest", "pytest-cov", "pytest-timeout", "pytest_asyncio"]
|
||||||
|
docs = ["sphinx (==7.3.7)", "sphinx-autoapi (==3.0.0)", "sphinx-book-theme", "sphinx-copybutton", "sphinx-notfound-page", "sphinx-tabs"]
|
||||||
|
|
||||||
|
[package.source]
|
||||||
|
type = "url"
|
||||||
|
url = "https://github.com/kivymd/KivyMD/archive/master.zip"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mako"
|
name = "mako"
|
||||||
version = "1.3.10"
|
version = "1.3.10"
|
||||||
@@ -508,6 +560,32 @@ files = [
|
|||||||
{file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"},
|
{file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "materialyoucolor"
|
||||||
|
version = "2.0.10"
|
||||||
|
description = "Material You color generation algorithms in pure python!"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
groups = ["main"]
|
||||||
|
files = [
|
||||||
|
{file = "materialyoucolor-2.0.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4de08ee488369cf0e055ae17ac43c62684f618781939feaf0ad11bc32572a4b6"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad22b0fb6980e0995d5b8437cad3411f628e1ea88c223c94a20b59d5dbcbacb2"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp310-cp310-win_amd64.whl", hash = "sha256:997787ec4224f3e2d9c90e99d82db746f5581670564a22a0f182ad377e704761"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e9a4dd1e444a64ea54982be06314ce4611f3c38fdfae2c33cca7d106f6383288"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:144fdd9dca272fee60a1779ce35acf24830cd3bc33ff20982ecba4936cb5bf91"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp311-cp311-win_amd64.whl", hash = "sha256:f126196a051673707297e86b8d0fbd90805a552dc3ac79e1d90442cc3fc877cb"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0fc0b43a684536270177b71bf509b247dab4ff816e49d1ac1b124fc1a32e082e"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7fe5bbc63124c3ea2f5560ea4a5250af72fce9ab55d29925e6bac7c7ec65329d"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp312-cp312-win_amd64.whl", hash = "sha256:aedc8596fd7583fd9e23f3e6d4f7b9defd7d5ef6e7889967814b9900c1e3d5b3"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:71de9c581c8227c3010c61108a00af9a007c96f99358fdb0628626d0ade817d9"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:978748eca7725d8b569cdecfd9f86a8e34bf946182f79a48b059c98a10f1a0de"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp313-cp313-win_amd64.whl", hash = "sha256:2ffc8963a2f10d8acb6776e60e97f0e7929d3392eb282cf2bc63b8e56cd930b3"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e4827307b1c78897f97f7989237ef688a5c21663a63d327d7cec8e47f107e509"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d8cebae884c6106584e1792b910d9588778353255a1a8156cb634e21f1b8670e"},
|
||||||
|
{file = "materialyoucolor-2.0.10-cp39-cp39-win_amd64.whl", hash = "sha256:4c5141fdd973ab386ebd0242072a7faab28d19cc083ee0d14f5b70c31ad75d60"},
|
||||||
|
{file = "materialyoucolor-2.0.10.tar.gz", hash = "sha256:31b4d407b9a4fd4b54b30559b0d0313f6d6da1f9d19b75546ed65da52671ea76"},
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "packaging"
|
name = "packaging"
|
||||||
version = "24.2"
|
version = "24.2"
|
||||||
@@ -520,6 +598,131 @@ files = [
|
|||||||
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
|
{file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pillow"
|
||||||
|
version = "11.3.0"
|
||||||
|
description = "Python Imaging Library (Fork)"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.9"
|
||||||
|
groups = ["main"]
|
||||||
|
files = [
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1b9c17fd4ace828b3003dfd1e30bff24863e0eb59b535e8f80194d9cc7ecf860"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:65dc69160114cdd0ca0f35cb434633c75e8e7fad4cf855177a05bf38678f73ad"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7107195ddc914f656c7fc8e4a5e1c25f32e9236ea3ea860f257b0436011fddd0"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc3e831b563b3114baac7ec2ee86819eb03caa1a2cef0b481a5675b59c4fe23b"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f1f182ebd2303acf8c380a54f615ec883322593320a9b00438eb842c1f37ae50"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4445fa62e15936a028672fd48c4c11a66d641d2c05726c7ec1f8ba6a572036ae"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:71f511f6b3b91dd543282477be45a033e4845a40278fa8dcdbfdb07109bf18f9"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:040a5b691b0713e1f6cbe222e0f4f74cd233421e105850ae3b3c0ceda520f42e"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-win32.whl", hash = "sha256:89bd777bc6624fe4115e9fac3352c79ed60f3bb18651420635f26e643e3dd1f6"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:19d2ff547c75b8e3ff46f4d9ef969a06c30ab2d4263a9e287733aa8b2429ce8f"},
|
||||||
|
{file = "pillow-11.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:819931d25e57b513242859ce1876c58c59dc31587847bf74cfe06b2e0cb22d2f"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1cd110edf822773368b396281a2293aeb91c90a2db00d78ea43e7e861631b722"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c412fddd1b77a75aa904615ebaa6001f169b26fd467b4be93aded278266b288"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1aa4de119a0ecac0a34a9c8bde33f34022e2e8f99104e47a3ca392fd60e37d"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:91da1d88226663594e3f6b4b8c3c8d85bd504117d043740a8e0ec449087cc494"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:643f189248837533073c405ec2f0bb250ba54598cf80e8c1e043381a60632f58"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:106064daa23a745510dabce1d84f29137a37224831d88eb4ce94bb187b1d7e5f"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cd8ff254faf15591e724dc7c4ddb6bf4793efcbe13802a4ae3e863cd300b493e"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:932c754c2d51ad2b2271fd01c3d121daaa35e27efae2a616f77bf164bc0b3e94"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-win32.whl", hash = "sha256:b4b8f3efc8d530a1544e5962bd6b403d5f7fe8b9e08227c6b255f98ad82b4ba0"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:1a992e86b0dd7aeb1f053cd506508c0999d710a8f07b4c791c63843fc6a807ac"},
|
||||||
|
{file = "pillow-11.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:30807c931ff7c095620fe04448e2c2fc673fcbb1ffe2a7da3fb39613489b1ddd"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d"},
|
||||||
|
{file = "pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31"},
|
||||||
|
{file = "pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db"},
|
||||||
|
{file = "pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:48d254f8a4c776de343051023eb61ffe818299eeac478da55227d96e241de53f"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7aee118e30a4cf54fdd873bd3a29de51e29105ab11f9aad8c32123f58c8f8081"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:23cff760a9049c502721bdb743a7cb3e03365fafcdfc2ef9784610714166e5a4"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6359a3bc43f57d5b375d1ad54a0074318a0844d11b76abccf478c37c986d3cfc"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:092c80c76635f5ecb10f3f83d76716165c96f5229addbd1ec2bdbbda7d496e06"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cadc9e0ea0a2431124cde7e1697106471fc4c1da01530e679b2391c37d3fbb3a"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6a418691000f2a418c9135a7cf0d797c1bb7d9a485e61fe8e7722845b95ef978"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:97afb3a00b65cc0804d1c7abddbf090a81eaac02768af58cbdcaaa0a931e0b6d"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-win32.whl", hash = "sha256:ea944117a7974ae78059fcc1800e5d3295172bb97035c0c1d9345fca1419da71"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:e5c5858ad8ec655450a7c7df532e9842cf8df7cc349df7225c60d5d348c8aada"},
|
||||||
|
{file = "pillow-11.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:6abdbfd3aea42be05702a8dd98832329c167ee84400a1d1f61ab11437f1717eb"},
|
||||||
|
{file = "pillow-11.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3cee80663f29e3843b68199b9d6f4f54bd1d4a6b59bdd91bceefc51238bcb967"},
|
||||||
|
{file = "pillow-11.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b5f56c3f344f2ccaf0dd875d3e180f631dc60a51b314295a3e681fe8cf851fbe"},
|
||||||
|
{file = "pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e67d793d180c9df62f1f40aee3accca4829d3794c95098887edc18af4b8b780c"},
|
||||||
|
{file = "pillow-11.3.0-pp310-pypy310_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d000f46e2917c705e9fb93a3606ee4a819d1e3aa7a9b442f6444f07e77cf5e25"},
|
||||||
|
{file = "pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:527b37216b6ac3a12d7838dc3bd75208ec57c1c6d11ef01902266a5a0c14fc27"},
|
||||||
|
{file = "pillow-11.3.0-pp310-pypy310_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be5463ac478b623b9dd3937afd7fb7ab3d79dd290a28e2b6df292dc75063eb8a"},
|
||||||
|
{file = "pillow-11.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8dc70ca24c110503e16918a658b869019126ecfe03109b754c402daff12b3d9f"},
|
||||||
|
{file = "pillow-11.3.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7c8ec7a017ad1bd562f93dbd8505763e688d388cde6e4a010ae1486916e713e6"},
|
||||||
|
{file = "pillow-11.3.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:9ab6ae226de48019caa8074894544af5b53a117ccb9d3b3dcb2871464c829438"},
|
||||||
|
{file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:fe27fb049cdcca11f11a7bfda64043c37b30e6b91f10cb5bab275806c32f6ab3"},
|
||||||
|
{file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:465b9e8844e3c3519a983d58b80be3f668e2a7a5db97f2784e7079fbc9f9822c"},
|
||||||
|
{file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5418b53c0d59b3824d05e029669efa023bbef0f3e92e75ec8428f3799487f361"},
|
||||||
|
{file = "pillow-11.3.0-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:504b6f59505f08ae014f724b6207ff6222662aab5cc9542577fb084ed0676ac7"},
|
||||||
|
{file = "pillow-11.3.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:c84d689db21a1c397d001aa08241044aa2069e7587b398c8cc63020390b1c1b8"},
|
||||||
|
{file = "pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
docs = ["furo", "olefile", "sphinx (>=8.2)", "sphinx-autobuild", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"]
|
||||||
|
fpx = ["olefile"]
|
||||||
|
mic = ["olefile"]
|
||||||
|
test-arrow = ["pyarrow"]
|
||||||
|
tests = ["check-manifest", "coverage (>=7.4.2)", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "trove-classifiers (>=2024.10.12)"]
|
||||||
|
typing = ["typing-extensions ; python_version < \"3.10\""]
|
||||||
|
xmp = ["defusedxml"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pluggy"
|
name = "pluggy"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
@@ -983,5 +1186,5 @@ zstd = ["zstandard (>=0.18.0)"]
|
|||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.1"
|
lock-version = "2.1"
|
||||||
python-versions = ">=3.12"
|
python-versions = ">=3.12,<4.0"
|
||||||
content-hash = "06e55988ae7afe4e5b856a08d6c3b5808c22fcbbd676e818dec76feff71a82e3"
|
content-hash = "f4698f78aee2e38be26b1230676a01987f41074ce6f181bfbfc6e466f19ef491"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ authors = [
|
|||||||
]
|
]
|
||||||
license = {text = "MIT"}
|
license = {text = "MIT"}
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12,<4.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"kivy (>=2.3.1,<3.0.0)",
|
"kivy (>=2.3.1,<3.0.0)",
|
||||||
"pytest (>=8.3.5,<9.0.0)",
|
"pytest (>=8.3.5,<9.0.0)",
|
||||||
@@ -16,6 +16,7 @@ dependencies = [
|
|||||||
"pydantic-settings (>=2.9.1,<3.0.0)",
|
"pydantic-settings (>=2.9.1,<3.0.0)",
|
||||||
"alembic (>=1.15.2,<2.0.0)",
|
"alembic (>=1.15.2,<2.0.0)",
|
||||||
"ruff (>=0.11.8,<0.12.0)",
|
"ruff (>=0.11.8,<0.12.0)",
|
||||||
|
"kivymd @ https://github.com/kivymd/KivyMD/archive/master.zip",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user