MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / expandvars

Function expandvars

tools/python-3.11.9-amd64/Lib/ntpath.py:380–486  ·  view source on GitHub ↗

Expand shell variables of the forms $var, ${var} and %var%. Unknown variables are left unchanged.

(path)

Source from the content-addressed store, hash-verified

378# XXX except '^|<>='.
379
380def expandvars(path):
381 """Expand shell variables of the forms $var, ${var} and %var%.
382
383 Unknown variables are left unchanged."""
384 path = os.fspath(path)
385 if isinstance(path, bytes):
386 if b'$' not in path and b'%' not in path:
387 return path
388 import string
389 varchars = bytes(string.ascii_letters + string.digits + '_-', 'ascii')
390 quote = b'\'&#x27;
391 percent = b'%'
392 brace = b'{'
393 rbrace = b'}'
394 dollar = b'$'
395 environ = getattr(os, 'environb', None)
396 else:
397 if '$' not in path and '%' not in path:
398 return path
399 import string
400 varchars = string.ascii_letters + string.digits + '_-'
401 quote = '\'&#x27;
402 percent = '%'
403 brace = '{'
404 rbrace = '}'
405 dollar = '$'
406 environ = os.environ
407 res = path[:0]
408 index = 0
409 pathlen = len(path)
410 while index < pathlen:
411 c = path[index:index+1]
412 if c == quote: # no expansion within single quotes
413 path = path[index + 1:]
414 pathlen = len(path)
415 try:
416 index = path.index(c)
417 res += c + path[:index + 1]
418 except ValueError:
419 res += c + path
420 index = pathlen - 1
421 elif c == percent: # variable or '%'
422 if path[index + 1:index + 2] == percent:
423 res += c
424 index += 1
425 else:
426 path = path[index+1:]
427 pathlen = len(path)
428 try:
429 index = path.index(percent)
430 except ValueError:
431 res += percent + path
432 index = pathlen - 1
433 else:
434 var = path[:index]
435 try:
436 if environ is None:
437 value = os.fsencode(os.environ[os.fsdecode(var)])

Callers

nothing calls this directly

Calls 1

indexMethod · 0.45

Tested by

no test coverage detected