ngpt 3.11.2__tar.gz → 3.12.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.
- {ngpt-3.11.2 → ngpt-3.12.0}/PKG-INFO +1 -1
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/examples/basic.md +19 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/usage/cli_usage.md +35 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/args.py +10 -5
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/main.py +21 -24
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/modes/interactive.py +22 -2
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/utils/cli_config.py +6 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/pyproject.toml +1 -1
- {ngpt-3.11.2 → ngpt-3.12.0}/uv.lock +11 -11
- {ngpt-3.11.2 → ngpt-3.12.0}/.github/banner.svg +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/.github/workflows/aur-publish.yml +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/.github/workflows/python-publish.yml +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/.github/workflows/repo-mirror.yml +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/.gitignore +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/.python-version +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/COMMIT_GUIDELINES.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/CONTRIBUTING.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/LICENSE +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/PKGBUILD +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/README.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/CONTRIBUTING.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/LICENSE.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/_config.yml +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/_sass/custom/custom.scss +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/configuration.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/examples/advanced.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/examples/role_gallery.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/examples/specialized_tools.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/examples.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/index.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/installation.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/overview.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/usage/cli_config.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/usage/gitcommsg.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/usage/roles.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/usage/web_search.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/docs/usage.md +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/__init__.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/__main__.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/__init__.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/config_manager.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/formatters.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/modes/__init__.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/modes/chat.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/modes/code.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/modes/gitcommsg.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/modes/rewrite.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/modes/shell.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/modes/text.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/renderers.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/roles.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/cli/ui.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/client.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/utils/__init__.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/utils/config.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/utils/log.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/utils/pipe.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/ngpt/utils/web_search.py +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/previews/icon.png +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/previews/ngpt-g.png +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/previews/ngpt-i.png +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/previews/ngpt-s-c.png +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/previews/ngpt-sh-c-a.png +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/previews/ngpt-w-self.png +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/previews/ngpt-w.png +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/previews/social-preview.png +0 -0
- {ngpt-3.11.2 → ngpt-3.12.0}/wiki.md +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ngpt
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.12.0
|
4
4
|
Summary: A Swiss army knife for LLMs: A fast, lightweight CLI and interactive chat tool that brings the power of any OpenAI-compatible LLM (OpenAI, Ollama, Groq, Claude, Gemini, etc.) straight to your terminal. rewrite texts or refine code, craft git commit messages, generate and run OS-aware shell commands.
|
5
5
|
Project-URL: Homepage, https://github.com/nazdridoy/ngpt
|
6
6
|
Project-URL: Repository, https://github.com/nazdridoy/ngpt
|
@@ -143,6 +143,25 @@ ngpt --rewrite --humanize "ChatGPT generated this text which is very formal and
|
|
143
143
|
cat ai_content.txt | ngpt --rewrite --humanize
|
144
144
|
```
|
145
145
|
|
146
|
+
### Customized Text Rewriting
|
147
|
+
|
148
|
+
```bash
|
149
|
+
# Rewrite text with a specific style guide
|
150
|
+
ngpt --rewrite --preprompt "You are a technical documentation expert. Follow these guidelines: 1) Use active voice, 2) Keep sentences under 20 words, 3) Use clear headings, 4) Include examples" "The system processes data through multiple stages. First, it validates input. Then it transforms data. Finally, it stores results."
|
151
|
+
|
152
|
+
# Rewrite text for a specific audience
|
153
|
+
ngpt --rewrite --preprompt "You are a teacher explaining complex topics to 8th graders. Use simple language, relatable examples, and avoid jargon" "Quantum entanglement is a physical phenomenon where particles become correlated in such a way that the quantum state of each particle cannot be described independently."
|
154
|
+
|
155
|
+
# Humanize text while maintaining academic tone
|
156
|
+
ngpt --rewrite --humanize --preprompt "You are an academic writer. Maintain scholarly language while making the text sound more natural and less AI-generated" "The implementation of machine learning algorithms in healthcare diagnostics has demonstrated significant improvements in accuracy rates across multiple studies."
|
157
|
+
|
158
|
+
# Humanize text for a specific writing style
|
159
|
+
ngpt --rewrite --humanize --preprompt "You are a creative blogger. Make the text engaging and conversational while preserving the technical accuracy" "Artificial intelligence is revolutionizing the healthcare industry by enhancing diagnostic accuracy and streamlining administrative processes."
|
160
|
+
|
161
|
+
# Rewrite text with specific formatting requirements
|
162
|
+
ngpt --rewrite --preprompt "You are a professional email writer. Format the text as a formal business email with proper greeting and closing" "I want to say that I think your product is good and I like it alot. Can you tell me more about the pricing?"
|
163
|
+
```
|
164
|
+
|
146
165
|
### Interactive Text Rewriting
|
147
166
|
|
148
167
|
```bash
|
@@ -309,6 +309,41 @@ The humanize option helps with:
|
|
309
309
|
- Breaking predictable AI writing structures
|
310
310
|
- Creating content that reads authentically human
|
311
311
|
|
312
|
+
|
313
|
+
#### Customized Text Rewriting
|
314
|
+
|
315
|
+
```bash
|
316
|
+
# Rewrite text with a specific style guide
|
317
|
+
ngpt --rewrite --preprompt "You are a technical documentation expert. Follow these guidelines: 1) Use active voice, 2) Keep sentences under 20 words, 3) Use clear headings, 4) Include examples" "The system processes data through multiple stages. First, it validates input. Then it transforms data. Finally, it stores results."
|
318
|
+
|
319
|
+
# Rewrite text for a specific audience
|
320
|
+
ngpt --rewrite --preprompt "You are a teacher explaining complex topics to 8th graders. Use simple language, relatable examples, and avoid jargon" "Quantum entanglement is a physical phenomenon where particles become correlated in such a way that the quantum state of each particle cannot be described independently."
|
321
|
+
|
322
|
+
# Humanize text while maintaining academic tone
|
323
|
+
ngpt --rewrite --humanize --preprompt "You are an academic writer. Maintain scholarly language while making the text sound more natural and less AI-generated" "The implementation of machine learning algorithms in healthcare diagnostics has demonstrated significant improvements in accuracy rates across multiple studies."
|
324
|
+
|
325
|
+
# Humanize text for a specific writing style
|
326
|
+
ngpt --rewrite --humanize --preprompt "You are a creative blogger. Make the text engaging and conversational while preserving the technical accuracy" "Artificial intelligence is revolutionizing the healthcare industry by enhancing diagnostic accuracy and streamlining administrative processes."
|
327
|
+
|
328
|
+
# Rewrite text with specific formatting requirements
|
329
|
+
ngpt --rewrite --preprompt "You are a professional email writer. Format the text as a formal business email with proper greeting and closing" "I want to say that I think your product is good and I like it alot. Can you tell me more about the pricing?"
|
330
|
+
|
331
|
+
# Rewrite text in a journalistic style
|
332
|
+
ngpt --rewrite --preprompt "You are an investigative journalist. Write in a clear, objective style with a focus on facts and evidence" "The new AI system has shown promising results in early testing, with accuracy rates exceeding 95% in controlled environments."
|
333
|
+
|
334
|
+
# Humanize text while maintaining technical accuracy
|
335
|
+
ngpt --rewrite --humanize --preprompt "You are a senior software engineer explaining complex concepts to junior developers. Use analogies and real-world examples while keeping technical details precise" "The microservices architecture pattern involves breaking down applications into smaller, independent services that communicate through well-defined APIs."
|
336
|
+
|
337
|
+
# Rewrite text in a persuasive style
|
338
|
+
ngpt --rewrite --preprompt "You are a marketing copywriter. Write compelling, persuasive content that highlights benefits and creates urgency" "Our new product offers several features that can help improve productivity and save time."
|
339
|
+
|
340
|
+
# Humanize text for social media
|
341
|
+
ngpt --rewrite --humanize --preprompt "You are a social media influencer. Write engaging, authentic content that resonates with your audience while maintaining credibility" "The latest research shows that regular exercise can significantly improve mental health and cognitive function."
|
342
|
+
|
343
|
+
# Rewrite text for a specific industry
|
344
|
+
ngpt --rewrite --preprompt "You are a healthcare professional writing for medical journals. Use appropriate medical terminology while ensuring clarity for a general medical audience" "The patient presented with symptoms consistent with acute respiratory distress syndrome, including dyspnea and hypoxemia."
|
345
|
+
```
|
346
|
+
|
312
347
|
### Git Commit Message Generation
|
313
348
|
|
314
349
|
Generate conventional, detailed commit messages from git diffs:
|
@@ -119,6 +119,16 @@ def setup_argument_parser():
|
|
119
119
|
gitcommsg_group.add_argument('--max-recursion-depth', type=int, default=3,
|
120
120
|
help='Maximum recursion depth for commit message condensing (default: 3)')
|
121
121
|
|
122
|
+
# Rewrite mode options
|
123
|
+
rewrite_group = parser.add_argument_group('Rewrite Mode Options')
|
124
|
+
rewrite_group.add_argument('--humanize', action='store_true',
|
125
|
+
help='Transform AI-generated text into human-like content that passes AI detection tools')
|
126
|
+
|
127
|
+
# Interactive mode options
|
128
|
+
interactive_group = parser.add_argument_group('Interactive Mode Options')
|
129
|
+
interactive_group.add_argument('--multiline', action='store_true',
|
130
|
+
help='Enable multiline text input with the "ml" command in interactive mode')
|
131
|
+
|
122
132
|
# Mode flags (mutually exclusive)
|
123
133
|
mode_group = parser.add_argument_group('Modes (mutually exclusive)')
|
124
134
|
mode_exclusive_group = mode_group.add_mutually_exclusive_group()
|
@@ -135,11 +145,6 @@ def setup_argument_parser():
|
|
135
145
|
mode_exclusive_group.add_argument('-g', '--gitcommsg', action='store_true',
|
136
146
|
help='Generate AI-powered git commit messages from staged changes or diff file')
|
137
147
|
|
138
|
-
# Rewrite mode options
|
139
|
-
rewrite_group = parser.add_argument_group('Rewrite Mode Options')
|
140
|
-
rewrite_group.add_argument('--humanize', action='store_true',
|
141
|
-
help='Transform AI-generated text into human-like content that passes AI detection tools')
|
142
|
-
|
143
148
|
return parser
|
144
149
|
|
145
150
|
def parse_args():
|
@@ -63,29 +63,25 @@ def show_cli_config_help():
|
|
63
63
|
# Print general options (available in all contexts)
|
64
64
|
print(f" {COLORS['yellow']}General options (all modes):{COLORS['reset']}")
|
65
65
|
for option in sorted(context_groups["all"]):
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
("
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
meta = CLI_CONFIG_OPTIONS[option]
|
86
|
-
default = f"(default: {meta['default']})" if meta['default'] is not None else ""
|
87
|
-
exclusive = f" [exclusive with: {', '.join(meta['exclusive'])}]" if "exclusive" in meta else ""
|
88
|
-
print(f" {COLORS['green']}{option}{COLORS['reset']} - {meta['type']} {default}{exclusive}")
|
66
|
+
print(f" {option}")
|
67
|
+
|
68
|
+
# Print code options
|
69
|
+
if context_groups["code"]:
|
70
|
+
print(f"\n {COLORS['yellow']}Code mode options (-c/--code):{COLORS['reset']}")
|
71
|
+
for option in sorted(context_groups["code"]):
|
72
|
+
print(f" {option}")
|
73
|
+
|
74
|
+
# Print interactive mode options
|
75
|
+
if context_groups["interactive"]:
|
76
|
+
print(f"\n {COLORS['yellow']}Interactive mode options (-i/--interactive):{COLORS['reset']}")
|
77
|
+
for option in sorted(context_groups["interactive"]):
|
78
|
+
print(f" {option}")
|
79
|
+
|
80
|
+
# Print gitcommsg options
|
81
|
+
if context_groups["gitcommsg"]:
|
82
|
+
print(f"\n {COLORS['yellow']}Git commit message options (-g/--gitcommsg):{COLORS['reset']}")
|
83
|
+
for option in sorted(context_groups["gitcommsg"]):
|
84
|
+
print(f" {option}")
|
89
85
|
|
90
86
|
print(f"\n {COLORS['cyan']}Example usage:{COLORS['reset']}")
|
91
87
|
print(f" {COLORS['yellow']}ngpt --cli-config set language java{COLORS['reset']} - Set default language to java for code generation")
|
@@ -543,7 +539,8 @@ def main():
|
|
543
539
|
prettify=args.prettify,
|
544
540
|
renderer=args.renderer,
|
545
541
|
stream_prettify=args.stream_prettify,
|
546
|
-
logger=logger
|
542
|
+
logger=logger,
|
543
|
+
multiline_enabled=args.multiline
|
547
544
|
)
|
548
545
|
elif args.shell:
|
549
546
|
# Apply CLI config for shell mode
|
@@ -6,7 +6,7 @@ import sys
|
|
6
6
|
import time
|
7
7
|
from ..formatters import COLORS
|
8
8
|
from ..renderers import prettify_markdown, prettify_streaming_markdown, TERMINAL_RENDER_LOCK
|
9
|
-
from ..ui import spinner
|
9
|
+
from ..ui import spinner, get_multiline_input
|
10
10
|
from ...utils import enhance_prompt_with_web_search
|
11
11
|
|
12
12
|
# Optional imports for enhanced UI
|
@@ -20,7 +20,7 @@ try:
|
|
20
20
|
except ImportError:
|
21
21
|
HAS_PROMPT_TOOLKIT = False
|
22
22
|
|
23
|
-
def interactive_chat_session(client, web_search=False, no_stream=False, temperature=0.7, top_p=1.0, max_tokens=None, preprompt=None, prettify=False, renderer='auto', stream_prettify=False, logger=None):
|
23
|
+
def interactive_chat_session(client, web_search=False, no_stream=False, temperature=0.7, top_p=1.0, max_tokens=None, preprompt=None, prettify=False, renderer='auto', stream_prettify=False, logger=None, multiline_enabled=False):
|
24
24
|
"""Start an interactive chat session with the AI.
|
25
25
|
|
26
26
|
Args:
|
@@ -35,6 +35,7 @@ def interactive_chat_session(client, web_search=False, no_stream=False, temperat
|
|
35
35
|
renderer: Which markdown renderer to use
|
36
36
|
stream_prettify: Whether to enable streaming with prettify
|
37
37
|
logger: Logger instance for logging the conversation
|
38
|
+
multiline_enabled: Whether to enable the multiline input command
|
38
39
|
"""
|
39
40
|
# Get terminal width for better formatting
|
40
41
|
try:
|
@@ -60,6 +61,9 @@ def interactive_chat_session(client, web_search=False, no_stream=False, temperat
|
|
60
61
|
print(f" {COLORS['yellow']}clear{COLORS['reset']} : Reset conversation")
|
61
62
|
print(f" {COLORS['yellow']}exit{COLORS['reset']} : End session")
|
62
63
|
|
64
|
+
if multiline_enabled:
|
65
|
+
print(f" {COLORS['yellow']}ml{COLORS['reset']} : Open multiline editor")
|
66
|
+
|
63
67
|
print(f"\n{separator}\n")
|
64
68
|
|
65
69
|
# Show logging info if logger is available
|
@@ -184,6 +188,22 @@ def interactive_chat_session(client, web_search=False, no_stream=False, temperat
|
|
184
188
|
if user_input.lower() == 'clear':
|
185
189
|
clear_history()
|
186
190
|
continue
|
191
|
+
|
192
|
+
if multiline_enabled and user_input.lower() == 'ml':
|
193
|
+
print(f"{COLORS['cyan']}Opening multiline editor. Press Ctrl+D to submit.{COLORS['reset']}")
|
194
|
+
multiline_input = get_multiline_input()
|
195
|
+
if multiline_input is None:
|
196
|
+
# Input was cancelled
|
197
|
+
print(f"{COLORS['yellow']}Multiline input cancelled.{COLORS['reset']}")
|
198
|
+
continue
|
199
|
+
elif not multiline_input.strip():
|
200
|
+
print(f"{COLORS['yellow']}Empty message skipped.{COLORS['reset']}")
|
201
|
+
continue
|
202
|
+
else:
|
203
|
+
# Use the multiline input as user_input
|
204
|
+
user_input = multiline_input
|
205
|
+
print(f"{user_header()}")
|
206
|
+
print(f"{COLORS['cyan']}│ {COLORS['reset']}{user_input}")
|
187
207
|
|
188
208
|
# Skip empty messages but don't raise an error
|
189
209
|
if not user_input.strip():
|
@@ -19,6 +19,8 @@ CLI_CONFIG_OPTIONS = {
|
|
19
19
|
"renderer": {"type": "str", "default": "auto", "context": ["all"]},
|
20
20
|
"config-index": {"type": "int", "default": 0, "context": ["all"], "exclusive": ["provider"]},
|
21
21
|
"web-search": {"type": "bool", "default": False, "context": ["all"]},
|
22
|
+
# Interactive mode options
|
23
|
+
"interactive-multiline": {"type": "bool", "default": False, "context": ["interactive"]},
|
22
24
|
# GitCommit message options
|
23
25
|
"rec-chunk": {"type": "bool", "default": False, "context": ["gitcommsg"]},
|
24
26
|
"diff": {"type": "str", "default": None, "context": ["gitcommsg"]},
|
@@ -243,6 +245,10 @@ def apply_cli_config(args: Any, mode: str) -> Any:
|
|
243
245
|
# Convert dashes to underscores for argparse compatibility
|
244
246
|
arg_name = option.replace("-", "_")
|
245
247
|
|
248
|
+
# Special case for interactive-multiline which maps to multiline argument
|
249
|
+
if option == "interactive-multiline":
|
250
|
+
arg_name = "multiline"
|
251
|
+
|
246
252
|
# Skip if explicitly set via command line
|
247
253
|
cli_option = f"--{option}"
|
248
254
|
if cli_option in explicit_args:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "ngpt"
|
3
|
-
version = "3.
|
3
|
+
version = "3.12.0"
|
4
4
|
description = "A Swiss army knife for LLMs: A fast, lightweight CLI and interactive chat tool that brings the power of any OpenAI-compatible LLM (OpenAI, Ollama, Groq, Claude, Gemini, etc.) straight to your terminal. rewrite texts or refine code, craft git commit messages, generate and run OS-aware shell commands."
|
5
5
|
authors = [
|
6
6
|
{name = "nazDridoy", email = "nazdridoy399@gmail.com"},
|
@@ -22,11 +22,11 @@ wheels = [
|
|
22
22
|
|
23
23
|
[[package]]
|
24
24
|
name = "certifi"
|
25
|
-
version = "2025.
|
25
|
+
version = "2025.6.15"
|
26
26
|
source = { registry = "https://pypi.org/simple" }
|
27
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
27
|
+
sdist = { url = "https://files.pythonhosted.org/packages/73/f7/f14b46d4bcd21092d7d3ccef689615220d8a08fb25e564b65d20738e672e/certifi-2025.6.15.tar.gz", hash = "sha256:d747aa5a8b9bbbb1bb8c22bb13e22bd1f18e9796defa16bab421f7f7a317323b", size = 158753, upload-time = "2025-06-15T02:45:51.329Z" }
|
28
28
|
wheels = [
|
29
|
-
{ url = "https://files.pythonhosted.org/packages/
|
29
|
+
{ url = "https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl", hash = "sha256:2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057", size = 157650, upload-time = "2025-06-15T02:45:49.977Z" },
|
30
30
|
]
|
31
31
|
|
32
32
|
[[package]]
|
@@ -148,7 +148,7 @@ wheels = [
|
|
148
148
|
|
149
149
|
[[package]]
|
150
150
|
name = "ngpt"
|
151
|
-
version = "3.
|
151
|
+
version = "3.12.0"
|
152
152
|
source = { editable = "." }
|
153
153
|
dependencies = [
|
154
154
|
{ name = "beautifulsoup4" },
|
@@ -181,11 +181,11 @@ wheels = [
|
|
181
181
|
|
182
182
|
[[package]]
|
183
183
|
name = "pygments"
|
184
|
-
version = "2.19.
|
184
|
+
version = "2.19.2"
|
185
185
|
source = { registry = "https://pypi.org/simple" }
|
186
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
186
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" }
|
187
187
|
wheels = [
|
188
|
-
{ url = "https://files.pythonhosted.org/packages/
|
188
|
+
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
|
189
189
|
]
|
190
190
|
|
191
191
|
[[package]]
|
@@ -203,7 +203,7 @@ dependencies = [
|
|
203
203
|
{ name = "charset-normalizer" },
|
204
204
|
{ name = "idna" },
|
205
205
|
{ name = "urllib3", version = "2.2.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.9'" },
|
206
|
-
{ name = "urllib3", version = "2.
|
206
|
+
{ name = "urllib3", version = "2.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.9'" },
|
207
207
|
]
|
208
208
|
sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" }
|
209
209
|
wheels = [
|
@@ -272,14 +272,14 @@ wheels = [
|
|
272
272
|
|
273
273
|
[[package]]
|
274
274
|
name = "urllib3"
|
275
|
-
version = "2.
|
275
|
+
version = "2.5.0"
|
276
276
|
source = { registry = "https://pypi.org/simple" }
|
277
277
|
resolution-markers = [
|
278
278
|
"python_full_version >= '3.9'",
|
279
279
|
]
|
280
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
280
|
+
sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" }
|
281
281
|
wheels = [
|
282
|
-
{ url = "https://files.pythonhosted.org/packages/
|
282
|
+
{ url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" },
|
283
283
|
]
|
284
284
|
|
285
285
|
[[package]]
|
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
|