claude-status 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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mallikarjuna
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,185 @@
1
+ Metadata-Version: 2.4
2
+ Name: claude-status
3
+ Version: 0.1.0
4
+ Summary: Beautiful, informative status line for Claude Code — zero dependencies, cross-platform
5
+ Author: Mallikarjuna
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/mkalkere/claude-statusline
8
+ Project-URL: Repository, https://github.com/mkalkere/claude-statusline
9
+ Project-URL: Issues, https://github.com/mkalkere/claude-statusline/issues
10
+ Keywords: claude-code,claude,statusline,status-bar,cli,terminal,developer-tools,anthropic,claude-status
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: OS Independent
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: Programming Language :: Python :: 3.14
23
+ Classifier: Topic :: Software Development :: User Interfaces
24
+ Classifier: Topic :: Terminals
25
+ Requires-Python: >=3.8
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Dynamic: license-file
29
+
30
+ # claude-status
31
+
32
+ **Beautiful, informative status line for Claude Code — zero dependencies, cross-platform.**
33
+
34
+ [![PyPI version](https://img.shields.io/pypi/v/claude-status)](https://pypi.org/project/claude-status/)
35
+ [![Python versions](https://img.shields.io/pypi/pyversions/claude-status)](https://pypi.org/project/claude-status/)
36
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
37
+ [![CI](https://github.com/mkalkere/claude-statusline/actions/workflows/ci.yml/badge.svg)](https://github.com/mkalkere/claude-statusline/actions)
38
+
39
+ ```
40
+ [████████░░░░░░░░░░░░] in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
41
+ ```
42
+
43
+ ## Why claude-status?
44
+
45
+ - **Zero dependencies** — pure Python stdlib, installs in seconds
46
+ - **Cross-platform** — Windows, macOS, Linux — tested on all three
47
+ - **pip install** — no npm, no cargo, no compilation
48
+
49
+ ## Quick Start
50
+
51
+ ```bash
52
+ pip install claude-status
53
+ claude-status --install
54
+ ```
55
+
56
+ Restart Claude Code. Done.
57
+
58
+ ## Installation
59
+
60
+ ### pip (recommended)
61
+ ```bash
62
+ pip install claude-status
63
+ claude-status --install
64
+ ```
65
+
66
+ ### pipx (isolated)
67
+ ```bash
68
+ pipx install claude-status
69
+ claude-status --install
70
+ ```
71
+
72
+ ### uvx (fast)
73
+ ```bash
74
+ uvx claude-status --install
75
+ ```
76
+
77
+ ### From source
78
+ ```bash
79
+ git clone https://github.com/mkalkere/claude-statusline.git
80
+ cd claude-status
81
+ pip install -e .
82
+ claude-status --install
83
+ ```
84
+
85
+ ### What `--install` does
86
+
87
+ Adds `statusLine` to `~/.claude/settings.json` — preserves all existing settings.
88
+ Use `--theme` to pick a theme: `claude-status --install --theme powerline`
89
+
90
+ > **Command not found?** Make sure your Python scripts directory is in PATH.
91
+ > Fallback: `python -m claude_statusline --install`
92
+
93
+ ## Features
94
+
95
+ | Feature | Description |
96
+ |---------|-------------|
97
+ | Context bar | 20-char progress bar, green/yellow/red adaptive |
98
+ | Token counts | Input/output with human-readable formatting (245K, 1.2M) |
99
+ | Cache efficiency | % of tokens served from prompt cache |
100
+ | Cost tracking | Session cost in USD |
101
+ | Burn rate | Tokens/min consumption rate |
102
+ | Session duration | Wall-clock time |
103
+ | Lines changed | +added / -removed with git-diff colors |
104
+ | Git branch | Color-coded (green=main, yellow=feature) |
105
+ | Context size | (200K) vs (1M) indicator |
106
+ | !CTX warning | Red alert when exceeding 200K tokens |
107
+ | Vim mode | NORMAL/INSERT indicator |
108
+ | Agent name | Shows active subagent |
109
+ | Worktree | Branch indicator when in worktree |
110
+
111
+ ## Themes
112
+
113
+ ### default
114
+ ```
115
+ [████████░░░░░░░░░░░░] │ in:245K out:18K │ cache:78% │ $0.73 │ burn:2.1K/min │ 12m05s │ +247 -38 │ ⎇ feat/statusline │ (200K)
116
+ ```
117
+
118
+ ### minimal
119
+ ```
120
+ ●●●●●●●●·············· 245K $0.73 12m05s ⎇ feat/statusline
121
+ ```
122
+
123
+ ### powerline
124
+ ```
125
+ ████████░░░░░░░░░░░░ in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
126
+ ```
127
+
128
+ Preview all themes: `claude-status --demo`
129
+
130
+ ## CLI Reference
131
+
132
+ | Command | Description |
133
+ |---------|-------------|
134
+ | `claude-status --install` | Auto-configure Claude Code |
135
+ | `claude-status --install --theme powerline` | Install with specific theme |
136
+ | `claude-status --demo` | Preview all themes with sample data |
137
+ | `claude-status --doctor` | Diagnostics: Python, OS, terminal, settings |
138
+ | `claude-status --version` | Version info |
139
+ | `claude-status --help` | Usage |
140
+
141
+ ## Manual Configuration
142
+
143
+ If you prefer manual setup, add to `~/.claude/settings.json`:
144
+
145
+ ```json
146
+ {
147
+ "statusLine": "claude-status"
148
+ }
149
+ ```
150
+
151
+ Or with a theme:
152
+
153
+ ```json
154
+ {
155
+ "statusLine": "claude-status --theme minimal"
156
+ }
157
+ ```
158
+
159
+ ## Comparison
160
+
161
+ | Feature | claude-status | ccstatusline | claude-powerline |
162
+ |---------|:-:|:-:|:-:|
163
+ | Language | Python | Node.js | Bash |
164
+ | Dependencies | 0 | npm | bash-only |
165
+ | pip install | Yes | No | No |
166
+ | Cross-platform | Yes | Partial | Unix only |
167
+ | Themes | 3 | 1 | 1 |
168
+ | Burn rate | Yes | No | No |
169
+ | Auto-install | Yes | Manual | Manual |
170
+
171
+ ## Uninstall
172
+
173
+ ```bash
174
+ pip uninstall claude-status
175
+ ```
176
+
177
+ Then remove `"statusLine"` from `~/.claude/settings.json`.
178
+
179
+ ## Contributing
180
+
181
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
182
+
183
+ ## License
184
+
185
+ [MIT](LICENSE)
@@ -0,0 +1,156 @@
1
+ # claude-status
2
+
3
+ **Beautiful, informative status line for Claude Code — zero dependencies, cross-platform.**
4
+
5
+ [![PyPI version](https://img.shields.io/pypi/v/claude-status)](https://pypi.org/project/claude-status/)
6
+ [![Python versions](https://img.shields.io/pypi/pyversions/claude-status)](https://pypi.org/project/claude-status/)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
8
+ [![CI](https://github.com/mkalkere/claude-statusline/actions/workflows/ci.yml/badge.svg)](https://github.com/mkalkere/claude-statusline/actions)
9
+
10
+ ```
11
+ [████████░░░░░░░░░░░░] in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
12
+ ```
13
+
14
+ ## Why claude-status?
15
+
16
+ - **Zero dependencies** — pure Python stdlib, installs in seconds
17
+ - **Cross-platform** — Windows, macOS, Linux — tested on all three
18
+ - **pip install** — no npm, no cargo, no compilation
19
+
20
+ ## Quick Start
21
+
22
+ ```bash
23
+ pip install claude-status
24
+ claude-status --install
25
+ ```
26
+
27
+ Restart Claude Code. Done.
28
+
29
+ ## Installation
30
+
31
+ ### pip (recommended)
32
+ ```bash
33
+ pip install claude-status
34
+ claude-status --install
35
+ ```
36
+
37
+ ### pipx (isolated)
38
+ ```bash
39
+ pipx install claude-status
40
+ claude-status --install
41
+ ```
42
+
43
+ ### uvx (fast)
44
+ ```bash
45
+ uvx claude-status --install
46
+ ```
47
+
48
+ ### From source
49
+ ```bash
50
+ git clone https://github.com/mkalkere/claude-statusline.git
51
+ cd claude-status
52
+ pip install -e .
53
+ claude-status --install
54
+ ```
55
+
56
+ ### What `--install` does
57
+
58
+ Adds `statusLine` to `~/.claude/settings.json` — preserves all existing settings.
59
+ Use `--theme` to pick a theme: `claude-status --install --theme powerline`
60
+
61
+ > **Command not found?** Make sure your Python scripts directory is in PATH.
62
+ > Fallback: `python -m claude_statusline --install`
63
+
64
+ ## Features
65
+
66
+ | Feature | Description |
67
+ |---------|-------------|
68
+ | Context bar | 20-char progress bar, green/yellow/red adaptive |
69
+ | Token counts | Input/output with human-readable formatting (245K, 1.2M) |
70
+ | Cache efficiency | % of tokens served from prompt cache |
71
+ | Cost tracking | Session cost in USD |
72
+ | Burn rate | Tokens/min consumption rate |
73
+ | Session duration | Wall-clock time |
74
+ | Lines changed | +added / -removed with git-diff colors |
75
+ | Git branch | Color-coded (green=main, yellow=feature) |
76
+ | Context size | (200K) vs (1M) indicator |
77
+ | !CTX warning | Red alert when exceeding 200K tokens |
78
+ | Vim mode | NORMAL/INSERT indicator |
79
+ | Agent name | Shows active subagent |
80
+ | Worktree | Branch indicator when in worktree |
81
+
82
+ ## Themes
83
+
84
+ ### default
85
+ ```
86
+ [████████░░░░░░░░░░░░] │ in:245K out:18K │ cache:78% │ $0.73 │ burn:2.1K/min │ 12m05s │ +247 -38 │ ⎇ feat/statusline │ (200K)
87
+ ```
88
+
89
+ ### minimal
90
+ ```
91
+ ●●●●●●●●·············· 245K $0.73 12m05s ⎇ feat/statusline
92
+ ```
93
+
94
+ ### powerline
95
+ ```
96
+ ████████░░░░░░░░░░░░ in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
97
+ ```
98
+
99
+ Preview all themes: `claude-status --demo`
100
+
101
+ ## CLI Reference
102
+
103
+ | Command | Description |
104
+ |---------|-------------|
105
+ | `claude-status --install` | Auto-configure Claude Code |
106
+ | `claude-status --install --theme powerline` | Install with specific theme |
107
+ | `claude-status --demo` | Preview all themes with sample data |
108
+ | `claude-status --doctor` | Diagnostics: Python, OS, terminal, settings |
109
+ | `claude-status --version` | Version info |
110
+ | `claude-status --help` | Usage |
111
+
112
+ ## Manual Configuration
113
+
114
+ If you prefer manual setup, add to `~/.claude/settings.json`:
115
+
116
+ ```json
117
+ {
118
+ "statusLine": "claude-status"
119
+ }
120
+ ```
121
+
122
+ Or with a theme:
123
+
124
+ ```json
125
+ {
126
+ "statusLine": "claude-status --theme minimal"
127
+ }
128
+ ```
129
+
130
+ ## Comparison
131
+
132
+ | Feature | claude-status | ccstatusline | claude-powerline |
133
+ |---------|:-:|:-:|:-:|
134
+ | Language | Python | Node.js | Bash |
135
+ | Dependencies | 0 | npm | bash-only |
136
+ | pip install | Yes | No | No |
137
+ | Cross-platform | Yes | Partial | Unix only |
138
+ | Themes | 3 | 1 | 1 |
139
+ | Burn rate | Yes | No | No |
140
+ | Auto-install | Yes | Manual | Manual |
141
+
142
+ ## Uninstall
143
+
144
+ ```bash
145
+ pip uninstall claude-status
146
+ ```
147
+
148
+ Then remove `"statusLine"` from `~/.claude/settings.json`.
149
+
150
+ ## Contributing
151
+
152
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
153
+
154
+ ## License
155
+
156
+ [MIT](LICENSE)
@@ -0,0 +1,185 @@
1
+ Metadata-Version: 2.4
2
+ Name: claude-status
3
+ Version: 0.1.0
4
+ Summary: Beautiful, informative status line for Claude Code — zero dependencies, cross-platform
5
+ Author: Mallikarjuna
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/mkalkere/claude-statusline
8
+ Project-URL: Repository, https://github.com/mkalkere/claude-statusline
9
+ Project-URL: Issues, https://github.com/mkalkere/claude-statusline/issues
10
+ Keywords: claude-code,claude,statusline,status-bar,cli,terminal,developer-tools,anthropic,claude-status
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: OS Independent
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: Programming Language :: Python :: 3.14
23
+ Classifier: Topic :: Software Development :: User Interfaces
24
+ Classifier: Topic :: Terminals
25
+ Requires-Python: >=3.8
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Dynamic: license-file
29
+
30
+ # claude-status
31
+
32
+ **Beautiful, informative status line for Claude Code — zero dependencies, cross-platform.**
33
+
34
+ [![PyPI version](https://img.shields.io/pypi/v/claude-status)](https://pypi.org/project/claude-status/)
35
+ [![Python versions](https://img.shields.io/pypi/pyversions/claude-status)](https://pypi.org/project/claude-status/)
36
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
37
+ [![CI](https://github.com/mkalkere/claude-statusline/actions/workflows/ci.yml/badge.svg)](https://github.com/mkalkere/claude-statusline/actions)
38
+
39
+ ```
40
+ [████████░░░░░░░░░░░░] in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
41
+ ```
42
+
43
+ ## Why claude-status?
44
+
45
+ - **Zero dependencies** — pure Python stdlib, installs in seconds
46
+ - **Cross-platform** — Windows, macOS, Linux — tested on all three
47
+ - **pip install** — no npm, no cargo, no compilation
48
+
49
+ ## Quick Start
50
+
51
+ ```bash
52
+ pip install claude-status
53
+ claude-status --install
54
+ ```
55
+
56
+ Restart Claude Code. Done.
57
+
58
+ ## Installation
59
+
60
+ ### pip (recommended)
61
+ ```bash
62
+ pip install claude-status
63
+ claude-status --install
64
+ ```
65
+
66
+ ### pipx (isolated)
67
+ ```bash
68
+ pipx install claude-status
69
+ claude-status --install
70
+ ```
71
+
72
+ ### uvx (fast)
73
+ ```bash
74
+ uvx claude-status --install
75
+ ```
76
+
77
+ ### From source
78
+ ```bash
79
+ git clone https://github.com/mkalkere/claude-statusline.git
80
+ cd claude-status
81
+ pip install -e .
82
+ claude-status --install
83
+ ```
84
+
85
+ ### What `--install` does
86
+
87
+ Adds `statusLine` to `~/.claude/settings.json` — preserves all existing settings.
88
+ Use `--theme` to pick a theme: `claude-status --install --theme powerline`
89
+
90
+ > **Command not found?** Make sure your Python scripts directory is in PATH.
91
+ > Fallback: `python -m claude_statusline --install`
92
+
93
+ ## Features
94
+
95
+ | Feature | Description |
96
+ |---------|-------------|
97
+ | Context bar | 20-char progress bar, green/yellow/red adaptive |
98
+ | Token counts | Input/output with human-readable formatting (245K, 1.2M) |
99
+ | Cache efficiency | % of tokens served from prompt cache |
100
+ | Cost tracking | Session cost in USD |
101
+ | Burn rate | Tokens/min consumption rate |
102
+ | Session duration | Wall-clock time |
103
+ | Lines changed | +added / -removed with git-diff colors |
104
+ | Git branch | Color-coded (green=main, yellow=feature) |
105
+ | Context size | (200K) vs (1M) indicator |
106
+ | !CTX warning | Red alert when exceeding 200K tokens |
107
+ | Vim mode | NORMAL/INSERT indicator |
108
+ | Agent name | Shows active subagent |
109
+ | Worktree | Branch indicator when in worktree |
110
+
111
+ ## Themes
112
+
113
+ ### default
114
+ ```
115
+ [████████░░░░░░░░░░░░] │ in:245K out:18K │ cache:78% │ $0.73 │ burn:2.1K/min │ 12m05s │ +247 -38 │ ⎇ feat/statusline │ (200K)
116
+ ```
117
+
118
+ ### minimal
119
+ ```
120
+ ●●●●●●●●·············· 245K $0.73 12m05s ⎇ feat/statusline
121
+ ```
122
+
123
+ ### powerline
124
+ ```
125
+ ████████░░░░░░░░░░░░ in:245K out:18K cache:78% $0.73 burn:2.1K/min 12m05s +247 -38 ⎇ feat/statusline (200K)
126
+ ```
127
+
128
+ Preview all themes: `claude-status --demo`
129
+
130
+ ## CLI Reference
131
+
132
+ | Command | Description |
133
+ |---------|-------------|
134
+ | `claude-status --install` | Auto-configure Claude Code |
135
+ | `claude-status --install --theme powerline` | Install with specific theme |
136
+ | `claude-status --demo` | Preview all themes with sample data |
137
+ | `claude-status --doctor` | Diagnostics: Python, OS, terminal, settings |
138
+ | `claude-status --version` | Version info |
139
+ | `claude-status --help` | Usage |
140
+
141
+ ## Manual Configuration
142
+
143
+ If you prefer manual setup, add to `~/.claude/settings.json`:
144
+
145
+ ```json
146
+ {
147
+ "statusLine": "claude-status"
148
+ }
149
+ ```
150
+
151
+ Or with a theme:
152
+
153
+ ```json
154
+ {
155
+ "statusLine": "claude-status --theme minimal"
156
+ }
157
+ ```
158
+
159
+ ## Comparison
160
+
161
+ | Feature | claude-status | ccstatusline | claude-powerline |
162
+ |---------|:-:|:-:|:-:|
163
+ | Language | Python | Node.js | Bash |
164
+ | Dependencies | 0 | npm | bash-only |
165
+ | pip install | Yes | No | No |
166
+ | Cross-platform | Yes | Partial | Unix only |
167
+ | Themes | 3 | 1 | 1 |
168
+ | Burn rate | Yes | No | No |
169
+ | Auto-install | Yes | Manual | Manual |
170
+
171
+ ## Uninstall
172
+
173
+ ```bash
174
+ pip uninstall claude-status
175
+ ```
176
+
177
+ Then remove `"statusLine"` from `~/.claude/settings.json`.
178
+
179
+ ## Contributing
180
+
181
+ See [CONTRIBUTING.md](CONTRIBUTING.md).
182
+
183
+ ## License
184
+
185
+ [MIT](LICENSE)
@@ -0,0 +1,17 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ claude_status.egg-info/PKG-INFO
5
+ claude_status.egg-info/SOURCES.txt
6
+ claude_status.egg-info/dependency_links.txt
7
+ claude_status.egg-info/entry_points.txt
8
+ claude_status.egg-info/top_level.txt
9
+ claude_statusline/__init__.py
10
+ claude_statusline/__main__.py
11
+ claude_statusline/bar.py
12
+ claude_statusline/cli.py
13
+ claude_statusline/colors.py
14
+ claude_statusline/formatters.py
15
+ claude_statusline/git.py
16
+ claude_statusline/themes.py
17
+ tests/test_all.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ claude-status = claude_statusline.cli:main
@@ -0,0 +1 @@
1
+ claude_statusline
@@ -0,0 +1,3 @@
1
+ """claude-status: Beautiful status line for Claude Code."""
2
+
3
+ __version__ = "0.1.0"
@@ -0,0 +1,5 @@
1
+ """Allow running as python -m claude_statusline."""
2
+
3
+ from .cli import main
4
+
5
+ main()
@@ -0,0 +1,56 @@
1
+ """Progress bar rendering with adaptive colors."""
2
+
3
+ from . import colors
4
+
5
+
6
+ def _bar_color(pct):
7
+ """Return color code based on context usage percentage.
8
+
9
+ Green: 0-60% (comfortable)
10
+ Yellow: 61-85% (caution)
11
+ Red: 86-100% (danger)
12
+ """
13
+ if pct <= 60:
14
+ return colors.GREEN
15
+ if pct <= 85:
16
+ return colors.YELLOW
17
+ return colors.RED
18
+
19
+
20
+ def render_bar(pct, width=20, theme=None):
21
+ """Render a progress bar with adaptive coloring.
22
+
23
+ Args:
24
+ pct: Percentage (0-100) of context used.
25
+ width: Character width of the bar.
26
+ theme: Optional theme dict with 'bar_filled' and 'bar_empty' chars.
27
+
28
+ Returns:
29
+ Colored string like [████████░░░░░░░░░░░░]
30
+ """
31
+ if pct is None:
32
+ return ""
33
+ pct = max(0, min(100, int(pct)))
34
+
35
+ filled_char = "█"
36
+ empty_char = "░"
37
+ left_bracket = "["
38
+ right_bracket = "]"
39
+
40
+ if theme:
41
+ filled_char = theme.get("bar_filled", filled_char)
42
+ empty_char = theme.get("bar_empty", empty_char)
43
+ left_bracket = theme.get("bar_left", left_bracket)
44
+ right_bracket = theme.get("bar_right", right_bracket)
45
+
46
+ filled = int(width * pct / 100)
47
+ empty = width - filled
48
+ color = _bar_color(pct)
49
+
50
+ bar_content = colors.colorize(
51
+ filled_char * filled, color
52
+ ) + colors.colorize(
53
+ empty_char * empty, colors.BRIGHT_BLACK
54
+ )
55
+
56
+ return "{}{}{}".format(left_bracket, bar_content, right_bracket)