jupyter-analysis-tools 1.5.0__tar.gz → 1.5.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 (55) hide show
  1. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/.copier-answers.yml +1 -1
  2. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/CHANGELOG.md +6 -0
  3. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/PKG-INFO +9 -3
  4. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/README.md +2 -2
  5. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/conf.py +1 -1
  6. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/pyproject.toml +1 -0
  7. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/__init__.py +1 -1
  8. jupyter_analysis_tools-1.5.1/src/jupyter_analysis_tools/ssfz2json.py +57 -0
  9. jupyter_analysis_tools-1.5.1/src/jupyter_analysis_tools/ssfz_compare.py +54 -0
  10. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools.egg-info/PKG-INFO +9 -3
  11. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools.egg-info/SOURCES.txt +1 -0
  12. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools.egg-info/entry_points.txt +1 -0
  13. jupyter_analysis_tools-1.5.0/src/jupyter_analysis_tools/ssfz2json.py +0 -69
  14. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/.editorconfig +0 -0
  15. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/.pre-commit-config.yaml +0 -0
  16. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/AUTHORS.rst +0 -0
  17. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/CONTRIBUTING.rst +0 -0
  18. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/LICENSE +0 -0
  19. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/MANIFEST.in +0 -0
  20. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/ci/requirements.txt +0 -0
  21. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/_templates/class.rst +0 -0
  22. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/_templates/module.rst +0 -0
  23. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/authors.rst +0 -0
  24. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/changelog.rst +0 -0
  25. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/contributing.rst +0 -0
  26. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/index.rst +0 -0
  27. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/installation.rst +0 -0
  28. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/readme.rst +0 -0
  29. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/reference/index.rst +0 -0
  30. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/requirements.txt +0 -0
  31. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/spelling_wordlist.txt +0 -0
  32. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/docs/usage.rst +0 -0
  33. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/setup.cfg +0 -0
  34. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/analysis.py +0 -0
  35. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/binning.py +0 -0
  36. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/datalocations.py +0 -0
  37. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/distrib.py +0 -0
  38. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/git.py +0 -0
  39. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/plotting.py +0 -0
  40. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/readdata.py +0 -0
  41. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/utils.py +0 -0
  42. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools/widgets.py +0 -0
  43. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools.egg-info/dependency_links.txt +0 -0
  44. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools.egg-info/requires.txt +0 -0
  45. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/src/jupyter_analysis_tools.egg-info/top_level.txt +0 -0
  46. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/templates/CHANGELOG.md.j2 +0 -0
  47. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/testdata/2015-03-20-Silica.ssf.json +0 -0
  48. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/testdata/2015-03-20-Silica.ssfz +0 -0
  49. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/testdata/S2842 water.json +0 -0
  50. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/testdata/S2842 water.pdh +0 -0
  51. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/testdata/S2843[9].pdh +0 -0
  52. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/tests/readdata.py +0 -0
  53. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/tests/requirements.txt +0 -0
  54. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/tests/utils.py +0 -0
  55. {jupyter_analysis_tools-1.5.0 → jupyter_analysis_tools-1.5.1}/tox.ini +0 -0
@@ -22,4 +22,4 @@ repo_main_branch: main
22
22
  repo_name: jupyter-analysis-tools
23
23
  repo_userorg: BAMresearch
24
24
  sphinx_theme: furo
25
- version: 1.5.0
25
+ version: 1.5.1
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.5.1 (2025-08-04)
4
+
5
+ ### Bug fixes
6
+
7
+ * **readSSFZ**: split in two: ssfz2json for converting, ssfz_compare for diff-like compare ([`e8b24fe`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/e8b24fe796430bb4b09fa23dcd204e6162051f79))
8
+
3
9
  ## v1.5.0 (2025-08-04)
4
10
 
5
11
  ### Bug fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyter-analysis-tools
3
- Version: 1.5.0
3
+ Version: 1.5.1
4
4
  Summary: Yet another Python library with helpers and utilities for data analysis and processing.
5
5
  Author-email: Ingo Breßler <ingo.bressler@bam.de>, "Brian R. Pauw" <brian.pauw@bam.de>
6
6
  License-Expression: MIT
@@ -35,10 +35,10 @@ Requires-Dist: matplotlib
35
35
  Requires-Dist: ipywidgets
