PyTracerLab 0.2.2__tar.gz → 0.2.4__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 (129) hide show
  1. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/.github/workflows/ci.yml +2 -2
  2. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/.github/workflows/docs.yml +28 -7
  3. pytracerlab-0.2.4/.pre-commit-config.yaml +18 -0
  4. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/PKG-INFO +1 -1
  5. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/conf.py +27 -1
  6. pytracerlab-0.2.4/docs/development/package_scheme.png +0 -0
  7. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/calibration_benchmark.png +0 -0
  8. pytracerlab-0.2.4/docs/examples/calibration_benchmark_4models.png +0 -0
  9. pytracerlab-0.2.4/docs/examples/errors_benchmark.png +0 -0
  10. pytracerlab-0.2.4/docs/examples/example_07.ipynb +710 -0
  11. pytracerlab-0.2.2/docs/examples/example_09.ipynb → pytracerlab-0.2.4/docs/examples/example_08.ipynb +33 -40
  12. pytracerlab-0.2.4/docs/examples/example_09.ipynb +635 -0
  13. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/index.md +3 -0
  14. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/obs_monthly_modflow.csv +19 -19
  15. pytracerlab-0.2.4/docs/examples/tracer_tracer_sim_TracerLPM.csv +501 -0
  16. pytracerlab-0.2.4/docs/examples/tracer_tracer_sim_TracerLPM_forward.csv +122 -0
  17. pytracerlab-0.2.4/docs/examples/tracer_tracer_sim_TracerLPM_forward_format.csv +122 -0
  18. pytracerlab-0.2.4/docs/userguide/tab01.png +0 -0
  19. pytracerlab-0.2.4/docs/userguide/tab02.png +0 -0
  20. pytracerlab-0.2.4/docs/userguide/tab03.png +0 -0
  21. pytracerlab-0.2.4/docs/userguide/tab04.png +0 -0
  22. pytracerlab-0.2.4/docs/userguide/tab05.png +0 -0
  23. pytracerlab-0.2.4/logo.png +0 -0
  24. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/readme.md +6 -1
  25. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/controller.py +9 -2
  26. pytracerlab-0.2.4/src/PyTracerLab/gui/database.py +21 -0
  27. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/model/solver.py +8 -17
  28. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/model/units.py +5 -5
  29. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab.egg-info/PKG-INFO +1 -1
  30. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab.egg-info/SOURCES.txt +4 -6
  31. pytracerlab-0.2.2/.pre-commit-config.yaml +0 -27
  32. pytracerlab-0.2.2/docs/_static/logo.png +0 -0
  33. pytracerlab-0.2.2/docs/development/package_scheme.png +0 -0
  34. pytracerlab-0.2.2/docs/examples/calibration_benchmark_4models.png +0 -0
  35. pytracerlab-0.2.2/docs/examples/errors_benchmark.png +0 -0
  36. pytracerlab-0.2.2/docs/examples/example_07.ipynb +0 -1651
  37. pytracerlab-0.2.2/docs/examples/example_08.ipynb +0 -721
  38. pytracerlab-0.2.2/docs/examples/example_10.ipynb +0 -2116
  39. pytracerlab-0.2.2/docs/examples/example_11.ipynb +0 -555
  40. pytracerlab-0.2.2/docs/examples/joint_posterior_benchmark.png +0 -0
  41. pytracerlab-0.2.2/docs/examples/modflow_PyTracerLab.png +0 -0
  42. pytracerlab-0.2.2/docs/examples/simulation_benchmark.png +0 -0
  43. pytracerlab-0.2.2/docs/examples/tracer_tracer_plots_benchmark.png +0 -0
  44. pytracerlab-0.2.2/docs/userguide/tab01.png +0 -0
  45. pytracerlab-0.2.2/docs/userguide/tab02.png +0 -0
  46. pytracerlab-0.2.2/docs/userguide/tab03.png +0 -0
  47. pytracerlab-0.2.2/docs/userguide/tab04.png +0 -0
  48. pytracerlab-0.2.2/src/PyTracerLab/gui/database.py +0 -16
  49. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/.github/workflows/release.yml +0 -0
  50. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/.gitignore +0 -0
  51. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/LICENSE +0 -0
  52. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/_static/.gitkeep +0 -0
  53. {pytracerlab-0.2.2 → pytracerlab-0.2.4/docs/_static}/logo.png +0 -0
  54. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.gui.app.rst +0 -0
  55. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.gui.controller.rst +0 -0
  56. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.gui.database.rst +0 -0
  57. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.gui.main_window.rst +0 -0
  58. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.gui.rst +0 -0
  59. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.gui.state.rst +0 -0
  60. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.model.model.rst +0 -0
  61. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.model.registry.rst +0 -0
  62. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.model.rst +0 -0
  63. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.model.solver.rst +0 -0
  64. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.model.units.rst +0 -0
  65. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/PyTracerLab.rst +0 -0
  66. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/api/modules.rst +0 -0
  67. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/development/devguide.md +0 -0
  68. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/development/index.md +0 -0
  69. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/3H_SF6_input.csv +0 -0
  70. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/3H_SF6_observations.csv +0 -0
  71. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_input_6monthly.csv +0 -0
  72. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_input_multitracer.csv +0 -0
  73. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_input_multitracer_yearly.csv +0 -0
  74. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_input_yearly.csv +0 -0
  75. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_observations_6monthly.csv +0 -0
  76. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_observations_multitracer.csv +0 -0
  77. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_observations_yearly.csv +0 -0
  78. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_simulations_1.csv +0 -0
  79. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_simulations_2.csv +0 -0
  80. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/TracerLPM_benchmark_simulations_3.csv +0 -0
  81. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/benchmark_input_monthly.csv +0 -0
  82. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/benchmark_input_yearly.csv +0 -0
  83. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_01.ipynb +0 -0
  84. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_02.ipynb +0 -0
  85. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_03.ipynb +0 -0
  86. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_04.ipynb +0 -0
  87. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_05.ipynb +0 -0
  88. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_06.ipynb +0 -0
  89. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_input_series_1tracer.csv +0 -0
  90. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_input_series_2tracer.csv +0 -0
  91. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_observation_series_1tracer.csv +0 -0
  92. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_observation_series_2tracer.csv +0 -0
  93. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_output_series_1tracer.csv +0 -0
  94. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/example_output_series_2tracer.csv +0 -0
  95. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/input_monthly_modflow.csv +0 -0
  96. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/test_input_14C_yearly.csv +0 -0
  97. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/test_target_14C_yearly.csv +0 -0
  98. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/examples/tts_weights_modflow.csv +0 -0
  99. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/index.md +0 -0
  100. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/userguide/concepts.md +0 -0
  101. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/userguide/index.md +0 -0
  102. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/userguide/plot.png +0 -0
  103. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/userguide/report.png +0 -0
  104. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/userguide/usage.md +0 -0
  105. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/docs/userguide/usage_de.md +0 -0
  106. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/pyproject.toml +0 -0
  107. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/pytracerlab_icon.ico +0 -0
  108. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/setup.cfg +0 -0
  109. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/__init__.py +0 -0
  110. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/__main__.py +0 -0
  111. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/__init__.py +0 -0
  112. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/app.py +0 -0
  113. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/main_window.py +0 -0
  114. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/state.py +0 -0
  115. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/tabs/file_input.py +0 -0
  116. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/tabs/model_design.py +0 -0
  117. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/tabs/parameters.py +0 -0
  118. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/tabs/simulation.py +0 -0
  119. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/tabs/solver_params.py +0 -0
  120. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/tabs/tracer_tracer.py +0 -0
  121. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/gui/tabs/widgets.py +0 -0
  122. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/model/__init__.py +0 -0
  123. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/model/model.py +0 -0
  124. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab/model/registry.py +0 -0
  125. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab.egg-info/dependency_links.txt +0 -0
  126. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab.egg-info/entry_points.txt +0 -0
  127. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab.egg-info/requires.txt +0 -0
  128. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/src/PyTracerLab.egg-info/top_level.txt +0 -0
  129. {pytracerlab-0.2.2 → pytracerlab-0.2.4}/tests/test_model.py +0 -0
