PyCQA / PyCQA/pyflakes

F542 is not a crime

Open
#845 0 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.5k
Forks
190
Avg merge
8m
Merged PRs (30d)
13

Description

Hello,

I am working on adding template strings support to psycopg. In the tests, Flake8 7.3.0 raises several warnings about template strings not containing placeholders (F542).

Unlike f-strings, a missing placeholder shouldn't be a problem. In the first iterations of PEP 750 it was possible to mix normal and t-strings with the same ease in which f-strings and normal strings can be mixed, but this feature has been identified as problematic and dropped from the design and latest Python implementation (post alpha and into beta, I seem to understand). As a consequence, F542 is not immediately fixable by dropping the t prefix and it should be normal to assemble a t-string by concatenating t-strings, some of which may not include placeholder as in this snippet:

    t = t"select "  # noqa: F542
    for i, name in enumerate(("foo", "bar", "baz")):
        if i:
            t += t", "  # noqa: F542
        t += t"{i} as {name:i}"

Would you consider disabling F542 by default?

Contributor guide

No contributing guide indexed for this repository

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 by locating the F542 rule and its existing tests in pyflakes, then review the linked psycopg tests/test_tstring.py examples showing valid t-strings without placeholders. Done means deciding whether F542 should be disabled by default and adding coverage for the chosen behavior, including the relevant lint output.

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
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.