PyCQA / PyCQA/flake8-pyi

`Y011` doesn't account for module-qualified values

Open
#533 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

type-bug
Dominant language
Python
Stars
83
Forks
22
PR merge metrics
No merged PRs in 30d

Description

Y011 appears to behave inconsistently when assigning a default value using = some_value or = module.some_value. In the first case it raises an error, while in the second it does not.

For example, this can be reproduced when trying to set a default value for email.parser.Parser.__init__ in typeshed (that's how I encountered it):

# error appears:
from email._policybase import compat32
def __init__(..., policy = compat32) ...
# error doesn't appear:
from email import _policybase
def __init__(..., policy = _policybase.compat32) ...

As far as I know, the documentation does not mention that these two cases should be treated differently, so I wanted to report it in case this behavior is unintended.

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

Start with the Y011 entry in ERRORCODES.md and trace the rule's handling of default values, using the two examples in the issue as reproductions. Check the typeshed email/parser.pyi context linked in the report. Done means equivalent unqualified and module-qualified defaults are handled consistently, with regression coverage for both forms.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.