CharmPkk 0.4.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.
Files changed (45) hide show
  1. charmpkk-0.4.0/CharmPkk.egg-info/PKG-INFO +77 -0
  2. charmpkk-0.4.0/CharmPkk.egg-info/SOURCES.txt +43 -0
  3. charmpkk-0.4.0/CharmPkk.egg-info/dependency_links.txt +1 -0
  4. charmpkk-0.4.0/CharmPkk.egg-info/top_level.txt +1 -0
  5. charmpkk-0.4.0/LICENSE +0 -0
  6. charmpkk-0.4.0/PKG-INFO +77 -0
  7. charmpkk-0.4.0/README.md +47 -0
  8. charmpkk-0.4.0/charmpkk/__init__.py +12 -0
  9. charmpkk-0.4.0/charmpkk/console/__init__.py +95 -0
  10. charmpkk-0.4.0/charmpkk/console/anim.py +120 -0
  11. charmpkk-0.4.0/charmpkk/console/banner.py +80 -0
  12. charmpkk-0.4.0/charmpkk/console/boxes.py +116 -0
  13. charmpkk-0.4.0/charmpkk/console/charts.py +95 -0
  14. charmpkk-0.4.0/charmpkk/console/colors.py +182 -0
  15. charmpkk-0.4.0/charmpkk/console/effects.py +166 -0
  16. charmpkk-0.4.0/charmpkk/console/forms.py +96 -0
  17. charmpkk-0.4.0/charmpkk/console/layout.py +77 -0
  18. charmpkk-0.4.0/charmpkk/console/live.py +67 -0
  19. charmpkk-0.4.0/charmpkk/console/markdown.py +92 -0
  20. charmpkk-0.4.0/charmpkk/console/menu.py +219 -0
  21. charmpkk-0.4.0/charmpkk/console/particles.py +426 -0
  22. charmpkk-0.4.0/charmpkk/console/progress_ext.py +187 -0
  23. charmpkk-0.4.0/charmpkk/console/terminal.py +127 -0
  24. charmpkk-0.4.0/charmpkk/console/text.py +72 -0
  25. charmpkk-0.4.0/charmpkk/console/themes.py +75 -0
  26. charmpkk-0.4.0/charmpkk/console/widgets.py +470 -0
  27. charmpkk-0.4.0/charmpkk/console/wizard.py +53 -0
  28. charmpkk-0.4.0/charmpkk/version.py +1 -0
  29. charmpkk-0.4.0/charmpkk/window/__init__.py +84 -0
  30. charmpkk-0.4.0/charmpkk/window/anim.py +233 -0
  31. charmpkk-0.4.0/charmpkk/window/app.py +125 -0
  32. charmpkk-0.4.0/charmpkk/window/command_palette.py +140 -0
  33. charmpkk-0.4.0/charmpkk/window/custom_titlebar.py +156 -0
  34. charmpkk-0.4.0/charmpkk/window/dialogs.py +119 -0
  35. charmpkk-0.4.0/charmpkk/window/effects.py +280 -0
  36. charmpkk-0.4.0/charmpkk/window/glass.py +290 -0
  37. charmpkk-0.4.0/charmpkk/window/particles.py +345 -0
  38. charmpkk-0.4.0/charmpkk/window/screens.py +64 -0
  39. charmpkk-0.4.0/charmpkk/window/shortcuts.py +63 -0
  40. charmpkk-0.4.0/charmpkk/window/table_view.py +142 -0
  41. charmpkk-0.4.0/charmpkk/window/theme.py +155 -0
  42. charmpkk-0.4.0/charmpkk/window/toast_manager.py +129 -0
  43. charmpkk-0.4.0/charmpkk/window/widgets.py +838 -0
  44. charmpkk-0.4.0/pyproject.toml +41 -0
  45. charmpkk-0.4.0/setup.cfg +4 -0
