/usr/local/lib64/python3.6/site-packages/torch
NameSizeModeActions
ao/-0755rm
autograd/-0755rm
backends/-0755rm
bin/-0755rm
contrib/-0755rm
cpu/-0755rm
cuda/-0755rm
distributed/-0755rm
distributions/-0755rm
fft/-0755rm
for_onnx/-0755rm
futures/-0755rm
fx/-0755rm
include/-0755rm
jit/-0755rm
lib/-0755rm
linalg/-0755rm
multiprocessing/-0755rm
nn/-0755rm
onnx/-0755rm
optim/-0755rm
package/-0755rm
profiler/-0755rm
quantization/-0755rm
share/-0755rm
sparse/-0755rm
special/-0755rm
testing/-0755rm
utils/-0755rm
_C/-0755rm
__pycache__/-0755rm
autocast_mode.py96630644editdlrm
functional.py712570644editdlrm
hub.py233710644editdlrm
overrides.py841460644editdlrm
py.typed00644editdlrm
quasirandom.py74890644editdlrm
random.py48280644editdlrm
serialization.py365440644editdlrm
storage.py57620644editdlrm
torch_version.py34680644editdlrm
types.py15520644editdlrm
version.py1250644editdlrm
_appdirs.py262450644editdlrm
_C.cpython-36m-x86_64-linux-gnu.so292960755editdlrm
_classes.py17170644editdlrm
_deploy.py31000644editdlrm
_dl.cpython-36m-x86_64-linux-gnu.so298320755editdlrm
_jit_internal.py469100644editdlrm
_linalg_utils.py23730644editdlrm
_lobpcg.py440760644editdlrm
_lowrank.py110310644editdlrm
_namedtensor_internals.py53510644editdlrm
_ops.py44570644editdlrm
_python_dispatcher.py70110644editdlrm
_six.py18580644editdlrm
_sources.py38820644editdlrm
_storage_docs.py12980644editdlrm
_tensor.py508540644editdlrm
_tensor_docs.py1134740644editdlrm
_tensor_str.py180910644editdlrm
_torch_docs.py3646780644editdlrm
_utils.py216170644editdlrm
_utils_internal.py16870644editdlrm
_VF.py6560644editdlrm
_vmap_internals.py132190644editdlrm
__config__.py5510644editdlrm
__future__.py8130644editdlrm
__init__.py311990644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/_sources.py (3882B)
import ast import functools import inspect from textwrap import dedent from typing import Any, Optional, Tuple, List, NamedTuple from torch._C import ErrorReport from torch._C._jit_tree_views import SourceRangeFactory def get_source_lines_and_file( obj: Any, error_msg: Optional[str] = None, ) -> Tuple[List[str], int, Optional[str]]: """ Wrapper around inspect.getsourcelines and inspect.getsourcefile. Returns: (sourcelines, file_lino, filename) """ filename = None # in case getsourcefile throws try: filename = inspect.getsourcefile(obj) sourcelines, file_lineno = inspect.getsourcelines(obj) except OSError as e: msg = (f"Can't get source for {obj}. TorchScript requires source access in " "order to carry out compilation, make sure original .py files are " "available.") if error_msg: msg += '\n' + error_msg raise OSError(msg) from e return sourcelines, file_lineno, filename def normalize_source_lines(sourcelines: List[str]) -> List[str]: """ This helper function accepts a list of source lines. It finds the indentation level of the function definition (`def`), then it indents all lines in the function body to a point at or greater than that level. This allows for comments and continued string literals that are at a lower indentation than the rest of the code. Args: sourcelines: function source code, separated into lines by the '\n' character Returns: A list of source lines that have been correctly aligned """ def remove_prefix(text, prefix): return text[text.startswith(prefix) and len(prefix):] # Find the line and line number containing the function definition for i, l in enumerate(sourcelines): if l.lstrip().startswith("def"): idx = i break fn_def = sourcelines[idx] # Get a string representing the amount of leading whitespace whitespace = fn_def.split("def")[0] # Add this leading whitespace to all lines before and after the `def` aligned_prefix = [whitespace + remove_prefix(s, whitespace) for s in sourcelines[:idx]] aligned_suffix = [whitespace + remove_prefix(s, whitespace) for s in sourcelines[idx + 1:]] # Put it together again aligned_prefix.append(fn_def) return aligned_prefix + aligned_suffix # Thin wrapper around SourceRangeFactory to store extra metadata # about the function-to-be-compiled. class SourceContext(SourceRangeFactory): def __init__(self, source, filename, file_lineno, leading_whitespace_len, uses_true_division=True): super(SourceContext, self).__init__(source, filename, file_lineno, leading_whitespace_len) self.uses_true_division = uses_true_division self.filename = filename @functools.lru_cache(maxsize=None) def make_source_context(*args): return SourceContext(*args) def fake_range(): return SourceContext('', None, 0, 0).make_raw_range(0, 1) class ParsedDef(NamedTuple): ast: ast.Module ctx: SourceContext source: str filename: Optional[str] file_lineno: int def parse_def(fn): sourcelines, file_lineno, filename = get_source_lines_and_file(fn, ErrorReport.call_stack()) sourcelines = normalize_source_lines(sourcelines) source = ''.join(sourcelines) dedent_src = dedent(source) py_ast = ast.parse(dedent_src) if len(py_ast.body) != 1 or not isinstance(py_ast.body[0], ast.FunctionDef): raise RuntimeError(f"Expected a single top-level function: {filename}:{file_lineno}") leading_whitespace_len = len(source.split('\n', 1)[0]) - len(dedent_src.split('\n', 1)[0]) ctx = make_source_context(source, filename, file_lineno, leading_whitespace_len, True) return ParsedDef(py_ast, ctx, source, filename, file_lineno)