cleo icon indicating copy to clipboard operation
cleo copied to clipboard

Poetry run doesn't work with --directory=

Open Slooz opened this issue 1 year ago • 1 comments

Description

Doesn't work:

poetry run --directory={path} python file.py

Works:

poetry run --directory {path} python file.py

See comment by @Agalin in https://github.com/python-poetry/poetry/issues/7507#issuecomment-1463845304

See https://github.com/python-poetry/poetry/issues/9623

Workarounds

Yes, use --directory {path} instead of --directory={path}

Poetry Installation Method

pipx

Operating System

Ubuntu 22

Poetry Version

1.8.3

Poetry Configuration

No response

Python Sysconfig

No response

Example pyproject.toml

No response

Poetry Runtime Logs

No response

Slooz avatar Aug 13 '24 12:08 Slooz

I recently stumbled across the same issue with the poetry --project option. @abn kindly tried to fix this in the Poetry code that pre-processes arguments before passing them to Poetry, but that arguably just makes the problem worse. I'm not sure it can be fixed without explicit support by Cleo for this pattern?

In this context, I'd like to highlight that Poetry/Cleo handling of short and long options with values seems to be fairly unpredictable, e.g. I'd expect poetry -C path, poetry -Cpath, poetry --directory path, and poetry --directory=path to all be fully equivalent (and similarly for -P/--project). These equivalences are a common Linux command line convention (aka "whatever GNU getopt_long does", also well-supported by Python's argparse module). Yet we can observe a diverse range of errors with the poetry [OPTIONS] run [OPTIONS] COMMAND... syntax.

References:

  • my Poetry issue: https://github.com/python-poetry/poetry/issues/10051
  • attempted fix in Poetry: https://github.com/python-poetry/poetry/pull/10067
  • my reproduction steps + analysis: https://github.com/python-poetry/poetry/pull/10067#issuecomment-2599352405

latk avatar Jan 18 '25 10:01 latk