Skip to content

Commit

Permalink
Merge pull request gitpython-developers#1813 from EliahKagan/logging
Browse files Browse the repository at this point in the history
Don't suppress messages when logging is not configured
  • Loading branch information
Byron authored Jan 26, 2024
2 parents 9a7cec1 + bc42ee5 commit 10cdd03
Show file tree
Hide file tree
Showing 11 changed files with 57 additions and 68 deletions.
21 changes: 10 additions & 11 deletions git/cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,7 @@
"strip_newline_in_stdout",
}

log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())
_logger = logging.getLogger(__name__)

__all__ = ("Git",)

Expand Down Expand Up @@ -146,7 +145,7 @@ def pump_stream(
handler(line)

except Exception as ex:
log.error(f"Pumping {name!r} of cmd({remove_password_if_present(cmdline)}) failed due to: {ex!r}")
_logger.error(f"Pumping {name!r} of cmd({remove_password_if_present(cmdline)}) failed due to: {ex!r}")
if "I/O operation on closed file" not in str(ex):
# Only reraise if the error was not due to the stream closing
raise CommandError([f"<{name}-pump>"] + remove_password_if_present(cmdline), ex) from ex
Expand Down Expand Up @@ -600,7 +599,7 @@ def _terminate(self) -> None:
self.status = self._status_code_if_terminate or proc.poll()
return
except OSError as ex:
log.info("Ignored error after process had died: %r", ex)
_logger.info("Ignored error after process had died: %r", ex)

# It can be that nothing really exists anymore...
if os is None or getattr(os, "kill", None) is None:
Expand All @@ -613,7 +612,7 @@ def _terminate(self) -> None:

self.status = self._status_code_if_terminate or status
except OSError as ex:
log.info("Ignored error after process had died: %r", ex)
_logger.info("Ignored error after process had died: %r", ex)
# END exception handling

def __del__(self) -> None:
Expand Down Expand Up @@ -654,7 +653,7 @@ def read_all_from_possibly_closed_stream(stream: Union[IO[bytes], None]) -> byte

if status != 0:
errstr = read_all_from_possibly_closed_stream(p_stderr)
log.debug("AutoInterrupt wait stderr: %r" % (errstr,))
_logger.debug("AutoInterrupt wait stderr: %r" % (errstr,))
raise GitCommandError(remove_password_if_present(self.args), status, errstr)
return status

Expand Down Expand Up @@ -1018,7 +1017,7 @@ def execute(
# Remove password for the command if present.
redacted_command = remove_password_if_present(command)
if self.GIT_PYTHON_TRACE and (self.GIT_PYTHON_TRACE != "full" or as_process):
log.info(" ".join(redacted_command))
_logger.info(" ".join(redacted_command))

# Allow the user to have the command executed in their working dir.
try:
Expand Down Expand Up @@ -1055,7 +1054,7 @@ def execute(
stdout_sink = PIPE if with_stdout else getattr(subprocess, "DEVNULL", None) or open(os.devnull, "wb")
if shell is None:
shell = self.USE_SHELL
log.debug(
_logger.debug(
"Popen(%s, cwd=%s, stdin=%s, shell=%s, universal_newlines=%s)",
redacted_command,
cwd,
Expand Down Expand Up @@ -1167,17 +1166,17 @@ def as_text(stdout_value: Union[bytes, str]) -> str:
# END as_text

if stderr_value:
log.info(
_logger.info(
"%s -> %d; stdout: '%s'; stderr: '%s'",
cmdstr,
status,
as_text(stdout_value),
safe_decode(stderr_value),
)
elif stdout_value:
log.info("%s -> %d; stdout: '%s'", cmdstr, status, as_text(stdout_value))
_logger.info("%s -> %d; stdout: '%s'", cmdstr, status, as_text(stdout_value))
else:
log.info("%s -> %d", cmdstr, status)
_logger.info("%s -> %d", cmdstr, status)
# END handle debug printing

if with_exceptions and status != 0:
Expand Down
9 changes: 3 additions & 6 deletions git/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,7 @@

__all__ = ("GitConfigParser", "SectionConstraint")


log = logging.getLogger("git.config")
log.addHandler(logging.NullHandler())

_logger = logging.getLogger(__name__)

CONFIG_LEVELS: ConfigLevels_Tup = ("system", "user", "global", "repository")
"""The configuration level of a configuration file."""
Expand Down Expand Up @@ -412,7 +409,7 @@ def release(self) -> None:
try:
self.write()
except IOError:
log.error("Exception during destruction of GitConfigParser", exc_info=True)
_logger.error("Exception during destruction of GitConfigParser", exc_info=True)
except ReferenceError:
# This happens in Python 3... and usually means that some state cannot be
# written as the sections dict cannot be iterated. This usually happens when
Expand Down Expand Up @@ -712,7 +709,7 @@ def write(self) -> None:
# END assert multiple files

if self._has_includes():
log.debug(
_logger.debug(
"Skipping write-back of configuration file as include files were merged in."
+ "Set merge_includes=False to prevent this."
)
Expand Down
9 changes: 4 additions & 5 deletions git/objects/commit.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@

# ------------------------------------------------------------------------

log = logging.getLogger("git.objects.commit")
log.addHandler(logging.NullHandler())
_logger = logging.getLogger(__name__)

__all__ = ("Commit",)

Expand Down Expand Up @@ -767,7 +766,7 @@ def _deserialize(self, stream: BytesIO) -> "Commit":
self.author_tz_offset,
) = parse_actor_and_date(author_line.decode(self.encoding, "replace"))
except UnicodeDecodeError:
log.error(
_logger.error(
"Failed to decode author line '%s' using encoding %s",
author_line,
self.encoding,
Expand All @@ -781,7 +780,7 @@ def _deserialize(self, stream: BytesIO) -> "Commit":
self.committer_tz_offset,
) = parse_actor_and_date(committer_line.decode(self.encoding, "replace"))
except UnicodeDecodeError:
log.error(
_logger.error(
"Failed to decode committer line '%s' using encoding %s",
committer_line,
self.encoding,
Expand All @@ -795,7 +794,7 @@ def _deserialize(self, stream: BytesIO) -> "Commit":
try:
self.message = self.message.decode(self.encoding, "replace")
except UnicodeDecodeError:
log.error(
_logger.error(
"Failed to decode message '%s' using encoding %s",
self.message,
self.encoding,
Expand Down
18 changes: 8 additions & 10 deletions git/objects/submodule/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@


# typing ----------------------------------------------------------------------

from typing import Callable, Dict, Mapping, Sequence, TYPE_CHECKING, cast
from typing import Any, Iterator, Union

Expand All @@ -50,14 +51,11 @@
from git.repo import Repo
from git.refs import Head


# -----------------------------------------------------------------------------

__all__ = ["Submodule", "UpdateProgress"]


log = logging.getLogger("git.objects.submodule.base")
log.addHandler(logging.NullHandler())
_logger = logging.getLogger(__name__)


class UpdateProgress(RemoteProgress):
Expand Down Expand Up @@ -731,7 +729,7 @@ def update(
)
mrepo.head.reference.set_tracking_branch(remote_branch)
except (IndexError, InvalidGitRepositoryError):
log.warning("Failed to checkout tracking branch %s", self.branch_path)
_logger.warning("Failed to checkout tracking branch %s", self.branch_path)
# END handle tracking branch

# NOTE: Have to write the repo config file as well, otherwise the
Expand Down Expand Up @@ -761,14 +759,14 @@ def update(
binsha = rcommit.binsha
hexsha = rcommit.hexsha
else:
log.error(
_logger.error(
"%s a tracking branch was not set for local branch '%s'",
msg_base,
mrepo.head.reference,
)
# END handle remote ref
else:
log.error("%s there was no local tracking branch", msg_base)
_logger.error("%s there was no local tracking branch", msg_base)
# END handle detached head
# END handle to_latest_revision option

Expand All @@ -786,15 +784,15 @@ def update(
if force:
msg = "Will force checkout or reset on local branch that is possibly in the future of"
msg += " the commit it will be checked out to, effectively 'forgetting' new commits"
log.debug(msg)
_logger.debug(msg)
else:
msg = "Skipping %s on branch '%s' of submodule repo '%s' as it contains un-pushed commits"
msg %= (
is_detached and "checkout" or "reset",
mrepo.head,
mrepo,
)
log.info(msg)
_logger.info(msg)
may_reset = False
# END handle force
# END handle if we are in the future
Expand Down Expand Up @@ -834,7 +832,7 @@ def update(
except Exception as err:
if not keep_going:
raise
log.error(str(err))
_logger.error(str(err))
# END handle keep_going

# HANDLE RECURSION
Expand Down
7 changes: 3 additions & 4 deletions git/objects/submodule/root.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@

__all__ = ["RootModule", "RootUpdateProgress"]

log = logging.getLogger("git.objects.submodule.root")
log.addHandler(logging.NullHandler())
_logger = logging.getLogger(__name__)


class RootUpdateProgress(UpdateProgress):
Expand Down Expand Up @@ -321,7 +320,7 @@ def update(
# this way, it will be checked out in the next step.
# This will change the submodule relative to us, so
# the user will be able to commit the change easily.
log.warning(
_logger.warning(
"Current sha %s was not contained in the tracking\
branch at the new remote, setting it the the remote's tracking branch",
sm.hexsha,
Expand Down Expand Up @@ -393,7 +392,7 @@ def update(
except Exception as err:
if not keep_going:
raise
log.error(str(err))
_logger.error(str(err))
# END handle keep_going

# FINALLY UPDATE ALL ACTUAL SUBMODULES
Expand Down
19 changes: 8 additions & 11 deletions git/remote.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,7 @@

# -------------------------------------------------------------


log = logging.getLogger("git.remote")
log.addHandler(logging.NullHandler())

_logger = logging.getLogger(__name__)

__all__ = ("RemoteProgress", "PushInfo", "FetchInfo", "Remote")

Expand Down Expand Up @@ -846,7 +843,7 @@ def _get_fetch_info_from_stderr(
stderr_text = progress.error_lines and "\n".join(progress.error_lines) or ""
proc.wait(stderr=stderr_text)
if stderr_text:
log.warning("Error lines received while fetching: %s", stderr_text)
_logger.warning("Error lines received while fetching: %s", stderr_text)

for line in progress.other_lines:
line = force_text(line)
Expand All @@ -867,9 +864,9 @@ def _get_fetch_info_from_stderr(
msg += "length of progress lines %i should be equal to lines in FETCH_HEAD file %i\n"
msg += "Will ignore extra progress lines or fetch head lines."
msg %= (l_fil, l_fhi)
log.debug(msg)
log.debug(b"info lines: " + str(fetch_info_lines).encode("UTF-8"))
log.debug(b"head info: " + str(fetch_head_info).encode("UTF-8"))
_logger.debug(msg)
_logger.debug(b"info lines: " + str(fetch_info_lines).encode("UTF-8"))
_logger.debug(b"head info: " + str(fetch_head_info).encode("UTF-8"))
if l_fil < l_fhi:
fetch_head_info = fetch_head_info[:l_fil]
else:
Expand All @@ -881,8 +878,8 @@ def _get_fetch_info_from_stderr(
try:
output.append(FetchInfo._from_line(self.repo, err_line, fetch_line))
except ValueError as exc:
log.debug("Caught error while parsing line: %s", exc)
log.warning("Git informed while fetching: %s", err_line.strip())
_logger.debug("Caught error while parsing line: %s", exc)
_logger.warning("Git informed while fetching: %s", err_line.strip())
return output

def _get_push_info(
Expand Down Expand Up @@ -924,7 +921,7 @@ def stdout_handler(line: str) -> None:
if not output:
raise
elif stderr_text:
log.warning("Error lines received while fetching: %s", stderr_text)
_logger.warning("Error lines received while fetching: %s", stderr_text)
output.error = e

return output
Expand Down
8 changes: 4 additions & 4 deletions git/repo/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@

# -----------------------------------------------------------

log = logging.getLogger(__name__)
_logger = logging.getLogger(__name__)

__all__ = ("Repo",)

Expand Down Expand Up @@ -772,7 +772,7 @@ def is_valid_object(self, sha: str, object_type: Union[str, None] = None) -> boo
if object_info.type == object_type.encode():
return True
else:
log.debug(
_logger.debug(
"Commit hash points to an object of type '%s'. Requested were objects of type '%s'",
object_info.type.decode(),
object_type,
Expand All @@ -781,7 +781,7 @@ def is_valid_object(self, sha: str, object_type: Union[str, None] = None) -> boo
else:
return True
except BadObject:
log.debug("Commit hash is invalid.")
_logger.debug("Commit hash is invalid.")
return False

def _get_daemon_export(self) -> bool:
Expand Down Expand Up @@ -1298,7 +1298,7 @@ def _clone(
cmdline = getattr(proc, "args", "")
cmdline = remove_password_if_present(cmdline)

log.debug("Cmd(%s)'s unused stdout: %s", cmdline, stdout)
_logger.debug("Cmd(%s)'s unused stdout: %s", cmdline, stdout)
finalize_process(proc, stderr=stderr)

# Our git command could have a different working dir than our actual
Expand Down
8 changes: 4 additions & 4 deletions git/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
"HIDE_WINDOWS_KNOWN_ERRORS",
]

log = logging.getLogger(__name__)
_logger = logging.getLogger(__name__)


def _read_win_env_flag(name: str, default: bool) -> bool:
Expand All @@ -124,7 +124,7 @@ def _read_win_env_flag(name: str, default: bool) -> bool:
except KeyError:
return default

log.warning(
_logger.warning(
"The %s environment variable is deprecated. Its effect has never been documented and changes without warning.",
name,
)
Expand All @@ -135,7 +135,7 @@ def _read_win_env_flag(name: str, default: bool) -> bool:
return False
if adjusted_value in {"1", "true", "yes"}:
return True
log.warning("%s has unrecognized value %r, treating as %r.", name, value, default)
_logger.warning("%s has unrecognized value %r, treating as %r.", name, value, default)
return default


Expand Down Expand Up @@ -466,7 +466,7 @@ def is_cygwin_git(git_executable: Union[None, PathLike]) -> bool:
# retcode = process.poll()
is_cygwin = "CYGWIN" in uname_out
except Exception as ex:
log.debug("Failed checking if running in CYGWIN due to: %r", ex)
_logger.debug("Failed checking if running in CYGWIN due to: %r", ex)
_is_cygwin_cache[git_executable] = is_cygwin

return is_cygwin
Expand Down
Loading

0 comments on commit 10cdd03

Please sign in to comment.