jupyter-analysis-tools 1.2.2__tar.gz → 1.3.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 (61) hide show
  1. jupyter_analysis_tools-1.3.1/.copier-answers.yml +25 -0
  2. jupyter_analysis_tools-1.3.1/AUTHORS.rst +6 -0
  3. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/CHANGELOG.md +54 -0
  4. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/LICENSE +1 -1
  5. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/MANIFEST.in +2 -2
  6. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/PKG-INFO +59 -6
  7. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/README.rst +2 -2
  8. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/ci/requirements.txt +1 -0
  9. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/conf.py +11 -4
  10. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/pyproject.toml +10 -4
  11. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/__init__.py +1 -1
  12. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/utils.py +25 -1
  13. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools.egg-info/PKG-INFO +59 -6
  14. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools.egg-info/SOURCES.txt +1 -8
  15. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/tests/requirements.txt +1 -0
  16. jupyter_analysis_tools-1.3.1/tests/utils.py +80 -0
  17. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/tox.ini +10 -15
  18. jupyter_analysis_tools-1.2.2/.cookiecutterrc +0 -27
  19. jupyter_analysis_tools-1.2.2/AUTHORS.rst +0 -6
  20. jupyter_analysis_tools-1.2.2/ci/templates/.github/workflows/build.yml +0 -61
  21. jupyter_analysis_tools-1.2.2/ci/templates/.github/workflows/ci-cd.yml +0 -69
  22. jupyter_analysis_tools-1.2.2/ci/templates/.github/workflows/coverage.yml +0 -132
  23. jupyter_analysis_tools-1.2.2/ci/templates/.github/workflows/docs.yml +0 -37
  24. jupyter_analysis_tools-1.2.2/ci/templates/.github/workflows/release.yml +0 -39
  25. jupyter_analysis_tools-1.2.2/ci/templates/.github/workflows/tests.yml +0 -58
  26. jupyter_analysis_tools-1.2.2/ci/update.py +0 -125
  27. jupyter_analysis_tools-1.2.2/tests/utils.py +0 -34
  28. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/.editorconfig +0 -0
  29. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/.pre-commit-config.yaml +0 -0
  30. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/CONTRIBUTING.rst +0 -0
  31. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/_templates/class.rst +0 -0
  32. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/_templates/module.rst +0 -0
  33. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/authors.rst +0 -0
  34. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/changelog.rst +0 -0
  35. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/contributing.rst +0 -0
  36. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/index.rst +0 -0
  37. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/installation.rst +0 -0
  38. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/readme.rst +0 -0
  39. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/reference/index.rst +0 -0
  40. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/requirements.txt +0 -0
  41. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/spelling_wordlist.txt +0 -0
  42. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/docs/usage.rst +0 -0
  43. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/setup.cfg +0 -0
  44. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/analysis.py +0 -0
  45. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/binning.py +0 -0
  46. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/datalocations.py +0 -0
  47. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/distrib.py +0 -0
  48. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/git.py +0 -0
  49. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/plotting.py +0 -0
  50. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/readdata.py +0 -0
  51. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools/widgets.py +0 -0
  52. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools.egg-info/dependency_links.txt +0 -0
  53. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools.egg-info/requires.txt +0 -0
  54. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/src/jupyter_analysis_tools.egg-info/top_level.txt +0 -0
  55. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/templates/CHANGELOG.md.j2 +0 -0
  56. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/testdata/2015-03-20-Silica.ssf.json +0 -0
  57. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/testdata/2015-03-20-Silica.ssfz +0 -0
  58. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/testdata/S2842 water.json +0 -0
  59. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/testdata/S2842 water.pdh +0 -0
  60. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/testdata/S2843[9].pdh +0 -0
  61. {jupyter_analysis_tools-1.2.2 → jupyter_analysis_tools-1.3.1}/tests/readdata.py +0 -0
