Marco Ricci commited on 2024-12-19 15:04:11
              Zeige 2 geänderte Dateien mit 26 Einfügungen und 10 Löschungen.
            
When obtaining the compatibility config filename `settings.json` from `cli._config_filename`, rename the corresponding subsystem from `settings` to `old settings.json`. Furthermore, pass that explicit subsystem upon each call. This frees us up to change the default subsystem in a future commit. Because this is not a public function, this is not a change in the public API. Some reformatting is necessary.
| ... | ... | 
                      @@ -877,7 +877,7 @@ def derivepassphrase_export_vault(  | 
                  
| 877 | 877 | 
                         | 
                    
| 878 | 878 | 
                         | 
                    
| 879 | 879 | 
                        def _config_filename(  | 
                    
| 880 | 
                        - subsystem: str | None = 'settings',  | 
                    |
| 880 | 
                        + subsystem: str | None = 'old settings.json',  | 
                    |
| 881 | 881 | 
                        ) -> str | bytes | pathlib.Path:  | 
                    
| 882 | 882 | 
                        """Return the filename of the configuration file for the subsystem.  | 
                    
| 883 | 883 | 
                         | 
                    
| ... | ... | 
                      @@ -912,8 +912,10 @@ def _config_filename(  | 
                  
| 912 | 912 | 
                        # Use match/case here once Python 3.9 becomes unsupported.  | 
                    
| 913 | 913 | 
                        if subsystem is None:  | 
                    
| 914 | 914 | 
                        return path  | 
                    
| 915 | 
                        -    elif subsystem in {'vault', 'settings'}:  # noqa: RET505
                       | 
                    |
| 915 | 
                        + elif subsystem == 'vault': # noqa: RET505  | 
                    |
| 916 | 916 | 
                                 filename = f'{subsystem}.json'
                       | 
                    
| 917 | 
                        + elif subsystem == 'old settings.json':  | 
                    |
| 918 | 
                        + filename = 'settings.json'  | 
                    |
| 917 | 919 | 
                        else: # pragma: no cover  | 
                    
| 918 | 920 | 
                                 msg = f'Unknown configuration subsystem: {subsystem!r}'
                       | 
                    
| 919 | 921 | 
                        raise AssertionError(msg)  | 
                    
| ... | ... | 
                      @@ -968,7 +970,7 @@ def _migrate_and_load_old_config() -> tuple[  | 
                  
| 968 | 970 | 
                         | 
                    
| 969 | 971 | 
                        """  | 
                    
| 970 | 972 | 
                        new_filename = _config_filename(subsystem='vault')  | 
                    
| 971 | 
                        - old_filename = _config_filename()  | 
                    |
| 973 | 
                        + old_filename = _config_filename(subsystem='old settings.json')  | 
                    |
| 972 | 974 | 
                        with open(old_filename, 'rb') as fileobj:  | 
                    
| 973 | 975 | 
                        data = json.load(fileobj)  | 
                    
| 974 | 976 | 
                        if not _types.is_vault_config(data):  | 
                    
| ... | ... | 
                      @@ -1741,7 +1743,9 @@ def derivepassphrase_vault( # noqa: C901,PLR0912,PLR0913,PLR0914,PLR0915  | 
                  
| 1741 | 1743 | 
                        backup_config, exc = _migrate_and_load_old_config()  | 
                    
| 1742 | 1744 | 
                        except FileNotFoundError:  | 
                    
| 1743 | 1745 | 
                                         return {'services': {}}
                       | 
                    
| 1744 | 
                        - old_name = os.path.basename(_config_filename())  | 
                    |
| 1746 | 
                        + old_name = os.path.basename(  | 
                    |
| 1747 | 
                        + _config_filename(subsystem='old settings.json')  | 
                    |
| 1748 | 
                        + )  | 
                    |
| 1745 | 1749 | 
                        new_name = os.path.basename(_config_filename(subsystem='vault'))  | 
                    
| 1746 | 1750 | 
                        deprecation.warning(  | 
                    
| 1747 | 1751 | 
                        (  | 
                    
| ... | ... | 
                      @@ -2034,7 +2034,9 @@ class TestCLITransition:  | 
                  
| 2034 | 2034 | 
                        ) -> None:  | 
                    
| 2035 | 2035 | 
                        runner = click.testing.CliRunner()  | 
                    
| 2036 | 2036 | 
                        with tests.isolated_config(monkeypatch=monkeypatch, runner=runner):  | 
                    
| 2037 | 
                        - config_filename = cli._config_filename()  | 
                    |
| 2037 | 
                        + config_filename = cli._config_filename(  | 
                    |
| 2038 | 
                        + subsystem='old settings.json'  | 
                    |
| 2039 | 
                        + )  | 
                    |
| 2038 | 2040 | 
                        with open(config_filename, 'w', encoding='UTF-8') as fileobj:  | 
                    
| 2039 | 2041 | 
                        print(json.dumps(config, indent=2), file=fileobj)  | 
                    
| 2040 | 2042 | 
                        assert cli._migrate_and_load_old_config()[0] == config  | 
                    
| ... | ... | 
                      @@ -2063,7 +2065,9 @@ class TestCLITransition:  | 
                  
| 2063 | 2065 | 
                        ) -> None:  | 
                    
| 2064 | 2066 | 
                        runner = click.testing.CliRunner()  | 
                    
| 2065 | 2067 | 
                        with tests.isolated_config(monkeypatch=monkeypatch, runner=runner):  | 
                    
| 2066 | 
                        - config_filename = cli._config_filename()  | 
                    |
| 2068 | 
                        + config_filename = cli._config_filename(  | 
                    |
| 2069 | 
                        + subsystem='old settings.json'  | 
                    |
| 2070 | 
                        + )  | 
                    |
| 2067 | 2071 | 
                        with open(config_filename, 'w', encoding='UTF-8') as fileobj:  | 
                    
| 2068 | 2072 | 
                        print(json.dumps(config, indent=2), file=fileobj)  | 
                    
| 2069 | 2073 | 
                        assert cli._migrate_and_load_old_config() == (config, None)  | 
                    
| ... | ... | 
                      @@ -2092,7 +2096,9 @@ class TestCLITransition:  | 
                  
| 2092 | 2096 | 
                        ) -> None:  | 
                    
| 2093 | 2097 | 
                        runner = click.testing.CliRunner()  | 
                    
| 2094 | 2098 | 
                        with tests.isolated_config(monkeypatch=monkeypatch, runner=runner):  | 
                    
| 2095 | 
                        - config_filename = cli._config_filename()  | 
                    |
| 2099 | 
                        + config_filename = cli._config_filename(  | 
                    |
| 2100 | 
                        + subsystem='old settings.json'  | 
                    |
| 2101 | 
                        + )  | 
                    |
| 2096 | 2102 | 
                        with open(config_filename, 'w', encoding='UTF-8') as fileobj:  | 
                    
| 2097 | 2103 | 
                        print(json.dumps(config, indent=2), file=fileobj)  | 
                    
| 2098 | 2104 | 
                        os.mkdir(cli._config_filename(subsystem='vault'))  | 
                    
| ... | ... | 
                      @@ -2125,7 +2131,9 @@ class TestCLITransition:  | 
                  
| 2125 | 2131 | 
                        ) -> None:  | 
                    
