Resolve imports by string paths.
Warning
This module is an internal implementation detail which may change
between releases without notice (see
Versioning and Compatibility).
get_object_path
get_object_path(obj: Any) -> str
Get the fully qualified path of an object.
Example
>>> from proxystore.connectors.protocols import Connector
>>> get_object_path(Connector)
'proxystore.connectors.protocols.Connector'
Parameters:
-
obj
(Any)
–
Object to get fully qualified path of.
Returns:
-
str
–
Fully qualified path of obj.
Source code in proxystore/utils/imports.py
| def get_object_path(obj: Any) -> str:
"""Get the fully qualified path of an object.
Example:
```python
>>> from proxystore.connectors.protocols import Connector
>>> get_object_path(Connector)
'proxystore.connectors.protocols.Connector'
```
Args:
obj: Object to get fully qualified path of.
Returns:
Fully qualified path of `obj`.
"""
return f'{obj.__module__}.{obj.__qualname__}'
|
import_from_path
Import object via its fully qualified path.
Example
>>> import_from_path('proxystore.connectors.protocols.Connector')
<class 'proxystore.connectors.protocols.Connector'>
Parameters:
-
path
(str)
–
Fully qualified path of object to import.
Returns:
Raises:
Source code in proxystore/utils/imports.py
| def import_from_path(path: str) -> type[Any]:
"""Import object via its fully qualified path.
Example:
```python
>>> import_from_path('proxystore.connectors.protocols.Connector')
<class 'proxystore.connectors.protocols.Connector'>
```
Args:
path: Fully qualified path of object to import.
Returns:
Imported object.
Raises:
ImportError: If an object at the `path` is not found.
"""
module_path, _, name = path.rpartition('.')
if len(module_path) == 0:
raise ImportError(
f'Object path must contain at least one module. Got {path}',
)
module = importlib.import_module(module_path)
try:
return getattr(module, name)
except AttributeError as e:
raise ImportError(
f'Cannot import name {name!r} from {module_path!r}.',
name=module_path,
) from e
|