Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Extract a function to check the target. Remove the _safe_realpath, no…
…w no longer needed.
  • Loading branch information
jaraco committed Dec 8, 2025
commit d1d85b9c4cbf08888ded140f9a308ba266d5923f
32 changes: 13 additions & 19 deletions Lib/pdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,34 +183,28 @@ class _ExecutableTarget:

class _ScriptTarget(_ExecutableTarget):
def __init__(self, target):
self._target = self._safe_realpath(target)

if not os.path.exists(self._target):
print(f'Error: {target} does not exist')
sys.exit(1)
if os.path.isdir(self._target):
print(f'Error: {target} is a directory')
sys.exit(1)
self._check(target)
self._target = os.path.realpath(target)

# If PYTHONSAFEPATH (-P) is not set, sys.path[0] is the directory
# of pdb, and we should replace it with the directory of the script
if not sys.flags.safe_path:
sys.path[0] = os.path.dirname(self._target)

def __repr__(self):
return self._target

@staticmethod
def _safe_realpath(path):
def _check(target):
"""
Return the canonical path (realpath) if it is accessible from the userspace.
Otherwise (for example, if the path is a symlink to an anonymous pipe),
return the original path.

See GH-142315.
Check that target is plausibly a script.
"""
realpath = os.path.realpath(path)
return realpath if os.path.exists(realpath) else path
if not os.path.exists(target):
print(f'Error: {target} does not exist')
sys.exit(1)
if os.path.isdir(target):
print(f'Error: {target} is a directory')
sys.exit(1)

def __repr__(self):
return self._target

@property
def filename(self):
Expand Down
Loading