https://git.schokokeks.org/derivepassphrase.git/tree/ad0fe1ec36de50d886fc4b0ed988203bc557c90fRecent commits to derivepassphrase.git (ad0fe1ec36de50d886fc4b0ed988203bc557c90f)2024-12-08T19:02:03+01:00tag:gitlist.org,2012:commit/ad0fe1ec36de50d886fc4b0ed988203bc557c90fDocument the switch to the logging and warning systems in the changelog2024-12-08T19:02:03+01:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/e1017eeffe4f16747629724b8f48ba298508ba80Adapt the test suite to use the logging system properly2024-12-07T09:30:38+01:00Marco Riccisoftware@the13thletter.info
<pre>Given the previous changes to warning and error reporting, the test
suite needs new helper code to deal with them. Again, the changes to
mosts tests are straight-forward (the location and formatting of
messages changes slightly), but the new logging machinery itself now
also needs to be tested... particularly the code that hooks into
Python's logging system, into Python's warning system, and between those
two.
`pytest` actually includes test fixtures to capture and interact with
warnings and logging calls, but these work on the library level:
warnings are captured as warnings, logging calls are captured as log
records. To be useful to application testing, it is necessary to
inspect and assert both the low-level warnings/log records as well as
the standard error output they ultimately translate to. The
`hypothesis`-based tests need particular (manual) care, because
`hypothesis` rejects tests using function-scoped `pytest` fixtures.
</pre>
tag:gitlist.org,2012:commit/5f2870876eb2317c57560fbbda87ed8f80917f97Emit new info messages and better debug messages in the exporter modules2024-12-07T09:30:38+01:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/aa248f1632393352772ba4d8969f6e983dc1a47bUse the logging system to emit warnings and error messages2024-12-07T09:30:38+01:00Marco Riccisoftware@the13thletter.info
<pre>Employ the Python standard library module `logging` to issue warning
and error messages, as well as (partially new) debug messages.
Operational warning messages and operational deprecation messages are
handled via the `derivepassphrase` and `derivepassphrase.deprecation`
loggers with a custom handler that prints the resulting formatted
message to standard error. (Errors, info and debug messages use the
same system, but differ slightly in the formatting.)
Most of the rewriting of warnings and error messages to fit this new
machinery is pretty straight-forward. The messy parts are the
integration of the `logging` machinery and the `warnings` machinery into
`click`, which isn't really designed with this in mind. Concretely,
this entails writing a custom logging handler that uses `click.echo`,
a custom formatter that prefixes messages with the program name (and
"warning", "deprecation warning" or "debug" as necessary), a singleton
configuration of this handler and formatter, various wrappers around
standard `click` infrastructure to ensure that this integration code
actually runs during normal operation, and finally, new command-line
options to control the level of output on standard error.
</pre>
tag:gitlist.org,2012:commit/6e2d2728b76c22a0d2280c34a55dba45885084cbShift option parsing and grouping machinery to a separate section2024-12-07T08:50:03+01:00Marco Riccisoftware@the13thletter.info
<pre>We expect to add new option categories that apply to multiple super- and
subcommands, not just the "vault" subcommand.
</pre>
tag:gitlist.org,2012:commit/10c7604bf033455d3e777bdeb028ee7d034a9bb7Reimplement deprecated subcommands, properly, in `click`2024-12-07T08:50:03+01:00Marco Riccisoftware@the13thletter.info
<pre>Our previous method of dispatching to subcommands was not tying the
supercommand and the subcommand together properly; each command
essentially ran in its own isolated context. This lead to unnecessary
double-parsing of the command-line arguments, and to `click` becoming
confused as to what the full command-line actually was; in particular,
the help and usage messages gave a wrong command summary.
Instead, we now use custom `click.Group` objects as the supercommands
which default to the "vault" subcommand (with a deprecation warning) if
no explicit subcommand could be matched, rather than throwing an error;
this all happens internally using the normal mechanism for subcommand
dispatch. Additionally, if the supercommand callback actually is
invoked -- which only happens if the supercommand is given without any
arguments -- we emit a deprecation warning and dispatch manually to the
"vault" subcommand using the same code path as the `click`
implementation would otherwise do. We assert that the old and new code
paths work via new tests as necessary, particularly for the
"supercommand without arguments" case.
This implementation necessarily messes with some `click` internals,
duplicating the code as it currently stands. Being a non-public API,
there is of course no guarantee that this will work with future versions
of `click`. However, we use this solely to implement a compatibility
interface, which should vanish with `derivepassphrase` v1.0 anyway. The
alternative -- rewriting `derivepassphrase` for another command-line
framework, or rolling our own command-line interface from scratch --
seems even more expensive/wasteful than this solution.
</pre>
tag:gitlist.org,2012:commit/f2624c769d0c1bcf8596488f550e78e438e849e0Fix minor formatting quibbles in documentation and code style2024-11-28T21:30:03+01:00Marco Riccisoftware@the13thletter.info
<pre>In particular, in online documentation builds, the URLs are slightly
different, so the CSS rules weren't triggering correctly.
</pre>
tag:gitlist.org,2012:commit/21da667f0ed633647c3d406f00318ba3aaaf29a1Release 0.3.32024-11-28T13:47:41+01:00Marco Riccisoftware@the13thletter.info
<pre></pre>
tag:gitlist.org,2012:commit/c63aa90be7c4b8f801638c4d8c734be4d902d325Merge topic branch '033-pre-release-copyediting' into master2024-11-28T13:38:43+01:00Marco Riccisoftware@the13thletter.info
<pre>* t/033-pre-release-copyediting:
Copyedit tutorials, how-tos and reference pages structure
Copyedit and reclassify changelog entry for deterministic DSA signatures
</pre>
tag:gitlist.org,2012:commit/9518a764d9429c661603f00bc4dfb5bd63afffbfCopyedit tutorials, how-tos and reference pages structure2024-11-28T13:34:17+01:00Marco Riccisoftware@the13thletter.info
<pre>Includes
* index pages for the tutorials and how-tos sections
* adding a "man page" section in the global navigation block
* dropping the rendundant "tutorial" in the tutorial titles
</pre>