docs: def make_filename(s, space=None, language='msdos', strict=False, max_len=None, repeats=1024):
      r"""Process string to remove any characters not allowed by the language specified (default: MSDOS)
  
      In addition, optionally replace spaces with the indicated "space" character
      (to make the path useful in a copy-paste without quoting).
  
      Uses the following regular expression to substitute spaces for invalid characters:
  
          re.sub(r'[ :\\/?*&"<>|~`!]{1}', space, s)
  
      >>> make_filename(r'Whatever crazy &s $h!7 n*m3 ~\/ou/ can come up. with.`txt`!', strict=False)
      'Whatever-crazy-s-$h-7-n-m3-ou-can-come-up.-with.-txt-'
      >>> make_filename(r'Whatever crazy &s $h!7 n*m3 ~\/ou/ can come up. with.`txt`!', strict=False, repeats=1)
      'Whatever-crazy--s-$h-7-n-m3----ou--can-come-up.-with.-txt--'
      >>> make_filename(r'Whatever crazy &s $h!7 n*m3 ~\/ou/ can come up. with.`txt`!', repeats=1)
      'Whatever-crazy--s-$h-7-n-m3----ou--can-come-up.-with.-txt--'
      >>> make_filename(r'Whatever crazy &s $h!7 n*m3 ~\/ou/ can come up. with.`txt`!')
      'Whatever-crazy-s-$h-7-n-m3-ou-can-come-up.-with.-txt-'
      >>> make_filename(r'Whatever crazy &s $h!7 n*m3 ~\/ou/ can come up. with.`txt`!', strict=True, repeats=1)
      'Whatever_crazy_s_h_7_n_m3_ou_can_come_up_with_txt_'
      >>> make_filename(r'Whatever crazy &s $h!7 n*m3 ~\/ou/ can come up. with.`txt`!', strict=True, repeats=1, max_len=14)
      'Whatever_crazy'
      >>> make_filename(r'Whatever crazy &s $h!7 n*m3 ~\/ou/ can come up. with.`txt`!', max_len=14)
      'Whatever-crazy'
      """
      filename = None
      if strict or language.lower().strip() in ('strict', 'variable', 'expression', 'python'):
          if space is None:
              space = '_'
          elif not space:
              space = ''
          filename = make_name(s, space=space, lower=False)
      else:
          if space is None:
              space = '-'
          elif not space:
              space = ''
      if not filename:
          if language.lower().strip() in ('posix', 'unix', 'linux', 'centos', 'ubuntu', 'fedora',
                                          'redhat', 'rhel', 'debian', 'deb'):
              filename = re.sub(r'[^0-9A-Za-z._-]' + '\{1,{0}\}'.format(repeats), space, s)
          else:
              filename = re.sub(r'[ :\\/?*&"<>|~`!]{' + ('1,{0}'.format(repeats)) + r'}', space, s)
      if max_len and int(max_len) > 0 and filename:
          return filename[:int(max_len)]
      else:
          return filename