Skip to content
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

Remove command fails when TOML comment exists in dependencies array #1221

Closed
1 task done
gmichaeljaison opened this issue Jul 14, 2022 · 0 comments · Fixed by #1222
Closed
1 task done

Remove command fails when TOML comment exists in dependencies array #1221

gmichaeljaison opened this issue Jul 14, 2022 · 0 comments · Fixed by #1222
Labels
🐛 bug Something isn't working

Comments

@gmichaeljaison
Copy link

  • I have searched the issue tracker and believe that this is not a duplicate.

Steps to reproduce

Add some TOML comment in the dependencies array section.

dependencies = [
    "logzero>=1.7.0",
    # some random comment
]

Run pdm remove logzero command, and observe that it fails with following error.

❯ pdm remove logzero -v
Traceback (most recent call last):
  File "/Users/michaeljaison/.local/bin/pdm", line 10, in <module>
    sys.exit(main())
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/pdm/core.py", line 256, in main
    return Core().main(args)
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/pdm/core.py", line 189, in main
    raise cast(Exception, err).with_traceback(traceback)
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/pdm/core.py", line 184, in main
    f(options.project, options)
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/pdm/cli/commands/remove.py", line 40, in handle
    actions.do_remove(
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/pdm/cli/actions.py", line 413, in do_remove
    check_project_file(project)
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/pdm/cli/utils.py", line 513, in check_project_file
    if not project.meta:
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/pdm/project/core.py", line 624, in meta
    if not self.pyproject:
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/pdm/project/core.py", line 129, in pyproject
    data = tomlkit.parse(self.pyproject_file.read_text("utf-8"))
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/tomlkit/api.py", line 82, in parse
    return Parser(string).parse()
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/tomlkit/parser.py", line 154, in parse
    key, value = self._parse_table()
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/tomlkit/parser.py", line 989, in _parse_table
    item = self._parse_item()
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/tomlkit/parser.py", line 235, in _parse_item
    return self._parse_key_value(True)
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/tomlkit/parser.py", line 328, in _parse_key_value
    val = self._parse_value()
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/tomlkit/parser.py", line 432, in _parse_value
    return self._parse_array()
  File "/Users/michaeljaison/Library/Application Support/pdm/venv/lib/python3.10/site-packages/tomlkit/parser.py", line 600, in _parse_array
    raise self.parse_error(UnexpectedCharError, self._current)
tomlkit.exceptions.UnexpectedCharError: Unexpected character: 'p' at line 14 col 1

You can also observe that the pyproject.toml file has become invalid after the failure.

dependencies = [
    # some random comment]

Actual behavior

Failure to handle comments in TOML file, and PDM creates invalid TOML file.

Expected behavior

Handle comments in TOML file, and PDM commands should not create invalid TOML file

Environment Information

# Paste the output of `pdm info && pdm info --env` below:
❯ pdm info -p packages/greet
PDM version:
  2.0.0b2
Python Interpreter:
  /Users/michaeljaison/.pyenv/versions/py-skeleton-pdm/bin/python3 (3.10)
Project Root:
  /Users/michaeljaison/Sync/python-repo-skeleton/packages/greet
Project Packages:
  None

❯ pdm info --env -p packages/greet
{
  "implementation_name": "cpython",
  "implementation_version": "3.10.2",
  "os_name": "posix",
  "platform_machine": "arm64",
  "platform_release": "21.5.0",
  "platform_system": "Darwin",
  "platform_version": "Darwin Kernel Version 21.5.0: Tue Mar 15 01:02:30 PDT 2022; 
root:xnu-8020.120.35.0.1~8/DEVELOPMENT_ARM64_T6000",
  "python_full_version": "3.10.2",
  "platform_python_implementation": "CPython",
  "python_version": "3.10",
  "sys_platform": "darwin"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant