jupyter-analysis-tools 1.2.0__tar.gz → 1.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/.cookiecutterrc +1 -1
  2. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/CHANGELOG.md +22 -0
  3. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/PKG-INFO +27 -5
  4. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/README.rst +4 -4
  5. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/conf.py +1 -1
  6. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/__init__.py +3 -2
  7. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/readdata.py +34 -23
  8. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/utils.py +2 -1
  9. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools.egg-info/PKG-INFO +27 -5
  10. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/tests/utils.py +3 -2
  11. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/.editorconfig +0 -0
  12. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/.pre-commit-config.yaml +0 -0
  13. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/AUTHORS.rst +0 -0
  14. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/CONTRIBUTING.rst +0 -0
  15. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/LICENSE +0 -0
  16. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/MANIFEST.in +0 -0
  17. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/ci/requirements.txt +0 -0
  18. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/ci/templates/.github/workflows/build.yml +0 -0
  19. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/ci/templates/.github/workflows/ci-cd.yml +0 -0
  20. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/ci/templates/.github/workflows/coverage.yml +0 -0
  21. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/ci/templates/.github/workflows/docs.yml +0 -0
  22. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/ci/templates/.github/workflows/release.yml +0 -0
  23. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/ci/templates/.github/workflows/tests.yml +0 -0
  24. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/ci/update.py +0 -0
  25. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/_templates/class.rst +0 -0
  26. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/_templates/module.rst +0 -0
  27. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/authors.rst +0 -0
  28. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/changelog.rst +0 -0
  29. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/contributing.rst +0 -0
  30. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/index.rst +0 -0
  31. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/installation.rst +0 -0
  32. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/readme.rst +0 -0
  33. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/reference/index.rst +0 -0
  34. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/requirements.txt +0 -0
  35. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/spelling_wordlist.txt +0 -0
  36. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/docs/usage.rst +0 -0
  37. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/pyproject.toml +0 -0
  38. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/setup.cfg +0 -0
  39. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/analysis.py +0 -0
  40. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/binning.py +0 -0
  41. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/datalocations.py +0 -0
  42. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/distrib.py +0 -0
  43. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/git.py +0 -0
  44. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/plotting.py +0 -0
  45. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools/widgets.py +0 -0
  46. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools.egg-info/SOURCES.txt +0 -0
  47. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools.egg-info/dependency_links.txt +0 -0
  48. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools.egg-info/requires.txt +0 -0
  49. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/src/jupyter_analysis_tools.egg-info/top_level.txt +0 -0
  50. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/templates/CHANGELOG.md.j2 +0 -0
  51. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/testdata/2015-03-20-Silica.ssf.json +0 -0
  52. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/testdata/2015-03-20-Silica.ssfz +0 -0
  53. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/testdata/S2842 water.json +0 -0
  54. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/testdata/S2842 water.pdh +0 -0
  55. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/testdata/S2843[9].pdh +0 -0
  56. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/tests/readdata.py +0 -0
  57. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/tests/requirements.txt +0 -0
  58. {jupyter_analysis_tools-1.2.0 → jupyter_analysis_tools-1.2.1}/tox.ini +0 -0
@@ -20,7 +20,7 @@ default_context:
20
20
  release_date: 'today'
21
21
  year_from: '2018'
22
22
  year_to: '2023'
23
- version: '1.2.0'
23
+ version: '1.2.1'
24
24
  pypi_host: 'pypi.org'
25
25
  license: 'MIT license'
26
26
  sphinx_theme: 'furo'
