commit 0c467db4cf6f6f9f5df31b8d2e03ea4edd13e6cd from: David Hotham date: Thu Jun 30 17:12:50 2022 UTC markups: backwards compatibility commit - e9071c627f6d0a04a388b95402dbddd7ecfc3f52 commit + 0c467db4cf6f6f9f5df31b8d2e03ea4edd13e6cd blob - 962e327b7f5096c5030bcf11507d4bde11446fb8 blob + 85d073258d11da96c0d7330d6a337793aa42aa77 --- dulwich/config.py +++ dulwich/config.py @@ -29,13 +29,12 @@ TODO: import os import sys import warnings - from typing import ( BinaryIO, Iterable, Iterator, - List, KeysView, + List, MutableMapping, Optional, Tuple, @@ -202,7 +201,12 @@ class Config(object): return False raise ValueError("not a valid boolean string: %r" % value) - def set(self, section: KeyLike, name: BytesLike, value: ValueLike) -> None: + def set( + self, + section: KeyLike, + name: BytesLike, + value: Union[ValueLike, bool] + ) -> None: """Set a configuration value. Args: @@ -212,18 +216,6 @@ class Config(object): value: value of the setting """ raise NotImplementedError(self.set) - - def set_boolean(self, section: KeyLike, name: BytesLike, value: bool) -> None: - """Set a boolean configuration value. - - Args: - section: Tuple with section name and optional subsection namee - name: Name of the configuration value, including section - and optional subsection - value: value of the setting - """ - text = b"true" if value else b"false" - self.set(section, name, text) def items(self, section: KeyLike) -> Iterator[Tuple[bytes, Value]]: """Iterate over the configuration pairs for a specific section. @@ -381,11 +373,14 @@ class ConfigDict(Config, MutableMapping[Key, MutableMa self, section: KeyLike, name: BytesLike, - value: ValueLike, + value: Union[ValueLike, bool], ) -> None: section, name = self._check_section_and_name(section, name) - if not isinstance(value, (bytes, bool)): + if isinstance(value, bool): + value = b"true" if value else b"false" + + if not isinstance(value, bytes): value = value.encode(self.encoding) self._values.setdefault(section)[name] = value @@ -744,7 +739,12 @@ class StackedConfig(Config): except KeyError: pass - def set(self, section: KeyLike, name: BytesLike, value: ValueLike) -> None: + def set( + self, + section: KeyLike, + name: BytesLike, + value: Union[ValueLike, bool] + ) -> None: if self.writable is None: raise NotImplementedError(self.set) return self.writable.set(section, name, value) blob - 264ab907e6d89a032af4c3251432c66331a9e14f blob + 80c2ad575723a1452ebcc6bd4b34a2fe267fc7e1 --- dulwich/repo.py +++ dulwich/repo.py @@ -366,12 +366,12 @@ class BaseRepo(object): cf = ConfigFile() cf.set("core", "repositoryformatversion", "0") if self._determine_file_mode(): - cf.set_boolean("core", "filemode", True) + cf.set("core", "filemode", True) else: - cf.set_boolean("core", "filemode", False) + cf.set("core", "filemode", False) - cf.set_boolean("core", "bare", bare) - cf.set_boolean("core", "logallrefupdates", True) + cf.set("core", "bare", bare) + cf.set("core", "logallrefupdates", True) cf.write_to_file(f) self._put_named_file("config", f.getvalue()) self._put_named_file(os.path.join("info", "exclude"), b"")