36
36
  Dynamic: license-file
37
37
 
38
- # Jupyter Analysis Tools (v1.5.0)
38
+ # Jupyter Analysis Tools (v1.5.1)
39
39
 
40
40
  [![PyPI Package latest release](https://img.shields.io/pypi/v/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools)
41
- [![Commits since latest release](https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.5.0.svg)](https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.5.0...main)
41
+ [![Commits since latest release](https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.5.1.svg)](https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.5.1...main)
42
42
  [![License](https://img.shields.io/pypi/l/jupyter-analysis-tools.svg)](https://en.wikipedia.org/wiki/MIT_license)
43
43
  [![Supported versions](https://img.shields.io/pypi/pyversions/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools)
44
44
  [![PyPI Wheel](https://img.shields.io/pypi/wheel/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools#files)
@@ -97,6 +97,12 @@ are installed:
97
97
 
98
98
  # CHANGELOG
99
99
 
100
+ ## v1.5.1 (2025-08-04)
101
+
102
+ ### Bug fixes
103
+
104
+ * **readSSFZ**: split in two: ssfz2json for converting, ssfz_compare for diff-like compare ([`e8b24fe`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/e8b24fe796430bb4b09fa23dcd204e6162051f79))
105
+
100
106
  ## v1.5.0 (2025-08-04)
101
107
 
102
108
  ### Bug fixes
@@ -1,7 +1,7 @@
1
- # Jupyter Analysis Tools (v1.5.0)
1
+ # Jupyter Analysis Tools (v1.5.1)
2
2
 
3
3
  [![PyPI Package latest release](https://img.shields.io/pypi/v/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools)
4
- [![Commits since latest release](https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.5.0.svg)](https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.5.0...main)
4
+ [![Commits since latest release](https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.5.1.svg)](https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.5.1...main)
5
5
  [![License](https://img.shields.io/pypi/l/jupyter-analysis-tools.svg)](https://en.wikipedia.org/wiki/MIT_license)
6
6
  [![Supported versions](https://img.shields.io/pypi/pyversions/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools)
7
7
  [![PyPI Wheel](https://img.shields.io/pypi/wheel/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools#files)
@@ -32,7 +32,7 @@ project = "Jupyter Analysis Tools"
32
32
  year = "2018-2025"
33
33
  author = "Ingo Breßler and Brian R. Pauw"
34
34
  copyright = "{0}, {1}".format(year, author)
35
- version = "1.5.0"
35
+ version = "1.5.1"
36
36
  release = version
37
37
  commit_id = None
38
38
  try:
@@ -43,6 +43,7 @@ changelog = "https://BAMresearch.github.io/jupyter-analysis-tools/changelog.html
43
43
 
44
44
  [project.scripts]
45
45
  ssfz2json = "jupyter_analysis_tools.ssfz2json:main"
46
+ ssfz-compare = "jupyter_analysis_tools.ssfz_compare:main"
46
47
 
47
48
  [build-system]
48
49
  requires = [
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # __init__.py
3
3
 
4
- __version__ = "1.5.0"
4
+ __version__ = "1.5.1"
5
5
 
6
6
  from .binning import reBin
7
7
  from .git import checkRepo, isNBstripoutActivated, isNBstripoutInstalled, isRepo
@@ -0,0 +1,57 @@
1
+ # -*- coding: utf-8 -*-
2
+ # ssfz2json.py
3
+
4
+ import argparse
5
+ import json
6
+ import sys
7
+ from pathlib import Path
8
+
9
+ from jupyter_analysis_tools.readdata import readSSFZ
10
+
11
+
12
+ def main():
13
+ parser = argparse.ArgumentParser(
14
+ description="""
15
+ Reads and parses the embedded metadata of a .SSFZ file created by Anton Paar SAXSquant
16
+ software, converts it to JSON format and outputs it to <stdout>.
17
+ An output file path for the JSON data can be provided by optional argument.
18
+ """
19
+ )
20
+ parser.add_argument(
21
+ "ssfzPath",
22
+ type=lambda p: Path(p).absolute(),
23
+ help="Path of the input .SSFZ file to read.",
24
+ )
25
+ parser.add_argument(
26
+ "-o",
27
+ "--out",
28
+ nargs="?",
29
+ default="stdout",
30
+ help=(
31
+ "Output file path to write the JSON data to. If the filename is omitted, "
32
+ "it is derived from the input file name by adding the .json suffix."
33
+ ),
34
+ )
35
+ args = parser.parse_args()
36
+ # print(args)
37
+ if not args.ssfzPath.is_file():
38
+ print(f"Provided file '{args.ssfzPath}' not found!")
39
+ return 1
40
+ data = readSSFZ(args.ssfzPath)
41
+ json_args = dict(sort_keys=True, indent=2)
42
+ if args.out == "stdout":
43
+ print(json.dumps(data, **json_args))
44
+ else:
45
+ if args.out is None:
46
+ args.out = args.ssfzPath.with_suffix(args.ssfzPath.suffix + ".json")
47
+ if not Path(args.out).parent.is_dir():
48
+ print(f"Directory of provided output file '{args.out}' does not exist!")
49
+ return 1
50
+ with open(args.out, "w") as fd:
51
+ json.dump(data, fd, **json_args)
52
+ print(f"Wrote '{args.out}'.")
53
+ return 0
54
+
55
+
56
+ if __name__ == "__main__":
57
+ sys.exit(main())
@@ -0,0 +1,54 @@
1
+ # -*- coding: utf-8 -*-
2
+ # ssfz2json.py
3
+
4
+ import argparse
5
+ import difflib
6
+ import json
7
+ import sys
8
+ from pathlib import Path
9
+
10
+ from jupyter_analysis_tools.readdata import readSSFZ
11
+
12
+
13
+ def main():
14
+ parser = argparse.ArgumentParser(
15
+ description="""
16
+ Reads and parses the embedded metadata of two .SSFZ files created by Anton Paar
17
+ SAXSquant software, converts them to JSON format and performs a diff-like comparison
18
+ which is output on <stdout>.
19
+ """
20
+ )
21
+ parser.add_argument(
22
+ "fromfile",
23
+ type=lambda p: Path(p).absolute(),
24
+ help="Path of the first .SSFZ file to compare.",
25
+ )
26
+ parser.add_argument(
27
+ "tofile",
28
+ type=lambda p: Path(p).absolute(),
29
+ help="Path of the second .SSFZ file to compare to.",
30
+ )
31
+ json_args = dict(sort_keys=True, indent=2)
32
+ args = parser.parse_args()
33
+ # print(args)
34
+ if not args.fromfile.is_file():
35
+ print(f"Provided file '{args.fromfile}' not found!")
36
+ return 1
37
+ if not args.tofile.is_file():
38
+ print(f"Provided file '{args.tofile}' not found!")
39
+ return 1
40
+ olddata = readSSFZ(args.fromfile)
41
+ newdata = readSSFZ(args.tofile)
42
+ diff = difflib.unified_diff(
43
+ json.dumps(olddata, **json_args).splitlines(keepends=True),
44
+ json.dumps(newdata, **json_args).splitlines(keepends=True),
45
+ fromfile=str(args.fromfile),
46
+ tofile=str(args.tofile),
47
+ )
48
+ for line in diff:
49
+ print(line, end="")
50
+ return 0
51
+
52
+
53
+ if __name__ == "__main__":
54
+ sys.exit(main())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyter-analysis-tools
3
- Version: 1.5.0
3
+ Version: 1.5.1
4
4
  Summary: Yet another Python library with helpers and utilities for data analysis and processing.
5
5
  Author-email: Ingo Breßler <ingo.bressler@bam.de>, "Brian R. Pauw" <brian.pauw@bam.de>
6
6
  License-Expression: MIT
@@ -35,10 +35,10 @@ Requires-Dist: matplotlib
35
35
  Requires-Dist: ipywidgets
36
36
  Dynamic: license-file
37
37
 
38
- # Jupyter Analysis Tools (v1.5.0)
38
+ # Jupyter Analysis Tools (v1.5.1)
39
39
 
40
40
  [![PyPI Package latest release](https://img.shields.io/pypi/v/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools)
41
- [![Commits since latest release](https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.5.0.svg)](https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.5.0...main)
41
+ [![Commits since latest release](https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.5.1.svg)](https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.5.1...main)
42
42
  [![License](https://img.shields.io/pypi/l/jupyter-analysis-tools.svg)](https://en.wikipedia.org/wiki/MIT_license)
43
43
  [![Supported versions](https://img.shields.io/pypi/pyversions/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools)
44
44
  [![PyPI Wheel](https://img.shields.io/pypi/wheel/jupyter-analysis-tools.svg)](https://pypi.org/project/jupyter-analysis-tools#files)
@@ -97,6 +97,12 @@ are installed:
97
97
 
98
98
  # CHANGELOG
99
99
 
100
+ ## v1.5.1 (2025-08-04)
101
+
102
+ ### Bug fixes
103
+
104
+ * **readSSFZ**: split in two: ssfz2json for converting, ssfz_compare for diff-like compare ([`e8b24fe`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/e8b24fe796430bb4b09fa23dcd204e6162051f79))
105
+
100
106
  ## v1.5.0 (2025-08-04)
101
107
 
102
108
  ### Bug fixes
@@ -32,6 +32,7 @@ src/jupyter_analysis_tools/git.py
32
32
  src/jupyter_analysis_tools/plotting.py
33
33
  src/jupyter_analysis_tools/readdata.py
34
34
  src/jupyter_analysis_tools/ssfz2json.py
35
+ src/jupyter_analysis_tools/ssfz_compare.py
35
36
  src/jupyter_analysis_tools/utils.py
36
37
  src/jupyter_analysis_tools/widgets.py
37
38
  src/jupyter_analysis_tools.egg-info/PKG-INFO
@@ -1,2 +1,3 @@
1
1
  [console_scripts]
2
+ ssfz-compare = jupyter_analysis_tools.ssfz_compare:main
2
3
  ssfz2json = jupyter_analysis_tools.ssfz2json:main
@@ -1,69 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # ssfz2json.py
3
-
4
- import argparse
5
- import json
6
- import sys
7
- from pathlib import Path
8
-
9
- from jupyter_analysis_tools.readdata import readSSFZ
10
-
11
-
12
- def main():
13
- parser = argparse.ArgumentParser(
14
- description="""
15
- Reads and parses a .SSFZ file created by Anton Paar SAXSquant software and writes them
16
- back to disk as .JSON file under the same base name if no other output name was given.
17
-
18
- If two .SSFZ files are provided, a diff-like comparison of metadata is output and the
19
- *outPath* argument is ignored.
20
- """
21
- )
22
- parser.add_argument(
23
- "-i",
24
- "--inPath",
25
- type=lambda p: Path(p).absolute(),
26
- help="Path of the input .SSFZ file to read.",
27
- required=True,
28
- )
29
- parser.add_argument(
30
- "-c",
31
- "--comparePath",
32
- type=lambda p: Path(p).absolute(),
33
- help="Path of a 2nd .SSFZ file to compare its metadata against the 1st one.",
34
- )
35
- parser.add_argument(
36
- "-o",
37
- "--outPath",
38
- type=lambda p: Path(p).absolute(),
39
- help="Output file Path to write the JSON data to.",
40
- )
41
- json_args = dict(sort_keys=True, indent=2)
42
- args = parser.parse_args()
43
- if not args.inPath.is_file():
44
- print(f"Provided file '{args.inPath}' not found!")
45
- return 1
46
- in_data = readSSFZ(args.inPath)
47
- if args.comparePath is not None:
48
- import difflib
49
-
50
- comp_data = readSSFZ(args.comparePath)
51
- diff = difflib.unified_diff(
52
- json.dumps(in_data, **json_args).splitlines(keepends=True),
53
- json.dumps(comp_data, **json_args).splitlines(keepends=True),
54
- fromfile=str(args.inPath),
55
- tofile=str(args.comparePath),
56
- )
57
- for line in diff:
58
- print(line, end="")
59
- else: # just write JSON to outPath
60
- if args.outPath is None:
61
- args.outPath = args.inPath.with_suffix(args.inPath.suffix + ".json")
62
- with open(args.outPath, "w") as fd:
63
- json.dump(in_data, fd, **json_args)
64
- print(f"Wrote '{args.outPath}'.")
65
- return 0
66
-
67
-
68
- if __name__ == "__main__":
69
- sys.exit(main())