@@ -1,5 +1,27 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.2.1 (2025-07-11)
4
+
5
+ ### Bug fixes
6
+
7
+ * readme: trigger new version after style changes ([`8b2b5e9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/8b2b5e93c0f24ae59afaa764abdc508e994946b4))
8
+
9
+ ### Code style
10
+
11
+ * __init__: imports format ([`6f07790`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/6f07790a04e43736b1c0fbce0eac54d0b661a7cf))
12
+
13
+ * utils: satisfy flake8 ([`9657474`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/9657474e94a4d9887c4a6b653e0ffa403e666d02))
14
+
15
+ * readdata: satisfy flake8 ([`36bf6e8`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/36bf6e8be67a2ebd345c5557c2352710bcebed82))
16
+
17
+ ### Continuous integration
18
+
19
+ * workflow: publish only if the docs are good ([`a663ed3`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/a663ed3d1fd87079a4fd7cf419132a129280a562))
20
+
21
+ ### Testing
22
+
23
+ * utils: fix imports ([`ddd5369`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/ddd5369b8037f583c6900aea25522a56126c9d32))
24
+
3
25
  ## v1.2.0 (2025-07-11)
4
26
 
5
27
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyter-analysis-tools
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: Yet another Python library with helpers and utilities for data analysis and processing.
5
5
  Author-email: Ingo Breßler <dev@ingobressler.net>
6
6
  License: MIT license
@@ -53,8 +53,8 @@ Yet another Python library with helpers and utilities for data analysis and proc
53
53
  :target: https://pypi.org/project/jupyter-analysis-tools
54
54
  :alt: PyPI Package latest release
55
55
 
56
- .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.2.0.svg
57
- :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.0...main
56
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.2.1.svg
57
+ :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.1...main
58
58
  :alt: Commits since latest release
59
59
 
60
60
  .. |license| image:: https://img.shields.io/pypi/l/jupyter-analysis-tools.svg
@@ -104,9 +104,9 @@ https://BAMresearch.github.io/jupyter-analysis-tools
104
104
  Development
105
105
  ===========
106
106
 
107
- To run all the tests run::
107
+ Run all tests with::
108
108
 
109
- tox
109
+ tox -e py
110
110
 
111
111
  Note, to combine the coverage data from all the tox environments run:
112
112
 
@@ -127,6 +127,28 @@ Note, to combine the coverage data from all the tox environments run:
127
127
 
128
128
  # CHANGELOG
129
129
 
130
+ ## v1.2.1 (2025-07-11)
131
+
132
+ ### Bug fixes
133
+
134
+ * readme: trigger new version after style changes ([`8b2b5e9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/8b2b5e93c0f24ae59afaa764abdc508e994946b4))
135
+
136
+ ### Code style
137
+
138
+ * __init__: imports format ([`6f07790`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/6f07790a04e43736b1c0fbce0eac54d0b661a7cf))
139
+
140
+ * utils: satisfy flake8 ([`9657474`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/9657474e94a4d9887c4a6b653e0ffa403e666d02))
141
+
142
+ * readdata: satisfy flake8 ([`36bf6e8`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/36bf6e8be67a2ebd345c5557c2352710bcebed82))
143
+
144
+ ### Continuous integration
145
+
146
+ * workflow: publish only if the docs are good ([`a663ed3`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/a663ed3d1fd87079a4fd7cf419132a129280a562))
147
+
148
+ ### Testing
149
+
150
+ * utils: fix imports ([`ddd5369`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/ddd5369b8037f583c6900aea25522a56126c9d32))
151
+
130
152
  ## v1.2.0 (2025-07-11)
131
153
 
132
154
  ### Features
@@ -14,8 +14,8 @@ Yet another Python library with helpers and utilities for data analysis and proc
14
14
  :target: https://pypi.org/project/jupyter-analysis-tools
15
15
  :alt: PyPI Package latest release
16
16
 
17
- .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.2.0.svg
18
- :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.0...main
17
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.2.1.svg
18
+ :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.1...main
19
19
  :alt: Commits since latest release
20
20
 
21
21
  .. |license| image:: https://img.shields.io/pypi/l/jupyter-analysis-tools.svg
@@ -65,9 +65,9 @@ https://BAMresearch.github.io/jupyter-analysis-tools
65
65
  Development
66
66
  ===========
67
67
 
68
- To run all the tests run::
68
+ Run all tests with::
69
69
 
70
- tox
70
+ tox -e py
71
71
 
72
72
  Note, to combine the coverage data from all the tox environments run:
73
73
 
@@ -29,7 +29,7 @@ project = "Jupyter Analysis Tools"
29
29
  year = "2018-2023"
30
30
  author = "Ingo Breßler"
31
31
  copyright = "{0}, {1}".format(year, author)
32
- version = "1.2.0"
32
+ version = "1.2.1"
33
33
  release = version
34
34
  commit_id = None
35
35
  try:
@@ -1,12 +1,13 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # __init__.py
3
3
 
4
- __version__ = "1.2.0"
4
+ __version__ = "1.2.1"
5
5
 
6
6
  from .binning import reBin
7
7
  from .git import checkRepo, isNBstripoutActivated, isNBstripoutInstalled, isRepo
8
- from .readdata import readdata, readPDHmeta, readSSF
8
+ from .readdata import readdata
9
9
  from .readdata import readdata as readPDH
10
+ from .readdata import readPDHmeta, readSSF
10
11
  from .utils import setLocaleUTF8
11
12
  from .widgets import PathSelector, showBoolStatus
12
13
 
@@ -1,7 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # readdata.py
3
3
 
4
- import json
5
4
  import warnings
6
5
  import xml.etree.ElementTree as et
7
6
  from pathlib import Path
@@ -62,6 +61,7 @@ def convertValue(val):
62
61
  pass
63
62
  return val
64
63
 
64
+
65
65
  def xmlPDHToDict(root):
66
66
  result = {}
67
67
  stack = [(root, result)]