@@ -0,0 +1,25 @@
1
+ # Changes here will be overwritten by Copier
2
+ _commit: cc8ce84
3
+ _src_path: ~/code/yapy-copier-template
4
+ author_count: 2
5
+ author_emails: ingo.bressler@bam.de, brian.pauw@bam.de
6
+ author_names: Ingo Breßler, Brian R. Pauw
7
+ author_websites: https://github.com/ibresslerBAM, https://lookingatnothing.com
8
+ copyright_from: 2018
9
+ docs_url: https://BAMresearch.github.io/jupyter-analysis-tools
10
+ license: MIT
11
+ project_description: Yet another Python library with helpers and utilities for data
12
+ analysis and processing.
13
+ project_name: Jupyter Analysis Tools
14
+ pypi_host: pypi.org
15
+ python_versions:
16
+ - '3.11'
17
+ - '3.12'
18
+ - '3.13'
19
+ release_date_question: today
20
+ repo_hosting_domain: github.com
21
+ repo_main_branch: main
22
+ repo_name: jupyter-analysis-tools
23
+ repo_userorg: BAMresearch
24
+ sphinx_theme: furo
25
+ version: 1.3.1
@@ -0,0 +1,6 @@
1
+
2
+ Authors
3
+ =======
4
+
5
+ * Ingo Breßler - ingo.bressler@bam.de
6
+ * Brian R. Pauw - brian.pauw@bam.de
@@ -1,5 +1,59 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.3.1 (2025-07-23)
4
+
5
+ ### Bug fixes
6
+
7
+ * Project: update manifest and flake8 config, reapplied template ([`c98c648`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/c98c6489423a45d8a195fda32396ea9d9d18b9eb))
8
+
9
+ ### Code style
10
+
11
+ * utils: satisfy flake8 ([`2e3dc36`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/2e3dc36ef21e60f4fe7b8caea567411cc69967c0))
12
+
13
+ ### Continuous integration
14
+
15
+ * semantic-release: replace .cookiecutterrc by .copier-answers.yml ([`2030c88`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/2030c88dfb0ca69ac332380e33b3baed9cb6cf44))
16
+
17
+ * coverage: coverage-report fix ([`1bd26b7`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/1bd26b71abcb090ef32cb2fbdd05b978bce5144c))
18
+
19
+ * GitHub Workflows: remove templates, rendered by *copier update* ([`8a637a5`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/8a637a5b34df4a3ec6a4e8cae97a9d3e24ad2e5c))
20
+
21
+ * GitHub Workflow: publish depends on all other job to be successful ([`efc1f22`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/efc1f223aa2da882d43b27406a2f20113c2c8879))
22
+
23
+ * Template: latest GitHub Workflow templates applied ([`7d87906`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/7d87906c852cb2b57704c45db0b19c7a1ae513a2))
24
+
25
+ * coverage: fix path name matching rules ([`37bd2d9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/37bd2d93a8fe10a3355feee6779f45bd9161a88b))
26
+
27
+ ### Documentation
28
+
29
+ * Copyright years: update ([`cee35e6`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/cee35e6fe92ae27575bd7fb4a7a2638cd1c931b2))
30
+
31
+ * Contributions: Authors update ([`dd5a5c4`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/dd5a5c4d81732821057bcc200f462159cffa760b))
32
+
33
+ ### Refactoring
34
+
35
+ * Project: GitHub Workflow templates fixed ([`b346b28`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/b346b282332f0f7f81b724509a4004e6a69d7791))
36
+
37
+ * Project: GitHub Workflow templates updated ([`235c4d9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/235c4d9c53997fdf4c08913361fb57167939cd7c))
38
+
39
+ * Project: switching to copier for project template with update mechanism ([`0d3064b`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/0d3064b8cef45667b0964aab248b583424946207))
40
+
41
+ ## v1.3.0 (2025-07-16)
42
+
43
+ ### Bug fixes
44
+
45
+ * utils.extract7z: informative info message ([`80d2f71`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/80d2f7134992d59f0bfd7f5e7bc27772f77cd452))
46
+
47
+ ### Continuous integration
48
+
49
+ * coverage: fix coverage artifact name for multiple matrix.os ([`f471599`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/f471599b8c86e29fd20b78f7cbd9291c3a6dd98a))
50
+
51
+ * testing: test on Windows as well ([`4a83c39`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/4a83c3924bcb820ef0728af40b86a0f6622dfef2))
52
+
53
+ ### Features
54
+
55
+ * utils.makeNetworkdriveAbsolute: new routines for translating a windows drive letter mount to its network location ([`823a6bf`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/823a6bfe126829381bc14d34578f342f4b9d3e8f))
56
+
3
57
  ## v1.2.2 (2025-07-15)
4
58
 
5
59
  ### Bug fixes
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018-2023, Ingo Breßler
3
+ Copyright (c) 2018-2025, Ingo Breßler and Brian R. Pauw
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
6
 
