docs: def add_name(self, tax_id, tax_name, source_name=None, source_id=None,
                   name_class='synonym', is_primary=False, is_classified=None,
                   execute=True, **ignored):
  
          """Add a record to the names table corresponding to
          ``tax_id``. Arguments are as follows:
  
          - tax_id (string, required)
          - tax_name (string, required)
  
          *one* of the following are required:
  
          - source_id (int or string coercable to int)
          - source_name (string)
  
          ``source_id`` or ``source_name`` must identify an existing
          record in table "source".
  
          The following are optional:
  
          - name_class (string, default 'synonym')
          - is_primary (bool, see below)
          - is_classified (bool or None, default None)
  
          ``is_primary`` is optional and defaults to True if only one
          name is provided; otherwise is_primary must be True for
          exactly one name (and is optional in others).
  
          """
  
          assert isinstance(is_primary, bool)
          assert is_classified in {None, True, False}
          if ignored:
              log.info('some arguments were ignored: {} '.format(str(ignored)))
  
          source_id = self.get_source(source_id, source_name)['id']
  
          statements = []
  
          if is_primary:
              statements.append(self.names.update(
                  whereclause=self.names.c.tax_id == tax_id,
                  values={'is_primary': False}))
  
          statements.append(self.names.insert().values(
              tax_id=tax_id,
              tax_name=tax_name,
              source_id=source_id,
              is_primary=is_primary,
              name_class=name_class,
              is_classified=is_classified))
  
          if execute:
              self.execute(statements)
          else:
              return statements