docs: def generate_budget_data_package(self, resource):
          """
          Try to grab a budget data package schema from the resource.
          The schema only allows fields which are defined in the budget
          data package specification. If a field is found that is not in
          the specification this will return a NotABudgetDataPackageException
          and in that case we can just return and ignore the resource
          """
  
          # Return if the budget data package fields have not been filled in
          if not self.are_budget_data_package_fields_filled_in(resource):
              return
  
          try:
              resource['schema'] = self.data.schema
          except exceptions.NotABudgetDataPackageException:
              log.debug('Resource is not a Budget Data Package')
              resource['schema'] = []
              return
  
          # If the schema fits, this can be exported as a budget data package
          # so we add the missing metadata fields to the resource.
          resource['BudgetDataPackage'] = True
          resource['standard'] = self.data.version
          resource['granularity'] = self.data.granularity
          resource['type'] = self.data.budget_type