@@ -0,0 +1,77 @@
1
+ Metadata-Version: 2.4
2
+ Name: CharmPkk
3
+ Version: 0.4.0
4
+ Summary: Красивые, плавные и настраиваемые интерфейсы для Python: консоль (TUI) и оконные приложения (GUI) с акрилом, стеклом, частицами и эффектами.
5
+ Author-email: Your Name <you@example.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/yourname/charmpkk
8
+ Project-URL: Source, https://github.com/yourname/charmpkk
9
+ Project-URL: Issues, https://github.com/yourname/charmpkk/issues
10
+ Project-URL: Changelog, https://github.com/yourname/charmpkk/blob/main/CHANGELOG.md
11
+ Keywords: ui,console,terminal,tui,tkinter,gui,acrylic,mica,glass,particles,animation,charmpkk
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Environment :: Console
23
+ Classifier: Environment :: X11 Applications
24
+ Classifier: Topic :: Software Development :: User Interfaces
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Requires-Python: >=3.8
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Dynamic: license-file
30
+
31
+ CharmPkk — библиотека для создания красивых, плавных и кастомизируемых интерфейсов на чистом Python. Работает в двух режимах: в терминале (TUI — где кастомизации максимум) и в окне (GUI на базе tkinter, без внешних зависимостей). Всё построено вокруг идей «мягкого стекла», живых частиц и плавных анимаций.
32
+
33
+ Возможности
34
+ Консоль (TUI)
35
+
36
+ Цвета и стили: ANSI/truecolor, 256-цветов, hex-цвета, градиенты, радуга, Style-контекст, готовые Palette-темы (dark, light, nord, dracula, gruvbox, tokyo_night, catppuccin, monokai).
37
+
38
+ Текст и рамки: выравнивание, обрезка, обёртка; 8 стилей рамок (single, double, round, heavy, dashed, dotted, ascii, shadow, none), панели, баннеры, big_text для больших ASCII-заголовков.
39
+
40
+ Виджеты: ProgressBar, FancyProgressBar (block/line/dots/star/arrow/square/shade/braille/heart), AnimatedProgressBar (плавно «догоняет» значение), MultiProgress, TaskList (как в CI), Spinner (9 пресетов кадров), Table (zebra, per-column alignment), списки, key_value, badge, statusline, tree.
41
+
42
+ Графики: sparkline, bar_chart, gauge, histogram, heatmap.
43
+
44
+ Интерактив: select, multiselect, tabs (стрелки + hotkeys), Form/Field с валидацией, Wizard/Step — пошаговые мастера.
45
+
46
+ Уведомления и диалоги: info/success/warning/error, Log, ask, ask_password, ask_number, ask_choice, confirm.
47
+
48
+ Markdown: render_markdown / print_md — заголовки, списки, цитаты, код, ссылки, inline-стили.
49
+
50
+ Анимации: 17 easing-функций, tween, Transition, Live (перерисовка блока на месте), эффекты fade_in, wave, shimmer, glitch, marquee, neon, typewriter с курсором.
51
+
52
+ Частицы (реальное время в терминале): Rain, Snow, Stars, Dust, Matrix, Bubbles, Fireflies + play()/play_preset() на N секунд на весь экран.
53
+
54
+ Терминал: скрытие/показ курсора, позиционирование, save/restore, alt_screen, смена заголовка окна, bell, flash, OSC 8 гиперссылки, OSC 52 clipboard, определение truecolor/256.
55
+
56
+ Окно (GUI, tkinter)
57
+
58
+ Темы: 10 встроенных (dark, light, nord, gruvbox, dracula, tokyo_night, catppuccin, solarized_dark/light, monokai) + ThemeManager + свои Theme.
59
+
60
+ Виджеты: StyledButton (7 вариантов × 3 размера), IconButton, StyledEntry (фокус-бордер, prefix/suffix, placeholder, password), TextArea, Toggle, Checkbox, RadioGroup, Slider, Combobox, SegmentedControl, Card, Badge, Divider, Tabs, Tooltip, Toast, Spinner, ProgressBar, TableView (сортировка, зебра, скролл, выбор строки).
61
+
62
+ Диалоги: MessageDialog, ConfirmDialog, InputDialog + модальный Frost (морозный слой поверх окна).
63
+
64
+ Композиция приложения: App с шапкой, действиями, сайдбаром, статус-баром, хелперами toast/message/confirm/input; Router/Screen — SPA-подобная навигация по одному окну; CommandPalette (Ctrl+K); ToastManager (очередь тостов в углу); Shortcuts (реестр горячих клавиш + окно-справка).
65
+
66
+ Frameless-окно: FramelessWindow + CustomTitleBar — перетаскивание, минимизация, максимизация, кнопка закрытия, ресайз по краям.
67
+
68
+ Стекло и акрил: apply_acrylic_win11 (Mica/Acrylic/Tabbed через DWMWA_SYSTEMBACKDROP_TYPE), apply_acrylic_win10 (SetWindowCompositionAttribute), make_glass_app(app) — универсальный one-call; GlassCard (градиент + светящаяся рамка + hover-glow), GlassPanel (слои-подложки), Frost (модальное затемнение).
69
+
70
+ Анимации: Animator (tween/pulse/sequence/color), animate, sequence, fade_in, fade_out, slide_in, fade_in_after, fade_out_destroy.
71
+
72
+ Эффекты: ripple (клик-волна на Canvas), Shimmer (скользящий блик), pulse, GradientFrame (вертикальный/горизонтальный градиент), NeonBorder, GlowText («дышащий» текст).
73
+
74
+ Частицы: ParticleCanvas с режимами rain, snow, stars, dust, bubbles, fireflies, matrix, custom (свой emitter), spawn_burst(x, y) (вспышки-салюты), attach_background(parent, ...) для фона под UI.
75
+
76
+ Философия
77
+ Никаких тяжёлых зависимостей — только tkinter из стандартной библиотеки. Библиотека строится по слоям: colors/text/boxes → widgets/layout/charts → effects/anim/particles → screens/router/palette. Каждый слой можно использовать отдельно или собирать из них готовые приложения: установщик, конфигуратор, дашборд, CLI-утилита — что угодно.
@@ -0,0 +1,43 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ CharmPkk.egg-info/PKG-INFO
5
+ CharmPkk.egg-info/SOURCES.txt
6
+ CharmPkk.egg-info/dependency_links.txt
7
+ CharmPkk.egg-info/top_level.txt
8
+ charmpkk/__init__.py
9
+ charmpkk/version.py
10
+ charmpkk/console/__init__.py
11
+ charmpkk/console/anim.py
12
+ charmpkk/console/banner.py
13
+ charmpkk/console/boxes.py
14
+ charmpkk/console/charts.py
15
+ charmpkk/console/colors.py
16
+ charmpkk/console/effects.py
17
+ charmpkk/console/forms.py
18
+ charmpkk/console/layout.py
19
+ charmpkk/console/live.py
20
+ charmpkk/console/markdown.py
21
+ charmpkk/console/menu.py
22
+ charmpkk/console/particles.py
23
+ charmpkk/console/progress_ext.py
24
+ charmpkk/console/terminal.py
25
+ charmpkk/console/text.py
26
+ charmpkk/console/themes.py
27
+ charmpkk/console/widgets.py
28
+ charmpkk/console/wizard.py
29
+ charmpkk/window/__init__.py
30
+ charmpkk/window/anim.py
31
+ charmpkk/window/app.py
32
+ charmpkk/window/command_palette.py
33
+ charmpkk/window/custom_titlebar.py
34
+ charmpkk/window/dialogs.py
35
+ charmpkk/window/effects.py
36
+ charmpkk/window/glass.py
37
+ charmpkk/window/particles.py
38
+ charmpkk/window/screens.py
39
+ charmpkk/window/shortcuts.py
40
+ charmpkk/window/table_view.py
41
+ charmpkk/window/theme.py
42
+ charmpkk/window/toast_manager.py
43
+ charmpkk/window/widgets.py
@@ -0,0 +1 @@
1
+ charmpkk
charmpkk-0.4.0/LICENSE ADDED
File without changes
@@ -0,0 +1,77 @@
1
+ Metadata-Version: 2.4
2
+ Name: CharmPkk
3
+ Version: 0.4.0
4
+ Summary: Красивые, плавные и настраиваемые интерфейсы для Python: консоль (TUI) и оконные приложения (GUI) с акрилом, стеклом, частицами и эффектами.
5
+ Author-email: Your Name <you@example.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/yourname/charmpkk
8
+ Project-URL: Source, https://github.com/yourname/charmpkk
9
+ Project-URL: Issues, https://github.com/yourname/charmpkk/issues
10
+ Project-URL: Changelog, https://github.com/yourname/charmpkk/blob/main/CHANGELOG.md
11
+ Keywords: ui,console,terminal,tui,tkinter,gui,acrylic,mica,glass,particles,animation,charmpkk
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Environment :: Console
23
+ Classifier: Environment :: X11 Applications
24
+ Classifier: Topic :: Software Development :: User Interfaces
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Requires-Python: >=3.8
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Dynamic: license-file
30
+
31
+ CharmPkk — библиотека для создания красивых, плавных и кастомизируемых интерфейсов на чистом Python. Работает в двух режимах: в терминале (TUI — где кастомизации максимум) и в окне (GUI на базе tkinter, без внешних зависимостей). Всё построено вокруг идей «мягкого стекла», живых частиц и плавных анимаций.
32
+
33
+ Возможности
34
+ Консоль (TUI)
35
+
36
+ Цвета и стили: ANSI/truecolor, 256-цветов, hex-цвета, градиенты, радуга, Style-контекст, готовые Palette-темы (dark, light, nord, dracula, gruvbox, tokyo_night, catppuccin, monokai).
37
+
38
+ Текст и рамки: выравнивание, обрезка, обёртка; 8 стилей рамок (single, double, round, heavy, dashed, dotted, ascii, shadow, none), панели, баннеры, big_text для больших ASCII-заголовков.
39
+
40
+ Виджеты: ProgressBar, FancyProgressBar (block/line/dots/star/arrow/square/shade/braille/heart), AnimatedProgressBar (плавно «догоняет» значение), MultiProgress, TaskList (как в CI), Spinner (9 пресетов кадров), Table (zebra, per-column alignment), списки, key_value, badge, statusline, tree.
41
+
42
+ Графики: sparkline, bar_chart, gauge, histogram, heatmap.
43
+
44
+ Интерактив: select, multiselect, tabs (стрелки + hotkeys), Form/Field с валидацией, Wizard/Step — пошаговые мастера.
45
+
46
+ Уведомления и диалоги: info/success/warning/error, Log, ask, ask_password, ask_number, ask_choice, confirm.
47
+
48
+ Markdown: render_markdown / print_md — заголовки, списки, цитаты, код, ссылки, inline-стили.
49
+
50
+ Анимации: 17 easing-функций, tween, Transition, Live (перерисовка блока на месте), эффекты fade_in, wave, shimmer, glitch, marquee, neon, typewriter с курсором.
51
+
52
+ Частицы (реальное время в терминале): Rain, Snow, Stars, Dust, Matrix, Bubbles, Fireflies + play()/play_preset() на N секунд на весь экран.
53
+
54
+ Терминал: скрытие/показ курсора, позиционирование, save/restore, alt_screen, смена заголовка окна, bell, flash, OSC 8 гиперссылки, OSC 52 clipboard, определение truecolor/256.
55
+
56
+ Окно (GUI, tkinter)
57
+
58
+ Темы: 10 встроенных (dark, light, nord, gruvbox, dracula, tokyo_night, catppuccin, solarized_dark/light, monokai) + ThemeManager + свои Theme.
59
+
60
+ Виджеты: StyledButton (7 вариантов × 3 размера), IconButton, StyledEntry (фокус-бордер, prefix/suffix, placeholder, password), TextArea, Toggle, Checkbox, RadioGroup, Slider, Combobox, SegmentedControl, Card, Badge, Divider, Tabs, Tooltip, Toast, Spinner, ProgressBar, TableView (сортировка, зебра, скролл, выбор строки).
61
+
62
+ Диалоги: MessageDialog, ConfirmDialog, InputDialog + модальный Frost (морозный слой поверх окна).
63
+
64
+ Композиция приложения: App с шапкой, действиями, сайдбаром, статус-баром, хелперами toast/message/confirm/input; Router/Screen — SPA-подобная навигация по одному окну; CommandPalette (Ctrl+K); ToastManager (очередь тостов в углу); Shortcuts (реестр горячих клавиш + окно-справка).
65
+
66
+ Frameless-окно: FramelessWindow + CustomTitleBar — перетаскивание, минимизация, максимизация, кнопка закрытия, ресайз по краям.
67
+
68
+ Стекло и акрил: apply_acrylic_win11 (Mica/Acrylic/Tabbed через DWMWA_SYSTEMBACKDROP_TYPE), apply_acrylic_win10 (SetWindowCompositionAttribute), make_glass_app(app) — универсальный one-call; GlassCard (градиент + светящаяся рамка + hover-glow), GlassPanel (слои-подложки), Frost (модальное затемнение).
69
+
70
+ Анимации: Animator (tween/pulse/sequence/color), animate, sequence, fade_in, fade_out, slide_in, fade_in_after, fade_out_destroy.
71
+
72
+ Эффекты: ripple (клик-волна на Canvas), Shimmer (скользящий блик), pulse, GradientFrame (вертикальный/горизонтальный градиент), NeonBorder, GlowText («дышащий» текст).
73
+
74
+ Частицы: ParticleCanvas с режимами rain, snow, stars, dust, bubbles, fireflies, matrix, custom (свой emitter), spawn_burst(x, y) (вспышки-салюты), attach_background(parent, ...) для фона под UI.
75
+
76
+ Философия
77
+ Никаких тяжёлых зависимостей — только tkinter из стандартной библиотеки. Библиотека строится по слоям: colors/text/boxes → widgets/layout/charts → effects/anim/particles → screens/router/palette. Каждый слой можно использовать отдельно или собирать из них готовые приложения: установщик, конфигуратор, дашборд, CLI-утилита — что угодно.
@@ -0,0 +1,47 @@
1
+ CharmPkk — библиотека для создания красивых, плавных и кастомизируемых интерфейсов на чистом Python. Работает в двух режимах: в терминале (TUI — где кастомизации максимум) и в окне (GUI на базе tkinter, без внешних зависимостей). Всё построено вокруг идей «мягкого стекла», живых частиц и плавных анимаций.
2
+
3
+ Возможности
4
+ Консоль (TUI)
5
+
6
+ Цвета и стили: ANSI/truecolor, 256-цветов, hex-цвета, градиенты, радуга, Style-контекст, готовые Palette-темы (dark, light, nord, dracula, gruvbox, tokyo_night, catppuccin, monokai).
7
+
8
+ Текст и рамки: выравнивание, обрезка, обёртка; 8 стилей рамок (single, double, round, heavy, dashed, dotted, ascii, shadow, none), панели, баннеры, big_text для больших ASCII-заголовков.
9
+
10
+ Виджеты: ProgressBar, FancyProgressBar (block/line/dots/star/arrow/square/shade/braille/heart), AnimatedProgressBar (плавно «догоняет» значение), MultiProgress, TaskList (как в CI), Spinner (9 пресетов кадров), Table (zebra, per-column alignment), списки, key_value, badge, statusline, tree.
11
+
12
+ Графики: sparkline, bar_chart, gauge, histogram, heatmap.
13
+
14
+ Интерактив: select, multiselect, tabs (стрелки + hotkeys), Form/Field с валидацией, Wizard/Step — пошаговые мастера.
15
+
16
+ Уведомления и диалоги: info/success/warning/error, Log, ask, ask_password, ask_number, ask_choice, confirm.
17
+
18
+ Markdown: render_markdown / print_md — заголовки, списки, цитаты, код, ссылки, inline-стили.
19
+
20
+ Анимации: 17 easing-функций, tween, Transition, Live (перерисовка блока на месте), эффекты fade_in, wave, shimmer, glitch, marquee, neon, typewriter с курсором.
21
+
22
+ Частицы (реальное время в терминале): Rain, Snow, Stars, Dust, Matrix, Bubbles, Fireflies + play()/play_preset() на N секунд на весь экран.
23
+
24
+ Терминал: скрытие/показ курсора, позиционирование, save/restore, alt_screen, смена заголовка окна, bell, flash, OSC 8 гиперссылки, OSC 52 clipboard, определение truecolor/256.
25
+
26
+ Окно (GUI, tkinter)
27
+
28
+ Темы: 10 встроенных (dark, light, nord, gruvbox, dracula, tokyo_night, catppuccin, solarized_dark/light, monokai) + ThemeManager + свои Theme.
29
+
30
+ Виджеты: StyledButton (7 вариантов × 3 размера), IconButton, StyledEntry (фокус-бордер, prefix/suffix, placeholder, password), TextArea, Toggle, Checkbox, RadioGroup, Slider, Combobox, SegmentedControl, Card, Badge, Divider, Tabs, Tooltip, Toast, Spinner, ProgressBar, TableView (сортировка, зебра, скролл, выбор строки).
31
+
32
+ Диалоги: MessageDialog, ConfirmDialog, InputDialog + модальный Frost (морозный слой поверх окна).
33
+
34
+ Композиция приложения: App с шапкой, действиями, сайдбаром, статус-баром, хелперами toast/message/confirm/input; Router/Screen — SPA-подобная навигация по одному окну; CommandPalette (Ctrl+K); ToastManager (очередь тостов в углу); Shortcuts (реестр горячих клавиш + окно-справка).
35
+
36
+ Frameless-окно: FramelessWindow + CustomTitleBar — перетаскивание, минимизация, максимизация, кнопка закрытия, ресайз по краям.
37
+
38
+ Стекло и акрил: apply_acrylic_win11 (Mica/Acrylic/Tabbed через DWMWA_SYSTEMBACKDROP_TYPE), apply_acrylic_win10 (SetWindowCompositionAttribute), make_glass_app(app) — универсальный one-call; GlassCard (градиент + светящаяся рамка + hover-glow), GlassPanel (слои-подложки), Frost (модальное затемнение).
39
+
40
+ Анимации: Animator (tween/pulse/sequence/color), animate, sequence, fade_in, fade_out, slide_in, fade_in_after, fade_out_destroy.
41
+
42
+ Эффекты: ripple (клик-волна на Canvas), Shimmer (скользящий блик), pulse, GradientFrame (вертикальный/горизонтальный градиент), NeonBorder, GlowText («дышащий» текст).
43
+
44
+ Частицы: ParticleCanvas с режимами rain, snow, stars, dust, bubbles, fireflies, matrix, custom (свой emitter), spawn_burst(x, y) (вспышки-салюты), attach_background(parent, ...) для фона под UI.
45
+
46
+ Философия
47
+ Никаких тяжёлых зависимостей — только tkinter из стандартной библиотеки. Библиотека строится по слоям: colors/text/boxes → widgets/layout/charts → effects/anim/particles → screens/router/palette. Каждый слой можно использовать отдельно или собирать из них готовые приложения: установщик, конфигуратор, дашборд, CLI-утилита — что угодно.
@@ -0,0 +1,12 @@
1
+ """CharmPkk — красивые интерфейсы для Python: консоль и окно."""
2
+ from .version import __version__
3
+ from . import console
4
+
5
+ __all__ = ["console", "__version__"]
6
+
7
+ try:
8
+ from . import window # noqa: F401
9
+ __all__.append("window")
10
+ except Exception:
11
+ # tkinter может отсутствовать (например, headless-сервер)
12
+ pass
@@ -0,0 +1,95 @@
1
+ from . import colors, text, boxes, layout, widgets, charts, menu
2
+ from . import anim, particles, effects, live as _live_mod
3
+ from . import terminal as terminal_mod
4
+ from . import themes as console_themes
5
+ from . import banner as banner_mod
6
+ from . import forms as forms_mod
7
+ from . import wizard as wizard_mod
8
+ from . import markdown as markdown_mod
9
+ from . import progress_ext
10
+ from .colors import (
11
+ colorize, fg_rgb, bg_rgb, fg_hex, bg_hex, fg_256, bg_256,
12
+ gradient_text, rainbow_text, Style,
13
+ enable, disable, is_enabled, strip_ansi,
14
+ BOLD, DIM, ITALIC, UNDERLINE, BLINK, REVERSE, HIDDEN, STRIKE, RESET,
15
+ BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE,
16
+ BRIGHT_BLACK, BRIGHT_RED, BRIGHT_GREEN, BRIGHT_YELLOW,
17
+ BRIGHT_BLUE, BRIGHT_MAGENTA, BRIGHT_CYAN, BRIGHT_WHITE,
18
+ )
19
+ from .text import wrap, align, center, pad, truncate, typewriter, indent, visible_len
20
+ from .boxes import box, rule, section, panel, banner, STYLES
21
+ from .layout import columns, rows, grid, sidebar
22
+ from .widgets import (
23
+ ProgressBar, MultiProgress, Spinner, Table,
24
+ bullet_list, numbered_list, key_value, badge, statusline, tree,
25
+ notify, info, success, warning, error, Log,
26
+ ask, ask_password, ask_number, confirm, ask_choice,
27
+ )
28
+ from .charts import sparkline, bar_chart, gauge, histogram, heatmap
29
+ from .menu import select, multiselect, tabs
30
+
31
+ from .anim import (
32
+ ease, tween, lerp, lerp_color, Transition, EASINGS,
33
+ ease_in_quad, ease_out_quad, ease_in_out_quad,
34
+ ease_in_cubic, ease_out_cubic, ease_in_out_cubic,
35
+ ease_in_quart, ease_out_quart, ease_in_out_sine,
36
+ ease_in_expo, ease_out_expo,
37
+ ease_out_back, ease_out_elastic, ease_out_bounce,
38
+ )
39
+ from .particles import (
40
+ Canvas as ParticleCanvas, ParticleSystem,
41
+ Rain, Snow, Stars, Dust, Matrix, Bubbles, Fireflies,
42
+ play as play_particles, play_preset, PRESETS as PARTICLE_PRESETS,
43
+ )
44
+ from .effects import (
45
+ typewriter as typewriter_fx, fade_in, wave, shimmer,
46
+ glitch, marquee, neon,
47
+ )
48
+ from .live import Live, animate_to
49
+
50
+ from .terminal import Terminal, terminal
51
+ from .themes import Palette, REGISTRY as THEMES, get as get_theme, list_names as list_themes
52
+ from .banner import big as big_text
53
+ from .forms import Form, Field
54
+ from .wizard import Wizard, Step
55
+ from .markdown import render as render_markdown, print_md
56
+ from .progress_ext import FancyProgressBar, AnimatedProgressBar, TaskList
57
+
58
+ __all__ = [
59
+ "colors", "colorize", "fg_rgb", "bg_rgb", "fg_hex", "bg_hex", "fg_256", "bg_256",
60
+ "gradient_text", "rainbow_text", "Style", "enable", "disable", "is_enabled",
61
+ "strip_ansi",
62
+ "BOLD", "DIM", "ITALIC", "UNDERLINE", "BLINK", "REVERSE", "HIDDEN", "STRIKE", "RESET",
63
+ "BLACK", "RED", "GREEN", "YELLOW", "BLUE", "MAGENTA", "CYAN", "WHITE",
64
+ "BRIGHT_BLACK", "BRIGHT_RED", "BRIGHT_GREEN", "BRIGHT_YELLOW",
65
+ "BRIGHT_BLUE", "BRIGHT_MAGENTA", "BRIGHT_CYAN", "BRIGHT_WHITE",
66
+ "text", "wrap", "align", "center", "pad", "truncate", "typewriter", "indent", "visible_len",
67
+ "boxes", "box", "rule", "section", "panel", "banner", "STYLES",
68
+ "layout", "columns", "rows", "grid", "sidebar",
69
+ "widgets", "ProgressBar", "MultiProgress", "Spinner", "Table",
70
+ "bullet_list", "numbered_list", "key_value", "badge", "statusline", "tree",
71
+ "notify", "info", "success", "warning", "error", "Log",
72
+ "ask", "ask_password", "ask_number", "confirm", "ask_choice",
73
+ "charts", "sparkline", "bar_chart", "gauge", "histogram", "heatmap",
74
+ "menu", "select", "multiselect", "tabs",
75
+ "anim", "ease", "tween", "lerp", "lerp_color", "Transition", "EASINGS",
76
+ "ease_in_quad", "ease_out_quad", "ease_in_out_quad",
77
+ "ease_in_cubic", "ease_out_cubic", "ease_in_out_cubic",
78
+ "ease_in_quart", "ease_out_quart", "ease_in_out_sine",
79
+ "ease_in_expo", "ease_out_expo",
80
+ "ease_out_back", "ease_out_elastic", "ease_out_bounce",
81
+ "particles", "ParticleCanvas", "ParticleSystem",
82
+ "Rain", "Snow", "Stars", "Dust", "Matrix", "Bubbles", "Fireflies",
83
+ "play_particles", "play_preset", "PARTICLE_PRESETS",
84
+ "effects", "typewriter_fx", "fade_in", "wave", "shimmer",
85
+ "glitch", "marquee", "neon",
86
+ "Live", "animate_to",
87
+ # 0.4.0
88
+ "terminal_mod", "Terminal", "terminal",
89
+ "console_themes", "Palette", "THEMES", "get_theme", "list_themes",
90
+ "banner_mod", "big_text",
91
+ "forms_mod", "Form", "Field",
92
+ "wizard_mod", "Wizard", "Step",
93
+ "markdown_mod", "render_markdown", "print_md",
94
+ "progress_ext", "FancyProgressBar", "AnimatedProgressBar", "TaskList",
95
+ ]
@@ -0,0 +1,120 @@
1
+ """Easing, tween, интерполяция — для плавных консольных анимаций."""
2
+ import math
3
+
4
+
5
+ # ---------- easing ----------
6
+
7
+ def linear(t): return t
8
+ def ease_in_quad(t): return t * t
9
+ def ease_out_quad(t): return 1 - (1 - t) ** 2
10
+ def ease_in_out_quad(t): return 2 * t * t if t < 0.5 else 1 - (-2 * t + 2) ** 2 / 2
11
+ def ease_in_cubic(t): return t ** 3
12
+ def ease_out_cubic(t): return 1 - (1 - t) ** 3
13
+ def ease_in_out_cubic(t): return 4 * t ** 3 if t < 0.5 else 1 - (-2 * t + 2) ** 3 / 2
14
+ def ease_in_quart(t): return t ** 4
15
+ def ease_out_quart(t): return 1 - (1 - t) ** 4
16
+ def ease_in_out_sine(t): return -(math.cos(math.pi * t) - 1) / 2
17
+ def ease_in_expo(t): return 0 if t == 0 else 2 ** (10 * t - 10)
18
+ def ease_out_expo(t): return 1 if t == 1 else 1 - 2 ** (-10 * t)
19
+
20
+
21
+ def ease_out_back(t):
22
+ c1, c3 = 1.70158, 2.70158
23
+ return 1 + c3 * (t - 1) ** 3 + c1 * (t - 1) ** 2
24
+
25
+
26
+ def ease_out_elastic(t):
27
+ if t in (0.0, 1.0):
28
+ return t
29
+ c4 = (2 * math.pi) / 3
30
+ return 2 ** (-10 * t) * math.sin((t * 10 - 0.75) * c4) + 1
31
+
32
+
33
+ def ease_out_bounce(t):
34
+ n1, d1 = 7.5625, 2.75
35
+ if t < 1 / d1:
36
+ return n1 * t * t
37
+ if t < 2 / d1:
38
+ t -= 1.5 / d1
39
+ return n1 * t * t + 0.75
40
+ if t < 2.5 / d1:
41
+ t -= 2.25 / d1
42
+ return n1 * t * t + 0.9375
43
+ t -= 2.625 / d1
44
+ return n1 * t * t + 0.984375
45
+
46
+
47
+ EASINGS = {
48
+ "linear": linear,
49
+ "in_quad": ease_in_quad, "out_quad": ease_out_quad, "in_out_quad": ease_in_out_quad,
50
+ "in_cubic": ease_in_cubic, "out_cubic": ease_out_cubic, "in_out_cubic": ease_in_out_cubic,
51
+ "in_quart": ease_in_quart, "out_quart": ease_out_quart,
52
+ "in_out_sine": ease_in_out_sine,
53
+ "in_expo": ease_in_expo, "out_expo": ease_out_expo,
54
+ "out_back": ease_out_back, "out_elastic": ease_out_elastic, "out_bounce": ease_out_bounce,
55
+ }
56
+
57
+
58
+ def ease(t, kind="out_cubic"):
59
+ return EASINGS.get(kind, ease_out_cubic)(max(0.0, min(1.0, t)))
60
+
61
+
62
+ def tween(duration=1.0, fps=30, kind="out_cubic"):
63
+ """Генератор значений 0..1 (с плавным easing)."""
64
+ n = max(int(duration * fps), 1)
65
+ for i in range(n + 1):
66
+ yield ease(i / n, kind)
67
+
68
+
69
+ def lerp(a, b, t):
70
+ return a + (b - a) * t
71
+
72
+
73
+ def _hex_to_rgb(h):
74
+ h = h.lstrip("#")
75
+ if len(h) == 3:
76
+ h = "".join(c * 2 for c in h)
77
+ return tuple(int(h[i:i + 2], 16) for i in (0, 2, 4))
78
+
79
+
80
+ def _rgb_to_hex(rgb):
81
+ return "#{:02x}{:02x}{:02x}".format(*(max(0, min(255, int(c))) for c in rgb))
82
+
83
+
84
+ def lerp_color(c1, c2, t):
85
+ """c1, c2 — hex-строки, возвращает hex."""
86
+ a, b = _hex_to_rgb(c1), _hex_to_rgb(c2)
87
+ return _rgb_to_hex((a[i] + (b[i] - a[i]) * t for i in range(3)))
88
+
89
+
90
+ class Transition:
91
+ """Плавно переводит число из текущего значения в целевое."""
92
+
93
+ def __init__(self, value=0.0, kind="out_cubic"):
94
+ self.value = value
95
+ self.target = value
96
+ self.start = value
97
+ self.kind = kind
98
+ self._t = 0.0
99
+ self._duration = 0.0
100
+
101
+ def to(self, target, duration=0.5, kind=None):
102
+ self.start = self.value
103
+ self.target = target
104
+ self._duration = max(duration, 1e-6)
105
+ self._t = 0.0
106
+ if kind:
107
+ self.kind = kind
108
+ return self
109
+
110
+ def step(self, dt):
111
+ if self._duration <= 0:
112
+ self.value = self.target
113
+ return self.value
114
+ self._t = min(self._t + dt / self._duration, 1.0)
115
+ self.value = lerp(self.start, self.target, ease(self._t, self.kind))
116
+ return self.value
117
+
118
+ @property
119
+ def done(self):
120
+ return self._t >= 1.0
@@ -0,0 +1,80 @@
1
+ """Большие ASCII-заголовки (минимальный FIGlet-подобный рендер)."""
2
+ from .colors import colorize, gradient_text
3
+
4
+ # 5-строчные глифы (только заглавные + цифры + базовые знаки).
5
+ _FONT = {
6
+ "A": [" ▄▀█ ", " █▀█ ", " ▀ ▀ "],
7
+ "B": [" █▀▄ ", " █▀▄ ", " ▀▀ "],
8
+ "C": [" █▀▀ ", " █ ", " ▀▀▀ "],
9
+ "D": [" █▀▄ ", " █ █ ", " ▀▀ "],
10
+ "E": [" █▀▀ ", " █▀ ", " ▀▀▀ "],
11
+ "F": [" █▀▀ ", " █▀ ", " ▀ "],
12
+ "G": [" █▀▀ ", " █ █ ", " ▀▀▀ "],
13
+ "H": [" █ █ ", " █▀█ ", " ▀ ▀ "],
14
+ "I": [" █ ", " █ ", " ▀ "],
15
+ "J": [" █ ", " █ ", " ▀▀ "],
16
+ "K": [" █ █ ", " █▀▄ ", " ▀ ▀ "],
17
+ "L": [" █ ", " █ ", " ▀▀▀ "],
18
+ "M": [" █▀▄▀█ ", " █ ▀ █ ", " ▀ ▀ "],
19
+ "N": [" █▄ █ ", " █ ▀█ ", " ▀ ▀ "],
20
+ "O": [" █▀█ ", " █ █ ", " ▀▀▀ "],
21
+ "P": [" █▀█ ", " █▀▀ ", " ▀ "],
22
+ "Q": [" █▀█ ", " █ █ ", " ▀▀▀▄ "],
23
+ "R": [" █▀▄ ", " █▀▄ ", " ▀ ▀ "],
24
+ "S": [" █▀▀ ", " ▀▀█ ", " ▀▀▀ "],
25
+ "T": [" █▀█ ", " █ ", " ▀ "],
26
+ "U": [" █ █ ", " █ █ ", " ▀▀▀ "],
27
+ "V": [" █ █ ", " █ █ ", " ▀ "],
28
+ "W": [" █ █ █ ", " █ █ █ ", " ▀ ▀ "],
29
+ "X": [" █ █ ", " █ ", " ▀ ▀ "],
30
+ "Y": [" █ █ ", " █ ", " ▀ "],
31
+ "Z": [" ▀▀█ ", " ▄▀ ", " ▀▀▀ "],
32
+ "0": [" █▀█ ", " █ █ ", " ▀▀▀ "],
33
+ "1": [" ▄█ ", " █ ", " ▀▀▀ "],
34
+ "2": [" █▀█ ", " ▄▀ ", " ▀▀▀ "],
35
+ "3": [" ▀▀█ ", " ▀▀█ ", " ▀▀▀ "],
36
+ "4": [" █ █ ", " ▀▀█ ", " ▀ "],
37
+ "5": [" █▀▀ ", " ▀▀▄ ", " ▀▀▀ "],
38
+ "6": [" █▀▀ ", " █▀▄ ", " ▀▀▀ "],
39
+ "7": [" ▀▀█ ", " █ ", " ▀ "],
40
+ "8": [" █▀█ ", " █▀█ ", " ▀▀▀ "],
41
+ "9": [" █▀█ ", " ▀▀█ ", " ▀▀▀ "],
42
+ " ": [" ", " ", " "],
43
+ "!": [" █ ", " █ ", " ▀ "],
44
+ "?": [" █▀█ ", " ▄▀ ", " ▀ "],
45
+ ".": [" ", " ", " ▀ "],
46
+ ",": [" ", " ", " ▀ "],
47
+ "-": [" ", " ▀▀▀ ", " "],
48
+ "_": [" ", " ", " ▀▀▀ "],
49
+ ":": [" ", " ▀ ", " ▀ "],
50
+ }
51
+
52
+ _TEMPLATES = {
53
+ "block": ["▄▀█", "█▀█", "▀ ▀"], # не используется напрямую, но идея та же
54
+ }
55
+
56
+
57
+ def _render(text):
58
+ text = text.upper()
59
+ lines = ["", "", ""]
60
+ for ch in text:
61
+ glyph = _FONT.get(ch, _FONT["?"])
62
+ w = max(len(g) for g in glyph)
63
+ for i, g in enumerate(glyph):
64
+ lines[i] += g.ljust(w) + " "
65
+ return [l.rstrip() for l in lines]
66
+
67
+
68
+ def big(text, fg=None, gradient=None, align="left", width=None):
69
+ """Крупный заголовок. Если передан gradient=(start_hex, end_hex) —
70
+ каждая строка окрашивается градиентом."""
71
+ lines = _render(text)
72
+ if width:
73
+ from .text import align as _a
74
+ lines = [_a(l, width, align) for l in lines]
75
+ if gradient:
76
+ return "\n".join(gradient_text(l, gradient[0], gradient[1])
77
+ for l in lines)
78
+ if fg:
79
+ return "\n".join(colorize(l, fg=fg) for l in lines)
80
+ return "\n".join(lines)