docs: def clean_part_ethn(body):
    """
      Prepare a string to be parsed for ethnicities.
  
      Returns a "translated" string (e.g. all instances of "china" converted to "chinese")
    """
  
    # patterns that can create false positive situations
    patterns_to_remove = [r'black ?or ?african', r'african ?or ?black', r'no ?black', r'no ?african', r'no ?aa', r'white ?men', 
    r'white ?gentlemen', r'no ?spanish', r'speak ?spanish', r'black ?(guys|men|hair|client)', r'dark ?hair', 
    r'(dark ?)?brown ?hair', r'white ?tie']
  
    # indian states to convert the term 'indian'
    indian_states = ['awadhi', 'badhi', 'bhutia', 'garhwali', 'halbi', 'kamboj', 'bhattarai', 'bhotiya', 'pardeshi',
    'bengali', 'madra', 'tamil', 'rajasthani', 'adivasi']
  
    for p in patterns_to_remove:
      body = re.sub(p, '', body)
    for i in indian_states:
      body = body.replace(i, 'indian')
  
    # regex substitutions
    body = re.sub(r'hong ?kong', 'chinese', body)
    body = re.sub(r'snow ?bunn(y|ies)', 'white', body)
    body = re.sub(r'a\ss\si\sa\sn', 'asian', body)
    body = re.sub(r'l\sa\st\si\sn\sa', 'latina', body)
  
    # convert many ethnicity variations into standardized ones (e.g. china -> chinese)
    for sub in eth_subs:
      body = body.replace(sub, eth_subs[sub])
  
    body = re.sub(r' +', ' ', body)
  
    return body