In the following examples it is assumed, that using the assignment with
safe_loc()would lead to an invalid reference. Then there are two possible usecases:
with DummyManipulation(zmat, True): zmat.safe_loc[...] = ... # This inserts required dummy atoms and removes them, # if they are not needed anymore. # Removes only dummy atoms, that were automatically inserted. with DummyManipulation(zmat, False): zmat.safe_loc[...] = ... # This raises an exception # :class:`~chemcoord.exceptions.InvalidReference`. # which can be handled appropiately. # The zmat instance is unmodified, if an exception was raised.