rlmgrep 0.1.27__tar.gz → 0.1.30__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rlmgrep
3
- Version: 0.1.27
3
+ Version: 0.1.30
4
4
  Summary: Grep-shaped CLI search powered by DSPy RLM
5
5
  Author: rlmgrep
6
6
  License: MIT
@@ -21,7 +21,7 @@ Grep-shaped search powered by DSPy RLM. It accepts a natural-language query, sca
21
21
  ```sh
22
22
  uv tool install --python 3.11 rlmgrep
23
23
  # or from GitHub:
24
- # uv tool install git+https://github.com/halfprice06/rlmgrep.git
24
+ # uv tool install --python 3.11 git+https://github.com/halfprice06/rlmgrep.git
25
25
 
26
26
  export OPENAI_API_KEY=... # or set keys in ~/.rlmgrep
27
27
  ```
@@ -100,8 +100,7 @@ Common options:
100
100
  - `--no-recursive` do not recurse directories
101
101
  - `-a`, `--text` treat binary files as text
102
102
  - `-y`, `--yes` skip file count confirmation
103
- - `--files-from-stdin` treat stdin as newline-delimited file paths (e.g., `rg -l`)
104
- - `--files-from-rg` alias for `--files-from-stdin`
103
+ - `--paths-from-stdin` treat stdin as newline-delimited file paths (e.g., `rg -l`)
105
104
  - `--model`, `--sub-model` override model names
106
105
  - `--api-key`, `--api-base`, `--model-type` override provider settings
107
106
  - `--max-iterations`, `--max-llm-calls` cap RLM search effort
@@ -123,7 +122,7 @@ rlmgrep "How do we map external API errors into internal error codes?" -g "**/*.
123
122
  cat README.md | rlmgrep --answer "What is this tool for and how is it used?"
124
123
 
125
124
  # Use rg/grep to find candidate files, then rlmgrep over that list
126
- rg -l "token" . | rlmgrep --files-from-stdin --answer "What does this token control and where is it validated?"
125
+ rg -l "token" . | rlmgrep --paths-from-stdin --answer "What does this token control and where is it validated?"
127
126
  ```
128
127
 
129
128
  ## Input selection
@@ -133,7 +132,7 @@ rg -l "token" . | rlmgrep --files-from-stdin --answer "What does this token cont
133
132
  - `--type` uses built-in type mappings (e.g., `py`, `js`, `md`); unknown values are treated as file extensions.
134
133
  - `-g/--glob` matches path globs against normalized paths (forward slashes).
135
134
  - Paths are printed relative to the current working directory when possible.
136
- - If no paths are provided, rlmgrep reads from stdin and uses the synthetic path `<stdin>`; if stdin is empty, it exits with code 2.
135
+ - If no paths are provided and stdin is a TTY, rlmgrep defaults to `.`. If stdin is piped, it reads from stdin and uses the synthetic path `<stdin>`.
137
136
  - rlmgrep asks for confirmation when more than 200 files would be loaded (use `-y/--yes` to skip), and aborts when more than 1000 files would be loaded.
138
137
 
139
138
  ## Output contract (stable for agents)
@@ -7,7 +7,7 @@ Grep-shaped search powered by DSPy RLM. It accepts a natural-language query, sca
7
7
  ```sh
8
8
  uv tool install --python 3.11 rlmgrep
9
9
  # or from GitHub:
10
- # uv tool install git+https://github.com/halfprice06/rlmgrep.git
10
+ # uv tool install --python 3.11 git+https://github.com/halfprice06/rlmgrep.git
11
11
 
12
12
  export OPENAI_API_KEY=... # or set keys in ~/.rlmgrep
13
13
  ```
@@ -86,8 +86,7 @@ Common options:
86
86
  - `--no-recursive` do not recurse directories
87
87
  - `-a`, `--text` treat binary files as text
88
88
  - `-y`, `--yes` skip file count confirmation
89
- - `--files-from-stdin` treat stdin as newline-delimited file paths (e.g., `rg -l`)
90
- - `--files-from-rg` alias for `--files-from-stdin`
89
+ - `--paths-from-stdin` treat stdin as newline-delimited file paths (e.g., `rg -l`)
91
90
  - `--model`, `--sub-model` override model names
92
91
  - `--api-key`, `--api-base`, `--model-type` override provider settings
93
92
  - `--max-iterations`, `--max-llm-calls` cap RLM search effort
@@ -109,7 +108,7 @@ rlmgrep "How do we map external API errors into internal error codes?" -g "**/*.
109
108
  cat README.md | rlmgrep --answer "What is this tool for and how is it used?"
110
109
 
111
110
  # Use rg/grep to find candidate files, then rlmgrep over that list
112
- rg -l "token" . | rlmgrep --files-from-stdin --answer "What does this token control and where is it validated?"
111
+ rg -l "token" . | rlmgrep --paths-from-stdin --answer "What does this token control and where is it validated?"
113
112
  ```
114
113
 
115
114
  ## Input selection
@@ -119,7 +118,7 @@ rg -l "token" . | rlmgrep --files-from-stdin --answer "What does this token cont
119
118
  - `--type` uses built-in type mappings (e.g., `py`, `js`, `md`); unknown values are treated as file extensions.
120
119
  - `-g/--glob` matches path globs against normalized paths (forward slashes).
121
120
  - Paths are printed relative to the current working directory when possible.
