Marco Ricci commited on 2024-10-15 13:46:21
              Zeige 14 geänderte Dateien mit 100 Einfügungen und 119 Löschungen.
            
| ... | ... | 
                      @@ -1,14 +0,0 @@  | 
                  
| 1 | 
                        -### Added  | 
                    |
| 2 | 
                        -  | 
                    |
| 3 | 
                        - - Update README to add explanations for virtual environments and package  | 
                    |
| 4 | 
                        - extras.  | 
                    |
| 5 | 
                        - - Update README to demonstrate configuration storing and SSH agent use.  | 
                    |
| 6 | 
                        - Include comments on Windows support for SSH agents.  | 
                    |
| 7 | 
                        - - Use cross-references in the documentation of function signatures.  | 
                    |
| 8 | 
                        -  | 
                    |
| 9 | 
                        -### Changed  | 
                    |
| 10 | 
                        -  | 
                    |
| 11 | 
                        - - Change links to point to public project repositories, if possible. For  | 
                    |
| 12 | 
                        - legal reasons.  | 
                    |
| 13 | 
                        - - Use the same filename/URL convention for API reference as the Python  | 
                    |
| 14 | 
                        - standard library does.  | 
                    
| ... | ... | 
                      @@ -1,13 +0,0 @@  | 
                  
| 1 | 
                        -### Changed  | 
                    |
| 2 | 
                        -  | 
                    |
| 3 | 
                        - - Rewrite functionality for checking for valid vault(1) configurations:  | 
                    |
| 4 | 
                        - include an actual validation function which throws errors upon  | 
                    |
| 5 | 
                        - encountering format violations, and which allows specifying which types  | 
                    |
| 6 | 
                        - of extensions (unknown settings, `derivepassphrase`-only settings) to  | 
                    |
| 7 | 
                        - tolerate during validation.  | 
                    |
| 8 | 
                        -  | 
                    |
| 9 | 
                        - This is a **breaking API change** because the function return annotation  | 
                    |
| 10 | 
                        - changed, from [`typing.TypeGuard`][] to [`typing_extensions.TypeIs`][].  | 
                    |
| 11 | 
                        - These were the originally intended semantics, but when  | 
                    |
| 12 | 
                        - `derivepassphrase` was first designed, the Python type system did not  | 
                    |
| 13 | 
                        - support this kind of partial type narrowing.  | 
                    
| ... | ... | 
                      @@ -1,15 +0,0 @@  | 
                  
| 1 | 
                        -### Added  | 
                    |
| 2 | 
                        -  | 
                    |
| 3 | 
                        - - Add proper support for Buffer types in the SSH agent client. Any  | 
                    |
| 4 | 
                        - Python object supporting the buffer protocol can be used as input to  | 
                    |
| 5 | 
                        - a function of the client, and any output from the client is returned  | 
                    |
| 6 | 
                        - as bytes objects. Because of the zero-copy semantics of the  | 
                    |
| 7 | 
                        - underlying data/memory block, this should stay relatively time- and  | 
                    |
| 8 | 
                        - space-efficient.  | 
                    |
| 9 | 
                        -  | 
                    |
| 10 | 
                        -### Fixed  | 
                    |
| 11 | 
                        -  | 
                    |
| 12 | 
                        - - Fixed the textual description of the return value for  | 
                    |
| 13 | 
                        - [`SSHAgentClient.request`]  | 
                    |
| 14 | 
                        - [derivepassphrase.ssh_agent.SSHAgentClient.request], which didn't  | 
                    |
| 15 | 
                        - match the declared type annotation.  | 
                    
| ... | ... | 
                      @@ -1,9 +0,0 @@  | 
                  
| 1 | 
                        -### Changed  | 
                    |
| 2 | 
                        -  | 
                    |
| 3 | 
                        - - Fail earlier, and more gracefully/specifically, when we cannot talk to  | 
                    |
| 4 | 
                        - the SSH agent because Python does not support UNIX domain sockets on  | 
                    |
| 5 | 
                        - this system. In particular, this is the current situation on Windows.  | 
                    |
