code: def _run_post_configure_callbacks(self, configure_args):
          
          resulting_configuration = ImmutableDict(self.config)
  
          # copy callbacks in case people edit them while running
          multiple_callbacks = copy.copy(
              self._post_configure_callbacks['multiple']
          )
          single_callbacks = copy.copy(self._post_configure_callbacks['single'])
          # clear out the singles
          self._post_configure_callbacks['single'] = []
  
          for callback in multiple_callbacks:
              callback(resulting_configuration, configure_args)
  
          # now do the single run callbacks
          for callback in single_callbacks:
              callback(resulting_configuration, configure_args)
docs: Run all post configure callbacks we have stored.
  
          Functions are passed the configuration that resulted from the call to
          :meth:`configure` as the first argument, in an immutable form; and are
          given the arguments passed to :meth:`configure` for the second
          argument.
  
          Returns from callbacks are ignored in all fashion.
  
          Args:
              configure_args (list[object]):
                  The full list of arguments passed to :meth:`configure`.
  
          Returns:
              None:
                  Does not return anything.