Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 38 additions & 9 deletions 05_inspecttools.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@
" - `resolve(\"sympy.sets.sets.Interval\")` -> `<class 'sympy.sets.sets.Interval'>`\n",
" - `resolve(\"mylist[2]\")` -> third element of mylist\"\"\"\n",
" global _last\n",
" if not isinstance(sym, str): return (_last := sym)\n",
" if (sym := sym.strip()) == '_last': return _last\n",
" g = _find_frame_dict('__dialog_name')\n",
" if match := re.match(r'^(\\w+)\\[(\\d+)\\]$', sym):\n",
Expand Down Expand Up @@ -313,7 +314,7 @@
" elif hasattr(obj, '__module__') and not inspect.ismodule(obj): obj = obj.__class__\n",
" try: fname = inspect.getfile(obj)\n",
" except (OSError, TypeError): fname = \"<session>\"\n",
" try: return f\"File: {fname}\\n\\n{inspect.getsource(obj)}\"\n",
" try: return f\"# File: {fname}\\n\\n{inspect.getsource(obj)}\"\n",
" except (OSError, TypeError): pass\n",
" name = getattr(obj, '__name__', None)\n",
" if not name: raise OSError(f\"Cannot get source for {sym}\")\n",
Expand All @@ -322,7 +323,7 @@
" src = ''.join(lines)\n",
" if match := re.search(pat, src, re.MULTILINE):\n",
" start = src[:match.start()].count('\\n')\n",
" if extracted := _src_from_lines(lines, start): return f\"File: {fname}\\n\\n{extracted}\"\n",
" if extracted := _src_from_lines(lines, start): return f\"# File: {fname}\\n\\n{extracted}\"\n",
" raise OSError(f\"Source for {name} not found\")"
]
},
Expand All @@ -344,7 +345,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"File: /Users/jhoward/aai-ws/fastcore/fastcore/foundation.py\n",
"# File: /Users/pczapla/aai-ws/fastcore/fastcore/foundation.py\n",
"\n",
"@patch\n",
"@curryable\n",
Expand All @@ -360,6 +361,32 @@
"print(symsrc('a.argfirst'))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b1f9820e",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"# File: /Users/pczapla/aai-ws/fastcore/fastcore/foundation.py\n",
"\n",
"@patch\n",
"@curryable\n",
"def argfirst(self:L, f, negate=False):\n",
" \"Return index of first matching item\"\n",
" if negate: f = not_(f)\n",
" return first(i for i,o in self.enumerate() if f(o))\n",
"\n"
]
}
],
"source": [
"print(symsrc(a.argfirst))"
]
},
{
"cell_type": "code",
"execution_count": null,
Expand All @@ -370,7 +397,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"File: /var/folders/51/b2_szf2945n072c0vj2cyty40000gn/T/ipykernel_33003/2711726673.py\n",
"# File: /var/folders/q_/6ypbtk8976j5j9zhzn30df440000gn/T/ipykernel_13390/2711726673.py\n",
"\n",
"class B:\n",
" def a(): ...\n",
Expand All @@ -395,7 +422,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"File: /var/folders/51/b2_szf2945n072c0vj2cyty40000gn/T/ipykernel_33003/242320393.py\n",
"# File: /var/folders/q_/6ypbtk8976j5j9zhzn30df440000gn/T/ipykernel_13390/242320393.py\n",
"\n",
"def f():\n",
" \"testing\"\n",
Expand Down Expand Up @@ -431,12 +458,12 @@
"name": "stdout",
"output_type": "stream",
"text": [
"File: /Users/jhoward/aai-ws/toolslm/toolslm/xml.py\n",
"# File: /Users/pczapla/aai-ws/toolslm/toolslm/xml.py\n",
"\n",
"# AUTOGENERATED! DO NOT EDIT! File to edit: ../00_xml.ipynb.\n",
"\n",
"# %% auto #0\n",
"__all__ = ['doctype', 'json_to_xml', 'get_mime_text', 'cell2out', 'cell2x\n"
"__all__ = ['doctype', 'json_to_xml', 'get_mime_text', 'cell2out', 'cell\n"
]
}
],
Expand Down Expand Up @@ -761,11 +788,13 @@
{
"data": {
"text/plain": [
"'File: /var/folders/51/b2_szf2945n072c0vj2cyty40000gn/T/ipykernel_33003/340145363.py\\n\\nhandlers = dict(int=lambda x: x*2, str=lambda x: x.upper(), list=lambda x: len(x))\\n'"
"'# File: /var/folders/q_/6ypbtk8976j5j9zhzn30df440000gn/T/ipykernel_13390/340145363.py\\n\\nhandlers = dict(int=lambda x: x*2, str=lambda x: x.upper(), list=lambda x: len(x))\\n'"
]
},
"execution_count": null,
"metadata": {},
"metadata": {
"__type": "str"
},
"output_type": "execute_result"
}
],
Expand Down
5 changes: 3 additions & 2 deletions toolslm/inspecttools.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ def resolve(
- `resolve("sympy.sets.sets.Interval")` -> `<class 'sympy.sets.sets.Interval'>`
- `resolve("mylist[2]")` -> third element of mylist"""
global _last
if not isinstance(sym, str): return (_last := sym)
if (sym := sym.strip()) == '_last': return _last
g = _find_frame_dict('__dialog_name')
if match := re.match(r'^(\w+)\[(\d+)\]$', sym):
Expand Down Expand Up @@ -99,7 +100,7 @@ def symsrc(
elif hasattr(obj, '__module__') and not inspect.ismodule(obj): obj = obj.__class__
try: fname = inspect.getfile(obj)
except (OSError, TypeError): fname = "<session>"
try: return f"File: {fname}\n\n{inspect.getsource(obj)}"
try: return f"# File: {fname}\n\n{inspect.getsource(obj)}"
except (OSError, TypeError): pass
name = getattr(obj, '__name__', None)
if not name: raise OSError(f"Cannot get source for {sym}")
Expand All @@ -108,7 +109,7 @@ def symsrc(
src = ''.join(lines)
if match := re.search(pat, src, re.MULTILINE):
start = src[:match.start()].count('\n')
if extracted := _src_from_lines(lines, start): return f"File: {fname}\n\n{extracted}"
if extracted := _src_from_lines(lines, start): return f"# File: {fname}\n\n{extracted}"
raise OSError(f"Source for {name} not found")

# %% ../05_inspecttools.ipynb #bbf67405
Expand Down