Skip to content

Commit 737ec27

Browse files
committed
Remove optional from two member variables
1 parent 63a60b3 commit 737ec27

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

git/repo/base.py

+14-20
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ class Repo(object):
123123
DAEMON_EXPORT_FILE = "git-daemon-export-ok"
124124

125125
git = cast("Git", None) # Must exist, or __del__ will fail in case we raise on `__init__()`
126-
working_dir: Optional[PathLike] = None
126+
working_dir: PathLike
127127
_working_tree_dir: Optional[PathLike] = None
128-
git_dir: PathLike = ""
128+
git_dir: PathLike
129129
_common_dir: PathLike = ""
130130

131131
# precompiled regex
@@ -215,13 +215,14 @@ def __init__(
215215
## Walk up the path to find the `.git` dir.
216216
#
217217
curpath = epath
218+
_git_dir = None
218219
while curpath:
219220
# ABOUT osp.NORMPATH
220221
# It's important to normalize the paths, as submodules will otherwise initialize their
221222
# repo instances with paths that depend on path-portions that will not exist after being
222223
# removed. It's just cleaner.
223224
if is_git_dir(curpath):
224-
self.git_dir = curpath
225+
_git_dir = curpath
225226
# from man git-config : core.worktree
226227
# Set the path to the root of the working tree. If GIT_COMMON_DIR environment
227228
# variable is set, core.worktree is ignored and not used for determining the
@@ -230,7 +231,7 @@ def __init__(
230231
# directory, which is either specified by GIT_DIR, or automatically discovered.
231232
# If GIT_DIR is specified but none of GIT_WORK_TREE and core.worktree is specified,
232233
# the current working directory is regarded as the top level of your working tree.
233-
self._working_tree_dir = os.path.dirname(self.git_dir)
234+
self._working_tree_dir = os.path.dirname(_git_dir)
234235
if os.environ.get("GIT_COMMON_DIR") is None:
235236
gitconf = self.config_reader("repository")
236237
if gitconf.has_option("core", "worktree"):
@@ -242,14 +243,14 @@ def __init__(
242243
dotgit = osp.join(curpath, ".git")
243244
sm_gitpath = find_submodule_git_dir(dotgit)
244245
if sm_gitpath is not None:
245-
self.git_dir = osp.normpath(sm_gitpath)
246+
_git_dir = osp.normpath(sm_gitpath)
246247

247248
sm_gitpath = find_submodule_git_dir(dotgit)
248249
if sm_gitpath is None:
249250
sm_gitpath = find_worktree_git_dir(dotgit)
250251

251252
if sm_gitpath is not None:
252-
self.git_dir = expand_path(sm_gitpath, expand_vars)
253+
_git_dir = expand_path(sm_gitpath, expand_vars)
253254
self._working_tree_dir = curpath
254255
break
255256

@@ -260,8 +261,9 @@ def __init__(
260261
break
261262
# END while curpath
262263

263-
if self.git_dir is None:
264+
if _git_dir is None:
264265
raise InvalidGitRepositoryError(epath)
266+
self.git_dir = _git_dir
265267

266268
self._bare = False
267269
try:
@@ -282,7 +284,7 @@ def __init__(
282284
self._working_tree_dir = None
283285
# END working dir handling
284286

285-
self.working_dir: Optional[PathLike] = self._working_tree_dir or self.common_dir
287+
self.working_dir: PathLike = self._working_tree_dir or self.common_dir
286288
self.git = self.GitCommandWrapperType(self.working_dir)
287289

288290
# special handling, in special times
@@ -320,7 +322,7 @@ def close(self) -> None:
320322
gc.collect()
321323

322324
def __eq__(self, rhs: object) -> bool:
323-
if isinstance(rhs, Repo) and self.git_dir:
325+
if isinstance(rhs, Repo):
324326
return self.git_dir == rhs.git_dir
325327
return False
326328

@@ -332,14 +334,12 @@ def __hash__(self) -> int:
332334

333335
# Description property
334336
def _get_description(self) -> str:
335-
if self.git_dir:
336-
filename = osp.join(self.git_dir, "description")
337+
filename = osp.join(self.git_dir, "description")
337338
with open(filename, "rb") as fp:
338339
return fp.read().rstrip().decode(defenc)
339340

340341
def _set_description(self, descr: str) -> None:
341-
if self.git_dir:
342-
filename = osp.join(self.git_dir, "description")
342+
filename = osp.join(self.git_dir, "description")
343343
with open(filename, "wb") as fp:
344344
fp.write((descr + "\n").encode(defenc))
345345

@@ -357,13 +357,7 @@ def common_dir(self) -> PathLike:
357357
"""
358358
:return: The git dir that holds everything except possibly HEAD,
359359
FETCH_HEAD, ORIG_HEAD, COMMIT_EDITMSG, index, and logs/."""
360-
if self._common_dir:
361-
return self._common_dir
362-
elif self.git_dir:
363-
return self.git_dir
364-
else:
365-
# or could return ""
366-
raise InvalidGitRepositoryError()
360+
return self._common_dir or self.git_dir
367361

368362
@property
369363
def bare(self) -> bool:

0 commit comments

Comments
 (0)