parameters: (s, local_vars)
docstring: Perform shell/Perl-style variable substitution on 'string'.  Every
      occurrence of '$' followed by a name is considered a variable, and
      variable is substituted by the value found in the 'local_vars'
      dictionary, or in 'os.environ' if it's not in 'local_vars'.
      'os.environ' is first checked/augmented to guarantee that it contains
      certain values: see 'check_environ()'.  Raise ValueError for any
      variables not found in either 'local_vars' or 'os.environ'.
docstring_summary: Perform shell/Perl-style variable substitution on 'string'.  Every
      occurrence of '$' followed by a name is considered a variable, and
      variable is substituted by the value found in the 'local_vars'
      dictionary, or in 'os.environ' if it's not in 'local_vars'.
      'os.environ' is first checked/augmented to guarantee that it contains
      certain values: see 'check_environ()'.  Raise ValueError for any
      variables not found in either 'local_vars' or 'os.environ'.
docstring_tokens: Perform shell / Perl - style variable substitution on string . Every occurrence of $ followed by a name is considered a variable and variable is substituted by the value found in the local_vars dictionary or in os . environ if it s not in local_vars . os . environ is first checked / augmented to guarantee that it contains certain values : see check_environ () . Raise ValueError for any variables not found in either local_vars or os . environ .
function: def subst_vars (s, local_vars):
      """Perform shell/Perl-style variable substitution on 'string'.  Every
      occurrence of '$' followed by a name is considered a variable, and
      variable is substituted by the value found in the 'local_vars'
      dictionary, or in 'os.environ' if it's not in 'local_vars'.
      'os.environ' is first checked/augmented to guarantee that it contains
      certain values: see 'check_environ()'.  Raise ValueError for any
      variables not found in either 'local_vars' or 'os.environ'.
      """
      check_environ()
      def _subst (match, local_vars=local_vars):
          var_name = match.group(1)
          if var_name in local_vars:
              return str(local_vars[var_name])
          else:
              return os.environ[var_name]
  
      try:
          return re.sub(r'\$([a-zA-Z_][a-zA-Z_0-9]*)', _subst, s)
      except KeyError, var:
          raise ValueError, "invalid variable '$%s'" % var
function_tokens: def subst_vars ( s , local_vars ) : check_environ ( ) def _subst ( match , local_vars = local_vars ) : var_name = match . group ( 1 ) if var_name in local_vars : return str ( local_vars [ var_name ] ) else : return os . environ [ var_name ] try : return re . sub ( r'\$([a-zA-Z_][a-zA-Z_0-9]*)' , _subst , s ) except KeyError , var : raise ValueError , "invalid variable '$%s'" % var