code: def generate_execute_macro(model, config, manifest, provider):
      
      model_dict = model.serialize()
      context = generate_base(model, model_dict, config, manifest, None,
                              provider)
  
      return modify_generated_context(context, model, model_dict, config,
                                      manifest)
docs: Internally, macros can be executed like nodes, with some restrictions:
  
       - they don't have have all values available that nodes do:
          - 'this', 'pre_hooks', 'post_hooks', and 'sql' are missing
          - 'schema' does not use any 'model' information
       - they can't be configured with config() directives