(
name: str,
module_name: str,
*,
locals_: Optional[Mapping[str, Any]] = None,
)
| 274 | |
| 275 | |
| 276 | def eval_name_only( |
| 277 | name: str, |
| 278 | module_name: str, |
| 279 | *, |
| 280 | locals_: Optional[Mapping[str, Any]] = None, |
| 281 | ) -> Any: |
| 282 | if "." in name: |
| 283 | return eval_expression(name, module_name, locals_=locals_) |
| 284 | |
| 285 | try: |
| 286 | base_globals: Dict[str, Any] = sys.modules[module_name].__dict__ |
| 287 | except KeyError as ke: |
| 288 | raise NameError( |
| 289 | f"Module {module_name} isn't present in sys.modules; can't " |
| 290 | f"resolve name {name}" |
| 291 | ) from ke |
| 292 | |
| 293 | # name only, just look in globals. eval() works perfectly fine here, |
| 294 | # however we are seeking to have this be faster, as this occurs for |
| 295 | # every Mapper[] keyword, etc. depending on configuration |
| 296 | try: |
| 297 | return base_globals[name] |
| 298 | except KeyError as ke: |
| 299 | # check in builtins as well to handle `list`, `set` or `dict`, etc. |
| 300 | try: |
| 301 | return builtins.__dict__[name] |
| 302 | except KeyError: |
| 303 | pass |
| 304 | |
| 305 | raise NameError( |
| 306 | f"Could not locate name {name} in module {module_name}" |
| 307 | ) from ke |
| 308 | |
| 309 | |
| 310 | def resolve_name_to_real_class_name(name: str, module_name: str) -> str: |
no test coverage detected