Import and return ``bar`` given the string ``foo.bar``. Calling ``bar = import_item("foo.bar")`` is the functional equivalent of executing the code ``from foo import bar``. Parameters ---------- name : string The fully qualified name of the module/package being imported
(name: str)
| 10 | |
| 11 | |
| 12 | def import_item(name: str) -> Any: |
| 13 | """Import and return ``bar`` given the string ``foo.bar``. |
| 14 | |
| 15 | Calling ``bar = import_item("foo.bar")`` is the functional equivalent of |
| 16 | executing the code ``from foo import bar``. |
| 17 | |
| 18 | Parameters |
| 19 | ---------- |
| 20 | name : string |
| 21 | The fully qualified name of the module/package being imported. |
| 22 | |
| 23 | Returns |
| 24 | ------- |
| 25 | mod : module object |
| 26 | The module that was imported. |
| 27 | """ |
| 28 | |
| 29 | parts = name.rsplit(".", 1) |
| 30 | if len(parts) == 2: |
| 31 | # called with 'foo.bar....' |
| 32 | package, obj = parts |
| 33 | module = __import__(package, fromlist=[obj]) |
| 34 | try: |
| 35 | pak = getattr(module, obj) |
| 36 | except AttributeError as e: |
| 37 | raise ImportError("No module named %s" % obj) from e |
| 38 | return pak |
| 39 | else: |
| 40 | # called with un-dotted string |
| 41 | return __import__(parts[0]) |
no outgoing calls
searching dependent graphs…