Why is this an issue?

Why use named groups only to never use any of them later on in the code?

This rule raises issues every time named groups are:

Noncompliant code example

import re

def foo():
    pattern = re.compile(r"(?P<a>.)")
    matches = pattern.match("abc")
    g1 = matches.group("b") # Noncompliant - group "b" is not defined
    g2 = matches.group(1) # Noncompliant - Directly use 'a' instead of its group number.

Compliant solution

import re

def foo():
    pattern = re.compile(r"(?P<a>.)")
    matches = pattern.match("abc")
    g = matches.group("a")