Skip to content

Commit fc8400d

Browse files
authored
Merge pull request #84 from MrMino/better-version-flag
- Improves the information printed by `--version` flag. - Aliases `-V` to `--version`
2 parents 644eef0 + 848ae09 commit fc8400d

File tree

7 files changed

+41
-21
lines changed

7 files changed

+41
-21
lines changed

CHANGELOG.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ Release History
66

77
- Added `python_requires` to metadata; from now on, releases of
88
`pip-check-reqs` are marked as compatible with Python 3.6.1 and up.
9+
- Made `--version` flag show interpretter version and path to the package which
10+
pip-check-reqs is running from, similar to information shown by `pip
11+
--version`.
12+
- `-V` is now an alias of `--version`.
913

1014
2.3.2
1115

pip_check_reqs/common.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@
44
import logging
55
import os
66
import re
7+
import sys
8+
9+
from pathlib import Path
710
from typing import Container, Optional, List, cast
811

912
from packaging.utils import canonicalize_name
1013
from packaging.markers import Marker
14+
15+
from . import __version__
16+
1117
# Between different versions of pip the location of PipSession has changed.
1218
try:
1319
from pip._internal.network.session import PipSession
@@ -248,3 +254,11 @@ def f(candidate, ignore_cfg=ignore_cfg):
248254
return False
249255

250256
return f
257+
258+
259+
def version_info():
260+
return "pip-check-reqs {} from {} (python {})".format(
261+
__version__,
262+
str((Path(__file__) / '..').resolve()),
263+
"{}.{}.{}".format(*sys.version_info),
264+
)

pip_check_reqs/find_extra_reqs.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from packaging.utils import canonicalize_name
99
from pip._internal.commands.show import search_packages_info
1010
from pip_check_reqs import common
11-
from pip_check_reqs.common import get_installed_distributions
11+
from pip_check_reqs.common import get_installed_distributions, version_info
1212

1313
log = logging.getLogger(__name__)
1414

@@ -82,8 +82,6 @@ def find_extra_reqs(options, requirements_filename):
8282

8383

8484
def main():
85-
from pip_check_reqs import __version__
86-
8785
usage = 'usage: %prog [options] files or directories'
8886
parser = optparse.OptionParser(usage)
8987
parser.add_option("--requirements-file",
@@ -129,7 +127,7 @@ def main():
129127
action="store_true",
130128
default=False,
131129
help="be *really* verbose")
132-
parser.add_option("--version",
130+
parser.add_option("-V", "--version",
133131
dest="version",
134132
action="store_true",
135133
default=False,
@@ -138,7 +136,8 @@ def main():
138136
(options, args) = parser.parse_args()
139137

140138
if options.version:
141-
sys.exit(__version__)
139+
print(version_info())
140+
sys.exit(0)
142141

143142
if not args:
144143
parser.error("no source files or directories specified")
@@ -160,7 +159,7 @@ def main():
160159
log.setLevel(level)
161160
common.log.setLevel(level)
162161

163-
log.info('using pip_check_reqs-%s from %s', __version__, __file__)
162+
log.info(version_info())
164163

165164
extras = find_extra_reqs(
166165
options=options,

pip_check_reqs/find_missing_reqs.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from pip._internal.req.req_file import parse_requirements
1616

1717
from pip_check_reqs import common
18-
from pip_check_reqs.common import get_installed_distributions
18+
from pip_check_reqs.common import get_installed_distributions, version_info
1919

2020
log = logging.getLogger(__name__)
2121

@@ -102,8 +102,6 @@ def find_missing_reqs(options, requirements_filename):
102102

103103

104104
def main():
105-
from pip_check_reqs import __version__
106-
107105
usage = 'usage: %prog [options] files or directories'
108106
parser = optparse.OptionParser(usage)
109107
parser.add_option("--requirements-file",
@@ -136,7 +134,7 @@ def main():
136134
action="store_true",
137135
default=False,
138136
help="be *really* verbose")
139-
parser.add_option("--version",
137+
parser.add_option("-V", "--version",
140138
dest="version",
141139
action="store_true",
142140
default=False,
@@ -145,7 +143,8 @@ def main():
145143
(options, args) = parser.parse_args()
146144

147145
if options.version:
148-
sys.exit(__version__)
146+
print(version_info())
147+
sys.exit(0)
149148

150149
if not args:
151150
parser.error("no source files or directories specified")
@@ -166,7 +165,7 @@ def main():
166165
log.setLevel(level)
167166
common.log.setLevel(level)
168167

169-
log.info('using pip_check_reqs-%s from %s', __version__, __file__)
168+
log.info(version_info())
170169

171170
missing = find_missing_reqs(
172171
options=options,

tests/test_common.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import pytest
99
import pretend
1010

11-
from pip_check_reqs import common
11+
from pip_check_reqs import common, __version__
1212

1313

1414
@pytest.mark.parametrize(
@@ -225,3 +225,7 @@ def mocked_open(*args, **kwargs):
225225
common.__builtins__['open'] = original_open
226226

227227
assert used_encoding == expected_encoding
228+
229+
230+
def test_version_info_shows_version_number():
231+
assert __version__ in common.version_info()

tests/test_find_extra_reqs.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import pytest
99
import pretend
1010

11-
from pip_check_reqs import find_extra_reqs, common, __version__
11+
from pip_check_reqs import find_extra_reqs, common
1212

1313

1414
@pytest.fixture
@@ -168,11 +168,11 @@ def parse_args(self):
168168
assert messages == result
169169

170170

171-
def test_main_version(monkeypatch, caplog, fake_opts):
171+
def test_main_version(monkeypatch, capsys, fake_opts):
172172
fake_opts.options.version = True
173173
monkeypatch.setattr(optparse, 'OptionParser', fake_opts)
174174

175-
with pytest.raises(SystemExit) as excinfo:
175+
with pytest.raises(SystemExit):
176176
find_extra_reqs.main()
177177

178-
assert str(excinfo.value) == __version__
178+
assert capsys.readouterr().out == common.version_info() + "\n"

tests/test_find_missing_reqs.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import pytest
99
import pretend
1010

11-
from pip_check_reqs import find_missing_reqs, common, __version__
11+
from pip_check_reqs import find_missing_reqs, common
1212

1313

1414
@pytest.fixture
@@ -178,11 +178,11 @@ def parse_args(self):
178178
assert messages == result
179179

180180

181-
def test_main_version(monkeypatch, caplog, fake_opts):
181+
def test_main_version(monkeypatch, capsys, fake_opts):
182182
fake_opts.options.version = True
183183
monkeypatch.setattr(optparse, 'OptionParser', fake_opts)
184184

185-
with pytest.raises(SystemExit) as excinfo:
185+
with pytest.raises(SystemExit):
186186
find_missing_reqs.main()
187187

188-
assert str(excinfo.value) == __version__
188+
assert capsys.readouterr().out == common.version_info() + "\n"

0 commit comments

Comments
 (0)