Skip to content

Update help message for 'path' argument to match user's environment #13937

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions tests/runtests.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import subprocess
import sys
from importlib.util import find_spec
from pathlib import Path
from pathlib import Path, PurePath

from ts_utils.paths import TEST_CASES_DIR, test_cases_path
from ts_utils.utils import colored
Expand Down Expand Up @@ -58,15 +58,17 @@ def main() -> None:
choices=("3.9", "3.10", "3.11", "3.12", "3.13"),
help="Target Python version for the test (default: %(default)s).",
)
parser.add_argument("path", help="Path of the stub to test in format <folder>/<stub>, from the root of the project.")
parser.add_argument(
"path", help=f"Path of the stub to test in format {PurePath('<folder>', '<stub>')}, from the root of the project."
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment/question as below

Suggested change
"path", help=f"Path of the stub to test in format {PurePath('<folder>', '<stub>')}, from the root of the project."
"path", help=f"Path of the stub to test in format {Path('<folder>', '<stub>')}, from the root of the project."
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have enough knowledge to say whether Path or PurePath is better or if they are the same. PurePath lacks the logic that interacts with the filesystem, and in this case, the < and > characters are illegal in Windows. So, I would balk at using Path because I would be worried that Path might try to validate the "path" and throw an error.

That same logic could be extended to suggest that os.path.sep is safer than PurePath.

Nevertheless, I don't know: I am speculating.

Path does work on my Windows system, though.

(.venv) C:\apps\astToolkit>py
Python 3.13.3 (tags/v3.13.3:6280bb5, Apr  8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pathlib import Path
>>> {Path('<folder>', '<stub>')}
{WindowsPath('<folder>/<stub>')}
>>> 
)
args = parser.parse_args()
path: str = args.path
run_stubtest: bool = args.run_stubtest
python_version: str = args.python_version

path_tokens = Path(path).parts
if len(path_tokens) != 2:
parser.error("'path' argument should be in format <folder>/<stub>.")
parser.error(f"'path' argument should be in format {PurePath('<folder>', '<stub>')}.")
Copy link
Collaborator

@Avasam Avasam May 4, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't Path enough? (in Windows, it's a WindowsPath, which stringifies the way you want)

Suggested change
parser.error(f"'path' argument should be in format {PurePath('<folder>', '<stub>')}.")
parser.error(f"'path' argument should be in format {Path('<folder>', '<stub>')}.")
>>> from pathlib import Path
>>> path = Path('<folder>', '<stub>')
>>> print(path, type(path))
<folder>\<stub> <class 'pathlib._local.WindowsPath'>

I still would prefer fixing the support for forward-slashes. As that's intended to work.

folder, stub = path_tokens
if folder not in {"stdlib", "stubs"}:
parser.error("Only the 'stdlib' and 'stubs' folders are supported.")
Expand Down