Browse Source

Merge branch 'semantic-versioning'

https://github.com/fphammerle/freesurfer-volume-reader/pull/12
Fabian Peter Hammerle 5 years ago
parent
commit
0936faaed8
9 changed files with 40 additions and 13 deletions
  1. 1 0
      .gitignore
  2. 3 3
      Pipfile
  3. 1 1
      Pipfile.lock
  4. 2 0
      README.md
  5. 5 0
      freesurfer_volume_reader/__init__.py
  6. 2 1
      freesurfer_volume_reader/__main__.py
  7. 11 5
      setup.py
  8. 6 2
      tests/init_test.py
  9. 9 1
      tests/main_test.py

+ 1 - 0
.gitignore

@@ -1,3 +1,4 @@
 .coverage
 build/
 dist/
+version.py

+ 3 - 3
Pipfile

@@ -7,10 +7,10 @@ name = "pypi"
 freesurfer-volume-reader = {editable = true, path = "."}
 
 [dev-packages]
-pylint = ">=2.3.0"
-pytest = "*"
+pylint = ">=2.3.0,<3"
+pytest = "<5"
 pytest-cov = "<3,>=2"
-pytest-timeout = "*"
+pytest-timeout = "<2"
 
 [requires]
 python_version = "3"

+ 1 - 1
Pipfile.lock

@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "a697197be3cbcb744df6e058a1d4f70ecbb0c81821ca98d6e29b111119816171"
+            "sha256": "1098dcb0de047a6726ac1f5e983fd9b6121133064140378c7a0fdba064a7d10f"
         },
         "pipfile-spec": 6,
         "requires": {

+ 2 - 0
README.md

@@ -15,6 +15,8 @@ pip3 install --user freesurfer-volume-reader
 freesurfer-volume-reader --help
 ```
 
+Releases follow the [semantic versioning](https://semver.org/) scheme. 
+
 ## Usage
 
 ### Freesurfer

+ 5 - 0
freesurfer_volume_reader/__init__.py

@@ -22,6 +22,11 @@ import typing
 
 import pandas
 
+try:
+    from freesurfer_volume_reader.version import __version__
+except ImportError:  # pragma: no cover
+    __version__ = None
+
 
 def parse_version_string(version_string: str) -> typing.Tuple[typing.Union[int, str]]:
     return tuple(int(p) if p.isdigit() else p for p in version_string.split('.'))

+ 2 - 1
freesurfer_volume_reader/__main__.py

@@ -10,7 +10,7 @@ import typing
 
 import pandas
 
-from freesurfer_volume_reader import ashs, freesurfer, parse_version_string, \
+from freesurfer_volume_reader import __version__, ashs, freesurfer, parse_version_string, \
                                      remove_group_names_from_regex
 
 def concat_dataframes(dataframes: typing.Iterable[pandas.DataFrame]
@@ -48,6 +48,7 @@ def main():
                            nargs='*' if subjects_dir_path else '+',
                            default=[subjects_dir_path],
                            help='default: $SUBJECTS_DIR ({})'.format(subjects_dir_path))
+    argparser.add_argument('--version', action='version', version=__version__)
     args = argparser.parse_args()
     filename_regexs = {k[len('filename_regex.'):]: v for k, v in vars(args).items()
                        if k.startswith('filename_regex.')}

+ 11 - 5
setup.py

@@ -1,3 +1,5 @@
+import os
+
 import setuptools
 
 import freesurfer_volume_reader
@@ -7,7 +9,11 @@ LONG_DESCRIPTION = freesurfer_volume_reader.__doc__.strip()
 
 setuptools.setup(
     name='freesurfer-volume-reader',
-    use_scm_version=True,
+    use_scm_version={
+        'write_to': os.path.join('freesurfer_volume_reader', 'version.py'),
+        # `version` triggers pylint C0103 
+        'write_to_template': "__version__ = '{version}'\n",
+    },
     description=LONG_DESCRIPTION.split(sep='\n', maxsplit=1)[0],
     long_description=LONG_DESCRIPTION,
     author='Fabian Peter Hammerle',
@@ -41,15 +47,15 @@ setuptools.setup(
     },
     install_requires=[
         # pandas.DataFrame.drop(columns=[...], ...)
-        'pandas>=0.21.0',
+        'pandas>=0.21.0,<1',
     ],
     setup_requires=[
         'setuptools_scm',
     ],
     tests_require=[
-        'pylint>=2.3.0',
-        'pytest',
+        'pylint>=2.3.0,<3',
+        'pytest<5',
         'pytest-cov<3,>=2',
-        'pytest-timeout',
+        'pytest-timeout<2',
     ],
 )

+ 6 - 2
tests/init_test.py

@@ -1,7 +1,11 @@
 import pytest
 
-from freesurfer_volume_reader import parse_version_string, remove_group_names_from_regex, \
-                                     VolumeFile
+from freesurfer_volume_reader import __version__, parse_version_string, \
+                                     remove_group_names_from_regex, VolumeFile
+
+
+def test_module_version():
+    assert len(__version__) >= len('0.1.0')
 
 
 @pytest.mark.parametrize(('version_string', 'expected_tuple'), [

+ 9 - 1
tests/main_test.py

@@ -8,6 +8,7 @@ import pandas
 import pandas.util.testing
 import pytest
 
+import freesurfer_volume_reader
 import freesurfer_volume_reader.__main__
 
 from conftest import SUBJECTS_DIR, assert_volume_frames_equal
@@ -201,6 +202,13 @@ def test_main_root_dir_filename_regex_combined(capsys):
     )
 
 
-def test_main_module_script():
+def test_main_module_script_help():
     subprocess.run(['python', '-m', 'freesurfer_volume_reader', '--help'],
                    check=True)
+
+
+def test_main_module_script_version():
+    proc_info = subprocess.run(['python', '-m', 'freesurfer_volume_reader', '--version'],
+                               check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    assert proc_info.stdout.rstrip() == freesurfer_volume_reader.__version__.encode()
+    assert not proc_info.stderr