docs: def get_table_description(self, cursor, table_name):
          "Returns a description of the table, with the DB-API cursor.description interface."
          # pylint:disable=too-many-locals,unused-argument
          result = []
          for field in self.table_description_cache(table_name)['fields']:
              params = OrderedDict()
              if field['label'] and field['label'] != camel_case_to_spaces(re.sub('__c$', '', field['name'])).title():
                  params['verbose_name'] = field['label']
              if not field['updateable'] or not field['createable']:
                  # Fields that are result of a formula or system fields modified
                  # by triggers or by other apex code
                  sf_read_only = (0 if field['updateable'] else 1) | (0 if field['createable'] else 2)
                  # use symbolic names NOT_UPDATEABLE, NON_CREATABLE, READ_ONLY instead of 1, 2, 3
                  params['sf_read_only'] = reverse_models_names[sf_read_only]
              if field['defaultValue'] is not None:
                  params['default'] = field['defaultValue']
              if field['inlineHelpText']:
                  params['help_text'] = field['inlineHelpText']
              if field['picklistValues']:
                  params['choices'] = [(x['value'], x['label']) for x in field['picklistValues'] if x['active']]
              if field['defaultedOnCreate'] and field['createable']:
                  params['default'] = SymbolicModelsName('DEFAULTED_ON_CREATE')
              if field['type'] == 'reference' and not field['referenceTo']:
                  params['ref_comment'] = 'No Reference table'
                  field['type'] = 'string'
              if field['calculatedFormula']:
                  # calculated formula field are without length in Salesforce 45 Spring '19,
                  # but Django requires a length, though the field is read only and never written
                  field['length'] = 1300
              # We prefer "length" over "byteLength" for "internal_size".
              # (because strings have usually: byteLength == 3 * length)
              result.append(FieldInfo(
                  field['name'],       # name,
                  field['type'],       # type_code,
                  field['length'],     # display_size,
                  field['length'],     # internal_size,
                  field['precision'],  # precision,
                  field['scale'],      # scale,
                  field['nillable'],   # null_ok,
                  params.get('default'),  # default
                  params,
              ))
          return result