Type checking support for `functools.partial` usage with placeholders
- Dominant language
- Python
- Stars
- 15.6k
- Forks
- 1.8k
- Avg merge
- 12h 13m
- Merged PRs (30d)
- 52
Description
Type: Bug
An enhancement to allow `functools.partial` to take special sentinel objects to represent positional arguments that should be inserted at that position was introduced in 3.14. However, Pylance appears oblivious to this, and flags a large number of inappropriate argument type or got more arguments than expected diagnostics. I would like to at least know when this is planned to be supported, since I can find no information related to this.
Extension version: 2026.2.101
VS Code version: Code 1.117.0 (10c8e557c8b9f9ed0a87f61f1c9a44bde731c409, 2026-04-21T16:12:14-07:00)
OS version: Windows_NT x64 10.0.26200
Modes:
System Info
|Item|Value|
|---|---|
|CPUs|11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz (8 x 2419)|
|GPU Status|2d_canvas: enabled
GPU0: VENDOR= 0x8086, DEVICE=0x9a49 [Intel(R) Iris(R) Xe Graphics], DRIVER_VENDOR=Intel, DRIVER_VERSION=32.0.101.6737 *ACTIVE*
GPU1: VENDOR= 0x1414, DEVICE=0x008c [Microsoft Basic Render Driver], DRIVER_VERSION=10.0.26100.8246
Machine model name:
Machine model version:
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
trees_in_viz: disabled_off
video_decode: enabled
video_encode: enabled
webgl: enabled
webgl2: enabled
webgpu: enabled
webnn: disabled_off|
|Load (avg)|undefined|
|Memory (System)|7.85GB (0.52GB free)|
|Process Argv|--crash-reporter-id 9453c078-702b-4b0c-be82-802577994672|
|Screen Reader|no|
|VM|0%|
A/B Experiments
```
vsliv368cf:30146710
binariesv615:30325510
nativeloc1:31344060
dwcopilot:31170013
dwoutputs:31242946
copilot_t_ci:31333650
e5gg6876:31282496
pythonrdcb7:31342333
6518g693:31463988
aj953862:31281341
6abeh943:31336334
envsdeactivate2:31464701
cloudbuttont:31379625
42190218_ostrepl:31403339
ec5jj548:31422691
cp_cls_t_966_ss:31454198
a9239246:31499107
4je02754:31466945
8hhj4413:31478653
38bie571_auto:31429954
cp_cls_t_1081:31454832
conptydll_true:31498968
ia-use-proxy-models-svc:31452481
e9c30283:31461165
test_treatment2:31471001
46204921:31447328
control_6dc23131:31497324
idci7584:31464702
e3e4d672:31494082
ei9d7968:31496641
534a6447:31496642
nes-extended-on:31455476
chat:31457767
8hig5102:31480529
67jbj424:31500880
dfc2j404:31500885
cpptoolson-v2:31475363
i2gc6536:31499202
1g3cj959:31501677
nes-cur-1k:31501813
ghj88844:31499326
ec1eg703:31491645
client_tst_t:31495907
ddid_c:31478207
getcmakediagnosticson:31489824
ja75b849:31495667
nes-perm-reb-1:31490410
pro_large_t:31499376
cp_cls_c_1082:31491634
719di409_sum_t:31499347
logging_enabled_new:31498466
j0d79568:31499440
nes-ew-div-cursorline:31495480
748c7209:31497895
```
Contributor guide
Research direction
Start by reproducing the reported diagnostics with Python 3.14 functools.partial calls that use positional placeholders; the issue names no repository files or tests. Done means Pylance no longer reports inappropriate argument-type or excess-argument diagnostics for supported placeholder usage.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100