Add the SSH agent socket provider API to the documentation
Marco Ricci

Marco Ricci commited on 2026-08-30 20:05:37
Zeige 6 geänderte Dateien mit 29 Einfügungen und 4 Löschungen.


...and fix some typos/omissions encountered during preview.
... ...
@@ -2,6 +2,10 @@
2 2
 title: Reference overview
3 3
 ---
4 4
 
5
+## Interfaces
6
+
7
+* [SSH agent socket providers][sasp]
8
+
5 9
 ## Man pages
6 10
 
7 11
 * [`derivepassphrase(1)`][top_man]: Derive a strong passphrase, deterministically, from a master secret.
... ...
@@ -20,11 +24,13 @@ title: Reference overview
20 24
     * [`derivepassphrase.ssh_agent`][]: A bare-bones SSH agent client supporting signing and key listing.
21 25
     * [`derivepassphrase._types`][]: Types used by `derivepassphrase`.
22 26
     * [`derivepassphrase.vault`][]: Python port of the vault(1) password generation scheme.
27
+* `derivepassphrase-sshagentsocketproviders`: Definitions for `derivepassphrase`'s SSH agent socket providers.
23 28
 
24 29
 ## Technical prerequisites
25 30
 
26 31
 * [Prerequisites for using `derivepassphrase vault` with an SSH key][PREREQ_SSH_KEY]
27 32
 
33
+  [sasp]: ssh-agent-socket-providers.md
28 34
   [top_man]: derivepassphrase.1.md
29 35
   [vault_man]: derivepassphrase-vault.1.md
30 36
   [export_man]: derivepassphrase-export.1.md
... ...
@@ -1 +1 @@
1
-Subproject commit 0d39dfbd44b85f90f7a3aa4ec5062158d59750d1
1
+Subproject commit 7d58f514bb48f92e10365719d73a2217e89fdc9d
... ...
@@ -75,6 +75,7 @@ plugins:
75 75
           show_object_full_path: false
76 76
           show_root_members_full_path: false
77 77
           show_root_heading: true
78
+          show_root_toc_entry: true
78 79
           show_symbol_type_heading: true
79 80
           show_symbol_type_toc: true
80 81
           members_order: 'source'
... ...
@@ -104,6 +105,8 @@ nav:
104 105
     - how-tos/passphrase-rotation.md
105 106
   - Reference:
106 107
     - reference/index.md
108
+    - Interfaces:
109
+      - SSH agent socket providers: reference/ssh-agent-socket-providers.md
107 110
     - Man pages:
108 111
       - 'derivepassphrase(1)': reference/derivepassphrase.1.md
109 112
       - 'derivepassphrase-vault(1)': reference/derivepassphrase-vault.1.md
... ...
@@ -116,6 +119,7 @@ nav:
116 119
       - Submodule ssh_agent: reference/derivepassphrase.ssh_agent.md
117 120
       - Submodule _types: reference/derivepassphrase._types.md
118 121
       - Submodule vault: reference/derivepassphrase.vault.md
122
+    - 'API docs: Module derivepassphrase_sshagentsocketprovider': reference/derivepassphrase_sshagentsocketprovider.md
119 123
     - Technical prerequisites:
120 124
       - 'Using derivepassphrase vault with an SSH key': reference/prerequisites-ssh-key.md
121 125
   - Design & Background:
... ...
@@ -19,6 +19,8 @@ nav:
19 19
     - how-tos/passphrase-rotation.md
20 20
   - Reference:
21 21
     - reference/index.md
22
+    - Interfaces:
23
+      - SSH agent socket providers: reference/ssh-agent-socket-providers.md
22 24
     - Man pages:
23 25
       - 'derivepassphrase(1)': reference/derivepassphrase.1.md
24 26
       - 'derivepassphrase-vault(1)': reference/derivepassphrase-vault.1.md
... ...
@@ -31,6 +33,7 @@ nav:
31 33
       - Submodule ssh_agent: reference/derivepassphrase.ssh_agent.md
32 34
       - Submodule _types: reference/derivepassphrase._types.md
33 35
       - Submodule vault: reference/derivepassphrase.vault.md
36
+    - 'API docs: Module derivepassphrase_sshagentsocketprovider': reference/derivepassphrase_sshagentsocketprovider.md
34 37
     - Technical prerequisites:
35 38
       - 'Using derivepassphrase vault with an SSH key': reference/prerequisites-ssh-key.md
36 39
     - 'Internal API docs: Submodule derivepassphrase._internals':
... ...
@@ -379,7 +379,7 @@ else:  # pragma: unless the-annoying-os no cover
379 379
 class WindowsNamedPipeHandle:
380 380
     """A Windows named pipe handle.
381 381
 
382
-    This handle implements the [`SSHAgentSocket`][_types.SSHAgentSocket]
382
+    This handle implements the [`SSHAgentSocket`][d_sasp.SSHAgentSocket]
383 383
     interface.  It is only constructable if the Python installation can
384 384
     successfully call into the Annoying OS `kernel32.dll` library via
385 385
     [`ctypes`][].
... ...
@@ -17,9 +17,20 @@ if TYPE_CHECKING:
17 17
 # Semantic versioning.
18 18
 __version__ = "1.0a1"
19 19
 
20
-# For later major versions, we would choose a different entry point
21
-# group name.
22 20
 ENTRY_POINT_GROUP_NAME = "derivepassphrase.ssh_agent_socket_providers"
21
+"""
22
+The name of the entry point group for SSH agent socket providers.
23
+
24
+We pledge to not change the interface of the entry point (name, type of
25
+the referred object) in a backwards-incompatible way without both
26
+
27
+  1. increasing the major version number of the package, and
28
+  2. changing the entry point name.
29
+
30
+(We cannot, however, guarantee that all consumers of this API will
31
+continue to support superseded entry point definitions forever.  That is
32
+up to the individual API consumer to decide.)
33
+"""
23 34
 
24 35
 
25 36
 @runtime_checkable
... ...
@@ -85,3 +96,4 @@ class SSHAgentSocketProviderEntry(NamedTuple):
85 96
     key: str
86 97
     """"""
87 98
     aliases: tuple[str, ...]
99
+    """"""
88 100