| 2126 | 2132 | 
                        runner = click.testing.CliRunner()  | 
                    
| 2127 | 2133 | 
                        with tests.isolated_config(monkeypatch=monkeypatch, runner=runner):  | 
                    
| 2128 | 
                        - config_filename = cli._config_filename()  | 
                    |
| 2134 | 
                        + config_filename = cli._config_filename(  | 
                    |
| 2135 | 
                        + subsystem='old settings.json'  | 
                    |
| 2136 | 
                        + )  | 
                    |
| 2129 | 2137 | 
                        with open(config_filename, 'w', encoding='UTF-8') as fileobj:  | 
                    
| 2130 | 2138 | 
                        print(json.dumps(config, indent=2), file=fileobj)  | 
                    
| 2131 | 2139 | 
                        with pytest.raises(ValueError, match=cli._INVALID_VAULT_CONFIG):  | 
                    
| ... | ... | 
                      @@ -2260,7 +2268,9 @@ class TestCLITransition:  | 
                  
| 2260 | 2268 | 
                        runner=runner,  | 
                    
| 2261 | 2269 | 
                        ):  | 
                    
| 2262 | 2270 | 
                        with open(  | 
                    
| 2263 | 
                        - cli._config_filename(), 'w', encoding='UTF-8'  | 
                    |
| 2271 | 
                        + cli._config_filename(subsystem='old settings.json'),  | 
                    |
| 2272 | 
                        + 'w',  | 
                    |
| 2273 | 
                        + encoding='UTF-8',  | 
                    |
| 2264 | 2274 | 
                        ) as fileobj:  | 
                    
| 2265 | 2275 | 
                        print(  | 
                    
| 2266 | 2276 | 
                        json.dumps(  | 
                    
| ... | ... | 
                      @@ -2294,7 +2304,9 @@ class TestCLITransition:  | 
                  
| 2294 | 2304 | 
                        runner=runner,  | 
                    
| 2295 | 2305 | 
                        ):  | 
                    
| 2296 | 2306 | 
                        with open(  | 
                    
| 2297 | 
                        - cli._config_filename(), 'w', encoding='UTF-8'  | 
                    |
| 2307 | 
                        + cli._config_filename(subsystem='old settings.json'),  | 
                    |
| 2308 | 
                        + 'w',  | 
                    |
| 2309 | 
                        + encoding='UTF-8',  | 
                    |
| 2298 | 2310 | 
                        ) as fileobj:  | 
                    
| 2299 | 2311 | 
                        print(  | 
                    
| 2300 | 2312 | 
                        json.dumps(  | 
                    
| 2301 | 2313 |