From e3a15aa9cdb1eaca3c15575114f084a98463cfcb Mon Sep 17 00:00:00 2001 From: Ethan Stoner Date: Wed, 26 Aug 2026 12:18:09 -0700 Subject: [PATCH] lower the python floor to 3.12 Fixes #26. `requires-python` was `>=3.14`. On anything older poetry declines to create an environment, and it says so on stderr while leaving stdout empty. The README tells the user to run `iex (poetry env activate)`, `iex` only sees stdout, and PowerShell reports Invoke-Expression : Cannot bind argument to parameter 'Command' because it is null. which points at `iex` rather than at the install that never happened. The first reply on the issue guessed the reporter was missing `iex`, which is a built-in alias, so the error is actively misleading. 3.14 looks stricter than anything the code needs. Every file in src/ compiles on 3.10, no 3.13 or 3.14 only syntax appears anywhere in the tree, and the full task set was run end to end on 3.12.10 against a live account with all six tasks completing. The dependency graph agrees: numpy is the highest floor in the lock at >=3.12, so 3.12 is where the real constraint sits. Verified after the change on 3.12.10: `poetry install` creates the environment, `poetry env activate` emits a real activation command instead of nothing, `iex (poetry env activate)` activates in PowerShell, and every dependency plus every module under src/ imports. The lock is regenerated rather than left stale, since `requires-python` feeds its content hash. The only substantive change is a typing_extensions marker for python_version < 3.13; the package set is unchanged at 203. Regenerated with poetry 2.4.1 to match the version that wrote the existing file. The README gains the version bump and a short note on the failure, so anyone who hits it while running an older Python can recognise it. --- README.md | 4 +++- poetry.lock | 5 +++-- pyproject.toml | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ca3b02f..7d77dab 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,9 @@ You should also have an Ollama account created (for the LLM), the `ollama` tool You must also provide an image for the script to upload to complete the visual search task. Currently, this image is named `keypress_times.png` and is located in the root directory of the project (yes, I used a random image from my keyboard analysis to do this). You may provide an image of your own, just ensure that the absolute path of the image is placed in the `VISUAL_SEARCH_IMAGE_PATH` constant at the top of `rewards_tasks.py`. Activate the virtual environment & install dependencies (you may have to use `python -m poetry` instead of `poetry`). -You must have Python 3.14+ and Poetry installed. +You must have Python 3.12+ and Poetry installed. + +If `iex (poetry env activate)` fails with *"Cannot bind argument to parameter 'Command' because it is null"*, `poetry install` did not create an environment. Run `python --version` first: an older Python leaves poetry with nothing to activate, and the message explaining that goes to stderr rather than into `iex`. Windows (PowerShell) ```sh diff --git a/poetry.lock b/poetry.lock index 789f4e8..e12f1a0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -26,6 +26,7 @@ files = [ [package.dependencies] idna = ">=2.8" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] trio = ["trio (>=0.32.0)"] @@ -5043,5 +5044,5 @@ h11 = ">=0.16.0,<1" [metadata] lock-version = "2.1" -python-versions = ">=3.14" -content-hash = "bea6193c41f407cdf51a6cb49dbc4c9ebd63b5e4bdf8ccc3be13cf218ff6f376" +python-versions = ">=3.12" +content-hash = "fd4eaf67a2a0849a8ce66dfd1ac2be20276da3d8a1454ef9d991214912a51d61" diff --git a/pyproject.toml b/pyproject.toml index 1246ef4..43211af 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ authors = [ {name = "Carl Furtado",email = "user0332@duck.com"} ] license = "MIT" -requires-python = ">=3.14" +requires-python = ">=3.12" dependencies = [ "selenium (>=4.46.0,<5.0.0)", "matplotlib (>=3.11.1,<4.0.0)",