Skip to content

GEOPY-2384: merge geoapps 0.12.0 to develop branch#732

Open
sebhmg wants to merge 37 commits into
developfrom
GEOPY-2384
Open

GEOPY-2384: merge geoapps 0.12.0 to develop branch#732
sebhmg wants to merge 37 commits into
developfrom
GEOPY-2384

Conversation

@sebhmg

@sebhmg sebhmg commented Aug 14, 2025

Copy link
Copy Markdown
Contributor

GEOPY-2384 - merge geoapps 0.12.0 to develop branch

@sebhmg sebhmg requested review from Copilot and domfournier and removed request for Copilot August 14, 2025 02:41
@github-actions github-actions Bot changed the title Geopy 2384 GEOPY-2384: merge geoapps 0.12.0 to develop branch Aug 14, 2025
Comment thread .github/workflows/issue_to_jira.yml Fixed
Comment thread .github/workflows/pr_add_jira_summary.yml Fixed
Comment thread .github/workflows/python_analysis.yml Fixed
Comment thread .github/workflows/python_analysis.yml Fixed
@sebhmg sebhmg changed the base branch from main to develop August 14, 2025 14:55

@sebhmg sebhmg left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

need to fix dependency declaration for new indirect dependencies

Comment thread pyproject.toml

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"}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: must force some indirect dependencies to conda, so that they are not locked on their pypi version

Image

sebhmg and others added 2 commits February 9, 2026 21:05
# 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
Copilot AI review requested due to automatic review settings June 15, 2026 17:08

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 (paramsoptions).
geoapps/contours/application.py Updated curve-apps import path (paramsoptions).
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_factexpansion_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 thread pyproject.toml
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}."
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants