Source code for rez.utils.py23

# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Rez Project


"""
Custom py2/3 interoperability code.

Put any code here that deals with py2/3 interoperability, beyond simple cases
that use (for eg) the six module.
"""
from rez.vendor.six import six


[docs]def get_function_arg_names(func): """Get names of a function's args. Gives full list of positional and keyword-only (py3 only) args. """ import inspect if hasattr(inspect, "getfullargspec"): spec = inspect.getfullargspec(func) return spec.args + spec.kwonlyargs else: return inspect.getargspec(func).args
[docs]def load_module_from_file(name, filepath): """Load a python module from a sourcefile. Args: name (str): Module name. filepath (str): Python sourcefile. Returns: `module`: Loaded module. """ if six.PY2: import imp with open(filepath) as f: return imp.load_source(name, filepath, f) else: from importlib.machinery import SourceFileLoader return SourceFileLoader(name, filepath).load_module()