ngpt 2.11.4__py3-none-any.whl → 2.12.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.
- ngpt/cli/args.py +6 -1
- ngpt/cli/main.py +7 -0
- ngpt/cli/modes/chat.py +36 -9
- {ngpt-2.11.4.dist-info → ngpt-2.12.0.dist-info}/METADATA +10 -1
- {ngpt-2.11.4.dist-info → ngpt-2.12.0.dist-info}/RECORD +9 -9
- ngpt-2.12.0.dist-info/entry_points.txt +2 -0
- ngpt-2.11.4.dist-info/entry_points.txt +0 -2
- /ngpt/{cli.py → __main__.py} +0 -0
- {ngpt-2.11.4.dist-info → ngpt-2.12.0.dist-info}/WHEEL +0 -0
- {ngpt-2.11.4.dist-info → ngpt-2.12.0.dist-info}/licenses/LICENSE +0 -0
ngpt/cli/args.py
CHANGED
@@ -99,7 +99,8 @@ def setup_argument_parser():
|
|
99
99
|
help='Generate code')
|
100
100
|
mode_exclusive_group.add_argument('-t', '--text', action='store_true',
|
101
101
|
help='Enter multi-line text input (submit with Ctrl+D)')
|
102
|
-
|
102
|
+
mode_exclusive_group.add_argument('--stdin', action='store_true',
|
103
|
+
help='Read from stdin and use content with prompt. Use {} in prompt as placeholder for stdin content')
|
103
104
|
|
104
105
|
return parser
|
105
106
|
|
@@ -122,6 +123,10 @@ def validate_args(args):
|
|
122
123
|
if args.stream_prettify and not has_markdown_renderer('rich'):
|
123
124
|
raise ValueError("--stream-prettify requires Rich to be installed. Install with: pip install \"ngpt[full]\" or pip install rich")
|
124
125
|
|
126
|
+
# If stdin mode is used, check if input is available
|
127
|
+
if args.stdin and sys.stdin.isatty():
|
128
|
+
raise ValueError("--stdin was specified but no input is piped. Use echo 'content' | ngpt --stdin 'prompt with {}'")
|
129
|
+
|
125
130
|
return args
|
126
131
|
|
127
132
|
def validate_markdown_renderer(args):
|
ngpt/cli/main.py
CHANGED
@@ -542,6 +542,13 @@ def main():
|
|
542
542
|
# Text mode (multiline input)
|
543
543
|
text_mode(client, args, logger=logger)
|
544
544
|
|
545
|
+
elif args.stdin:
|
546
|
+
# Apply CLI config for stdin mode (similar to chat mode)
|
547
|
+
args = apply_cli_config(args, "all")
|
548
|
+
|
549
|
+
# Stdin mode (using the chat mode with stdin input)
|
550
|
+
chat_mode(client, args, logger=logger)
|
551
|
+
|
545
552
|
else:
|
546
553
|
# Default to chat mode
|
547
554
|
# Apply CLI config for default chat mode
|
ngpt/cli/modes/chat.py
CHANGED
@@ -10,16 +10,43 @@ def chat_mode(client, args, logger=None):
|
|
10
10
|
args: The parsed command-line arguments
|
11
11
|
logger: Optional logger instance
|
12
12
|
"""
|
13
|
-
#
|
14
|
-
if args.
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
# Handle stdin mode
|
14
|
+
if args.stdin:
|
15
|
+
# Read input from stdin
|
16
|
+
stdin_content = sys.stdin.read().strip()
|
17
|
+
|
18
|
+
# Get the prompt - either use provided one or ask user
|
19
|
+
if args.prompt is None:
|
20
|
+
try:
|
21
|
+
print("Enter your prompt (use {} as placeholder for stdin): ", end='')
|
22
|
+
prompt = input()
|
23
|
+
except KeyboardInterrupt:
|
24
|
+
print("\nInput cancelled by user. Exiting gracefully.")
|
25
|
+
sys.exit(130)
|
26
|
+
else:
|
27
|
+
prompt = args.prompt
|
28
|
+
|
29
|
+
# Replace the placeholder in the prompt with stdin content
|
30
|
+
placeholder = "{}"
|
31
|
+
|
32
|
+
# Check if the placeholder exists in the prompt
|
33
|
+
if placeholder not in prompt:
|
34
|
+
print(f"{COLORS['yellow']}Warning: Placeholder '{placeholder}' not found in prompt. Appending stdin content to the end.{COLORS['reset']}")
|
35
|
+
prompt = f"{prompt} {stdin_content}"
|
36
|
+
else:
|
37
|
+
prompt = prompt.replace(placeholder, stdin_content)
|
38
|
+
# Handle regular chat mode
|
21
39
|
else:
|
22
|
-
|
40
|
+
# Get the prompt
|
41
|
+
if args.prompt is None:
|
42
|
+
try:
|
43
|
+
print("Enter your prompt: ", end='')
|
44
|
+
prompt = input()
|
45
|
+
except KeyboardInterrupt:
|
46
|
+
print("\nInput cancelled by user. Exiting gracefully.")
|
47
|
+
sys.exit(130)
|
48
|
+
else:
|
49
|
+
prompt = args.prompt
|
23
50
|
|
24
51
|
# Log the user message if logging is enabled
|
25
52
|
if logger:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ngpt
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.12.0
|
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
|
@@ -79,6 +79,9 @@ uv tool install ngpt
|
|
79
79
|
# Chat with default settings
|
80
80
|
ngpt "Tell me about quantum computing"
|
81
81
|
|
82
|
+
# Alternatively, run as a Python module
|
83
|
+
python -m ngpt "Tell me about quantum computing"
|
84
|
+
|
82
85
|
# Start an interactive chat session with conversation memory
|
83
86
|
ngpt -i
|
84
87
|
|
@@ -97,6 +100,9 @@ ngpt --code --stream-prettify "function to calculate the Fibonacci sequence"
|
|
97
100
|
# Generate and execute shell commands
|
98
101
|
ngpt --shell "list all files in the current directory"
|
99
102
|
|
103
|
+
# Read from stdin and use the content in your prompt
|
104
|
+
echo "What is this text about?" | ngpt --stdin "Analyze the following text: {}"
|
105
|
+
|
100
106
|
# Display markdown responses with beautiful formatting
|
101
107
|
ngpt --prettify "Explain markdown syntax with examples"
|
102
108
|
|
@@ -117,6 +123,9 @@ ngpt --interactive --log conversation.log
|
|
117
123
|
|
118
124
|
# Create a temporary log file automatically
|
119
125
|
ngpt --log "Tell me about quantum computing"
|
126
|
+
|
127
|
+
# Process text from stdin using the {} placeholder
|
128
|
+
cat README.md | ngpt --stdin "Summarize this document: {}"
|
120
129
|
```
|
121
130
|
|
122
131
|
For more examples and detailed usage, visit the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
|
@@ -1,16 +1,16 @@
|
|
1
1
|
ngpt/__init__.py,sha256=kpKhViLakwMdHZkuLht2vWcjt0uD_5gR33gvMhfXr6w,664
|
2
|
-
ngpt/
|
2
|
+
ngpt/__main__.py,sha256=j3eFYPOtCCFBOGh7NK5IWEnADnTMMSEB9GLyIDoW724,66
|
3
3
|
ngpt/client.py,sha256=rLgDPmJe8_yi13-XUiHJ45z54rJVrupxWmeb-fQZGF4,15129
|
4
4
|
ngpt/cli/__init__.py,sha256=hebbDSMGiOd43YNnQP67uzr67Ue6rZPwm2czynr5iZY,43
|
5
|
-
ngpt/cli/args.py,sha256=
|
5
|
+
ngpt/cli/args.py,sha256=5MxWHkE6bW6bH5IAITTj2WrkXf2sV3FPV8LJanb-yw0,9770
|
6
6
|
ngpt/cli/config_manager.py,sha256=NQQcWnjUppAAd0s0p9YAf8EyKS1ex5-0EB4DvKdB4dk,3662
|
7
7
|
ngpt/cli/formatters.py,sha256=1ofNEWEZtFr0MJ3oWomoL_mFmZHlUdT3I5qGtbDQ4g0,9378
|
8
8
|
ngpt/cli/interactive.py,sha256=DZFbExcXd7RylkpBiZBhiI6N8FBaT0m_lBes0Pvhi48,10894
|
9
|
-
ngpt/cli/main.py,sha256=
|
9
|
+
ngpt/cli/main.py,sha256=y0L-GlA3oDRup_4nDVTWtVCv70ijswKXx3m3kG0zkjI,27720
|
10
10
|
ngpt/cli/renderers.py,sha256=gJ3WdVvCGkNxrLEkLCh6gk9HBFMK8y7an6CsEkqt2Z8,10535
|
11
11
|
ngpt/cli/ui.py,sha256=iMinm_QdsmwrEUpb7CBRexyyBqf4sviFI9M3E8D-hhA,5303
|
12
12
|
ngpt/cli/modes/__init__.py,sha256=11znFpqzHyRsEtaTrms5M3q2SrscT9VvUgr7C2B1o-E,179
|
13
|
-
ngpt/cli/modes/chat.py,sha256=
|
13
|
+
ngpt/cli/modes/chat.py,sha256=4a5EgM_5A1zCSrLrjgQMDnBwIHd1Rnu5_BjSKSm7p24,4255
|
14
14
|
ngpt/cli/modes/code.py,sha256=RjOAj7BDO5vLUdIPkUfPtyIkI_W6qEHsZvYh-sIdVaM,4293
|
15
15
|
ngpt/cli/modes/shell.py,sha256=lF9f7w-0bl_FdZl-WJnZuV736BKrWQtrwoKr3ejPXFE,2682
|
16
16
|
ngpt/cli/modes/text.py,sha256=ncYnfLFMdTPuHiOvAaHNiOWhox6GF6S-2fTwMIrAz-g,3140
|
@@ -18,8 +18,8 @@ ngpt/utils/__init__.py,sha256=E46suk2-QgYBI0Qrs6WXOajOUOebF3ETAFY7ah8DTWs,942
|
|
18
18
|
ngpt/utils/cli_config.py,sha256=A1TgO1rkRs6zgfNwIw5v8-N5jxqrHMZ4B6r3w48egi8,10687
|
19
19
|
ngpt/utils/config.py,sha256=WYOk_b1eiYjo6hpV3pfXr2RjqhOnmKqwZwKid1T41I4,10363
|
20
20
|
ngpt/utils/log.py,sha256=3AJiry9vUbo9Rzzrgj6-NMM4lCbgoZhrGcXvdxMqtrs,6353
|
21
|
-
ngpt-2.
|
22
|
-
ngpt-2.
|
23
|
-
ngpt-2.
|
24
|
-
ngpt-2.
|
25
|
-
ngpt-2.
|
21
|
+
ngpt-2.12.0.dist-info/METADATA,sha256=e9iyCtLNNs5dFaX35FlOa1XqeVQw6h-B8SiWHGe2QHU,20967
|
22
|
+
ngpt-2.12.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
23
|
+
ngpt-2.12.0.dist-info/entry_points.txt,sha256=SqAAvLhMrsEpkIr4YFRdUeyuXQ9o0IBCeYgE6AVojoI,44
|
24
|
+
ngpt-2.12.0.dist-info/licenses/LICENSE,sha256=mQkpWoADxbHqE0HRefYLJdm7OpdrXBr3vNv5bZ8w72M,1065
|
25
|
+
ngpt-2.12.0.dist-info/RECORD,,
|
/ngpt/{cli.py → __main__.py}
RENAMED
File without changes
|
File without changes
|
File without changes
|