Re: [PATCH] makedocbook: Fix false report of unhandled texinfo command
Mike Frysinger <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <Y2UsEKBU+9tdBTsL@vapier> |
On 04 Nov 2022 13:50, Jon Turney wrote:
> On 31/10/2022 12:28, Mike Frysinger wrote:
> > On 31 Oct 2022 09:59, Jon Turney wrote:
> >> + if match:
> >> + print("texinfo command '%s' remains in output" % match.group(), file=sys.stderr)
> >
> > this is a little dangerous in general as match.group() could return a tuple,
> > and this would fail. if you want to use %, you should force a tuple.
> > print("..." % (match.group(),), ...)
>
> I must be missing something here, because I'm not sure in what sense
> 'could' is being used. I think match.group() is defined to be the same
> as match.group(0), which always returns a single string. (I guess this
> could be written explicitly).
you are correct that match.group() is match.group(0) which guarantees to
return a string. when i wrote this, i didn't have access to the python
manual, so i checked against help() in the python repl. the docs there
are much more terse and don't include the situations as to when a str or
a tuple would be returned.
> So the danger pointed out seems to be that if parts of the code were
> changed, without making other necessary changes, it would be wrong. But
> I'm not sure the suggested change just to avoid that future possibility
> makes things better or clearer.
i've been bitten by refactors breaking % usage that lacks test coverage
(which, practically speaking, i think you could say most of the python
code here lacks unittests, especially in error code paths), so i have an
allergy to code that uses % without guaranteeing somehow that a tuple is
being passed like this code is doing now.
i grok that `% foo` vs `% (foo,)` looks a bit funky when you aren't used
to it, but i think this is more of a muscle memory thing -- this is the
only way to write a single element tuple.
i would have suggested using a f-string, but i don't know what versions
of python you want to support as f-strings require Python 3.6+.
of course if you really want to use % with a single element, i think it's
wrong, but i'm not going to make a continued stink about it :p.
> >> + exit(1)
> >
> > scripts should never use exit(), only sys.exit(). although i see the current
> > script gets this wrong in a lot of places.
> >
> > also you can simplify this -- sys.exit accepts a string that it'll print to
> > stderr and then exit non-zero.
> > sys.exit(".....")
>
> Yes, this is one of the first things I wrote in python, and
> unfortunately, it shows.
i wrote python like a C programmer for quite a long time,
and it took a while to reform my brain for python idioms
-mike
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEuQK1JxMl+JKsJRrUQWM7n+g39YEFAmNlLBAACgkQQWM7n+g3 9YHD/A//ebXmWHVuJk3Sx+p8fX0Kyu2jh2vUuoLWSoszdoX8S9qa6I3ZQP2ByGuF apQrR7OC0pEM6V86pdf0g4B/zAPtQtxuvpl/95kSfseBCpsiB+NdBVsvbL+Vsr71 hdN1E5l+1hLoY152nwpu03p5PLhCJyRCw5USsL6ZAFRKJNMhSb9xKbTr9eQor8a3 V0VOg87NGuQ1yrG1VpGVDrWY243CPwBdYVw0hCuFQZOp+9/m4YidU8lCn/ga6hpw viRBvkXumTvgc8sAKIEJwr7DA6pTp9fRZnW8i7E5M3uAED3ctv0so5Qt2Uy9rzqG Ch/gP0l/3NlbhyuWGjjbsNLTd415ncvtdBFcRNR95XFgzu5b+YcjB59v1DTflRYu rOAX7872fmDGgjqD0st5U1QZL5vMK1Py/lSRvlxJhq0ZJVYzQxecbxQDvv6ws700 ksx7f4G2kNxjmUvkvDP7l8FYOP7giuGAAeqELq183ch+hcjGJo0BELlwIIqoCA10 MxOPoSY8NiHzx/254orAy8gfBOsXiy8RZOOWataEBC3fy7jvVoJshlKsO9GMuWJM grdLWnlAjEdHdZXS7haO63k9FYTqNrNtTbMGOAnxaaY4PCkx9O1vDfR5udUEUTyE rKC/DvWJoWxS76YeMh7XvI4hJu1F5wo1J8WqnVjTnjbxozBl2jI= =d0yS -----END PGP SIGNATURE-----