From 2786c9ffe1ab5bc2becaa80cc06fe20a6d7d108f Mon Sep 17 00:00:00 2001
From: Lorenzo ZOLFANELLI <lorenzo.zolfanelli@espci.psl.eu>
Date: Tue, 17 Jan 2023 18:02:50 +0100
Subject: [PATCH] prepare hard fork

---
 pyproject.toml                                | 10 +++++
 setup.cfg                                     | 37 +++++++++++++++++++
 setup.py                                      | 31 ----------------
 sphinx/conf.py                                |  6 +--
 .../zolfa/nd2reader}/__init__.py              |  4 +-
 .../zolfa/nd2reader}/artificial.py            |  2 +-
 {nd2reader => src/zolfa/nd2reader}/common.py  |  2 +-
 .../zolfa/nd2reader}/common_raw_metadata.py   |  2 +-
 .../zolfa/nd2reader}/exceptions.py            |  0
 .../zolfa/nd2reader}/label_map.py             |  0
 {nd2reader => src/zolfa/nd2reader}/legacy.py  |  2 +-
 {nd2reader => src/zolfa/nd2reader}/parser.py  |  8 ++--
 .../zolfa/nd2reader}/raw_metadata.py          |  4 +-
 {nd2reader => src/zolfa/nd2reader}/reader.py  |  4 +-
 .../zolfa/nd2reader}/stitched.py              |  0
 src/zolfa/nd2reader/version.py                |  4 ++
 test.py                                       |  2 +-
 tests/test_artificial.py                      |  6 +--
 tests/test_common.py                          |  6 +--
 tests/test_label_map.py                       |  4 +-
 tests/test_legacy.py                          |  6 +--
 tests/test_parser.py                          |  6 +--
 tests/test_raw_metadata.py                    |  8 ++--
 tests/test_reader.py                          |  8 ++--
 tests/test_version.py                         |  2 +-
 25 files changed, 92 insertions(+), 72 deletions(-)
 create mode 100644 pyproject.toml
 delete mode 100644 setup.py
 rename {nd2reader => src/zolfa/nd2reader}/__init__.py (73%)
 rename {nd2reader => src/zolfa/nd2reader}/artificial.py (99%)
 rename {nd2reader => src/zolfa/nd2reader}/common.py (99%)
 rename {nd2reader => src/zolfa/nd2reader}/common_raw_metadata.py (98%)
 rename {nd2reader => src/zolfa/nd2reader}/exceptions.py (100%)
 rename {nd2reader => src/zolfa/nd2reader}/label_map.py (100%)
 rename {nd2reader => src/zolfa/nd2reader}/legacy.py (99%)
 rename {nd2reader => src/zolfa/nd2reader}/parser.py (98%)
 rename {nd2reader => src/zolfa/nd2reader}/raw_metadata.py (98%)
 rename {nd2reader => src/zolfa/nd2reader}/reader.py (98%)
 rename {nd2reader => src/zolfa/nd2reader}/stitched.py (100%)
 create mode 100644 src/zolfa/nd2reader/version.py

diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..bb3257d
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,10 @@
+[build-system]
+requires = [
+    "setuptools>=42",
+    "wheel",
+    "setuptools_scm[toml]>3.4",
+]
+build-backend = "setuptools.build_meta"
+
+[tool.setuptools_scm]
+write_to = "src/zolfa/nd2reader/version.py"
diff --git a/setup.cfg b/setup.cfg
index b2445a8..291f4e5 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,42 @@
 [metadata]
+name = zolfa-nd2reader
+version = attr:zolfa.nd2reader.version
+description = A tool for reading ND2 files produced by NIS Elements
 description-file = README.md
