{"library":"mslex","title":"mslex","description":"mslex is a Python library that provides `shlex`-like functionality specifically tailored for Windows shell command-line parsing and quoting. It addresses the complex and often inconsistent behaviors of `cmd.exe`, `CommandLineToArgvW`, and older `msvcrt.dll` runtimes on Windows. The library offers `split`, `quote`, and `join` functions, making it easier to construct and deconstruct command lines for Windows environments. It is currently at version 1.3.0, released on October 16, 2024, and is considered stable and actively maintained for its niche use case.","language":"python","status":"active","last_verified":"Sat May 16","install":{"commands":["pip install mslex"],"cli":null},"imports":["import mslex","from mslex import split","from mslex import quote","from mslex import join"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import mslex\nimport sys\n\n# Example 1: Quoting a string for Windows command line\npath_with_spaces = r'C:\\Program Files\\My App\\app.exe'\nquoted_path = mslex.quote(path_with_spaces)\nprint(f\"Original path: {path_with_spaces}\")\nprint(f\"Quoted path: {quoted_path}\")\n# Expected: C:\\\\Program\\ Files\\\\My\\ App\\\\app.exe (or similar depending on for_cmd)\n\n# Example 2: Splitting a Windows command line string\ncommand_string = 'dir \"C:\\\\Program Files\" /s'\nargs = mslex.split(command_string)\nprint(f\"Command string: {command_string}\")\nprint(f\"Split arguments: {args}\")\n# Expected: ['dir', 'C:\\\\Program Files', '/s']\n\n# Example 3: Handling complex Windows quoting nuances\n# mslex attempts to parse both UCRT and msvcrt.dll ways by default and can raise an error if they disagree.\n# You can specify ucrt=True/False or like_cmd=True/False for specific behaviors.\n# This example demonstrates a basic split without specific runtime flags.\ncomplex_command = 'program.exe arg1 \"arg 2 with spaces\" ^\"escaped arg^\"'\nif sys.platform == 'win32':\n    try:\n        parsed_complex_args = mslex.split(complex_command)\n        print(f\"Complex command (Windows): {complex_command}\")\n        print(f\"Parsed complex arguments: {parsed_complex_args}\")\n    except ValueError as e:\n        print(f\"Could not parse complex command due to ambiguity: {e}\")\nelse:\n    print(f\"mslex is primarily for Windows; skipping complex example on {sys.platform}\")","lang":"python","description":"This quickstart demonstrates the core `mslex.quote` and `mslex.split` functions. It shows how to quote a path with spaces for Windows command lines and how to parse a command string into arguments. A note on complex Windows quoting behavior is included, highlighting mslex's ability to handle nuances and potential ambiguities.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-16","installed_version":"1.3.0","pypi_latest":"1.3.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.5,"avg_import_s":0.01,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"17.8M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0,"mem_mb":0.5,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.02,"mem_mb":0.7,"disk_size":"19.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.7,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"11.5M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":0.01,"mem_mb":0.6,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.7,"disk_size":"11.3M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.01,"mem_mb":0.5,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.01,"mem_mb":0.4,"disk_size":"17.3M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"mslex","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0,"mem_mb":0.4,"disk_size":"18M"}]}}