ngpt 2.12.0__py3-none-any.whl → 2.13.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 CHANGED
@@ -101,6 +101,8 @@ def setup_argument_parser():
101
101
  help='Enter multi-line text input (submit with Ctrl+D)')
102
102
  mode_exclusive_group.add_argument('--stdin', action='store_true',
103
103
  help='Read from stdin and use content with prompt. Use {} in prompt as placeholder for stdin content')
104
+ mode_exclusive_group.add_argument('--rewrite', action='store_true',
105
+ help='Rewrite text from stdin to be more natural while preserving tone and meaning')
104
106
 
105
107
  return parser
106
108
 
ngpt/cli/formatters.py CHANGED
@@ -13,6 +13,7 @@ COLORS = {
13
13
  "cyan": "\033[36m",
14
14
  "green": "\033[32m",
15
15
  "yellow": "\033[33m",
16
+ "red": "\033[31m",
16
17
  "blue": "\033[34m",
17
18
  "magenta": "\033[35m",
18
19
  "gray": "\033[90m",
ngpt/cli/main.py CHANGED
@@ -23,6 +23,7 @@ from .modes.chat import chat_mode
23
23
  from .modes.code import code_mode
24
24
  from .modes.shell import shell_mode
25
25
  from .modes.text import text_mode
26
+ from .modes.rewrite import rewrite_mode
26
27
  from .args import parse_args, validate_args, handle_cli_config_args, setup_argument_parser, validate_markdown_renderer
27
28
 
28
29
  def show_cli_config_help():
@@ -460,7 +461,7 @@ def main():
460
461
  return
461
462
 
462
463
  # For interactive mode, we'll allow continuing without a specific prompt
463
- if not args.prompt and not (args.shell or args.code or args.text or args.interactive or args.show_config or args.list_models):
464
+ if not args.prompt and not (args.shell or args.code or args.text or args.interactive or args.show_config or args.list_models or args.rewrite):
464
465
  # Simply use the parser's help
465
466
  parser = setup_argument_parser()
466
467
  parser.print_help()
@@ -549,6 +550,13 @@ def main():
549
550
  # Stdin mode (using the chat mode with stdin input)
550
551
  chat_mode(client, args, logger=logger)
551
552
 
553
+ elif args.rewrite:
554
+ # Apply CLI config for rewrite mode
555
+ args = apply_cli_config(args, "all")
556
+
557
+ # Rewrite mode (process stdin)
558
+ rewrite_mode(client, args, logger=logger)
559
+
552
560
  else:
553
561
  # Default to chat mode
554
562
  # Apply CLI config for default chat mode
@@ -2,5 +2,6 @@ from .chat import chat_mode
2
2
  from .code import code_mode
3
3
  from .shell import shell_mode
4
4
  from .text import text_mode
5
+ from .rewrite import rewrite_mode
5
6
 
6
- __all__ = ['chat_mode', 'code_mode', 'shell_mode', 'text_mode']
7
+ __all__ = ['chat_mode', 'code_mode', 'shell_mode', 'text_mode', 'rewrite_mode']
@@ -0,0 +1,209 @@
1
+ import sys
2
+ import platform
3
+ from ..formatters import COLORS
4
+ from ..renderers import prettify_markdown, prettify_streaming_markdown
5
+ from ..ui import get_multiline_input
6
+
7
+ # System prompt for rewriting text
8
+ REWRITE_SYSTEM_PROMPT = """You are an expert text editor and rewriter. Your task is to rewrite the user's text to improve readability and flow while carefully preserving the original meaning, tone, and style.
9
+
10
+ PRIMARY GOAL:
11
+ Improve the quality and clarity of writing without changing the author's voice or intent.
12
+
13
+ PRESERVATION RULES (HIGHEST PRIORITY):
14
+ 1. Preserve the exact meaning and information content
15
+ 2. Maintain the original tone (formal/casual/technical/friendly/serious/rude)
16
+ 3. Keep the author's perspective and point of view
17
+ 4. Respect the style of expression when intentional
18
+ 5. Retain technical terminology, jargon, and domain-specific language
19
+ 6. Keep all facts, data points, quotes, and references exactly as provided
20
+
21
+ IMPROVEMENT FOCUS:
22
+ 1. Fix grammar, spelling, and punctuation errors
23
+ 2. Improve sentence structure and flow
24
+ 3. Enhance clarity and readability
25
+ 4. Make language more concise and precise
26
+ 5. Replace awkward phrasings with more natural alternatives
27
+ 6. Break up sentences longer than 25 words
28
+ 7. Convert passive voice to active when appropriate
29
+ 8. Remove redundancies, filler words, and unnecessary repetition
30
+
31
+ FORMAT PRESERVATION:
32
+ 1. Maintain all paragraph breaks and section structures
33
+ 2. Preserve formatting of lists, bullet points, and numbering
34
+ 3. Keep code blocks (```) exactly as they appear with no changes to code
35
+ 4. Respect all markdown formatting (bold, italic, headers, etc.)
36
+ 5. Preserve URLs, email addresses, file paths, and variables exactly
37
+ 6. Maintain the structure of tables and other special formats
38
+
39
+ CONTENT-SPECIFIC GUIDANCE:
40
+ - For technical content: Prioritize precision and clarity over stylistic changes
41
+ - For casual text: Maintain conversational flow and personality
42
+ - For formal writing: Preserve professionalism while improving structure
43
+ - For emotional content: Carefully maintain the emotional resonance and intensity
44
+
45
+ STRICTLY AVOID:
46
+ 1. Adding new information not present in the original
47
+ 2. Removing key points or substantive content
48
+ 3. Significantly changing the formality level
49
+ 4. Inserting your own opinions or commentary
50
+ 5. Explaining what you changed (just provide the improved text)
51
+ 6. Altering the meaning of any sentence, even slightly
52
+ 7. Changing domain-specific terminology or jargon to general terms
53
+
54
+ OUTPUT INSTRUCTION:
55
+ Provide ONLY the rewritten text with no explanations, comments, or meta-text.
56
+
57
+ EXAMPLES:
58
+
59
+ ORIGINAL: "The implementation of the feature, which was delayed due to unforeseen technical complications, is now scheduled for next week's release."
60
+ BETTER: "We delayed the feature implementation due to unforeseen technical complications. It's now scheduled for next week's release."
61
+
62
+ ORIGINAL: "We was hoping you could help with this issue what we are having with the server."
63
+ BETTER: "We were hoping you could help with this issue we're having with the server."
64
+
65
+ ORIGINAL: "The user interface, which is built using React, Redux, and various other frontend technologies, needs to be redesigned to accommodate the new features that we want to add to the application."
66
+ BETTER: "The React/Redux user interface needs redesigning to accommodate our planned new features."
67
+ """
68
+
69
+ def get_terminal_input():
70
+ """Get input from terminal in a cross-platform way, even when stdin is redirected."""
71
+ if platform.system() == 'Windows':
72
+ # Windows-specific solution
73
+ try:
74
+ import msvcrt
75
+ print("Press Y/N...", end="")
76
+ sys.stdout.flush()
77
+ # Wait for a keypress
78
+ char = msvcrt.getch().decode('utf-8').lower()
79
+ print(char) # Echo the character
80
+ return char
81
+ except ImportError:
82
+ # Fallback if msvcrt is not available
83
+ return None
84
+ else:
85
+ # Unix-like systems (Linux, macOS)
86
+ try:
87
+ with open('/dev/tty', 'r') as tty:
88
+ return tty.readline().strip().lower()
89
+ except (IOError, OSError):
90
+ return None
91
+
92
+ def rewrite_mode(client, args, logger=None):
93
+ """Handle the text rewriting mode.
94
+
95
+ Args:
96
+ client: The NGPTClient instance
97
+ args: The parsed command-line arguments
98
+ logger: Optional logger instance
99
+ """
100
+ # Determine the input source (stdin pipe, command-line argument, or multiline input)
101
+ if not sys.stdin.isatty():
102
+ # Read from stdin if data is piped
103
+ input_text = sys.stdin.read().strip()
104
+
105
+ # If stdin is empty but prompt is provided, use the prompt
106
+ if not input_text and args.prompt:
107
+ input_text = args.prompt
108
+ elif args.prompt:
109
+ # Use the command-line argument if provided
110
+ input_text = args.prompt
111
+ else:
112
+ # No pipe or prompt - use multiline input
113
+ print("Enter or paste text to rewrite (Ctrl+D or Ctrl+Z to submit):")
114
+ input_text = get_multiline_input()
115
+ if input_text is None:
116
+ # Input was cancelled or empty
117
+ print("Exiting.")
118
+ return
119
+
120
+ # Check if input is empty
121
+ if not input_text:
122
+ print(f"{COLORS['yellow']}Error: Empty input. Please provide text to rewrite.{COLORS['reset']}")
123
+ return
124
+
125
+ # Set up messages array with system prompt and user content
126
+ messages = [
127
+ {"role": "system", "content": REWRITE_SYSTEM_PROMPT},
128
+ {"role": "user", "content": input_text}
129
+ ]
130
+
131
+ print("\nSubmission successful. Waiting for response...")
132
+
133
+ # Log the messages if logging is enabled
134
+ if logger:
135
+ logger.log("system", REWRITE_SYSTEM_PROMPT)
136
+ logger.log("user", input_text)
137
+
138
+ # Set default streaming behavior based on --no-stream and --prettify arguments
139
+ should_stream = not args.no_stream and not args.prettify
140
+
141
+ # If stream-prettify is enabled
142
+ stream_callback = None
143
+ live_display = None
144
+
145
+ if args.stream_prettify:
146
+ should_stream = True # Enable streaming
147
+ live_display, stream_callback = prettify_streaming_markdown(args.renderer)
148
+ if not live_display:
149
+ # Fallback to normal prettify if live display setup failed
150
+ args.prettify = True
151
+ args.stream_prettify = False
152
+ should_stream = False
153
+ print(f"{COLORS['yellow']}Falling back to regular prettify mode.{COLORS['reset']}")
154
+
155
+ # If regular prettify is enabled with streaming, inform the user
156
+ if args.prettify and not args.no_stream:
157
+ print(f"{COLORS['yellow']}Note: Streaming disabled to enable markdown rendering.{COLORS['reset']}")
158
+
159
+ # Start live display if using stream-prettify
160
+ if args.stream_prettify and live_display:
161
+ live_display.start()
162
+
163
+ response = client.chat(
164
+ prompt=None, # Not used when messages are provided
165
+ stream=should_stream,
166
+ web_search=args.web_search,
167
+ temperature=args.temperature,
168
+ top_p=args.top_p,
169
+ max_tokens=args.max_tokens,
170
+ markdown_format=args.prettify or args.stream_prettify,
171
+ stream_callback=stream_callback,
172
+ messages=messages # Use messages array instead of prompt
173
+ )
174
+
175
+ # Stop live display if using stream-prettify
176
+ if args.stream_prettify and live_display:
177
+ live_display.stop()
178
+
179
+ # Log the AI response if logging is enabled
180
+ if logger and response:
181
+ logger.log("assistant", response)
182
+
183
+ # Handle non-stream response or regular prettify
184
+ if (args.no_stream or args.prettify) and response:
185
+ if args.prettify:
186
+ prettify_markdown(response, args.renderer)
187
+ else:
188
+ print(response)
189
+
190
+ # Offer to copy to clipboard if not in a redirected output
191
+ if not args.no_stream and sys.stdout.isatty():
192
+ try:
193
+ # Make sure to flush output before asking for input
194
+ print("\nCopy to clipboard? (y/n) ", end="")
195
+ sys.stdout.flush()
196
+
197
+ # Cross-platform terminal input
198
+ answer = get_terminal_input()
199
+
200
+ if answer == 'y':
201
+ try:
202
+ import pyperclip
203
+ pyperclip.copy(response)
204
+ print("Copied to clipboard.")
205
+ except ImportError:
206
+ print(f"{COLORS['yellow']}pyperclip not installed. Try: pip install \"ngpt[clipboard]\" {COLORS['reset']}")
207
+
208
+ except (KeyboardInterrupt, EOFError):
209
+ pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ngpt
3
- Version: 2.12.0
3
+ Version: 2.13.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
@@ -29,6 +29,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
29
29
  Classifier: Topic :: Utilities
30
30
  Requires-Python: >=3.8
31
31
  Requires-Dist: prompt-toolkit>=3.0.0
32
+ Requires-Dist: pyperclip>=1.8.0
32
33
  Requires-Dist: requests>=2.31.0
33
34
  Requires-Dist: rich>=10.0.0
34
35
  Description-Content-Type: text/markdown
@@ -103,6 +104,15 @@ ngpt --shell "list all files in the current directory"
103
104
  # Read from stdin and use the content in your prompt
104
105
  echo "What is this text about?" | ngpt --stdin "Analyze the following text: {}"
105
106
 
107
+ # Rewrite text to improve quality while preserving tone and meaning
108
+ echo "your text" | ngpt --rewrite
109
+
110
+ # Rewrite text from a command-line argument
111
+ ngpt --rewrite "your text to rewrite"
112
+
113
+ # Use interactive multiline editor to enter text to rewrite
114
+ ngpt --rewrite
115
+
106
116
  # Display markdown responses with beautiful formatting
107
117
  ngpt --prettify "Explain markdown syntax with examples"
108
118
 
@@ -138,10 +148,12 @@ For more examples and detailed usage, visit the [CLI Usage Guide](https://nazdri
138
148
  - 💬 **Interactive Chat**: Continuous conversation with memory in modern UI
139
149
  - 📊 **Streaming Responses**: Real-time output for better user experience
140
150
  - 🔍 **Web Search**: Integrated with compatible API endpoints
151
+ - 📥 **Stdin Processing**: Process piped content by using `{}` placeholder in prompts
141
152
  - 🎨 **Markdown Rendering**: Beautiful formatting of markdown and code with syntax highlighting
142
153
  - ⚡ **Real-time Markdown**: Stream responses with live updating syntax highlighting and formatting
143
154
  - ⚙️ **Multiple Configurations**: Cross-platform config system supporting different profiles
144
155
  - 💻 **Shell Command Generation**: OS-aware command execution
156
+ - 🧠 **Text Rewriting**: Improve text quality while maintaining original tone and meaning
145
157
  - 🧩 **Clean Code Generation**: Output code without markdown or explanations
146
158
  - 📝 **Rich Multiline Editor**: Interactive multiline text input with syntax highlighting and intuitive controls
147
159
  - 🎭 **System Prompts**: Customize model behavior with custom system prompts
@@ -349,38 +361,52 @@ For detailed information about building CLI tools with nGPT, see the [CLI Framew
349
361
 
350
362
  ### Command Line Options
351
363
 
352
- You can configure the client using the following options:
364
+ You can configure nGPT using the following options:
365
+
366
+ #### Mode Options (Mutually Exclusive)
367
+
368
+ | Option | Description |
369
+ |--------|-------------|
370
+ | `-i, --interactive` | Start an interactive chat session with conversation memory and special commands |
371
+ | `-s, --shell` | Generate and execute shell commands appropriate for your operating system |
372
+ | `-c, --code` | Generate clean code without markdown formatting or explanations |
373
+ | `-t, --text` | Open interactive multiline editor for complex prompts with syntax highlighting |
374
+ | `--stdin` | Read from stdin and use content with prompt. Use {} in prompt as placeholder for stdin content |
375
+ | `--rewrite` | Rewrite text to improve quality while preserving original tone and meaning |
376
+
377
+ #### Global Options
353
378
 
354
379
  | Option | Description |
355
380
  |--------|-------------|
356
- | `--api-key` | API key for the service |
357
- | `--base-url` | Base URL for the API |
358
- | `--model` | Model to use |
359
- | `--list-models` | List all available models for the selected configuration (can be combined with --config-index) |
360
- | `--web-search` | Enable web search capability |
381
+ | `--api-key KEY` | API key for the service |
382
+ | `--base-url URL` | Base URL for the API |
383
+ | `--model MODEL` | Model to use |
384
+ | `--web-search` | Enable web search capability (if your API endpoint supports it) |
385
+ | `--temperature VALUE` | Set temperature (controls randomness, default: 0.7) |
386
+ | `--top_p VALUE` | Set top_p (controls diversity, default: 1.0) |
387
+ | `--max_tokens NUMBER` | Set maximum response length in tokens |
388
+ | `--preprompt TEXT` | Set custom system prompt to control AI behavior |
389
+ | `--language LANG` | Programming language to generate code in (for code mode, default: python) |
361
390
  | `--no-stream` | Return the whole response without streaming |
362
- | `--temperature` | Set temperature (controls randomness, default: 0.7) |
363
- | `--top_p` | Set top_p (controls diversity, default: 1.0) |
364
- | `--max_tokens` | Set maximum response length in tokens |
365
- | `--preprompt` | Set custom system prompt to control AI behavior |
366
- | `--log` | Enable logging: use `--log` to create a temporary log file, or `--log PATH` for a specific location |
367
- | `--prettify` | Render markdown responses and code with syntax highlighting |
368
- | `--stream-prettify` | Enable real-time markdown rendering with syntax highlighting while streaming |
369
- | `--renderer` | Select which markdown renderer to use with --prettify (auto, rich, or glow) |
370
- | `--list-renderers` | Show available markdown renderers for use with --prettify |
371
- | `--config` | Path to a custom configuration file or, when used without a value, enters interactive configuration mode |
372
- | `--config-index` | Index of the configuration to use (default: 0) |
373
- | `--provider` | Provider name to identify the configuration to use (alternative to --config-index) |
391
+ | `--prettify` | Render markdown responses and code with syntax highlighting and formatting |
392
+ | `--stream-prettify` | Enable streaming with markdown rendering (automatically uses Rich renderer) |
393
+ | `--renderer {auto,rich,glow}` | Select which markdown renderer to use with --prettify (default: auto) |
394
+ | `--log [FILE]` | Set filepath to log conversation to, or create a temporary log file if no path provided |
395
+
396
+ #### Configuration Options
397
+
398
+ | Option | Description |
399
+ |--------|-------------|
400
+ | `--config [PATH]` | Path to a custom config file or, if no value provided, enter interactive configuration mode |
401
+ | `--config-index INDEX` | Index of the configuration to use or edit (default: 0) |
402
+ | `--provider NAME` | Provider name to identify the configuration to use |
374
403
  | `--remove` | Remove the configuration at the specified index (requires --config and --config-index or --provider) |
375
- | `--show-config` | Show configuration details and exit |
376
- | `--all` | Used with `--show-config` to display all configurations |
377
- | `-i, --interactive` | Start an interactive chat session with stylish UI, conversation history, and special commands |
378
- | `-s, --shell` | Generate and execute shell commands |
379
- | `-c, --code` | Generate clean code output |
380
- | `-t, --text` | Open interactive multiline editor for complex prompts |
381
- | `--language` | Programming language to generate code in (for code mode, default: python) |
382
- | `--cli-config` | Manage CLI configuration settings (set, get, unset, list, help) |
383
- | `-v, --version` | Show version information |
404
+ | `--show-config` | Show the current configuration(s) and exit |
405
+ | `--all` | Show details for all configurations (requires --show-config) |
406
+ | `--list-models` | List all available models for the current configuration and exit |
407
+ | `--list-renderers` | Show available markdown renderers for use with --prettify |
408
+ | `--cli-config [COMMAND]` | Manage CLI configuration (set, get, unset, list, help) |
409
+ | `-v, --version` | Show version information and exit |
384
410
 
385
411
  For a complete reference of all available options, see the [CLI Usage Guide](https://nazdridoy.github.io/ngpt/usage/cli_usage.html).
386
412
 
@@ -2,24 +2,25 @@ ngpt/__init__.py,sha256=kpKhViLakwMdHZkuLht2vWcjt0uD_5gR33gvMhfXr6w,664
2
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=5MxWHkE6bW6bH5IAITTj2WrkXf2sV3FPV8LJanb-yw0,9770
5
+ ngpt/cli/args.py,sha256=1yuVgmBXPu3HrCkVtWBfJG5he90ij84UjPbY11TppPk,9965
6
6
  ngpt/cli/config_manager.py,sha256=NQQcWnjUppAAd0s0p9YAf8EyKS1ex5-0EB4DvKdB4dk,3662
7
- ngpt/cli/formatters.py,sha256=1ofNEWEZtFr0MJ3oWomoL_mFmZHlUdT3I5qGtbDQ4g0,9378
7
+ ngpt/cli/formatters.py,sha256=HBYGlx_7eoAKyzfy0Vq5L0yn8yVKjngqYBukMmXCcz0,9401
8
8
  ngpt/cli/interactive.py,sha256=DZFbExcXd7RylkpBiZBhiI6N8FBaT0m_lBes0Pvhi48,10894
9
- ngpt/cli/main.py,sha256=y0L-GlA3oDRup_4nDVTWtVCv70ijswKXx3m3kG0zkjI,27720
9
+ ngpt/cli/main.py,sha256=E51XQFIT2NGC1nV1FTQ0GAy-Q6fm730vDXhArqJDwRU,28019
10
10
  ngpt/cli/renderers.py,sha256=gJ3WdVvCGkNxrLEkLCh6gk9HBFMK8y7an6CsEkqt2Z8,10535
11
11
  ngpt/cli/ui.py,sha256=iMinm_QdsmwrEUpb7CBRexyyBqf4sviFI9M3E8D-hhA,5303
12
- ngpt/cli/modes/__init__.py,sha256=11znFpqzHyRsEtaTrms5M3q2SrscT9VvUgr7C2B1o-E,179
12
+ ngpt/cli/modes/__init__.py,sha256=i1ZKe7QsKkQ1g8Ip-NmyltZRQQI6nwXRq35bsmER8BU,229
13
13
  ngpt/cli/modes/chat.py,sha256=4a5EgM_5A1zCSrLrjgQMDnBwIHd1Rnu5_BjSKSm7p24,4255
14
14
  ngpt/cli/modes/code.py,sha256=RjOAj7BDO5vLUdIPkUfPtyIkI_W6qEHsZvYh-sIdVaM,4293
15
+ ngpt/cli/modes/rewrite.py,sha256=Zb0PFvWRKXs4xJCF3GEdYc-LSmy6qRszz8-QJuldHc0,8595
15
16
  ngpt/cli/modes/shell.py,sha256=lF9f7w-0bl_FdZl-WJnZuV736BKrWQtrwoKr3ejPXFE,2682
16
17
  ngpt/cli/modes/text.py,sha256=ncYnfLFMdTPuHiOvAaHNiOWhox6GF6S-2fTwMIrAz-g,3140
17
18
  ngpt/utils/__init__.py,sha256=E46suk2-QgYBI0Qrs6WXOajOUOebF3ETAFY7ah8DTWs,942
18
19
  ngpt/utils/cli_config.py,sha256=A1TgO1rkRs6zgfNwIw5v8-N5jxqrHMZ4B6r3w48egi8,10687
19
20
  ngpt/utils/config.py,sha256=WYOk_b1eiYjo6hpV3pfXr2RjqhOnmKqwZwKid1T41I4,10363
20
21
  ngpt/utils/log.py,sha256=3AJiry9vUbo9Rzzrgj6-NMM4lCbgoZhrGcXvdxMqtrs,6353
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,,
22
+ ngpt-2.13.0.dist-info/METADATA,sha256=KseQZjNtDa7N5uJVZ0XFThyLh7fawca-6mEUHFzMcjY,21987
23
+ ngpt-2.13.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
24
+ ngpt-2.13.0.dist-info/entry_points.txt,sha256=SqAAvLhMrsEpkIr4YFRdUeyuXQ9o0IBCeYgE6AVojoI,44
25
+ ngpt-2.13.0.dist-info/licenses/LICENSE,sha256=mQkpWoADxbHqE0HRefYLJdm7OpdrXBr3vNv5bZ8w72M,1065
26
+ ngpt-2.13.0.dist-info/RECORD,,
File without changes