docs: def _setHeaders(self, call = None, **kwargs):
      '''
      Attach particular SOAP headers to the request depending on the method call made
      '''
      # All calls, including utility calls, set the session header
      headers = {'SessionHeader': self._sessionHeader}
  
      if 'debug_categories' in kwargs:
        #ERROR, WARN, INFO, DEBUG, FINE, FINER, FINEST
        #Db, Workflow, Validation, Callout, Apex Code, Apex Profiling, All
        debug_categories = kwargs['debug_categories']
  
        headers['DebuggingHeader'] = {
          'categories' : debug_categories
        }
  
        # headers['DebuggingHeader'] = {
        #   'categories' : {
        #     'category' : kwargs['debug_category'],
        #     'level'    : kwargs['debug_level']
        #   }
        # }
  
      if call in ('convertLead',
                  'create',
                  'merge',
                  'process',
                  'undelete',
                  'update',
                  'upsert'):
        if self._allowFieldTruncationHeader is not None:
          headers['AllowFieldTruncationHeader'] = self._allowFieldTruncationHeader
  
      if call in ('create',
                  'merge',
                  'update',
                  'upsert'):
        if self._assignmentRuleHeader is not None:
          headers['AssignmentRuleHeader'] = self._assignmentRuleHeader
  
      # CallOptions will only ever be set by the SforcePartnerClient
      if self._callOptions is not None:
        if call in ('create',
                    'merge',
                    'queryAll',
                    'query',
                    'queryMore',
                    'retrieve',
                    'search',
                    'update',
                    'upsert',
                    'convertLead',
                    'login',
                    'delete',
                    'describeGlobal',
                    'describeLayout',
                    'describeTabs',
                    'describeSObject',
                    'describeSObjects',
                    'getDeleted',
                    'getUpdated',
                    'process',
                    'undelete',
                    'getServerTimestamp',
                    'getUserInfo',
                    'setPassword',
                    'resetPassword'):
          headers['CallOptions'] = self._callOptions
  
      if call in ('create',
                  'delete',
                  'resetPassword',
                  'update',
                  'upsert'):
        if self._emailHeader is not None:
          headers['EmailHeader'] = self._emailHeader
  
      if call in ('describeSObject',
                  'describeSObjects'):
        if self._localeOptions is not None:
          headers['LocaleOptions'] = self._localeOptions
  
      if call == 'login':
        if self._loginScopeHeader is not None:
          headers['LoginScopeHeader'] = self._loginScopeHeader
  
      if call in ('create',
                  'merge',
                  'query',
                  'retrieve',
                  'update',
                  'upsert'):
        if self._mruHeader is not None:
          headers['MruHeader'] = self._mruHeader
  
      if call in ('convertLead',
                  'create',
                  'delete',
                  'describeGlobal',
                  'describeLayout',
                  'describeSObject',
                  'describeSObjects',
                  'describeTabs',
                  'merge',
                  'process',
                  'query',
                  'retrieve',
                  'search',
                  'undelete',
                  'update',
                  'upsert'):
        if self._packageVersionHeader is not None:
          headers['PackageVersionHeader'] = self._packageVersionHeader
  
      if call in ('query',
                  'queryAll',
                  'queryMore',
                  'retrieve'):
        if self._queryOptions is not None:
          headers['QueryOptions'] = self._queryOptions
  
      if call == 'delete':
        if self._userTerritoryDeleteHeader is not None:
          headers['UserTerritoryDeleteHeader'] = self._userTerritoryDeleteHeader
  
  
      #print '\n\n>>>>>>>>>>>>>>>> setting header '
      #print headers
  
      self._sforce.set_options(soapheaders = headers)