psiutils 0.2.34__tar.gz → 0.2.35__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.
- {psiutils-0.2.34 → psiutils-0.2.35}/PKG-INFO +2 -1
- {psiutils-0.2.34 → psiutils-0.2.35}/pyproject.toml +15 -1
- psiutils-0.2.35/src/psiutils/_version.py +1 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/buttons.py +121 -59
- psiutils-0.2.35/src/psiutils/icons/paste.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/text.py +1 -0
- psiutils-0.2.34/src/psiutils/_version.py +0 -1
- {psiutils-0.2.34 → psiutils-0.2.35}/README.md +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/__init__.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/_about_frame.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/_logger.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/_notify.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/_scrolling_canvas.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/constants.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/date_picker.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/drag_manager.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/errors.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icecream_init.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/backup.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/build.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/cancel.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/check.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/checkbox_checked.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/checkbox_unchecked.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/clear.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/code.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/compare.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/convert.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/copy_clipboard.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/copy_docs.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/delete.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/diff.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/done.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/download.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/edit.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/gear.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/help.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/new.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/next.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/open.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/pause.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/preferences.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/previous.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/process.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/redo.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/refresh.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/rename.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/report.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/reset.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/restore.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/restore_database.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/restore_page.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/revert.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/run.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/save.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/script.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/search.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/send.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/start.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/update.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/upgrade.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/upload.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/icons/windows.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/images/icon-error.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/images/icon-info.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/images/icon-query.png +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/known_paths.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/menus.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/messagebox.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/treeview.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/utilities.py +0 -0
- {psiutils-0.2.34 → psiutils-0.2.35}/src/psiutils/widgets.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: psiutils
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.35
|
|
4
4
|
Summary: Various TKinter utilities.
|
|
5
5
|
Author: Jeff
|
|
6
6
|
Author-email: Jeff <<jeffwatkins2000@gmail.com>>
|
|
@@ -15,6 +15,7 @@ Requires-Dist: psiconfig>=0.0.14
|
|
|
15
15
|
Requires-Dist: pycairo>=1.28.0
|
|
16
16
|
Requires-Dist: pygments>=2.19.2
|
|
17
17
|
Requires-Dist: pytest>=9.0.2
|
|
18
|
+
Requires-Dist: ruff>=0.15.15
|
|
18
19
|
Requires-Dist: structlog>=25.4.0
|
|
19
20
|
Requires-Dist: tkcalendar>=1.6.1
|
|
20
21
|
Requires-Dist: tkinterweb>=4.4.4
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "psiutils"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.35"
|
|
4
4
|
description = "Various TKinter utilities."
|
|
5
5
|
authors = [{name = "Jeff", "email" = "<jeffwatkins2000@gmail.com>"}]
|
|
6
6
|
requires-python = '>= 3.10, < 3.13'
|
|
@@ -20,6 +20,7 @@ dependencies = [
|
|
|
20
20
|
"pycairo>=1.28.0",
|
|
21
21
|
"pygments>=2.19.2",
|
|
22
22
|
"pytest>=9.0.2",
|
|
23
|
+
"ruff>=0.15.15",
|
|
23
24
|
"structlog>=25.4.0",
|
|
24
25
|
"tkcalendar>=1.6.1",
|
|
25
26
|
"tkinterweb>=4.4.4",
|
|
@@ -40,3 +41,16 @@ dev = ['pytest']
|
|
|
40
41
|
[build-system]
|
|
41
42
|
requires = ['uv-build']
|
|
42
43
|
build-backend = 'uv_build'
|
|
44
|
+
|
|
45
|
+
# pyproject.toml
|
|
46
|
+
[tool.ruff]
|
|
47
|
+
line-length = 79
|
|
48
|
+
target-version = "py311"
|
|
49
|
+
|
|
50
|
+
[tool.ruff.lint]
|
|
51
|
+
select = ["E", "F", "I", "N", "W", "B", "UP"]
|
|
52
|
+
|
|
53
|
+
[tool.mypy]
|
|
54
|
+
python_version = "3.11"
|
|
55
|
+
warn_return_any = true
|
|
56
|
+
disallow_untyped_defs = true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.2.35'
|
|
@@ -1,44 +1,60 @@
|
|
|
1
1
|
"""Button class for Tkinter applications."""
|
|
2
2
|
|
|
3
3
|
import tkinter as tk
|
|
4
|
-
from
|
|
4
|
+
from dataclasses import dataclass
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
from
|
|
6
|
+
from tkinter import ttk
|
|
7
7
|
|
|
8
|
-
from
|
|
8
|
+
from PIL import Image, ImageTk
|
|
9
9
|
|
|
10
10
|
from psiutils.constants import PAD, Pad
|
|
11
|
-
from psiutils.
|
|
11
|
+
from psiutils.text import Text
|
|
12
|
+
from psiutils.widgets import HAND, clickable_widget, enter_widget
|
|
12
13
|
|
|
13
14
|
txt = Text()
|
|
14
15
|
|
|
16
|
+
COLOURS = {
|
|
17
|
+
"red": (255, 0, 0),
|
|
18
|
+
"blue": (0, 0, 255),
|
|
19
|
+
"green": (0, 160, 20),
|
|
20
|
+
"orange": (212, 100, 50),
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass(slots=True)
|
|
25
|
+
class IconButtonConfig:
|
|
26
|
+
text: str
|
|
27
|
+
icon: str
|
|
28
|
+
colour: str | None = None
|
|
29
|
+
|
|
15
30
|
|
|
16
31
|
class IconButton(ttk.Frame):
|
|
17
32
|
def __init__(
|
|
18
33
|
self,
|
|
19
34
|
master,
|
|
20
|
-
|
|
35
|
+
text,
|
|
21
36
|
icon,
|
|
22
37
|
command=None,
|
|
23
38
|
dimmable: bool = False,
|
|
24
39
|
sticky: str = "",
|
|
25
40
|
icon_path: str = "",
|
|
41
|
+
colour: str | tuple(int) = "",
|
|
26
42
|
**kwargs,
|
|
27
43
|
):
|
|
28
44
|
super().__init__(master, borderwidth=1, relief="raised", **kwargs)
|
|
29
45
|
self.command = command
|
|
30
46
|
self._state = tk.NORMAL
|
|
31
|
-
self.text =
|
|
47
|
+
self.text = text
|
|
32
48
|
self.icon = icon
|
|
49
|
+
self.colour = colour
|
|
33
50
|
|
|
34
51
|
# Icon and text
|
|
35
52
|
if not icon_path:
|
|
36
53
|
icon_path = f"{Path(__file__).parent}/icons/"
|
|
37
|
-
|
|
38
|
-
photo_image = ImageTk.PhotoImage(image)
|
|
54
|
+
photo_image = self._get_photo_image(icon_path, icon)
|
|
39
55
|
|
|
40
56
|
self.button_label = ttk.Label(
|
|
41
|
-
self, text=
|
|
57
|
+
self, text=text, image=photo_image, compound=tk.LEFT
|
|
42
58
|
)
|
|
43
59
|
self.button_label.image = photo_image # Prevent garbage collection
|
|
44
60
|
self.button_label.pack(padx=(3, 5), pady=5)
|
|
@@ -50,6 +66,38 @@ class IconButton(ttk.Frame):
|
|
|
50
66
|
self.sticky = sticky
|
|
51
67
|
self.dimmable = dimmable
|
|
52
68
|
|
|
69
|
+
def _get_photo_image(
|
|
70
|
+
self,
|
|
71
|
+
path: Path,
|
|
72
|
+
icon: str,
|
|
73
|
+
) -> ImageTk.PhotoImage:
|
|
74
|
+
image = (
|
|
75
|
+
Image.open(f"{path}{icon}.png").resize((16, 16)).convert("RGBA")
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
image = self._colour_image(image)
|
|
79
|
+
|
|
80
|
+
photo_image = ImageTk.PhotoImage(image)
|
|
81
|
+
return photo_image
|
|
82
|
+
|
|
83
|
+
def _colour_image(self, image: Image) -> Image:
|
|
84
|
+
if not self.colour:
|
|
85
|
+
return image
|
|
86
|
+
|
|
87
|
+
if isinstance(self.colour, str):
|
|
88
|
+
r, g, b = COLOURS[self.colour]
|
|
89
|
+
|
|
90
|
+
if isinstance(self.colour, tuple):
|
|
91
|
+
r, g, b = self.colour
|
|
92
|
+
|
|
93
|
+
pixels = image.load()
|
|
94
|
+
|
|
95
|
+
for y in range(image.size[1]):
|
|
96
|
+
for x in range(image.size[0]):
|
|
97
|
+
_, _, _, a = pixels[x, y]
|
|
98
|
+
pixels[x, y] = (r, g, b, a)
|
|
99
|
+
return image
|
|
100
|
+
|
|
53
101
|
def __repr__(self) -> str:
|
|
54
102
|
return f"IconButton: {self.text} {self.icon}"
|
|
55
103
|
|
|
@@ -109,7 +157,10 @@ class Button(ttk.Button):
|
|
|
109
157
|
|
|
110
158
|
class ButtonFrame(ttk.Frame):
|
|
111
159
|
def __init__(
|
|
112
|
-
self,
|
|
160
|
+
self,
|
|
161
|
+
master: tk.Frame,
|
|
162
|
+
orientation: str = tk.HORIZONTAL,
|
|
163
|
+
**kwargs: dict,
|
|
113
164
|
) -> None:
|
|
114
165
|
super().__init__(master, **kwargs)
|
|
115
166
|
self._buttons = []
|
|
@@ -120,8 +171,10 @@ class ButtonFrame(ttk.Frame):
|
|
|
120
171
|
self._enabled = kwargs["enabled"]
|
|
121
172
|
|
|
122
173
|
self.icon_buttons = {
|
|
123
|
-
name: IconButton(
|
|
124
|
-
|
|
174
|
+
name: IconButton(
|
|
175
|
+
self, config.text, config.icon, colour=config.colour
|
|
176
|
+
)
|
|
177
|
+
for name, config in icon_buttons.items()
|
|
125
178
|
}
|
|
126
179
|
|
|
127
180
|
def icon_button(
|
|
@@ -129,10 +182,13 @@ class ButtonFrame(ttk.Frame):
|
|
|
129
182
|
id_: str,
|
|
130
183
|
command: object = None,
|
|
131
184
|
dimmable: bool = False,
|
|
185
|
+
text: str = "",
|
|
132
186
|
) -> IconButton:
|
|
133
187
|
button = self.icon_buttons[id_]
|
|
134
188
|
button.dimmable = dimmable
|
|
135
189
|
button.command = command
|
|
190
|
+
if text:
|
|
191
|
+
button.text = text
|
|
136
192
|
return button
|
|
137
193
|
|
|
138
194
|
@property
|
|
@@ -219,52 +275,56 @@ def enable_buttons(buttons: list[Button], enable: bool = True):
|
|
|
219
275
|
|
|
220
276
|
|
|
221
277
|
icon_buttons = {
|
|
222
|
-
"backup": (txt.BACKUP, "backup"),
|
|
223
|
-
"build": (txt.BUILD, "build"),
|
|
224
|
-
"check": (txt.CHECK, "check"),
|
|
225
|
-
"clear": (txt.CLEAR, "clear"),
|
|
226
|
-
"close": (txt.CLOSE, "cancel"),
|
|
227
|
-
"
|
|
228
|
-
"
|
|
229
|
-
"
|
|
230
|
-
"
|
|
231
|
-
"
|
|
232
|
-
"
|
|
233
|
-
"
|
|
234
|
-
"
|
|
235
|
-
"
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
"
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"
|
|
249
|
-
"
|
|
250
|
-
"
|
|
251
|
-
"
|
|
252
|
-
"
|
|
253
|
-
"
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"
|
|
257
|
-
"
|
|
258
|
-
"
|
|
259
|
-
"
|
|
260
|
-
"
|
|
261
|
-
"
|
|
262
|
-
"
|
|
263
|
-
"
|
|
264
|
-
"
|
|
265
|
-
"
|
|
266
|
-
"
|
|
267
|
-
"
|
|
278
|
+
"backup": IconButtonConfig(txt.BACKUP, "backup"),
|
|
279
|
+
"build": IconButtonConfig(txt.BUILD, "build"),
|
|
280
|
+
"check": IconButtonConfig(txt.CHECK, "check"),
|
|
281
|
+
"clear": IconButtonConfig(txt.CLEAR, "clear"),
|
|
282
|
+
"close": IconButtonConfig(txt.CLOSE, "cancel"),
|
|
283
|
+
"close-red": IconButtonConfig(txt.CLOSE, "cancel", "red"),
|
|
284
|
+
"code": IconButtonConfig(txt.CODE, "code"),
|
|
285
|
+
"code-blue": IconButtonConfig(txt.CODE, "code", "blue"),
|
|
286
|
+
"compare": IconButtonConfig(txt.COMPARE, "compare"),
|
|
287
|
+
"compare-orange": IconButtonConfig(txt.COMPARE, "compare", "orange"),
|
|
288
|
+
"config": IconButtonConfig(txt.CONFIG, "gear"),
|
|
289
|
+
"convert": IconButtonConfig(txt.CONVERT, "convert"),
|
|
290
|
+
"copy_docs": IconButtonConfig(txt.COPY, "copy_docs"),
|
|
291
|
+
"copy_clipboard": IconButtonConfig(txt.COPY, "copy_clipboard"),
|
|
292
|
+
"delete": IconButtonConfig(txt.DELETE, "delete"),
|
|
293
|
+
"download": IconButtonConfig(txt.DOWNLOAD, "download"),
|
|
294
|
+
"diff": IconButtonConfig(txt.DIFF, "diff"),
|
|
295
|
+
"done": IconButtonConfig(txt.DONE, "done"),
|
|
296
|
+
"edit": IconButtonConfig(txt.EDIT, "edit"),
|
|
297
|
+
"exit": IconButtonConfig(txt.EXIT, "cancel"),
|
|
298
|
+
"exit-red": IconButtonConfig(txt.EXIT, "cancel", "red"),
|
|
299
|
+
"exit-orange": IconButtonConfig(txt.EXIT, "cancel", "orange"),
|
|
300
|
+
"new": IconButtonConfig(txt.NEW, "new"),
|
|
301
|
+
"next": IconButtonConfig(txt.NEXT, "next"),
|
|
302
|
+
"open": IconButtonConfig(txt.OPEN, "open"),
|
|
303
|
+
"paste": IconButtonConfig(txt.PASTE, "paste"),
|
|
304
|
+
"pause": IconButtonConfig(txt.PAUSE, "pause"),
|
|
305
|
+
"preferences": IconButtonConfig(txt.PREFERENCES, "preferences"),
|
|
306
|
+
"previous": IconButtonConfig(txt.PREVIOUS, "previous"),
|
|
307
|
+
"process": IconButtonConfig(txt.PROCESS, "process"),
|
|
308
|
+
"redo": IconButtonConfig(txt.REDO, "redo"),
|
|
309
|
+
"refresh": IconButtonConfig(txt.REFRESH, "refresh"),
|
|
310
|
+
"rename": IconButtonConfig(txt.RENAME, "rename"),
|
|
311
|
+
"report": IconButtonConfig(txt.REPORT, "report"),
|
|
312
|
+
"reset": IconButtonConfig(txt.RESET, "reset"),
|
|
313
|
+
"restore": IconButtonConfig(txt.RESTORE, "restore"),
|
|
314
|
+
"restore_database": IconButtonConfig(txt.RESTORE, "restore_database"),
|
|
315
|
+
"restore_page": IconButtonConfig(txt.RESTORE, "restore_page"),
|
|
316
|
+
"revert": IconButtonConfig(txt.REVERT, "revert"),
|
|
317
|
+
"run": IconButtonConfig(txt.RUN, "start"),
|
|
318
|
+
"save": IconButtonConfig(txt.SAVE, "save"),
|
|
319
|
+
"script": IconButtonConfig(txt.SCRIPT, "script"),
|
|
320
|
+
"search": IconButtonConfig(txt.SEARCH, "search"),
|
|
321
|
+
"send": IconButtonConfig(txt.SEND, "send"),
|
|
322
|
+
"start": IconButtonConfig(txt.START, "start"),
|
|
323
|
+
"update": IconButtonConfig(txt.UPDATE, "update"),
|
|
324
|
+
"upgrade": IconButtonConfig(txt.UPGRADE, "upgrade"),
|
|
325
|
+
"upload": IconButtonConfig(txt.UPLOAD, "upload"),
|
|
326
|
+
"use": IconButtonConfig(txt.USE, "done"),
|
|
327
|
+
"windows": IconButtonConfig(txt.WINDOWS, "windows"),
|
|
268
328
|
}
|
|
269
329
|
|
|
270
330
|
|
|
@@ -272,7 +332,9 @@ def list_icon_buttons() -> None:
|
|
|
272
332
|
"""List of icon_button."""
|
|
273
333
|
name_length, text_length, icon_length = 15, 10, 15
|
|
274
334
|
|
|
275
|
-
print(
|
|
335
|
+
print(
|
|
336
|
+
f"{'name':<{name_length}} {'text':<{text_length}} {'icon':<{icon_length}}"
|
|
337
|
+
)
|
|
276
338
|
|
|
277
339
|
print(
|
|
278
340
|
f"{'-' * name_length:<{name_length}} "
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.2.34'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|