+classifiers = 
+    Development Status :: 5 - Production/Stable
+    Intended Audience :: Science/Research
+    License :: Freely Distributable
+    License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
+    Operating System :: POSIX :: Linux
+    Programming Language :: Python :: 2.7
+    Programming Language :: Python :: 3.4
+    Topic :: Scientific/Engineering
+keywords =
+    nd2
+    nikon
+    microscopy
+    NIS Elements
+author = Ruben Verweij, Lorenzo Zolfanelli
+author_email = dev@zolfa.nl
+url = https://projects.lilik.it/zolfa/zolfa-nd2reader
+
+[options]
+packages = find_namespace:
+package_dir =
+    = src
+python_requires = >=3.6
+install_requires =
+    numpy>=1.14
+    six>=1.4
+    xmltodict>=0.9.2
+    PIMS>=0.5.0
+setup_requires =
+    setuptools_scm
+
+[options.packages.find]
+where = src
+include = zolfa.*
 
 [bdist_wheel]
 universal=1
\ No newline at end of file
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 5b6ebdd..0000000
--- a/setup.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from setuptools import setup
-#from nd2reader import __version__ as VERSION
-
-if __name__ == '__main__':
-    setup(
-        name='nd2reader',
-        packages=['nd2reader'],
-        install_requires=[
-            'numpy>=1.14',
-            'six>=1.4',
-            'xmltodict>=0.9.2',
-            'PIMS>=0.5.0'
-        ],
-        python_requires=">=3.6",
-        version="3.2.3-zolfa-dev0",
-        description='A tool for reading ND2 files produced by NIS Elements',
-        author='Ruben Verweij',
-        author_email='ruben@lighthacking.nl',
-        url='https://github.com/rbnvrw/nd2reader',
-        download_url='https://github.com/rbnvrw/nd2reader/tarball/%s' % "3.2.3-zolfa-dev0",
-        keywords=['nd2', 'nikon', 'microscopy', 'NIS Elements'],
-        classifiers=['Development Status :: 5 - Production/Stable',
-                     'Intended Audience :: Science/Research',
-                     'License :: Freely Distributable',
-                     'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
-                     'Operating System :: POSIX :: Linux',
-                     'Programming Language :: Python :: 2.7',
-                     'Programming Language :: Python :: 3.4',
-                     'Topic :: Scientific/Engineering',
-                     ]
-    )
diff --git a/sphinx/conf.py b/sphinx/conf.py
index 7a27c28..7914e16 100644
--- a/sphinx/conf.py
+++ b/sphinx/conf.py
@@ -2,7 +2,7 @@
 # -*- coding: utf-8 -*-
 import sphinx_bootstrap_theme
 from recommonmark.parser import CommonMarkParser
-from nd2reader import __version__ as VERSION
+from zolfa.nd2reader.version import __version__ as VERSION
 
 # -- General configuration ------------------------------------------------
 
@@ -36,9 +36,9 @@ source_suffix = ['.rst', '.md']
 master_doc = 'index'
 
 # General information about the project.
-project = 'nd2reader'
+project = 'zolfa-nd2reader'
 copyright = '2017 - 2019, Ruben Verweij'
-author = 'Ruben Verweij'
+author = 'Ruben Verweij, Lorenzo Zolfanelli'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
diff --git a/nd2reader/__init__.py b/src/zolfa/nd2reader/__init__.py
similarity index 73%
rename from nd2reader/__init__.py
rename to src/zolfa/nd2reader/__init__.py
index 353176e..3b424e1 100644
--- a/nd2reader/__init__.py
+++ b/src/zolfa/nd2reader/__init__.py
@@ -1,6 +1,6 @@
 from os import path
-from nd2reader.reader import ND2Reader
-from nd2reader.legacy import Nd2
+from zolfa.nd2reader.reader import ND2Reader
+from zolfa.nd2reader.legacy import Nd2
 
 try:
     import importlib.metadata as importlib_metadata
diff --git a/nd2reader/artificial.py b/src/zolfa/nd2reader/artificial.py
similarity index 99%
rename from nd2reader/artificial.py
rename to src/zolfa/nd2reader/artificial.py
index 861c613..05f4609 100644
--- a/nd2reader/artificial.py
+++ b/src/zolfa/nd2reader/artificial.py
@@ -3,7 +3,7 @@
 import six
 import numpy as np
 import struct
