Fix links and other wrapping-related formatting in changelog
Marco Ricci

Marco Ricci commited on 2025-01-19 13:02:24
Zeige 3 geänderte Dateien mit 98 Einfügungen und 69 Löschungen.


Fix some links that were badly wrapped (line break between link text and
link identifier/reference), causing MkDocs to not recognize them as
a link.

Also reformat the changelog in general such that sentence breaks occur
only at line breaks.  (Sentences may still take up multiple lines,
however.)

These are all whitespace-only changes.
... ...
@@ -1,6 +1,15 @@
1 1
 ### Changed
2 2
 
3
-  - The [export handler for storeroom][derivepassphrase.exporter.storeroom.export_storeroom_data] and for [vault-native][derivepassphrase.exporter.vault_native.export_vault_native_data] configuration data now [both support a unified interface][derivepassphrase.exporter.ExportVaultConfigDataFunction].
4
-    A new dispatch function [`export_vault_config_data`][derivepassphrase.exporter.export_vault_config_data] automatically calls the correct backend, based on the requested format.
3
+  - The export handlers for "storeroom" and "vault-native" configuration
4
+    data,
5
+    [`export_storeroom_data`][derivepassphrase.exporter.storeroom.export_storeroom_data]
6
+    and
7
+    [`export_vault_native_data`][derivepassphrase.exporter.vault_native.export_vault_native_data]
8
+    configuration data now both support a unified interface:
9
+    [`ExportVaultConfigDataFunction`][derivepassphrase.exporter.ExportVaultConfigDataFunction].
10
+    A new dispatch function
11
+    [`export_vault_config_data`][derivepassphrase.exporter.export_vault_config_data]
12
+    automatically calls the correct backend, based on the requested format.
5 13
 
6
-    This is a **breaking API change** due to the change in function parameter names and return types.
14
+    This is a **breaking API change** due to the change in function
15
+    parameter names and return types.
... ...
@@ -1,7 +1,8 @@
1 1
 ### Fixed
2 2
 
3 3
   - Shell completion for `zsh` was misbehaving in the presence of colons in
4
-    the completion item.  This was due to an overzealous workaround for
4
+    the completion item.
5
+    This was due to an overzealous workaround for
5 6
     [`pallets/click#2703`][CLICK_2703].
6 7
 
7 8
 [CLICK_2703]: https://github.com/pallets/click/issues/2703
... ...
@@ -41,9 +41,11 @@ effectively constitute a new <q>major</q> release.)
41 41
     systems.
42 42
 
43 43
   - `derivepassphrase` now uses a central configuration file, and additional
44
-    data files, some of which are service-specific.  (The `vault.json`
45
-    configuration file is now rebranded as a data file.)  The configuration
46
-    files are user-editable, the data files are `derivepassphrase`-editable.
44
+    data files, some of which are service-specific.
45
+    (The `vault.json`
46
+    configuration file is now rebranded as a data file.)
47
+    The configuration files are user-editable, the data files are
48
+    `derivepassphrase`-editable.
47 49
 
48 50
     The configuration files are in TOML format, so installing
49 51
     `derivepassphrase` on Python 3.10 and older requires the
... ...
@@ -59,8 +61,8 @@ effectively constitute a new <q>major</q> release.)
59 61
 
60 62
   - `derivepassphrase` now includes basic support for localization: if the
61 63
     necessary translations are installed, then the diagnostics and help
62
-    texts can be emitted in different languages.  Internally, this uses
63
-    Python's standard [`gettext`][] system.
64
+    texts can be emitted in different languages.
65
+    Internally, this uses Python's standard [`gettext`][] system.
64 66
 
65 67
     (As of this version, no translations have actually been prepared yet.)
66 68
 
... ...
@@ -82,20 +84,19 @@ effectively constitute a new <q>major</q> release.)
82 84
 
83 85
 ### Changed
84 86
 
