termc 0.1.0__py3-none-any.whl

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.
termc/__init__.py ADDED
@@ -0,0 +1 @@
1
+ from .core import *
termc/core.py ADDED
@@ -0,0 +1,156 @@
1
+ # LIBS
2
+ from colorama import Fore, Style, init
3
+ import getpass
4
+ from datetime import datetime
5
+ import sys
6
+
7
+ init(autoreset=True)
8
+
9
+ # COLORS
10
+ termc_C_PRIMARY = Fore.CYAN
11
+ termc_C_MUTED = Fore.LIGHTBLACK_EX
12
+ termc_C_OK = Fore.GREEN
13
+ termc_C_ERR = Fore.RED
14
+ termc_C_WARN = Fore.YELLOW
15
+ termc_C_DBG = Fore.MAGENTA
16
+
17
+ # VARIABLES
18
+ termc_pc_username = getpass.getuser()
19
+ termc_program_name = "termc"
20
+
21
+ # CONFIG
22
+ class termcConfig:
23
+ @staticmethod
24
+ def program_name(name: str) -> None:
25
+ global termc_program_name
26
+ termc_program_name = name
27
+
28
+ @staticmethod
29
+ def preset(name: str = "default"):
30
+ global termc_C_PRIMARY, termc_C_MUTED, termc_C_OK, termc_C_ERR, termc_C_WARN, termc_C_DBG
31
+ if name == "default":
32
+ termc_C_PRIMARY = Fore.CYAN
33
+ termc_C_MUTED = Fore.LIGHTBLACK_EX
34
+ termc_C_OK = Fore.GREEN
35
+ termc_C_ERR = Fore.RED
36
+ termc_C_WARN = Fore.YELLOW
37
+ termc_C_DBG = Fore.MAGENTA
38
+ elif name == "ocean":
39
+ termc_C_PRIMARY = Fore.BLUE
40
+ termc_C_MUTED = Fore.LIGHTBLACK_EX
41
+ termc_C_OK = Fore.LIGHTGREEN_EX
42
+ termc_C_ERR = Fore.LIGHTRED_EX
43
+ termc_C_WARN = Fore.LIGHTYELLOW_EX
44
+ termc_C_DBG = Fore.LIGHTCYAN_EX
45
+ elif name == "sunset":
46
+ termc_C_PRIMARY = Fore.LIGHTRED_EX
47
+ termc_C_MUTED = Fore.LIGHTBLACK_EX
48
+ termc_C_OK = Fore.LIGHTGREEN_EX
49
+ termc_C_ERR = Fore.RED
50
+ termc_C_WARN = Fore.LIGHTYELLOW_EX
51
+ termc_C_DBG = Fore.LIGHTMAGENTA_EX
52
+ elif name == "mono":
53
+ termc_C_PRIMARY = Fore.WHITE
54
+ termc_C_MUTED = Fore.LIGHTBLACK_EX
55
+ termc_C_OK = Fore.WHITE
56
+ termc_C_ERR = Fore.LIGHTWHITE_EX
57
+ termc_C_WARN = Fore.LIGHTBLACK_EX
58
+ termc_C_DBG = Fore.LIGHTBLACK_EX
59
+ else:
60
+ print("Available presets: default, mono, ocean, sunset")
61
+
62
+
63
+ ### FUNCTIONS
64
+ # -------------------------
65
+ # inputs
66
+ # -------------------------
67
+
68
+ def prompt_header() -> None:
69
+ timestamp = datetime.now().strftime("%H:%M:%S")
70
+ print(
71
+ f'{termc_C_PRIMARY}╭─{Style.RESET_ALL} '
72
+ f'{Style.BRIGHT}{termc_pc_username}{Style.RESET_ALL}'
73
+ f'{termc_C_MUTED}@{Style.RESET_ALL}'
74
+ f'{termc_C_PRIMARY}{Style.BRIGHT}{termc_program_name}{Style.RESET_ALL}'
75
+ f' {termc_C_MUTED}[{timestamp}]{Style.RESET_ALL}'
76
+ )
77
+
78
+
79
+ def prompt_mid(message: str) -> str:
80
+ return input(f'{termc_C_PRIMARY}├─❯{Style.RESET_ALL} {message}: ')
81
+
82
+
83
+ def prompt_bot(message: str) -> str:
84
+ return input(f'{termc_C_PRIMARY}╰─❯{Style.RESET_ALL} {message}: ')
85
+
86
+
87
+ # -------------------------
88
+ # prints
89
+ # -------------------------
90
+
91
+ def info(message: str) -> None:
92
+ print(f'{termc_C_PRIMARY}[i]{Style.RESET_ALL} {message}')
93
+
94
+
95
+ def error(message: str) -> None:
96
+ print(f'{termc_C_ERR}[✗]{Style.RESET_ALL} {message}')
97
+
98
+
99
+ def success(message: str) -> None:
100
+ print(f'{termc_C_OK}[✓]{Style.RESET_ALL} {message}')
101
+
102
+
103
+ def warn(message: str) -> None:
104
+ print(f'{termc_C_WARN}[!]{Style.RESET_ALL} {message}')
105
+
106
+
107
+ def dbg(message: str) -> None:
108
+ print(f'{termc_C_DBG}[~]{Style.RESET_ALL} {message}')
109
+
110
+
111
+ def option(number: int, message: str) -> str:
112
+ return f'{termc_C_PRIMARY}[{Style.BRIGHT}{number}{Style.NORMAL}]{Style.RESET_ALL} {message}'
113
+
114
+
115
+ def banner(text: str, color: str = None) -> None:
116
+ if color is None:
117
+ color = termc_C_PRIMARY
118
+ lines = text.splitlines()
119
+ width = max(len(line) for line in lines) + 2
120
+ print(f'{color}╭{"─" * width}╮')
121
+ for line in lines:
122
+ print(f'{color}│ {Style.RESET_ALL}{line.ljust(width - 1)}{color}│')
123
+ print(f'{color}╰{"─" * width}╯{Style.RESET_ALL}')
124
+
125
+
126
+ def separator(length: int = 50, color: str = None) -> None:
127
+ if color is None:
128
+ color = termc_C_MUTED
129
+ print(f'{color}{"─" * length}{Style.RESET_ALL}')
130
+
131
+
132
+ def header() -> None:
133
+ banner(f"{termc_program_name}", color=termc_C_PRIMARY)
134
+ print()
135
+
136
+ def menu(title: str, options: list[str]) -> None:
137
+ numbered = [f"{i}. {option}" for i, option in enumerate(options, start=1)]
138
+ width = max(len(title), max(len(o) for o in numbered)) + 2
139
+
140
+ print(f'{termc_C_PRIMARY}╭{"─" * width}╮{Style.RESET_ALL}')
141
+ print(f'{termc_C_PRIMARY}│{Style.RESET_ALL} {Style.BRIGHT}{title.ljust(width - 1)}{termc_C_PRIMARY}│{Style.RESET_ALL}')
142
+ print(f'{termc_C_PRIMARY}├{"─" * width}┤{Style.RESET_ALL}')
143
+
144
+ for line in numbered:
145
+ print(f'{termc_C_PRIMARY}│{Style.RESET_ALL} {line.ljust(width - 1)}{termc_C_PRIMARY}│{Style.RESET_ALL}')
146
+
147
+ print(f'{termc_C_PRIMARY}╰{"─" * width}╯{Style.RESET_ALL}')
148
+
149
+ def progress_bar(current: int, total: int, width: int = 30) -> None:
150
+ filled = int(width * current / total)
151
+ bar = "█" * filled + "░" * (width - filled)
152
+ pct = int(100 * current / total)
153
+ sys.stdout.write(f'\r{termc_C_PRIMARY}[{bar}] {pct}%{Style.RESET_ALL}')
154
+ sys.stdout.flush()
155
+ if current == total:
156
+ print()
@@ -0,0 +1,97 @@
1
+ Metadata-Version: 2.4
2
+ Name: termc
3
+ Version: 0.1.0
4
+ Summary: A lightweight Python CLI toolkit for building beautiful terminal interfaces
5
+ Author: waasaty
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 waasaty
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/waasaty/termc
29
+ Project-URL: Documentation, https://apt29.gitbook.io/termc
30
+ Project-URL: Source, https://github.com/waasaty/termc
31
+ Keywords: cli,terminal,ui,colors,python,custom
32
+ Classifier: Programming Language :: Python :: 3
33
+ Classifier: License :: OSI Approved :: MIT License
34
+ Classifier: Operating System :: OS Independent
35
+ Requires-Python: >=3.8
36
+ Description-Content-Type: text/markdown
37
+ License-File: LICENSE
38
+ Requires-Dist: colorama
39
+ Dynamic: license-file
40
+
41
+ ![Banner](assets/banner.png)
42
+ <p align="center">
43
+ <img src="https://img.shields.io/badge/version-0.1.0-blue" />
44
+ <img src="https://img.shields.io/badge/license-MIT-green" />
45
+ <img src="https://img.shields.io/badge/PyPI%20status-inactive-red" />
46
+ </p>
47
+ A tiny Python library that makes terminal apps look way cooler with almost no effort.
48
+
49
+ No more boring `print()` spam.
50
+ No more ugly CLI menus.
51
+ Just clean banners, colorful messages, menus, separators, and stylish prompts.
52
+
53
+ ---
54
+
55
+ ## 📦 Installation
56
+
57
+ ```bash
58
+ pip install termc
59
+ ```
60
+
61
+ Or clone the repository:
62
+
63
+ ```bash
64
+ git clone https://github.com/waasaty/termc.git
65
+ ```
66
+ (PyPI support coming soon 🚧)
67
+
68
+ ---
69
+
70
+ ## 📕 Docs
71
+ https://apt29.gitbook.io/termc
72
+
73
+ ---
74
+
75
+ ## 💡 Why termc?
76
+
77
+ Because writing:
78
+
79
+ ```python
80
+ print("[INFO] Application started")
81
+ ```
82
+ for the 500th time gets boring.
83
+
84
+ termc gives your terminal projects a cleaner and more professional look while keeping everything simple.
85
+
86
+ ---
87
+
88
+ ## 🤝 Contributing
89
+
90
+ Found a bug?
91
+ Have an idea?
92
+ Open an issue or submit a pull request.
93
+
94
+ Contributions are always welcome.
95
+
96
+ ---
97
+ Do whatever you want, just don't claim you wrote it ;)
@@ -0,0 +1,7 @@
1
+ termc/__init__.py,sha256=79Ih1151rfcqZdr7F8HSZSTs_iT2SKd1xCkehMsXeXs,19
2
+ termc/core.py,sha256=DAaMIw0p3cU_9JWihV4LktA5pd3BWaC30_dJhJ-ArNI,5144
3
+ termc-0.1.0.dist-info/licenses/LICENSE,sha256=GN9aQ5E342_My5Hzhi5-CuKSKCreff4Qeld6QstvPCk,1085
4
+ termc-0.1.0.dist-info/METADATA,sha256=9NDH0PxMI9zGpJqXPdUb-oM7qXVpSidtGHKVPwtPuEs,3104
5
+ termc-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
6
+ termc-0.1.0.dist-info/top_level.txt,sha256=_jfWU8x5LyajBcHCmRakJprItgmK-nfJXUHq9Uv_l_0,6
7
+ termc-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 waasaty
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ termc