@@ -3,10 +3,11 @@ exclude docs/reference/autosummary/*
3
3
  graft src
4
4
  graft ci
5
5
  graft tests
6
+ graft testdata
6
7
 
7
8
  include .editorconfig
8
9
  include .pre-commit-config.yaml
9
- include .cookiecutterrc
10
+ include .copier-answers.yml
10
11
  include tox.ini
11
12
 
12
13
  include AUTHORS.rst
@@ -17,4 +18,3 @@ include README.rst
17
18
 
18
19
  global-exclude *.py[cod] __pycache__/* *.so *.dylib .DS_Store */.ipynb_checkpoints/*
19
20
  recursive-include templates *.j2
20
- recursive-include testdata *.pdh *.ssfz *.json
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyter-analysis-tools
3
- Version: 1.2.2
3
+ Version: 1.3.1
4
4
  Summary: Yet another Python library with helpers and utilities for data analysis and processing.
5
- Author-email: Ingo Breßler <dev@ingobressler.net>
6
- License: MIT license
5
+ Author-email: Ingo Breßler <ingo.bressler@bam.de>, "Brian R. Pauw" <brian.pauw@bam.de>
6
+ License-Expression: MIT
7
7
  Project-URL: homepage, https://BAMresearch.github.io/jupyter-analysis-tools
8
8
  Project-URL: documentation, https://BAMresearch.github.io/jupyter-analysis-tools
9
9
  Project-URL: repository, https://github.com/BAMresearch/jupyter-analysis-tools
10
10
  Project-URL: changelog, https://BAMresearch.github.io/jupyter-analysis-tools/changelog.html
11
11
  Classifier: Development Status :: 4 - Beta
12
- Classifier: License :: OSI Approved :: MIT License
13
12
  Classifier: Operating System :: Unix
14
13
  Classifier: Operating System :: POSIX
15
14
  Classifier: Operating System :: MacOS
@@ -53,8 +52,8 @@ Yet another Python library with helpers and utilities for data analysis and proc
53
52
  :target: https://pypi.org/project/jupyter-analysis-tools
54
53
  :alt: PyPI Package latest release
55
54
 
56
- .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.2.2.svg
57
- :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.2...main
55
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.3.1.svg
56
+ :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.3.1...main
58
57
  :alt: Commits since latest release
59
58
 
60
59
  .. |license| image:: https://img.shields.io/pypi/l/jupyter-analysis-tools.svg
@@ -127,6 +126,60 @@ Note, to combine the coverage data from all the tox environments run:
127
126
 
128
127
  # CHANGELOG
129
128
 
129
+ ## v1.3.1 (2025-07-23)
130
+
131
+ ### Bug fixes
132
+
133
+ * Project: update manifest and flake8 config, reapplied template ([`c98c648`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/c98c6489423a45d8a195fda32396ea9d9d18b9eb))
134
+
135
+ ### Code style
136
+
137
+ * utils: satisfy flake8 ([`2e3dc36`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/2e3dc36ef21e60f4fe7b8caea567411cc69967c0))
138
+
139
+ ### Continuous integration
140
+
141
+ * semantic-release: replace .cookiecutterrc by .copier-answers.yml ([`2030c88`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/2030c88dfb0ca69ac332380e33b3baed9cb6cf44))
142
+
143
+ * coverage: coverage-report fix ([`1bd26b7`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/1bd26b71abcb090ef32cb2fbdd05b978bce5144c))
144
+
145
+ * GitHub Workflows: remove templates, rendered by *copier update* ([`8a637a5`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/8a637a5b34df4a3ec6a4e8cae97a9d3e24ad2e5c))
146
+
147
+ * GitHub Workflow: publish depends on all other job to be successful ([`efc1f22`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/efc1f223aa2da882d43b27406a2f20113c2c8879))
148
+
149
+ * Template: latest GitHub Workflow templates applied ([`7d87906`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/7d87906c852cb2b57704c45db0b19c7a1ae513a2))
150
+
151
+ * coverage: fix path name matching rules ([`37bd2d9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/37bd2d93a8fe10a3355feee6779f45bd9161a88b))
152
+
153
+ ### Documentation
154
+
155
+ * Copyright years: update ([`cee35e6`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/cee35e6fe92ae27575bd7fb4a7a2638cd1c931b2))
156
+
157
+ * Contributions: Authors update ([`dd5a5c4`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/dd5a5c4d81732821057bcc200f462159cffa760b))
158
+
159
+ ### Refactoring
160
+
161
+ * Project: GitHub Workflow templates fixed ([`b346b28`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/b346b282332f0f7f81b724509a4004e6a69d7791))
162
+
163
+ * Project: GitHub Workflow templates updated ([`235c4d9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/235c4d9c53997fdf4c08913361fb57167939cd7c))
164
+
165
+ * Project: switching to copier for project template with update mechanism ([`0d3064b`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/0d3064b8cef45667b0964aab248b583424946207))
166
+
167
+ ## v1.3.0 (2025-07-16)
168
+
169
+ ### Bug fixes
170
+
171
+ * utils.extract7z: informative info message ([`80d2f71`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/80d2f7134992d59f0bfd7f5e7bc27772f77cd452))
172
+
173
+ ### Continuous integration
174
+
175
+ * coverage: fix coverage artifact name for multiple matrix.os ([`f471599`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/f471599b8c86e29fd20b78f7cbd9291c3a6dd98a))
176
+
177
+ * testing: test on Windows as well ([`4a83c39`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/4a83c3924bcb820ef0728af40b86a0f6622dfef2))
178
+
179
+ ### Features
180
+
181
+ * utils.makeNetworkdriveAbsolute: new routines for translating a windows drive letter mount to its network location ([`823a6bf`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/823a6bfe126829381bc14d34578f342f4b9d3e8f))
182
+
130
183
  ## v1.2.2 (2025-07-15)
131
184
 
132
185
  ### Bug fixes
@@ -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.2.svg
18
- :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.2...main
17
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.3.1.svg
18
+ :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.3.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
@@ -5,6 +5,7 @@ six>=1.14.0
5
5
  tox
6
6
  build
7
7
  twine
8
+ toml
8
9
  python-semantic-release
9
10
  # provides the *coverage* command to combine and publish coverage data
10
11
  # generated within tox environments
@@ -19,17 +19,20 @@ extensions = [
19
19
  "sphinx.ext.napoleon",
20
20
  "sphinx.ext.todo",
21
21
  "sphinx.ext.viewcode",
22
+ "sphinx.ext.inheritance_diagram",
23
+ "sphinx.ext.graphviz",
22
24
  "myst_parser",
23
25
  ]
26
+ inheritance_edge_attrs = dict(color="gray") # readable in darkmode too
24
27
  autosummary_generate = True # Turn on sphinx.ext.autosummary
25
28
  templates_path = ["_templates"]
26
29
  source_suffix = ".rst"
27
30
  master_doc = "index"
28
31
  project = "Jupyter Analysis Tools"
29
- year = "2018-2023"
30
- author = "Ingo Breßler"
32
+ year = "2018-2025"
33
+ author = "Ingo Breßler and Brian R. Pauw"
31
34
  copyright = "{0}, {1}".format(year, author)
32
- version = "1.2.2"
35
+ version = "1.3.1"
33
36
  release = version
34
37
  commit_id = None
35
38
  try:
@@ -42,6 +45,7 @@ except subprocess.CalledProcessError as e:
42
45
 
43
46
  autodoc_mock_imports = [
44
47
  "ipykernel",
48
+ "notebook",
45
49
  "pandas",
46
50
  "ipywidgets",
47
51
  "matplotlib",
@@ -49,6 +53,9 @@ autodoc_mock_imports = [
49
53
  "h5py",
50
54
  "pint",
51
55
  "sasmodels",
56
+ "chempy",
57
+ "graphviz",
58
+ "mcsas3",
52
59
  ]
53
60
 
54
61
  pygments_style = "trac"
@@ -78,7 +85,7 @@ linkcheck_ignore = [
78
85
  + r".*",
79
86
  # attempted fix of '406 Client Error: Not Acceptable for url'
80
87
  # https://github.com/sphinx-doc/sphinx/issues/1331
81
- join(project_meta["project"]["urls"]["repository"], "commit", r"[0-9a-fA-F]+"),
88
+ join(project_meta["project"]["urls"]["repository"], "commit", r"[0-9a-fA-F]+")
82
89
  ]
83
90
  linkcheck_anchors_ignore_for_url = [
84
91
  r"https://pypi\.org/project/[^/]+",
@@ -1,13 +1,11 @@
1
1
  [project]
2
2
  name = "jupyter-analysis-tools"
3
3
  description = "Yet another Python library with helpers and utilities for data analysis and processing."
4
- authors = [{ name = "Ingo Breßler", email = "dev@ingobressler.net" }]
5
4
  dynamic = ["version", "readme"]
6
- license = {text = "MIT license"}
5
+ license = "MIT"
7
6
  classifiers = [
8
7
  # complete classifier list: http://pypi.python.org/pypi?%3Aaction=list_classifiers
9
8
  "Development Status :: 4 - Beta",
10
- "License :: OSI Approved :: MIT License",
11
9
  "Operating System :: Unix",
12
10
  "Operating System :: POSIX",
13
11
  "Operating System :: MacOS",
@@ -30,6 +28,14 @@ dependencies = [
30
28
  "numpy", "scipy", "pandas", "matplotlib", "ipywidgets"
31
29
  ]
32
30
 
31
+ [[project.authors]]
32
+ name = "Ingo Breßler"
33
+ email = "ingo.bressler@bam.de"
34
+
35
+ [[project.authors]]
36
+ name = "Brian R. Pauw"
37
+ email = "brian.pauw@bam.de"
38
+
33
39
  [project.urls]
34
40
  homepage = "https://BAMresearch.github.io/jupyter-analysis-tools"
35
41
  documentation = "https://BAMresearch.github.io/jupyter-analysis-tools"
@@ -53,7 +59,7 @@ version = {attr = "jupyter_analysis_tools.__version__"}
53
59
  readme = {file = ["README.rst", "CHANGELOG.md"]}
54
60
 
55
61
  [tool.coverage.report]
56
- path = "coverage-report"
62
+ path = "coverage-report" # see coverage.yml github action
57
63
 
58
64
  # on version numbers: https://peps.python.org/pep-0440/
59
65
  # and bottom of https://softwareengineering.stackexchange.com/a/151558
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  # __init__.py
3
3
 
4
- __version__ = "1.2.2"
4
+ __version__ = "1.3.1"
5
5
 
6
6
  from .binning import reBin
7
7
  from .git import checkRepo, isNBstripoutActivated, isNBstripoutInstalled, isRepo
@@ -105,6 +105,30 @@ def addEnvScriptsToPATH():
105
105
  os.environ["PATH"] = sep.join(environPATH)
106
106
 
107
107
 
108
+ def networkdriveMapping(cmdOutput: str = None):
109
+ """Returns a dict of mapping drive letters to network paths (on Windows)."""
110
+ if isWindows():
111
+ if cmdOutput is None:
112
+ proc = subprocess.run(["net", "use"], capture_output=True, text=True, encoding="cp850")
113
+ cmdOutput = proc.stdout
114
+ rows = [line.split() for line in cmdOutput.splitlines() if "Windows Network" in line]
115
+ rows = dict(
116
+ [row[1:3] for row in rows if row[1].endswith(":") and row[2].startswith("\\\\")]
117
+ )
118
+ return rows
119
+ return {}
120
+
121
+
122
+ def makeNetworkdriveAbsolute(filepath, cmdOutput: str = None):
123
+ """Replaces the drive letter of the given path by the respective network path, if possible."""
124
+ if isWindows() and not filepath.drive.startswith(r"\\"):
125
+ drivemap = networkdriveMapping(cmdOutput=cmdOutput)
126
+ prefix = drivemap.get(filepath.drive, None)
127
+ if prefix is not None:
128
+ filepath = Path(prefix).joinpath(*filepath.parts[1:])
129
+ return filepath
130
+
131
+
108
132
  def checkWinFor7z():
109
133
  """Extend the PATH environment variable for access to the 7-zip executable."""
110
134
  if not isWindows():
@@ -127,7 +151,7 @@ def extract7z(fn, workdir=None):
127
151
  assert os.path.isfile(os.path.join(workdir, fn)), "Provided 7z archive '{}' not found!".format(
128
152
  fn
129
153
  )
130
- print("Extracting archived McDLS results:")
154
+ print(f"Extracting '{fn}':")
131
155
  proc = subprocess.run(
132
156
  ["7z", "x", fn],
133
157
  cwd=workdir,
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jupyter-analysis-tools
3
- Version: 1.2.2
3
+ Version: 1.3.1
4
4
  Summary: Yet another Python library with helpers and utilities for data analysis and processing.
5
- Author-email: Ingo Breßler <dev@ingobressler.net>
6
- License: MIT license
5
+ Author-email: Ingo Breßler <ingo.bressler@bam.de>, "Brian R. Pauw" <brian.pauw@bam.de>
6
+ License-Expression: MIT
7
7
  Project-URL: homepage, https://BAMresearch.github.io/jupyter-analysis-tools
8
8
  Project-URL: documentation, https://BAMresearch.github.io/jupyter-analysis-tools
9
9
  Project-URL: repository, https://github.com/BAMresearch/jupyter-analysis-tools
10
10
  Project-URL: changelog, https://BAMresearch.github.io/jupyter-analysis-tools/changelog.html
11
11
  Classifier: Development Status :: 4 - Beta
12
- Classifier: License :: OSI Approved :: MIT License
13
12
  Classifier: Operating System :: Unix
14
13
  Classifier: Operating System :: POSIX
15
14
  Classifier: Operating System :: MacOS
@@ -53,8 +52,8 @@ Yet another Python library with helpers and utilities for data analysis and proc
53
52
  :target: https://pypi.org/project/jupyter-analysis-tools
54
53
  :alt: PyPI Package latest release
55
54
 
56
- .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.2.2.svg
57
- :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.2.2...main
55
+ .. |commits-since| image:: https://img.shields.io/github/commits-since/BAMresearch/jupyter-analysis-tools/v1.3.1.svg
56
+ :target: https://github.com/BAMresearch/jupyter-analysis-tools/compare/v1.3.1...main
58
57
  :alt: Commits since latest release
59
58
 
60
59
  .. |license| image:: https://img.shields.io/pypi/l/jupyter-analysis-tools.svg
@@ -127,6 +126,60 @@ Note, to combine the coverage data from all the tox environments run:
127
126
 
128
127
  # CHANGELOG
129
128
 
129
+ ## v1.3.1 (2025-07-23)
130
+
131
+ ### Bug fixes
132
+
133
+ * Project: update manifest and flake8 config, reapplied template ([`c98c648`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/c98c6489423a45d8a195fda32396ea9d9d18b9eb))
134
+
135
+ ### Code style
136
+
137
+ * utils: satisfy flake8 ([`2e3dc36`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/2e3dc36ef21e60f4fe7b8caea567411cc69967c0))
138
+
139
+ ### Continuous integration
140
+
141
+ * semantic-release: replace .cookiecutterrc by .copier-answers.yml ([`2030c88`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/2030c88dfb0ca69ac332380e33b3baed9cb6cf44))
142
+
143
+ * coverage: coverage-report fix ([`1bd26b7`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/1bd26b71abcb090ef32cb2fbdd05b978bce5144c))
144
+
145
+ * GitHub Workflows: remove templates, rendered by *copier update* ([`8a637a5`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/8a637a5b34df4a3ec6a4e8cae97a9d3e24ad2e5c))
146
+
147
+ * GitHub Workflow: publish depends on all other job to be successful ([`efc1f22`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/efc1f223aa2da882d43b27406a2f20113c2c8879))
148
+
149
+ * Template: latest GitHub Workflow templates applied ([`7d87906`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/7d87906c852cb2b57704c45db0b19c7a1ae513a2))
150
+
151
+ * coverage: fix path name matching rules ([`37bd2d9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/37bd2d93a8fe10a3355feee6779f45bd9161a88b))
152
+
153
+ ### Documentation
154
+
155
+ * Copyright years: update ([`cee35e6`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/cee35e6fe92ae27575bd7fb4a7a2638cd1c931b2))
156
+
157
+ * Contributions: Authors update ([`dd5a5c4`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/dd5a5c4d81732821057bcc200f462159cffa760b))
158
+
159
+ ### Refactoring
160
+
161
+ * Project: GitHub Workflow templates fixed ([`b346b28`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/b346b282332f0f7f81b724509a4004e6a69d7791))
162
+
163
+ * Project: GitHub Workflow templates updated ([`235c4d9`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/235c4d9c53997fdf4c08913361fb57167939cd7c))
164
+
165
+ * Project: switching to copier for project template with update mechanism ([`0d3064b`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/0d3064b8cef45667b0964aab248b583424946207))
166
+
167
+ ## v1.3.0 (2025-07-16)
168
+
169
+ ### Bug fixes
170
+
171
+ * utils.extract7z: informative info message ([`80d2f71`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/80d2f7134992d59f0bfd7f5e7bc27772f77cd452))
172
+
173
+ ### Continuous integration
174
+
175
+ * coverage: fix coverage artifact name for multiple matrix.os ([`f471599`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/f471599b8c86e29fd20b78f7cbd9291c3a6dd98a))
176
+
177
+ * testing: test on Windows as well ([`4a83c39`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/4a83c3924bcb820ef0728af40b86a0f6622dfef2))
178
+
179
+ ### Features
180
+
181
+ * utils.makeNetworkdriveAbsolute: new routines for translating a windows drive letter mount to its network location ([`823a6bf`](https://github.com/BAMresearch/jupyter-analysis-tools/commit/823a6bfe126829381bc14d34578f342f4b9d3e8f))
182
+
130
183
  ## v1.2.2 (2025-07-15)
131
184
 
132
185
  ### Bug fixes
@@ -1,4 +1,4 @@
1
- .cookiecutterrc
1
+ .copier-answers.yml
2
2
  .editorconfig
3
3
  .pre-commit-config.yaml
4
4
  AUTHORS.rst
@@ -10,13 +10,6 @@ README.rst
10
10
  pyproject.toml
11
11
  tox.ini
12
12
  ci/requirements.txt
13
- ci/update.py
14
- ci/templates/.github/workflows/build.yml
15
- ci/templates/.github/workflows/ci-cd.yml
16
- ci/templates/.github/workflows/coverage.yml
17
- ci/templates/.github/workflows/docs.yml
18
- ci/templates/.github/workflows/release.yml
19
- ci/templates/.github/workflows/tests.yml
20
13
  docs/authors.rst
21
14
  docs/changelog.rst
22
15
  docs/conf.py
@@ -1,4 +1,5 @@
1
1
  ipykernel
2
+ notebook
2
3
  pandas
3
4
  ipywidgets
4
5
  matplotlib
@@ -0,0 +1,80 @@
1
+ # -*- coding: utf-8 -*-
2
+ # tests/utils.py
3
+
4
+
5
+ import os
6
+ from pathlib import Path
7
+
8
+ from jupyter_analysis_tools.utils import (
9
+ appendToPATH,
10
+ isWindows,
11
+ makeNetworkdriveAbsolute,
12
+ networkdriveMapping,
13
+ )
14
+
15
+ # output of 'net use' command on Windows
16
+ outNetUse = r"""Neue Verbindungen werden gespeichert.
17
+
18
+
19
+ Status Lokal Remote Netzwerk
20
+
21
+ -------------------------------------------------------------------------------
22
+ OK G: \\ALPHA\BETA Microsoft Windows Network
23
+ OK K: \\GAM\MMA Microsoft Windows Network
24
+ OK M: \\user\drive\uname Microsoft Windows Network
25
+ OK T: \\test\foldername Microsoft Windows Network
26
+ OK \\psi\folder Microsoft Windows Network
27
+ Der Befehl wurde erfolgreich ausgeführt.
28
+ """
29
+
30
+
31
+ def test_appendToPATH(capsys):
32
+ # Setting up a PATH for testing first (platform dependent).
33
+ testpath = "/usr/local/sbin:/usr/local/bin:/sbin:/usr/games:/usr/local/games:/snap/bin"
34
+ if isWindows():
35
+ testpath = "something else"
36
+ os.environ["PATH"] = testpath
37
+ assert os.environ["PATH"] == testpath
38
+
39
+ if not isWindows(): # Linux edition
40
+ appendToPATH("/tmp", ("one", "two"), verbose=True)
41
+ captured = capsys.readouterr()
42
+ assert (
43
+ captured.out
44
+ == """\
45
+ /tmp/one [exists: False]
46
+ /tmp/two [exists: False]
47
+ """
48
+ )
49
+ assert os.environ["PATH"] == testpath + ":/tmp/one:/tmp/two"
50
+
51
+ else: # Windows edition
52
+ appendToPATH(r"C:\Windows", ("one", "two"), verbose=True)
53
+ captured = capsys.readouterr()
54
+ assert (
55
+ captured.out
56
+ == """\
57
+ C:\\Windows\\one [exists: False]
58
+ C:\\Windows\\two [exists: False]
59
+ """
60
+ )
61
+ assert os.environ["PATH"] == testpath + r";C:\Windows\one;C:\Windows\two"
62
+
63
+
64
+ def test_networkdriveMapping():
65
+ if isWindows():
66
+ map = networkdriveMapping(cmdOutput=outNetUse)
67
+ assert map == {
68
+ "G:": "\\\\ALPHA\\BETA",
69
+ "K:": "\\\\GAM\\MMA",
70
+ "M:": "\\\\user\\drive\\uname",
71
+ "T:": "\\\\test\\foldername",
72
+ }
73
+
74
+
75
+ def test_makeNetworkdriveAbsolute():
76
+ if isWindows():
77
+ filepath = Path(r"M:\some\folders\a file name.ext")
78
+ newpath = makeNetworkdriveAbsolute(filepath, cmdOutput=outNetUse)
79
+ assert filepath != newpath
80
+ assert newpath == Path(r"\\user\drive\uname\some\folders\a file name.ext")
@@ -1,14 +1,3 @@
1
- # on updates run 'python3 ci/update.py --no-env' to generate tests.yml github workflows
2
- [testenv:bootstrap]
3
- deps =
4
- jinja2
5
- tox
6
- toml
7
- pyyaml
8
- skip_install = true
9
- commands =
10
- python ci/update.py --no-env
11
-
12
1
  [tox]
13
2
  envlist =
14
3
  clean,
@@ -30,6 +19,9 @@ basepython =
30
19
  setenv =
31
20
  PYTHONPATH={toxinidir}/tests
32
21
  PYTHONUNBUFFERED=yes
22
+ # fix wrong cp1252 on Windows when loading a notebook with dash (or other unicode symbols)
23
+ # since locale.getpreferredencoding can't be changed easily
24
+ PYTHONUTF8=1
33
25
  deps =
34
26
  pytest
35
27
  pytest-cov
@@ -82,7 +74,7 @@ commands =
82
74
  deps =
83
75
  coverage
84
76
  skip_install = true
85
- allowlist_externals=/bin/rm,/usr/bin/rm,rm
77
+ allowlist_externals=/bin/rm,/usr/bin/rm
86
78
  commands =
87
79
  coverage erase
88
80
  rm -Rf dist build htmlcov src/jupyter_analysis_tools.egg-info
@@ -122,7 +114,10 @@ testpaths =
122
114
  notebooks
123
115
  # Idea from: https://til.simonwillison.net/pytest/treat-warnings-as-errors
124
116
  filterwarnings =
125
- ignore::DeprecationWarning:distutils|notebook|_pytest|xarray|nbclient|pytest_notebook|debugpy|pkg_resources
117
+ ignore::DeprecationWarning:distutils|notebook|_pytest|xarray|nbclient|pytest_notebook|debugpy
118
+ ignore::DeprecationWarning:pkg_resources|openpyxl|zmq
119
+ # ignore warnings about unknown pytest-notebook options below
120
+ ignore::Warning:_pytest
126
121
  nb_test_files = True
127
122
  nb_coverage = False
128
123
  nb_post_processors =
@@ -139,10 +134,10 @@ nb_diff_ignore =
139
134
  [coverage:paths]
140
135
  src =
141
136
  src
142
- */jupyter_analysis_tools/jupyter_analysis_tools/src
137
+ */jupyter-analysis-tools/jupyter-analysis-tools/src
143
138
  tests =