85
-  - Calling [`derivepassphrase_export`]
86
-    [derivepassphrase.cli.derivepassphrase_export],
87
-    [`derivepassphrase_export_vault`]
88
-    [derivepassphrase.cli.derivepassphrase_export_vault] or
89
-    [`derivepassphrase_vault`]
90
-    [derivepassphrase.cli.derivepassphrase_vault], or calling
91
-    [`derivepassphrase`] [derivepassphrase.cli.derivepassphrase] via its
92
-    [`.main`][click.BaseCommand.main] method, causes those functions to use
93
-    the standard Python [logging][] and [warnings][] facilities to issue
94
-    diagnostic messages, without output to standard error.  (This includes
95
-    using [`click.testing.CliRunner`][], which uses `.main` calls under the
96
-    hood.)  Calling [`derivepassphrase`]
97
-    [derivepassphrase.cli.derivepassphrase] directly as a function diverts
98
-    diagnostic messages to standard error.
87
+  - Calling
88
+    [`derivepassphrase_export`][derivepassphrase.cli.derivepassphrase_export],
89
+    [`derivepassphrase_export_vault`][derivepassphrase.cli.derivepassphrase_export_vault]
90
+    or
91
+    [`derivepassphrase_vault`][derivepassphrase.cli.derivepassphrase_vault],
92
+    or calling [`derivepassphrase`][derivepassphrase.cli.derivepassphrase]
93
+    via its [`.main`][click.BaseCommand.main] method, causes those functions
94
+    to use the standard Python [logging][] and [warnings][] facilities to
95
+    issue diagnostic messages, without output to standard error.
96
+    (This includes using [`click.testing.CliRunner`][], which uses `.main`
97
+    calls under the hood.)
98
+    Calling [`derivepassphrase`][derivepassphrase.cli.derivepassphrase]
99
+    directly as a function diverts diagnostic messages to standard error.
99 100
 
100 101
   - Unicode normalization settings for `vault` service names and stored
101 102
     passphrases are now stored in the central configuration file, instead of
... ...
@@ -115,11 +116,12 @@ effectively constitute a new <q>major</q> release.)
115 116
 ### Added
116 117
 
117 118
   - Checking whether an SSH key is suitable now also depends on the SSH
118
-    agent in use.  API functions now optionally take an additional
119
+    agent in use.
120
+    API functions now optionally take an additional
119 121
     [`SSHAgentClient`][derivepassphrase.ssh_agent.SSHAgentClient] object to
120
-    test agent-specific key suitability.  If not given, then the old
121
-    behavior is retained: SSH keys are suitable if they are suitable under
122
-    any (conforming) SSH agent.
122
+    test agent-specific key suitability.
123
+    If not given, then the old behavior is retained: SSH keys are suitable
124
+    if they are suitable under any (conforming) SSH agent.
123 125
 
124 126
 ### Fixed
125 127
 
... ...
@@ -132,10 +134,10 @@ effectively constitute a new <q>major</q> release.)
132 134
 
133 135
 ### Fixed
134 136
 
135
-  - _*Actually* actually_ remove the `derivepassphrase_export` program, which was
136
-    turned into a subcommand in v0.2.0 and supposed to have been removed in
137
-    v0.3.1 already.  Removed on disk is not the same as removed in
138
-    version control.
137
+  - _*Actually* actually_ remove the `derivepassphrase_export` program,
138
+    which was turned into a subcommand in v0.2.0 and supposed to have been
139
+    removed in v0.3.1 already.
140
+    Removed on disk is not the same as removed in version control.
139 141
 
140 142
 ## 0.3.1 (2024-10-21)
141 143
 
... ...
@@ -150,21 +152,22 @@ effectively constitute a new <q>major</q> release.)
150 152
 ### Added
151 153
 
152 154
   - Convert changelog management from towncrier to [scriv][].