@@ -11,12 +11,12 @@ jobs:
11
11
  - uses: actions/checkout@v4
12
12
  - uses: actions/setup-python@v5
13
13
  with:
14
- python-version: '3.11'
14
+ python-version: '3.14'
15
15
  - name: Install deps (pkg + dev tools)
16
16
  run: |
17
17
  python -m pip install -U pip
18
18
  pip install -e .[dev]
19
19
  - name: Run pre-commit
20
- run: pre-commit run --all-files
20
+ run: pre-commit run --all-files --show-diff-on-failure
21
21
  - name: Run tests
22
22
  run: pytest -q
@@ -2,12 +2,20 @@ name: Docs
2
2
  on:
3
3
  push:
4
4
  branches: [ main ]
5
+ workflow_dispatch:
6
+
7
+ permissions:
8
+ contents: read
9
+ pages: write
10
+ id-token: write
11
+
12
+ concurrency:
13
+ group: pages
14
+ cancel-in-progress: false
5
15
 
6
16
  jobs:
7
- deploy:
17
+ build:
8
18
  runs-on: ubuntu-latest
9
- permissions:
10
- contents: write
11
19
  steps:
12
20
  - uses: actions/checkout@v4
13
21
 
@@ -15,6 +23,9 @@ jobs:
15
23
  with:
