GEOPY-2384: merge geoapps 0.12.0 to develop branch#732
Open
sebhmg wants to merge 37 commits into
Open
Conversation
sebhmg
commented
Nov 26, 2025
sebhmg
left a comment
Contributor
Author
There was a problem hiding this comment.
need to fix dependency declaration for new indirect dependencies
|
|
||
| simpeg-archive = {version = ">=0.11.0.1, <0.11.0.2", source = "pypi", allow-prereleases = true} | ||
| #simpeg-archive = {git = "https://github.com/MiraGeoscience/simpeg.git", rev = "feature/simpeg_archive"} | ||
|
|
Contributor
Author
# Conflicts: # geoapps/block_model_creation/driver.py # geoapps/block_model_creation/params.py # geoapps/inversion/potential_fields/application.py # geoapps/utils/write_default_uijson.py # tests/data_transfer_test.py # tests/write_default_uijson_test.py
There was a problem hiding this comment.
Pull request overview
This PR merges geoapps 0.12.0 into develop, aligning the codebase with updated dependency stacks (notably SimPEG drivers “Options” APIs), updated UI/app wiring, and a Python version bump across packaging, CI, and environment lockfiles.
Changes:
- Bump supported Python versions and CI matrix (docs/scripts/lockfiles updated accordingly).
- Refactor multiple apps/tests to use new
simpeg_drivers.*.options/*.build(...).flatten()patterns. - Replace/remove legacy drivers/params and some test/util scripts as part of the merge.
Reviewed changes
Copilot reviewed 54 out of 58 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/write_default_uijson_test.py | Removed test for default ui.json writer. |
| tests/run_tests/apps_run_test.py | Updated app run tests for new parameter structures/names. |
| tests/run_tests/apps_inversion_test.py | Updated inversion tests to new Options API and initializer usage. |
| tests/data_transfer_test.py | Removed data transfer/block model driver unit tests. |
| README.rst | Updated stated Python version (3.10 → 3.12). |
| README-dev.rst | Updated dev Python versions and dev workflow commands/docs. |
| pyproject.toml | Major dependency refresh; updated ruff target version; updated git dependencies. |
| package.rst | Updated stated minimum Python version (3.10+ → 3.12+). |
| install.bat | Updated default Python version used by installer (3.10 → 3.12). |
| geoapps/utils/write_default_uijson.py | Removed utility for writing default ui.json files. |
| geoapps/iso_surfaces/application.py | Updated surface-apps driver import/name. |
| geoapps/inversion/potential_fields/magnetic_vector/application.py | Migrated to new simpeg_drivers magnetic vector Options classes and base initializer handling. |
| geoapps/inversion/potential_fields/magnetic_scalar/application.py | Migrated to new simpeg_drivers magnetic scalar Options classes and base initializer handling. |
| geoapps/inversion/potential_fields/gravity/notebook.ipynb | Updated notebook LFS pointer. |
| geoapps/inversion/potential_fields/gravity/application.py | Migrated to new simpeg_drivers gravity Options classes and base initializer handling. |
| geoapps/inversion/potential_fields/init.py | Removed flake8: noqa marker. |
| geoapps/inversion/electromagnetics/notebook.ipynb | Updated notebook LFS pointer. |
| geoapps/inversion/electromagnetics/driver.py | Modified driver module main/entrypoint section. |
| geoapps/inversion/electromagnetics/application.py | Adjusted preprocessing integration to pass entities vs uuids. |
| geoapps/inversion/electricals/application.py | Migrated to DC/IP 3D Options classes; refactored initializer handling and params flattening. |
| geoapps/inversion/components/preprocessing.py | Updated active channel detection and return types (entities vs uuids). |
| geoapps/inversion/base_inversion_application.py | Refactored base inversion app to Options API + forward/inversion split for write-out. |
| geoapps/inversion/init.py | Removed old exported DRIVER_MAP / legacy imports. |
| geoapps/edge_detection/application.py | Updated curve-apps import path (params → options). |
| geoapps/contours/application.py | Updated curve-apps import path (params → options). |
| geoapps/block_model_creation/params.py | Removed legacy params class. |
| geoapps/block_model_creation/driver.py | Removed legacy driver implementation. |
| geoapps/block_model_creation/constants.py | Renamed expansion parameter key (expansion_fact → expansion_factor) in defaults/ui.json. |
| geoapps/block_model_creation/application.py | Switched to grid-apps driver/options for block model creation. |
| geoapps/base/dash_application.py | Migrated base dash app from BaseParams to Options; updated param flattening logic. |
| geoapps/base/application.py | Migrated base app params typing to Options/BaseInversionOptions. |
| environments/py-3.13-win-64.conda.lock.yml | Added new Python 3.13 Windows lockfile. |
| environments/py-3.13-win-64-dev.conda.lock.yml | Added new Python 3.13 Windows dev lockfile. |
| environments/py-3.13-linux-64.conda.lock.yml | Added new Python 3.13 Linux lockfile. |
| environments/py-3.13-linux-64-dev.conda.lock.yml | Added new Python 3.13 Linux dev lockfile. |
| environments/py-3.11-win-64.conda.lock.yml | Removed old Python 3.11 Windows lockfile. |
| environments/py-3.10-win-64.conda.lock.yml | Removed old Python 3.10 Windows lockfile. |
| environments/py-3.10-win-64-dev.conda.lock.yml | Removed old Python 3.10 Windows dev lockfile. |
| environments/env-python-3.13.yml | Updated env template to Python 3.13. |
| environments/env-python-3.11.yml | Removed Python 3.11 env template. |
| docs/environment.yml | Updated docs env Python version (3.10 → 3.12). |
| docs/content/installation.rst | Updated installation wording for Python 3.12. |
| deps-lock-config.yaml | Updated deps-lock Python versions (3.12/3.13). |
| .github/workflows/python_analysis.yml | Updated CI python versions and codecov reference version. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
1092
to
1095
| if __name__ == "__main__": | ||
| input_file = sys.argv[1] | ||
| # input_file = sys.argv[1] | ||
| input_file = r"C:\Users\dominiquef\Desktop\Tests\Temp\EM1DInversion_1756331920.json" | ||
| inversion(input_file) |
Comment on lines
+45
to
+49
| def __init__(self, ui_json=None, geoh5=str | Path | None | Workspace, **kwargs): | ||
| if ui_json is not None and Path(ui_json.path).exists(): | ||
| self.params = self._param_class(ui_json) | ||
| self.params = self._param_class.build(ui_json) | ||
| else: | ||
| app_initializer.update(kwargs) | ||
| try: | ||
| self.params = self._param_class(**app_initializer) | ||
|
|
||
| except AssociationValidationError: | ||
| for key, value in app_initializer.items(): | ||
| if isinstance(value, uuid.UUID): | ||
| app_initializer[key] = None | ||
|
|
||
| self.params = self._param_class(**app_initializer) | ||
| extras = { | ||
| key: value | ||
| for key, value in app_initializer.items() | ||
| if key not in self.params.param_names | ||
| if isinstance(geoh5, str | Path | None): |
Comment on lines
+120
to
+126
| initializer = self._app_initializer.copy() | ||
| initializer.update(kwargs) | ||
|
|
||
| if isinstance(geoh5, str | Path | None): | ||
| geoh5 = Workspace(geoh5) | ||
|
|
||
| initializer["geoh5"] = geoh5 |
Comment on lines
27
to
33
| @@ -28,7 +28,7 @@ | |||
| "horizontal_padding": None, | |||
| "bottom_padding": None, | |||
| "depth_core": None, | |||
| "expansion_fact": None, | |||
| "expansion_factor": None, | |||
| "new_grid": None, | |||
| "generate_sweep": False, | |||
Comment on lines
52
to
+55
| [tool.poetry.dependencies] | ||
| python = ">=3.10, <3.13" | ||
|
|
||
| fiona = "~1.9.2" | ||
| gdal = "^3.6.3" | ||
| matplotlib = "~3.8.4" # also in simpeg and geoana | ||
|
|
||
| dask = {version = "2025.3.*", extras = ["distributed"]} # also in simpeg[dask] | ||
| discretize = "0.11.*" # also in simpeg, octree-creation-app | ||
| numpy = "~1.26.0" # also in geoh5py, simpeg | ||
| scipy = "~1.14.0" | ||
|
|
||
| ## dependencies for UI | ||
| #--------------------- | ||
| dash = "^2.12" | ||
| dash-daq = "0.5.*" | ||
| flask = "~3.0.3" | ||
| ipyfilechooser = "0.6.*" | ||
| ipywidgets = "^7.8.0" | ||
| dask = "~2025.3.0" # also in simpeg[dask] | ||
| discretize = "~0.12.0" # also in simpeg, grid-apps | ||
| distributed = "~2025.3.0" # for dask[distributed] |
Comment on lines
289
to
293
| @params.setter | ||
| def params(self, params: BaseParams): | ||
| assert isinstance(params, BaseParams), ( | ||
| f"Input parameters must be an instance of {BaseParams}" | ||
| def params(self, params: Options): | ||
| assert isinstance(params, Options | Options), ( | ||
| f"Input parameters must be an instance of {Options} or {Options}." | ||
| ) |
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

GEOPY-2384 - merge geoapps 0.12.0 to develop branch