python / python/mypy

Proper way to use dynamic keys for TypedDict

Open
#9,168 9 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

false-positive feature priority-2-low topic-literal-types topic-typed-dict
Dominant language
Python
Stars
20.6k
Forks
3.3k
PR merge metrics
PR metrics pending

Description

Is there a way to use dynamic keys for a TypedDict which is properly typed? I have code like this:

if name in ['visible', 'value', 'locked']:
	obj[name] = self.use_var_expr(scope, value)

Where obj is a TypedDict that has the same type for the keys 'visible', 'value', 'locked'.

I know that name is not a literal string, but it's been verified to belong to a set of literal strings that belong to the TypedDict.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the TypedDict assignment shown in the issue, focusing on the membership check against ['visible', 'value', 'locked']. Determine whether mypy can type-check this pattern; done means either the pattern is accepted with correct types or the limitation and supported alternative are documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
devtools
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.