153
-  - Add SSH agent spawning support to the test suite.  Use this support to
154
-    test the agent functionality on all known major SSH agent
155
-    implementations automatically. ([#12])
155
+  - Add SSH agent spawning support to the test suite.
156
+    Use this support to test the agent functionality on all known major SSH
157
+    agent implementations automatically.
158
+    ([#12])
156 159
   - Add [hypothesis][]-based tests to the test suite.
157 160
   - Update README to add explanations for virtual environments and package
158 161
     extras.
159 162
   - Update README to demonstrate configuration storing and SSH agent use.
160 163
     Include comments on Windows support for SSH agents.
161 164
   - Use cross-references in the documentation of function signatures.
162
-  - Add proper support for Buffer types in the SSH agent client.  Any
163
-    Python object supporting the buffer protocol can be used as input to
164
-    a function of the client, and any output from the client is returned
165
-    as bytes objects.  Because of the zero-copy semantics of the
166
-    underlying data/memory block, this should stay relatively time- and
167
-    space-efficient.
165
+  - Add proper support for Buffer types in the SSH agent client.
166
+    Any Python object supporting the buffer protocol can be used as input to
167
+    a function of the client, and any output from the client is returned as
168
+    bytes objects.
169
+    Because of the zero-copy semantics of the underlying data/memory block,
170
+    this should stay relatively time- and space-efficient.
168 171
   - Add [hypothesis][]-based tests for serialization to and
169 172
     deserialization from the SSH agent wire format.
170 173
   - Support Python 3.9 and 3.13.
... ...
@@ -175,8 +178,8 @@ effectively constitute a new <q>major</q> release.)
175 178
 
176 179
 ### Changed
177 180
 
178
-  - Change links to point to public project repositories, if possible.  For
179
-    legal reasons.
181
+  - Change links to point to public project repositories, if possible.
182
+    For legal reasons.
180 183
 
181 184
   - Use the same filename/URL convention for API reference as the Python
182 185
     standard library does.
... ...
@@ -195,7 +198,8 @@ effectively constitute a new <q>major</q> release.)
195 198
 
196 199
   - Fail earlier, and more gracefully/specifically, when we cannot talk to
197 200
     the SSH agent because Python does not support UNIX domain sockets on
198
-    this system.  In particular, this is the current situation on Windows.
201
+    this system.
202
+    In particular, this is the current situation on Windows.
199 203
 
200 204
     This adds another failure case to the `SSHAgentClient` constructor, and
201 205
     therefore constitutes a **breaking API change**.
... ...
@@ -207,14 +211,17 @@ effectively constitute a new <q>major</q> release.)
207 211
     This is a command-line only change.
208 212
 
209 213
   - In `derivepassphrase vault`, when importing settings, accept falsy values
210
-    everywhere `vault` does, with a warning.  Depending on the setting, they
211
-    are equivalent to zero, the empty string, or "not set".  ([#17])
212
-
213
-    This is a command-line only change, and only affects importing.  The API
214
-    provides a new function to normalize falsy settings, but still otherwise
215
-    requires settings to be of the correct type.  Storing a malformed
216
-    configuration with such falsy values will still generate errors when
217
-    `derivepassphrase vault` loads the settings from disk.
214
+    everywhere `vault` does, with a warning.
215
+    Depending on the setting, they are equivalent to zero, the empty string,
216
+    or "not set".
217
+    ([#17])
218
+
219
+    This is a command-line only change, and only affects importing.
220
+    The API provides a new function to normalize falsy settings, but still
221
+    otherwise requires settings to be of the correct type.
222
+    Storing a malformed configuration with such falsy values will still
223
+    generate errors when `derivepassphrase vault` loads the settings from
224
+    disk.
218 225
 
219 226
   - In `derivepassphrase vault`, when importing configurations,
220 227
     correctly merge them with the existing one, same as vault(1): keep
... ...
@@ -222,7 +229,8 @@ effectively constitute a new <q>major</q> release.)
222 229
     applicable) that are not mentioned in the imported configuration.
223 230
     The import procedure is thus more akin to a section-wise import of
224 231
     the configurations, instead of a "full" import, and the resulting
225
-    configuration generally is a merge of both inputs.  ([#16])
232
+    configuration generally is a merge of both inputs.
233
+    ([#16])
226 234
 
227 235
   - The following operations or configuration settings now raise
228 236
     warnings:
... ...
@@ -252,42 +260,49 @@ effectively constitute a new <q>major</q> release.)
252 260
     storeroom formats.
253 261
 
254 262
     This feature requires the `cryptography` Python module, but is available
255
-    even if `vault` is not installed. ([#1])
263
+    even if `vault` is not installed.
264
+    ([#1])
256 265
 
257 266
 [#1]: https://github.com/the-13th-letter/derivepassphrase/1
258 267
 
259 268
 ### Fixed
260 269
 
261
-  - Deploy versioned documentation with [mike][].  Set up a "latest" tag and
262
-    the "0.<var>x</var>" version of the documentation with the contents so
263
-    far.
270
+  - Deploy versioned documentation with [mike][].
271
+    Set up a "latest" tag and the "0.<var>x</var>" version of the
272
+    documentation with the contents so far.
264 273
 
265 274
 [mike]: https://pypi.org/project/mike
266 275
 
267 276
 ### Changed
268 277
 
269 278
   - Changed `sequin` and `ssh_agent_client` to be submodules of
270
-    `derivepassphrase`.  Further moved `derivepassphrase.Vault` and
279
+    `derivepassphrase`.
280
+    Further moved `derivepassphrase.Vault` and
271 281
     `derivepassphrase.AmbiguousByteRepresentation` into a new submodule
272
-    `vault`, and renamed submodule `ssh_agent_client` to `ssh_agent`. ([#3])
282
+    `vault`, and renamed submodule `ssh_agent_client` to `ssh_agent`.
283
+    ([#3])
273 284
   - Changed internal error handling and error messages, to better work in
274
-    the context of a command-line tool. ([#4])
285
+    the context of a command-line tool.
286
+    ([#4])
275 287
   - Combine and consolidate `derivepassphrase.types` and
276 288
     `derivepassphrase.ssh_agent.types` into a new submodule
277
-    `derivepassphrase._types`.  Despite the name, the module is public.
289
+    `derivepassphrase._types`.
290
+    Despite the name, the module is public.
278 291
     ([#7])
279 292
   - Warn the user when entering (directly, or via configuration
280 293
     editing/importing) a passphrase that is not in the configured Unicode
281
-    normalization form. (But don't otherwise reject any textual master
282
-    passphrases.) ([#9])
294
+    normalization form.
295
+    (But don't otherwise reject any textual master passphrases.)
296
+    ([#9])
283 297
   - Move all existing functionality into a subcommand, in anticipation of
284 298
     other passphrase derivation schemes, with different settings.
285 299
     Automatically forward calls without a subcommand to the "vault"
286 300
     subcommand.
287 301
 
288 302
     Also store the settings in a file specific to the respective subsystem,
289
-    instead of globally.  Automatically fall back to, and migrate, the old
290
-    global settings file if no subsystem-specific configuration was found.
303
+    instead of globally.
304
+    Automatically fall back to, and migrate, the old global settings file if
305
+    no subsystem-specific configuration was found.
291 306
     ([#10])
292 307
 
293 308
   - Make `derivepassphrase_export` a subcommand: `derivepassphrase export`.
... ...
@@ -311,12 +326,15 @@ effectively constitute a new <q>major</q> release.)
311 326
 ### Fixed
312 327
 
313 328
   - Do not crash upon selecting a key on the command-line if there already
314
-    is a key stored in the configuration. ([#5])
329
+    is a key stored in the configuration.
330
+    ([#5])
315 331
   - Create the configuration directory upon saving, if it does not yet
316
-    exist.  ([#6])
332
+    exist.
333
+    ([#6])
317 334
   - Isolate the tests properly and consistently from the user's
318 335
     configuration, so that user configuration problems do not cause
319
-    unrelated test failures. ([#8])
336
+    unrelated test failures.
337
+    ([#8])
320 338
   - Add an alternate MkDocs configuration for building the documentation in
321 339
     offline mode.
322 340
   - Fix typing issues according to `mypy`'s strict mode.
... ...
@@ -331,8 +349,9 @@ effectively constitute a new <q>major</q> release.)
331 349
 ### Fixed
332 350
 
333 351
   - Include and exclude the correct files in the `sdist` and `wheel`
334
-    distributions.  (Previously, `sdist` contained VCS artifacts, and
335
-    `wheel` was missing some paths.)
352
+    distributions.
353
+    (Previously, `sdist` contained VCS artifacts, and `wheel` was missing
354
+    some paths.)
336 355
   - Lint and reformat all code using [ruff](https://pypi.org/package/ruff/).
337 356
   - Mention
338 357
     [`mkdocstrings-python`](https://pypi.org/package/mkdocstrings-python/)
339 358