From: Jason Lam <meowmeowcat1211@gmail.com>
Date: Mon, 1 Jan 2024 21:23:43 +0800
Subject: Set default logging level to WARNING (#1178)

* Set default logging level to WARNING

* Add changelog entry

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fix typo

* Apply shared parser as a parent parser for the base parser

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Origin: upstream, https://github.com/pypa/pipx/pull/1178
Bug-Upstream: https://github.com/pypa/pipx/issues/1175
Bug-Upstream: https://github.com/pypa/pipx/issues/1177
---
 CHANGELOG.md     |  4 ++++
 src/pipx/main.py | 23 ++++++++++++-----------
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9740f84..af6fb1c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 ## dev
 
+- Set default logging level to WARNING, so debug log messages won't be shown without passing additional flags such as `--verbose`
+
+## 1.4.0
+
 - Delete directories directly instead of spawning rmdir on Windows
 - Fix "Failed to delete" error when using Microsoft Store Python
 - Fix "No pyvenv.cfg file" error when using Microsoft Store Python (#1164)
diff --git a/src/pipx/main.py b/src/pipx/main.py
index 228fa63..1ad7b6b 100644
--- a/src/pipx/main.py
+++ b/src/pipx/main.py
@@ -699,15 +699,6 @@ def get_command_parser() -> argparse.ArgumentParser:
 
     completer_venvs = InstalledVenvsCompleter(venv_container)
 
-    parser = argparse.ArgumentParser(
-        prog=prog_name(),
-        formatter_class=LineWrapRawTextHelpFormatter,
-        description=PIPX_DESCRIPTION,
-    )
-    parser.man_short_description = PIPX_DESCRIPTION.splitlines()[1]  # type: ignore
-
-    subparsers = parser.add_subparsers(dest="command", description="Get help for commands with pipx COMMAND --help")
-
     shared_parser = argparse.ArgumentParser(add_help=False)
 
     shared_parser.add_argument(
@@ -723,6 +714,16 @@ def get_command_parser() -> argparse.ArgumentParser:
 
     shared_parser.add_argument("--verbose", "-v", action="count", default=0, help=("Give more output."))
 
+    parser = argparse.ArgumentParser(
+        prog=prog_name(),
+        formatter_class=LineWrapRawTextHelpFormatter,
+        description=PIPX_DESCRIPTION,
+        parents=[shared_parser],
+    )
+    parser.man_short_description = PIPX_DESCRIPTION.splitlines()[1]  # type: ignore
+
+    subparsers = parser.add_subparsers(dest="command", description="Get help for commands with pipx COMMAND --help")
+
     _add_install(subparsers, shared_parser)
     _add_uninject(subparsers, completer_venvs.use, shared_parser)
     _add_inject(subparsers, completer_venvs.use, shared_parser)
@@ -786,12 +787,12 @@ def setup_log_file() -> Path:
         return _setup_log_file(platformdirs.user_log_path("pipx"))
 
 
-def setup_logging(verbose: bool) -> None:
+def setup_logging(verbose: int) -> None:
     pipx_str = bold(green("pipx >")) if sys.stdout.isatty() else "pipx >"
     pipx.constants.pipx_log_file = setup_log_file()
 
     # Determine logging level
-    level_number = max(0, 2 - verbose) * 10
+    level_number = max(0, logging.WARNING - 10 * verbose)
 
     level = logging.getLevelName(level_number)
 
