parameters: (base_path, rel_path)
return_statement: return os.path.normpath(os.path.join(base_path, rel_path))
docstring: Resolves rel_path against base_path and returns the result.
    TODO: what is this really used for?
    If rel_path begins with '$' it is returned unchanged.
    Otherwise it is resolved against base_path if relative, then normalized.
docstring_summary: Resolves rel_path against base_path and returns the result.
    TODO: what is this really used for?
    If rel_path begins with '$' it is returned unchanged.
    Otherwise it is resolved against base_path if relative, then normalized.
docstring_tokens: Resolves rel_path against base_path and returns the result . TODO : what is this really used for? If rel_path begins with $ it is returned unchanged . Otherwise it is resolved against base_path if relative then normalized .
function: def NormjoinPath(base_path, rel_path):
      """Resolves rel_path against base_path and returns the result.
    TODO: what is this really used for?
    If rel_path begins with '$' it is returned unchanged.
    Otherwise it is resolved against base_path if relative, then normalized.
    """
      if rel_path.startswith("$") and not rel_path.startswith("${configuration}"):
          return rel_path
      return os.path.normpath(os.path.join(base_path, rel_path))
function_tokens: def NormjoinPath ( base_path , rel_path ) : if rel_path . startswith ( "$" ) and not rel_path . startswith ( "${configuration}" ) : return rel_path return os . path . normpath ( os . path . join ( base_path , rel_path ) )