(self, name: str, value)
| 629 | return set(loaded), set(skipped) |
| 630 | |
| 631 | def __setattr__(self, name: str, value): |
| 632 | is_module_like = _is_module(value) or isinstance(value, (list, tuple, dict)) |
| 633 | if name != "_modules": |
| 634 | modules = self.__dict__.get("_modules") |
| 635 | if modules is None and is_module_like: |
| 636 | raise AttributeError( |
| 637 | "cannot assign module before Module.__init__() call" |
| 638 | ) |
| 639 | if is_module_like: |
| 640 | if name not in modules: |
| 641 | modules.append(name) |
| 642 | else: |
| 643 | if modules is not None and name in modules: |
| 644 | modules.remove(name) |
| 645 | |
| 646 | def append_name(prefix, name): |
| 647 | if prefix is None or prefix == "": |
| 648 | return name |
| 649 | return prefix + "." + name |
| 650 | |
| 651 | def set_name(parent, prefix, name, obj): |
| 652 | if isinstance(obj, Tensor): |
| 653 | assert obj.name is not None |
| 654 | if obj.name != "": |
| 655 | name = obj.name |
| 656 | full_name = append_name(prefix, name) |
| 657 | if obj._short_name and obj._short_name != name: |
| 658 | logger.warning( |
| 659 | "try setting the submodule `{}` to `{}`'s new attribute `{}`, its name `{}` will remain unchanged".format( |
| 660 | obj._short_name, type(parent), name, obj._short_name |
| 661 | ) |
| 662 | ) |
| 663 | return |
| 664 | if isinstance(obj, Tensor): |
| 665 | obj._prefix = prefix |
| 666 | obj._name = full_name |
| 667 | obj._short_name = name |
| 668 | obj._set_name(obj._name) |
| 669 | return obj._name |
| 670 | elif isinstance(obj, Module): |
| 671 | obj._name = full_name |
| 672 | obj._short_name = name |
| 673 | for k, v in obj._flatten(recursive=False, with_key=True): |
| 674 | set_name(obj, full_name, k, v) |
| 675 | return obj._name |
| 676 | else: |
| 677 | assert False |
| 678 | |
| 679 | for k, v in _expand_structure(name, value): |
| 680 | prefix = self._name if self._name else self.name |
| 681 | set_name(self, prefix, k, v) |
| 682 | super().__setattr__(name, value) |
| 683 | |
| 684 | def __setstate__(self, state): |
| 685 | if "_short_name" not in state: |
nothing calls this directly
no test coverage detected