16
24
  python-version: "3.11"
17
25
 
26
+ - name: Setup Pages
27
+ uses: actions/configure-pages@v5
28
+
18
29
  - name: Install doc deps
19
30
  run: |
20
31
  python -m pip install -U pip
@@ -31,8 +42,18 @@ jobs:
31
42
  run: |
32
43
  sphinx-build -b html -W -E docs docs/_build/html
33
44
 
34
- - name: Publish to gh-pages
35
- uses: peaceiris/actions-gh-pages@v3
45
+ - name: Upload artifact
46
+ uses: actions/upload-pages-artifact@v3
36
47
  with:
37
- github_token: ${{ secrets.GITHUB_TOKEN }}
38
- publish_dir: docs/_build/html
48
+ path: docs/_build/html
49
+
50
+ deploy:
51
+ environment:
52
+ name: github-pages
53
+ url: ${{ steps.deployment.outputs.page_url }}
54
+ runs-on: ubuntu-latest
55
+ needs: build
56
+ steps:
57
+ - name: Deploy to GitHub Pages
58
+ id: deployment
59
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,18 @@
1
+ repos:
2
+ - repo: https://github.com/psf/black
3
+ rev: 25.11.0
4
+ hooks:
5
+ - id: black
6
+
7
+ - repo: https://github.com/astral-sh/ruff-pre-commit
8
+ rev: v0.15.5
9
+ hooks:
10
+ - id: ruff
11
+ args: [--fix]
12
+ types: [python]
13
+
14
+ - repo: https://github.com/pre-commit/pre-commit-hooks
15
+ rev: v6.0.0
16
+ hooks:
17
+ - id: end-of-file-fixer
18
+ - id: trailing-whitespace
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyTracerLab
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Lumped parameter groundwater age simulations with a simple user interface - in Python
5
5
  Author: Max G. Rudolph
6
6
  License: MIT
@@ -31,6 +31,13 @@ autodoc_mock_imports = ["PyQt5", "numpy", "scipy", "matplotlib"]
31
31
 
32
32
  autosummary_generate = True
33
33
  autodoc_default_options = {"members": True, "undoc-members": False, "show-inheritance": False}
34
+ # Use fully qualified paths for type-hint cross references to avoid
35
+ # ambiguous short names like "Model" and "Unit".
36
+ autodoc_typehints_format = "fully-qualified"
37
+ autodoc_type_aliases = {
38
+ "Model": "PyTracerLab.model.model.Model",
39
+ "Unit": "PyTracerLab.model.units.Unit",
40
+ }
34
41
 
35
42
  napoleon_google_docstring = False # True if using Google style
36
43
  napoleon_numpy_docstring = True # True if using NumPy style
@@ -83,6 +90,25 @@ autosummary_imported_members = False
83
90
  # Disambiguate short type names in NumPy-style docstrings
84
91
  napoleon_type_aliases = {
85
92
  "Unit": "PyTracerLab.model.units.Unit",
86
- "Model": "PyTracerLab.model.Model", # prefer public alias to avoid ambiguity
93
+ "Model": "PyTracerLab.model.model.Model",
87
94
  "Solver": "PyTracerLab.model.solver.Solver",
88
95
  }
96
+
97
+ # Skip package-level re-exports in ``PyTracerLab.model`` to avoid duplicate
98
+ # Python domain targets (e.g., both ``PyTracerLab.model.Model`` and
99
+ # ``PyTracerLab.model.model.Model``).
100
+ _MODEL_PACKAGE_REEXPORTS = {"Model", "Unit", "EPMUnit", "EMUnit", "PMUnit", "DMUnit"}
101
+
102
+
103
+ def _skip_model_reexports(app, what, name, obj, skip, options):
104
+ env = getattr(app, "env", None)
105
+ temp_data = getattr(env, "temp_data", {}) if env is not None else {}
106
+ current_module = temp_data.get("autodoc:module")
107
+ if what == "module" and current_module == "PyTracerLab.model":
108
+ if name in _MODEL_PACKAGE_REEXPORTS:
109
+ return True
110
+ return None
111
+
112
+
113
+ def setup(app):
114
+ app.connect("autodoc-skip-member", _skip_model_reexports)