@@ -70,12 +70,15 @@ def xmlPDHToDict(root):
70
70
  elemCont = {}
71
71
  key = elem.attrib.pop("key", None)
72
72
  idx = -1
73
- if (not len(list(elem)) and not len(elem.attrib)
74
- and not (elem.text and len(elem.text.strip()))):
75
- continue # skip empty elements with a key only early
73
+ if (
74
+ not len(list(elem)) and
75
+ not len(elem.attrib) and
76
+ not (elem.text and len(elem.text.strip()))
77
+ ):
78
+ continue # skip empty elements with a key only early
76
79
  if elem.tag == "list":
77
80
  elemCont = []
78
- else: # add attributes & values to dict
81
+ else: # add attributes & values to dict
79
82
  # Attach text, if any
80
83
  if elem.text and len(elem.text.strip()):
81
84
  if elem.tag in ("value", "reference"):
@@ -84,17 +87,20 @@ def xmlPDHToDict(root):
84
87
  elemCont["#text"] = convertValue(elem.text)
85
88
  # Attach attributes, if any
86
89
  if elem.attrib:
87
- elemCont.update({k: convertValue(v) for k, v in elem.attrib.items() if len(v.strip())})
88
- if key == "unit" and "value" in elemCont: # fix some units
90
+ elemCont.update(
91
+ {k: convertValue(v) for k, v in elem.attrib.items() if len(v.strip())}
92
+ )
93
+ if key == "unit" and "value" in elemCont: # fix some units
89
94
  elemCont["value"] = elemCont["value"].replace("_", "")
90
95
  if "unit" in elemCont:
91
96
  elemCont["unit"] = elemCont["unit"].replace("_", "")
92
97
  # reduce the extracted dict&attributes
93
- idx = elemCont.get("index", -1) # insert last/append if no index given
98
+ idx = elemCont.get("index", -1) # insert last/append if no index given
94
99
  value = elemCont.get("value", None)
95
- if value is not None and (len(elemCont) == 1
96
- or (len(elemCont) == 2 and "index" in elemCont)):
97
- elemCont = value # contains value only
100
+ if value is not None and (
101
+ len(elemCont) == 1 or (len(elemCont) == 2 and "index" in elemCont)
102
+ ):
103
+ elemCont = value # contains value only
98
104
  parentKey = elem.tag
99
105
  if key is not None and parentKey in ("list", "value", "group"):
100
106
  # skip one level in hierarchy for these generic containers
@@ -103,21 +109,23 @@ def xmlPDHToDict(root):
103
109
  try:
104
110
  if isinstance(parentCont, list):
105
111
  parentCont.insert(idx, elemCont)
106
- elif parentKey not in parentCont: # add as new list
107
- if key is None: # make a list
112
+ elif parentKey not in parentCont: # add as new list
113
+ if key is None: # make a list
108
114
  parentCont[parentKey] = elemCont
109
- else: # have a key
115
+ else: # have a key
110
116
  parentCont[parentKey] = {key: elemCont}
111
- else: # parentKey exists already
112
- if (not isinstance(parentCont[parentKey], list) and
113
- not isinstance(parentCont[parentKey], dict)):
117
+ else: # parentKey exists already
118
+ if (
119
+ not isinstance(parentCont[parentKey], list) and
120
+ not isinstance(parentCont[parentKey], dict)
121
+ ):
114
122
  # if its a plain value before, make a list out of it and append in next step
115
123
  parentCont[parentKey] = [parentCont[parentKey]]
116
124
  if isinstance(parentCont[parentKey], list):
117
125
  parentCont[parentKey].append(elemCont)
118
126
  elif key is not None:
119
127
  parentCont[parentKey].update({key: elemCont})
120
- else: # key is None
128
+ else: # key is None
121
129
  parentCont[parentKey].update(elemCont)
122
130
  except AttributeError:
123
131
  raise
@@ -126,31 +134,34 @@ def xmlPDHToDict(root):
126
134
  # fix some entry values, weird Anton Paar PDH format
127
135
  try:
128
136
  oldts = result["fileinfo"]["parameter"]["DateTime"]["value"]
129
- delta = (39*365+10)*24*3600 # timestamp seems to be based on around 2009-01-01 (a day give or take)
137
+ # timestamp seems to be based on around 2009-01-01 (a day give or take)
138
+ delta = ((39 * 365 + 10) * 24 * 3600)
130
139
  # make it compatible to datetime.datetime routines
131
- result["fileinfo"]["parameter"]["DateTime"]["value"] = oldts+delta
140
+ result["fileinfo"]["parameter"]["DateTime"]["value"] = oldts + delta
132
141
  except KeyError:
133
142
  pass
134
143
  return result
135
144
 
145
+
136
146
  def readPDHmeta(fp):
