symbex 0.2__py3-none-any.whl → 0.2.1__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.
- symbex/cli.py +19 -4
- {symbex-0.2.dist-info → symbex-0.2.1.dist-info}/METADATA +9 -1
- symbex-0.2.1.dist-info/RECORD +10 -0
- symbex-0.2.dist-info/RECORD +0 -10
- {symbex-0.2.dist-info → symbex-0.2.1.dist-info}/LICENSE +0 -0
- {symbex-0.2.dist-info → symbex-0.2.1.dist-info}/WHEEL +0 -0
- {symbex-0.2.dist-info → symbex-0.2.1.dist-info}/entry_points.txt +0 -0
- {symbex-0.2.dist-info → symbex-0.2.1.dist-info}/top_level.txt +0 -0
symbex/cli.py
CHANGED
@@ -8,7 +8,12 @@ from .lib import code_for_node, find_symbol_nodes
|
|
8
8
|
@click.version_option()
|
9
9
|
@click.argument("symbols", nargs=-1)
|
10
10
|
@click.option(
|
11
|
-
"files",
|
11
|
+
"files",
|
12
|
+
"-f",
|
13
|
+
"--file",
|
14
|
+
type=click.Path(file_okay=True, dir_okay=False),
|
15
|
+
multiple=True,
|
16
|
+
help="Files to search",
|
12
17
|
)
|
13
18
|
@click.option(
|
14
19
|
"directories",
|
@@ -18,7 +23,12 @@ from .lib import code_for_node, find_symbol_nodes
|
|
18
23
|
multiple=True,
|
19
24
|
help="Directories to search",
|
20
25
|
)
|
21
|
-
|
26
|
+
@click.option(
|
27
|
+
"--silent",
|
28
|
+
is_flag=True,
|
29
|
+
help="Silently ignore Python files with parse errors",
|
30
|
+
)
|
31
|
+
def cli(symbols, files, directories, silent):
|
22
32
|
"""
|
23
33
|
Find symbols in Python code and print the code for them.
|
24
34
|
|
@@ -40,13 +50,18 @@ def cli(symbols, files, directories):
|
|
40
50
|
"""
|
41
51
|
if not files and not directories:
|
42
52
|
directories = ["."]
|
43
|
-
files =
|
53
|
+
files = [pathlib.Path(f) for f in files]
|
44
54
|
for directory in directories:
|
45
55
|
files.extend(pathlib.Path(directory).rglob("*.py"))
|
46
56
|
pwd = pathlib.Path(".").resolve()
|
47
57
|
for file in files:
|
48
58
|
code = file.read_text("utf-8") if hasattr(file, "read_text") else file.read()
|
49
|
-
|
59
|
+
try:
|
60
|
+
nodes = find_symbol_nodes(code, symbols)
|
61
|
+
except SyntaxError as ex:
|
62
|
+
if not silent:
|
63
|
+
click.secho(f"# Syntax error in {file}: {ex}", err=True, fg="yellow")
|
64
|
+
continue
|
50
65
|
for node in nodes:
|
51
66
|
# If file is within pwd, print relative path
|
52
67
|
# else print absolute path
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: symbex
|
3
|
-
Version: 0.2
|
3
|
+
Version: 0.2.1
|
4
4
|
Summary: Find the Python code for specified symbols
|
5
5
|
Home-page: https://github.com/simonw/symbex
|
6
6
|
Author: Simon Willison
|
@@ -57,6 +57,14 @@ To search within a specific directory and all of its subdirectories, use the `-d
|
|
57
57
|
```bash
|
58
58
|
symbex Database -d ~/projects/datasette
|
59
59
|
```
|
60
|
+
If `symbex` encounters any Python code that it cannot parse, it will print a warning message and continue searching:
|
61
|
+
```
|
62
|
+
# Syntax error in path/badcode.py: expected ':' (<unknown>, line 1)
|
63
|
+
```
|
64
|
+
Pass `--silent` to suppress these warnings:
|
65
|
+
```bash
|
66
|
+
symbex MyClass --silent
|
67
|
+
```
|
60
68
|
|
61
69
|
## Example output
|
62
70
|
|
@@ -0,0 +1,10 @@
|
|
1
|
+
symbex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
+
symbex/__main__.py,sha256=8hDtWlaFZK24KhfNq_ZKgtXqYHsDQDetukOCMlsbW0Q,59
|
3
|
+
symbex/cli.py,sha256=LXrPvjSG4IvDeLbDNoZ6Dykb4zt4D6UK7wVwjClf8Dw,2142
|
4
|
+
symbex/lib.py,sha256=1YViD5fJ_NP1Y32LTFM7o8UCTzUiz3yTldVvJb8owgs,1190
|
5
|
+
symbex-0.2.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
6
|
+
symbex-0.2.1.dist-info/METADATA,sha256=SaikT2bPWwSeRgCBlFzg13ONt-BiyV9dMdAtpdKDQJ8,4192
|
7
|
+
symbex-0.2.1.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
8
|
+
symbex-0.2.1.dist-info/entry_points.txt,sha256=YgMSEfEGqNMHM9RysFObH8lkQKVZKyymKLnXbVue_Uk,42
|
9
|
+
symbex-0.2.1.dist-info/top_level.txt,sha256=qwle8HjAaYgpdMIHlJcTcN4gaG4wmDqUvkt54beTBTs,7
|
10
|
+
symbex-0.2.1.dist-info/RECORD,,
|
symbex-0.2.dist-info/RECORD
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
symbex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
symbex/__main__.py,sha256=8hDtWlaFZK24KhfNq_ZKgtXqYHsDQDetukOCMlsbW0Q,59
|
3
|
-
symbex/cli.py,sha256=tJhsnbWEiIN9LSZGGcqrmpY5U9TgISvknXsMCpijlSs,1770
|
4
|
-
symbex/lib.py,sha256=1YViD5fJ_NP1Y32LTFM7o8UCTzUiz3yTldVvJb8owgs,1190
|
5
|
-
symbex-0.2.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
6
|
-
symbex-0.2.dist-info/METADATA,sha256=QMsejWdFVPSvRODCyd09SRl_mcH0dLvXk3tOX2GNbts,3917
|
7
|
-
symbex-0.2.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
8
|
-
symbex-0.2.dist-info/entry_points.txt,sha256=YgMSEfEGqNMHM9RysFObH8lkQKVZKyymKLnXbVue_Uk,42
|
9
|
-
symbex-0.2.dist-info/top_level.txt,sha256=qwle8HjAaYgpdMIHlJcTcN4gaG4wmDqUvkt54beTBTs,7
|
10
|
-
symbex-0.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|