144
139
  tests
145
- */jupyter_analysis_tools/jupyter_analysis_tools/tests
140
+ */jupyter-analysis-tools/jupyter-analysis-tools/tests
146
141
 
147
142
  [coverage:run]
148
143
  branch = true
@@ -1,27 +0,0 @@
1
- # This file exists so you can easily regenerate your project.
2
- # run:
3
- #
4
- # cookiecutter --overwrite-if-exists --config-file=.cookiecutterrc gh:BAMresearch/yapy-cookiecutter
5
-
6
- default_context:
7
- full_name: 'Ingo Breßler'
8
- email: 'dev@ingobressler.net'
9
- website: 'https://github.com/ibressler'
10
- project_name: 'Jupyter Analysis Tools'
11
- repo_name: 'jupyter-analysis-tools'
12
- repo_hosting: 'github.com'
13
- repo_hosting_domain: 'github.com'
14
- repo_userorg: 'BAMresearch'
15
- docs_url: 'https://BAMresearch.github.io/jupyter-analysis-tools'
16
- repo_main_branch: 'main'
17
- package_name: 'jupyter_analysis_tools'
18
- distribution_name: 'jupyter-analysis-tools'
19
- project_short_description: 'Yet another Python library with helpers and utilities for data analysis and processing.'
20
- release_date: 'today'
21
- year_from: '2018'
22
- year_to: '2023'
23
- version: '1.2.2'
24
- pypi_host: 'pypi.org'
25
- license: 'MIT license'
26
- sphinx_theme: 'furo'
27
- extra_context: {'exclude_existing': "['AUTHORS.rst', 'CHANGELOG.md', 'src/jupyter_analysis_tools/__init__.py']"}