dearpygui-forms 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dearpygui_forms-0.1.0/.gitignore +14 -0
- dearpygui_forms-0.1.0/.python-version +1 -0
- dearpygui_forms-0.1.0/PKG-INFO +9 -0
- dearpygui_forms-0.1.0/README.md +0 -0
- dearpygui_forms-0.1.0/pyproject.toml +27 -0
- dearpygui_forms-0.1.0/src/dearpygui_forms/__init__.py +127 -0
- dearpygui_forms-0.1.0/tests/demo.py +71 -0
- dearpygui_forms-0.1.0/uv.lock +215 -0
@@ -0,0 +1 @@
|
|
1
|
+
3.13
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: dearpygui-forms
|
3
|
+
Version: 0.1.0
|
4
|
+
Summary: Add your description here
|
5
|
+
Author-email: Aeek True <aeektrue@gmail.com>
|
6
|
+
Requires-Python: >=3.13
|
7
|
+
Requires-Dist: dearpygui>=2.0.0
|
8
|
+
Requires-Dist: loguru>=0.7.3
|
9
|
+
Requires-Dist: pydantic>=2.11.7
|
File without changes
|
@@ -0,0 +1,27 @@
|
|
1
|
+
[project]
|
2
|
+
name = "dearpygui-forms"
|
3
|
+
version = "0.1.0"
|
4
|
+
description = "Add your description here"
|
5
|
+
readme = "README.md"
|
6
|
+
authors = [
|
7
|
+
{ name = "Aeek True", email = "aeektrue@gmail.com" }
|
8
|
+
]
|
9
|
+
requires-python = ">=3.13"
|
10
|
+
dependencies = [
|
11
|
+
"dearpygui>=2.0.0",
|
12
|
+
"loguru>=0.7.3",
|
13
|
+
"pydantic>=2.11.7",
|
14
|
+
]
|
15
|
+
|
16
|
+
[project.scripts]
|
17
|
+
dearpygui-forms = "dearpygui_forms:main"
|
18
|
+
|
19
|
+
|
20
|
+
[build-system]
|
21
|
+
requires = ["hatchling"]
|
22
|
+
build-backend = "hatchling.build"
|
23
|
+
|
24
|
+
[dependency-groups]
|
25
|
+
dev = [
|
26
|
+
"pylint>=3.3.7",
|
27
|
+
]
|
@@ -0,0 +1,127 @@
|
|
1
|
+
"""
|
2
|
+
Dearpygui extention for autogeneration forms powered by pydantic.
|
3
|
+
"""
|
4
|
+
import decimal
|
5
|
+
from typing import Any, Type
|
6
|
+
from pprint import pformat
|
7
|
+
|
8
|
+
|
9
|
+
import dearpygui.dearpygui as dpg
|
10
|
+
from loguru import logger
|
11
|
+
import pydantic
|
12
|
+
|
13
|
+
def main() -> None:
|
14
|
+
print("Hello from dearpygui-forms!")
|
15
|
+
|
16
|
+
|
17
|
+
def parse_property_type(property_schema: dict[str, Any]) -> str:
|
18
|
+
property_type = property_schema.get("type", None)
|
19
|
+
if property_type is None:
|
20
|
+
any_of = property_schema.get("anyOf", None)
|
21
|
+
if any_of is None:
|
22
|
+
raise ValueError(f"Property type not detected. {property_schema}")
|
23
|
+
|
24
|
+
# Text input field preferred for Decimal type than float input field
|
25
|
+
if 'string' in map(lambda x: x.get("type"), any_of):
|
26
|
+
property_type = 'string'
|
27
|
+
else:
|
28
|
+
property_type = any_of[0].get("type", None)
|
29
|
+
|
30
|
+
if property_type is None:
|
31
|
+
raise ValueError(f"Property type not detected. {property_schema}")
|
32
|
+
return property_type
|
33
|
+
|
34
|
+
class DPGForm:
|
35
|
+
"""
|
36
|
+
Base class for dearpygui forms.
|
37
|
+
Sublasses must define `__pydantic_model__` with some Pydantic model type.
|
38
|
+
|
39
|
+
# Example:
|
40
|
+
```python
|
41
|
+
import dearpygui.dearpygui as dpg
|
42
|
+
from pydantic import BaseModel
|
43
|
+
from dearpygui_forms import DPGForm
|
44
|
+
|
45
|
+
class User(BaseModel):
|
46
|
+
name: str
|
47
|
+
age: int
|
48
|
+
|
49
|
+
class UserForm(DPGForm):
|
50
|
+
__pydantic_model__ = User
|
51
|
+
|
52
|
+
dpg.create_context()
|
53
|
+
dpg.create_viewport()
|
54
|
+
with dpg.window(label="User Form"):
|
55
|
+
user_form = UserForm(callback=lambda x: print(x))
|
56
|
+
user_form.add()
|
57
|
+
dpg.setup_dearpygui()
|
58
|
+
dpg.show_viewport()
|
59
|
+
dpg.start_dearpygui()
|
60
|
+
dpg.destroy_context()
|
61
|
+
```
|
62
|
+
"""
|
63
|
+
__pydantic_model__: Type[pydantic.BaseModel]
|
64
|
+
|
65
|
+
def __init__(self, callback):
|
66
|
+
"""
|
67
|
+
Initializes the UserForm instance.
|
68
|
+
|
69
|
+
Args:
|
70
|
+
callback (Callable): The callback function to be called with a validated pydantic model.
|
71
|
+
"""
|
72
|
+
self.callback = callback
|
73
|
+
logger.debug(self.__pydantic_model__)
|
74
|
+
self.model_schema = self.__pydantic_model__.model_json_schema()
|
75
|
+
logger.debug(pformat(self.model_schema))
|
76
|
+
|
77
|
+
def add(self):
|
78
|
+
"""Adds form as child_window dearpygui element."""
|
79
|
+
schema = self.model_schema
|
80
|
+
with dpg.child_window(label=schema["title"]):
|
81
|
+
for property_name, property_schema in schema["properties"].items():
|
82
|
+
property_type = parse_property_type(property_schema)
|
83
|
+
default_value = property_schema.get("default")
|
84
|
+
if property_type == "string":
|
85
|
+
schema["properties"][property_name]["dpg_form_id"] = \
|
86
|
+
dpg.add_input_text(label=property_schema["title"], default_value=default_value or '')
|
87
|
+
elif property_type == "integer":
|
88
|
+
schema["properties"][property_name]["dpg_form_id"] = \
|
89
|
+
dpg.add_input_int(label=property_schema["title"], default_value=default_value)
|
90
|
+
elif property_type == "number":
|
91
|
+
schema["properties"][property_name]["dpg_form_id"] = \
|
92
|
+
dpg.add_input_float(label=property_schema["title"], default_value=float(default_value))
|
93
|
+
elif property_type == "boolean":
|
94
|
+
schema["properties"][property_name]["dpg_form_id"] = \
|
95
|
+
dpg.add_checkbox(label=property_schema["title"], default_value=default_value)
|
96
|
+
elif property_type == "array":
|
97
|
+
schema["properties"][property_name]["dpg_form_id"] = \
|
98
|
+
dpg.add_input_text(label=property_schema["title"])
|
99
|
+
elif property_type == "object":
|
100
|
+
schema["properties"][property_name]["dpg_form_id"] = \
|
101
|
+
dpg.add_input_text(label=property_schema["title"])
|
102
|
+
else:
|
103
|
+
raise ValueError(f"Unsupported type: {property_type}")
|
104
|
+
|
105
|
+
dpg.add_button(label="Submit", callback=self.submit)
|
106
|
+
|
107
|
+
logger.debug(pformat(self.model_schema))
|
108
|
+
|
109
|
+
def submit(self):
|
110
|
+
try:
|
111
|
+
data = self._handle_data()
|
112
|
+
except pydantic.ValidationError as e:
|
113
|
+
with dpg.window(label="Validation error", modal=True):
|
114
|
+
dpg.add_text(str(e))
|
115
|
+
else:
|
116
|
+
self.callback(data)
|
117
|
+
|
118
|
+
def _handle_data(self):
|
119
|
+
json_data = {}
|
120
|
+
for property_name, property_schema in self.model_schema["properties"].items():
|
121
|
+
form_id = property_schema["dpg_form_id"]
|
122
|
+
if form_id is not None:
|
123
|
+
json_data[property_name] = dpg.get_value(form_id)
|
124
|
+
else:
|
125
|
+
raise ValueError(f"Missing form ID for property: {property_name}")
|
126
|
+
|
127
|
+
return self.__pydantic_model__(**json_data)
|
@@ -0,0 +1,71 @@
|
|
1
|
+
import datetime
|
2
|
+
import decimal
|
3
|
+
import dearpygui.dearpygui as dpg
|
4
|
+
|
5
|
+
import dearpygui.dearpygui as dpg
|
6
|
+
from pydantic import BaseModel, Field
|
7
|
+
|
8
|
+
from dearpygui import demo
|
9
|
+
import pydantic
|
10
|
+
from dearpygui_forms import DPGForm
|
11
|
+
|
12
|
+
|
13
|
+
class User(BaseModel):
|
14
|
+
name: str = Field(title="User name", min_length=1)
|
15
|
+
birthday: datetime.date = datetime.date(2000, 1, 1)
|
16
|
+
wakeup: datetime.time = datetime.time(8, 0)
|
17
|
+
next_departure: datetime.datetime = datetime.datetime.now()
|
18
|
+
fingers_on_the_hand: int = 5
|
19
|
+
weight: float = 60.0
|
20
|
+
pi: decimal.Decimal = decimal.Decimal('3.1415')
|
21
|
+
male: bool = True
|
22
|
+
# friends: list['User']
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
class UserForm(DPGForm):
|
27
|
+
__pydantic_model__ = User
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
def main():
|
32
|
+
with dpg.font_registry():
|
33
|
+
default_font = dpg.add_font('data/fonts/Roboto-Regular.ttf', 22) # install manualy
|
34
|
+
dpg.bind_font(default_font)
|
35
|
+
|
36
|
+
with dpg.handler_registry():
|
37
|
+
dpg.add_key_press_handler(dpg.mvKey_Escape, callback=dpg.stop_dearpygui)
|
38
|
+
|
39
|
+
with dpg.viewport_menu_bar():
|
40
|
+
with dpg.menu(label='Window'):
|
41
|
+
dpg.add_menu_item(label='Fullscreen', callback=dpg.toggle_viewport_fullscreen, check=True)
|
42
|
+
dpg.add_menu_item(label='Quit', shortcut='Esc', callback=dpg.stop_dearpygui)
|
43
|
+
with dpg.menu(label='Debug'):
|
44
|
+
dpg.add_menu_item(label='Debug', callback=dpg.show_debug)
|
45
|
+
dpg.add_menu_item(label='Item registry', callback=dpg.show_item_registry)
|
46
|
+
dpg.add_menu_item(label='Metrics', callback=dpg.show_metrics)
|
47
|
+
dpg.add_menu_item(label='Font manager', callback=dpg.show_font_manager)
|
48
|
+
dpg.add_separator(label='Other')
|
49
|
+
dpg.add_menu_item(label='DearPyGUI demo', callback=demo.show_demo)
|
50
|
+
dpg.add_menu_item(label='Imgui demo', callback=dpg.show_imgui_demo)
|
51
|
+
dpg.add_menu_item(label='Implot demo', callback=dpg.show_implot_demo)
|
52
|
+
dpg.add_menu_item(label='About', callback=dpg.show_about)
|
53
|
+
|
54
|
+
with dpg.window(label="Template", width=641, height=480):
|
55
|
+
dpg.add_text("Hello")
|
56
|
+
|
57
|
+
with dpg.window(label="Main"):
|
58
|
+
dpg.add_text("Hello")
|
59
|
+
UserForm(print).add()
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
if __name__ == '__main__':
|
64
|
+
dpg.create_context()
|
65
|
+
dpg.create_viewport()
|
66
|
+
dpg.configure_app(docking=True, docking_space=True, load_init_file='dpg.ini', auto_save_init_file=True)
|
67
|
+
main()
|
68
|
+
dpg.setup_dearpygui()
|
69
|
+
dpg.show_viewport()
|
70
|
+
dpg.start_dearpygui()
|
71
|
+
dpg.destroy_context()
|
@@ -0,0 +1,215 @@
|
|
1
|
+
version = 1
|
2
|
+
revision = 2
|
3
|
+
requires-python = ">=3.13"
|
4
|
+
|
5
|
+
[[package]]
|
6
|
+
name = "annotated-types"
|
7
|
+
version = "0.7.0"
|
8
|
+
source = { registry = "https://pypi.org/simple" }
|
9
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" }
|
10
|
+
wheels = [
|
11
|
+
{ url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" },
|
12
|
+
]
|
13
|
+
|
14
|
+
[[package]]
|
15
|
+
name = "astroid"
|
16
|
+
version = "3.3.10"
|
17
|
+
source = { registry = "https://pypi.org/simple" }
|
18
|
+
sdist = { url = "https://files.pythonhosted.org/packages/00/c2/9b2de9ed027f9fe5734a6c0c0a601289d796b3caaf1e372e23fa88a73047/astroid-3.3.10.tar.gz", hash = "sha256:c332157953060c6deb9caa57303ae0d20b0fbdb2e59b4a4f2a6ba49d0a7961ce", size = 398941, upload-time = "2025-05-10T13:33:10.405Z" }
|
19
|
+
wheels = [
|
20
|
+
{ url = "https://files.pythonhosted.org/packages/15/58/5260205b9968c20b6457ed82f48f9e3d6edf2f1f95103161798b73aeccf0/astroid-3.3.10-py3-none-any.whl", hash = "sha256:104fb9cb9b27ea95e847a94c003be03a9e039334a8ebca5ee27dafaf5c5711eb", size = 275388, upload-time = "2025-05-10T13:33:08.391Z" },
|
21
|
+
]
|
22
|
+
|
23
|
+
[[package]]
|
24
|
+
name = "colorama"
|
25
|
+
version = "0.4.6"
|
26
|
+
source = { registry = "https://pypi.org/simple" }
|
27
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
28
|
+
wheels = [
|
29
|
+
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
30
|
+
]
|
31
|
+
|
32
|
+
[[package]]
|
33
|
+
name = "dearpygui"
|
34
|
+
version = "2.0.0"
|
35
|
+
source = { registry = "https://pypi.org/simple" }
|
36
|
+
wheels = [
|
37
|
+
{ url = "https://files.pythonhosted.org/packages/79/58/4e1744d2af72a3aa432fd82aeb97dcbc43351b17f837d879b4c4926bd16c/dearpygui-2.0.0-cp313-cp313-macosx_10_6_x86_64.whl", hash = "sha256:3bf0aa19baedb4f130b8de636d4644740ffd9b7008481794c574bf59240808dc", size = 2223494, upload-time = "2024-10-16T02:02:56.05Z" },
|
38
|
+
{ url = "https://files.pythonhosted.org/packages/70/e0/09885f99df476d03e573183a755dc515cd88565cdbf036c385f0dda41dbb/dearpygui-2.0.0-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:ae6fc9aa3390b29387c2bc2bf3ac7a92c10eae2b479818171864fc29a7de344e", size = 1873562, upload-time = "2024-10-16T02:03:06.06Z" },
|
39
|
+
{ url = "https://files.pythonhosted.org/packages/d6/2b/0714feed9e072377d575cb8801ac13a909f7880ca51c9dd6f2d768bcd1ba/dearpygui-2.0.0-cp313-cp313-manylinux1_x86_64.whl", hash = "sha256:f02b0ab56700a775d7e6446e3c424d5bed3386efe721a04518d02461851daadf", size = 2636153, upload-time = "2024-10-16T02:03:13.417Z" },
|
40
|
+
{ url = "https://files.pythonhosted.org/packages/55/9e/a957ffc21d12a1fb66d611f82871944565112b44afa0856bb15c6ece77d5/dearpygui-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:e3d52057f49773b10808962806711c3b3119e829d36407afb84ad50522edc9b0", size = 1814308, upload-time = "2024-10-16T02:02:44.955Z" },
|
41
|
+
]
|
42
|
+
|
43
|
+
[[package]]
|
44
|
+
name = "dearpygui-forms"
|
45
|
+
version = "0.1.0"
|
46
|
+
source = { editable = "." }
|
47
|
+
dependencies = [
|
48
|
+
{ name = "dearpygui" },
|
49
|
+
{ name = "loguru" },
|
50
|
+
{ name = "pydantic" },
|
51
|
+
]
|
52
|
+
|
53
|
+
[package.dev-dependencies]
|
54
|
+
dev = [
|
55
|
+
{ name = "pylint" },
|
56
|
+
]
|
57
|
+
|
58
|
+
[package.metadata]
|
59
|
+
requires-dist = [
|
60
|
+
{ name = "dearpygui", specifier = ">=2.0.0" },
|
61
|
+
{ name = "loguru", specifier = ">=0.7.3" },
|
62
|
+
{ name = "pydantic", specifier = ">=2.11.7" },
|
63
|
+
]
|
64
|
+
|
65
|
+
[package.metadata.requires-dev]
|
66
|
+
dev = [{ name = "pylint", specifier = ">=3.3.7" }]
|
67
|
+
|
68
|
+
[[package]]
|
69
|
+
name = "dill"
|
70
|
+
version = "0.4.0"
|
71
|
+
source = { registry = "https://pypi.org/simple" }
|
72
|
+
sdist = { url = "https://files.pythonhosted.org/packages/12/80/630b4b88364e9a8c8c5797f4602d0f76ef820909ee32f0bacb9f90654042/dill-0.4.0.tar.gz", hash = "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0", size = 186976, upload-time = "2025-04-16T00:41:48.867Z" }
|
73
|
+
wheels = [
|
74
|
+
{ url = "https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049", size = 119668, upload-time = "2025-04-16T00:41:47.671Z" },
|
75
|
+
]
|
76
|
+
|
77
|
+
[[package]]
|
78
|
+
name = "isort"
|
79
|
+
version = "6.0.1"
|
80
|
+
source = { registry = "https://pypi.org/simple" }
|
81
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b8/21/1e2a441f74a653a144224d7d21afe8f4169e6c7c20bb13aec3a2dc3815e0/isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450", size = 821955, upload-time = "2025-02-26T21:13:16.955Z" }
|
82
|
+
wheels = [
|
83
|
+
{ url = "https://files.pythonhosted.org/packages/c1/11/114d0a5f4dabbdcedc1125dee0888514c3c3b16d3e9facad87ed96fad97c/isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615", size = 94186, upload-time = "2025-02-26T21:13:14.911Z" },
|
84
|
+
]
|
85
|
+
|
86
|
+
[[package]]
|
87
|
+
name = "loguru"
|
88
|
+
version = "0.7.3"
|
89
|
+
source = { registry = "https://pypi.org/simple" }
|
90
|
+
dependencies = [
|
91
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
92
|
+
{ name = "win32-setctime", marker = "sys_platform == 'win32'" },
|
93
|
+
]
|
94
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload-time = "2024-12-06T11:20:56.608Z" }
|
95
|
+
wheels = [
|
96
|
+
{ url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload-time = "2024-12-06T11:20:54.538Z" },
|
97
|
+
]
|
98
|
+
|
99
|
+
[[package]]
|
100
|
+
name = "mccabe"
|
101
|
+
version = "0.7.0"
|
102
|
+
source = { registry = "https://pypi.org/simple" }
|
103
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" }
|
104
|
+
wheels = [
|
105
|
+
{ url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" },
|
106
|
+
]
|
107
|
+
|
108
|
+
[[package]]
|
109
|
+
name = "platformdirs"
|
110
|
+
version = "4.3.8"
|
111
|
+
source = { registry = "https://pypi.org/simple" }
|
112
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" }
|
113
|
+
wheels = [
|
114
|
+
{ url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" },
|
115
|
+
]
|
116
|
+
|
117
|
+
[[package]]
|
118
|
+
name = "pydantic"
|
119
|
+
version = "2.11.7"
|
120
|
+
source = { registry = "https://pypi.org/simple" }
|
121
|
+
dependencies = [
|
122
|
+
{ name = "annotated-types" },
|
123
|
+
{ name = "pydantic-core" },
|
124
|
+
{ name = "typing-extensions" },
|
125
|
+
{ name = "typing-inspection" },
|
126
|
+
]
|
127
|
+
sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" }
|
128
|
+
wheels = [
|
129
|
+
{ url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" },
|
130
|
+
]
|
131
|
+
|
132
|
+
[[package]]
|
133
|
+
name = "pydantic-core"
|
134
|
+
version = "2.33.2"
|
135
|
+
source = { registry = "https://pypi.org/simple" }
|
136
|
+
dependencies = [
|
137
|
+
{ name = "typing-extensions" },
|
138
|
+
]
|
139
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" }
|
140
|
+
wheels = [
|
141
|
+
{ url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" },
|
142
|
+
{ url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" },
|
143
|
+
{ url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" },
|
144
|
+
{ url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" },
|
145
|
+
{ url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" },
|
146
|
+
{ url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" },
|
147
|
+
{ url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" },
|
148
|
+
{ url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" },
|
149
|
+
{ url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" },
|
150
|
+
{ url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" },
|
151
|
+
{ url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" },
|
152
|
+
{ url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" },
|
153
|
+
{ url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" },
|
154
|
+
{ url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" },
|
155
|
+
{ url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" },
|
156
|
+
{ url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" },
|
157
|
+
{ url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" },
|
158
|
+
]
|
159
|
+
|
160
|
+
[[package]]
|
161
|
+
name = "pylint"
|
162
|
+
version = "3.3.7"
|
163
|
+
source = { registry = "https://pypi.org/simple" }
|
164
|
+
dependencies = [
|
165
|
+
{ name = "astroid" },
|
166
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
167
|
+
{ name = "dill" },
|
168
|
+
{ name = "isort" },
|
169
|
+
{ name = "mccabe" },
|
170
|
+
{ name = "platformdirs" },
|
171
|
+
{ name = "tomlkit" },
|
172
|
+
]
|
173
|
+
sdist = { url = "https://files.pythonhosted.org/packages/1c/e4/83e487d3ddd64ab27749b66137b26dc0c5b5c161be680e6beffdc99070b3/pylint-3.3.7.tar.gz", hash = "sha256:2b11de8bde49f9c5059452e0c310c079c746a0a8eeaa789e5aa966ecc23e4559", size = 1520709, upload-time = "2025-05-04T17:07:51.089Z" }
|
174
|
+
wheels = [
|
175
|
+
{ url = "https://files.pythonhosted.org/packages/e8/83/bff755d09e31b5d25cc7fdc4bf3915d1a404e181f1abf0359af376845c24/pylint-3.3.7-py3-none-any.whl", hash = "sha256:43860aafefce92fca4cf6b61fe199cdc5ae54ea28f9bf4cd49de267b5195803d", size = 522565, upload-time = "2025-05-04T17:07:48.714Z" },
|
176
|
+
]
|
177
|
+
|
178
|
+
[[package]]
|
179
|
+
name = "tomlkit"
|
180
|
+
version = "0.13.3"
|
181
|
+
source = { registry = "https://pypi.org/simple" }
|
182
|
+
sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" }
|
183
|
+
wheels = [
|
184
|
+
{ url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" },
|
185
|
+
]
|
186
|
+
|
187
|
+
[[package]]
|
188
|
+
name = "typing-extensions"
|
189
|
+
version = "4.14.1"
|
190
|
+
source = { registry = "https://pypi.org/simple" }
|
191
|
+
sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" }
|
192
|
+
wheels = [
|
193
|
+
{ url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" },
|
194
|
+
]
|
195
|
+
|
196
|
+
[[package]]
|
197
|
+
name = "typing-inspection"
|
198
|
+
version = "0.4.1"
|
199
|
+
source = { registry = "https://pypi.org/simple" }
|
200
|
+
dependencies = [
|
201
|
+
{ name = "typing-extensions" },
|
202
|
+
]
|
203
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" }
|
204
|
+
wheels = [
|
205
|
+
{ url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" },
|
206
|
+
]
|
207
|
+
|
208
|
+
[[package]]
|
209
|
+
name = "win32-setctime"
|
210
|
+
version = "1.2.0"
|
211
|
+
source = { registry = "https://pypi.org/simple" }
|
212
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload-time = "2024-12-07T15:28:28.314Z" }
|
213
|
+
wheels = [
|
214
|
+
{ url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload-time = "2024-12-07T15:28:26.465Z" },
|
215
|
+
]
|