122
- - If no paths are provided, rlmgrep reads from stdin and uses the synthetic path `<stdin>`; if stdin is empty, it exits with code 2.
121
+ - If no paths are provided and stdin is a TTY, rlmgrep defaults to `.`. If stdin is piped, it reads from stdin and uses the synthetic path `<stdin>`.
123
122
  - rlmgrep asks for confirmation when more than 200 files would be loaded (use `-y/--yes` to skip), and aborts when more than 1000 files would be loaded.
124
123
 
125
124
  ## Output contract (stable for agents)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "rlmgrep"
3
- version = "0.1.27"
3
+ version = "0.1.30"
4
4
  description = "Grep-shaped CLI search powered by DSPy RLM"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "0.1.27"
2
+ __version__ = "0.1.30"
@@ -186,22 +186,11 @@ def _parse_args(argv: list[str]) -> argparse.Namespace:
186
186
  parser.add_argument("--answer", action="store_true", help="Print a narrative answer before grep output")
187
187
  parser.add_argument("-y", "--yes", action="store_true", help="Skip file count confirmation")
188
188
  parser.add_argument(
189
- "--files-from-stdin",
189
+ "--paths-from-stdin",
190
+ dest="stdin_paths",
190
191
  action="store_true",
191
192
  help="Treat stdin as newline-delimited file paths (e.g., rg -l)",
192
193
  )
193
- parser.add_argument(
194
- "--files-from-rg",
195
- dest="stdin_files",
196
- action="store_true",
197
- help="Alias for --files-from-stdin",
198
- )
199
- parser.add_argument(
200
- "--stdin-files",
201
- dest="stdin_files",
202
- action="store_true",
203
- help="Deprecated: use --files-from-stdin",
204
- )
205
194
 
206
195
  parser.add_argument("-g", "--glob", dest="globs", action="append", default=[], help="Include files matching glob (may repeat)")
207
196
  parser.add_argument("--type", dest="types", action="append", default=[], help="Include file types (py, js, md, etc.). May repeat")
@@ -558,7 +547,7 @@ def main(argv: list[str] | None = None) -> int:
558
547
  stdin_text: str | None = None
559
548
  if args.paths:
560
549
  input_paths = list(args.paths)
561
- elif args.stdin_files:
550
+ elif args.stdin_paths:
562
551
  if sys.stdin.isatty():
563
552
  _warn("no input paths and stdin is empty")
564
553
  return 2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rlmgrep
3
- Version: 0.1.27
3
+ Version: 0.1.30
4
4
  Summary: Grep-shaped CLI search powered by DSPy RLM
5
5
  Author: rlmgrep
6
6
  License: MIT
@@ -21,7 +21,7 @@ Grep-shaped search powered by DSPy RLM. It accepts a natural-language query, sca
21
21
  ```sh
22
22
  uv tool install --python 3.11 rlmgrep
23
23
  # or from GitHub:
24
- # uv tool install git+https://github.com/halfprice06/rlmgrep.git
24
+ # uv tool install --python 3.11 git+https://github.com/halfprice06/rlmgrep.git
25
25
 
26
26
  export OPENAI_API_KEY=... # or set keys in ~/.rlmgrep
27
27
  ```
@@ -100,8 +100,7 @@ Common options:
100
100
  - `--no-recursive` do not recurse directories
101
101
  - `-a`, `--text` treat binary files as text
102
102
  - `-y`, `--yes` skip file count confirmation
103
- - `--files-from-stdin` treat stdin as newline-delimited file paths (e.g., `rg -l`)
104
- - `--files-from-rg` alias for `--files-from-stdin`
103
+ - `--paths-from-stdin` treat stdin as newline-delimited file paths (e.g., `rg -l`)
105
104
  - `--model`, `--sub-model` override model names
106
105
  - `--api-key`, `--api-base`, `--model-type` override provider settings
107
106
  - `--max-iterations`, `--max-llm-calls` cap RLM search effort
@@ -123,7 +122,7 @@ rlmgrep "How do we map external API errors into internal error codes?" -g "**/*.
123
122
  cat README.md | rlmgrep --answer "What is this tool for and how is it used?"
124
123
 
125
124
  # Use rg/grep to find candidate files, then rlmgrep over that list
126
- rg -l "token" . | rlmgrep --files-from-stdin --answer "What does this token control and where is it validated?"
125
+ rg -l "token" . | rlmgrep --paths-from-stdin --answer "What does this token control and where is it validated?"
127
126
  ```
128
127
 
129
128
  ## Input selection
@@ -133,7 +132,7 @@ rg -l "token" . | rlmgrep --files-from-stdin --answer "What does this token cont
133
132
  - `--type` uses built-in type mappings (e.g., `py`, `js`, `md`); unknown values are treated as file extensions.
134
133
  - `-g/--glob` matches path globs against normalized paths (forward slashes).
135
134
  - Paths are printed relative to the current working directory when possible.
136
- - If no paths are provided, rlmgrep reads from stdin and uses the synthetic path `<stdin>`; if stdin is empty, it exits with code 2.
135
+ - If no paths are provided and stdin is a TTY, rlmgrep defaults to `.`. If stdin is piped, it reads from stdin and uses the synthetic path `<stdin>`.
137
136
  - rlmgrep asks for confirmation when more than 200 files would be loaded (use `-y/--yes` to skip), and aborts when more than 1000 files would be loaded.
138
137
 
139
138
  ## Output contract (stable for agents)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes