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-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.