-from nd2reader.common import check_or_make_dir
+from zolfa.nd2reader.common import check_or_make_dir
 from os import path
 
 global_labels = ['image_attributes', 'image_text_info', 'image_metadata',
diff --git a/nd2reader/common.py b/src/zolfa/nd2reader/common.py
similarity index 99%
rename from nd2reader/common.py
rename to src/zolfa/nd2reader/common.py
index df5ddcf..c326bd8 100644
--- a/nd2reader/common.py
+++ b/src/zolfa/nd2reader/common.py
@@ -4,7 +4,7 @@ import array
 from datetime import datetime
 import six
 import re
-from nd2reader.exceptions import InvalidVersionError
+from zolfa.nd2reader.exceptions import InvalidVersionError
 
 
 def get_version(fh):
diff --git a/nd2reader/common_raw_metadata.py b/src/zolfa/nd2reader/common_raw_metadata.py
similarity index 98%
rename from nd2reader/common_raw_metadata.py
rename to src/zolfa/nd2reader/common_raw_metadata.py
index 422f521..408339f 100644
--- a/nd2reader/common_raw_metadata.py
+++ b/src/zolfa/nd2reader/common_raw_metadata.py
@@ -1,7 +1,7 @@
 import six
 import warnings
 
-from nd2reader.common import get_from_dict_if_exists
+from zolfa.nd2reader.common import get_from_dict_if_exists
 
 
 def parse_if_not_none(to_check, callback):
diff --git a/nd2reader/exceptions.py b/src/zolfa/nd2reader/exceptions.py
similarity index 100%
rename from nd2reader/exceptions.py
rename to src/zolfa/nd2reader/exceptions.py
diff --git a/nd2reader/label_map.py b/src/zolfa/nd2reader/label_map.py
similarity index 100%
rename from nd2reader/label_map.py
rename to src/zolfa/nd2reader/label_map.py
diff --git a/nd2reader/legacy.py b/src/zolfa/nd2reader/legacy.py
similarity index 99%
rename from nd2reader/legacy.py
rename to src/zolfa/nd2reader/legacy.py
index 9b010b8..e3b3f76 100644
--- a/nd2reader/legacy.py
+++ b/src/zolfa/nd2reader/legacy.py
@@ -4,7 +4,7 @@ Legacy class for backwards compatibility
 
 import warnings
 
-from nd2reader import ND2Reader
+from zolfa.nd2reader import ND2Reader
 
 
 class Nd2(object):
diff --git a/nd2reader/parser.py b/src/zolfa/nd2reader/parser.py
similarity index 98%
rename from nd2reader/parser.py
rename to src/zolfa/nd2reader/parser.py
index bebbcaa..e3ceea3 100644
--- a/nd2reader/parser.py
+++ b/src/zolfa/nd2reader/parser.py
@@ -7,10 +7,10 @@ import warnings
 from pims.base_frames import Frame
 import numpy as np
 
-from nd2reader.common import get_version, read_chunk
-from nd2reader.label_map import LabelMap
-from nd2reader.raw_metadata import RawMetadata
-from nd2reader import stitched
+from zolfa.nd2reader.common import get_version, read_chunk
+from zolfa.nd2reader.label_map import LabelMap
+from zolfa.nd2reader.raw_metadata import RawMetadata
+from zolfa.nd2reader import stitched
 
 
 class Parser(object):
diff --git a/nd2reader/raw_metadata.py b/src/zolfa/nd2reader/raw_metadata.py
similarity index 98%
rename from nd2reader/raw_metadata.py
rename to src/zolfa/nd2reader/raw_metadata.py
index 3c25d57..9b2e8e3 100644
--- a/nd2reader/raw_metadata.py
+++ b/src/zolfa/nd2reader/raw_metadata.py
@@ -4,8 +4,8 @@ import six
 import numpy as np
 import warnings
 
-from nd2reader.common import read_chunk, read_array, read_metadata, parse_date, get_from_dict_if_exists
-from nd2reader.common_raw_metadata import parse_dimension_text_line, parse_if_not_none, parse_roi_shape, parse_roi_type, get_loops_from_data, determine_sampling_interval
+from zolfa.nd2reader.common import read_chunk, read_array, read_metadata, parse_date, get_from_dict_if_exists
+from zolfa.nd2reader.common_raw_metadata import parse_dimension_text_line, parse_if_not_none, parse_roi_shape, parse_roi_type, get_loops_from_data, determine_sampling_interval
 
 
 class RawMetadata(object):
diff --git a/nd2reader/reader.py b/src/zolfa/nd2reader/reader.py
similarity index 98%
rename from nd2reader/reader.py
rename to src/zolfa/nd2reader/reader.py
index 295bded..b9ae8fe 100644
--- a/nd2reader/reader.py
+++ b/src/zolfa/nd2reader/reader.py
@@ -1,8 +1,8 @@
 from pims import Frame
 from pims.base_frames import FramesSequenceND
 
-from nd2reader.exceptions import EmptyFileError, InvalidFileType
-from nd2reader.parser import Parser
+from zolfa.nd2reader.exceptions import EmptyFileError, InvalidFileType
+from zolfa.nd2reader.parser import Parser
 import numpy as np
 
 
diff --git a/nd2reader/stitched.py b/src/zolfa/nd2reader/stitched.py
similarity index 100%
rename from nd2reader/stitched.py
rename to src/zolfa/nd2reader/stitched.py
diff --git a/src/zolfa/nd2reader/version.py b/src/zolfa/nd2reader/version.py
new file mode 100644
index 0000000..1a0e1e5
--- /dev/null
+++ b/src/zolfa/nd2reader/version.py
@@ -0,0 +1,4 @@
+# file generated by setuptools_scm
+# don't change, don't track in version control
+__version__ = version = '2.0.2.dev268+g026928a.d20230117'
+__version_tuple__ = version_tuple = (2, 0, 2, 'dev268', 'g026928a.d20230117')
diff --git a/test.py b/test.py
index e5a6d6c..b05602c 100644
--- a/test.py
+++ b/test.py
@@ -3,4 +3,4 @@ from os import path
 
 file_path = path.abspath(__file__)
 tests_path = path.join(path.abspath(path.dirname(file_path)), "tests")
-nose.main(argv=[path.abspath(__file__), "--with-coverage", "--cover-erase", "--cover-package=nd2reader", tests_path])
+nose.main(argv=[path.abspath(__file__), "--with-coverage", "--cover-erase", "--cover-package=zolfa.nd2reader", tests_path])
diff --git a/tests/test_artificial.py b/tests/test_artificial.py
index e9d2b29..8595d3d 100644
--- a/tests/test_artificial.py
+++ b/tests/test_artificial.py
@@ -3,10 +3,10 @@ from os import path
 import six
 import struct
 
-from nd2reader.artificial import ArtificialND2
-from nd2reader.common import get_version, parse_version, parse_date, _add_to_metadata, _parse_unsigned_char, \
+from zolfa.nd2reader.artificial import ArtificialND2
+from zolfa.nd2reader.common import get_version, parse_version, parse_date, _add_to_metadata, _parse_unsigned_char, \
     _parse_unsigned_int, _parse_unsigned_long, _parse_double, check_or_make_dir
-from nd2reader.exceptions import InvalidVersionError
+from zolfa.nd2reader.exceptions import InvalidVersionError
 
 
 class TestArtificial(unittest.TestCase):
diff --git a/tests/test_common.py b/tests/test_common.py
index 8e13aaa..27c548b 100644
--- a/tests/test_common.py
+++ b/tests/test_common.py
@@ -5,11 +5,11 @@ import array
 import six
 import struct
 
-from nd2reader.artificial import ArtificialND2
-from nd2reader.common import get_version, parse_version, parse_date, _add_to_metadata, _parse_unsigned_char, \
+from zolfa.nd2reader.artificial import ArtificialND2
+from zolfa.nd2reader.common import get_version, parse_version, parse_date, _add_to_metadata, _parse_unsigned_char, \
     _parse_unsigned_int, _parse_unsigned_long, _parse_double, check_or_make_dir, _parse_string, _parse_char_array, \
     get_from_dict_if_exists, read_chunk
-from nd2reader.exceptions import InvalidVersionError
+from zolfa.nd2reader.exceptions import InvalidVersionError
 
 
 class TestCommon(unittest.TestCase):
diff --git a/tests/test_label_map.py b/tests/test_label_map.py
index 1f58fd6..612c853 100644
--- a/tests/test_label_map.py
+++ b/tests/test_label_map.py
@@ -1,6 +1,6 @@
 import unittest
-from nd2reader.label_map import LabelMap
-from nd2reader.artificial import ArtificialND2
+from zolfa.nd2reader.label_map import LabelMap
+from zolfa.nd2reader.artificial import ArtificialND2
 
 
 class TestLabelMap(unittest.TestCase):
diff --git a/tests/test_legacy.py b/tests/test_legacy.py
index 4c938cd..6d16e26 100644
--- a/tests/test_legacy.py
+++ b/tests/test_legacy.py
@@ -1,9 +1,9 @@
 import unittest
 import warnings
 
-from nd2reader.legacy import Nd2
-from nd2reader.reader import ND2Reader
-from nd2reader.artificial import ArtificialND2
+from zolfa.nd2reader.legacy import Nd2
+from zolfa.nd2reader.reader import ND2Reader
+from zolfa.nd2reader.artificial import ArtificialND2
 
 
 class TestLegacy(unittest.TestCase):
diff --git a/tests/test_parser.py b/tests/test_parser.py
index c0b4ddf..90af415 100644
--- a/tests/test_parser.py
+++ b/tests/test_parser.py
@@ -1,8 +1,8 @@
 import unittest
 from os import path
-from nd2reader.artificial import ArtificialND2
-from nd2reader.common import check_or_make_dir
-from nd2reader.parser import Parser
+from zolfa.nd2reader.artificial import ArtificialND2
+from zolfa.nd2reader.common import check_or_make_dir
+from zolfa.nd2reader.parser import Parser
 import urllib.request
 
 
diff --git a/tests/test_raw_metadata.py b/tests/test_raw_metadata.py
index c21e0fe..8f56092 100644
--- a/tests/test_raw_metadata.py
+++ b/tests/test_raw_metadata.py
@@ -1,10 +1,10 @@
 import unittest
 import six
 
-from nd2reader.artificial import ArtificialND2
-from nd2reader.label_map import LabelMap
-from nd2reader.raw_metadata import RawMetadata
-from nd2reader.common_raw_metadata import parse_roi_shape, parse_roi_type, parse_dimension_text_line
+from zolfa.nd2reader.artificial import ArtificialND2
+from zolfa.nd2reader.label_map import LabelMap
+from zolfa.nd2reader.raw_metadata import RawMetadata
+from zolfa.nd2reader.common_raw_metadata import parse_roi_shape, parse_roi_type, parse_dimension_text_line
 
 
 class TestRawMetadata(unittest.TestCase):
diff --git a/tests/test_reader.py b/tests/test_reader.py
index c28399d..d01032d 100644
--- a/tests/test_reader.py
+++ b/tests/test_reader.py
@@ -3,10 +3,10 @@ import numpy as np
 import struct
 
 from pims import Frame
-from nd2reader.artificial import ArtificialND2
-from nd2reader.exceptions import EmptyFileError, InvalidFileType
-from nd2reader.reader import ND2Reader
-from nd2reader.parser import Parser
+from zolfa.nd2reader.artificial import ArtificialND2
+from zolfa.nd2reader.exceptions import EmptyFileError, InvalidFileType
+from zolfa.nd2reader.reader import ND2Reader
+from zolfa.nd2reader.parser import Parser
 
 
 class TestReader(unittest.TestCase):
diff --git a/tests/test_version.py b/tests/test_version.py
index fedfeeb..6222442 100644
--- a/tests/test_version.py
+++ b/tests/test_version.py
@@ -1,5 +1,5 @@
 import unittest
-from nd2reader import __version__ as VERSION
+from zolfa.nd2reader import __version__ as VERSION
 
 
 class TestVersion(unittest.TestCase):
-- 
GitLab