| 6 | 
                        -  | 
                    |
| 7 | 
                        - This adds another failure case to the `SSHAgentClient` constructor, and  | 
                    |
| 8 | 
                        - therefore constitutes a breaking API change.  | 
                    |
| 9 | 
                        -  | 
                    
| ... | ... | 
                      @@ -1,19 +0,0 @@  | 
                  
| 1 | 
                        -### Changed  | 
                    |
| 2 | 
                        -  | 
                    |
| 3 | 
                        - - In `derivepassphrase vault`, accept `key` and `phrase` entries just like  | 
                    |
| 4 | 
                        - vault(1) does: `key` always overrides `phrase` in the configuration, no  | 
                    |
| 5 | 
                        - matter the level.  | 
                    |
| 6 | 
                        -  | 
                    |
| 7 | 
                        - This is a command-line only change.  | 
                    |
| 8 | 
                        -  | 
                    |
| 9 | 
                        - - In `derivepassphrase vault`, when importing settings, accept falsy values  | 
                    |
| 10 | 
                        - everywhere `vault` does, with a warning. Depending on the setting, they  | 
                    |
| 11 | 
                        - are equivalent to zero, the empty string, or "not set". ([#17])  | 
                    |
| 12 | 
                        -  | 
                    |
| 13 | 
                        - This is a command-line only change, and only affects importing. The API  | 
                    |
| 14 | 
                        - provides a new function to normalize falsy settings, but still otherwise  | 
                    |
| 15 | 
                        - requires settings to be of the correct type. Storing a malformed  | 
                    |
| 16 | 
                        - configuration with such falsy values will still generate errors when  | 
                    |
| 17 | 
                        - `derivepassphrase vault` loads the settings from disk.  | 
                    |
| 18 | 
                        -  | 
                    |
| 19 | 
                        -[#17]: https://github.com/the-13th-letter/derivepassphrase/issues/17  | 
                    
| ... | ... | 
                      @@ -1,11 +0,0 @@  | 
                  
| 1 | 
                        -### Changed  | 
                    |
| 2 | 
                        -  | 
                    |
| 3 | 
                        - - In `derivepassphrase vault`, when importing configurations,  | 
                    |
| 4 | 
                        - correctly merge them with the existing one, same as vault(1): keep  | 
                    |
| 5 | 
                        - all named services and their settings (and the global settings if  | 
                    |
| 6 | 
                        - applicable) that are not mentioned in the imported configuration.  | 
                    |
| 7 | 
                        - The import procedure is thus more akin to a section-wise import of  | 
                    |
| 8 | 
                        - the configurations, instead of a "full" import, and the resulting  | 
                    |
| 9 | 
                        - configuration generally is a merge of both inputs. ([#16])  | 
                    |
| 10 | 
                        -  | 
                    |
| 11 | 
                        -[#16]: https://github.com/the-13th-letter/derivepassphrase/issues/16  | 
                    
| ... | ... | 
                      @@ -1,11 +0,0 @@  | 
                  
| 1 | 
                        -### Changed  | 
                    |
| 2 | 
                        -  | 
                    |
| 3 | 
                        - - The following operations or configuration settings now raise warnings:  | 
                    |
| 4 | 
                        -  | 
                    |
| 5 | 
                        - * in imported configurations: using falsy values of the wrong type  | 
                    |
| 6 | 
                        - * in imported configurations: using falsy values with no practical  | 
                    |
| 7 | 
                        - effect  | 
                    |
| 8 | 
                        - * setting a passphrase in the configuration if a key is already set  | 
                    |
| 9 | 
                        - * using an empty service name on the command-line or in an imported  | 
                    |
| 10 | 
                        - configuration  | 
                    |
| 11 | 
                        -  | 
                    
| ... | ... | 
                      @@ -30,6 +30,105 @@ effectively constitute a new <q>major</q> release.)  | 
                  
| 30 | 30 | 
                         | 
                    
| 31 | 31 | 
                        <!-- scriv changelog start -->  | 
                    
| 32 | 32 | 
                         | 
                    
| 33 | 
                        +## 0.3.0 (2024-10-15)  | 
                    |
| 34 | 
                        +  | 
                    |
| 35 | 
                        +### Added  | 
                    |
| 36 | 
                        +  | 
                    |
| 37 | 
                        + - Convert changelog management from towncrier to [scriv][].  | 
                    |
| 38 | 
                        + - Add SSH agent spawning support to the test suite. Use this support to  | 
                    |
| 39 | 
                        + test the agent functionality on all known major SSH agent  | 
                    |
| 40 | 
                        + implementations automatically. ([#12])  | 
                    |
| 41 | 
                        + - Add [hypothesis][]-based tests to the test suite.  | 
                    |
| 42 | 
                        + - Update README to add explanations for virtual environments and package  | 
                    |
| 43 | 
                        + extras.  | 
                    |
| 44 | 
                        + - Update README to demonstrate configuration storing and SSH agent use.  | 
                    |
| 45 | 
                        + Include comments on Windows support for SSH agents.  | 
                    |
| 46 | 
                        + - Use cross-references in the documentation of function signatures.  | 
                    |
| 47 | 
                        + - Add proper support for Buffer types in the SSH agent client. Any  | 
                    |
| 48 | 
                        + Python object supporting the buffer protocol can be used as input to  | 
                    |
| 49 | 
                        + a function of the client, and any output from the client is returned  | 
                    |
| 50 | 
                        + as bytes objects. Because of the zero-copy semantics of the  | 
                    |
| 51 | 
                        + underlying data/memory block, this should stay relatively time- and  | 
                    |
| 52 | 
                        + space-efficient.  | 
                    |
| 53 | 
                        + - Add [hypothesis][]-based tests for serialization to and  | 
                    |
| 54 | 
                        + deserialization from the SSH agent wire format.  | 
                    |
| 55 | 
                        + - Support Python 3.9 and 3.13.  | 
                    |
| 56 | 
                        +  | 
                    |
| 57 | 
                        +[#12]: https://github.com/the-13th-letter/derivepassphrase/issues/12  | 
                    |
| 58 | 
                        +[hypothesis]: https://pypi.org/project/hypothesis/  | 
                    |
| 59 | 
                        +[scriv]: https://pypi.org/project/scriv  | 
                    |
| 60 | 
                        +  | 
                    |
| 61 | 
                        +### Changed  | 
                    |
| 62 | 
                        +  | 
                    |
| 63 | 
                        + - Change links to point to public project repositories, if possible. For  | 
                    |
| 64 | 
                        + legal reasons.  | 
                    |
| 65 | 
                        +  | 
                    |
| 66 | 
                        + - Use the same filename/URL convention for API reference as the Python  | 
                    |
| 67 | 
                        + standard library does.  | 
                    |
| 68 | 
                        +  | 
                    |
| 69 | 
                        + - Rewrite functionality for checking for valid vault(1) configurations:  | 
                    |
| 70 | 
                        + include an actual validation function which throws errors upon  | 
                    |
| 71 | 
                        + encountering format violations, and which allows specifying which types  | 
                    |
| 72 | 
                        + of extensions (unknown settings, `derivepassphrase`-only settings) to  | 
                    |
| 73 | 
                        + tolerate during validation.  | 
                    |
| 74 | 
                        +  | 
                    |
| 75 | 
                        + This is a **breaking API change** because the function return annotation  | 
                    |
| 76 | 
                        + changed, from [`typing.TypeGuard`][] to [`typing_extensions.TypeIs`][].  | 
                    |
| 77 | 
                        + These were the originally intended semantics, but when  | 
                    |
| 78 | 
                        + `derivepassphrase` was first designed, the Python type system did not  | 
                    |
| 79 | 
                        + support this kind of partial type narrowing.  | 
                    |
| 80 | 
                        +  | 
                    |
| 81 | 
                        + - Fail earlier, and more gracefully/specifically, when we cannot talk to  | 
                    |
| 82 | 
                        + the SSH agent because Python does not support UNIX domain sockets on  | 
                    |
| 83 | 
                        + this system. In particular, this is the current situation on Windows.  | 
                    |
| 84 | 
                        +  | 
                    |
| 85 | 
                        + This adds another failure case to the `SSHAgentClient` constructor, and  | 
                    |
| 86 | 
                        + therefore constitutes a **breaking API change**.  | 
                    |
| 87 | 
                        +  | 
                    |
| 88 | 
                        + - In `derivepassphrase vault`, accept `key` and `phrase` entries just like  | 
                    |
| 89 | 
                        + vault(1) does: `key` always overrides `phrase` in the configuration, no  | 
                    |
| 90 | 
                        + matter the level.  | 
                    |
| 91 | 
                        +  | 
                    |
| 92 | 
                        + This is a command-line only change.  | 
                    |
| 93 | 
                        +  | 
                    |
| 94 | 
                        + - In `derivepassphrase vault`, when importing settings, accept falsy values  | 
                    |
| 95 | 
                        + everywhere `vault` does, with a warning. Depending on the setting, they  | 
                    |
| 96 | 
                        + are equivalent to zero, the empty string, or "not set". ([#17])  | 
                    |
| 97 | 
                        +  | 
                    |
| 98 | 
                        + This is a command-line only change, and only affects importing. The API  | 
                    |
| 99 | 
                        + provides a new function to normalize falsy settings, but still otherwise  | 
                    |
| 100 | 
                        + requires settings to be of the correct type. Storing a malformed  | 
                    |
| 101 | 
                        + configuration with such falsy values will still generate errors when  | 
                    |
| 102 | 
                        + `derivepassphrase vault` loads the settings from disk.  | 
                    |
| 103 | 
                        +  | 
                    |
| 104 | 
                        + - In `derivepassphrase vault`, when importing configurations,  | 
                    |
| 105 | 
                        + correctly merge them with the existing one, same as vault(1): keep  | 
                    |
| 106 | 
                        + all named services and their settings (and the global settings if  | 
                    |
| 107 | 
                        + applicable) that are not mentioned in the imported configuration.  | 
                    |
| 108 | 
                        + The import procedure is thus more akin to a section-wise import of  | 
                    |
| 109 | 
                        + the configurations, instead of a "full" import, and the resulting  | 
                    |
| 110 | 
                        + configuration generally is a merge of both inputs. ([#16])  | 
                    |
| 111 | 
                        +  | 
                    |
| 112 | 
                        + - The following operations or configuration settings now raise  | 
                    |
| 113 | 
                        + warnings:  | 
                    |
| 114 | 
                        +  | 
                    |
| 115 | 
                        + * in imported configurations: using falsy values of the wrong type  | 
                    |
| 116 | 
                        + * in imported configurations: using falsy values with no practical  | 
                    |
| 117 | 
                        + effect  | 
                    |
| 118 | 
                        + * setting a passphrase in the configuration if a key is already  | 
                    |
| 119 | 
                        + set  | 
                    |
| 120 | 
                        + * using an empty service name on the command-line or in an  | 
                    |
| 121 | 
                        + imported configuration  | 
                    |
| 122 | 
                        +  | 
                    |
| 123 | 
                        +[#16]: https://github.com/the-13th-letter/derivepassphrase/issues/16  | 
                    |
| 124 | 
                        +[#17]: https://github.com/the-13th-letter/derivepassphrase/issues/17  | 
                    |
| 125 | 
                        +  | 
                    |
| 126 | 
                        +### Fixed  | 
                    |
| 127 | 
                        +  | 
                    |
| 128 | 
                        + - Fixed the textual description of the return value for  | 
                    |
| 129 | 
                        + [`SSHAgentClient.request`][derivepassphrase.ssh_agent.SSHAgentClient.request],  | 
                    |
| 130 | 
                        + which didn't match the declared type annotation.  | 
                    |
| 131 | 
                        +  | 
                    |
| 33 | 132 | 
                        ## 0.2.0 (2024-09-12)  | 
                    
| 34 | 133 | 
                         | 
                    
| 35 | 134 | 
                        ### Added  |