MCPcopy
hub / github.com/NVIDIA/TensorRT-LLM / __setattr__

Method __setattr__

tensorrt_llm/module.py:69–100  ·  view source on GitHub ↗
(self, name, value)

Source from the content-addressed store, hash-verified

67 raise AttributeError("'{}' object has no attribute '{}'".format(type(self).__name__, name))
68
69 def __setattr__(self, name, value) -> None:
70 from .parameter import Parameter
71
72 # Improved module setattr to handle one edge case:
73 # attribute could be first set to None and later reset to Parameter / Module class
74
75 try:
76 super().__getattribute__(name)
77
78 except AttributeError:
79 # if base class doesn't have the attribute, no matter we init or reset:
80 # - keep Parameter and Module attrs in this Module class
81 # - leave all other attrs in base class
82 if isinstance(value, Parameter):
83 self.__dict__.get("_parameters")[name] = value
84 elif isinstance(value, Module):
85 self.__dict__.get("_modules")[name] = value
86 else:
87 super().__setattr__(name, value)
88
89 else:
90 # if base class has the attribute, reset as follows:
91 # - when reset as Parameter or Module attr, remove from base & add to this Module class
92 # - other types reset and remain in base class
93 if isinstance(value, Parameter):
94 super().__delattr__(name)
95 self.__dict__.get("_parameters")[name] = value
96 elif isinstance(value, Module):
97 super().__delattr__(name)
98 self.__dict__.get("_modules")[name] = value
99 else:
100 super().__setattr__(name, value)
101
102 def named_modules(self, memo=None, prefix="", remove_duplicate=True):
103 if memo is None:

Callers

nothing calls this directly

Calls 2

__getattribute__Method · 0.45
getMethod · 0.45

Tested by

no test coverage detected