ngpt 2.11.2__py3-none-any.whl → 2.11.4__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.
- ngpt/cli/args.py +44 -29
- ngpt/cli/config_manager.py +0 -1
- ngpt/cli/interactive.py +0 -3
- ngpt/cli/main.py +3 -3
- ngpt/cli/modes/chat.py +0 -1
- ngpt/cli/modes/code.py +0 -1
- ngpt/cli/modes/shell.py +0 -1
- ngpt/cli/modes/text.py +0 -1
- ngpt/cli/renderers.py +0 -1
- ngpt/cli/ui.py +0 -1
- ngpt/client.py +1 -1
- ngpt/utils/cli_config.py +7 -3
- ngpt/utils/log.py +0 -1
- {ngpt-2.11.2.dist-info → ngpt-2.11.4.dist-info}/METADATA +3 -3
- ngpt-2.11.4.dist-info/RECORD +25 -0
- ngpt-2.11.2.dist-info/RECORD +0 -25
- {ngpt-2.11.2.dist-info → ngpt-2.11.4.dist-info}/WHEEL +0 -0
- {ngpt-2.11.2.dist-info → ngpt-2.11.4.dist-info}/entry_points.txt +0 -0
- {ngpt-2.11.2.dist-info → ngpt-2.11.4.dist-info}/licenses/LICENSE +0 -0
ngpt/cli/args.py
CHANGED
@@ -28,28 +28,47 @@ def setup_argument_parser():
|
|
28
28
|
parser.exit()
|
29
29
|
|
30
30
|
# Version flag
|
31
|
-
parser.add_argument('-v', '--version', action=ColoredVersionAction, nargs=0,
|
31
|
+
parser.add_argument('-v', '--version', action=ColoredVersionAction, nargs=0,
|
32
|
+
help='Show version information and exit')
|
33
|
+
# Language option for code mode
|
34
|
+
parser.add_argument('--language', default="python",
|
35
|
+
help='Programming language to generate code in (for code mode)')
|
32
36
|
|
37
|
+
# Prompt argument
|
38
|
+
parser.add_argument('prompt', nargs='?', default=None,
|
39
|
+
help='The prompt to send')
|
40
|
+
|
33
41
|
# Config options
|
34
42
|
config_group = parser.add_argument_group('Configuration Options')
|
35
|
-
config_group.add_argument('--config', nargs='?', const=True,
|
36
|
-
|
37
|
-
config_group.add_argument('--
|
38
|
-
|
39
|
-
config_group.add_argument('--
|
40
|
-
|
41
|
-
config_group.add_argument('--
|
42
|
-
|
43
|
-
|
43
|
+
config_group.add_argument('--config', nargs='?', const=True,
|
44
|
+
help='Path to a custom config file or, if no value provided, enter interactive configuration mode to create a new config')
|
45
|
+
config_group.add_argument('--config-index', type=int, default=0,
|
46
|
+
help='Index of the configuration to use or edit (default: 0)')
|
47
|
+
config_group.add_argument('--provider',
|
48
|
+
help='Provider name to identify the configuration to use')
|
49
|
+
config_group.add_argument('--remove', action='store_true',
|
50
|
+
help='Remove the configuration at the specified index (requires --config and --config-index or --provider)')
|
51
|
+
config_group.add_argument('--show-config', action='store_true',
|
52
|
+
help='Show the current configuration(s) and exit')
|
53
|
+
config_group.add_argument('--all', action='store_true',
|
54
|
+
help='Show details for all configurations (requires --show-config)')
|
55
|
+
config_group.add_argument('--list-models', action='store_true',
|
56
|
+
help='List all available models for the current configuration and exit')
|
57
|
+
config_group.add_argument('--list-renderers', action='store_true',
|
58
|
+
help='Show available markdown renderers for use with --prettify')
|
59
|
+
config_group.add_argument('--cli-config', nargs='*', metavar='COMMAND',
|
60
|
+
help='Manage CLI configuration (set, get, unset, list, help)')
|
61
|
+
|
44
62
|
# Global options
|
45
63
|
global_group = parser.add_argument_group('Global Options')
|
46
|
-
global_group.add_argument('--api-key',
|
47
|
-
|
48
|
-
global_group.add_argument('--
|
64
|
+
global_group.add_argument('--api-key',
|
65
|
+
help='API key for the service')
|
66
|
+
global_group.add_argument('--base-url',
|
67
|
+
help='Base URL for the API')
|
68
|
+
global_group.add_argument('--model',
|
69
|
+
help='Model to use')
|
49
70
|
global_group.add_argument('--web-search', action='store_true',
|
50
71
|
help='Enable web search capability (Note: Your API endpoint must support this feature)')
|
51
|
-
global_group.add_argument('-n', '--no-stream', action='store_true',
|
52
|
-
help='Return the whole response without streaming')
|
53
72
|
global_group.add_argument('--temperature', type=float, default=0.7,
|
54
73
|
help='Set temperature (controls randomness, default: 0.7)')
|
55
74
|
global_group.add_argument('--top_p', type=float, default=1.0,
|
@@ -60,6 +79,8 @@ def setup_argument_parser():
|
|
60
79
|
help='Set filepath to log conversation to, or create a temporary log file if no path provided')
|
61
80
|
global_group.add_argument('--preprompt',
|
62
81
|
help='Set custom system prompt to control AI behavior')
|
82
|
+
global_group.add_argument('--no-stream', action='store_true',
|
83
|
+
help='Return the whole response without streaming')
|
63
84
|
global_group.add_argument('--prettify', action='store_const', const='auto',
|
64
85
|
help='Render markdown responses and code with syntax highlighting and formatting')
|
65
86
|
global_group.add_argument('--stream-prettify', action='store_true',
|
@@ -70,22 +91,16 @@ def setup_argument_parser():
|
|
70
91
|
# Mode flags (mutually exclusive)
|
71
92
|
mode_group = parser.add_argument_group('Modes (mutually exclusive)')
|
72
93
|
mode_exclusive_group = mode_group.add_mutually_exclusive_group()
|
73
|
-
mode_exclusive_group.add_argument('-i', '--interactive', action='store_true',
|
74
|
-
|
75
|
-
mode_exclusive_group.add_argument('-
|
76
|
-
|
94
|
+
mode_exclusive_group.add_argument('-i', '--interactive', action='store_true',
|
95
|
+
help='Start an interactive chat session')
|
96
|
+
mode_exclusive_group.add_argument('-s', '--shell', action='store_true',
|
97
|
+
help='Generate and execute shell commands')
|
98
|
+
mode_exclusive_group.add_argument('-c', '--code', action='store_true',
|
99
|
+
help='Generate code')
|
100
|
+
mode_exclusive_group.add_argument('-t', '--text', action='store_true',
|
101
|
+
help='Enter multi-line text input (submit with Ctrl+D)')
|
77
102
|
# Note: --show-config is handled separately and implicitly acts as a mode
|
78
103
|
|
79
|
-
# Language option for code mode
|
80
|
-
parser.add_argument('--language', default="python", help='Programming language to generate code in (for code mode)')
|
81
|
-
|
82
|
-
# Prompt argument
|
83
|
-
parser.add_argument('prompt', nargs='?', default=None, help='The prompt to send')
|
84
|
-
|
85
|
-
# Add CLI configuration command
|
86
|
-
config_group.add_argument('--cli-config', nargs='*', metavar='COMMAND',
|
87
|
-
help='Manage CLI configuration (set, get, unset, list)')
|
88
|
-
|
89
104
|
return parser
|
90
105
|
|
91
106
|
def parse_args():
|
ngpt/cli/config_manager.py
CHANGED
ngpt/cli/interactive.py
CHANGED
@@ -1,11 +1,8 @@
|
|
1
|
-
import sys
|
2
1
|
import os
|
3
2
|
import shutil
|
4
|
-
import datetime
|
5
3
|
import traceback
|
6
4
|
from .formatters import COLORS
|
7
5
|
from .renderers import prettify_markdown, prettify_streaming_markdown
|
8
|
-
from ..utils.log import create_logger
|
9
6
|
|
10
7
|
# Optional imports for enhanced UI
|
11
8
|
try:
|
ngpt/cli/main.py
CHANGED
@@ -15,9 +15,9 @@ from ..utils.cli_config import (
|
|
15
15
|
from ..utils.log import create_logger
|
16
16
|
from .. import __version__
|
17
17
|
|
18
|
-
from .formatters import COLORS
|
19
|
-
from .renderers import
|
20
|
-
from .config_manager import
|
18
|
+
from .formatters import COLORS
|
19
|
+
from .renderers import show_available_renderers
|
20
|
+
from .config_manager import check_config
|
21
21
|
from .interactive import interactive_chat_session
|
22
22
|
from .modes.chat import chat_mode
|
23
23
|
from .modes.code import code_mode
|
ngpt/cli/modes/chat.py
CHANGED
ngpt/cli/modes/code.py
CHANGED
ngpt/cli/modes/shell.py
CHANGED
ngpt/cli/modes/text.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
from ..formatters import COLORS
|
2
2
|
from ..renderers import prettify_markdown, prettify_streaming_markdown
|
3
3
|
from ..ui import get_multiline_input
|
4
|
-
from ...utils.log import create_logger
|
5
4
|
|
6
5
|
def text_mode(client, args, logger=None):
|
7
6
|
"""Handle the multi-line text input mode.
|
ngpt/cli/renderers.py
CHANGED
ngpt/cli/ui.py
CHANGED
ngpt/client.py
CHANGED
ngpt/utils/cli_config.py
CHANGED
@@ -2,7 +2,7 @@ import os
|
|
2
2
|
import sys
|
3
3
|
import json
|
4
4
|
from pathlib import Path
|
5
|
-
from typing import Dict,
|
5
|
+
from typing import Dict, Any, List, Union, Tuple
|
6
6
|
|
7
7
|
# CLI config options with their types and default values
|
8
8
|
CLI_CONFIG_OPTIONS = {
|
@@ -206,8 +206,12 @@ def apply_cli_config(args: Any, mode: str) -> Any:
|
|
206
206
|
# Load CLI config
|
207
207
|
cli_config = load_cli_config()
|
208
208
|
|
209
|
-
# Get command-line arguments provided by the user
|
210
|
-
explicit_args = set(
|
209
|
+
# Get command-line arguments provided by the user (both long and short forms)
|
210
|
+
explicit_args = set()
|
211
|
+
for arg in sys.argv[1:]:
|
212
|
+
if arg.startswith('--'):
|
213
|
+
explicit_args.add(arg)
|
214
|
+
# We've removed -n, but this pattern would handle other short options
|
211
215
|
|
212
216
|
# Keep track of applied exclusive options
|
213
217
|
applied_exclusives = set()
|
ngpt/utils/log.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ngpt
|
3
|
-
Version: 2.11.
|
3
|
+
Version: 2.11.4
|
4
4
|
Summary: A lightweight Python CLI and library for interacting with OpenAI-compatible APIs, supporting both official and self-hosted LLM endpoints.
|
5
5
|
Project-URL: Homepage, https://github.com/nazdridoy/ngpt
|
6
6
|
Project-URL: Repository, https://github.com/nazdridoy/ngpt
|
@@ -83,7 +83,7 @@ ngpt "Tell me about quantum computing"
|
|
83
83
|
ngpt -i
|
84
84
|
|
85
85
|
# Return response without streaming
|
86
|
-
ngpt -
|
86
|
+
ngpt --no-stream "Tell me about quantum computing"
|
87
87
|
|
88
88
|
# Generate code
|
89
89
|
ngpt --code "function to calculate the Fibonacci sequence"
|
@@ -349,7 +349,7 @@ You can configure the client using the following options:
|
|
349
349
|
| `--model` | Model to use |
|
350
350
|
| `--list-models` | List all available models for the selected configuration (can be combined with --config-index) |
|
351
351
|
| `--web-search` | Enable web search capability |
|
352
|
-
|
|
352
|
+
| `--no-stream` | Return the whole response without streaming |
|
353
353
|
| `--temperature` | Set temperature (controls randomness, default: 0.7) |
|
354
354
|
| `--top_p` | Set top_p (controls diversity, default: 1.0) |
|
355
355
|
| `--max_tokens` | Set maximum response length in tokens |
|
@@ -0,0 +1,25 @@
|
|
1
|
+
ngpt/__init__.py,sha256=kpKhViLakwMdHZkuLht2vWcjt0uD_5gR33gvMhfXr6w,664
|
2
|
+
ngpt/cli.py,sha256=j3eFYPOtCCFBOGh7NK5IWEnADnTMMSEB9GLyIDoW724,66
|
3
|
+
ngpt/client.py,sha256=rLgDPmJe8_yi13-XUiHJ45z54rJVrupxWmeb-fQZGF4,15129
|
4
|
+
ngpt/cli/__init__.py,sha256=hebbDSMGiOd43YNnQP67uzr67Ue6rZPwm2czynr5iZY,43
|
5
|
+
ngpt/cli/args.py,sha256=3yrTkgd5N0IiQyalV1sDs2-jMBRicWkYg3x3RKk8SgI,9409
|
6
|
+
ngpt/cli/config_manager.py,sha256=NQQcWnjUppAAd0s0p9YAf8EyKS1ex5-0EB4DvKdB4dk,3662
|
7
|
+
ngpt/cli/formatters.py,sha256=1ofNEWEZtFr0MJ3oWomoL_mFmZHlUdT3I5qGtbDQ4g0,9378
|
8
|
+
ngpt/cli/interactive.py,sha256=DZFbExcXd7RylkpBiZBhiI6N8FBaT0m_lBes0Pvhi48,10894
|
9
|
+
ngpt/cli/main.py,sha256=lDJOeaXTiiqXbcYDwCLFixMfAZZ8zN4wzBew1lOdr4w,27440
|
10
|
+
ngpt/cli/renderers.py,sha256=gJ3WdVvCGkNxrLEkLCh6gk9HBFMK8y7an6CsEkqt2Z8,10535
|
11
|
+
ngpt/cli/ui.py,sha256=iMinm_QdsmwrEUpb7CBRexyyBqf4sviFI9M3E8D-hhA,5303
|
12
|
+
ngpt/cli/modes/__init__.py,sha256=11znFpqzHyRsEtaTrms5M3q2SrscT9VvUgr7C2B1o-E,179
|
13
|
+
ngpt/cli/modes/chat.py,sha256=gXgy8lZNIfu-UTCsRpZJzW_vEriUl19QB_oFQtXRRL0,3138
|
14
|
+
ngpt/cli/modes/code.py,sha256=RjOAj7BDO5vLUdIPkUfPtyIkI_W6qEHsZvYh-sIdVaM,4293
|
15
|
+
ngpt/cli/modes/shell.py,sha256=lF9f7w-0bl_FdZl-WJnZuV736BKrWQtrwoKr3ejPXFE,2682
|
16
|
+
ngpt/cli/modes/text.py,sha256=ncYnfLFMdTPuHiOvAaHNiOWhox6GF6S-2fTwMIrAz-g,3140
|
17
|
+
ngpt/utils/__init__.py,sha256=E46suk2-QgYBI0Qrs6WXOajOUOebF3ETAFY7ah8DTWs,942
|
18
|
+
ngpt/utils/cli_config.py,sha256=A1TgO1rkRs6zgfNwIw5v8-N5jxqrHMZ4B6r3w48egi8,10687
|
19
|
+
ngpt/utils/config.py,sha256=WYOk_b1eiYjo6hpV3pfXr2RjqhOnmKqwZwKid1T41I4,10363
|
20
|
+
ngpt/utils/log.py,sha256=3AJiry9vUbo9Rzzrgj6-NMM4lCbgoZhrGcXvdxMqtrs,6353
|
21
|
+
ngpt-2.11.4.dist-info/METADATA,sha256=jhXuUH7MGusvj7G84UIxcJUfgRpnHKJQTIN-i8m5OYU,20632
|
22
|
+
ngpt-2.11.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
23
|
+
ngpt-2.11.4.dist-info/entry_points.txt,sha256=1cnAMujyy34DlOahrJg19lePSnb08bLbkUs_kVerqdk,39
|
24
|
+
ngpt-2.11.4.dist-info/licenses/LICENSE,sha256=mQkpWoADxbHqE0HRefYLJdm7OpdrXBr3vNv5bZ8w72M,1065
|
25
|
+
ngpt-2.11.4.dist-info/RECORD,,
|
ngpt-2.11.2.dist-info/RECORD
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
ngpt/__init__.py,sha256=kpKhViLakwMdHZkuLht2vWcjt0uD_5gR33gvMhfXr6w,664
|
2
|
-
ngpt/cli.py,sha256=j3eFYPOtCCFBOGh7NK5IWEnADnTMMSEB9GLyIDoW724,66
|
3
|
-
ngpt/client.py,sha256=Rv-JO8RAmw1v3gdLkwaPe_PEw6p83cejO0YNT_DDjeg,15134
|
4
|
-
ngpt/cli/__init__.py,sha256=hebbDSMGiOd43YNnQP67uzr67Ue6rZPwm2czynr5iZY,43
|
5
|
-
ngpt/cli/args.py,sha256=2e13wYQGfHFXpxZz5wXuvmoYpIkK6PEZQamHxfHAdyY,8868
|
6
|
-
ngpt/cli/config_manager.py,sha256=POjX3Asqap2N_Y6Qq0JC3OLZdzxRpFz3D0Lk19Now2U,3758
|
7
|
-
ngpt/cli/formatters.py,sha256=1ofNEWEZtFr0MJ3oWomoL_mFmZHlUdT3I5qGtbDQ4g0,9378
|
8
|
-
ngpt/cli/interactive.py,sha256=5xMMP1MuYW4jsbUEbjElE25fcJpgHVBbx2dIj8M39M8,10959
|
9
|
-
ngpt/cli/main.py,sha256=wSFVkg42NYIJQLMI9iOkW9nz2c6uukmwZghbaw6fYDk,27533
|
10
|
-
ngpt/cli/renderers.py,sha256=U3Vef3nY1NF2JKtLUtUjdFomyqIrijGWdxRPm46urr4,10546
|
11
|
-
ngpt/cli/ui.py,sha256=2JXkCRw5utaKpNZIy0u8F_Jh2zrWbm93dMz91wf9CkQ,5334
|
12
|
-
ngpt/cli/modes/__init__.py,sha256=11znFpqzHyRsEtaTrms5M3q2SrscT9VvUgr7C2B1o-E,179
|
13
|
-
ngpt/cli/modes/chat.py,sha256=OtD0iNoSpJ79gojaaCDOr0WPpRmAwzPPG8kwDjESrXo,3177
|
14
|
-
ngpt/cli/modes/code.py,sha256=bFE6x_CUncOM0gyAHOpcJs6nxj_ljFK0AYwJiT1Ndaw,4332
|
15
|
-
ngpt/cli/modes/shell.py,sha256=oqqEqWdqcH5q4pmis-hT9ZEFNk9-kaKHHdpRu217u5A,2721
|
16
|
-
ngpt/cli/modes/text.py,sha256=sUhgE5XubYxksnQDUvnCFrEbqz1G-CS_iWZZMGkULcI,3179
|
17
|
-
ngpt/utils/__init__.py,sha256=E46suk2-QgYBI0Qrs6WXOajOUOebF3ETAFY7ah8DTWs,942
|
18
|
-
ngpt/utils/cli_config.py,sha256=_epz6MzSBOiE6cMkQDggkzfRRV5gga4eg-2UW955GrM,10545
|
19
|
-
ngpt/utils/config.py,sha256=WYOk_b1eiYjo6hpV3pfXr2RjqhOnmKqwZwKid1T41I4,10363
|
20
|
-
ngpt/utils/log.py,sha256=Bxv2-GbWtVYa3u94Zs_OVEvYk_CbuT5hrDH06KHLXa8,6369
|
21
|
-
ngpt-2.11.2.dist-info/METADATA,sha256=XpjOCWolqeW9YKDL_VQCITLYcDxedgDCQCrxnzlcLr4,20627
|
22
|
-
ngpt-2.11.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
23
|
-
ngpt-2.11.2.dist-info/entry_points.txt,sha256=1cnAMujyy34DlOahrJg19lePSnb08bLbkUs_kVerqdk,39
|
24
|
-
ngpt-2.11.2.dist-info/licenses/LICENSE,sha256=mQkpWoADxbHqE0HRefYLJdm7OpdrXBr3vNv5bZ8w72M,1065
|
25
|
-
ngpt-2.11.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|