137
147
  fp = Path(fp)
138
148
  if fp.suffix.lower() != ".pdh":
139
149
  warnings.warn("readPDHmeta() supports .pdh files only!")
140
- return # for PDH files
150
+ return # for PDH files
141
151
  lines = ""
142
152
  with open(fp) as fd:
143
153
  lines = fd.readlines()
144
154
  nrows = int(lines[2].split()[0])
145
- xml = "".join(lines[nrows+5:])
155
+ xml = "".join(lines[nrows + 5 :])
146
156
  return xmlPDHToDict(et.fromstring(xml))
147
157
 
158
+
148
159
  def readSSF(fp):
149
160
  fp = Path(fp)
150
161
  if fp.suffix.lower() != ".ssf":
151
162
  warnings.warn("readSession() supports .ssf files only!")
152
163
  return # for PDH files
153
164
  data = ""
154
- with open(fp, encoding='utf-8-sig') as fd:
165
+ with open(fp, encoding="utf-8-sig") as fd:
155
166
  data = fd.read()
156
167
  return xmlPDHToDict(et.fromstring(data))
@@ -89,7 +89,8 @@ def addEnvScriptsToPATH():
89
89
  """Prepends the *Scripts* directory of the current Python environment base directory to systems
90
90
  PATH variable.
91
91
 
92
- It is intended for Conda (Miniforge) environments on Windows that do not have this in their PATH environment variable, causing them to miss many commands provided from this location.
92
+ It is intended for Conda (Miniforge) environments on Windows that do not have this in their PATH
93
+ environment variable, causing them to miss many commands provided from this location.
93
94
  """
94
95
  envPath = [p for p in sys.path if p.endswith("Lib")]
95
96
  if not envPath:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyter-analysis-tools
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: Yet another Python library with helpers and utilities for data analysis and processing.
5
5
  Author-email: Ingo Breßler <dev@ingobressler.net>
6
6
  License: MIT license
@@ -53,8 +53,8 @@ Yet another Python library with helpers and utilities for data analysis and proc
53
53
  :target: https://pypi.org/project/jupyter-analysis-tools
54
54
  :alt: PyPI Package latest release
55
55
 
56
- .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.2.0.svg
57
- :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.0...main
56
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.2.1.svg
57
+ :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.1...main
58
58
  :alt: Commits since latest release
59
59
 
60
60
  .. |license| image:: https://img.shields.io/pypi/l/jupyter-analysis-tools.svg
@@ -104,9 +104,9 @@ https://BAMresearch.github.io/jupyter-analysis-tools
104
104
  Development
105
105
  ===========
106
106
 
107
- To run all the tests run::
107
+ Run all tests with::
108
108
 
109
- tox
109
+ tox -e py
110
110
 
111
111
  Note, to combine the coverage data from all the tox environments run:
112
112
 
@@ -127,6 +127,28 @@ Note, to combine the coverage data from all the tox environments run:
127
127
 
128
128
  # CHANGELOG
129
129
 
130
+ ## v1.2.1 (2025-07-11)
131
+
132
+ ### Bug fixes
133
+
134
+ * readme: trigger new version after style changes ([`8b2b5e9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/8b2b5e93c0f24ae59afaa764abdc508e994946b4))
135
+
136
+ ### Code style
137
+
138
+ * __init__: imports format ([`6f07790`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/6f07790a04e43736b1c0fbce0eac54d0b661a7cf))
139
+
140
+ * utils: satisfy flake8 ([`9657474`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/9657474e94a4d9887c4a6b653e0ffa403e666d02))
141
+
142
+ * readdata: satisfy flake8 ([`36bf6e8`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/36bf6e8be67a2ebd345c5557c2352710bcebed82))
143
+
144
+ ### Continuous integration
145
+
146
+ * workflow: publish only if the docs are good ([`a663ed3`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/a663ed3d1fd87079a4fd7cf419132a129280a562))
147
+
148
+ ### Testing
149
+
150
+ * utils: fix imports ([`ddd5369`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/ddd5369b8037f583c6900aea25522a56126c9d32))
151
+
130
152
  ## v1.2.0 (2025-07-11)
131
153
 
132
154
  ### Features
@@ -1,13 +1,14 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # tests/utils.py
3
3
 
4
+
5
+ import os
6
+
4
7
  from jupyter_analysis_tools.utils import appendToPATH, isWindows
5
8
 
6
9
 
7
10
  def test_appendToPATH(capsys):
8
11
  # Setting up a PATH for testing first (platform dependent).
9
- import os
10
- import unittest
11
12
  testpath = "/usr/local/sbin:/usr/local/bin:/sbin:/usr/games:/usr/local/games:/snap/bin"
12
13
  if isWindows():
13
14
  testpath = "something else"