Replace shlex with cross-platform oslex

This commit is contained in:
Titusz Pan 2025-04-23 14:33:01 +02:00
parent 5251a2452c
commit d9aa3cb2d4
No known key found for this signature in database
GPG key ID: 4793D770C7B5E1D4
5 changed files with 11 additions and 9 deletions

View file

@ -4,7 +4,7 @@ import subprocess
import sys import sys
import traceback import traceback
import warnings import warnings
import shlex import oslex
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
@ -45,7 +45,7 @@ class Linter:
return fname return fname
def run_cmd(self, cmd, rel_fname, code): def run_cmd(self, cmd, rel_fname, code):
cmd += " " + shlex.quote(rel_fname) cmd += " " + oslex.quote(rel_fname)
returncode = 0 returncode = 0
stdout = "" stdout = ""

View file

@ -1,7 +1,7 @@
import itertools import itertools
import os import os
import platform import platform
import shlex import oslex
import subprocess import subprocess
import sys import sys
import tempfile import tempfile
@ -384,10 +384,7 @@ def printable_shell_command(cmd_list):
Returns: Returns:
str: Shell-escaped command string. str: Shell-escaped command string.
""" """
if platform.system() == "Windows": return oslex.join(cmd_list)
return subprocess.list2cmdline(cmd_list)
else:
return shlex.join(cmd_list)
def main(): def main():

View file

@ -184,6 +184,8 @@ monotonic==1.6
# via # via
# -c requirements/common-constraints.txt # -c requirements/common-constraints.txt
# posthog # posthog
mslex==1.3.0
# via oslex
multidict==6.4.3 multidict==6.4.3
# via # via
# -c requirements/common-constraints.txt # -c requirements/common-constraints.txt
@ -202,6 +204,8 @@ openai==1.73.0
# via # via
# -c requirements/common-constraints.txt # -c requirements/common-constraints.txt
# litellm # litellm
oslex==0.1.3
# via -r requirements/requirements.in
packaging==24.2 packaging==24.2
# via # via
# -c requirements/common-constraints.txt # -c requirements/common-constraints.txt
@ -423,6 +427,6 @@ zipp==3.21.0
# via # via
# -c requirements/common-constraints.txt # -c requirements/common-constraints.txt
# importlib-metadata # importlib-metadata
tree-sitter==0.23.2; python_version < "3.10" tree-sitter==0.23.2; python_version < "3.10"
tree-sitter==0.24.0; python_version >= "3.10" tree-sitter==0.24.0; python_version >= "3.10"

View file

@ -28,6 +28,7 @@ watchfiles
socksio socksio
pip pip
pillow pillow
oslex
# The proper dependency is networkx[default], but this brings # The proper dependency is networkx[default], but this brings
# in matplotlib and a bunch of other deps # in matplotlib and a bunch of other deps

View file

@ -43,7 +43,7 @@ class TestLinter(unittest.TestCase):
from pathlib import Path from pathlib import Path
root = Path(__file__).parent.parent.parent.absolute().as_posix() root = Path(__file__).parent.parent.parent.absolute().as_posix()
linter = Linter(encoding="utf-8", root=root) linter = Linter(encoding="utf-8", root=root)
result = linter.run_cmd("dir", "tests/basic", "code") result = linter.run_cmd("dir", "tests\\basic", "code")
self.assertIsNone(result) self.assertIsNone(result)
@patch("subprocess.Popen") @patch("subprocess.Popen")