ttkbootstrap 2.2.2__tar.gz → 2.2.3__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.
- {ttkbootstrap-2.2.2/src/ttkbootstrap.egg-info → ttkbootstrap-2.2.3}/PKG-INFO +1 -1
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/pyproject.toml +9 -2
- ttkbootstrap-2.2.3/src/ttkbootstrap/_pyinstaller/__init__.py +8 -0
- ttkbootstrap-2.2.3/src/ttkbootstrap/_pyinstaller/hook-ttkbootstrap.py +3 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3/src/ttkbootstrap.egg-info}/PKG-INFO +1 -1
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap.egg-info/SOURCES.txt +3 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap.egg-info/entry_points.txt +3 -0
- ttkbootstrap-2.2.3/tests/test_pyinstaller_hook.py +51 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/LICENSE +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/MANIFEST.in +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/README.md +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/setup.cfg +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/__init__.pyi +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/__main__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/app_icons/ttkbootstrap.ico +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/app_icons/ttkbootstrap.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/README.md +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/checkbox-checked.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/checkbox-indeterminate.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/checkbox-unchecked.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/manifest.json +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/progressbar-default.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/progressbar-thin.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/radio.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/sizegrip.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/slider-handle.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/slider-track.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/switch-round.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/switch-square.png +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/icons/LICENSE +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/icons/README.md +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/icons/bootstrap.ttf +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/icons/glyphmap.json +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/icons/icon_metrics.json +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/cli.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/colorutils.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/constants.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/convert_theme.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/base.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/colorchooser.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/colordropper.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/datepicker.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/filedialog.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/fontdialog.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/message.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/dialogs/query.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/internal/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/internal/busy.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/internal/configure_delegation.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/internal/positioning.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/internal/publisher.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/internal/utility.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/internal/wheel.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/localization/README.md +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/localization/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/localization/api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/localization/msgcat.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/localization/msgs.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/menu.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/publisher.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/py.typed +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/_compat.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/assets.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/bootstyle.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/button.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/calendar.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/checkbutton.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/combobox.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/entry.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/floodgauge.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/frame.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/label.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/labelframe.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/menubutton.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/notebook.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/panedwindow.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/progressbar.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/radiobutton.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/registry.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/scale.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/scrollbar.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/separator.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/sizegrip.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/spinbox.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/toggle.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/toolbutton.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/treeview.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders/utils.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders_tk.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/builders_ttk.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/elements.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/engine.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/icons.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/layout.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/scaling.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/style/theme.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/themes/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/themes/builtin.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/themes/legacy.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/themes/standard.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/utility.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/utils/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/utils/color.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/utils/config.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/utils/fonts.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/utils/platform.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/utils/scaling.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/validation.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/dateentry.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/floodgauge.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/labeledscale.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/meter.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/scrolled.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/tableview.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/toast.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/widgets/tooltip.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/window.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap.egg-info/dependency_links.txt +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap.egg-info/requires.txt +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap.egg-info/top_level.txt +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkcreator/__init__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkcreator/__main__.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_bootstyle_grammar.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_bootstyle_value_tokens.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_busy_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_cli_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_config_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_configure_delegation.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_convert_theme.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_dateentry_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_dialogs_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_durable_style_options.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_filedialog_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_floodgauge_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_fonts_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_icon_drop.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_icon_theme.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_labeledscale_tooltip_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_menu_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_menu_border.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_meter_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_mixin_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_scaling.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_scroll_events.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_scrolled_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_style_package.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_style_reference.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_surface_color.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_surface_families.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_surface_grammar.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_tableview_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_toast_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_toolkit.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_treeview_rowheight.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_utility_api.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_widget_catalog_coverage.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_widget_reexports.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_widget_stubs.py +0 -0
- {ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/tests/test_window_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ttkbootstrap
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
4
4
|
Summary: Modern themes for Tkinter. Sleek, responsive styles inspired by Bootstrap. Includes ready-to-use widgets, 30+ themes, and tools for building beautiful, cross-platform desktop apps with ease.
|
|
5
5
|
Author-email: Israel Dryer <israel.dryer@gmail.com>
|
|
6
6
|
License-Expression: MIT AND (Apache-2.0 OR BSD-2-Clause)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ttkbootstrap"
|
|
7
|
-
version = "2.2.
|
|
7
|
+
version = "2.2.3"
|
|
8
8
|
description = "Modern themes for Tkinter. Sleek, responsive styles inspired by Bootstrap. Includes ready-to-use widgets, 30+ themes, and tools for building beautiful, cross-platform desktop apps with ease."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -56,6 +56,11 @@ Documentation = "https://www.ttkbootstrap.org/en/latest/"
|
|
|
56
56
|
ttkbootstrap = "ttkbootstrap.cli:main"
|
|
57
57
|
ttkb = "ttkbootstrap.cli:main"
|
|
58
58
|
|
|
59
|
+
[project.entry-points."pyinstaller40"]
|
|
60
|
+
# Include a hook to add the data files to a PyInstaller bundle
|
|
61
|
+
# https://pyinstaller.org/en/stable/hooks.html#providing-pyinstaller-hooks-with-your-package
|
|
62
|
+
hook-dirs = "ttkbootstrap._pyinstaller:get_hook_dirs"
|
|
63
|
+
|
|
59
64
|
[tool.setuptools.packages.find]
|
|
60
65
|
where = ["src"]
|
|
61
66
|
|
|
@@ -67,7 +72,9 @@ where = ["src"]
|
|
|
67
72
|
# graft already sweeps them in, but the stub is what restores widget parameters
|
|
68
73
|
# in an IDE (#1327), so a wheel that quietly ships without it is a silent
|
|
69
74
|
# regression rather than a visible failure.
|
|
70
|
-
"ttkbootstrap" = [
|
|
75
|
+
"ttkbootstrap" = [
|
|
76
|
+
"py.typed", "*.pyi", "themes/*.json", "assets/*", "assets/icons/*", "assets/elements/*",
|
|
77
|
+
"assets/app_icons/ttkbootstrap.ico", "assets/app_icons/ttkbootstrap.png", "_pyinstaller/*.py"]
|
|
71
78
|
|
|
72
79
|
[tool.pytest.ini_options]
|
|
73
80
|
# Only the headless suite under tests/ is collected. Interactive mainloop()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ttkbootstrap
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
4
4
|
Summary: Modern themes for Tkinter. Sleek, responsive styles inspired by Bootstrap. Includes ready-to-use widgets, 30+ themes, and tools for building beautiful, cross-platform desktop apps with ease.
|
|
5
5
|
Author-email: Israel Dryer <israel.dryer@gmail.com>
|
|
6
6
|
License-Expression: MIT AND (Apache-2.0 OR BSD-2-Clause)
|
|
@@ -21,6 +21,8 @@ src/ttkbootstrap.egg-info/dependency_links.txt
|
|
|
21
21
|
src/ttkbootstrap.egg-info/entry_points.txt
|
|
22
22
|
src/ttkbootstrap.egg-info/requires.txt
|
|
23
23
|
src/ttkbootstrap.egg-info/top_level.txt
|
|
24
|
+
src/ttkbootstrap/_pyinstaller/__init__.py
|
|
25
|
+
src/ttkbootstrap/_pyinstaller/hook-ttkbootstrap.py
|
|
24
26
|
src/ttkbootstrap/assets/__init__.py
|
|
25
27
|
src/ttkbootstrap/assets/app_icons/ttkbootstrap.ico
|
|
26
28
|
src/ttkbootstrap/assets/app_icons/ttkbootstrap.png
|
|
@@ -142,6 +144,7 @@ tests/test_menu_api.py
|
|
|
142
144
|
tests/test_menu_border.py
|
|
143
145
|
tests/test_meter_api.py
|
|
144
146
|
tests/test_mixin_api.py
|
|
147
|
+
tests/test_pyinstaller_hook.py
|
|
145
148
|
tests/test_scaling.py
|
|
146
149
|
tests/test_scroll_events.py
|
|
147
150
|
tests/test_scrolled_api.py
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""Tests for the PyInstaller hook that bundles ttkbootstrap's package data.
|
|
2
|
+
|
|
3
|
+
The icon font and the element rasters are package *data*, which a freezer
|
|
4
|
+
collects only when a hook names it. A broken hook is invisible until someone
|
|
5
|
+
runs the frozen app, which then dies at its first icon render -- so these tests
|
|
6
|
+
pin every link PyInstaller follows, without needing PyInstaller installed.
|
|
7
|
+
"""
|
|
8
|
+
import ast
|
|
9
|
+
import importlib.metadata
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
from ttkbootstrap._pyinstaller import get_hook_dirs
|
|
13
|
+
|
|
14
|
+
HOOK_GROUP = "pyinstaller40"
|
|
15
|
+
TARGET = "ttkbootstrap._pyinstaller:get_hook_dirs"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def _hook_path():
|
|
19
|
+
return Path(get_hook_dirs()[0]) / "hook-ttkbootstrap.py"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_hook_dirs_name_the_directory_holding_the_hook():
|
|
23
|
+
dirs = get_hook_dirs()
|
|
24
|
+
assert len(dirs) == 1
|
|
25
|
+
assert _hook_path().is_file()
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_entry_point_is_installed_and_resolves():
|
|
29
|
+
# Selected by value, not name: PyInstaller's own contrib package registers a
|
|
30
|
+
# `hook-dirs` entry point in the same group.
|
|
31
|
+
ours = [ep for ep in importlib.metadata.entry_points(group=HOOK_GROUP)
|
|
32
|
+
if ep.value == TARGET]
|
|
33
|
+
assert ours, "no pyinstaller40 entry point -- reinstall with `pip install -e .`"
|
|
34
|
+
assert ours[0].load()() == get_hook_dirs()
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_hook_assigns_the_collected_data_to_datas():
|
|
38
|
+
# PyInstaller reads only the hook's `datas` global. Calling
|
|
39
|
+
# collect_data_files without assigning it collects nothing, and a text
|
|
40
|
+
# search for the call cannot tell the difference -- so parse the file.
|
|
41
|
+
tree = ast.parse(_hook_path().read_text(encoding="utf-8-sig"))
|
|
42
|
+
collected = [
|
|
43
|
+
node.value.args[0].value
|
|
44
|
+
for node in tree.body
|
|
45
|
+
if isinstance(node, ast.Assign)
|
|
46
|
+
and [getattr(t, "id", None) for t in node.targets] == ["datas"]
|
|
47
|
+
and isinstance(node.value, ast.Call)
|
|
48
|
+
and getattr(node.value.func, "id", None) == "collect_data_files"
|
|
49
|
+
and node.value.args
|
|
50
|
+
]
|
|
51
|
+
assert collected == ["ttkbootstrap.assets"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/app_icons/ttkbootstrap.ico
RENAMED
|
File without changes
|
{ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/app_icons/ttkbootstrap.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/checkbox-checked.png
RENAMED
|
File without changes
|
|
File without changes
|
{ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/checkbox-unchecked.png
RENAMED
|
File without changes
|
|
File without changes
|
{ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/progressbar-default.png
RENAMED
|
File without changes
|
{ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/progressbar-thin.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/slider-handle.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ttkbootstrap-2.2.2 → ttkbootstrap-2.2.3}/src/ttkbootstrap/assets/elements/switch-square.png
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|