Convenience method for making a new DeviceSpec by overriding fields. For instance: ``` my_spec = DeviceSpec=(job="my_job", device="CPU") my_updated_spec = my_spec.replace(device="GPU") my_other_spec = my_spec.replace(device=None) ``` Args: **kwargs: This method ta
(self, **kwargs)
| 215 | return self.__class__(*self._get_combined_properties(dev)) |
| 216 | |
| 217 | def replace(self, **kwargs): |
| 218 | """Convenience method for making a new DeviceSpec by overriding fields. |
| 219 | |
| 220 | For instance: |
| 221 | ``` |
| 222 | my_spec = DeviceSpec=(job="my_job", device="CPU") |
| 223 | my_updated_spec = my_spec.replace(device="GPU") |
| 224 | my_other_spec = my_spec.replace(device=None) |
| 225 | ``` |
| 226 | |
| 227 | Args: |
| 228 | **kwargs: This method takes the same args as the DeviceSpec constructor |
| 229 | |
| 230 | Returns: |
| 231 | A DeviceSpec with the fields specified in kwargs overridden. |
| 232 | """ |
| 233 | init_kwargs = dict( |
| 234 | job=self.job, replica=self.replica, task=self.task, |
| 235 | device_type=self.device_type, device_index=self.device_index) |
| 236 | |
| 237 | # Explicitly provided kwargs take precidence. |
| 238 | init_kwargs.update(kwargs) |
| 239 | return self.__class__(**init_kwargs) |
| 240 | |
| 241 | @property |
| 242 | def job(self): |