docs: def update(self, reconfigure=False):
          """ update the environment """
          try:
              self.phase = PHASE.UPDATE
              self.logger.info("Updating environment %s..." % self.namespace)
              self.install_sandboxes()
              self.instantiate_features()
              # We don't grab inputs, only on install
              # updates inputs are grabbed on demand
              # self.grab_inputs(reconfigure=reconfigure)
              if reconfigure:
                  self.grab_inputs(reconfigure=True)
              else:
                  self._copy_source_to_target()
              self._specialize(reconfigure=reconfigure)
              for feature in self.features.run_order:
                  self.run_action(feature, 'sync')
              self.inject_environment_config()
              self._finalize()
          except Exception:
              self.logger.debug("", exc_info=sys.exc_info())
              et, ei, tb = sys.exc_info()
              reraise(et, ei, tb)