ci: unit tests pin Python 3.12 while the package advertises 3.14 support
Maintainers usually reply within 1 day
@huong8373tt-beep is already working on this.
Since Oct 29, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 74/100
Research direction
Read .github/workflows/tests.yml and livekit-agents/pyproject.toml to compare the tested Python versions with requires-python. Check whether the project dependencies and unit tests support Python 3.14, then update the unit test coverage or narrow the advertised range as the maintainers decide. Done when the supported Python range and runtime test coverage agree, with any exception explained.
Written by the indexing model from the issue text.
Description
What
livekit-agents/pyproject.toml advertises requires-python = ">=3.10,<3.15", so 3.14 is a supported interpreter, but no runtime job ever runs on it:
.github/workflows/tests.ymlpinspython-version: "3.12"in all three jobs —blockguard-tests(L32),unit-tests(L56),evaluation(L83);.github/workflows/ci.ymlvaries the interpreter only for mypy (["3.10", "3.13"]).
So the runtime test suite only ever sees 3.12. A break that is specific to 3.13/3.14 is green by construction.
Evidence that this is not theoretical
#8162 fixed exactly that class: ndarray.resize() rejects an array that is still referenced, and on 3.14 it also rejects one only held by an attribute, so VAD.update_options raised ValueError for users on that interpreter while unit-tests stayed green. The change now copies into a new array instead.
The CI gap is what let it ship — the fix is fine, the matrix is the problem. The same shape will recur for anything that depends on interpreter behaviour rather than our own logic.
Proposal
Cheapest option first, in order of preference:
- One 3.14 leg on
unit-testsonly (matrix entry or a second job), not the whole matrix — the job count stays flat and the interpreter-sensitive code paths are covered. - If some dependency does not support 3.14 yet, narrow the promise instead:
requires-python = ">=3.10,<3.14"plus a note, so the advertised range matches what CI actually proves.
Either way the rule worth stating is that the advertised requires-python range and the tested interpreters should not disagree without a comment saying why.
Happy to send the workflow change (option 1) if that is the direction — I did not want to add a CI job in someone else's bug-fix PR.
- Dominant language
- Python
- Stars
- 14.6k
- Forks
- 3.9k
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 232
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from livekit/agents
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
mistralai: expose reasoning_effort on the LLMPossibly taken @muzman123 claimed this 1 day ago. Openenhancement
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
Assistant markup is stripped from chat history when expressive mode is offPossibly taken @ShivamSharma43 claimed this 23 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
livekit/agents#7647 · 1 comment ·
Maintainers usually reply within 1 day
-
docs: openai.LLM vs openai.responses.LLM for HTTP OpenAI-compat hostsMay be free again @AbarnaaSree claimed this 62 days ago, and no pull request is open. Open
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
livekit/agents#7022 · 1 comment ·
Maintainers usually reply within 1 day
-
DataStreamAudioReceiver retains registrations after close and shares clear-buffer routing across roomsPossibly taken @Zheng-Changfu claimed this today. Open
Difficulty 4/5 3-5 days Newbie friendliness 20/100
Maintainers usually reply within 1 day
Similar issues
-
[oblt-aw][autodoc] Document new required `shared-org-key` input for `obs-aw-dependency-review`Possibly taken @github-actions claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 90/100
Maintainers usually reply within 1 day
-
getchaintips leaves out the active tip once a header is staged on it, where Core always lists itOpen
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
btclib-org/btclib-node#2158 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
dbt-msft/dbt-sqlserver#897 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Gathin23/cleanyourtv#2770 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Dao-AILab/flash-attention#3097 ·
Maintainers usually reply within 3 days