From 2ddf94a18474c8b628b48f975edecc67555e8271 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Nov 2024 17:51:05 +0000 Subject: [PATCH 01/45] CI(deps): Update codecov/codecov-action action to v5 (#4704) --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 3fea65773ce..449c4aff0f9 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -115,7 +115,7 @@ jobs: coverage html - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0 + uses: codecov/codecov-action@5c47607acb93fed5485fdbf7232e8a31425f672a # v5.0.2 with: verbose: true flags: pytest-python-${{ matrix.python-version }} From 6731a3530dacf82c7a092726100e4cbf33280919 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Nov 2024 20:34:30 +0000 Subject: [PATCH 02/45] CI(deps): Update msys2/setup-msys2 action to v2.25.0 (#4711) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/osgeo4w.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/osgeo4w.yml b/.github/workflows/osgeo4w.yml index 30add8dde09..4a860f430f5 100644 --- a/.github/workflows/osgeo4w.yml +++ b/.github/workflows/osgeo4w.yml @@ -32,7 +32,7 @@ jobs: git config --global core.autocrlf false git config --global core.eol lf - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: msys2/setup-msys2@ddf331adaebd714795f1042345e6ca57bd66cea8 # v2.24.1 + - uses: msys2/setup-msys2@c52d1fa9c7492275e60fe763540fb601f5f232a1 # v2.25.0 with: path-type: inherit location: D:\ From d5584063f58d637f82b8781b72c4f687287aa557 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Nov 2024 21:31:54 +0000 Subject: [PATCH 03/45] CI(deps): Update ruff to v0.7.4 (#4705) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CI(deps): Update ruff to v0.7.4 * style: Solve root-logger-call (LOG015) Ruff rule: https://docs.astral.sh/ruff/rules/root-logger-call/ This rule is newly detected by ruff * style: Trim trailing whitespace for pre-commit --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- .github/workflows/python-code-quality.yml | 2 +- .pre-commit-config.yaml | 2 +- python/grass/pygrass/rpc/base.py | 19 +++++--- .../grass/temporal/c_libraries_interface.py | 48 ++++++++++--------- vector/v.rectify/v.rectify.html | 8 ++-- 5 files changed, 44 insertions(+), 35 deletions(-) diff --git a/.github/workflows/python-code-quality.yml b/.github/workflows/python-code-quality.yml index 49f4c1aae4a..63bfd709bcf 100644 --- a/.github/workflows/python-code-quality.yml +++ b/.github/workflows/python-code-quality.yml @@ -36,7 +36,7 @@ jobs: # renovate: datasource=pypi depName=bandit BANDIT_VERSION: "1.7.10" # renovate: datasource=pypi depName=ruff - RUFF_VERSION: "0.7.3" + RUFF_VERSION: "0.7.4" runs-on: ${{ matrix.os }} permissions: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 712342dc83a..449a9a61f04 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -37,7 +37,7 @@ repos: ) - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.7.3 + rev: v0.7.4 hooks: # Run the linter. - id: ruff diff --git a/python/grass/pygrass/rpc/base.py b/python/grass/pygrass/rpc/base.py index c436300c170..e12bea9f985 100644 --- a/python/grass/pygrass/rpc/base.py +++ b/python/grass/pygrass/rpc/base.py @@ -25,6 +25,10 @@ from multiprocessing.connection import Connection from multiprocessing.synchronize import _LockLike + +logger: logging.Logger = logging.getLogger(__name__) + + ############################################################################### @@ -134,7 +138,7 @@ def thread_checker(self): def start_server(self): """This function must be re-implemented in the subclasses""" - logging.debug("Start the libgis server") + logger.debug("Start the libgis server") self.client_conn, self.server_conn = Pipe(True) self.lock = Lock() @@ -147,7 +151,7 @@ def check_server(self): def _check_restart_server(self, caller="main thread") -> None: """Restart the server if it was terminated""" - logging.debug("Check libgis server restart") + logger.debug("Check libgis server restart") with self.threadLock: if self.server is not None and self.server.is_alive() is True: @@ -159,9 +163,9 @@ def _check_restart_server(self, caller="main thread") -> None: self.start_server() if self.stopped is not True: - logging.warning( - "Needed to restart the libgis server, caller: {caller}", - caller=caller, + logger.warning( + "Needed to restart the libgis server, caller: %(caller)s", + {"caller": caller}, ) self.stopped = False @@ -169,7 +173,8 @@ def _check_restart_server(self, caller="main thread") -> None: def safe_receive(self, message): """Receive the data and throw a FatalError exception in case the server process was killed and the pipe was closed by the checker thread""" - logging.debug("Receive message: {message}") + if logger.isEnabledFor(logging.DEBUG): + logger.debug("Receive message: %s", message) try: ret = self.client_conn.recv() @@ -186,7 +191,7 @@ def stop(self): This method should be called at exit using the package atexit """ - logging.debug("Stop libgis server") + logger.debug("Stop libgis server") self.stop_checker_thread() if self.server is not None and self.server.is_alive(): diff --git a/python/grass/temporal/c_libraries_interface.py b/python/grass/temporal/c_libraries_interface.py index 9283baaba93..5ac75f6b139 100644 --- a/python/grass/temporal/c_libraries_interface.py +++ b/python/grass/temporal/c_libraries_interface.py @@ -36,6 +36,9 @@ from multiprocessing.connection import Connection from multiprocessing.synchronize import _LockLike + +logger = logging.getLogger(__name__) + ############################################################################### @@ -472,8 +475,9 @@ def _write_timestamp(lock: _LockLike, conn: Connection, data): check = libgis.G_scan_timestamp(byref(ts), timestring) if check != 1: - logging.error( - "Unable to convert the timestamp: {timestring}", timestring=timestring + logger.error( + "Unable to convert the timestamp: %(timestring)s", + {"timestring": timestring}, ) return -2 @@ -554,9 +558,9 @@ def _read_semantic_label(lock: _LockLike, conn: Connection, data): if ret: semantic_label = decode(ret) else: - logging.error( - "Unable to read semantic label. Unsupported map type {maptype}", - maptype=maptype, + logger.error( + "Unable to read semantic label. Unsupported map type %(maptype)s", + {"maptype": maptype}, ) return -1 finally: @@ -591,9 +595,9 @@ def _write_semantic_label(lock: _LockLike, conn: Connection, data): raise ValueError(_("Invalid semantic label")) libraster.Rast_write_semantic_label(name, semantic_label) else: - logging.error( - "Unable to write semantic label. Unsupported map type {maptype}", - maptype=maptype, + logger.error( + "Unable to write semantic label. Unsupported map type %(maptype)s", + {"maptype": maptype}, ) return -2 finally: @@ -625,9 +629,9 @@ def _remove_semantic_label(lock: _LockLike, conn: Connection, data): if maptype == RPCDefs.TYPE_RASTER: check = libgis.G_remove_misc("cell_misc", "semantic_label", name) else: - logging.error( - "Unable to remove semantic label. Unsupported map type {maptype}", - maptype=maptype, + logger.error( + "Unable to remove semantic label. Unsupported map type %(maptype)s", + {"maptype": maptype}, ) return -2 finally: @@ -743,11 +747,11 @@ def _read_raster_info(name, mapset): libraster.Rast_init_fp_range(byref(range)) ret = libraster.Rast_read_fp_range(name, mapset, byref(range)) if ret < 0: - logging.warning(_("Unable to read range file")) + logger.warning(_("Unable to read range file")) kvp["min"] = None kvp["max"] = None elif ret == 2: - logging.info(_("Raster range file is empty")) + logger.info(_("Raster range file is empty")) kvp["min"] = None kvp["max"] = None else: @@ -761,11 +765,11 @@ def _read_raster_info(name, mapset): libraster.Rast_init_range(byref(range)) ret = libraster.Rast_read_range(name, mapset, byref(range)) if ret < 0: - logging.warning(_("Unable to read range file")) + logger.warning(_("Unable to read range file")) kvp["min"] = None kvp["max"] = None elif ret == 2: - logging.info(_("Raster range file is empty")) + logger.info(_("Raster range file is empty")) kvp["min"] = None kvp["max"] = None else: @@ -831,7 +835,7 @@ def _read_raster3d_info(name, mapset): ) if not g3map: - logging.error(_("Unable to open 3D raster map <%s>"), (name)) + logger.error(_("Unable to open 3D raster map <%s>"), name) return None maptype = libraster3d.Rast3d_file_type_map(g3map) @@ -846,7 +850,7 @@ def _read_raster3d_info(name, mapset): max = libgis.DCELL() ret = libraster3d.Rast3d_range_load(g3map) if not ret: - logging.error(_("Unable to load range of 3D raster map <%s>"), (name)) + logger.error(_("Unable to load range of 3D raster map <%s>"), name) return None libraster3d.Rast3d_range_min_max(g3map, byref(min), byref(max)) @@ -860,7 +864,7 @@ def _read_raster3d_info(name, mapset): kvp["max"] = float(max.value) if not libraster3d.Rast3d_close(g3map): - logging.error(_("Unable to close 3D raster map <%s>"), (name)) + logger.error(_("Unable to close 3D raster map <%s>"), name) return None return kvp @@ -902,9 +906,9 @@ def _read_vector_info(name, mapset): libvector.Vect_set_open_level(1) # no topology with_topo = False if libvector.Vect_open_old2(byref(Map), name, mapset, "1") < 1: - logging.error( + logger.error( _("Unable to open vector map <%s>"), - (libvector.Vect_get_full_name(byref(Map))), + libvector.Vect_get_full_name(byref(Map)), ) return None @@ -1026,7 +1030,7 @@ def _read_raster_history(name, mapset): hist = libraster.History() ret = libraster.Rast_read_history(name, mapset, byref(hist)) if ret < 0: - logging.warning(_("Unable to read history file")) + logger.warning(_("Unable to read history file")) return None kvp["creation_time"] = decode( libraster.Rast_get_history(byref(hist), libraster.HIST_MAPID) @@ -1063,7 +1067,7 @@ def _read_raster3d_history(name, mapset): hist = libraster.History() ret = libraster3d.Rast3d_read_history(name, mapset, byref(hist)) if ret < 0: - logging.warning(_("Unable to read history file")) + logger.warning(_("Unable to read history file")) return None kvp["creation_time"] = decode( libraster.Rast_get_history(byref(hist), libraster3d.HIST_MAPID) diff --git a/vector/v.rectify/v.rectify.html b/vector/v.rectify/v.rectify.html index a90eefef229..5f6ac718fd7 100644 --- a/vector/v.rectify/v.rectify.html +++ b/vector/v.rectify/v.rectify.html @@ -46,11 +46,11 @@

Coordinate transformation and RMSE

The desired order of transformation (1, 2, or 3) is selected with the order option. -If the -r flag is given, v.rectify will calculate the +If the -r flag is given, v.rectify will calculate the Root Mean Square Error (RMSE) and print out statistics in tabular format. -The last row gives a summary with the first column holding the number of -active points, followed by average deviations for each dimension and both -forward and backward transformation and finally forward and backward +The last row gives a summary with the first column holding the number of +active points, followed by average deviations for each dimension and both +forward and backward transformation and finally forward and backward overall RMSE.

2D linear affine transformation (1st order transformation)

From 602118adcc4baf69f6441f964f68fd3f34ec3874 Mon Sep 17 00:00:00 2001 From: Arohan Ajit Date: Sat, 16 Nov 2024 17:28:56 -0500 Subject: [PATCH 04/45] init: Fix F401 Linter Warnings by Replacing Wildcard Imports with Explicit Imports in __init__.py (#4647) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixed F401 in app * experimental update * update * fixed * removed comment * removed duplicates * added Popen * fix setup * fixed * Remove fixed F401 and F403 from .flake8 exclusions --------- Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- .flake8 | 6 +- python/grass/app/__init__.py | 18 ++- python/grass/experimental/__init__.py | 11 +- python/grass/script/__init__.py | 211 +++++++++++++++++++++++++- python/grass/temporal/stds_import.py | 2 +- 5 files changed, 232 insertions(+), 16 deletions(-) diff --git a/.flake8 b/.flake8 index fc8dd9cb65e..0ea1b48ae68 100644 --- a/.flake8 +++ b/.flake8 @@ -18,7 +18,6 @@ per-file-ignores = # F821 undefined name 'unicode' # F841 local variable assigned to but never used # E741 ambiguous variable name 'l' - __init__.py: F403 man/build_html.py: E501 man/build_md.py: E501 doc/python/m.distance.py: E501 @@ -60,7 +59,6 @@ per-file-ignores = python/grass/pygrass/raster/__init__.py: E402 python/grass/pygrass/vector/__init__.py: E402 python/grass/pygrass/raster/category.py: E721 - python/grass/pygrass/rpc/__init__.py: F403 python/grass/pygrass/utils.py: E402 python/grass/temporal/abstract_space_time_dataset.py: E722 python/grass/temporal/c_libraries_interface.py: E722 @@ -78,9 +76,7 @@ per-file-ignores = python/grass/imaging/images2gif.py: E226 # Unused imports in init files # F403 star import used; unable to detect undefined names - python/grass/*/__init__.py: F401, F403 - python/grass/*/*/__init__.py: F403 - python/grass/*/*/*/__init__.py: F403 + python/grass/temporal/__init__.py: F401, F403 # E402 module level import not at top of file scripts/r.semantic.label/r.semantic.label.py: E501 scripts/g.extension/g.extension.py: E501 diff --git a/python/grass/app/__init__.py b/python/grass/app/__init__.py index df22d8bbb44..b7ff0ce08c0 100644 --- a/python/grass/app/__init__.py +++ b/python/grass/app/__init__.py @@ -1 +1,17 @@ -from .data import * +from .data import ( + get_possible_database_path, + create_database_directory, + create_startup_location_in_grassdb, + ensure_default_data_hierarchy, + MapsetLockingException, + lock_mapset, +) + +__all__ = [ + "MapsetLockingException", + "create_database_directory", + "create_startup_location_in_grassdb", + "ensure_default_data_hierarchy", + "get_possible_database_path", + "lock_mapset", +] diff --git a/python/grass/experimental/__init__.py b/python/grass/experimental/__init__.py index 1253d09df0a..8ccb44413bb 100644 --- a/python/grass/experimental/__init__.py +++ b/python/grass/experimental/__init__.py @@ -1,4 +1,11 @@ """Experimental code, all can change""" -from .create import * -from .mapset import * +from .create import require_create_ensure_mapset, create_temporary_mapset +from .mapset import MapsetSession, TemporaryMapsetSession + +__all__ = [ + "MapsetSession", + "TemporaryMapsetSession", + "create_temporary_mapset", + "require_create_ensure_mapset", +] diff --git a/python/grass/script/__init__.py b/python/grass/script/__init__.py index ea82c2fe451..e7ec1d99e2b 100644 --- a/python/grass/script/__init__.py +++ b/python/grass/script/__init__.py @@ -1,10 +1,207 @@ """Python interface to launch GRASS GIS modules in scripts """ -from .core import * -from .db import * -from .raster import * -from .raster3d import * -from .vector import * -from .utils import * -from . import setup # noqa: F401 +from . import setup +from .core import ( + PIPE, + Popen, + call, + compare_key_value_text_files, + create_environment, + create_location, + create_project, + debug, + debug_level, + del_temp_region, + error, + exec_command, + fatal, + feed_command, + find_file, + find_program, + get_capture_stderr, + get_commands, + get_raise_on_error, + get_real_command, + gisenv, + handle_errors, + info, + legal_name, + list_grouped, + list_pairs, + list_strings, + locn_is_latlong, + make_command, + mapsets, + message, + overwrite, + parse_color, + parse_command, + parser, + percent, + pipe_command, + read_command, + region, + region_env, + run_command, + sanitize_mapset_environment, + set_capture_stderr, + set_raise_on_error, + start_command, + tempdir, + tempfile, + tempname, + use_temp_region, + verbose, + verbosity, + version, + warning, + write_command, +) +from .db import ( + db_begin_transaction, + db_commit_transaction, + db_connection, + db_describe, + db_select, + db_table_exist, + db_table_in_vector, +) +from .raster import mapcalc, mapcalc_start, raster_history, raster_info, raster_what +from .raster3d import mapcalc3d, raster3d_info +from .utils import ( + KeyValue, + append_node_pid, + append_random, + append_uuid, + basename, + clock, + decode, + diff_files, + encode, + float_or_dms, + get_lib_path, + get_num_suffix, + legalize_vector_name, + natural_sort, + naturally_sorted, + parse_key_val, + separator, + set_path, + split, + text_to_string, + try_remove, + try_rmdir, +) +from .vector import ( + vector_columns, + vector_db, + vector_db_select, + vector_history, + vector_info, + vector_info_topo, + vector_layer_db, + vector_what, +) + +__all__ = [ + "PIPE", + "KeyValue", + "Popen", + "append_node_pid", + "append_random", + "append_uuid", + "basename", + "call", + "clock", + "compare_key_value_text_files", + "create_environment", + "create_location", + "create_project", + "db_begin_transaction", + "db_commit_transaction", + "db_connection", + "db_describe", + "db_select", + "db_table_exist", + "db_table_in_vector", + "debug", + "debug_level", + "decode", + "del_temp_region", + "diff_files", + "encode", + "error", + "exec_command", + "fatal", + "feed_command", + "find_file", + "find_program", + "float_or_dms", + "get_capture_stderr", + "get_commands", + "get_lib_path", + "get_num_suffix", + "get_raise_on_error", + "get_real_command", + "gisenv", + "handle_errors", + "info", + "legal_name", + "legalize_vector_name", + "list_grouped", + "list_pairs", + "list_strings", + "locn_is_latlong", + "make_command", + "mapcalc", + "mapcalc3d", + "mapcalc_start", + "mapsets", + "message", + "natural_sort", + "naturally_sorted", + "overwrite", + "parse_color", + "parse_command", + "parse_key_val", + "parser", + "percent", + "pipe_command", + "raster3d_info", + "raster_history", + "raster_info", + "raster_what", + "read_command", + "region", + "region_env", + "run_command", + "sanitize_mapset_environment", + "separator", + "set_capture_stderr", + "set_path", + "set_raise_on_error", + "setup", + "split", + "start_command", + "tempdir", + "tempfile", + "tempname", + "text_to_string", + "try_remove", + "try_rmdir", + "use_temp_region", + "vector_columns", + "vector_db", + "vector_db_select", + "vector_history", + "vector_info", + "vector_info_topo", + "vector_layer_db", + "vector_what", + "verbose", + "verbosity", + "version", + "warning", + "write_command", +] diff --git a/python/grass/temporal/stds_import.py b/python/grass/temporal/stds_import.py index 0f9215a84cb..f7030b66d31 100644 --- a/python/grass/temporal/stds_import.py +++ b/python/grass/temporal/stds_import.py @@ -247,7 +247,7 @@ def import_stds( :param memory: Cache size for raster rows, used in r.in.gdal """ - old_state = gs.raise_on_error + old_state = gs.get_raise_on_error() gs.set_raise_on_error(True) # Check if input file and extraction directory exits From f62faf221d4c5bc3b9d70d918bfb75ab6ce8dde9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 12:19:23 -0500 Subject: [PATCH 05/45] CI(deps): Update super-linter/super-linter action to v7.2.0 (#4713) --- .github/workflows/super-linter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml index ab2168cd1a3..b8fe555a343 100644 --- a/.github/workflows/super-linter.yml +++ b/.github/workflows/super-linter.yml @@ -31,7 +31,7 @@ jobs: # list of files that changed across commits fetch-depth: 0 - name: Lint code base - uses: super-linter/super-linter/slim@b92721f792f381cedc002ecdbb9847a15ece5bb8 # v7.1.0 + uses: super-linter/super-linter/slim@e1cb86b6e8d119f789513668b4b30bf17fe1efe4 # v7.2.0 env: DEFAULT_BRANCH: main # To report GitHub Actions status checks From 9313630b839a8692b70e1bb56dafe26fa91b5a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edouard=20Choini=C3=A8re?= <27212526+echoix@users.noreply.github.com> Date: Mon, 18 Nov 2024 17:41:12 -0500 Subject: [PATCH 06/45] wxGUI: Fix various typos in comments, strings, and methods (#4710) * wxGUI: Fix typo in rlisetup's createCircle method * wxGUI: Fix typo in rlisetup's SamplingType for circle * lib: Fix typo for circle in area_poly1.c * Fix typo in "contiguous" * wxGUI: Fix various simple typos in comments * wxGUI: Fix georectifier typo * wxGUI: Fix various simple typos in comments * wxGUI: Fix typo for l_order_list * wxGUI: Fix typo for "execute" * wxGUI: Fix various simple typos * wxGUI: Fix typo for "calculate" * wxGUI: Fix various simple typos * wxGUI: Fix typo for "Unknown" * wxGUI: Fix typo for "SetGCPStatus" * wxGUI: Fix typo for "tuple" * Fix typo for "delete" * wxGUI: Fix various simple typos * wxGUI: Fix typo for "SetPlotsMode" * wxGUI: Fix typo for "computational" * wxGUI: Fix various simple typos --- gui/wxpython/animation/provider.py | 4 +-- gui/wxpython/animation/utils.py | 2 +- gui/wxpython/core/gcmd.py | 2 +- gui/wxpython/core/giface.py | 2 +- gui/wxpython/core/globalvar.py | 2 +- gui/wxpython/core/menutree.py | 2 +- gui/wxpython/core/render.py | 4 +-- gui/wxpython/core/toolboxes.py | 4 +-- .../datacatalog/g.gui.datacatalog.html | 2 +- gui/wxpython/dbmgr/base.py | 12 ++++---- gui/wxpython/dbmgr/manager.py | 2 +- gui/wxpython/dbmgr/sqlbuilder.py | 6 ++-- gui/wxpython/gcp/g.gui.gcp.html | 2 +- gui/wxpython/gcp/g.gui.gcp.py | 2 +- gui/wxpython/gcp/manager.py | 10 +++---- gui/wxpython/gmodeler/dialogs.py | 2 +- gui/wxpython/gmodeler/model.py | 8 +++--- gui/wxpython/gmodeler/toolbars.py | 2 +- gui/wxpython/gui_core/dialogs.py | 2 +- gui/wxpython/gui_core/mapdisp.py | 4 +-- gui/wxpython/gui_core/widgets.py | 2 +- .../image2target/g.gui.image2target.html | 2 +- .../image2target/g.gui.image2target.py | 2 +- gui/wxpython/image2target/ii2t_manager.py | 8 +++--- gui/wxpython/iscatt/controllers.py | 2 +- gui/wxpython/iscatt/iscatt_core.py | 4 +-- gui/wxpython/iscatt/toolbars.py | 8 +++--- gui/wxpython/lmgr/frame.py | 2 +- gui/wxpython/location_wizard/wizard.py | 2 +- gui/wxpython/main_window/frame.py | 2 +- gui/wxpython/mapdisp/frame.py | 2 +- gui/wxpython/mapwin/buffered.py | 6 ++-- gui/wxpython/nviz/mapwindow.py | 2 +- gui/wxpython/nviz/preferences.py | 2 +- gui/wxpython/nviz/tools.py | 2 +- gui/wxpython/nviz/wxnviz.py | 2 +- gui/wxpython/photo2image/g.gui.photo2image.py | 2 +- gui/wxpython/photo2image/ip2i_manager.py | 10 +++---- gui/wxpython/psmap/frame.py | 2 +- gui/wxpython/rlisetup/functions.py | 6 ++-- gui/wxpython/rlisetup/sampling_frame.py | 4 +-- gui/wxpython/rlisetup/wizard.py | 14 +++++----- gui/wxpython/timeline/g.gui.timeline.py | 2 +- gui/wxpython/vdigit/dialogs.py | 4 +-- gui/wxpython/vdigit/g.gui.vdigit.py | 2 +- gui/wxpython/vdigit/mapwindow.py | 2 +- gui/wxpython/vdigit/toolbars.py | 4 +-- gui/wxpython/vdigit/wxdigit.py | 2 +- gui/wxpython/vnet/vnet_core.py | 2 +- gui/wxpython/vnet/vnet_data.py | 2 +- gui/wxpython/vnet/widgets.py | 2 +- gui/wxpython/web_services/dialogs.py | 4 +-- gui/wxpython/web_services/widgets.py | 28 +++++++++---------- gui/wxpython/wxplot/base.py | 2 +- gui/wxpython/wxplot/profile.py | 2 +- include/grass/iostream/ami_sort_impl.h | 2 +- lib/cluster/c_exec.c | 2 +- lib/gis/area_poly1.c | 2 +- lib/vector/Vlib/close.c | 2 +- locale/po/grasswxpy_ar.po | 12 ++++---- locale/po/grasswxpy_bn.po | 12 ++++---- locale/po/grasswxpy_cs.po | 12 ++++---- locale/po/grasswxpy_de.po | 12 ++++---- locale/po/grasswxpy_el.po | 12 ++++---- locale/po/grasswxpy_es.po | 17 ++++------- locale/po/grasswxpy_fi.po | 12 ++++---- locale/po/grasswxpy_fr.po | 17 ++++------- locale/po/grasswxpy_hu.po | 12 ++++---- locale/po/grasswxpy_id_ID.po | 12 ++++---- locale/po/grasswxpy_it.po | 12 ++++---- locale/po/grasswxpy_ja.po | 12 ++++---- locale/po/grasswxpy_ko.po | 12 ++++---- locale/po/grasswxpy_lv.po | 12 ++++---- locale/po/grasswxpy_ml.po | 12 ++++---- locale/po/grasswxpy_pl.po | 12 ++++---- locale/po/grasswxpy_pt.po | 12 ++++---- locale/po/grasswxpy_pt_BR.po | 17 ++++------- locale/po/grasswxpy_ro.po | 12 ++++---- locale/po/grasswxpy_ru.po | 16 +++++------ locale/po/grasswxpy_si.po | 12 ++++---- locale/po/grasswxpy_sl.po | 12 ++++---- locale/po/grasswxpy_ta.po | 12 ++++---- locale/po/grasswxpy_th.po | 12 ++++---- locale/po/grasswxpy_tr.po | 12 ++++---- locale/po/grasswxpy_uk.po | 12 ++++---- locale/po/grasswxpy_vi.po | 12 ++++---- locale/po/grasswxpy_zh.po | 17 ++++------- locale/po/grasswxpy_zh_CN.po | 12 ++++---- locale/templates/grasswxpy.pot | 12 ++++---- python/grass/pygrass/modules/grid/grid.py | 2 +- 90 files changed, 298 insertions(+), 318 deletions(-) diff --git a/gui/wxpython/animation/provider.py b/gui/wxpython/animation/provider.py index 43929a1873d..1b07f63841f 100644 --- a/gui/wxpython/animation/provider.py +++ b/gui/wxpython/animation/provider.py @@ -657,7 +657,7 @@ def CompositeProcess( :param tempDir: directory for rendering :param cmdList: list of d.rast/d.vect commands :param region: region as a dict or None - :param opacites: list of opacities + :param opacities: list of opacities :param bgcolor: background color as a tuple of 3 values 0 to 255 :param fileQueue: the inter process communication queue storing the file name of the image @@ -896,7 +896,7 @@ def test(): if os.path.exists(tempDir): shutil.rmtree(tempDir) os.mkdir(tempDir) - # comment this line to keep the directory after prgm ends + # comment this line to keep the directory after program ends # cleanUp = CleanUp(tempDir) # import atexit # atexit.register(cleanUp) diff --git a/gui/wxpython/animation/utils.py b/gui/wxpython/animation/utils.py index 5f69bc40d35..72e817ae962 100644 --- a/gui/wxpython/animation/utils.py +++ b/gui/wxpython/animation/utils.py @@ -15,7 +15,7 @@ This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details. -@author Anna Perasova +@author Anna Petrasova """ import os diff --git a/gui/wxpython/core/gcmd.py b/gui/wxpython/core/gcmd.py index dfd719b2ff0..0c64f0d0973 100644 --- a/gui/wxpython/core/gcmd.py +++ b/gui/wxpython/core/gcmd.py @@ -497,7 +497,7 @@ def __ProcessStdErr(self): def __GetError(self): """Get error message or ''""" if not self.cmdThread.module: - return _("Unable to exectute command: '%s'") % " ".join(self.cmd) + return _("Unable to execute command: '%s'") % " ".join(self.cmd) for type, msg in self.__ProcessStdErr(): if type == "ERROR": diff --git a/gui/wxpython/core/giface.py b/gui/wxpython/core/giface.py index 3a1d8c61612..1b17a3e5932 100644 --- a/gui/wxpython/core/giface.py +++ b/gui/wxpython/core/giface.py @@ -91,7 +91,7 @@ def GetLayersByName(self, name): .. todo:: if common usage is just to check the presence of layer, - intoroduce a new method ContainsLayerByName(name) + introduce a new method ContainsLayerByName(name) """ raise NotImplementedError diff --git a/gui/wxpython/core/globalvar.py b/gui/wxpython/core/globalvar.py index 7624183796c..e0397a2b121 100644 --- a/gui/wxpython/core/globalvar.py +++ b/gui/wxpython/core/globalvar.py @@ -233,7 +233,7 @@ def UpdateGRASSAddOnCommands(eList=None): Debug.msg(1, "Number of GRASS AddOn commands: %d", nCmd) -"""@brief Collected GRASS-relared binaries/scripts""" +"""@brief Collected GRASS-related binaries/scripts""" grassCmd, grassScripts = get_commands() Debug.msg(1, "Number of core GRASS commands: %d", len(grassCmd)) UpdateGRASSAddOnCommands() diff --git a/gui/wxpython/core/menutree.py b/gui/wxpython/core/menutree.py index b8f60e9610a..ef3ebd7b414 100644 --- a/gui/wxpython/core/menutree.py +++ b/gui/wxpython/core/menutree.py @@ -136,7 +136,7 @@ def _createItem(self, item, node): elif item.tag == "menu": self._createMenu(item, node) else: - raise ValueError(_("Unknow tag %s") % item.tag) + raise ValueError(_("Unknown tag %s") % item.tag) def GetModel(self, separators=False): """Returns copy of model with or without separators diff --git a/gui/wxpython/core/render.py b/gui/wxpython/core/render.py index b5fdf34d7dd..93102b0136f 100644 --- a/gui/wxpython/core/render.py +++ b/gui/wxpython/core/render.py @@ -658,7 +658,7 @@ def Render(self, force=False, windres=False): def OnRenderDone(self, env): """Rendering process done - Make image composiotion, emits updateMap event. + Make image composition, emits updateMap event. """ maps = [] masks = [] @@ -1393,7 +1393,7 @@ def AddLayer( def DeleteAllLayers(self, overlay=False): """Delete all layers - :param overlay: True to delete also overlayes + :param overlay: True to also delete overlays """ self.layers = [] if overlay: diff --git a/gui/wxpython/core/toolboxes.py b/gui/wxpython/core/toolboxes.py index 46b886e4996..d3b50cb1ea5 100644 --- a/gui/wxpython/core/toolboxes.py +++ b/gui/wxpython/core/toolboxes.py @@ -308,7 +308,7 @@ def toolboxes2menudata(mainMenu, toolboxes, userToolboxes, wxguiItems, moduleIte userHasToolboxes = False - # in case user has empty toolboxes file (to avoid genereation) + # in case user has empty toolboxes file (to avoid generation) if userToolboxes and userToolboxes.findall(".//toolbox"): _expandUserToolboxesItem(root, userToolboxes) _expandToolboxes(root, userToolboxes) @@ -746,7 +746,7 @@ def _convertTree(root): def _getXMLString(root): """Converts XML tree to string - Since it is usually requier, this function adds a comment (about + Since it is usually required, this function adds a comment (about autogenerated file) to XML file. :return: XML as string diff --git a/gui/wxpython/datacatalog/g.gui.datacatalog.html b/gui/wxpython/datacatalog/g.gui.datacatalog.html index 9a918dd3039..23b450be772 100644 --- a/gui/wxpython/datacatalog/g.gui.datacatalog.html +++ b/gui/wxpython/datacatalog/g.gui.datacatalog.html @@ -33,7 +33,7 @@

NOTES

WARNING

When renaming, copying or deleting maps outside of Data Catalog, you need to reload -the current mapset or entire database, because it is currently not synchronised. +the current mapset or entire database, because it is currently not synchronized.

SEE ALSO

diff --git a/gui/wxpython/dbmgr/base.py b/gui/wxpython/dbmgr/base.py index aeb1a2b3090..20ddbc47f25 100644 --- a/gui/wxpython/dbmgr/base.py +++ b/gui/wxpython/dbmgr/base.py @@ -747,7 +747,7 @@ def __init__( :param item: item from Layer Tree :param log: log window :param statusbar: widget with statusbar - :param kwagrs: other wx.Frame's arguments + :param kwargs: other wx.Frame's arguments """ # stores all data, which are shared by pages @@ -918,7 +918,7 @@ def __init__(self, parent, parentDbMgrBase): self.listOfCommands = [] self.listOfSQLStatements = [] - # initializet pages + # initialize pages self.pages = self.parentDbMgrBase.pages # shared data among pages @@ -1138,7 +1138,7 @@ def __init__(self, parent, parentDbMgrBase, onlyLayer=-1): def AddLayer(self, layer, pos=-1): """Adds tab which represents table and enables browse it - :param layer: vector map layer conntected to table + :param layer: vector map layer connected to table :param pos: position of tab, if -1 it is added to end :return: True if layer was added @@ -4030,7 +4030,7 @@ def Update(self, driver, database, table, column): database=database, ) if not dataStr: - GError(parent=self.parent, message=_("Unable to calculte statistics.")) + GError(parent=self.parent, message=_("Unable to calculate statistics.")) self.Close() return @@ -4039,7 +4039,7 @@ def Update(self, driver, database, table, column): GError( parent=self.parent, message=_( - "Unable to calculte statistics. " + "Unable to calculate statistics. " "Invalid number of lines %d (should be %d)." ) % (len(dataLines), len(stats)), @@ -4066,7 +4066,7 @@ def Update(self, driver, database, table, column): ) if not dataVar: GWarning( - parent=self.parent, message=_("Unable to calculte standard deviation.") + parent=self.parent, message=_("Unable to calculate standard deviation.") ) varSum = 0 for var in decode(dataVar).splitlines(): diff --git a/gui/wxpython/dbmgr/manager.py b/gui/wxpython/dbmgr/manager.py index c3821abb4ef..86c522282fd 100644 --- a/gui/wxpython/dbmgr/manager.py +++ b/gui/wxpython/dbmgr/manager.py @@ -65,7 +65,7 @@ def __init__( :param item: item from Layer Tree :param log: log window :param selection: name of page to be selected - :param kwagrs: other wx.Frame's arguments + :param kwargs: other wx.Frame's arguments """ self.parent = parent try: diff --git a/gui/wxpython/dbmgr/sqlbuilder.py b/gui/wxpython/dbmgr/sqlbuilder.py index 51010e49677..fd9378846d7 100644 --- a/gui/wxpython/dbmgr/sqlbuilder.py +++ b/gui/wxpython/dbmgr/sqlbuilder.py @@ -49,7 +49,7 @@ class SQLBuilder(wx.Frame): - """SQLBuider class + """SQLBuilder class Base class for classes, which builds SQL statements. """ @@ -314,8 +314,8 @@ def _doLayout(self, modeChoices, showDbInfo=False): flag=wx.LEFT | wx.RIGHT | wx.BOTTOM | wx.EXPAND, border=5, ) - # self.pagesizer.Add(self.btn_uniqe,0,wx.ALIGN_LEFT|wx.TOP,border=5) - # self.pagesizer.Add(self.btn_uniqesample,0,wx.ALIGN_LEFT|wx.TOP,border=5) + # self.pagesizer.Add(self.btn_unique,0,wx.ALIGN_LEFT|wx.TOP,border=5) + # self.pagesizer.Add(self.btn_uniquesample,0,wx.ALIGN_LEFT|wx.TOP,border=5) self.pagesizer.Add( self.btn_logicpanel, proportion=0, flag=wx.ALIGN_CENTER_HORIZONTAL ) diff --git a/gui/wxpython/gcp/g.gui.gcp.html b/gui/wxpython/gcp/g.gui.gcp.html index 4585de25674..d7ddfd403e4 100644 --- a/gui/wxpython/gcp/g.gui.gcp.html +++ b/gui/wxpython/gcp/g.gui.gcp.html @@ -50,7 +50,7 @@

Components of the GCP Manager

List of ground control points

The list of Ground Control Points can be sorted by clicking on a column -header. Clicking on a cloumn header will sort the GCPs ascending, a +header. Clicking on a column header will sort the GCPs ascending, a second click on the same column will sort the GCPs descending. Overall RMS error and individual RMS errors of all points are often improved if the GCP with the highest RMS error is adjusted. Individual coordinates diff --git a/gui/wxpython/gcp/g.gui.gcp.py b/gui/wxpython/gcp/g.gui.gcp.py index 12f0a152090..2201b7c2280 100755 --- a/gui/wxpython/gcp/g.gui.gcp.py +++ b/gui/wxpython/gcp/g.gui.gcp.py @@ -29,7 +29,7 @@ # %end """ -Module to run GCP management tool as stadalone application. +Module to run GCP management tool as standalone application. @author Vaclav Petras (standalone module) """ diff --git a/gui/wxpython/gcp/manager.py b/gui/wxpython/gcp/manager.py index 74ede7189e9..fc8fa869781 100644 --- a/gui/wxpython/gcp/manager.py +++ b/gui/wxpython/gcp/manager.py @@ -23,7 +23,7 @@ @author Original author Michael Barton @author Original version improved by Martin Landa -@author Rewritten by Markus Metz redesign georectfier -> GCP Manage +@author Rewritten by Markus Metz redesign georectifier -> GCP Manage @author Support for GraphicsSet added by Stepan Turek (2012) """ @@ -1053,10 +1053,10 @@ def __init__( # register data structures for drawing GCP's # self.pointsToDrawTgt = self.TgtMapWindow.RegisterGraphicsToDraw( - graphicsType="point", setStatusFunc=self.SetGCPSatus + graphicsType="point", setStatusFunc=self.SetGCPStatus ) self.pointsToDrawSrc = self.SrcMapWindow.RegisterGraphicsToDraw( - graphicsType="point", setStatusFunc=self.SetGCPSatus + graphicsType="point", setStatusFunc=self.SetGCPStatus ) # connect to the map windows signals @@ -1410,7 +1410,7 @@ def SetSettings(self): # overwrite result map self.overwrite = UserSettings.Get(group="gcpman", key="map", subkey="overwrite") - def SetGCPSatus(self, item, itemIndex): + def SetGCPStatus(self, item, itemIndex): """Before GCP is drawn, decides it's colour and whether it will be drawn. """ @@ -1663,7 +1663,7 @@ def ReloadGCPs(self, event): targetMapWin.UpdateMap(render=False, renderVector=False) def OnFocus(self, event): - # TODO: it is here just to remove old or obsolete beavior of base class + # TODO: it is here just to remove old or obsolete behavior of base class # gcp/MapPanel? # self.grwiz.SwitchEnv('source') pass diff --git a/gui/wxpython/gmodeler/dialogs.py b/gui/wxpython/gmodeler/dialogs.py index c8dd7509e74..ba966ea6a53 100644 --- a/gui/wxpython/gmodeler/dialogs.py +++ b/gui/wxpython/gmodeler/dialogs.py @@ -11,7 +11,7 @@ - dialogs::ModelLoopDialog - dialogs::ModelConditionDialog - dialogs::ModelListCtrl - - dialogs::ValiableListCtrl + - dialogs::VariableListCtrl - dialogs::ItemListCtrl - dialogs::ItemCheckListCtrl diff --git a/gui/wxpython/gmodeler/model.py b/gui/wxpython/gmodeler/model.py index 15c4eaa8cd4..f321d2a206f 100644 --- a/gui/wxpython/gmodeler/model.py +++ b/gui/wxpython/gmodeler/model.py @@ -161,7 +161,7 @@ def ReorderItems(self, idxList): self.canvas.parent.DefineCondition(mo) def Normalize(self): - # check for inconsistecies + # check for inconsistencies for idx in range(1, len(self.items)): if not self.items[idx].GetBlock() and isinstance( self.items[idx - 1], ModelLoop @@ -525,7 +525,7 @@ def Validate(self): def _substituteFile(self, item, params=None, checkOnly=False): """Substitute variables in command file inputs - :param bool checkOnly: tuble - True to check variable, don't touch files + :param bool checkOnly: True to check variable, don't touch files :return: list of undefined variables """ @@ -770,7 +770,7 @@ def Run(self, log, onDone, parent=None): p["value"] = "" def DeleteIntermediateData(self, log): - """Detele intermediate data""" + """Delete intermediate data""" rast, vect, rast3d, msg = self.GetIntermediateData() if rast: @@ -3736,5 +3736,5 @@ def GetErrors(self): return errList def DeleteIntermediateData(self) -> bool: - """Check if to detele intermediate data""" + """Check if to delete intermediate data""" return bool(self.interData.IsShown() and self.interData.IsChecked()) diff --git a/gui/wxpython/gmodeler/toolbars.py b/gui/wxpython/gmodeler/toolbars.py index ca6a75b4804..4e7acf500b0 100644 --- a/gui/wxpython/gmodeler/toolbars.py +++ b/gui/wxpython/gmodeler/toolbars.py @@ -24,7 +24,7 @@ class ModelerToolbar(BaseToolbar): - """Graphical modeler toolbaro (see gmodeler.py)""" + """Graphical modeler toolbar (see gmodeler.py)""" def __init__(self, parent): BaseToolbar.__init__(self, parent) diff --git a/gui/wxpython/gui_core/dialogs.py b/gui/wxpython/gui_core/dialogs.py index 27ce4523a76..19e430d605e 100644 --- a/gui/wxpython/gui_core/dialogs.py +++ b/gui/wxpython/gui_core/dialogs.py @@ -1467,7 +1467,7 @@ def _addApplyButton(self): """ def _fullyQualifiedNames(self): - """Adds CheckBox which determines is fully qualified names are retuned.""" + """Adds CheckBox which determines if fully qualified names are returned.""" self.fullyQualified = wx.CheckBox( parent=self, id=wx.ID_ANY, label=_("Use fully-qualified map names") ) diff --git a/gui/wxpython/gui_core/mapdisp.py b/gui/wxpython/gui_core/mapdisp.py index ea770defe8e..d72fabe4438 100644 --- a/gui/wxpython/gui_core/mapdisp.py +++ b/gui/wxpython/gui_core/mapdisp.py @@ -580,7 +580,7 @@ class DoubleMapPanel(MapPanelBase): It is expected that derived class will call _bindWindowsActivation() when both map windows will be initialized. - Drived class should have method GetMapToolbar() returns toolbar + Derived classes should have method GetMapToolbar() returns toolbar which has methods SetActiveMap() and Enable(). @note To access maps use getters only @@ -605,7 +605,7 @@ def __init__( r""" \a firstMap is set as active (by assign it to \c self.Map). - Derived class should assging to \c self.MapWindow to make one + Derived class should assigning to \c self.MapWindow to make one map window current by default. :param parent: gui parent diff --git a/gui/wxpython/gui_core/widgets.py b/gui/wxpython/gui_core/widgets.py index b787bf23037..40c9e6c5e19 100644 --- a/gui/wxpython/gui_core/widgets.py +++ b/gui/wxpython/gui_core/widgets.py @@ -1052,7 +1052,7 @@ def __init__(self, num_of_params): super().__init__() def _enableDisableBtn(self, enable): - """Enable/Disable buttomn + """Enable/Disable button :param bool enable: Enable/Disable btn """ diff --git a/gui/wxpython/image2target/g.gui.image2target.html b/gui/wxpython/image2target/g.gui.image2target.html index af1aec5a55d..f24c6fa2a0d 100644 --- a/gui/wxpython/image2target/g.gui.image2target.html +++ b/gui/wxpython/image2target/g.gui.image2target.html @@ -49,7 +49,7 @@

Components of the GCP Manager

List of ground control points

The list of Ground Control Points can be sorted by clicking on a column -header. Clicking on a cloumn header will sort the GCPs ascending, a +header. Clicking on a column header will sort the GCPs ascending, a second click on the same column will sort the GCPs descending. Overall RMS error and individual RMS errors of all points are often improved if the GCP with the highest RMS error is adjusted. Individual coordinates diff --git a/gui/wxpython/image2target/g.gui.image2target.py b/gui/wxpython/image2target/g.gui.image2target.py index e2704dc371b..f7370a71adf 100755 --- a/gui/wxpython/image2target/g.gui.image2target.py +++ b/gui/wxpython/image2target/g.gui.image2target.py @@ -32,7 +32,7 @@ """ -Module to run GCP management tool as stadalone application. +Module to run GCP management tool as standalone application. """ import os diff --git a/gui/wxpython/image2target/ii2t_manager.py b/gui/wxpython/image2target/ii2t_manager.py index 939c2fb0fe8..bfc5bbc3489 100644 --- a/gui/wxpython/image2target/ii2t_manager.py +++ b/gui/wxpython/image2target/ii2t_manager.py @@ -23,7 +23,7 @@ @author Original author Michael Barton @author Original version improved by Martin Landa -@author Rewritten by Markus Metz redesign georectfier -> GCP Manage +@author Rewritten by Markus Metz redesign georectifier -> GCP Manage @author Support for GraphicsSet added by Stepan Turek (2012) @author port i.image.2target (v6) to version 7 in 2017 by Yann """ @@ -1030,10 +1030,10 @@ def __init__( # register data structures for drawing GCP's # self.pointsToDrawTgt = self.TgtMapWindow.RegisterGraphicsToDraw( - graphicsType="point", setStatusFunc=self.SetGCPSatus + graphicsType="point", setStatusFunc=self.SetGCPStatus ) self.pointsToDrawSrc = self.SrcMapWindow.RegisterGraphicsToDraw( - graphicsType="point", setStatusFunc=self.SetGCPSatus + graphicsType="point", setStatusFunc=self.SetGCPStatus ) # connect to the map windows signals @@ -1393,7 +1393,7 @@ def SetSettings(self): self.pointsToDrawSrc.SetPropertyVal("text", textProp) self.pointsToDrawTgt.SetPropertyVal("text", copy(textProp)) - def SetGCPSatus(self, item, itemIndex): + def SetGCPStatus(self, item, itemIndex): """Before GCP is drawn, decides it's colour and whether it will be drawn. """ diff --git a/gui/wxpython/iscatt/controllers.py b/gui/wxpython/iscatt/controllers.py index 06ca5d0b243..6a5bcb6bb9e 100644 --- a/gui/wxpython/iscatt/controllers.py +++ b/gui/wxpython/iscatt/controllers.py @@ -505,7 +505,7 @@ class PlotsRenderingManager: """Manages rendering of scatter plot. .. todo:: - still space for optimalization + still space for optimization """ def __init__(self, scatt_mgr, cats_mgr, core): diff --git a/gui/wxpython/iscatt/iscatt_core.py b/gui/wxpython/iscatt/iscatt_core.py index 52cecbfb381..c23d9ff97f7 100644 --- a/gui/wxpython/iscatt/iscatt_core.py +++ b/gui/wxpython/iscatt/iscatt_core.py @@ -214,7 +214,7 @@ def SetVectMap(self, vectMap): def SyncWithMap(self): # TODO possible optimization - bbox only of vertex and its two - # neighbours + # neighbors region = self.an_data.GetRegion() @@ -237,7 +237,7 @@ def SyncWithMap(self): def EditedFeature(self, new_bboxs, new_areas_cats, old_bboxs, old_areas_cats): # TODO possible optimization - bbox only of vertex and its two - # neighbours + # neighbors bboxs = old_bboxs + new_bboxs areas_cats = old_areas_cats + new_areas_cats diff --git a/gui/wxpython/iscatt/toolbars.py b/gui/wxpython/iscatt/toolbars.py index 7f813723282..9633c147500 100644 --- a/gui/wxpython/iscatt/toolbars.py +++ b/gui/wxpython/iscatt/toolbars.py @@ -95,19 +95,19 @@ def _toolbarData(self): ( ("pan", icons["pan"].label), icons["pan"], - lambda event: self.SetPloltsMode(event, "pan"), + lambda event: self.SetPlotsMode(event, "pan"), wx.ITEM_CHECK, ), ( ("zoom", icons["zoomIn"].label), icons["zoomIn"], - lambda event: self.SetPloltsMode(event, "zoom"), + lambda event: self.SetPlotsMode(event, "zoom"), wx.ITEM_CHECK, ), ( ("zoom_extend", icons["zoomExtent"].label), icons["zoomExtent"], - lambda event: self.SetPloltsMode(event, "zoom_extend"), + lambda event: self.SetPlotsMode(event, "zoom_extend"), wx.ITEM_CHECK, ), (None,), @@ -145,7 +145,7 @@ def _toolbarData(self): def GetToolId(self, toolName): # TODO can be useful in base return vars(self)[toolName] - def SetPloltsMode(self, event, tool_name): + def SetPlotsMode(self, event, tool_name): self.scatt_mgr.modeSet.disconnect(self.ModeSet) if event.IsChecked(): for i_tool_data in self.controller.data: diff --git a/gui/wxpython/lmgr/frame.py b/gui/wxpython/lmgr/frame.py index 9879ce1d937..1b69a517717 100644 --- a/gui/wxpython/lmgr/frame.py +++ b/gui/wxpython/lmgr/frame.py @@ -982,7 +982,7 @@ def RunDisplayCmd(self, command): """Handles display commands. :param command: command in a list - :return int: False if failed, True if succcess + :return int: False if failed, True if success """ if not self.currentPage: self.NewDisplay(show=True) diff --git a/gui/wxpython/location_wizard/wizard.py b/gui/wxpython/location_wizard/wizard.py index 9f3bf14c886..41d309178f8 100644 --- a/gui/wxpython/location_wizard/wizard.py +++ b/gui/wxpython/location_wizard/wizard.py @@ -1357,7 +1357,7 @@ def OnPageChanging(self, event): # FIXME: index number doesn't translate when you've given a valid name # from the other list def OnText(self, event): - """Ellipspoid code changed""" + """Ellipsoid code changed""" self.ellipse = event.GetString() nextButton = wx.FindWindowById(wx.ID_FORWARD) if len(self.ellipse) == 0 or ( diff --git a/gui/wxpython/main_window/frame.py b/gui/wxpython/main_window/frame.py index 3574e7c8951..a4a4dfea8e2 100644 --- a/gui/wxpython/main_window/frame.py +++ b/gui/wxpython/main_window/frame.py @@ -1120,7 +1120,7 @@ def RunDisplayCmd(self, command): """Handles display commands. :param command: command in a list - :return int: False if failed, True if succcess + :return int: False if failed, True if success """ if not self.currentPage: self.NewDisplay(show=True) diff --git a/gui/wxpython/mapdisp/frame.py b/gui/wxpython/mapdisp/frame.py index 3133341a334..a7622616b34 100644 --- a/gui/wxpython/mapdisp/frame.py +++ b/gui/wxpython/mapdisp/frame.py @@ -1500,7 +1500,7 @@ def OnSetWindToRegion(self, event): self.MapWindow.SetRegion(zoomOnly=False) def OnSetExtentToWind(self, event): - """Set compulational region extent interactively""" + """Set computational region extent interactively""" self.MapWindow.SetModeDrawRegion() def OnSaveDisplayRegion(self, event): diff --git a/gui/wxpython/mapwin/buffered.py b/gui/wxpython/mapwin/buffered.py index 16b6b329ef6..e30bf99414c 100644 --- a/gui/wxpython/mapwin/buffered.py +++ b/gui/wxpython/mapwin/buffered.py @@ -2102,7 +2102,7 @@ def DisplayToWind(self): self.UpdateMap(render=False) def SetRegion(self, zoomOnly=True): - """Set display extents/compulational region from named region + """Set display extents/computational region from named region file. :param zoomOnly: zoom to named region only (computational region is not saved) @@ -2110,7 +2110,7 @@ def SetRegion(self, zoomOnly=True): if zoomOnly: label = _("Zoom to saved region extents") else: - label = _("Set compulational region from named region") + label = _("Set computational region from named region") dlg = SavedRegion(parent=self, title=label, loadsave="load") if dlg.ShowModal() == wx.ID_CANCEL or not dlg.GetName(): @@ -2144,7 +2144,7 @@ def SetRegion(self, zoomOnly=True): self.UpdateMap() def SaveRegion(self, display=True): - """Save display extents/compulational region to named region + """Save display extents/computational region to named region file. :param display: True for display extends otherwise computational region diff --git a/gui/wxpython/nviz/mapwindow.py b/gui/wxpython/nviz/mapwindow.py index b6609427895..c459e5f4f89 100644 --- a/gui/wxpython/nviz/mapwindow.py +++ b/gui/wxpython/nviz/mapwindow.py @@ -335,7 +335,7 @@ def ComputeFlyValues(self, mx, my): self.fly["value"][2] = -my * 100.0 * self.fly["interval"] / 1000.0 def ChangeFlySpeed(self, increase): - """Increase/decrease flight spped""" + """Increase/decrease flight speed""" if increase: self.fly["flySpeed"] += self.fly["flySpeedStep"] else: diff --git a/gui/wxpython/nviz/preferences.py b/gui/wxpython/nviz/preferences.py index 9bd4614a670..ebd7e5d66b5 100644 --- a/gui/wxpython/nviz/preferences.py +++ b/gui/wxpython/nviz/preferences.py @@ -258,7 +258,7 @@ def _createFlyPage(self, notebook): notebook.AddPage(page=panel, text=" %s " % _("Fly-through")) pageSizer = wx.BoxSizer(wx.VERTICAL) - # fly throuhg mode + # fly through mode box = StaticBox( parent=panel, id=wx.ID_ANY, label=" %s " % (_("Fly-through mode")) ) diff --git a/gui/wxpython/nviz/tools.py b/gui/wxpython/nviz/tools.py index 77f379ef019..a56a062f6f6 100644 --- a/gui/wxpython/nviz/tools.py +++ b/gui/wxpython/nviz/tools.py @@ -3791,7 +3791,7 @@ def OnSurfaceModeAll(self, event): for name in self.mapWindow.GetLayerNames(type="raster"): data = self._getLayerPropertiesByName(name, mapType="raster") if not data: - continue # shouldy no happen + continue # should not happen data["surface"]["draw"]["all"] = True data["surface"]["draw"]["mode"] = { diff --git a/gui/wxpython/nviz/wxnviz.py b/gui/wxpython/nviz/wxnviz.py index d11e03d290b..06812e81be6 100644 --- a/gui/wxpython/nviz/wxnviz.py +++ b/gui/wxpython/nviz/wxnviz.py @@ -2288,7 +2288,7 @@ def FlyThrough(self, flyInfo, mode, exagInfo): """Fly through the scene :param flyInfo: fly parameters - :param mode: 0 or 1 for different fly behaviour + :param mode: 0 or 1 for different fly behavior :param exagInfo: parameters changing fly speed """ fly = (c_float * 3)() diff --git a/gui/wxpython/photo2image/g.gui.photo2image.py b/gui/wxpython/photo2image/g.gui.photo2image.py index fe153b236cc..443a43f2d81 100755 --- a/gui/wxpython/photo2image/g.gui.photo2image.py +++ b/gui/wxpython/photo2image/g.gui.photo2image.py @@ -67,7 +67,7 @@ # %end """ -Module to run GCP management tool as stadalone application. +Module to run GCP management tool as standalone application. """ import os import grass.script as gs diff --git a/gui/wxpython/photo2image/ip2i_manager.py b/gui/wxpython/photo2image/ip2i_manager.py index 0e6168a8edd..37985dad5e4 100644 --- a/gui/wxpython/photo2image/ip2i_manager.py +++ b/gui/wxpython/photo2image/ip2i_manager.py @@ -20,7 +20,7 @@ @author Original author Michael Barton @author Original version improved by Martin Landa -@author Rewritten by Markus Metz redesign georectfier -> GCP Manage +@author Rewritten by Markus Metz redesign georectifier -> GCP Manage @author Support for GraphicsSet added by Stepan Turek (2012) @author Yann modified: graphical replacement of i.photo.2image (was in v6 using Vask lib) @@ -336,10 +336,10 @@ def __init__( # register data structures for drawing GCP's # self.pointsToDrawTgt = self.TgtMapWindow.RegisterGraphicsToDraw( - graphicsType="point", setStatusFunc=self.SetGCPSatus + graphicsType="point", setStatusFunc=self.SetGCPStatus ) self.pointsToDrawSrc = self.SrcMapWindow.RegisterGraphicsToDraw( - graphicsType="point", setStatusFunc=self.SetGCPSatus + graphicsType="point", setStatusFunc=self.SetGCPStatus ) # connect to the map windows signals @@ -778,7 +778,7 @@ def SetSettings(self): self.pointsToDrawSrc.SetPropertyVal("text", textProp) self.pointsToDrawTgt.SetPropertyVal("text", copy(textProp)) - def SetGCPSatus(self, item, itemIndex): + def SetGCPStatus(self, item, itemIndex): """Before GCP is drawn, decides it's colour and whether it will be drawn. """ @@ -1033,7 +1033,7 @@ def ReloadGCPs(self, event): targetMapWin.UpdateMap(render=False) def OnFocus(self, event): - # TODO: it is here just to remove old or obsolete beavior of base class + # TODO: it is here just to remove old or obsolete behavior of base class # gcp/MapPanel? # self.grwiz.SwitchEnv('source') pass diff --git a/gui/wxpython/psmap/frame.py b/gui/wxpython/psmap/frame.py index 22194ece0c0..bb71fd856a5 100644 --- a/gui/wxpython/psmap/frame.py +++ b/gui/wxpython/psmap/frame.py @@ -1972,7 +1972,7 @@ def OnDragging(self, event): pdcType = "rect" lineCoords = None if r[2] < 2 or r[3] < 2: - # to avoid strange behaviour + # to avoid strange behavior return self.Draw( diff --git a/gui/wxpython/rlisetup/functions.py b/gui/wxpython/rlisetup/functions.py index fc9d3c3d202..3670a504621 100644 --- a/gui/wxpython/rlisetup/functions.py +++ b/gui/wxpython/rlisetup/functions.py @@ -18,9 +18,9 @@ class SamplingType: MMVWINC = samplingtype=moving, regionbox=mouse, shape=circle MMVWINR = samplingtype moving, regionbox=mouse, shape=rectangle - KUNITSC = samplingtype=units, regionbox=keyboard, shape=cirlce + KUNITSC = samplingtype=units, regionbox=keyboard, shape=circle KUNITSR = samplingtype=units, regionbox=keyboard, shape=rectangle - MUNITSC = samplingtype=units, regionbox=mouse, shape=cirlce + MUNITSC = samplingtype=units, regionbox=mouse, shape=circle MUNITSR = samplingtype=units, regionbox=mouse, shape=rectangle """ @@ -141,7 +141,7 @@ def sampleAreaVector( vect=vect.split("@")[0], rast=rast.split("@")[0] ) rast_name = "{pref}{cat}".format(pref=outpref, cat=cat) - # check if raster already axist + # check if raster already exists if ( len(grass.list_strings("raster", pattern=rast_name, mapset=".")) == 1 diff --git a/gui/wxpython/rlisetup/sampling_frame.py b/gui/wxpython/rlisetup/sampling_frame.py index 7e410d6f182..df2ee8f62af 100644 --- a/gui/wxpython/rlisetup/sampling_frame.py +++ b/gui/wxpython/rlisetup/sampling_frame.py @@ -327,9 +327,9 @@ def _radiusDrawn(self, x, y): circle.point[0], circle.point[1], circle.radius ) self._registeredGraphics.Draw() - self.createCricle(circle) + self.createCircle(circle) - def createCricle(self, c): + def createCircle(self, c): dlg = wx.TextEntryDialog( None, "Name of sample circle region", diff --git a/gui/wxpython/rlisetup/wizard.py b/gui/wxpython/rlisetup/wizard.py index ba2a5b61f78..35aa3384e38 100644 --- a/gui/wxpython/rlisetup/wizard.py +++ b/gui/wxpython/rlisetup/wizard.py @@ -360,7 +360,7 @@ def _write_area(self, fil): fil.write("SAMPLEAREA -1|-1|%r|%r" % (rl, cl)) fil.write("|%s" % self.msAreaList[0].raster) fil.write("\nMOVINGWINDOW\n") - # KUNITSC = samplingtype=units, regionbox=keyboard, shape=cirlce + # KUNITSC = samplingtype=units, regionbox=keyboard, shape=circle # KUNITSR = samplingtype=units, regionbox=keyboard, shape=rectangle elif samtype in {SamplingType.KUNITSC, SamplingType.KUNITSR}: if samtype == SamplingType.KUNITSC: @@ -374,13 +374,13 @@ def _write_area(self, fil): fil.write("SAMPLEAREA -1|-1|%r|%r\n" % (rl, cl)) if self.units.distrtype == "non_overlapping": fil.write("RANDOMNONOVERLAPPING %s\n" % self.units.distr1) - elif self.units.distrtype == "systematic_contiguos": + elif self.units.distrtype == "systematic_contiguous": fil.write("SYSTEMATICCONTIGUOUS\n") elif self.units.distrtype == "stratified_random": fil.write( "STRATIFIEDRANDOM %s|%s\n" % (self.units.distr1, self.units.distr2) ) - elif self.units.distrtype == "systematic_noncontiguos": + elif self.units.distrtype == "systematic_noncontiguous": fil.write("SYSTEMATICNONCONTIGUOUS %s\n" % self.units.distr1) elif self.units.distrtype == "centered_oversites": fil.write("") @@ -388,7 +388,7 @@ def _write_area(self, fil): # elif self.samplingareapage.samplingtype == SamplingType.UNITS and # self.samplingareapage.regionbox=='mouse': - # MUNITSC = samplingtype=units, regionbox=mouse, shape=cirlce + # MUNITSC = samplingtype=units, regionbox=mouse, shape=circle # MUNITSR = samplingtype=units, regionbox=mouse, shape=rectangle elif self.samplingareapage.samplingtype in { SamplingType.MUNITSR, @@ -1434,7 +1434,7 @@ def OnDistr(self, event): self.panelSizer.Hide(self.distr2Txt) self.panelSizer.Layout() elif chosen == 1: - self.distrtype = "systematic_contiguos" + self.distrtype = "systematic_contiguous" self.distr1Label.SetLabel("") self.distr2Label.SetLabel("") self.panelSizer.Hide(self.distr1Txt) @@ -1448,7 +1448,7 @@ def OnDistr(self, event): self.panelSizer.Show(self.distr2Txt) self.panelSizer.Layout() elif chosen == 3: - self.distrtype = "systematic_noncontiguos" + self.distrtype = "systematic_noncontiguous" self.distr1Label.SetLabel(_("Insert distance between units")) self.panelSizer.Show(self.distr1Txt) self.distr2Label.SetLabel("") @@ -2182,7 +2182,7 @@ def OnEnterPage(self, event): if self.parent.units.distrtype == "non_overlapping": self.unitsmorelabel.SetLabel(_("Number sampling units:")) self.unitsmoretxt.SetLabel(self.parent.units.distr1) - elif self.parent.units.distrtype == "systematic_noncontiguos": + elif self.parent.units.distrtype == "systematic_noncontiguous": self.unitsmorelabel.SetLabel(_("Distance between units:")) self.unitsmoretxt.SetLabel(self.parent.units.distr1) elif self.parent.units.distrtype == "stratified_random": diff --git a/gui/wxpython/timeline/g.gui.timeline.py b/gui/wxpython/timeline/g.gui.timeline.py index 161c6832a92..3265636a3b0 100755 --- a/gui/wxpython/timeline/g.gui.timeline.py +++ b/gui/wxpython/timeline/g.gui.timeline.py @@ -50,7 +50,7 @@ def main(): from timeline.frame import TimelineFrame except ImportError as e: # TODO: why do we need this special check here, the reason of error - # is wrong intallation or something, no need to report this to the + # is wrong installation or something, no need to report this to the # user in a nice way gs.fatal(str(e)) diff --git a/gui/wxpython/vdigit/dialogs.py b/gui/wxpython/vdigit/dialogs.py index 2e7333cf122..494f8f66acc 100644 --- a/gui/wxpython/vdigit/dialogs.py +++ b/gui/wxpython/vdigit/dialogs.py @@ -387,7 +387,7 @@ def OnReload(self, event): # restore original list self.cats = copy.deepcopy(self.cats_orig) - # polulate list + # populate list self.itemDataMap = self.list.Populate(self.cats[self.fid], update=True) event.Skip() @@ -529,7 +529,7 @@ def UpdateDialog(self, query=None, cats=None): # make copy of cats (used for 'reload') self.cats_orig = copy.deepcopy(self.cats) - # polulate list + # populate list self.fid = list(self.cats.keys())[0] self.itemDataMap = self.list.Populate(self.cats[self.fid], update=True) diff --git a/gui/wxpython/vdigit/g.gui.vdigit.py b/gui/wxpython/vdigit/g.gui.vdigit.py index be476a03ee1..c4b4f93ae7e 100644 --- a/gui/wxpython/vdigit/g.gui.vdigit.py +++ b/gui/wxpython/vdigit/g.gui.vdigit.py @@ -84,7 +84,7 @@ def __init__(self, parent, vectorMap): ) self._initShortcuts() - # this giface issue not solved yet, we must set mapframe aferwards + # this giface issue not solved yet, we must set mapframe afterwards self._giface._mapframe = self # load vector map mapLayer = self.GetMap().AddLayer( diff --git a/gui/wxpython/vdigit/mapwindow.py b/gui/wxpython/vdigit/mapwindow.py index db9ebf57caf..824ff68fc3e 100644 --- a/gui/wxpython/vdigit/mapwindow.py +++ b/gui/wxpython/vdigit/mapwindow.py @@ -294,7 +294,7 @@ def OnLeftDownAddLine(self, event): return if self.toolbar.GetAction("type") in {"point", "centroid"}: - # add new point / centroiud + # add new point / centroid east, north = self.Pixel2Cell(self.mouse["begin"]) nfeat, fids = self.digit.AddFeature( self.toolbar.GetAction("type"), [(east, north)] diff --git a/gui/wxpython/vdigit/toolbars.py b/gui/wxpython/vdigit/toolbars.py index 09833758882..73bca461227 100644 --- a/gui/wxpython/vdigit/toolbars.py +++ b/gui/wxpython/vdigit/toolbars.py @@ -446,7 +446,7 @@ def _noVMapOpenForEditingErrDlg(self): return True def OnTool(self, event): - """Tool selected -> untoggles previusly selected tool in + """Tool selected -> untoggles previously selected tool in toolbar""" Debug.msg( 3, @@ -478,7 +478,7 @@ def OnTool(self, event): event.Skip() def OnAddPoint(self, event): - """Add point to the vector map Laier""" + """Add point to the vector map layer""" Debug.msg(2, "VDigitToolbar.OnAddPoint()") self.action = {"desc": "addLine", "type": "point", "id": self.addPoint} self.MapWindow.mouse["box"] = "point" diff --git a/gui/wxpython/vdigit/wxdigit.py b/gui/wxpython/vdigit/wxdigit.py index 10cac8710b5..c1f777ec647 100644 --- a/gui/wxpython/vdigit/wxdigit.py +++ b/gui/wxpython/vdigit/wxdigit.py @@ -667,7 +667,7 @@ def _getLineAreaBboxCats(self, ln_id): ltype = Vect_read_line(self.poMapInfo, None, None, ln_id) if ltype == GV_CENTROID: - # TODO centroid opttimization, can be edited also its area -> it + # TODO centroid optimization, can be edited also its area -> it # will appear two times in new_ lists return self._getCentroidAreaBboxCats(ln_id) return [self._getBbox(ln_id)], [self._getLineAreasCategories(ln_id)] diff --git a/gui/wxpython/vnet/vnet_core.py b/gui/wxpython/vnet/vnet_core.py index f55550e65e2..b0ec072b2af 100644 --- a/gui/wxpython/vnet/vnet_core.py +++ b/gui/wxpython/vnet/vnet_core.py @@ -1000,7 +1000,7 @@ def NewTmpVectMapToHist(self, prefMapName): def AddTmpMapAnalysisMsg(mapName, tmp_maps): # TODO - """Wraped AddTmpVectMap""" + """Wraps AddTmpVectMap""" msg = _( "Temporary map %s already exists.\n" + "Do you want to continue in analysis and overwrite it?" diff --git a/gui/wxpython/vnet/vnet_data.py b/gui/wxpython/vnet/vnet_data.py index 2074e037350..47ffdb9a371 100644 --- a/gui/wxpython/vnet/vnet_data.py +++ b/gui/wxpython/vnet/vnet_data.py @@ -1364,7 +1364,7 @@ def SetValue(self, value, line, col): self.turn_data[line][col] = value def SetUTurns(self, value): - """Checked if checeBox is checed""" + """Checked if checkBox is checked""" self.useUTurns = value def AppendRow(self, values): diff --git a/gui/wxpython/vnet/widgets.py b/gui/wxpython/vnet/widgets.py index 71fcd0e0739..d997b9c2434 100644 --- a/gui/wxpython/vnet/widgets.py +++ b/gui/wxpython/vnet/widgets.py @@ -14,7 +14,7 @@ @author Original author Michael Barton @author Original version improved by Martin Landa -@author Rewritten by Markus Metz redesign georectfier -> GCP Manage +@author Rewritten by Markus Metz redesign georectifier -> GCP Manage @author Stepan Turek (Created PointsList from GCPList) (GSoC 2012, mentor: Martin Landa) """ diff --git a/gui/wxpython/web_services/dialogs.py b/gui/wxpython/web_services/dialogs.py index e47400cae70..bed4f57c70b 100644 --- a/gui/wxpython/web_services/dialogs.py +++ b/gui/wxpython/web_services/dialogs.py @@ -178,7 +178,7 @@ def _doLayout(self): border=5, ) - # connectin settings + # connection settings settingsSizer = wx.StaticBoxSizer(self.settingsBox, wx.VERTICAL) serverSizer = wx.FlexGridSizer(cols=3, vgap=5, hgap=5) @@ -748,7 +748,7 @@ def LoadCapFiles(self, ws_cap_files, cmd): ) def _getServerConnFromCmd(self, cmd): - """Get url/server/passwod from cmd tuple""" + """Get url/server/password from cmd tuple""" conn = {"url": "", "username": "", "password": ""} for k in conn.keys(): diff --git a/gui/wxpython/web_services/widgets.py b/gui/wxpython/web_services/widgets.py index e54bee5603f..2b70ac4c643 100644 --- a/gui/wxpython/web_services/widgets.py +++ b/gui/wxpython/web_services/widgets.py @@ -1,7 +1,7 @@ """ @package web_services.widgets -@brief Widgets for web services (WMS, WMTS, NasaOnEarh) +@brief Widgets for web services (WMS, WMTS, NasaOnEarth) List of classes: - widgets::WSPanel @@ -251,14 +251,14 @@ def _advancedSettsPage(self): ) labels = {} - self.l_odrder_list = None + self.l_order_list = None if "WMS" in self.ws: labels["l_order"] = StaticBox( parent=adv_setts_panel, id=wx.ID_ANY, label=_("Order of layers in raster"), ) - self.l_odrder_list = wx.ListBox( + self.l_order_list = wx.ListBox( adv_setts_panel, id=wx.ID_ANY, choices=[], @@ -351,7 +351,7 @@ def _advancedSettsPage(self): gridSizer = wx.GridBagSizer(hgap=3, vgap=3) gridSizer.Add( - self.l_odrder_list, + self.l_order_list, pos=(0, 0), span=(4, 1), flag=wx.ALIGN_CENTER_VERTICAL | wx.EXPAND, @@ -427,8 +427,8 @@ def _advancedSettsPage(self): def OnUp(self, event): """Move selected layer up""" - if self.l_odrder_list.GetSelections(): - pos = self.l_odrder_list.GetSelection() + if self.l_order_list.GetSelections(): + pos = self.l_order_list.GetSelection() if pos: self.sel_layers.insert(pos - 1, self.sel_layers.pop(pos)) if pos > 0: @@ -438,8 +438,8 @@ def OnUp(self, event): def OnDown(self, event): """Move selected to down""" - if self.l_odrder_list.GetSelections(): - pos = self.l_odrder_list.GetSelection() + if self.l_order_list.GetSelections(): + pos = self.l_order_list.GetSelection() if pos != len(self.sel_layers) - 1: self.sel_layers.insert(pos + 1, self.sel_layers.pop(pos)) if pos < len(self.sel_layers) - 1: @@ -461,14 +461,14 @@ def getlayercaption(layer): return cap layer_capts = [getlayercaption(sel_layer) for sel_layer in self.sel_layers] - self.l_odrder_list.Set(layer_capts) - if self.l_odrder_list.IsEmpty(): + self.l_order_list.Set(layer_capts) + if self.l_order_list.IsEmpty(): self.enableButtons(False) else: self.enableButtons(True) if selected is not None: - self.l_odrder_list.SetSelection(selected) - self.l_odrder_list.EnsureVisible(selected) + self.l_order_list.SetSelection(selected) + self.l_order_list.EnsureVisible(selected) def OnTransparent(self, event): checked = event.IsChecked() @@ -841,7 +841,7 @@ def _getFormats(self, layer=None): """Get formats WMS has formats defined generally for whole cap. - In WMTS and NASA OnEarh formats are defined for layer. + In WMTS and NASA OnEarth formats are defined for layer. """ formats_label = [] if layer is None: @@ -920,7 +920,7 @@ def __init__(self, parent, web_service, style, pos=wx.DefaultPosition): def LoadData(self, cap=None): """Load data into list""" - # detete first all items + # delete first all items self.DeleteAllItems() if not cap: diff --git a/gui/wxpython/wxplot/base.py b/gui/wxpython/wxplot/base.py index 7dfb444bd1e..91ae3a8eea4 100755 --- a/gui/wxpython/wxplot/base.py +++ b/gui/wxpython/wxplot/base.py @@ -1,7 +1,7 @@ """ @package wxplot.base -@brief Base classes for iinteractive plotting using PyPlot +@brief Base classes for interactive plotting using PyPlot Classes: - base::PlotIcons diff --git a/gui/wxpython/wxplot/profile.py b/gui/wxpython/wxplot/profile.py index 240290e5b7b..cba95ac83c2 100644 --- a/gui/wxpython/wxplot/profile.py +++ b/gui/wxpython/wxplot/profile.py @@ -193,7 +193,7 @@ def SetupProfile(self): # title of window self.ptitle = _("Profile of") - # Initialize lattitude-longitude geodesic distance calculation + # Initialize latitude-longitude geodesic distance calculation if self._is_lat_lon_proj and haveCtypes: gislib.G_begin_distance_calculations() diff --git a/include/grass/iostream/ami_sort_impl.h b/include/grass/iostream/ami_sort_impl.h index bdd466d2b62..ebe22358da8 100644 --- a/include/grass/iostream/ami_sort_impl.h +++ b/include/grass/iostream/ami_sort_impl.h @@ -112,7 +112,7 @@ size_t makeRun_Block(AMI_STREAM *instream, T *data, unsigned int run_size, once, it reads it in blocks, sorts each block and then merges the blocks together. Note: it is not in place! it allocates another array of same size as data, writes the sorted run into it and - deteles data, and replaces data with outdata */ + deletes data, and replaces data with outdata */ template void makeRun(AMI_STREAM *instream, T *&data, int run_size, Compare *cmp) { diff --git a/lib/cluster/c_exec.c b/lib/cluster/c_exec.c index abc53d32fe5..043c67475c3 100644 --- a/lib/cluster/c_exec.c +++ b/lib/cluster/c_exec.c @@ -1,7 +1,7 @@ /*! \file cluster/c_exec.c - \brief Cluster library - Exectute clusterring + \brief Cluster library - Execute clusterring (C) 2001-2009 by the GRASS Development Team diff --git a/lib/gis/area_poly1.c b/lib/gis/area_poly1.c index 9d06690f970..a165876a229 100644 --- a/lib/gis/area_poly1.c +++ b/lib/gis/area_poly1.c @@ -186,7 +186,7 @@ double G_ellipsoid_polygon_area(const double *lon, const double *lat, int n) area = -area; /* kludge - if polygon circles the south pole the area will be - * computed as if it cirlced the north pole. The correction is + * computed as if it circled the north pole. The correction is * the difference between total surface area of the earth and * the "north pole" area. */ diff --git a/lib/vector/Vlib/close.c b/lib/vector/Vlib/close.c index 573d75068b0..7e80e876393 100644 --- a/lib/vector/Vlib/close.c +++ b/lib/vector/Vlib/close.c @@ -98,7 +98,7 @@ int Vect_close(struct Map_info *Map) Vect_copy_map_dblinks(Map, &Out, TRUE); /* afterwords, dblinks must be removed from temporary map otherwise when deleting temporary map also original - attribute tables would be deteled */ + attribute tables would be deleted */ Vect_map_del_dblink(Map, -1); /* delete db links for all layers */ if (0 != Vect_copy_map_lines_field( diff --git a/locale/po/grasswxpy_ar.po b/locale/po/grasswxpy_ar.po index e0cd184896d..86767a10737 100644 --- a/locale/po/grasswxpy_ar.po +++ b/locale/po/grasswxpy_ar.po @@ -12909,7 +12909,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14244,7 +14244,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14314,7 +14314,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17919,17 +17919,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_bn.po b/locale/po/grasswxpy_bn.po index 27ab019eb1f..505533be8e5 100644 --- a/locale/po/grasswxpy_bn.po +++ b/locale/po/grasswxpy_bn.po @@ -12919,7 +12919,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14254,7 +14254,7 @@ msgstr "ত্রুটি" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14324,7 +14324,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17930,17 +17930,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_cs.po b/locale/po/grasswxpy_cs.po index f4d64a7cf4a..b13c8429409 100644 --- a/locale/po/grasswxpy_cs.po +++ b/locale/po/grasswxpy_cs.po @@ -13205,7 +13205,7 @@ msgid "Zoom to saved region extents" msgstr "Přiblížit na uložený region" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "Nastavit výpočetní region podle pojmenovaného regionu" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14598,7 +14598,7 @@ msgstr "Chyba:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Nelze vykonat příkaz: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14668,7 +14668,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18369,17 +18369,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "Nelze vypočítat směrodatnou odchylku." #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_de.po b/locale/po/grasswxpy_de.po index 2a52e3dd394..7028a8a7c17 100644 --- a/locale/po/grasswxpy_de.po +++ b/locale/po/grasswxpy_de.po @@ -13102,7 +13102,7 @@ msgid "Zoom to saved region extents" msgstr "Auf die Ausdehnung der gespeicherten Region vergrößern" #: ../gui/wxpython/mapwin/buffered.py:2102 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2113 @@ -14486,7 +14486,7 @@ msgstr "Fehler: " #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Kann den Befehl '%s' nicht ausführen." #: ../gui/wxpython/core/utils.py:50 @@ -14565,7 +14565,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18297,17 +18297,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4047 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4056 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4083 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4091 diff --git a/locale/po/grasswxpy_el.po b/locale/po/grasswxpy_el.po index 21230ae0488..4fdef41a031 100644 --- a/locale/po/grasswxpy_el.po +++ b/locale/po/grasswxpy_el.po @@ -13012,7 +13012,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14352,7 +14352,7 @@ msgstr "Σφάλμα:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Αδυναμία εκτέλεσης εντολής: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14422,7 +14422,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18053,17 +18053,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_es.po b/locale/po/grasswxpy_es.po index 7e0d2865020..744525f188f 100644 --- a/locale/po/grasswxpy_es.po +++ b/locale/po/grasswxpy_es.po @@ -13890,7 +13890,7 @@ msgid "Zoom to saved region extents" msgstr "Acercamiento a la extensión de la región guardada (zoom to saved...)" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "Definir región computacional desde la región nombrada" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -15348,7 +15348,7 @@ msgstr "Error:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "No se puede ejecutar el comando: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -15428,7 +15428,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "Etiqueta desconocida %s" #: ../gui/wxpython/core/debug.py:46 @@ -19292,19 +19292,19 @@ msgid "Statistics is not support for DBF tables." msgstr "Las estadísticas no están soportadas para tablas DBF." #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "No es posible calcular estadísticas." #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" "No se pueden calcular las estadísticas. Número de líneas %d inválido (debe " "ser %d)." #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "No es posible calcular desviación estándar." #: ../gui/wxpython/dbmgr/base.py:4106 @@ -22328,11 +22328,6 @@ msgstr "etiquetas:" #~ msgid "Deactive overwrite" #~ msgstr "Desactivar sobreescribir" -#~ msgid "Systematic contiguos" -#~ msgstr "Sistemático continuo" - -#~ msgid "Systematic non contiguos" -#~ msgstr "Sistemático no continuo" #, python-format #~ msgid "Unable to load icon theme. Reason: %s. Quiting wxGUI..." diff --git a/locale/po/grasswxpy_fi.po b/locale/po/grasswxpy_fi.po index 2e7a8a52e1c..ab941cad2e9 100644 --- a/locale/po/grasswxpy_fi.po +++ b/locale/po/grasswxpy_fi.po @@ -12942,7 +12942,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14285,7 +14285,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14355,7 +14355,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17969,17 +17969,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_fr.po b/locale/po/grasswxpy_fr.po index acafa54fde4..7dd9ef346b6 100644 --- a/locale/po/grasswxpy_fr.po +++ b/locale/po/grasswxpy_fr.po @@ -13849,7 +13849,7 @@ msgid "Zoom to saved region extents" msgstr "Zoomer sur les limites de la région enregistrée" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "Définir la région de calcul à partir d'une région enregistrée" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -15300,7 +15300,7 @@ msgstr "Erreur :" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Impossible d'exécuter la commande : '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -15379,7 +15379,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "Étiquette inconnue %s" #: ../gui/wxpython/core/debug.py:46 @@ -19232,19 +19232,19 @@ msgid "Statistics is not support for DBF tables." msgstr "Les statistiques ne sont pas suportées pour les tables DBF." #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "Impossible de calculer les statistiques" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" "Impossible de calculer les statistiques. Nombre de lignes %d invalides " "(devrait être %d)." #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "Impossible de calculer l'écart-type." #: ../gui/wxpython/dbmgr/base.py:4106 @@ -22505,11 +22505,6 @@ msgstr "étiquettes :" #~ msgid "Deactive overwrite" #~ msgstr "Désactiver l'écrasement" -#~ msgid "Systematic contiguos" -#~ msgstr "systématiquement contigüs" - -#~ msgid "Systematic non contiguos" -#~ msgstr "Systématiquement non contigüs" #, python-format #~ msgid "Unable to load icon theme. Reason: %s. Quiting wxGUI..." diff --git a/locale/po/grasswxpy_hu.po b/locale/po/grasswxpy_hu.po index a512c692f8b..bceb604f0fa 100644 --- a/locale/po/grasswxpy_hu.po +++ b/locale/po/grasswxpy_hu.po @@ -13132,7 +13132,7 @@ msgid "Zoom to saved region extents" msgstr "Nagyítás a mentett régió terjedelmére" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "Számítási régió beállítása névvel bíró régióval" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14522,7 +14522,7 @@ msgstr "Hiba:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Nem tudom végrehajtani a parancsot: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14592,7 +14592,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18238,17 +18238,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "Nem tudok statisztikát számítani." #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "Nem tudok szórást számítani." #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_id_ID.po b/locale/po/grasswxpy_id_ID.po index b3876296a0e..e083f19231a 100644 --- a/locale/po/grasswxpy_id_ID.po +++ b/locale/po/grasswxpy_id_ID.po @@ -12912,7 +12912,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14247,7 +14247,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14317,7 +14317,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17922,17 +17922,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_it.po b/locale/po/grasswxpy_it.po index dafa7437a82..bc84c52cb62 100644 --- a/locale/po/grasswxpy_it.po +++ b/locale/po/grasswxpy_it.po @@ -13535,7 +13535,7 @@ msgid "Zoom to saved region extents" msgstr "Zoom all'estensione della regione salvata" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "Imposta la regione computazionale dalla regione salvata" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14967,7 +14967,7 @@ msgstr "Errore:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Impossibile eseguire il comando '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -15044,7 +15044,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "Etichetta sconosciuta %s" #: ../gui/wxpython/core/debug.py:46 @@ -18846,19 +18846,19 @@ msgid "Statistics is not support for DBF tables." msgstr "Statistiche non è supportato per le tabelle DBF." #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "Impossibile calcolare le statistiche." #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" "Impossibile calcolare le statistiche. Numero non valido di linee %d " "(dovrebbe essere %d)." #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "Impossibile calcolare la deviazione standard." #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_ja.po b/locale/po/grasswxpy_ja.po index 2feb9436763..607c934e370 100644 --- a/locale/po/grasswxpy_ja.po +++ b/locale/po/grasswxpy_ja.po @@ -13140,7 +13140,7 @@ msgid "Zoom to saved region extents" msgstr "保存領域をズーム" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14518,7 +14518,7 @@ msgstr "エラー:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "コマンドが実行できません: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14596,7 +14596,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "不明なタグ %s" #: ../gui/wxpython/core/debug.py:46 @@ -18294,17 +18294,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_ko.po b/locale/po/grasswxpy_ko.po index bbb4a9a638b..f3d48962996 100644 --- a/locale/po/grasswxpy_ko.po +++ b/locale/po/grasswxpy_ko.po @@ -13016,7 +13016,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14381,7 +14381,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14451,7 +14451,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18094,17 +18094,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_lv.po b/locale/po/grasswxpy_lv.po index 83f6f002239..3bddaba8f23 100644 --- a/locale/po/grasswxpy_lv.po +++ b/locale/po/grasswxpy_lv.po @@ -13106,7 +13106,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14461,7 +14461,7 @@ msgstr "Kļūda: " #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Nebija iespējams izpildīt komandu: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14531,7 +14531,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "Nezināma birka %s" #: ../gui/wxpython/core/debug.py:46 @@ -18167,17 +18167,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_ml.po b/locale/po/grasswxpy_ml.po index 73eaedf0eb5..6c6f3ed1df9 100644 --- a/locale/po/grasswxpy_ml.po +++ b/locale/po/grasswxpy_ml.po @@ -12968,7 +12968,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14331,7 +14331,7 @@ msgstr "തെറ്റ്:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "ആജ്ഞ നടപ്പാക്കുന്നതിൽ പാളിച: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14401,7 +14401,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18020,17 +18020,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_pl.po b/locale/po/grasswxpy_pl.po index c4826ee408a..0507a7af8be 100644 --- a/locale/po/grasswxpy_pl.po +++ b/locale/po/grasswxpy_pl.po @@ -13183,7 +13183,7 @@ msgid "Zoom to saved region extents" msgstr "Przybliż do zapisanego regionu" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "Ustaw region obliczeniowy z nazwanego regionu" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14577,7 +14577,7 @@ msgstr "Błąd:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Nie można wykonać polecenia: %s" #: ../gui/wxpython/core/utils.py:50 @@ -14652,7 +14652,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18348,17 +18348,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_pt.po b/locale/po/grasswxpy_pt.po index bae0e777dbe..aed60f40488 100644 --- a/locale/po/grasswxpy_pt.po +++ b/locale/po/grasswxpy_pt.po @@ -12993,7 +12993,7 @@ msgid "Zoom to saved region extents" msgstr "Zoom para a extensão da região guardada" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14338,7 +14338,7 @@ msgstr "Erro:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14408,7 +14408,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18050,17 +18050,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_pt_BR.po b/locale/po/grasswxpy_pt_BR.po index 8888a1631a8..613f1cb2f56 100644 --- a/locale/po/grasswxpy_pt_BR.po +++ b/locale/po/grasswxpy_pt_BR.po @@ -13682,7 +13682,7 @@ msgid "Zoom to saved region extents" msgstr "Zoom para extensões de região salvas" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "Definir região compulacional da região nomeada" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -15110,7 +15110,7 @@ msgstr "Erro:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Não foi possível executar o comando: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -15188,7 +15188,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "Rótulo %s desconhecido" #: ../gui/wxpython/core/debug.py:46 @@ -18990,17 +18990,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 @@ -21946,11 +21946,6 @@ msgstr "rótulos:" #~ msgid "Deactive overwrite" #~ msgstr "Desativar susbstituição" -#~ msgid "Systematic contiguos" -#~ msgstr "Contiguo sistemático" - -#~ msgid "Systematic non contiguos" -#~ msgstr "Não contiguo sistemático" #, python-format #~ msgid "Unable to load icon theme. Reason: %s. Quiting wxGUI..." diff --git a/locale/po/grasswxpy_ro.po b/locale/po/grasswxpy_ro.po index 4eb12668f10..d429cefff6e 100644 --- a/locale/po/grasswxpy_ro.po +++ b/locale/po/grasswxpy_ro.po @@ -13292,7 +13292,7 @@ msgid "Zoom to saved region extents" msgstr "Zoom pentru a salva extinderea regiunii" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14673,7 +14673,7 @@ msgstr "Eroare:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Nu s-a putut executa comanda: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14749,7 +14749,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18497,17 +18497,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_ru.po b/locale/po/grasswxpy_ru.po index 4d6f7d54fc6..fab62db521c 100644 --- a/locale/po/grasswxpy_ru.po +++ b/locale/po/grasswxpy_ru.po @@ -13975,7 +13975,7 @@ msgid "Zoom to saved region extents" msgstr "Задать масштаб до размера сохранённого фрагмента" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "Задать расчётный фрагмент от именованного фрагмента" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -15414,7 +15414,7 @@ msgstr "Ошибка: " #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "Не удалось выполнить команду: «%s»" #: ../gui/wxpython/core/utils.py:50 @@ -15492,7 +15492,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "Неизвестный тег %s" #: ../gui/wxpython/core/debug.py:46 @@ -19344,19 +19344,19 @@ msgid "Statistics is not support for DBF tables." msgstr "Статистика для таблиц DBF не поддерживается." #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "Не удалось вычислить статистику." #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" "Не удалось вычислить статистику. Недопустимое количество линий %d (должно " "быть %d)." #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "Не удалось рассчитать стандартное отклонение." #: ../gui/wxpython/dbmgr/base.py:4106 @@ -22052,10 +22052,10 @@ msgstr "подписи:" #~ msgid "Georectifier manual" #~ msgstr "Руководство для инструмента геопривязки" -#~ msgid "Systematic contiguos" +#~ msgid "Systematic contiguous" #~ msgstr "Систематическая непрерывная выборка" -#~ msgid "Systematic non contiguos" +#~ msgid "Systematic non contiguous" #~ msgstr "Систематическая несвязная выборка" #, python-brace-format diff --git a/locale/po/grasswxpy_si.po b/locale/po/grasswxpy_si.po index af376434553..d16fda596e4 100644 --- a/locale/po/grasswxpy_si.po +++ b/locale/po/grasswxpy_si.po @@ -12911,7 +12911,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14246,7 +14246,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14316,7 +14316,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17921,17 +17921,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_sl.po b/locale/po/grasswxpy_sl.po index ecd79bf6108..c6040fe924f 100644 --- a/locale/po/grasswxpy_sl.po +++ b/locale/po/grasswxpy_sl.po @@ -12909,7 +12909,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14244,7 +14244,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14314,7 +14314,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17919,17 +17919,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_ta.po b/locale/po/grasswxpy_ta.po index d9a3d921f5a..b70e1dae68c 100644 --- a/locale/po/grasswxpy_ta.po +++ b/locale/po/grasswxpy_ta.po @@ -12925,7 +12925,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14260,7 +14260,7 @@ msgstr "பிழை:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "கட்டளையை செயல்படுத்த முடியவில்லை: '%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14330,7 +14330,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17936,17 +17936,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_th.po b/locale/po/grasswxpy_th.po index 359511f80b9..30d9bfa552b 100644 --- a/locale/po/grasswxpy_th.po +++ b/locale/po/grasswxpy_th.po @@ -12962,7 +12962,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14298,7 +14298,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14368,7 +14368,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17984,17 +17984,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_tr.po b/locale/po/grasswxpy_tr.po index cef0605d3d9..4deb7a1b3ac 100644 --- a/locale/po/grasswxpy_tr.po +++ b/locale/po/grasswxpy_tr.po @@ -13045,7 +13045,7 @@ msgid "Zoom to saved region extents" msgstr "Kaydedilmiş bölge boyutlarına göre yakınlaştır" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14399,7 +14399,7 @@ msgstr "Hata:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "'%s' komutu çalıştırılamıyor" #: ../gui/wxpython/core/utils.py:50 @@ -14469,7 +14469,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18104,17 +18104,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_uk.po b/locale/po/grasswxpy_uk.po index a225fe82eb0..64dfd4353fd 100644 --- a/locale/po/grasswxpy_uk.po +++ b/locale/po/grasswxpy_uk.po @@ -12912,7 +12912,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14247,7 +14247,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14317,7 +14317,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17922,17 +17922,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_vi.po b/locale/po/grasswxpy_vi.po index c5621a9bf4e..65969729bf8 100644 --- a/locale/po/grasswxpy_vi.po +++ b/locale/po/grasswxpy_vi.po @@ -12923,7 +12923,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14258,7 +14258,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14328,7 +14328,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17934,17 +17934,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/po/grasswxpy_zh.po b/locale/po/grasswxpy_zh.po index 25fba6850cc..1e7ea46fc14 100644 --- a/locale/po/grasswxpy_zh.po +++ b/locale/po/grasswxpy_zh.po @@ -13066,7 +13066,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14420,7 +14420,7 @@ msgstr "错误:" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "无法执行命令:'%s'" #: ../gui/wxpython/core/utils.py:50 @@ -14492,7 +14492,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -18147,17 +18147,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 @@ -20720,11 +20720,6 @@ msgstr "标签:" #~ msgid "Automatically hightlight selected features in map display" #~ msgstr "地图显示窗口中自动高亮所选择要素" -#~ msgid "Systematic contiguos" -#~ msgstr "系统连续" - -#~ msgid "Systematic non contiguos" -#~ msgstr "系统不连续" #~ msgid "" #~ "Unable to get current geographic extent. Force quiting wxGUI. Please " diff --git a/locale/po/grasswxpy_zh_CN.po b/locale/po/grasswxpy_zh_CN.po index 64212537ad1..ea37efcd3e5 100644 --- a/locale/po/grasswxpy_zh_CN.po +++ b/locale/po/grasswxpy_zh_CN.po @@ -12912,7 +12912,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14247,7 +14247,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14317,7 +14317,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17922,17 +17922,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/locale/templates/grasswxpy.pot b/locale/templates/grasswxpy.pot index ed4066f6747..cc797b54db5 100644 --- a/locale/templates/grasswxpy.pot +++ b/locale/templates/grasswxpy.pot @@ -12910,7 +12910,7 @@ msgid "Zoom to saved region extents" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2103 -msgid "Set compulational region from named region" +msgid "Set computational region from named region" msgstr "" #: ../gui/wxpython/mapwin/buffered.py:2114 @@ -14245,7 +14245,7 @@ msgstr "" #: ../gui/wxpython/core/gcmd.py:504 #, python-format -msgid "Unable to exectute command: '%s'" +msgid "Unable to execute command: '%s'" msgstr "" #: ../gui/wxpython/core/utils.py:50 @@ -14315,7 +14315,7 @@ msgstr "" #: ../gui/wxpython/core/menutree.py:155 #, python-format -msgid "Unknow tag %s" +msgid "Unknown tag %s" msgstr "" #: ../gui/wxpython/core/debug.py:46 @@ -17920,17 +17920,17 @@ msgid "Statistics is not support for DBF tables." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4062 -msgid "Unable to calculte statistics." +msgid "Unable to calculate statistics." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4071 #, python-format msgid "" -"Unable to calculte statistics. Invalid number of lines %d (should be %d)." +"Unable to calculate statistics. Invalid number of lines %d (should be %d)." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4098 -msgid "Unable to calculte standard deviation." +msgid "Unable to calculate standard deviation." msgstr "" #: ../gui/wxpython/dbmgr/base.py:4106 diff --git a/python/grass/pygrass/modules/grid/grid.py b/python/grass/pygrass/modules/grid/grid.py index ffae173ca79..cc3f406d72d 100644 --- a/python/grass/pygrass/modules/grid/grid.py +++ b/python/grass/pygrass/modules/grid/grid.py @@ -582,7 +582,7 @@ def estimate_tile_size(self): self.height = ceil(region.rows / self.processes) def get_works(self): - """Return a list of tuble with the parameters for cmd_exe function""" + """Return a list of tuples with the parameters for cmd_exe function""" works = [] reg = Region() if self.move: From 8ce0b06b2fcd221b8e11ad138915d08b5c032941 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Tue, 19 Nov 2024 12:31:01 +0100 Subject: [PATCH 07/45] docs: v.out.postgis.html fix manual typos (#4717) --- vector/v.out.postgis/v.out.postgis.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vector/v.out.postgis/v.out.postgis.html b/vector/v.out.postgis/v.out.postgis.html index aa9bd459778..a95a7d3f21e 100644 --- a/vector/v.out.postgis/v.out.postgis.html +++ b/vector/v.out.postgis/v.out.postgis.html @@ -39,7 +39,7 @@

DESCRIPTION

  • TOPO_TOLERANCE=<value> - tolerance for PostGIS Topology schema, see CreateTopology - function for defails, default: 0
  • + function for details, default: 0
  • TOPO_GEO_ONLY=YES|NO - store in PostGIS Topology schema only data relevant to Topo-Geo data model, default: NO
  • @@ -90,7 +90,7 @@

    NOTES

    Multigeometries are not currently supported. Features with the same -category are exported as multiple singe features. +category are exported as multiple single features.

    v.out.postgis also allows exporting vector features as @@ -154,7 +154,7 @@

    Export Simple Features

    OGR library, namely using PostgreSQL driver. Contrary to the v.out.ogr module, v.out.postgis is using directly PostGIS data provider -which is part of GRASS vector engine. Beside +which is part of GRASS vector engine. Besides that, v.out.postgis is optimized for PostGIS export including topological access to the data. From 9984205dc8eaab7f014a5117374565a479297d9d Mon Sep 17 00:00:00 2001 From: Nicklas Larsson Date: Tue, 19 Nov 2024 13:18:01 +0100 Subject: [PATCH 08/45] packaging: build Windows with libopenblas (#4716) --- mswindows/osgeo4w/package.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/mswindows/osgeo4w/package.sh b/mswindows/osgeo4w/package.sh index c189cf92c93..643d6735362 100755 --- a/mswindows/osgeo4w/package.sh +++ b/mswindows/osgeo4w/package.sh @@ -107,7 +107,6 @@ fi exec 3>&1 > >(tee mswindows/osgeo4w/package.log) 2>&1 DLLS=" - /mingw64/bin/libblas.dll /mingw64/bin/libbrotlicommon.dll /mingw64/bin/libbrotlidec.dll /mingw64/bin/libbz2-1.dll @@ -123,7 +122,6 @@ DLLS=" /mingw64/bin/libharfbuzz-0.dll /mingw64/bin/libiconv-2.dll /mingw64/bin/libintl-8.dll - /mingw64/bin/liblapack.dll /mingw64/bin/libpcre-1.dll /mingw64/bin/libpixman-1-0.dll /mingw64/bin/libpng16-16.dll @@ -133,6 +131,7 @@ DLLS=" /mingw64/bin/libtre-5.dll /mingw64/bin/libwinpthread-1.dll /mingw64/bin/zlib1.dll + /mingw64/bin/libopenblas.dll " if ! [ -f mswindows/osgeo4w/configure-stamp ]; then @@ -173,7 +172,6 @@ if ! [ -f mswindows/osgeo4w/configure-stamp ]; then --with-geos=$PWD/mswindows/osgeo4w/geos-config \ --with-includes=$OSGEO4W_ROOT_MSYS/include \ --with-lapack \ - --with-lapack-includes=/mingw64/include \ --with-liblas=$PWD/mswindows/osgeo4w/liblas-config \ --with-libs="$OSGEO4W_ROOT_MSYS/lib" \ --with-netcdf=${OSGEO4W_ROOT_MSYS}/bin/nc-config \ From 24315031ebeb91a7a11a208adb33ac2f864c1065 Mon Sep 17 00:00:00 2001 From: Emmanuel Ferdman Date: Tue, 19 Nov 2024 14:39:46 +0200 Subject: [PATCH 09/45] docs: update requirements guide (#4718) --- macosx/ReadMe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/macosx/ReadMe.md b/macosx/ReadMe.md index 085c09c691b..fa9c13b1aff 100644 --- a/macosx/ReadMe.md +++ b/macosx/ReadMe.md @@ -228,7 +228,7 @@ build)*: `--x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib` -To install the new Python GUI (see [REQUIREMENTS.html](../REQUIREMENTS.html) +To install the new Python GUI (see [REQUIREMENTS.md](../REQUIREMENTS.md) and [gui/wxpython/README](../gui/wxpython/README), wxpython installer available at [wxpython.org](https://wxpython.org/)), add this to configure (fill in the correct version at x.x.x.x for the wxpython you have installed): From 2af6ffc05767f4e52e7af80db45b5428a7bce4d0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 12:45:01 -0500 Subject: [PATCH 10/45] CI(deps): Lock file maintenance (#4712) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index da0ff570aca..0e90b2409c9 100644 --- a/flake.lock +++ b/flake.lock @@ -19,11 +19,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730958623, - "narHash": "sha256-JwQZIGSYnRNOgDDoIgqKITrPVil+RMWHsZH1eE1VGN0=", + "lastModified": 1731890469, + "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "85f7e662eda4fa3a995556527c87b2524b691933", + "rev": "5083ec887760adfe12af64830a66807423a859a7", "type": "github" }, "original": { From 1b1febf0ddc65d3a76e5085dc97ec6ed3f165498 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 19:34:12 +0000 Subject: [PATCH 11/45] CI(deps): Update docker/metadata-action action to v5.6.1 (#4719) --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 6b2ad83629e..e4369818fc6 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -54,7 +54,7 @@ jobs: fetch-depth: 0 - name: Docker meta id: meta - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 + uses: docker/metadata-action@369eb591f429131d6889c46b94e711f089e6ca96 # v5.6.1 with: images: osgeo/grass-gis tags: | From 25cf476108cdad604e1b4c8f826f8fa8fe7ca82c Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Wed, 20 Nov 2024 00:13:45 +0100 Subject: [PATCH 12/45] docs: fix broken HTML (#4720) This small PR fixes - HTML id attributes - a `href` typo --- raster/r.in.poly/r.in.poly.html | 5 ++--- raster/r.surf.idw/r.surf.idw.html | 6 +++--- temporal/t.vect.univar/t.vect.univar.html | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/raster/r.in.poly/r.in.poly.html b/raster/r.in.poly/r.in.poly.html index 71673f807a5..0dd942c1af9 100644 --- a/raster/r.in.poly/r.in.poly.html +++ b/raster/r.in.poly/r.in.poly.html @@ -8,7 +8,7 @@

    DESCRIPTION

    The input file is an ASCII text file containing the polygon, linear, and point feature definitions. The format of this file is described in the -INPUT FORMAT section below. +INPUT FORMAT section below.

    The number of raster rows to hold in memory is per default 4096. @@ -31,8 +31,7 @@

    NOTES

    Polygons are filled, i.e. they define an area. - -

    Input Format

    +

    Input Format

    The input format for the input file consists of sections describing either polygonal areas, linear features, or diff --git a/raster/r.surf.idw/r.surf.idw.html b/raster/r.surf.idw/r.surf.idw.html index dac9c6ead76..dd985fbc178 100644 --- a/raster/r.surf.idw/r.surf.idw.html +++ b/raster/r.surf.idw/r.surf.idw.html @@ -17,7 +17,7 @@

    DESCRIPTION

    The -e flag is the error analysis option that interpolates values only for those cells of the input raster map which have non-zero values and -outputs the difference (see NOTES below). +outputs the difference (see NOTES below).

    The npoints parameter defines the number of nearest data points used to determine the interpolated value of an output raster cell. @@ -66,8 +66,8 @@

    NOTES

    for the former may include unacceptable nonconformities in the surface pattern. - -

    +

    Surface-generation error analysis

    + The -e flag option provides a standard surface-generation error analysis facility. It produces an output raster map of the difference of interpolated values minus input values for those cells diff --git a/temporal/t.vect.univar/t.vect.univar.html b/temporal/t.vect.univar/t.vect.univar.html index 2e747567b0a..36015d9396c 100644 --- a/temporal/t.vect.univar/t.vect.univar.html +++ b/temporal/t.vect.univar/t.vect.univar.html @@ -5,7 +5,7 @@

    DESCRIPTION

    EXAMPLE

    -The example is based on the t.vect.observe.strds +The example is based on the t.vect.observe.strds example; so create the precip_stations space time vector dataset and after run the following command: From bb04c32f00f3a6993dc5ae52183161180a0f71af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Wed, 20 Nov 2024 13:07:08 +0100 Subject: [PATCH 13/45] docs: v.mkgrid.html fix manual typos (#4724) --- vector/v.mkgrid/v.mkgrid.html | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/vector/v.mkgrid/v.mkgrid.html b/vector/v.mkgrid/v.mkgrid.html index 8d5a6900fff..a1e7d87a6df 100644 --- a/vector/v.mkgrid/v.mkgrid.html +++ b/vector/v.mkgrid/v.mkgrid.html @@ -66,8 +66,8 @@

    Creating a positioned grid in a latitude-longitude

    at 167deg 52min east, 47deg 6min south. For use with e.g. QGIS you can then pull this grid into a project with projected coordinate reference system (CRS) using v.proj before -exporting as a Shapefile with v.out.ogr (within GRASS GIS you could -just use d.grid -w from the projec with projected CRS for the same effect): +exporting as a vector file with v.out.ogr (within GRASS GIS you could +just use d.grid -w from the project with projected CRS for the same effect):
     v.mkgrid map=p2min_grid grid=10,12 position=coor coordinates=167:52E,47:06S box=0:02,0:02
    @@ -153,7 +153,7 @@ 

    Using hexagons for point density

    v.vect.stats points=points_of_interest areas=hexagons count_column=count
    -User should note that some of the points may be outside the grid +Users should note that some of the points may be outside the grid since the hexagons cannot cover all the area around the edges (the computational region extent needs to be enlarged if all points should be considered). @@ -164,11 +164,6 @@

    Using hexagons for point density

    v.colors map=hexagons use=attr column=count color=viridis - -

    Point density in a hexagonal grid From 546a544caa4e9e18b9d07e653579562331df067f Mon Sep 17 00:00:00 2001 From: Arohan Ajit Date: Wed, 20 Nov 2024 07:14:03 -0500 Subject: [PATCH 14/45] wxGUI: Fixed PEP8 errors in web_services/ (#4706) * updated * fixed import issue --- .flake8 | 3 --- gui/wxpython/web_services/widgets.py | 8 +++----- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.flake8 b/.flake8 index 0ea1b48ae68..b836e69cd79 100644 --- a/.flake8 +++ b/.flake8 @@ -45,9 +45,6 @@ per-file-ignores = gui/wxpython/mapwin/graphics.py: E722 gui/wxpython/startup/locdownload.py: E722, E402 gui/wxpython/timeline/g.gui.timeline.py: E501 - gui/wxpython/tools/build_modules_xml.py: E722 - gui/wxpython/web_services/cap_interface.py: E501 - gui/wxpython/web_services/widgets.py: F841, E402 # Generated file gui/wxpython/menustrings.py: E501 # F821 undefined name 'cmp' diff --git a/gui/wxpython/web_services/widgets.py b/gui/wxpython/web_services/widgets.py index 2b70ac4c643..db057313831 100644 --- a/gui/wxpython/web_services/widgets.py +++ b/gui/wxpython/web_services/widgets.py @@ -60,15 +60,14 @@ ) import grass.script as gs +from grass.pydispatch.signal import Signal rinwms_path = os.path.join(os.getenv("GISBASE"), "etc", "r.in.wms") if rinwms_path not in sys.path: sys.path.append(rinwms_path) -from wms_base import WMSDriversInfo -from srs import Srs - -from grass.pydispatch.signal import Signal +from wms_base import WMSDriversInfo # noqa:E402 +from srs import Srs # noqa:E402 class WSPanel(wx.Panel): @@ -750,7 +749,6 @@ def OnListSelChanged(self, event): self.projs_list = [] projs_list = [] - intersect_proj = [] first = True for curr in curr_sel_ls: layer_projs = curr["cap_intf_l"].GetLayerData("srs") From 2b169286f685f33fe27c23dc85a23934cf5d89fe Mon Sep 17 00:00:00 2001 From: Arohan Ajit Date: Wed, 20 Nov 2024 07:19:44 -0500 Subject: [PATCH 15/45] wxGUI: Fixed PEP8 errors in wxplot/ (#4699) * removed pep8 errors --- .flake8 | 3 --- gui/wxpython/wxplot/base.py | 7 +++---- gui/wxpython/wxplot/histogram.py | 5 +---- gui/wxpython/wxplot/profile.py | 5 ++--- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/.flake8 b/.flake8 index b836e69cd79..207535e2ea2 100644 --- a/.flake8 +++ b/.flake8 @@ -31,9 +31,6 @@ per-file-ignores = gui/wxpython/iclass/frame.py: F405, F403 gui/wxpython/iclass/g.gui.iclass.py: E501 gui/wxpython/iclass/statistics.py: F841, F405, F403 - gui/wxpython/wxplot/histogram.py: E722 - gui/wxpython/wxplot/profile.py: F841, E722 - gui/wxpython/wxplot/base.py: F841, E722 gui/wxpython/location_wizard/dialogs.py: F841 gui/wxpython/location_wizard/wizard.py: E722 gui/wxpython/mapdisp/main.py: E722 diff --git a/gui/wxpython/wxplot/base.py b/gui/wxpython/wxplot/base.py index 91ae3a8eea4..057894c0250 100755 --- a/gui/wxpython/wxplot/base.py +++ b/gui/wxpython/wxplot/base.py @@ -30,6 +30,7 @@ from gui_core.wrap import Menu import grass.script as gs +from grass.exceptions import CalledModuleError PlotIcons = { "draw": MetaIcon(img="show", label=_("Draw/re-draw plot")), @@ -204,7 +205,7 @@ def InitRasterOpts(self, rasterList, plottype): try: ret = gs.raster_info(r) - except: + except CalledModuleError: continue # if r.info cannot parse map, skip it @@ -270,7 +271,7 @@ def InitRasterPairs(self, rasterList, plottype): ret0 = gs.raster_info(rpair[0]) ret1 = gs.raster_info(rpair[1]) - except: + except (IndexError, CalledModuleError): continue # if r.info cannot parse map, skip it @@ -510,7 +511,6 @@ def OnMotion(self, event): def PlotOptionsMenu(self, event): """Popup menu for plot and text options""" - point = wx.GetMousePosition() popt = Menu() # Add items to the menu settext = wx.MenuItem(popt, wx.ID_ANY, _("Text settings")) @@ -608,7 +608,6 @@ def PlotOptions(self, event): def PrintMenu(self, event): """Print options and output menu""" - point = wx.GetMousePosition() printmenu = Menu() for title, handler in ( (_("Page setup"), self.OnPageSetup), diff --git a/gui/wxpython/wxplot/histogram.py b/gui/wxpython/wxplot/histogram.py index ef252f0b052..b65ebd03192 100644 --- a/gui/wxpython/wxplot/histogram.py +++ b/gui/wxpython/wxplot/histogram.py @@ -97,10 +97,7 @@ def OnCreateHist(self, event): create a list of cell value and count/percent/area pairs. This is passed to plot to create a line graph of the histogram. """ - try: - self.SetCursor(StockCursor(wx.CURSOR_ARROW)) - except: - pass + self.SetCursor(StockCursor(wx.CURSOR_ARROW)) self.SetGraphStyle() wx.BeginBusyCursor() diff --git a/gui/wxpython/wxplot/profile.py b/gui/wxpython/wxplot/profile.py index cba95ac83c2..e0994f1a8a5 100644 --- a/gui/wxpython/wxplot/profile.py +++ b/gui/wxpython/wxplot/profile.py @@ -250,7 +250,7 @@ def SetupProfile(self): # delete extra first segment point try: self.seglist.pop(0) - except: + except IndexError: pass # @@ -291,7 +291,6 @@ def CreateDatalist(self, raster, coords): # freezing with large, high resolution maps region = gs.region() curr_res = min(float(region["nsres"]), float(region["ewres"])) - transect_rec = 0 if self.transect_length / curr_res > 500: transect_res = self.transect_length / 500 else: @@ -486,7 +485,7 @@ def OnStats(self, event): statstr += "median: %f\n" % np.median(a) statstr += "distance along transect: %f\n\n" % self.transect_length message.append(statstr) - except: + except (ValueError, TypeError, KeyError, IndexError): pass stats = PlotStatsFrame(self, id=wx.ID_ANY, message=message, title=title) From 720274886aeb0e603784f4e5b6d181d0004079cf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 20 Nov 2024 07:24:19 -0500 Subject: [PATCH 16/45] CI(deps): Update codecov/codecov-action action to v5.0.4 (#4721) --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 449c4aff0f9..48b77ebcf40 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -115,7 +115,7 @@ jobs: coverage html - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@5c47607acb93fed5485fdbf7232e8a31425f672a # v5.0.2 + uses: codecov/codecov-action@985343d70564a82044c1b7fcb84c2fa05405c1a2 # v5.0.4 with: verbose: true flags: pytest-python-${{ matrix.python-version }} From 36359e23449482c03ebfdc2c1055dddcd2fff7ab Mon Sep 17 00:00:00 2001 From: Arohan Ajit Date: Wed, 20 Nov 2024 08:35:59 -0500 Subject: [PATCH 17/45] tests: replaced module imports to the top (#4656) --- .flake8 | 3 +-- python/grass/pygrass/tests/benchmark.py | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.flake8 b/.flake8 index 207535e2ea2..1e8a6f880d7 100644 --- a/.flake8 +++ b/.flake8 @@ -63,11 +63,10 @@ per-file-ignores = python/grass/temporal/temporal_granularity.py: E722 # Current benchmarks/tests are changing sys.path before import. # Possibly, a different approach should be taken there anyway. - python/grass/pygrass/tests/benchmark.py: E402, F821 + python/grass/pygrass/tests/benchmark.py: F821 # Configuration file for Sphinx: # Ignoring import/code mix and line length. # Files not managed by Black - python/grass/imaging/images2gif.py: E226 # Unused imports in init files # F403 star import used; unable to detect undefined names python/grass/temporal/__init__.py: F401, F403 diff --git a/python/grass/pygrass/tests/benchmark.py b/python/grass/pygrass/tests/benchmark.py index fa7f0c01a65..b6c5e98c26d 100644 --- a/python/grass/pygrass/tests/benchmark.py +++ b/python/grass/pygrass/tests/benchmark.py @@ -15,14 +15,19 @@ from jinja2 import Template from pathlib import Path + sys.path.append(str(Path.cwd())) sys.path.append("%s/.." % (str(Path.cwd()))) + +# flake8: noqa: E402 import grass.lib.gis as libgis import grass.lib.raster as libraster import grass.script as gs import ctypes +# flake8: qa + def test__RasterSegment_value_access__if(): test_a = pygrass.RasterSegment(name="test_a") From 55c0326ad01623571778a10fdd555f8f3b8c7a6d Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Thu, 21 Nov 2024 09:06:00 +0100 Subject: [PATCH 18/45] i18n: fix duplicate messsages in po files (#4722) This PR de-duplicates the PO message files (currently the compilation is broken, apparently introduced in #4710), using ``` cd locale/po/ for i in $(ls grass*.po); do msguniq --use-first ${i} > $i.tmp rm -f ${i} mv $i.tmp ${i} done ``` --- locale/po/grassmods_fr.po | 32 ++++++++++++++++---------------- locale/po/grasswxpy_ar.po | 4 ---- locale/po/grasswxpy_bn.po | 4 ---- locale/po/grasswxpy_cs.po | 4 ---- locale/po/grasswxpy_de.po | 8 ++------ locale/po/grasswxpy_el.po | 4 ---- locale/po/grasswxpy_es.po | 5 ----- locale/po/grasswxpy_fi.po | 4 ---- locale/po/grasswxpy_fr.po | 15 +++++---------- locale/po/grasswxpy_hu.po | 4 ---- locale/po/grasswxpy_id_ID.po | 4 ---- locale/po/grasswxpy_it.po | 4 ---- locale/po/grasswxpy_ja.po | 4 ---- locale/po/grasswxpy_ko.po | 4 ---- locale/po/grasswxpy_lv.po | 4 ---- locale/po/grasswxpy_ml.po | 4 ---- locale/po/grasswxpy_pl.po | 4 ---- locale/po/grasswxpy_pt.po | 4 ---- locale/po/grasswxpy_pt_BR.po | 5 ----- locale/po/grasswxpy_ro.po | 4 ---- locale/po/grasswxpy_ru.po | 10 ---------- locale/po/grasswxpy_si.po | 4 ---- locale/po/grasswxpy_sl.po | 4 ---- locale/po/grasswxpy_ta.po | 4 ---- locale/po/grasswxpy_th.po | 4 ---- locale/po/grasswxpy_tr.po | 4 ---- locale/po/grasswxpy_uk.po | 4 ---- locale/po/grasswxpy_vi.po | 4 ---- locale/po/grasswxpy_zh.po | 5 ----- locale/po/grasswxpy_zh_CN.po | 4 ---- 30 files changed, 23 insertions(+), 149 deletions(-) diff --git a/locale/po/grassmods_fr.po b/locale/po/grassmods_fr.po index 8f4602fc6ec..e56cb236875 100644 --- a/locale/po/grassmods_fr.po +++ b/locale/po/grassmods_fr.po @@ -1578,8 +1578,8 @@ msgid "" "Unable to convert input map coordinate reference system to GRASS format; " "cannot create new project." msgstr "" -"Impossible de convertir la projection de la couche en entrée au format GRASS " -"; impossible de créer le nouveau projet" +"Impossible de convertir la projection de la couche en entrée au format " +"GRASS ; impossible de créer le nouveau projet" #: ../raster/r.external/proj.c:140 ../raster/r.in.gdal/main.c:1035 #: ../raster/r.in.gdal/proj.c:139 ../vector/v.in.lidar/main.c:522 @@ -1638,7 +1638,7 @@ msgstr "Le PROJ_INFO du jeu de données est : \n" #: ../raster/r.in.lidar/projection.c:89 ../raster3d/r3.in.lidar/projection.c:90 #: ../vector/v.in.lidar/projection.c:87 ../vector/v.external/proj.c:360 #: ../vector/v.in.pdal/projection.c:87 ../vector/v.in.ogr/proj.c:492 -#, c-format, fuzzy +#, fuzzy, c-format msgid "" "\n" "In case of no significant differences in the coordinate reference system " @@ -4444,7 +4444,7 @@ msgid "unable to open input file <%s>" msgstr "" #: ../raster/r.quant/read_rules.c:89 -#, c-format, fuzzy +#, fuzzy, c-format msgid "" "\n" "Enter the rule or 'help' for the format description or 'end' to exit:\n" @@ -4561,7 +4561,7 @@ msgid "Failed to set raster attribute table" msgstr "" #: ../raster/r.out.gdal/main.c:51 -#, c-format, fuzzy +#, fuzzy, c-format msgid "Supported formats:\n" msgstr "Formats supportés :\n" @@ -12802,7 +12802,7 @@ msgid "Amount of memory cannot be negative." msgstr "Maximum de mémoire à utiliser (en MB)" #: ../raster/r.viewshed/main.cpp:616 -#, c-format, fuzzy +#, fuzzy, c-format msgid " Converting %d to %d MB" msgstr " Conversion de %d en %d MB" @@ -23481,12 +23481,12 @@ msgid "Region%s" msgstr "" #: ../imagery/i.cluster/main.c:261 -#, c-format, fuzzy +#, fuzzy, c-format msgid " North: %12.2f East: %12.2f%s" msgstr " Nord : %12.2f Est : %12.2f%s" #: ../imagery/i.cluster/main.c:263 -#, c-format, fuzzy +#, fuzzy, c-format msgid " South: %12.2f West: %12.2f%s" msgstr " Sud : %12.2f Ouest : %12.2f%s" @@ -23496,7 +23496,7 @@ msgid " Res: %12.2f Res: %12.2f%s" msgstr "" #: ../imagery/i.cluster/main.c:267 -#, c-format, fuzzy +#, fuzzy, c-format msgid " Rows: %12d Cols: %12d Cells: %d%s" msgstr " Lignes : %12d Colonnes : %12d Cellules : %d%s" @@ -23526,17 +23526,17 @@ msgid " Minimum class size: %d%s" msgstr "" #: ../imagery/i.cluster/main.c:278 -#, c-format, fuzzy +#, fuzzy, c-format msgid " Minimum class separation: %f%s" msgstr " Séparation minimale des classes : %f%s" #: ../imagery/i.cluster/main.c:280 -#, c-format, fuzzy +#, fuzzy, c-format msgid " Percent convergence: %f%s" msgstr " Pourcentage de convergence : %f%s" #: ../imagery/i.cluster/main.c:282 -#, c-format, fuzzy +#, fuzzy, c-format msgid " Maximum number of iterations: %d%s" msgstr " Nombre maximum d'itérations : %d%s" @@ -28076,7 +28076,7 @@ msgid "Lists all database drivers." msgstr "Lister tous les pilotes de bases de données." #: ../db/db.execute/main.c:55 ../db/db.select/main.c:62 -#, c-format, fuzzy +#, fuzzy, c-format msgid "Unable to open file <%s>: %s" msgstr "Impossible d'ouvrir le fichier <%s> : %s" @@ -28981,7 +28981,7 @@ msgid "The password was stored in file (%s%cdblogin)" msgstr "" #: ../db/db.select/main.c:104 -#, c-format, fuzzy +#, fuzzy, c-format msgid "Test %s." msgstr "Test %s." @@ -57802,7 +57802,7 @@ msgstr "" #: ../vector/v.vol.rst/user1.c:586 ../vector/v.vol.rst/user1.c:640 #: ../vector/v.vol.rst/user1.c:694 ../vector/v.vol.rst/user1.c:748 #: ../vector/v.vol.rst/user1.c:802 -#, c-format, fuzzy +#, fuzzy, c-format msgid "Error closing output file %s" msgstr "Erreur en fermant le fichier de sortie %s" @@ -66437,7 +66437,7 @@ msgid "" msgstr "" #: ../display/d.vect.thematic/main.c:515 -#, c-format, fuzzy +#, fuzzy, c-format msgid "" "\n" "Total number of records: %.0f\n" diff --git a/locale/po/grasswxpy_ar.po b/locale/po/grasswxpy_ar.po index 86767a10737..d036766265d 100644 --- a/locale/po/grasswxpy_ar.po +++ b/locale/po/grasswxpy_ar.po @@ -14934,10 +14934,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_bn.po b/locale/po/grasswxpy_bn.po index 505533be8e5..e02d0b5a3ba 100644 --- a/locale/po/grasswxpy_bn.po +++ b/locale/po/grasswxpy_bn.po @@ -14944,10 +14944,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_cs.po b/locale/po/grasswxpy_cs.po index b13c8429409..2423deae915 100644 --- a/locale/po/grasswxpy_cs.po +++ b/locale/po/grasswxpy_cs.po @@ -15316,10 +15316,6 @@ msgstr "Nastavit výpočetní region podle aktuálního okna" msgid "Set computational region extent interactively" msgstr "Nastavit výpočetní region interaktivně" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "Nastavit výpočetní region podle pojmenovaného regionu" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "Uložit výpočetní region jako pojmenovaný region" diff --git a/locale/po/grasswxpy_de.po b/locale/po/grasswxpy_de.po index 7028a8a7c17..f0047ccae3d 100644 --- a/locale/po/grasswxpy_de.po +++ b/locale/po/grasswxpy_de.po @@ -6948,8 +6948,8 @@ msgstr "SIMWE Oberflächenabflussmodellierung" #: ../gui/wxpython/menustrings.py:428 ../gui/wxpython/menustrings.py:1391 msgid "Overland flow hydrologic simulation using path sampling method (SIMWE)." msgstr "" -"Hydrologische Simulation des Oberflächenabfluss mittels \"path " -"sampling\" (SIMWE)." +"Hydrologische Simulation des Oberflächenabfluss mittels \"path sampling\" " +"(SIMWE)." #: ../gui/wxpython/menustrings.py:429 ../gui/wxpython/menustrings.py:1392 msgid "SIMWE Sediment flux modeling" @@ -15227,10 +15227,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1563 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1566 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_el.po b/locale/po/grasswxpy_el.po index 4fdef41a031..86bd0fc413c 100644 --- a/locale/po/grasswxpy_el.po +++ b/locale/po/grasswxpy_el.po @@ -15045,10 +15045,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_es.po b/locale/po/grasswxpy_es.po index 744525f188f..a1b7b5dc5ca 100644 --- a/locale/po/grasswxpy_es.po +++ b/locale/po/grasswxpy_es.po @@ -16108,10 +16108,6 @@ msgstr "Definir región computacional a partir de la visualización" msgid "Set computational region extent interactively" msgstr "Definir extensión de la región computacional de manera interactiva" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "Establecer región computacional desde región nombrada" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "Guardar región computacional con nombre" @@ -22328,7 +22324,6 @@ msgstr "etiquetas:" #~ msgid "Deactive overwrite" #~ msgstr "Desactivar sobreescribir" - #, python-format #~ msgid "Unable to load icon theme. Reason: %s. Quiting wxGUI..." #~ msgstr "" diff --git a/locale/po/grasswxpy_fi.po b/locale/po/grasswxpy_fi.po index ab941cad2e9..f8bc8277c4c 100644 --- a/locale/po/grasswxpy_fi.po +++ b/locale/po/grasswxpy_fi.po @@ -14975,10 +14975,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_fr.po b/locale/po/grasswxpy_fr.po index 7dd9ef346b6..cc9054a8c58 100644 --- a/locale/po/grasswxpy_fr.po +++ b/locale/po/grasswxpy_fr.po @@ -11908,8 +11908,8 @@ msgstr "Niveau de verbosité :" #: ../gui/wxpython/gui_core/preferences.py:1294 msgid "Number of threads for parallel computing (supported tools only):" msgstr "" -"Nombre de threads pour le calcul parallèle (outils pris en charge uniquement)" -" :" +"Nombre de threads pour le calcul parallèle (outils pris en charge " +"uniquement) :" #: ../gui/wxpython/gui_core/preferences.py:1319 msgid "Maximum memory in MB to be used (supported tools only):" @@ -16054,10 +16054,6 @@ msgstr "Définir la région calculée à partir de celle de l'écran" msgid "Set computational region extent interactively" msgstr "Définir l'emprise de la région de calcul de manière interactive" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "Définir la région calculée depuis un nom de région" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "Enregistrer la région calculée vers un nom de région" @@ -21053,6 +21049,9 @@ msgstr "Cliquez-déposez pour redimensionner l'objet" msgid "labels: " msgstr "étiquettes :" +msgid "supported tools only" +msgstr "outils pris en charge uniquement" + #~ msgid "Location Name:" #~ msgstr "Nom du secteur : " @@ -22505,7 +22504,6 @@ msgstr "étiquettes :" #~ msgid "Deactive overwrite" #~ msgstr "Désactiver l'écrasement" - #, python-format #~ msgid "Unable to load icon theme. Reason: %s. Quiting wxGUI..." #~ msgstr "" @@ -22517,6 +22515,3 @@ msgstr "étiquettes :" #~ msgstr "" #~ "Impossible d'obtenir l’extension géographique courante. Sortie forcée de " #~ "wxGUI. Merci d'exécuter manuellement g.region pour résoudre ce problème." - -msgid "supported tools only" -msgstr "outils pris en charge uniquement" diff --git a/locale/po/grasswxpy_hu.po b/locale/po/grasswxpy_hu.po index bceb604f0fa..31bfc368ed9 100644 --- a/locale/po/grasswxpy_hu.po +++ b/locale/po/grasswxpy_hu.po @@ -15220,10 +15220,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "Számítási régió interaktív beállítása" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "Számítási régió beállítása névvel bíró régióval" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "Számítási régió mentése névvel bíró régióba" diff --git a/locale/po/grasswxpy_id_ID.po b/locale/po/grasswxpy_id_ID.po index e083f19231a..214b014b5ca 100644 --- a/locale/po/grasswxpy_id_ID.po +++ b/locale/po/grasswxpy_id_ID.po @@ -14937,10 +14937,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_it.po b/locale/po/grasswxpy_it.po index bc84c52cb62..214a047df46 100644 --- a/locale/po/grasswxpy_it.po +++ b/locale/po/grasswxpy_it.po @@ -15709,10 +15709,6 @@ msgstr "Imposta la regione computazionale dall'estensione del display" msgid "Set computational region extent interactively" msgstr "Imposta la region computazionale interattivamente" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "Imposta regione computazionale da una regione precedentemente salvata" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "Salva la regione computazionale a una regione con nome" diff --git a/locale/po/grasswxpy_ja.po b/locale/po/grasswxpy_ja.po index 607c934e370..3e5d57c2131 100644 --- a/locale/po/grasswxpy_ja.po +++ b/locale/po/grasswxpy_ja.po @@ -15242,10 +15242,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_ko.po b/locale/po/grasswxpy_ko.po index f3d48962996..8b4fb2b2df0 100644 --- a/locale/po/grasswxpy_ko.po +++ b/locale/po/grasswxpy_ko.po @@ -15073,10 +15073,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_lv.po b/locale/po/grasswxpy_lv.po index 3bddaba8f23..b3b37154a29 100644 --- a/locale/po/grasswxpy_lv.po +++ b/locale/po/grasswxpy_lv.po @@ -15155,10 +15155,6 @@ msgstr "Iestatīt aprēķinu reģiona apjomu no kartes skata" msgid "Set computational region extent interactively" msgstr "Interaktīvi iestatīt aprēķinu reģiona apjomu" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_ml.po b/locale/po/grasswxpy_ml.po index 6c6f3ed1df9..662a6f8458f 100644 --- a/locale/po/grasswxpy_ml.po +++ b/locale/po/grasswxpy_ml.po @@ -15022,10 +15022,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_pl.po b/locale/po/grasswxpy_pl.po index 0507a7af8be..ac254af9257 100644 --- a/locale/po/grasswxpy_pl.po +++ b/locale/po/grasswxpy_pl.po @@ -15292,10 +15292,6 @@ msgstr "Ustaw zasięg wyświetlonej mapy jako region obliczeniowy" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "Zapisz region obliczeniowy do nazwanego regionu" diff --git a/locale/po/grasswxpy_pt.po b/locale/po/grasswxpy_pt.po index aed60f40488..fba7c73d12c 100644 --- a/locale/po/grasswxpy_pt.po +++ b/locale/po/grasswxpy_pt.po @@ -15041,10 +15041,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_pt_BR.po b/locale/po/grasswxpy_pt_BR.po index 613f1cb2f56..25d6d633daf 100644 --- a/locale/po/grasswxpy_pt_BR.po +++ b/locale/po/grasswxpy_pt_BR.po @@ -15863,10 +15863,6 @@ msgstr "Definir a extensão da região computacional a partir da exibição" msgid "Set computational region extent interactively" msgstr "Definir a extensão da região computacional interativamente" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "Definir a região computacional da região nomeada" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "Salvar região computacional para região nomeada" @@ -21946,7 +21942,6 @@ msgstr "rótulos:" #~ msgid "Deactive overwrite" #~ msgstr "Desativar susbstituição" - #, python-format #~ msgid "Unable to load icon theme. Reason: %s. Quiting wxGUI..." #~ msgstr "" diff --git a/locale/po/grasswxpy_ro.po b/locale/po/grasswxpy_ro.po index d429cefff6e..b6b46be3dcc 100644 --- a/locale/po/grasswxpy_ro.po +++ b/locale/po/grasswxpy_ro.po @@ -15407,10 +15407,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_ru.po b/locale/po/grasswxpy_ru.po index fab62db521c..0ba2b3f722c 100644 --- a/locale/po/grasswxpy_ru.po +++ b/locale/po/grasswxpy_ru.po @@ -16173,10 +16173,6 @@ msgstr "Задайте охват расчётного фрагмента из msgid "Set computational region extent interactively" msgstr "Задайте охват расчётного фрагмента в интерактивном режиме" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "Задайте охват расчётного фрагмента из именованного фрагмента" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "Сохраните охват расчётного фрагмента из именованного фрагмента" @@ -22052,12 +22048,6 @@ msgstr "подписи:" #~ msgid "Georectifier manual" #~ msgstr "Руководство для инструмента геопривязки" -#~ msgid "Systematic contiguous" -#~ msgstr "Систематическая непрерывная выборка" - -#~ msgid "Systematic non contiguous" -#~ msgstr "Систематическая несвязная выборка" - #, python-brace-format #~ msgid "" #~ "The following error occured when deleting mapset <{path}>:\n" diff --git a/locale/po/grasswxpy_si.po b/locale/po/grasswxpy_si.po index d16fda596e4..ffb2ef37ba9 100644 --- a/locale/po/grasswxpy_si.po +++ b/locale/po/grasswxpy_si.po @@ -14936,10 +14936,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_sl.po b/locale/po/grasswxpy_sl.po index c6040fe924f..d4be9c40b20 100644 --- a/locale/po/grasswxpy_sl.po +++ b/locale/po/grasswxpy_sl.po @@ -14934,10 +14934,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_ta.po b/locale/po/grasswxpy_ta.po index b70e1dae68c..0ef7e90495b 100644 --- a/locale/po/grasswxpy_ta.po +++ b/locale/po/grasswxpy_ta.po @@ -14950,10 +14950,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_th.po b/locale/po/grasswxpy_th.po index 30d9bfa552b..056f6c8805e 100644 --- a/locale/po/grasswxpy_th.po +++ b/locale/po/grasswxpy_th.po @@ -14990,10 +14990,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_tr.po b/locale/po/grasswxpy_tr.po index 4deb7a1b3ac..726090ba1d6 100644 --- a/locale/po/grasswxpy_tr.po +++ b/locale/po/grasswxpy_tr.po @@ -15095,10 +15095,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_uk.po b/locale/po/grasswxpy_uk.po index 64dfd4353fd..196ede55c72 100644 --- a/locale/po/grasswxpy_uk.po +++ b/locale/po/grasswxpy_uk.po @@ -14937,10 +14937,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_vi.po b/locale/po/grasswxpy_vi.po index 65969729bf8..f4c61ca3ab2 100644 --- a/locale/po/grasswxpy_vi.po +++ b/locale/po/grasswxpy_vi.po @@ -14948,10 +14948,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" diff --git a/locale/po/grasswxpy_zh.po b/locale/po/grasswxpy_zh.po index 1e7ea46fc14..6d0ac28a768 100644 --- a/locale/po/grasswxpy_zh.po +++ b/locale/po/grasswxpy_zh.po @@ -15117,10 +15117,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" @@ -20720,7 +20716,6 @@ msgstr "标签:" #~ msgid "Automatically hightlight selected features in map display" #~ msgstr "地图显示窗口中自动高亮所选择要素" - #~ msgid "" #~ "Unable to get current geographic extent. Force quiting wxGUI. Please " #~ "manually run g.region to fix the problem." diff --git a/locale/po/grasswxpy_zh_CN.po b/locale/po/grasswxpy_zh_CN.po index ea37efcd3e5..1172a4af931 100644 --- a/locale/po/grasswxpy_zh_CN.po +++ b/locale/po/grasswxpy_zh_CN.po @@ -14937,10 +14937,6 @@ msgstr "" msgid "Set computational region extent interactively" msgstr "" -#: ../gui/wxpython/mapdisp/frame.py:1531 -msgid "Set computational region from named region" -msgstr "" - #: ../gui/wxpython/mapdisp/frame.py:1534 msgid "Save computational region to named region" msgstr "" From 97da0dc44fbe169e6e70d2eaf801ada40c22020f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:24:24 +0100 Subject: [PATCH 19/45] docs: v.net.timetable.html fix manual typo (#4732) --- vector/v.net.timetable/v.net.timetable.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/vector/v.net.timetable/v.net.timetable.html b/vector/v.net.timetable/v.net.timetable.html index e990ca5d8f1..3540f93e08f 100644 --- a/vector/v.net.timetable/v.net.timetable.html +++ b/vector/v.net.timetable/v.net.timetable.html @@ -9,7 +9,7 @@

    DESCRIPTION

    PATH_ID FROM_X FROM_Y TO_X TO_Y START_TIME MIN_CHANGE MAX_CHANGES WALK_CHANGE PATH_ID FROM_STOP TO_STOP START_TIME MIN_CHANGE MAX_CHANGES WALK_CHANGE -where PATH_ID is the identificator of a query that is used in the +where PATH_ID is the identifier of a query that is used in the output map to differentiate between queries. Search begins at START_TIME. MIN_CHANGE gives the minimum number of time (inclusively) for a change from one route to another. MAX_CHANGES @@ -42,7 +42,7 @@

    DESCRIPTION

    3|47|300|3|24|24 where CAT is the category of a point in the map, PATH_ID is the path -identificator, STOP_ID is the identificator of the stop as used in +identifier, STOP_ID is the identifier of the stop as used in the input map, INDEX is the index of the stop on the path (i.e, index=1 is the first stop visited, ...) and ARR_TIME and DEP_TIME denote the arrival time and departure time respectively. Arrival @@ -51,14 +51,14 @@

    DESCRIPTION

    time.
    The table linked to the second layer corresponds to subroutes taken -between stops. The following table is obtainedd for the above query: +between stops. The following table is obtained for the above query:
     cat|path_id|from_id|to_id|route_id|index|from_time|to_time
     1|47|130|250|15|1|15|22
     2|47|250|300|-1|2|22|24
     
    where CAT is the category of lines of subroute between stops FROM_ID -to TO_ID, ROUTE_ID is the identificator of the route taken or -1 if +to TO_ID, ROUTE_ID is the identifier of the route taken or -1 if walking, INDEX and PATH_ID are as above and FROM_TIME and TO_TIME denote the times between which the route is taken.
    @@ -67,7 +67,7 @@

    DESCRIPTION

    is added between two corresponding points. Finally, instead of straight line segment, the actual paths of routes can be given in paths layer. If this parameter is used then each line in the -input map must contain identificators as category numbers of all +input map must contain identifiers as category numbers of all routes passing through the line. The module then finds the path between two stops and writes this path instead. In case of walking from one stop to another, straight line between the stops is used. @@ -83,7 +83,7 @@

    NOTES

    still needs to be a separate route for every time. For each stop (given by the category number of the point) the table storing information about the routes must contain the list of all routes -stopping at the stop(given by route identificators) together with +stopping at the stop(given by route identifiers) together with arrival times. That is, the table must contain three columns: stop - which is the key of the table, route_id and stop_time where each triple corresponds to a route arriving to a stop and a @@ -122,7 +122,7 @@

    NOTES

    EXAMPLES

    -To find a path from stop with identificator 130 to stop with +To find a path from stop with identifier 130 to stop with category 300, starting at time 0, with one time unit for change, maximum of 5 changes and with walking not considered a change of route, we use the following command: From c877e71d20a0ad7bda8fafc7f344bfb17eb6a2e7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 07:25:01 -0500 Subject: [PATCH 20/45] CI(deps): Update github/codeql-action action to v3.27.5 (#4727) --- .github/workflows/codeql-analysis.yml | 4 ++-- .github/workflows/python-code-quality.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 5b9c8119477..9d7d954d15b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -56,7 +56,7 @@ jobs: if: ${{ matrix.language == 'c-cpp' }} - name: Initialize CodeQL - uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 + uses: github/codeql-action/init@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: languages: ${{ matrix.language }} config-file: ./.github/codeql/codeql-config.yml @@ -81,6 +81,6 @@ jobs: run: .github/workflows/build_ubuntu-22.04.sh "${HOME}/install" - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 + uses: github/codeql-action/analyze@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/python-code-quality.yml b/.github/workflows/python-code-quality.yml index 63bfd709bcf..5d1a3ac1539 100644 --- a/.github/workflows/python-code-quality.yml +++ b/.github/workflows/python-code-quality.yml @@ -135,7 +135,7 @@ jobs: path: bandit.sarif - name: Upload SARIF File into Security Tab - uses: github/codeql-action/upload-sarif@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4 + uses: github/codeql-action/upload-sarif@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5 with: sarif_file: bandit.sarif From 0b9b43bde05a13f3cf0efc78d319a9dc11c88663 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 07:25:47 -0500 Subject: [PATCH 21/45] CI(deps): Update codecov/codecov-action action to v5.0.7 (#4726) --- .github/workflows/pytest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 48b77ebcf40..539076078ec 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -115,7 +115,7 @@ jobs: coverage html - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@985343d70564a82044c1b7fcb84c2fa05405c1a2 # v5.0.4 + uses: codecov/codecov-action@015f24e6818733317a2da2edd6290ab26238649a # v5.0.7 with: verbose: true flags: pytest-python-${{ matrix.python-version }} From f63024f5716ef22696bdccaffdf65164d643388e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edouard=20Choini=C3=A8re?= <27212526+echoix@users.noreply.github.com> Date: Thu, 21 Nov 2024 09:18:55 -0500 Subject: [PATCH 22/45] CI(Travis): Set python version to 3.10 through pyenv global (#4731) * CI(Travis): Set pyenv global to an already installed Python version Might become unavailable, it will remain dependant on what Travis installs in their images --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index 50dff8d2fa7..435d0013de8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,6 +31,11 @@ env: - GRASS_EXTRA_CXXFLAGS="-Werror -fPIC -Wfatal-errors" before_install: + # Show available versions if ever pyenv global fails + - pyenv versions + - pyenv global 3.10 + # Show that the selected version is correctly set + - pyenv versions - ./.travis/$TRAVIS_OS_NAME.before_install.sh install: From 9f09469aefc538a2196a7d54c03d581824e8df01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Fri, 22 Nov 2024 14:10:59 +0100 Subject: [PATCH 23/45] docs: v.net.salesman.html fix manual typos (#4737) --- vector/v.net.salesman/v.net.salesman.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/vector/v.net.salesman/v.net.salesman.html b/vector/v.net.salesman/v.net.salesman.html index 0f29c69e857..00153281daf 100644 --- a/vector/v.net.salesman/v.net.salesman.html +++ b/vector/v.net.salesman/v.net.salesman.html @@ -3,7 +3,7 @@

    DESCRIPTION

    v.net.salesman calculates the optimal route to visit nodes on a vector network. -

    Costs may be either line lengths, or attributes saved in a database +

    Costs may be either line lengths or attributes saved in a database table. These attribute values are taken as costs of whole segments, not as costs to traverse a length unit (e.g. meter) of the segment. For example, if the speed limit is 100 km / h, the cost to traverse a @@ -14,16 +14,16 @@

    DESCRIPTION

    Supported are cost assignments for arcs, and also different costs for both directions of a vector line. For areas, costs will be calculated along boundary lines. +

    The input vector needs to be prepared with v.net operation=connect in order to connect points representing center nodes to the network.

    Points specified by category must be exactly on network nodes, and the input vector map needs to be prepared with v.net operation=connect. -

    Application of flag -t enables a turntable support. -This flag requires additional parameters turn_layer and turn_cat_layer -that are otherwise ignored. - The turntable allows +

    The flag -t enables turntable support. +This flag requires additional parameters, turn_layer and turn_cat_layer, +that are otherwise ignored. The turntable allows to model e.g. traffic code, where some turns may be prohibited. This means that the input layer is expanded by turntable with costs of every possible turn on any possible node @@ -161,7 +161,7 @@

    AUTHORS

    TURNS SUPPORT

    -The turns support was implemnented as part of GRASS GIS turns cost project +The turns support was implemented as part of GRASS GIS turns cost project at Czech Technical University in Prague, Czech Republic.
    Eliska Kyzlikova, Stepan Turek, Lukas Bocan and Viera Bejdova participated in the project. From c2fb1181383f7452b01e6cd3e315ce4c75113386 Mon Sep 17 00:00:00 2001 From: Markus Metz <33666869+metzm@users.noreply.github.com> Date: Fri, 22 Nov 2024 21:35:47 +0100 Subject: [PATCH 24/45] r.to.vect: new flag to re-center centroids (#4690) * r.to.vect: new flag to re-center centroids --- raster/r.to.vect/areas_io.c | 19 +++++++++++++++++++ raster/r.to.vect/global.h | 3 ++- raster/r.to.vect/main.c | 15 +++++++++++++-- raster/r.to.vect/r.to.vect.html | 5 +++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/raster/r.to.vect/areas_io.c b/raster/r.to.vect/areas_io.c index 6d9cfd10e84..eae104e3339 100644 --- a/raster/r.to.vect/areas_io.c +++ b/raster/r.to.vect/areas_io.c @@ -290,6 +290,10 @@ int write_area( catNum = 1; + if (centroid_flag) { + Vect_build_partial(&Map, GV_BUILD_ATTACH_ISLES); + } + G_important_message(_("Writing areas...")); for (i = 0, p = a_list; i < n_areas; i++, p++) { G_percent(i, n_areas, 3); @@ -327,6 +331,21 @@ int write_area( break; } + if (centroid_flag) { + int area, ret; + + area = Vect_find_area(&Map, x, y); + if (area == 0) { + G_warning(_("No area for centroid %d"), i); + } + else { + ret = Vect_get_point_in_area(&Map, area, &x, &y); + if (ret < 0) { + G_warning(_("Unable to calculate area centroid")); + } + } + } + Vect_reset_line(points); Vect_append_point(points, x, y, 0.0); diff --git a/raster/r.to.vect/global.h b/raster/r.to.vect/global.h index 7b0084153bb..81f748e67e5 100644 --- a/raster/r.to.vect/global.h +++ b/raster/r.to.vect/global.h @@ -48,7 +48,8 @@ extern int n_alloced_ptrs; extern int smooth_flag; /* this is 0 for no smoothing, 1 for smoothing of lines */ -extern int value_flag; /* use raster values as categories */ +extern int value_flag; /* use raster values as categories */ +extern int centroid_flag; /* re-center centroids */ extern struct Categories RastCats; extern int has_cats; /* Category labels available */ diff --git a/raster/r.to.vect/main.c b/raster/r.to.vect/main.c index b8fea5678a3..da89c9a0c08 100644 --- a/raster/r.to.vect/main.c +++ b/raster/r.to.vect/main.c @@ -48,8 +48,10 @@ int row_length, row_count, n_rows; int total_areas; int n_alloced_ptrs; -int smooth_flag; /* this is 0 for no smoothing, 1 for smoothing of lines */ -int value_flag; /* use raster values as categories */ +int smooth_flag; /* this is 0 for no smoothing, 1 for smoothing of lines */ +int value_flag; /* use raster values as categories */ +int centroid_flag; /* re-center centroids */ + struct Categories RastCats; int has_cats; /* Category labels available */ struct field_info *Fi; @@ -66,6 +68,7 @@ int main(int argc, char *argv[]) struct GModule *module; struct Option *in_opt, *out_opt, *feature_opt, *column_name; struct Flag *smooth_flg, *value_flg, *z_flg, *no_topol, *notab_flg; + struct Flag *centroid_flg; int feature, notab_flag; G_gisinit(argv[0]); @@ -115,6 +118,13 @@ int main(int argc, char *argv[]) no_topol->label = _("Do not build vector topology"); no_topol->description = _("Recommended for massive point conversion"); + centroid_flg = G_define_flag(); + centroid_flg->key = 'c'; + centroid_flg->label = + _("Move centroids to more central locations within areas"); + centroid_flg->description = _("Default: centroids are located anywhere in " + "areas, often close to boundaries"); + notab_flg = G_define_standard_flag(G_FLG_V_TABLE); if (G_parser(argc, argv)) @@ -123,6 +133,7 @@ int main(int argc, char *argv[]) feature = Vect_option_to_types(feature_opt); smooth_flag = (smooth_flg->answer) ? SMOOTH : NO_SMOOTH; value_flag = value_flg->answer; + centroid_flag = centroid_flg->answer; notab_flag = notab_flg->answer; if (z_flg->answer && (feature != GV_POINT)) diff --git a/raster/r.to.vect/r.to.vect.html b/raster/r.to.vect/r.to.vect.html index 0bf0b21dfe2..363b1444182 100644 --- a/raster/r.to.vect/r.to.vect.html +++ b/raster/r.to.vect/r.to.vect.html @@ -57,6 +57,11 @@

    Area conversion

    input file. If the raster map contains other data (i.e., line edges, or point data) the output may be wrong. +

    +By default, area centroids are often located close to boundaries and not +in the middle of an area. Centroids can be more centrally located with +the -c flag. +

    EXAMPLES

    The examples are based on the North Carolina sample dataset: From a58e17817a44d09f5bb1a0bf462bf8a2ab6ed115 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Sat, 23 Nov 2024 01:51:16 +0100 Subject: [PATCH 25/45] man: fix KeyError: 'MDDIR' in man/build_md.py (#4739) At time the GRASS GIS main compilation with addons with `cron_grass_preview_build_binaries.sh` is broken: https://grass.osgeo.org/grass85/binary/linux/snapshot/build.log.txt ``` ... Parsing ... SUCCESS Parsing ... FAILED Parsing ... FAILED Parsing ... FAILED Parsing ... FAILED + cp /home/neteler/.grass8/addons/modules.xml /var/www/code_and_data/addons/grass8/modules.xml + export ARCH + export ARCH_DISTDIR=/home/neteler/src//main/dist.x86_64-pc-linux-gnu + export GISBASE=/home/neteler/src//main/dist.x86_64-pc-linux-gnu + export VERSION_NUMBER=8.5 + python3 /home/neteler/src//main/man/build_keywords.py /var/www/code_and_data/grass85/manuals/ /var/www/code_and_data/grass85/manuals/addons/ Traceback (most recent call last): File "/home/neteler/src//main/man/build_keywords.py", line 202, in build_keywords("md") File "/home/neteler/src//main/man/build_keywords.py", line 68, in build_keywords from build_md import ( File "/home/neteler/src/main/man/build_md.py", line 264, in man_dir = os.path.join(os.environ["MDDIR"], "source") File "/usr/lib/python3.9/os.py", line 679, in __getitem__ raise KeyError(key) from None KeyError: 'MDDIR' ``` This PR attemps to fix this bug (inspired by `man/build_html.py`). Tested on grass.osgeo.org (without log file). Co-authored-by: Martin Landa --- man/build_md.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/build_md.py b/man/build_md.py index 4976c8f6364..0aae069edef 100644 --- a/man/build_md.py +++ b/man/build_md.py @@ -261,6 +261,6 @@ def get_desc(cmd): ############################################################################ -man_dir = os.path.join(os.environ["MDDIR"], "source") +man_dir = os.path.join(os.environ["ARCH_DISTDIR"], "docs", "mkdocs", "source") ############################################################################ From 29bb77b6a407d562e40b7b1c0934146147988c61 Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Fri, 22 Nov 2024 20:48:44 -0500 Subject: [PATCH 26/45] r.watershed: Fix Resource Leak issue (#4687) * Fix Resource Leak issue * G_free() --- raster/r.watershed/ram/do_cum.c | 3 +++ raster/r.watershed/seg/do_cum.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/raster/r.watershed/ram/do_cum.c b/raster/r.watershed/ram/do_cum.c index c882b82bb46..0bebc9dee46 100644 --- a/raster/r.watershed/ram/do_cum.c +++ b/raster/r.watershed/ram/do_cum.c @@ -218,6 +218,8 @@ int do_cum(void) } } G_free(astar_pts); + G_free(contour); + G_free(dist_to_nbr); return 0; } @@ -632,6 +634,7 @@ int do_cum_mfd(void) G_free(dist_to_nbr); G_free(weight); + G_free(contour); return 0; } diff --git a/raster/r.watershed/seg/do_cum.c b/raster/r.watershed/seg/do_cum.c index bd5bbebbed9..f7918ecdb5c 100644 --- a/raster/r.watershed/seg/do_cum.c +++ b/raster/r.watershed/seg/do_cum.c @@ -232,6 +232,8 @@ int do_cum(void) G_percent(do_points, do_points, 1); /* finish it */ seg_close(&astar_pts); + G_free(dist_to_nbr); + G_free(contour); return 0; } From 6acffcb86e76b354ea8a3118d506fc45182ce67a Mon Sep 17 00:00:00 2001 From: Mohan Yelugoti Date: Fri, 22 Nov 2024 20:55:31 -0500 Subject: [PATCH 27/45] lib/vector/Vlib: Fix out-of-scope memory access (#4667) A local array was used to store column name and column type for each column, and a pointer to this local array was stored and accessed outside its scope, which can cause undefined behavior. To avoid this, use memory from heap to store this information so that it's accessible outside where its defined and free this memory at the end to avoid memory leaks. This was found using cppcheck tool. Signed-off-by: Mohan Yelugoti --- lib/vector/Vlib/dbcolumns.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/vector/Vlib/dbcolumns.c b/lib/vector/Vlib/dbcolumns.c index e3cf915a9ec..f0c6f5bc514 100644 --- a/lib/vector/Vlib/dbcolumns.c +++ b/lib/vector/Vlib/dbcolumns.c @@ -154,7 +154,7 @@ const char *Vect_get_column_names_types(struct Map_info *Map, int field) dbHandle handle; dbString table_name; dbTable *table; - const char **col_type_names; + char **col_type_names; char *list; num_dblinks = Vect_get_num_dblinks(Map); @@ -180,16 +180,21 @@ const char *Vect_get_column_names_types(struct Map_info *Map, int field) ncols = db_get_table_number_of_columns(table); col_type_names = G_malloc(ncols * sizeof(char *)); for (col = 0; col < ncols; col++) { - char buf[256]; + col_type_names[col] = (char *)G_calloc(256, sizeof(char)); - sprintf(buf, "%s(%s)", + sprintf(col_type_names[col], "%s(%s)", db_get_column_name(db_get_table_column(table, col)), db_sqltype_name( db_get_column_sqltype(db_get_table_column(table, col)))); - col_type_names[col] = buf; } - if ((list = G_str_concat(col_type_names, ncols, ",", BUFF_MAX)) == NULL) + + if ((list = G_str_concat((const char **)col_type_names, ncols, ",", + BUFF_MAX)) == NULL) list = G_store(""); + + for (col = 0; col < ncols; col++) { + G_free(col_type_names[col]); + } G_free(col_type_names); G_debug(3, "%s", list); From b2c7fcef322f44c48b84da44c1a4f48b6e567b99 Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Fri, 22 Nov 2024 20:57:17 -0500 Subject: [PATCH 28/45] v.in.ascii: Fix Resource Leak issue in points.c (#4729) --- vector/v.in.ascii/points.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vector/v.in.ascii/points.c b/vector/v.in.ascii/points.c index 0fd1899c2e2..ab1720f78d7 100644 --- a/vector/v.in.ascii/points.c +++ b/vector/v.in.ascii/points.c @@ -494,6 +494,9 @@ int points_to_bin(FILE *ascii, int rowlen, struct Map_info *Map, G_free_tokens(tokens); } G_percent(nrows, nrows, 2); + Vect_destroy_line_struct(Points); + Vect_destroy_cats_struct(Cats); + G_free(buf); return 0; } From 08ce5bf4de4260cfe7c31304de4704fa563754fe Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:36:07 -0500 Subject: [PATCH 29/45] v.univar: Fix Resource Leak issue in main.c (#4730) --- vector/v.univar/main.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vector/v.univar/main.c b/vector/v.univar/main.c index 85217498035..5bfa2b672f8 100644 --- a/vector/v.univar/main.c +++ b/vector/v.univar/main.c @@ -358,6 +358,8 @@ void select_from_geometry(void) G_debug(3, "i=%d j=%d sum = %f val=%f", i, j, sum, val); } } + Vect_destroy_line_struct(jPoints); + Vect_destroy_line_struct(iPoints); } void select_from_database(void) From b4e4cb0fe949881199758548a3e912a7b63a966f Mon Sep 17 00:00:00 2001 From: ShubhamDesai <42180509+ShubhamDesai@users.noreply.github.com> Date: Fri, 22 Nov 2024 22:36:41 -0500 Subject: [PATCH 30/45] v.net: Fix Resource Leak issue in arcs.c (#4735) --- vector/v.net/arcs.c | 1 + 1 file changed, 1 insertion(+) diff --git a/vector/v.net/arcs.c b/vector/v.net/arcs.c index 6d18f760bfd..20554fc19f9 100644 --- a/vector/v.net/arcs.c +++ b/vector/v.net/arcs.c @@ -68,6 +68,7 @@ int create_arcs(FILE *file, struct Map_info *Pnts, struct Map_info *Out, Vect_destroy_line_struct(points); Vect_destroy_cats_struct(cats); + Vect_destroy_line_struct(points2); return narcs; } From 71b1f09f633a0f9b69c293b549ce52c13089b293 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 07:45:52 -0500 Subject: [PATCH 31/45] CI(deps): Update pre-commit hook igorshubovych/markdownlint-cli to v0.43.0 (#4743) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 449a9a61f04..3579bd129d6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -43,7 +43,7 @@ repos: - id: ruff args: [--fix, --preview] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.42.0 + rev: v0.43.0 hooks: - id: markdownlint-fix # Using this mirror lets us use mypyc-compiled black, which is about 2x faster From f1093bdc6aed25355ff1d74d3e1e07c034b21725 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 13:48:45 +0000 Subject: [PATCH 32/45] CI(deps): Update ruff to v0.8.0 (#4738) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CI(deps): Update ruff to v0.8.0 * style: PT004 has been removed in ruff 0.8.0, ignoring had no effect * style: Fix unraw-re-pattern (RUF039) Ruff rule: https://docs.astral.sh/ruff/rules/unraw-re-pattern/ Newly introduced ruff rule --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- .github/workflows/python-code-quality.yml | 2 +- .pre-commit-config.yaml | 2 +- display/d.text/test.py | 4 ++-- gui/wxpython/gmodeler/model.py | 2 +- gui/wxpython/photo2image/ip2i_manager.py | 2 +- lib/init/grass.py | 2 +- pyproject.toml | 3 +-- python/grass/gunittest/case.py | 4 ++-- python/grass/script/utils.py | 8 ++++---- raster/r.topidx/arc_to_gridatb.py | 2 +- raster/r.topidx/gridatb_to_arc.py | 4 ++-- utils/g.html2man/g.html2man.py | 2 +- utils/g.html2man/ggroff.py | 2 +- utils/gitlog2changelog.py | 6 +++--- utils/mkhtml.py | 18 +++++++++--------- utils/mkrest.py | 4 ++-- 16 files changed, 33 insertions(+), 34 deletions(-) diff --git a/.github/workflows/python-code-quality.yml b/.github/workflows/python-code-quality.yml index 5d1a3ac1539..e0c7dfc4e85 100644 --- a/.github/workflows/python-code-quality.yml +++ b/.github/workflows/python-code-quality.yml @@ -36,7 +36,7 @@ jobs: # renovate: datasource=pypi depName=bandit BANDIT_VERSION: "1.7.10" # renovate: datasource=pypi depName=ruff - RUFF_VERSION: "0.7.4" + RUFF_VERSION: "0.8.0" runs-on: ${{ matrix.os }} permissions: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3579bd129d6..a486f2ee0da 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -37,7 +37,7 @@ repos: ) - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.7.4 + rev: v0.8.0 hooks: # Run the linter. - id: ruff diff --git a/display/d.text/test.py b/display/d.text/test.py index 1089096d2ef..398cfecf428 100755 --- a/display/d.text/test.py +++ b/display/d.text/test.py @@ -73,8 +73,8 @@ def text(in_text): print( ".L 0\n" + re.sub( - '(".*?")', + r'(".*?")', "\n.C red\n,\\g<0>\n.C gray\n", - re.sub("\n", "\n.L 1\n.L 0\n", re.sub("(?m)^#.*\n?", "", src)), + re.sub(r"\n", "\n.L 1\n.L 0\n", re.sub(r"(?m)^#.*\n?", "", src)), ) ) diff --git a/gui/wxpython/gmodeler/model.py b/gui/wxpython/gmodeler/model.py index f321d2a206f..2a4673f511a 100644 --- a/gui/wxpython/gmodeler/model.py +++ b/gui/wxpython/gmodeler/model.py @@ -2672,7 +2672,7 @@ def _getParamName(self, parameter_name, item): @staticmethod def _getModuleNickname(item): return "{module_name}{module_id}".format( - module_name=re.sub("[^a-zA-Z]+", "", item.GetLabel()), + module_name=re.sub(r"[^a-zA-Z]+", "", item.GetLabel()), module_id=item.GetId(), ) diff --git a/gui/wxpython/photo2image/ip2i_manager.py b/gui/wxpython/photo2image/ip2i_manager.py index 37985dad5e4..e3832c681b4 100644 --- a/gui/wxpython/photo2image/ip2i_manager.py +++ b/gui/wxpython/photo2image/ip2i_manager.py @@ -433,7 +433,7 @@ def __init__( fc_count = 0 for line in fc: fc_count += 1 - if re.search("NUM", line): + if re.search(r"NUM", line): storeLine = fc_count numberOfFiducial = int(line.split()[-1]) dataFiducialX = [] diff --git a/lib/init/grass.py b/lib/init/grass.py index 505d48dadae..6e9dcbf7a58 100755 --- a/lib/init/grass.py +++ b/lib/init/grass.py @@ -1015,7 +1015,7 @@ def load_env(grass_env_file): # Regular expression for lines starting with "export var=val" (^export # lines below). Environment variables should start with a-zA-Z or _. # \1 and \2 are a variable name and its value, respectively. - export_re = re.compile("^export[ \t]+([a-zA-Z_]+[a-zA-Z0-9_]*)=(.*?)[ \t]*$") + export_re = re.compile(r"^export[ \t]+([a-zA-Z_]+[a-zA-Z0-9_]*)=(.*?)[ \t]*$") for line in readfile(grass_env_file).splitlines(): # match ^export lines diff --git a/pyproject.toml b/pyproject.toml index c9f621a679f..c550cf71faa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ extend-exclude = ''' ''' [tool.ruff] -required-version = ">=0.6.0" +required-version = ">=0.8.0" builtins = ["_"] @@ -183,7 +183,6 @@ ignore = [ "PLW1641", # eq-without-hash "PLW2901", # redefined-loop-name "PLW3201", # bad-dunder-method-name - "PT004", # pytest-missing-fixture-name-underscore # deprecated, so doesn't appear with --preview "PTH100", # os-path-abspath "PTH101", # os-chmod "PTH102", # os-mkdir diff --git a/python/grass/gunittest/case.py b/python/grass/gunittest/case.py index 4e0ee3ab24d..49a378d6133 100644 --- a/python/grass/gunittest/case.py +++ b/python/grass/gunittest/case.py @@ -1320,10 +1320,10 @@ def runModule(cls, module, expecting_stdout=False, **kwargs): # TODO: standardized error code would be handy here import re - if re.search("Raster map.*not found", errors, flags=re.DOTALL): + if re.search(r"Raster map.*not found", errors, flags=re.DOTALL): errors += "\nSee available raster maps:\n" errors += call_module("g.list", type="raster") - if re.search("Vector map.*not found", errors, flags=re.DOTALL): + if re.search(r"Vector map.*not found", errors, flags=re.DOTALL): errors += "\nSee available vector maps:\n" errors += call_module("g.list", type="vector") # TODO: message format, parameters diff --git a/python/grass/script/utils.py b/python/grass/script/utils.py index 0a32a9e7b4e..e4bfc9cc484 100644 --- a/python/grass/script/utils.py +++ b/python/grass/script/utils.py @@ -345,7 +345,7 @@ def convert(text): def alphanum_key(actual_key): sort_key = key(actual_key) if key else actual_key - return [convert(c) for c in re.split("([0-9]+)", sort_key)] + return [convert(c) for c in re.split(r"([0-9]+)", sort_key)] items.sort(key=alphanum_key) @@ -501,15 +501,15 @@ def legalize_vector_name(name, fallback_prefix="x"): # The implementation is based on Vect_legal_filename(). if not name: raise ValueError("name cannot be empty") - if fallback_prefix and re.match("[^A-Za-z]", fallback_prefix[0]): + if fallback_prefix and re.match(r"[^A-Za-z]", fallback_prefix[0]): raise ValueError("fallback_prefix must start with an ASCII letter") - if fallback_prefix and re.match("[^A-Za-z]", name[0], flags=re.ASCII): + if fallback_prefix and re.match(r"[^A-Za-z]", name[0], flags=re.ASCII): # We prefix here rather than just replace, because in cases of unique # identifiers, e.g., columns or node names, replacing the first # character by the same replacement character increases chances of # conflict (e.g. column names 10, 20, 30). name = "{fallback_prefix}{name}".format(**locals()) - name = re.sub("[^A-Za-z0-9_]", "_", name, flags=re.ASCII) + name = re.sub(r"[^A-Za-z0-9_]", "_", name, flags=re.ASCII) keywords = ["and", "or", "not"] if name in keywords: name = "{name}_".format(**locals()) diff --git a/raster/r.topidx/arc_to_gridatb.py b/raster/r.topidx/arc_to_gridatb.py index 3eba7114430..d47d399618d 100755 --- a/raster/r.topidx/arc_to_gridatb.py +++ b/raster/r.topidx/arc_to_gridatb.py @@ -13,7 +13,7 @@ def match(pattern, string): return False -if len(sys.argv) != 3 or re.match("^-*help", sys.argv[1]): +if len(sys.argv) != 3 or re.match(r"^-*help", sys.argv[1]): print("Usage: arc.to.gridatb.py arc_file gridatb_file") sys.exit() diff --git a/raster/r.topidx/gridatb_to_arc.py b/raster/r.topidx/gridatb_to_arc.py index 41111f3d6ba..d80f6797a65 100755 --- a/raster/r.topidx/gridatb_to_arc.py +++ b/raster/r.topidx/gridatb_to_arc.py @@ -7,7 +7,7 @@ len(sys.argv) == 1 or len(sys.argv) == 4 or len(sys.argv) > 5 - or re.match("^-*help", sys.argv[1]) + or re.match(r"^-*help", sys.argv[1]) ): print("Usage: gridatb.to.arc.py gridatb_file arc_file [xllcorner yllcorner]") sys.exit() @@ -33,7 +33,7 @@ title = inf.readline() inline = inf.readline() -m = re.match("^[ \t]*([0-9.]+)[ \t]+([0-9.]+)[ \t]+([0-9.]+)[ \t]*$", inline) +m = re.match(r"^[ \t]*([0-9.]+)[ \t]+([0-9.]+)[ \t]+([0-9.]+)[ \t]*$", inline) if not m: print(f"{infname}: Invalid input file format") inf.close() diff --git a/utils/g.html2man/g.html2man.py b/utils/g.html2man/g.html2man.py index 58ffb2f7bca..46a749ae5d3 100755 --- a/utils/g.html2man/g.html2man.py +++ b/utils/g.html2man/g.html2man.py @@ -47,7 +47,7 @@ def main(): sf.close() # strip excess whitespace - blank_re = re.compile("[ \t\n]*\n([ \t]*\n)*") + blank_re = re.compile(r"[ \t\n]*\n([ \t]*\n)*") s = blank_re.sub("\n", s) s = s.lstrip() diff --git a/utils/g.html2man/ggroff.py b/utils/g.html2man/ggroff.py index a0458dd0334..c96fec4eab7 100644 --- a/utils/g.html2man/ggroff.py +++ b/utils/g.html2man/ggroff.py @@ -69,7 +69,7 @@ def __init__(self, filename, stream=sys.stdout): "index": [], } self.stack = [] - self.strip_re = re.compile("^[ \t]+") + self.strip_re = re.compile(r"^[ \t]+") self.filename = filename self.at_bol = True diff --git a/utils/gitlog2changelog.py b/utils/gitlog2changelog.py index 5ad459aa2b1..f878041ca83 100755 --- a/utils/gitlog2changelog.py +++ b/utils/gitlog2changelog.py @@ -61,7 +61,7 @@ # Match the author line and extract the part we want # (Don't use startswith to allow Author override inside commit message.) elif "Author:" in line: - authorList = re.split(": ", line, 1) + authorList = re.split(r": ", line, 1) try: author = authorList[1] author = author[0 : len(author) - 1] @@ -71,7 +71,7 @@ # Match the date line elif line.startswith("Date:"): - dateList = re.split(": ", line, 1) + dateList = re.split(r": ", line, 1) try: date = dateList[1] date = date[0 : len(date) - 1] @@ -100,7 +100,7 @@ else: message = message + " " + line.strip() # If this line is hit all of the files have been stored for this commit - elif re.search("files? changed", line): + elif re.search(r"files? changed", line): filesFound = True continue # Collect the files for this commit. FIXME: Still need to add +/- to files diff --git a/utils/mkhtml.py b/utils/mkhtml.py index 363c513a7ed..c01ab0534cb 100644 --- a/utils/mkhtml.py +++ b/utils/mkhtml.py @@ -234,7 +234,7 @@ def handle_data(self, data): def escape_href(label): # remove html tags - label = re.sub("<[^<]+?>", "", label) + label = re.sub(r"<[^<]+?>", "", label) # fix   label = label.replace(" ", "") # fix " @@ -351,16 +351,16 @@ def update_toc(data): # process header src_data = read_file(src_file) -name = re.search("()", src_data, re.IGNORECASE) +name = re.search(r"()", src_data, re.IGNORECASE) pgm_desc = "GRASS GIS Reference Manual" if name: pgm = name.group(2).strip().split("-", 1)[0].strip() name_desc = re.search( - "()", src_data, re.IGNORECASE + r"()", src_data, re.IGNORECASE ) if name_desc: pgm_desc = name_desc.group(2).strip() -desc = re.search("()", src_data, re.IGNORECASE) +desc = re.search(r"()", src_data, re.IGNORECASE) if desc: pgm = desc.group(2).strip() header_tmpl = string.Template(header_base + header_nopgm) @@ -369,7 +369,7 @@ def update_toc(data): else: header_tmpl = string.Template(header_base + header_pgm_desc) -if not re.search("", src_data, re.IGNORECASE): +if not re.search(r"", src_data, re.IGNORECASE): tmp_data = read_file(tmp_file) """ Adjusting keywords html pages paths if add-on html man page @@ -395,7 +395,7 @@ def update_toc(data): orig_keywords_paths.group(1), ",".join(new_keywords_paths), ) - if not re.search("", tmp_data, re.IGNORECASE): + if not re.search(r"", tmp_data, re.IGNORECASE): sys.stdout.write(header_tmpl.substitute(PGM=pgm, PGM_DESC=pgm_desc)) if tmp_data: @@ -403,7 +403,7 @@ def update_toc(data): for line in tmp_data.splitlines(True): # The cleanup happens on Makefile level too. if not re.search( - "|| ", line, re.IGNORECASE + r"|| ", line, re.IGNORECASE ): if header_logo_img_el in line: sys.stdout.write(line) @@ -420,7 +420,7 @@ def update_toc(data): # if is found, suppose a complete html is provided. # otherwise, generate module class reference: -if re.search("", src_data, re.IGNORECASE): +if re.search(r"", src_data, re.IGNORECASE): sys.exit() index_names = { @@ -453,7 +453,7 @@ def to_title(name): index_titles[key] = to_title(name) # process footer -index = re.search("()", src_data, re.IGNORECASE) +index = re.search(r"()", src_data, re.IGNORECASE) if index: index_name = index.group(2).strip() if "|" in index_name: diff --git a/utils/mkrest.py b/utils/mkrest.py index 8d156e0bcc7..6270b78c6b2 100755 --- a/utils/mkrest.py +++ b/utils/mkrest.py @@ -66,7 +66,7 @@ def read_file(name): src_data = read_file(src_file) -title = re.search("()", src_data, re.IGNORECASE) +title = re.search(r"()", src_data, re.IGNORECASE) if title: title_name = title.group(2).strip() @@ -108,7 +108,7 @@ def read_file(name): "v": "vector", } -index = re.search("()", src_data, re.IGNORECASE) +index = re.search(r"()", src_data, re.IGNORECASE) if index: index_name = index.group(2).strip() From e7ae0b832cd2febc50078d36f137f8bae44d5e8c Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Sat, 23 Nov 2024 15:14:06 +0100 Subject: [PATCH 33/45] lib/gis: markdown parser lowercase and extension fixes (#4740) This PR updates the Markdown support in the parser for the manual in terms of - converting keywords to lowercase (e.g. `dist.x86_64-pc-linux-gnu/docs/mkdocs/site/keywords.html#modis`) - replacing of `.html` with `.md` in certain cases --- lib/gis/parser_rest_md.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/gis/parser_rest_md.c b/lib/gis/parser_rest_md.c index c607acc4214..a5c74874202 100644 --- a/lib/gis/parser_rest_md.c +++ b/lib/gis/parser_rest_md.c @@ -517,7 +517,7 @@ void print_escaped_for_md_keywords(FILE *f, const char *str) fputc(*s, f); } } - fprintf(f, ".html)"); + fprintf(f, ".md)"); } else { /* first and other than second keyword */ if (st->n_keys > 0 && strcmp(st->module_info.keywords[0], str) == 0) { @@ -532,13 +532,14 @@ void print_escaped_for_md_keywords(FILE *f, const char *str) fputc(*s, f); } } - fprintf(f, ".html)"); + fprintf(f, ".md)"); } else { /* keyword index */ char *str_link; str_link = G_str_replace(str_s, " ", "%20"); - fprintf(f, "[%s](keywords.html#%s)", str_s, str_link); + G_str_to_lower(str_link); + fprintf(f, "[%s](keywords.md#%s)", str_s, str_link); G_free(str_link); } } From ab67825754e4da69a5449ae5534a20d6a6ecd30d Mon Sep 17 00:00:00 2001 From: Martin Landa Date: Sat, 23 Nov 2024 18:39:57 +0100 Subject: [PATCH 34/45] make: Update DB.make for markdown support (#4742) Co-authored-by: Markus Neteler --- include/Make/DB.make | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Make/DB.make b/include/Make/DB.make index a8ed51536f3..797da921ee5 100644 --- a/include/Make/DB.make +++ b/include/Make/DB.make @@ -10,7 +10,7 @@ include $(MODULE_TOPDIR)/include/Make/Compile.make dbmi: $(DBDRIVERDIR)/$(PGM)$(EXE) db_html -db_html: $(HTMLDIR)/grass-$(PGM).html $(MANDIR)/grass-$(PGM).$(MANSECT) +db_html: $(HTMLDIR)/grass-$(PGM).html $(MANDIR)/grass-$(PGM).$(MANSECT) # $(MDDIR)/source/grass-$(PGM).md $(DBDRIVERDIR)/$(PGM)$(EXE): $(ARCH_OBJS) $(DEPENDENCIES) $(call linker) From 6c45ad9cf279590b666bc15dae788aa9d74e5d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edouard=20Choini=C3=A8re?= <27212526+echoix@users.noreply.github.com> Date: Sat, 23 Nov 2024 14:06:36 -0500 Subject: [PATCH 35/45] man: Use a context manager for opening files (#4291) * man/build_html: Use context manager for get_desc * man/build_topics: Use context managers for opening files * man/build_rest: Replace read_file and write_file with Path.read_text and Path.write_text * man/build_rest: Use context manager for get_desc * man/build_index_rest: Use a context manager for opening file * man/build_keywords: Use a context manager for opening files * man/build_class_graphical: Use a context manager for opening files * man/build_full_index_rest: Use a context manager for opening files * man/build_full_index: Use a context manager for opening files * man/build_class_rest: Use a context manager for opening files * man/build_class: Use a context manager for opening files * style: Remove unneeded SIM115 exclusions in man/ * man/build_topics: Use context managers for opening keyfile * man/build_html: Add missing Path import * man/build_keywords: Ignore line too long (E501) * Sort imports in build_rest * man/build_topics: write_footer need to be inside keyfile context manager --- man/build_class.py | 60 +++++++++-------- man/build_class_graphical.py | 101 ++++++++++++++-------------- man/build_class_rest.py | 37 +++++------ man/build_full_index.py | 52 +++++++-------- man/build_full_index_rest.py | 46 +++++++------ man/build_html.py | 39 +++++------ man/build_index_rest.py | 10 ++- man/build_keywords.py | 97 +++++++++++++-------------- man/build_rest.py | 48 +++++++------- man/build_topics.py | 123 +++++++++++++++++++---------------- pyproject.toml | 3 +- 11 files changed, 303 insertions(+), 313 deletions(-) diff --git a/man/build_class.py b/man/build_class.py index a75fe62fe58..7dc53c121bf 100644 --- a/man/build_class.py +++ b/man/build_class.py @@ -33,41 +33,39 @@ def build_class(ext): os.chdir(man_dir) filename = modclass + f".{ext}" - f = open(filename + ".tmp", "w") - - write_header( - f, - "{} modules - GRASS GIS {} Reference Manual".format( - modclass.capitalize(), grass_version - ), - template=ext, - ) - modclass_lower = modclass.lower() - modclass_visible = modclass - if modclass_lower not in no_intro_page_classes: - if modclass_visible == "raster3d": - # convert keyword to nice form - modclass_visible = "3D raster" - f.write( - modclass_intro_tmpl.substitute( - modclass=modclass_visible, modclass_lower=modclass_lower - ) + with open(filename + ".tmp", "w") as f: + write_header( + f, + "{} modules - GRASS GIS {} Reference Manual".format( + modclass.capitalize(), grass_version + ), + template=ext, ) - f.write(modclass_tmpl.substitute(modclass=to_title(modclass_visible))) + modclass_lower = modclass.lower() + modclass_visible = modclass + if modclass_lower not in no_intro_page_classes: + if modclass_visible == "raster3d": + # convert keyword to nice form + modclass_visible = "3D raster" + f.write( + modclass_intro_tmpl.substitute( + modclass=modclass_visible, modclass_lower=modclass_lower + ) + ) + f.write(modclass_tmpl.substitute(modclass=to_title(modclass_visible))) - # for all modules: - for cmd in get_files(man_dir, cls, extension=ext): - basename = os.path.splitext(cmd)[0] - desc = check_for_desc_override(basename) - if desc is None: - desc = get_desc(cmd) - f.write(desc2_tmpl.substitute(cmd=cmd, basename=basename, desc=desc)) - if ext == "html": - f.write("\n") + # for all modules: + for cmd in get_files(man_dir, cls, extension=ext): + basename = os.path.splitext(cmd)[0] + desc = check_for_desc_override(basename) + if desc is None: + desc = get_desc(cmd) + f.write(desc2_tmpl.substitute(cmd=cmd, basename=basename, desc=desc)) + if ext == "html": + f.write("\n") - write_footer(f, f"index.{ext}", year, template=ext) + write_footer(f, f"index.{ext}", year, template=ext) - f.close() replace_file(filename) diff --git a/man/build_class_graphical.py b/man/build_class_graphical.py index b1bd6eede7f..0eed97beb46 100644 --- a/man/build_class_graphical.py +++ b/man/build_class_graphical.py @@ -131,65 +131,62 @@ def generate_page_for_category( short_family, module_family, imgs, year, skip_no_image=False ): filename = module_family + "_graphical.html" - - output = open(filename + ".tmp", "w") - - output.write( - header1_tmpl.substitute( - title="GRASS GIS %s Reference Manual: Graphical index" % grass_version - ) - ) - output.write(header_graphical_index_tmpl) - - if module_family.lower() not in {"general", "postscript"}: - if module_family == "raster3d": - # covert keyword to nice form - module_family = "3D raster" + with open(filename + ".tmp", "w") as output: output.write( - modclass_intro_tmpl.substitute( - modclass=module_family, modclass_lower=module_family.lower() + header1_tmpl.substitute( + title="GRASS GIS %s Reference Manual: Graphical index" % grass_version ) ) - if module_family == "wxGUI": - output.write("

    wxGUI components:

    ") - elif module_family == "guimodules": - output.write("

    g.gui.* modules:

    ") - else: - output.write("

    {0} modules:

    ".format(to_title(module_family))) - output.write('
      ') - - # for all modules: - for cmd in get_files(man_dir, short_family, ignore_gui=False): - basename = os.path.splitext(cmd)[0] - desc = check_for_desc_override(basename) - if desc is None: - desc = get_desc(cmd) - img = get_module_image(basename, imgs) - img_class = "linkimg" - if skip_no_image and not img: - continue - if not img: - img = "grass_logo.png" - img_class = "default-img" - if basename.startswith("wxGUI"): - basename = basename.replace(".", " ") - output.write( - "
    • " - '' - '' - '{name} ' - '{desc}' - "" - "
    • ".format( - html=cmd, img=img, name=basename, desc=desc, img_class=img_class + output.write(header_graphical_index_tmpl) + + if module_family.lower() not in {"general", "postscript"}: + if module_family == "raster3d": + # covert keyword to nice form + module_family = "3D raster" + output.write( + modclass_intro_tmpl.substitute( + modclass=module_family, modclass_lower=module_family.lower() + ) + ) + if module_family == "wxGUI": + output.write("

      wxGUI components:

      ") + elif module_family == "guimodules": + output.write("

      g.gui.* modules:

      ") + else: + output.write("

      {0} modules:

      ".format(to_title(module_family))) + output.write('
        ') + + # for all modules: + for cmd in get_files(man_dir, short_family, ignore_gui=False): + basename = os.path.splitext(cmd)[0] + desc = check_for_desc_override(basename) + if desc is None: + desc = get_desc(cmd) + img = get_module_image(basename, imgs) + img_class = "linkimg" + if skip_no_image and not img: + continue + if not img: + img = "grass_logo.png" + img_class = "default-img" + if basename.startswith("wxGUI"): + basename = basename.replace(".", " ") + output.write( + "
      • " + '' + '' + '{name} ' + '{desc}' + "" + "
      • ".format( + html=cmd, img=img, name=basename, desc=desc, img_class=img_class + ) ) - ) - output.write("
      ") + output.write("
    ") - write_footer(output, "index.html", year, template="html") + write_footer(output, "index.html", year, template="html") - output.close() replace_file(filename) diff --git a/man/build_class_rest.py b/man/build_class_rest.py index 05aec125d04..97d49a5cdb8 100644 --- a/man/build_class_rest.py +++ b/man/build_class_rest.py @@ -32,27 +32,26 @@ modclass = sys.argv[2] filename = modclass + ".txt" - -f = open(filename + ".tmp", "wb") - -write_rest_header(f, "GRASS GIS %s Reference Manual: %s" % (grass_version, modclass)) -if modclass.lower() not in {"general", "miscellaneous", "postscript"}: - f.write( - modclass_intro_tmpl.substitute( - modclass=modclass, modclass_lower=modclass.lower() - ) +with open(filename + ".tmp", "wb") as f: + write_rest_header( + f, "GRASS GIS %s Reference Manual: %s" % (grass_version, modclass) ) -f.write(modclass_tmpl.substitute(modclass=modclass)) + if modclass.lower() not in {"general", "miscellaneous", "postscript"}: + f.write( + modclass_intro_tmpl.substitute( + modclass=modclass, modclass_lower=modclass.lower() + ) + ) + f.write(modclass_tmpl.substitute(modclass=modclass)) -# for all modules: -for cmd in rest_files(cls): - basename = os.path.splitext(cmd)[0] - desc = check_for_desc_override(basename) - if desc is None: - desc = get_desc(cmd) - f.write(desc2_tmpl.substitute(basename=basename, desc=desc)) + # for all modules: + for cmd in rest_files(cls): + basename = os.path.splitext(cmd)[0] + desc = check_for_desc_override(basename) + if desc is None: + desc = get_desc(cmd) + f.write(desc2_tmpl.substitute(basename=basename, desc=desc)) -write_rest_footer(f, "index.txt") + write_rest_footer(f, "index.txt") -f.close() replace_file(filename) diff --git a/man/build_full_index.py b/man/build_full_index.py index 150f28fd00b..a47630e3e31 100644 --- a/man/build_full_index.py +++ b/man/build_full_index.py @@ -56,37 +56,35 @@ def build_full_index(ext): # begin full index: filename = f"full_index.{ext}" - f = open(filename + ".tmp", "w") - - write_header( - f, - "GRASS GIS {} Reference Manual - Full index".format(grass_version), - body_width="80%", - template=ext, - ) + with open(filename + ".tmp", "w") as f: + write_header( + f, + "GRASS GIS {} Reference Manual - Full index".format(grass_version), + body_width="80%", + template=ext, + ) - # generate main index of all modules: - f.write(full_index_header) + # generate main index of all modules: + f.write(full_index_header) - if ext == "html": - f.write(toc) - - # for all module groups: - for cls, cls_label in classes: - f.write(cmd2_tmpl.substitute(cmd_label=to_title(cls_label), cmd=cls)) - # for all modules: - for cmd in get_files(man_dir, cls, extension=ext): - basename = os.path.splitext(cmd)[0] - desc = check_for_desc_override(basename) - if desc is None: - desc = get_desc(cmd) - f.write(desc1_tmpl.substitute(cmd=cmd, basename=basename, desc=desc)) if ext == "html": - f.write("\n") - - write_footer(f, f"index.{ext}", year, template=ext) + f.write(toc) + + # for all module groups: + for cls, cls_label in classes: + f.write(cmd2_tmpl.substitute(cmd_label=to_title(cls_label), cmd=cls)) + # for all modules: + for cmd in get_files(man_dir, cls, extension=ext): + basename = os.path.splitext(cmd)[0] + desc = check_for_desc_override(basename) + if desc is None: + desc = get_desc(cmd) + f.write(desc1_tmpl.substitute(cmd=cmd, basename=basename, desc=desc)) + if ext == "html": + f.write("\n") + + write_footer(f, f"index.{ext}", year, template=ext) - f.close() replace_file(filename) diff --git a/man/build_full_index_rest.py b/man/build_full_index_rest.py index 26183505393..c877d914cc0 100644 --- a/man/build_full_index_rest.py +++ b/man/build_full_index_rest.py @@ -34,34 +34,32 @@ # begin full index: filename = "full_index.txt" -f = open(filename + ".tmp", "wb") +with open(filename + ".tmp", "wb") as f: + write_rest_header(f, "GRASS GIS %s Reference Manual: Full index" % grass_version) -write_rest_header(f, "GRASS GIS %s Reference Manual: Full index" % grass_version) + # generate main index of all modules: + f.write(full_index_header) + # " -# generate main index of all modules: -f.write(full_index_header) -# " + # for cls in classes: + # f.write(cmd1_tmpl.substitute(cmd = cls)) + # if cls != classes[-1]: + # f.write(" | ") -# for cls in classes: -# f.write(cmd1_tmpl.substitute(cmd = cls)) -# if cls != classes[-1]: -# f.write(" | ") + f.write(sections) -f.write(sections) + # for all module groups: + for cls in classes: + f.write(cmd2_tmpl.substitute(cmd=cls)) + # for all modules: + for cmd in rest_files(cls): + basename = os.path.splitext(cmd)[0] + desc = check_for_desc_override(basename) + if desc is None: + desc = get_desc(cmd) + f.write(desc1_tmpl.substitute(basename=basename, desc=desc)) + f.write("\n") -# for all module groups: -for cls in classes: - f.write(cmd2_tmpl.substitute(cmd=cls)) - # for all modules: - for cmd in rest_files(cls): - basename = os.path.splitext(cmd)[0] - desc = check_for_desc_override(basename) - if desc is None: - desc = get_desc(cmd) - f.write(desc1_tmpl.substitute(basename=basename, desc=desc)) - f.write("\n") + write_rest_footer(f, "index.txt") -write_rest_footer(f, "index.txt") - -f.close() replace_file(filename) diff --git a/man/build_html.py b/man/build_html.py index db5a424c738..08596bb169c 100644 --- a/man/build_html.py +++ b/man/build_html.py @@ -1,5 +1,6 @@ import os import string +from pathlib import Path # File template pieces follow @@ -406,25 +407,25 @@ def get_desc(cmd): - f = open(cmd) - while True: - line = f.readline() - if not line: - return "" - if "NAME" in line: - break - - while True: - line = f.readline() - if not line: - return "" - if "SYNOPSIS" in line: - break - if "" in line: - sp = line.split("-", 1) - if len(sp) > 1: - return sp[1].strip() - return None + with Path(cmd).open() as f: + while True: + line = f.readline() + if not line: + return "" + if "NAME" in line: + break + + while True: + line = f.readline() + if not line: + return "" + if "SYNOPSIS" in line: + break + if "" in line: + sp = line.split("-", 1) + if len(sp) > 1: + return sp[1].strip() + return None return "" diff --git a/man/build_index_rest.py b/man/build_index_rest.py index b919042e4af..0986838b19f 100644 --- a/man/build_index_rest.py +++ b/man/build_index_rest.py @@ -21,11 +21,9 @@ os.chdir(rest_dir) filename = "index.txt" -f = open(filename + ".tmp", "w") +with open(filename + ".tmp", "w") as f: + write_rest_header(f, "GRASS GIS %s Reference Manual" % grass_version, True) + write_rest_cmd_overview(f) + write_rest_footer(f, "index.txt") -write_rest_header(f, "GRASS GIS %s Reference Manual" % grass_version, True) -write_rest_cmd_overview(f) -write_rest_footer(f, "index.txt") - -f.close() replace_file(filename) diff --git a/man/build_keywords.py b/man/build_keywords.py index 5793bb9b4d3..546eed62f37 100644 --- a/man/build_keywords.py +++ b/man/build_keywords.py @@ -133,62 +133,59 @@ def build_keywords(ext): if key.lower() < char_list[str(firstchar)].lower(): char_list[str(firstchar.lower())] = key - keywordsfile = open(os.path.join(man_dir, f"keywords.{ext}"), "w") - keywordsfile.write( - header1_tmpl.substitute( - title=f"GRASS GIS {grass_version} Reference Manual - Keywords index" + with open(os.path.join(man_dir, f"keywords.{ext}"), "w") as keywordsfile: + keywordsfile.write( + header1_tmpl.substitute( + title=f"GRASS GIS {grass_version} Reference Manual - Keywords index" + ) ) - ) - keywordsfile.write(headerkeywords_tmpl) - if ext == "html": - keywordsfile.write("
    ") - sortedKeys = sorted(keywords.keys(), key=lambda s: s.lower()) - - for key in sortedKeys: + keywordsfile.write(headerkeywords_tmpl) if ext == "html": - keyword_line = ( - '
    {key}
    '.format( - key=key - ) - ) - else: - keyword_line = f"### **{key}**\n" - for value in sorted(keywords[key]): - man_file_path = get_module_man_file_path(man_dir, value, addons_man_files) + keywordsfile.write("
    ") + sortedKeys = sorted(keywords.keys(), key=lambda s: s.lower()) + + for key in sortedKeys: if ext == "html": - keyword_line += ( - f' {value.replace(f".{ext}", "")},' + keyword_line = '
    {key}
    '.format( # noqa: E501 + key=key ) else: - keyword_line += f' [{value.rsplit(".", 1)[0]}]({man_file_path}),' - keyword_line = keyword_line.rstrip(",") + keyword_line = f"### **{key}**\n" + for value in sorted(keywords[key]): + man_file_path = get_module_man_file_path( + man_dir, value, addons_man_files + ) + if ext == "html": + keyword_line += f' {value.replace(f".{ext}", "")},' # noqa: E501 + else: + keyword_line += f' [{value.rsplit(".", 1)[0]}]({man_file_path}),' + keyword_line = keyword_line.rstrip(",") + if ext == "html": + keyword_line += "
    " + keyword_line += "\n" + keywordsfile.write(keyword_line) if ext == "html": - keyword_line += "
    " - keyword_line += "\n" - keywordsfile.write(keyword_line) - if ext == "html": - keywordsfile.write("
    \n") - if ext == "html": - # create toc - toc = '
    \n

    Table of contents

    ' - test_length = 0 - all_keys = len(char_list.keys()) - for k in sorted(char_list.keys()): - test_length += 1 - # toc += '

  • %s
  • ' % (char_list[k], k) - if test_length % 4 == 0 and test_length != all_keys: - toc += '\n%s, ' % (char_list[k], k) - elif test_length % 4 == 0 and test_length == all_keys: - toc += '\n%s' % (char_list[k], k) - elif test_length == all_keys: - toc += '%s' % (char_list[k], k) - else: - toc += '%s, ' % (char_list[k], k) - toc += "

    \n" - keywordsfile.write(toc) - - write_footer(keywordsfile, f"index.{ext}", year, template=ext) - keywordsfile.close() + keywordsfile.write("\n") + if ext == "html": + # create toc + toc = '
    \n

    Table of contents

    ' # noqa: E501 + test_length = 0 + all_keys = len(char_list.keys()) + for k in sorted(char_list.keys()): + test_length += 1 + # toc += '

  • %s
  • ' % (char_list[k], k) + if test_length % 4 == 0 and test_length != all_keys: + toc += '\n%s, ' % (char_list[k], k) + elif test_length % 4 == 0 and test_length == all_keys: + toc += '\n%s' % (char_list[k], k) + elif test_length == all_keys: + toc += '%s' % (char_list[k], k) + else: + toc += '%s, ' % (char_list[k], k) + toc += "

    \n" + keywordsfile.write(toc) + + write_footer(keywordsfile, f"index.{ext}", year, template=ext) if __name__ == "__main__": diff --git a/man/build_rest.py b/man/build_rest.py index a98a099a076..20d9e9aaca1 100644 --- a/man/build_rest.py +++ b/man/build_rest.py @@ -13,6 +13,7 @@ import os import string +from pathlib import Path # TODO: better fix this in include/Make/Rest.make, see bug RT #5361 @@ -271,16 +272,11 @@ def check_for_desc_override(basename): def read_file(name): - f = open(name) - s = f.read() - f.close() - return s + return Path(name).read_text() def write_file(name, contents): - f = open(name, "w") - f.write(contents) - f.close() + Path(name).write_text(contents) def try_mkdir(path): @@ -337,25 +333,25 @@ def write_rest_footer(f, index_url): def get_desc(cmd): - f = open(cmd) - while True: - line = f.readline() - if not line: - return "" - if "NAME" in line: - break - - while True: - line = f.readline() - if not line: - return "" - if "SYNOPSIS" in line: - break - if "*" in line: - sp = line.split("-", 1) - if len(sp) > 1: - return sp[1].strip() - return None + with Path(cmd).open() as f: + while True: + line = f.readline() + if not line: + return "" + if "NAME" in line: + break + + while True: + line = f.readline() + if not line: + return "" + if "SYNOPSIS" in line: + break + if "*" in line: + sp = line.split("-", 1) + if len(sp) > 1: + return sp[1].strip() + return None return "" diff --git a/man/build_topics.py b/man/build_topics.py index fa4d683f117..a19251cf90f 100644 --- a/man/build_topics.py +++ b/man/build_topics.py @@ -5,6 +5,7 @@ import os import glob +from pathlib import Path year = os.getenv("VERSION_DATE") @@ -35,9 +36,9 @@ def build_topics(ext): files = glob.glob1(man_dir, f"*.{ext}") for fname in files: - fil = open(os.path.join(man_dir, fname)) - # TODO maybe move to Python re (regex) - lines = fil.readlines() + with Path(man_dir, fname).open() as fil: + # TODO maybe move to Python re (regex) + lines = fil.readlines() try: if ext == "html": index_keys = lines.index("

    KEYWORDS

    \n") + 1 @@ -68,63 +69,71 @@ def build_topics(ext): elif fname not in keywords[key]: keywords[key][fname] = desc - topicsfile = open(os.path.join(man_dir, f"topics.{ext}"), "w") - topicsfile.write( - header1_tmpl.substitute( - title="GRASS GIS %s Reference Manual - Topics index" % grass_version + with Path(man_dir, f"topics.{ext}").open("w") as topicsfile: + topicsfile.write( + header1_tmpl.substitute( + title="GRASS GIS %s Reference Manual - Topics index" % grass_version + ) ) - ) - topicsfile.write(headertopics_tmpl) + topicsfile.write(headertopics_tmpl) + + for key, values in sorted(keywords.items(), key=lambda s: s[0].lower()): + with Path(man_dir, f"topic_%s.{ext}" % key).open("w") as keyfile: + if ext == "html": + keyfile.write( + header1_tmpl.substitute( + title="GRASS GIS " + "%s Reference Manual: Topic %s" + % (grass_version, key.replace("_", " ")) + ) + ) + keyfile.write(headerkey_tmpl.substitute(keyword=key.replace("_", " "))) + num_modules = 0 + for mod, desc in sorted(values.items()): + num_modules += 1 + keyfile.write( + desc1_tmpl.substitute( + cmd=mod, desc=desc, basename=mod.replace(f".{ext}", "") + ) + ) + if num_modules >= min_num_modules_for_topic: + topicsfile.writelines( + [ + moduletopics_tmpl.substitute( + key=key, name=key.replace("_", " ") + ) + ] + ) + if ext == "html": + keyfile.write("\n") + else: + keyfile.write("\n") + # link to the keywords index + # TODO: the labels in keywords index are with spaces and capitals + # this should be probably changed to lowercase with underscores + if ext == "html": + keyfile.write( + "

    See also the corresponding keyword" + ' {key}' + " for additional references.".format( + key=key.replace("_", " ") + ) + ) + else: + # expecting markdown + keyfile.write( + "*See also the corresponding keyword" + " [{key}](keywords.md#{key})" + " for additional references.*\n".format( + key=key.replace("_", " ") + ) + ) + + write_footer(keyfile, f"index.{ext}", year, template=ext) - for key, values in sorted(keywords.items(), key=lambda s: s[0].lower()): - keyfile = open(os.path.join(man_dir, f"topic_%s.{ext}" % key), "w") - if ext == "html": - keyfile.write( - header1_tmpl.substitute( - title="GRASS GIS " - "%s Reference Manual: Topic %s" - % (grass_version, key.replace("_", " ")) - ) - ) - keyfile.write(headerkey_tmpl.substitute(keyword=key.replace("_", " "))) - num_modules = 0 - for mod, desc in sorted(values.items()): - num_modules += 1 - keyfile.write( - desc1_tmpl.substitute( - cmd=mod, desc=desc, basename=mod.replace(f".{ext}", "") - ) - ) - if num_modules >= min_num_modules_for_topic: - topicsfile.writelines( - [moduletopics_tmpl.substitute(key=key, name=key.replace("_", " "))] - ) if ext == "html": - keyfile.write("\n") - else: - keyfile.write("\n") - # link to the keywords index - # TODO: the labels in keywords index are with spaces and capitals - # this should be probably changed to lowercase with underscores - if ext == "html": - keyfile.write( - "

    See also the corresponding keyword" - ' {key}' - " for additional references.".format(key=key.replace("_", " ")) - ) - else: - # expecting markdown - keyfile.write( - "*See also the corresponding keyword" - " [{key}](keywords.md#{key})" - " for additional references.*\n".format(key=key.replace("_", " ")) - ) - - write_footer(keyfile, f"index.{ext}", year, template=ext) - if ext == "html": - topicsfile.write("\n") - write_footer(topicsfile, f"index.{ext}", year, template=ext) - topicsfile.close() + topicsfile.write("\n") + write_footer(topicsfile, f"index.{ext}", year, template=ext) if __name__ == "__main__": diff --git a/pyproject.toml b/pyproject.toml index c550cf71faa..85ad3e1283e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -259,6 +259,7 @@ ignore = [ # See https://docs.astral.sh/ruff/settings/#lint_per-file-ignores # "A005", # builtin-module-shadowing # "PLW0108", # unnecessary-lambda +# "SIM115", # open-file-with-context-handler # Ignore `E402` (import violations) in all `__init__.py` files "**.py" = ["PYI066"] "*/testsuite/**.py" = ["PT009", "PT027"] @@ -299,8 +300,6 @@ ignore = [ "lib/imagery/testsuite/test_imagery_sigsetfile.py" = ["FURB152"] "lib/init/grass.py" = ["SIM115"] "locale/grass_po_stats.py" = ["SIM115"] -"man/build_*.py" = ["SIM115"] -"man/parser_standard_options.py" = ["SIM115"] "python/grass/__init__.py" = ["PYI056"] "python/grass/exp*/tests/grass_script_mapset_session_test.py" = ["SIM117"] "python/grass/exp*/tests/grass_script_tmp_mapset_session_test.py" = ["SIM117"] From bea8435a9e84b0e9789cac03aaa5bb9d619194c9 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Sat, 23 Nov 2024 22:10:42 +0100 Subject: [PATCH 36/45] docs: add Intro: Graphical User Interface (#4746) While the Graphical User Interface is important, it lacked an own "landing page" which also appears in the markdown sidebar. This PR adds a wxGUI introduction page. --- db/databaseintro.html | 1 + doc/projectionintro.html | 1 + gui/Makefile | 6 ++- gui/wxguiintro.html | 75 ++++++++++++++++++++++++++++++++++++ gui/wxpython/docs/wxGUI.html | 2 +- imagery/imageryintro.html | 1 + man/build_html.py | 3 +- man/build_md.py | 1 + man/build_rest.py | 1 + man/mkdocs/mkdocs.yml | 1 + raster/rasterintro.html | 1 + raster3d/raster3dintro.html | 1 + temporal/temporalintro.html | 10 +++++ vector/vectorintro.html | 1 + 14 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 gui/wxguiintro.html diff --git a/db/databaseintro.html b/db/databaseintro.html index ef7d34791b5..3569dd34983 100644 --- a/db/databaseintro.html +++ b/db/databaseintro.html @@ -101,4 +101,5 @@

    See also

  • Introduction into image processing
  • Introduction into temporal data processing
  • Projections and spatial transformations
  • +
  • Graphical User Interface
  • diff --git a/doc/projectionintro.html b/doc/projectionintro.html index f85416640d3..3998d367453 100644 --- a/doc/projectionintro.html +++ b/doc/projectionintro.html @@ -76,4 +76,5 @@

    See also

  • Introduction into image processing
  • Introduction into temporal data processing
  • Database management
  • +
  • Graphical User Interface
  • diff --git a/gui/Makefile b/gui/Makefile index 3f7a063fb02..30102feb257 100644 --- a/gui/Makefile +++ b/gui/Makefile @@ -1,7 +1,11 @@ MODULE_TOPDIR = .. +PGM = wxguiintro + SUBDIRS = icons images scripts xml wxpython include $(MODULE_TOPDIR)/include/Make/Dir.make -default: parsubdirs +default: htmldir + +htmldir: parsubdirs diff --git a/gui/wxguiintro.html b/gui/wxguiintro.html new file mode 100644 index 00000000000..0ba40cd4084 --- /dev/null +++ b/gui/wxguiintro.html @@ -0,0 +1,75 @@ + + + +

    Introduction to the GRASS GIS Graphical User Interface

    + +

    Overview

    + +The wxGUI (wxPython-based Graphical User Interface) is the primary user +interface for GRASS GIS. Designed for efficiency and ease of use, the +wxGUI provides an intuitive way to interact with spatial data and the +powerful tools available in GRASS GIS. + +The GUI supports the visualisation of spatial data, the execution of +geoprocessing tasks or the management of complex workflows and offers a +comprehensive set of tools. + +

    Features

    + +The wxGUI is designed to cater to both novice and advanced users with +the following features: + +
      +
    • A clean and customizable layout for efficient workspace management.
    • +
    • Integrated support for both raster and vector data operations.
    • +
    • Drag-and-drop capabilities for quick layer addition and arrangement.
    • +
    • Support for live previews of data and processing results.
    • +
    • Direct access to GRASS GIS modules, complete with user-friendly + dialog windows.
    • +
    • Advanced debugging and scripting capabilities for developers and + power users.
    • +
    + +

    Getting Started

    + +To launch the wxGUI, simply start GRASS GIS. Upon startup, the wxGUI will +load, providing access to its various components. + +The wxGUI usage is explained in greater detail here. + +New GRASS GIS users can explore the integrated help system or visit the +GRASS GIS documentation +for tutorials and guides. + +

    Key Components

    + +The wxGUI is composed of several modules and features: + +
      +
    • Map Display: Visualize raster, vector, and 3D data + layers in an interactive map viewer.
    • +
    • Layer Manager: Organize and control the visibility, + styling, and properties of your data layers.
    • +
    • Data Catalog: Explore and manage GRASS GIS mapsets + and spatial data with ease.
    • +
    • Geoprocessing Tools: Access a wide range of geospatial + analysis and modeling tools through an easy-to-use interface.
    • +
    • Command Console: Run GRASS GIS commands directly, + with syntax highlighting and autocompletion support.
    • +
    • 3D View: Analyze and visualize 3D landscapes + using NVIZ.
    • +
    + +The wxGUI components are explained in greater detail +here. + +

    See also

    + + diff --git a/gui/wxpython/docs/wxGUI.html b/gui/wxpython/docs/wxGUI.html index 1c92004e4d3..ebf4680e6eb 100644 --- a/gui/wxpython/docs/wxGUI.html +++ b/gui/wxpython/docs/wxGUI.html @@ -693,7 +693,7 @@

    SEE ALSO

    wxGUI components
    - wxGUI module dialogs + wxGUI module dialogs
    wxGUI toolboxes (menu customization)
    diff --git a/imagery/imageryintro.html b/imagery/imageryintro.html index c0ef2a48616..69a189be758 100644 --- a/imagery/imageryintro.html +++ b/imagery/imageryintro.html @@ -293,4 +293,5 @@

    See also

  • Introduction into temporal data processing
  • Database management
  • Projections and spatial transformations
  • +
  • Graphical User Interface
  • diff --git a/man/build_html.py b/man/build_html.py index 08596bb169c..8116c8fccc5 100644 --- a/man/build_html.py +++ b/man/build_html.py @@ -80,7 +80,8 @@

     Graphical User Interface

    diff --git a/man/build_md.py b/man/build_md.py index 0aae069edef..73cb222521c 100644 --- a/man/build_md.py +++ b/man/build_md.py @@ -66,6 +66,7 @@

     Graphical User Interface

      +
    • Intro: Graphical User Interface
    • wxGUI
    • wxGUI components
    • wxGUI toolboxes
    • diff --git a/man/build_rest.py b/man/build_rest.py index 20d9e9aaca1..168a5ba6127 100644 --- a/man/build_rest.py +++ b/man/build_rest.py @@ -79,6 +79,7 @@ Intro vector map processing and network analysis Intro database management Intro temporal data processing + Intro Graphical User Interface Display/Graphical User Interfaces ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/man/mkdocs/mkdocs.yml b/man/mkdocs/mkdocs.yml index bd01d13a791..2d462d2264c 100644 --- a/man/mkdocs/mkdocs.yml +++ b/man/mkdocs/mkdocs.yml @@ -22,6 +22,7 @@ plugins: - glightbox use_directory_urls: false nav: + - GUI: wxGUI.md - Startup: grass.md - Databases: database.md - Display: display.md diff --git a/raster/rasterintro.html b/raster/rasterintro.html index 93d05f35410..519cb03ea39 100644 --- a/raster/rasterintro.html +++ b/raster/rasterintro.html @@ -361,4 +361,5 @@

      See also

    • Introduction into temporal data processing
    • Database management
    • Projections and spatial transformations
    • +
    • Graphical User Interface
    diff --git a/raster3d/raster3dintro.html b/raster3d/raster3dintro.html index b51748b4dd8..1e45022227c 100644 --- a/raster3d/raster3dintro.html +++ b/raster3d/raster3dintro.html @@ -203,6 +203,7 @@

    See also

  • Introduction into image processing
  • Introduction into temporal data processing
  • Projections and spatial transformations
  • +
  • Graphical User Interface
  • wxGUI 3D View Mode
  • m.nviz.image
  • diff --git a/temporal/temporalintro.html b/temporal/temporalintro.html index 2780efd8c85..e63dbf32c87 100644 --- a/temporal/temporalintro.html +++ b/temporal/temporalintro.html @@ -281,3 +281,13 @@

    See also

  • GEOSTAT 2012 GRASS Course
  • + + diff --git a/vector/vectorintro.html b/vector/vectorintro.html index db85a0afd37..f19b9507f0d 100644 --- a/vector/vectorintro.html +++ b/vector/vectorintro.html @@ -394,4 +394,5 @@

    See also

  • Introduction into temporal data processing
  • Introduction to database management
  • Projections and spatial transformations
  • +
  • Graphical User Interface
  • From 3e22b87722fb96c86c27f3e78405bc8c4fe0ed54 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Nov 2024 12:08:04 -0500 Subject: [PATCH 37/45] CI(deps): Update echoix/setup-OSGeo4W action to v0.2.0 (#4749) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * CI(deps): Update echoix/setup-OSGeo4W action to v0.2.0 * CI(OSGeo4W): Use setup-OSGeo4W's root path output --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- .github/workflows/osgeo4w.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/osgeo4w.yml b/.github/workflows/osgeo4w.yml index 4a860f430f5..428d403c798 100644 --- a/.github/workflows/osgeo4w.yml +++ b/.github/workflows/osgeo4w.yml @@ -46,7 +46,8 @@ jobs: mingw-w64-x86_64-pcre - name: Setup OSGeo4W environment - uses: echoix/setup-OSGeo4W@17deecd39e077a80bf1081443998ea8edd6f15bf # v0.1.0 + uses: echoix/setup-OSGeo4W@f4311523e39f2c8b10e34ebbc3f2ff437ecfb9ed # v0.2.0 + id: osgeo4w with: package-dir: "D:/OSGeo4W_pkg" packages: | @@ -96,7 +97,9 @@ jobs: run: .github/workflows/print_versions.sh - name: Test executing of the grass command - run: .github/workflows/test_simple.bat 'C:\OSGeo4W\opt\grass\grass85.bat' + run: .github/workflows/test_simple.bat '${{env.O4WROOT}}\opt\grass\grass85.bat' + env: + O4WROOT: ${{ steps.osgeo4w.outputs.root }} - name: Test executing of the grass command in bash shell: msys2 {0} @@ -116,7 +119,9 @@ jobs: shell: cmd /D /E:ON /V:OFF /S /C "CALL C:/OSGeo4W/OSGeo4W.bat "{0}"" - name: Run tests - run: .github/workflows/test_thorough.bat 'C:\OSGeo4W\opt\grass\grass85.bat' 'C:\OSGeo4W\bin\python3' + run: .github/workflows/test_thorough.bat '${{env.O4WROOT}}\opt\grass\grass85.bat' '${{env.O4WROOT}}\bin\python3' + env: + O4WROOT: ${{ steps.osgeo4w.outputs.root }} - name: Make HTML test report available if: ${{ always() }} From 38f5cf43d13a7585e88b7c3cb13940e218013e8b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Nov 2024 23:57:41 -0500 Subject: [PATCH 38/45] CI(deps): Lock file maintenance (#4756) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 0e90b2409c9..cf41a34db41 100644 --- a/flake.lock +++ b/flake.lock @@ -19,11 +19,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731890469, - "narHash": "sha256-D1FNZ70NmQEwNxpSSdTXCSklBH1z2isPR84J6DQrJGs=", + "lastModified": 1732238832, + "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5083ec887760adfe12af64830a66807423a859a7", + "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d", "type": "github" }, "original": { From 036451f730761c9f4b6c31f27cb2c4c1812864a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:02:55 +0100 Subject: [PATCH 39/45] docs: v.buffer.html minor edits (#4744) --- vector/v.buffer/v.buffer.html | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/vector/v.buffer/v.buffer.html b/vector/v.buffer/v.buffer.html index 06b2828cdfb..bdb6d1f231e 100644 --- a/vector/v.buffer/v.buffer.html +++ b/vector/v.buffer/v.buffer.html @@ -10,12 +10,13 @@

    NOTES

    Internal buffers for areas can be generated with negative distance values ("inward buffer" or "negative buffer" or "shrinking"). +

    v.buffer fusions the geometries of buffers by default. Categories and attribute table will not be transferred (this would not make sense as one buffer geometry can be the result of many different input geometries). To transfer the categories and -attributes the user can set the t flag. This will result in +attributes the user can set the -t flag. This will result in buffers being cut up where buffers of individual input geometries overlap. Each part that is the result of overlapping buffers of multiple geometries will have multiple categories corresponding to @@ -29,11 +30,11 @@

    NOTES

    the GEOS library.

    -For advanced users: built-in buffer algorithm no longer -desired, we use GEOS: If GRASS is not compiled with GEOS support -or environmental +For advanced users: the built-in buffer algorithm is no longer +used, as we use GEOS instead. If GRASS was not compiled with GEOS support +or the environmental variable GRASS_VECTOR_BUFFER is defined, then GRASS -generates buffers using built-in buffering algorithm (which is still +generates buffers using the built-in buffering algorithm (which is still buggy for some input data).

    @@ -56,8 +57,8 @@

    Corner settings

    -Straight corners with caps are created by -s flag (red color on -the figure below), while -c flag doesn't make caps at the ends of +Straight corners with caps are created using the -s flag (red color on +the figure below), while the -c flag doesn't make caps at the ends of polylines (green color on the figure below):
    @@ -65,8 +66,8 @@

    Corner settings

    -Using -s with a point vector map as input data, square buffers are -created instead of round buffers. +With a point vector map as input data, square buffers are created instead +of round buffers by using the -s flag.
    From 895699ddb2a14933d8113ab50c5d6141fecc4a07 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 19:30:04 +0000 Subject: [PATCH 40/45] CI(deps): Update mamba-org/setup-micromamba action to v2.0.2 (#4760) --- .github/workflows/macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 466a61967b7..d966cc87dc9 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -50,7 +50,7 @@ jobs: # Year and week of year so cache key changes weekly run: echo "date=$(date +%Y-%U)" >> "${GITHUB_OUTPUT}" - name: Setup Mamba - uses: mamba-org/setup-micromamba@ab6bf8bf7403e8023a094abeec19d6753bdc143e # v2.0.1 + uses: mamba-org/setup-micromamba@06375d89d211a1232ef63355742e9e2e564bc7f7 # v2.0.2 with: init-shell: bash environment-file: .github/workflows/macos_dependencies.txt From 370a492900ccb7f04ec9e7da9d2766ce1a3d66b6 Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Mon, 25 Nov 2024 21:48:59 +0100 Subject: [PATCH 41/45] manual: HTML updates in lib/db and db manual pages and README files (#4751) This PR provides minor HTML fixes to `lib/db/` and `db/` manual related files: - convert several `README` to `README.md` - update selected broken URLs - partially sync `grass-mysql.html` and `grass-mesql.html` incl. section order - fix typo: statemets -> statements Extra: - avoid
    tags within as not converted properly to Markdown --- db/db.connect/db.connect.html | 10 ++--- db/drivers/README | 28 ------------ db/drivers/README.md | 30 +++++++++++++ db/drivers/mysql/grass-mesql.html | 46 ++++--------------- db/drivers/mysql/grass-mysql.html | 52 +++++++++++----------- db/drivers/postgres/execute.c | 2 +- db/drivers/sqlite/grass-sqlite.html | 8 +++- doc/vector/TODO | 2 +- lib/db/README | 51 --------------------- lib/db/README.md | 59 +++++++++++++++++++++++++ lib/db/dbmi_client/c_update.c | 2 +- lib/db/dbmi_driver/d_update.c | 2 +- lib/db/sqlp/README | 18 -------- lib/db/sqlp/README.md | 24 ++++++++++ lib/db/sqlp/sql.html | 10 ++--- lib/db/sqlp/test/README | 6 --- lib/db/sqlp/test/README.md | 6 +++ lib/htmldriver/htmldriver.html | 4 +- lib/pngdriver/pngdriver.html | 4 +- lib/psdriver/psdriver.html | 4 +- raster/r.basins.fill/r.basins.fill.html | 1 - 21 files changed, 183 insertions(+), 186 deletions(-) delete mode 100644 db/drivers/README create mode 100644 db/drivers/README.md delete mode 100644 lib/db/README create mode 100644 lib/db/README.md delete mode 100644 lib/db/sqlp/README create mode 100644 lib/db/sqlp/README.md delete mode 100644 lib/db/sqlp/test/README create mode 100644 lib/db/sqlp/test/README.md diff --git a/db/db.connect/db.connect.html b/db/db.connect/db.connect.html index 48d6dbee02f..434124b4e65 100644 --- a/db/db.connect/db.connect.html +++ b/db/db.connect/db.connect.html @@ -36,7 +36,7 @@

    SQLite (default backend)

    PostgreSQL (local connection)

    Local storage, database tables stored in database "mydb" -(may require the use of db.login): +(may require the use of db.login):
     db.connect driver=pg database=mydb
    @@ -49,7 +49,7 @@ 

    PostgreSQL (local connection)

    PostgreSQL (network connection)

    Network storage, database tables stored in database "mydb" -(may require the use of db.login): +(may require the use of db.login):
     db.connect driver=pg database=mydb
    @@ -62,7 +62,7 @@ 

    PostgreSQL (network connection)

    MySQL (local connection)

    Local storage, database tables stored in database "mydb" (may require -the use of db.login): +the use of db.login):
     db.connect driver=mysql database=mydb
    @@ -75,7 +75,7 @@ 

    MySQL (local connection)

    MySQL (network connection)

    Network storage, database tables stored in database "mydb" -(may require the use of db.login): +(may require the use of db.login):
     db.connect driver=mysql database=mydb
    @@ -88,7 +88,7 @@ 

    MySQL (network connection)

    ODBC

    Network storage, database tables stored in database "mydb" -(may require the use of db.login): +(may require the use of db.login):
     db.connect driver=odbc database=mydb
    diff --git a/db/drivers/README b/db/drivers/README
    deleted file mode 100644
    index e2a2d435f2e..00000000000
    --- a/db/drivers/README
    +++ /dev/null
    @@ -1,28 +0,0 @@
    -This directory contains drivers for the DBMI library.
    -The driver functions are for internal usage.
    -
    -The DBMI API to be used for module programming is available in:
    -lib/db/
    -
    -
    -NOTE:
    -db__driver_* functions are implemented in a driver.  If some of them
    -are not used or defined, the driver will use stub functions in
    -lib/db/stubs/
    -
    -For some platforms like Cygwin, multiply defined symbols are not
    -resolved in a way that UNIX does.  Even worse is that it is impossible
    -to build shared libraries with undefined symbols.  For example,
    -libgrass_dbmidriver.so cannot be built without any implementations
    -of db__driver_* functions which should be specific to a db driver.
    -
    -To work around this problem, function pointers are defined to use
    -driver's implementations instead of those of the db stubs library.
    -To do this automatically, run '../mk_dbdriver_h.sh' in driver's
    -directory, #include "dbdriver.h" from main.c, and execute init_dbdriver().
    -
    -Function pointers are defined in grass6/lib/db/dbmi_driver/dbstubs.h
    -This header file can be generated with
    -lib/db/dbmi_driver/mk_dbstubs_h.sh
    -
    -Please read lib/db/README
    diff --git a/db/drivers/README.md b/db/drivers/README.md
    new file mode 100644
    index 00000000000..e98c617267c
    --- /dev/null
    +++ b/db/drivers/README.md
    @@ -0,0 +1,30 @@
    +This directory contains drivers for the DBMI library.
    +The driver functions are for internal usage.
    +
    +The DBMI API to be used for module programming is available in:
    +`lib/db/`
    +
    +NOTE:
    +`db__driver_*` functions are implemented in a driver. If some of them
    +are not used or defined, the driver will use stub functions in
    +`lib/db/stubs/`.
    +
    +For some platforms like Cygwin, multiply defined symbols are not
    +resolved in a way that UNIX does. Even worse is that it is impossible
    +to build shared libraries with undefined symbols. For example,
    +`libgrass*dbmidriver.so` cannot be built without any implementations
    +of `db__driver*\*` functions which should be specific to a db driver.
    +
    +To work around this problem, function pointers are defined to use
    +driver's implementations instead of those of the db stubs library.
    +To do this automatically, run `../mk_dbdriver_h.sh` (GRASS GIS 6)
    +in driver's directory, `#include "dbdriver.h"` from `main.c`, and
    +execute `init_dbdriver()`.
    +
    +Function pointers are defined in `lib/db/dbmi_driver/dbstubs.h`
    +This header file can be generated with
    +`lib/db/dbmi_driver/mk_dbstubs_h.sh` (GRASS GIS 6).
    +
    +Please read lib/db/README.md and
    +
    +
    diff --git a/db/drivers/mysql/grass-mesql.html b/db/drivers/mysql/grass-mesql.html
    index e04b30a2a8f..1cbe952da41 100644
    --- a/db/drivers/mysql/grass-mesql.html
    +++ b/db/drivers/mysql/grass-mesql.html
    @@ -1,28 +1,7 @@
    -
    -
    -
    -GRASS-MySQL embedded driver - GRASS GIS manual
    - 
    - 
    - 
    - 
    -
    -
    -
    -GRASS logo
    - -

    MySQL embedded driver in GRASS

    - -

    KEYWORDS

    - -database, attribute table, driver - -

    DESCRIPTION

    -MySQL database driver in GRASS enables GRASS to store vector -attributes in MySQL embedded database without necessity -to run MySQL server. +MySQL database driver enables GRASS to store vector attributes +in MySQL embedded database without necessity to run MySQL server.

    Driver and database name

    @@ -68,14 +47,7 @@

    Troubleshooting: SQL syntax error

    Attempting to use a reserved SQL word as column or table name will result in a "SQL syntax" error. The list of reserved words for MySQL can be -found in the MySQL manual. - -

    SEE ALSO

    - - -db.connect, -SQL support in GRASS GIS - +found in the MySQL manual.

    AUTHOR

    @@ -84,11 +56,11 @@

    AUTHOR

    Credits: Development of the driver was sponsored by Faunalia (Italy) -as part of a project for ATAC. +as part of a project for ATAC. +

    SEE ALSO

    -
    -

    Main index - Database index - Topics index - Keywords Index - Full index

    -

    © 2003-2022 GRASS Development Team, GRASS GIS 8 Reference Manual

    - - + +db.connect, +SQL support in GRASS GIS + diff --git a/db/drivers/mysql/grass-mysql.html b/db/drivers/mysql/grass-mysql.html index af8c0273d98..8fdbc831a31 100644 --- a/db/drivers/mysql/grass-mysql.html +++ b/db/drivers/mysql/grass-mysql.html @@ -1,7 +1,7 @@ -MySQL database driver enables GRASS to store vector attributes in -MySQL server. +MySQL database driver enables GRASS to store vector attributes +in MySQL server.

    Because vector attribute tables @@ -36,30 +36,31 @@

    Driver and database name

  • port - server port number +

    Examples of connection parameters:

    -  db.connect driver=mysql database=mytest
    -  db.connect driver=mysql database='dbname=mytest,host=test.grass.org'
    +db.connect driver=mysql database=mytest
    +db.connect driver=mysql database='dbname=mytest,host=test.grass.org'
     

    Data types

    GRASS supports almost all MySQL data types with following limitations:
      -
    • Binary columns (BINARY, VARBINARY, TINYBLOB, MEDIUMBLOB, - BLOB, LONGBLOB) are not not supported. - If a table with binary column(s) is used in GRASS - a warning is printed and only the supported columns are - returned in query results. +
    • Binary columns (BINARY, VARBINARY, TINYBLOB, MEDIUMBLOB, +BLOB, LONGBLOB) are not not supported. +If a table with binary column(s) is used in GRASS +a warning is printed and only the supported columns are +returned in query results. -
    • Columns of type SET and ENUM are represented as string (VARCHAR). +
    • Columns of type SET and ENUM are represented as string (VARCHAR). -
    • Very large integers in columns of type BIGINT can be lost - or corrupted because GRASS does not support 64 bin integeres - on most platforms. +
    • Very large integers in columns of type BIGINT can be lost +or corrupted because GRASS does not support 64 bin integeres +on most platforms. -
    • GRASS does not currently distinguish types TIMESTAMP and - DATETIME. Both types are in GRASS interpreted as TIMESTAMP. +
    • GRASS does not currently distinguish types TIMESTAMP and +DATETIME. Both types are in GRASS interpreted as TIMESTAMP.

    Indexes

    @@ -104,7 +105,16 @@

    Troubleshooting: SQL syntax error

    Attempting to use a reserved SQL word as column or table name will result in a "SQL syntax" error. The list of reserved words for MySQL can be -found in the MySQL manual. +found in the MySQL manual. + +

    AUTHOR

    + +Radim Blazek + +

    +Credits: Development of the driver was sponsored by +Faunalia (Italy) +as part of a project for ATAC.

    SEE ALSO

    @@ -112,13 +122,3 @@

    SEE ALSO

    db.connect, SQL support in GRASS GIS - -

    Credits

    - -Development of the driver was sponsored by -Faunalia (Italy) -as part of a project for ATAC. - -

    AUTHOR

    - -Radim Blazek diff --git a/db/drivers/postgres/execute.c b/db/drivers/postgres/execute.c index fa6dd556101..99a6c79df11 100644 --- a/db/drivers/postgres/execute.c +++ b/db/drivers/postgres/execute.c @@ -1,7 +1,7 @@ /*! \file db/driver/postgres/execute.c - \brief DBMI - Low Level PostgreSQL database driver - execute statemets + \brief DBMI - Low Level PostgreSQL database driver - execute statements This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details. diff --git a/db/drivers/sqlite/grass-sqlite.html b/db/drivers/sqlite/grass-sqlite.html index ae59def1e52..ea2f9526506 100644 --- a/db/drivers/sqlite/grass-sqlite.html +++ b/db/drivers/sqlite/grass-sqlite.html @@ -69,9 +69,13 @@

    SEE ALSO

    db.connect, db.execute, db.select -

    +
    +

    + SQL support in GRASS GIS -

    +
    +

    + SQLite web site, SQLite manual, sqlite - Management Tools diff --git a/doc/vector/TODO b/doc/vector/TODO index 75671559263..d43bffca15d 100644 --- a/doc/vector/TODO +++ b/doc/vector/TODO @@ -205,7 +205,7 @@ implemented in all drivers. SQLite driver ------------- Current implementation is very slow with large updates/inserts. I -think that it is because all statemets are parsed and it should be +think that it is because all statements are parsed and it should be possible to improve by insert/update cursors (see above). DBF driver diff --git a/lib/db/README b/lib/db/README deleted file mode 100644 index 9dc8faf9ab6..00000000000 --- a/lib/db/README +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** - * - * MODULE: DBMI library - * AUTHOR(S): Joel Jones (CERL/UIUC) - * Radim Blazek , - * Brad Douglas , - * Glynn Clements , - * Roberto Flor, Hamish Bowman , - * Markus Neteler , - * Huidae Cho , - * Paul Kelly , - * Martin Landa , - * Moritz Lennert , - * Daniel Calvelo Aros , - * Bernhard Reiter , - * Alex Shevlakov - * PURPOSE: database management functions for modules and drivers - * COPYRIGHT: (C) 2003-2006 by the GRASS Development Team - * - * This program is free software under the GNU General Public - * License (>=v2). Read the file COPYING that comes with GRASS - * for details. - * - *****************************************************************************/ - -DBMI Library - -Original author: Joel Jones (jjones * zorro.cecer.army.mil | jjones * uiuc.edu ) - Ref: https://lists.osgeo.org/pipermail/grass-dev/1995-February/002015.html - -Directory contents: - -dbmi: DataBase Management Interface (db_*() functions) - dbmi_base: contains functions for modules, drivers (../../db/drivers/) - dbmi_client: contains functions for modules - dbmi_driver: contains functions for drivers (../../db/drivers/) - -sqlp: SQL parser library -stubs: stubs for unimplemented DB functions - -The DBMI drivers are stored in -../../db/drivers/ - -The DBMI user modules are stored in -../../db/base/ - -NOTE: - Please read db/drivers/README - -To generate dbmi_driver/dbstubs.h automatically, run './mk_dbstubs_h.sh' in -dbmi_driver/ directory. diff --git a/lib/db/README.md b/lib/db/README.md new file mode 100644 index 00000000000..227d628fa48 --- /dev/null +++ b/lib/db/README.md @@ -0,0 +1,59 @@ +## DBMI library + +### Purpose + +Database management functions for modules and drivers. + +### Authors + +Original author: + +- Joel Jones (CERL/UIUC) (jjones zorro.cecer.army.mil) + +Ref: + +Further authors: + +- Radim Blazek (radim.blazek gmail.com) +- Brad Douglas (rez touchofmadness.com) +- Glynn Clements (glynn gclements.plus.com) +- Roberto Flor, Hamish Bowman (hamish_b yahoo.com) +- Markus Neteler (neteler itc.it) +- Huidae Cho (grass4u gmail.com) +- Paul Kelly (paul-grass stjohnspoint.co.uk) +- Martin Landa (landa.martin gmail.com) +- Moritz Lennert (mlennert club.worldonline.be) +- Daniel Calvelo Aros (dca.gis gmail.com) +- Bernhard Reiter (bernhard intevation.de) +- Alex Shevlakov (sixote yahoo.com) + +### Copyright + +(C) 2003-2024 by the GRASS Development Team + +### License + +This program is free software under the GNU General Public +License (>=v2). Read the file COPYING that comes with GRASS +for details. + +### Directory contents + +- `dbmi/`: DataBase Management Interface (`db_*()` functions) + - `dbmi_base/`: contains functions for modules, drivers (`../../db/drivers/`) + - `dbmi_client/`: contains functions for modules + - `dbmi_driver/`: contains functions for drivers (`../../db/drivers/`) +- `sqlp/`: SQL parser library +- `stubs/`: stubs for unimplemented DB functions + +The DBMI drivers are stored in +`../../db/drivers/` + +The DBMI user modules are stored in +`../../db/base/` + +NOTE: +Please read db/drivers/README.md + +To generate `dbmi_driver/dbstubs.h` automatically, run `./mk_dbstubs_h.sh` in +`dbmi_driver/` directory (GRASS GIS 6). diff --git a/lib/db/dbmi_client/c_update.c b/lib/db/dbmi_client/c_update.c index 9a8a0d6e4cd..399f19d8155 100644 --- a/lib/db/dbmi_client/c_update.c +++ b/lib/db/dbmi_client/c_update.c @@ -1,7 +1,7 @@ /*! * \file db/dbmi_client/c_update.c * - * \brief DBMI Library (client) - update statemets + * \brief DBMI Library (client) - update statements * * (C) 1999-2008 by the GRASS Development Team * diff --git a/lib/db/dbmi_driver/d_update.c b/lib/db/dbmi_driver/d_update.c index 5d601679082..ed7a501a7c4 100644 --- a/lib/db/dbmi_driver/d_update.c +++ b/lib/db/dbmi_driver/d_update.c @@ -1,7 +1,7 @@ /*! * \file db/dbmi_driver/d_update.c * - * \brief DBMI Library (driver) - update statemets + * \brief DBMI Library (driver) - update statements * * (C) 1999-2008 by the GRASS Development Team * diff --git a/lib/db/sqlp/README b/lib/db/sqlp/README deleted file mode 100644 index 9a23b0925e8..00000000000 --- a/lib/db/sqlp/README +++ /dev/null @@ -1,18 +0,0 @@ -sqlp is SQL parser library - -sqp is intended as library for simple dbmi drivers (like dbf, txt). -yac.y and lex.l was originally stolen from unixODBC 3/2001 and modified. - -An input may be subset of SQL statements. Currently supported: -SELECT FROM WHERE -INSERT INTO -UPDATE WHERE -DELETE FROM WHERE -CREATE TABLE -DROP TABLE -[...] - -New types have to be added in yac.y, lex.l, print.c and -../../../include/sqlp.h . -In ./test/ is a test program to the the SQL parser (see -README there). diff --git a/lib/db/sqlp/README.md b/lib/db/sqlp/README.md new file mode 100644 index 00000000000..852126fb157 --- /dev/null +++ b/lib/db/sqlp/README.md @@ -0,0 +1,24 @@ +## SQL parser library + +sqlp is the SQL parser library. + +sqp is intended as library for simple dbmi drivers (like dbf, txt). +`yac.y` and `lex.l` was originally stolen from unixODBC 3/2001 and modified. + +An input may be subset of SQL statements. Currently supported: + +```sql +SELECT FROM WHERE +INSERT INTO +UPDATE WHERE +DELETE FROM WHERE +CREATE TABLE +DROP TABLE +[...] +``` + +New types have to be added in `yac.y`, `lex.l`, `print.c` and +`../../../include/sqlp.h`. + +In `./test/` is a test program to the the SQL parser (see +README.md there). diff --git a/lib/db/sqlp/sql.html b/lib/db/sqlp/sql.html index eaed6a74b70..a2dc32da2a5 100644 --- a/lib/db/sqlp/sql.html +++ b/lib/db/sqlp/sql.html @@ -29,19 +29,19 @@

    Database drivers

    - + - + - + @@ -237,4 +237,4 @@

    SEE ALSO

    AUTHOR

    -Radmin Blazek +Radim Blazek diff --git a/lib/db/sqlp/test/README b/lib/db/sqlp/test/README deleted file mode 100644 index d703f03bd0c..00000000000 --- a/lib/db/sqlp/test/README +++ /dev/null @@ -1,6 +0,0 @@ -Test of sql parser library. - -sqlptest reads sql statements (one per row) from standard -input and writes results of parser to standard output. - -Some test statemets are in ./test diff --git a/lib/db/sqlp/test/README.md b/lib/db/sqlp/test/README.md new file mode 100644 index 00000000000..a6aae0fe947 --- /dev/null +++ b/lib/db/sqlp/test/README.md @@ -0,0 +1,6 @@ +## Test of SQL parser library + +`sqlptest` reads SQL statements (one per row) from standard +input and writes results of parser to standard output. + +Some test statements are in `./test`. diff --git a/lib/htmldriver/htmldriver.html b/lib/htmldriver/htmldriver.html index 3e14f240805..3ed24c7662d 100644 --- a/lib/htmldriver/htmldriver.html +++ b/lib/htmldriver/htmldriver.html @@ -185,7 +185,9 @@

    SEE ALSO

    PNG driver, HTML driver, variables -

    + +

    + d.rast, d.vect, d.mon, diff --git a/lib/pngdriver/pngdriver.html b/lib/pngdriver/pngdriver.html index d0eab9f4125..1b1f6b2a2cb 100644 --- a/lib/pngdriver/pngdriver.html +++ b/lib/pngdriver/pngdriver.html @@ -99,7 +99,9 @@

    SEE ALSO

    PS driver, HTML driver, variables -

    +
    +

    + d.rast, d.vect, d.mon, diff --git a/lib/psdriver/psdriver.html b/lib/psdriver/psdriver.html index 3cc9bf7404f..31af82fae88 100644 --- a/lib/psdriver/psdriver.html +++ b/lib/psdriver/psdriver.html @@ -85,7 +85,9 @@

    SEE ALSO

    PNG driver, HTML driver, variables -

    +
    +

    + d.rast, d.vect, d.mon, diff --git a/raster/r.basins.fill/r.basins.fill.html b/raster/r.basins.fill/r.basins.fill.html index a92e242d198..2e210b8298d 100644 --- a/raster/r.basins.fill/r.basins.fill.html +++ b/raster/r.basins.fill/r.basins.fill.html @@ -22,7 +22,6 @@

    DESCRIPTION

    If the resulting map layer from this program appears to have holes within a subbasin, the program should be rerun with a higher number of passes. -

    NOTES

    From 63fc743197105213415faedf833220037bad11aa Mon Sep 17 00:00:00 2001 From: Markus Neteler Date: Mon, 25 Nov 2024 21:51:48 +0100 Subject: [PATCH 42/45] manual: fix broken HTML tags (#4757) This PR fixes some broken HTML tags identified with a test run of the HTML validation with super-linter. See logs showing the errors at: https://github.com/echoix/grass/actions/runs/12001379426/job/33451802353?pr=303#step:4:8310 --- raster/r.texture/r.texture.html | 12 ++++++------ scripts/v.clip/v.clip.html | 2 +- temporal/t.rast.extract/t.rast.extract.html | 6 +++--- vector/v.surf.rst/v.surf.rst.html | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/raster/r.texture/r.texture.html b/raster/r.texture/r.texture.html index 93b089a86fe..3fc8f557770 100644 --- a/raster/r.texture/r.texture.html +++ b/raster/r.texture/r.texture.html @@ -200,7 +200,7 @@

    Performance


    Figure 1: Benchmark shows execution time for different number of cells (1M, 2M, 4M, and 8M) and - the fixed size of window (3×3). + the fixed size of window (3×3).
    Performance
    Figure 2: Benchmark shows efficiency for different numbers of cells (1M, 2M, 4M, and 8M) and - the fixed size of window (3×3). + the fixed size of window (3×3).
    Performance
    Figure 3: Benchmark shows execution time for different sizes of windows - (3×3, 9×9, - 15×15, and 27×27) + (3×3, 9×9, + 15×15, and 27×27) and the fixed number of cells (1M).
    @@ -225,8 +225,8 @@

    Performance

    alt="efficiency benchmark for r.texture with different window sizes" border="0">
    Figure 4: Benchmark shows efficiency for different - sizes of windows (3×3, 9×9, - 15×15, and 27×27) + sizes of windows (3×3, 9×9, + 15×15, and 27×27) and the fixed number of cells (1M).
    diff --git a/scripts/v.clip/v.clip.html b/scripts/v.clip/v.clip.html index b4d93121d9a..17d364d713c 100644 --- a/scripts/v.clip/v.clip.html +++ b/scripts/v.clip/v.clip.html @@ -22,7 +22,7 @@

    NOTES

    and/or lines can be achieved using v.overlay. Clipping of points can be performed -with v.select. +with v.select.

    EXAMPLES

    diff --git a/temporal/t.rast.extract/t.rast.extract.html b/temporal/t.rast.extract/t.rast.extract.html index bc3b0b30f7c..f8e366250e4 100644 --- a/temporal/t.rast.extract/t.rast.extract.html +++ b/temporal/t.rast.extract/t.rast.extract.html @@ -27,16 +27,16 @@

    NOTES

    -t.rast.extract input=tempmean_monthly where="start_time > '2010-01-05'" \
    +t.rast.extract input=tempmean_monthly where="start_time > '2010-01-05'" \
                    output=selected_tempmean_monthly basename=new_tmean_month \
    -               expression="if(tempmean_monthly < 0, null(), tempmean_monthly)"
    +               expression="if(tempmean_monthly < 0, null(), tempmean_monthly)"
     

    EXAMPLE

     t.rast.extract input=tempmean_monthly output=tempmean_monthly_later_2012 \
    -               where="start_time >= '2012-01-01'"
    +               where="start_time >= '2012-01-01'"
     
     t.rast.list tempmean_monthly_later_2012
     name|mapset|start_time|end_time
    diff --git a/vector/v.surf.rst/v.surf.rst.html b/vector/v.surf.rst/v.surf.rst.html
    index 199ca4fc3ca..8194aef36d9 100644
    --- a/vector/v.surf.rst/v.surf.rst.html
    +++ b/vector/v.surf.rst/v.surf.rst.html
    @@ -305,14 +305,14 @@ 

    Performance

    benchmark for v.surf.rst
    Figure 1: Benchmark shows execution time for different - number of cells (1M, 2M, 4M, and 8M). + number of cells (1M, 2M, 4M, and 8M).
    benchmark for cross-validation of
      v.surf.rst
    Figure 2: Benchmark shows execution time for running cross-validation on - different number of cells (100k, 200k, 400k, and 800k). + different number of cells (100k, 200k, 400k, and 800k).

    EXAMPLE

    @@ -355,10 +355,10 @@

    Usage of the where parameter

    v.db.univar -e elevrand column=value # interpolation based on subset of points (only those over 1st quartile) -v.surf.rst input=elevrand zcolumn=value elevation=elev_partial npmin=100 where="value > 94.9" +v.surf.rst input=elevrand zcolumn=value elevation=elev_partial npmin=100 where="value > 94.9" r.colors map=elev_partial raster=elevation d.rast elev_partial -d.vect elevrand where="value > 94.9" +d.vect elevrand where="value > 94.9"

    REFERENCES

    From 6366aade04f8f3add13ffe0c2ad6c79484247e33 Mon Sep 17 00:00:00 2001 From: Bas Couwenberg Date: Tue, 26 Nov 2024 02:29:05 +0100 Subject: [PATCH 43/45] doc: fix spelling errors (#3900) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix spelling errors. * allows to -> allow ing * overlaping -> overlapping * refernce -> reference Co-authored-by: Markus Neteler Co-authored-by: Edouard Choinière <27212526+echoix@users.noreply.github.com> --- docker/ubuntu/README.md | 2 +- imagery/i.signatures/i.signatures.html | 2 +- locale/po/grassmods_ar.po | 6 +++--- locale/po/grassmods_bn.po | 6 +++--- locale/po/grassmods_cs.po | 6 +++--- locale/po/grassmods_de.po | 6 +++--- locale/po/grassmods_el.po | 6 +++--- locale/po/grassmods_es.po | 6 +++--- locale/po/grassmods_fi.po | 6 +++--- locale/po/grassmods_fr.po | 6 +++--- locale/po/grassmods_hu.po | 6 +++--- locale/po/grassmods_id_ID.po | 6 +++--- locale/po/grassmods_it.po | 6 +++--- locale/po/grassmods_ja.po | 6 +++--- locale/po/grassmods_ko.po | 6 +++--- locale/po/grassmods_lv.po | 6 +++--- locale/po/grassmods_ml.po | 6 +++--- locale/po/grassmods_pl.po | 6 +++--- locale/po/grassmods_pt.po | 6 +++--- locale/po/grassmods_pt_BR.po | 6 +++--- locale/po/grassmods_ro.po | 6 +++--- locale/po/grassmods_ru.po | 6 +++--- locale/po/grassmods_si.po | 6 +++--- locale/po/grassmods_sl.po | 6 +++--- locale/po/grassmods_ta.po | 6 +++--- locale/po/grassmods_th.po | 6 +++--- locale/po/grassmods_tr.po | 6 +++--- locale/po/grassmods_uk.po | 6 +++--- locale/po/grassmods_vi.po | 6 +++--- locale/po/grassmods_zh.po | 6 +++--- locale/po/grassmods_zh_CN.po | 6 +++--- locale/po/grasswxpy_ar.po | 2 +- locale/po/grasswxpy_bn.po | 2 +- locale/po/grasswxpy_cs.po | 2 +- locale/po/grasswxpy_el.po | 2 +- locale/po/grasswxpy_es.po | 2 +- locale/po/grasswxpy_fi.po | 2 +- locale/po/grasswxpy_fr.po | 2 +- locale/po/grasswxpy_hu.po | 2 +- locale/po/grasswxpy_id_ID.po | 2 +- locale/po/grasswxpy_it.po | 2 +- locale/po/grasswxpy_ja.po | 2 +- locale/po/grasswxpy_ko.po | 2 +- locale/po/grasswxpy_lv.po | 2 +- locale/po/grasswxpy_ml.po | 2 +- locale/po/grasswxpy_pl.po | 2 +- locale/po/grasswxpy_pt.po | 2 +- locale/po/grasswxpy_pt_BR.po | 2 +- locale/po/grasswxpy_ro.po | 2 +- locale/po/grasswxpy_ru.po | 2 +- locale/po/grasswxpy_si.po | 2 +- locale/po/grasswxpy_sl.po | 2 +- locale/po/grasswxpy_ta.po | 2 +- locale/po/grasswxpy_th.po | 2 +- locale/po/grasswxpy_tr.po | 2 +- locale/po/grasswxpy_uk.po | 2 +- locale/po/grasswxpy_vi.po | 2 +- locale/po/grasswxpy_zh.po | 2 +- locale/po/grasswxpy_zh_CN.po | 2 +- locale/templates/grassmods.pot | 6 +++--- locale/templates/grasswxpy.pot | 2 +- raster/r.horizon/r.horizon.html | 2 +- raster3d/r3.gwflow/r3.gwflow.html | 2 +- renovate.json5 | 4 ++-- scripts/v.dissolve/v.dissolve.py | 2 +- vector/v.db.select/v.db.select.html | 2 +- 66 files changed, 127 insertions(+), 127 deletions(-) diff --git a/docker/ubuntu/README.md b/docker/ubuntu/README.md index 9a45651504c..a8f2764a239 100644 --- a/docker/ubuntu/README.md +++ b/docker/ubuntu/README.md @@ -88,7 +88,7 @@ bash-5.0# __To build a latest version with wxgui__: -The `GUI` build argument allows to choose if the GUI should +The `GUI` build argument allows choosing if the GUI should be included in the build (`GUI=with`) or not (`GUI=without`). ```bash diff --git a/imagery/i.signatures/i.signatures.html b/imagery/i.signatures/i.signatures.html index 403269ec84c..7f3ba1920e7 100644 --- a/imagery/i.signatures/i.signatures.html +++ b/imagery/i.signatures/i.signatures.html @@ -1,6 +1,6 @@

    DESCRIPTION

    -i.signatures module allows to manage signature files: +i.signatures module allows managing signature files:
    • "sig" – generated by i.gensig for i.maxlik
    • diff --git a/locale/po/grassmods_ar.po b/locale/po/grassmods_ar.po index cbb43ec6e9e..3c4c68d45f8 100644 --- a/locale/po/grassmods_ar.po +++ b/locale/po/grassmods_ar.po @@ -35230,7 +35230,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -40743,7 +40743,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -51689,7 +51689,7 @@ msgstr "كتابة ملف جديد...\n" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_bn.po b/locale/po/grassmods_bn.po index f3526d45180..53b06dd272f 100644 --- a/locale/po/grassmods_bn.po +++ b/locale/po/grassmods_bn.po @@ -32646,7 +32646,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37639,7 +37639,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47629,7 +47629,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_cs.po b/locale/po/grassmods_cs.po index 0d17c962990..0b4d04a2008 100644 --- a/locale/po/grassmods_cs.po +++ b/locale/po/grassmods_cs.po @@ -33469,7 +33469,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38799,7 +38799,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -49461,7 +49461,7 @@ msgstr "Exportují se prvky s kategorií..." #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_de.po b/locale/po/grassmods_de.po index 7e994f4b379..2a168b388ca 100644 --- a/locale/po/grassmods_de.po +++ b/locale/po/grassmods_de.po @@ -33833,7 +33833,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -39230,7 +39230,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Löst Grenzen zwischen benachbarten Flächen mit gleicher Kategorienummer oder " @@ -50003,7 +50003,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_el.po b/locale/po/grassmods_el.po index e183723b634..c285d2d7d10 100644 --- a/locale/po/grassmods_el.po +++ b/locale/po/grassmods_el.po @@ -32820,7 +32820,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37938,7 +37938,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48176,7 +48176,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_es.po b/locale/po/grassmods_es.po index ca8a6727270..8a0188b6448 100644 --- a/locale/po/grassmods_es.po +++ b/locale/po/grassmods_es.po @@ -34627,7 +34627,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -40162,7 +40162,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Disuelve contornos entre áreas adyacentes que comparten un número de " @@ -51266,7 +51266,7 @@ msgstr "Conviritiendo reglas de color en categorías..." #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_fi.po b/locale/po/grassmods_fi.po index 692d9c0d9f2..be1a87cd456 100644 --- a/locale/po/grassmods_fi.po +++ b/locale/po/grassmods_fi.po @@ -32664,7 +32664,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37662,7 +37662,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47677,7 +47677,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_fr.po b/locale/po/grassmods_fr.po index e56cb236875..3225a9d712b 100644 --- a/locale/po/grassmods_fr.po +++ b/locale/po/grassmods_fr.po @@ -33949,7 +33949,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -39447,7 +39447,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Fusionne des contours entre surfaces adjacentes partageant un attribut ou " @@ -50333,7 +50333,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_hu.po b/locale/po/grassmods_hu.po index ee0f0929c11..0cad5773fea 100644 --- a/locale/po/grassmods_hu.po +++ b/locale/po/grassmods_hu.po @@ -32714,7 +32714,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37770,7 +37770,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47888,7 +47888,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_id_ID.po b/locale/po/grassmods_id_ID.po index d9a39bafe24..df950915b12 100644 --- a/locale/po/grassmods_id_ID.po +++ b/locale/po/grassmods_id_ID.po @@ -32626,7 +32626,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37619,7 +37619,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47609,7 +47609,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_it.po b/locale/po/grassmods_it.po index 94368222e52..53af5452a54 100644 --- a/locale/po/grassmods_it.po +++ b/locale/po/grassmods_it.po @@ -33636,7 +33636,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38964,7 +38964,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Dissolve i confini tra aree adiacenti che condividono categorie o attributi " @@ -49678,7 +49678,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ja.po b/locale/po/grassmods_ja.po index 0dd3735b064..c4aa7ebd561 100644 --- a/locale/po/grassmods_ja.po +++ b/locale/po/grassmods_ja.po @@ -33121,7 +33121,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38412,7 +38412,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -49018,7 +49018,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ko.po b/locale/po/grassmods_ko.po index 8d255c6f5ad..09064eb9df8 100644 --- a/locale/po/grassmods_ko.po +++ b/locale/po/grassmods_ko.po @@ -33006,7 +33006,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38236,7 +38236,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48700,7 +48700,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_lv.po b/locale/po/grassmods_lv.po index 43e408d8721..cd5cf65275a 100644 --- a/locale/po/grassmods_lv.po +++ b/locale/po/grassmods_lv.po @@ -33073,7 +33073,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38284,7 +38284,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48739,7 +48739,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ml.po b/locale/po/grassmods_ml.po index a3693866979..cfe442a427e 100644 --- a/locale/po/grassmods_ml.po +++ b/locale/po/grassmods_ml.po @@ -32646,7 +32646,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37639,7 +37639,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47629,7 +47629,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_pl.po b/locale/po/grassmods_pl.po index dccca2f5d0f..ce0193ce676 100644 --- a/locale/po/grassmods_pl.po +++ b/locale/po/grassmods_pl.po @@ -33222,7 +33222,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38510,7 +38510,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Usuwa granice pomiędzy sąsiadującymi obszarami o tej samej kategorii lub " @@ -49108,7 +49108,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_pt.po b/locale/po/grassmods_pt.po index 4a28f18ff64..a22f945601b 100644 --- a/locale/po/grassmods_pt.po +++ b/locale/po/grassmods_pt.po @@ -33030,7 +33030,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38260,7 +38260,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48676,7 +48676,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_pt_BR.po b/locale/po/grassmods_pt_BR.po index d7bcb3c7f41..a40e9100d63 100644 --- a/locale/po/grassmods_pt_BR.po +++ b/locale/po/grassmods_pt_BR.po @@ -33360,7 +33360,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38650,7 +38650,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -49178,7 +49178,7 @@ msgstr "Convertendo regras de cores em categorias..." #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ro.po b/locale/po/grassmods_ro.po index 3f4174329a4..4f49bec89f3 100644 --- a/locale/po/grassmods_ro.po +++ b/locale/po/grassmods_ro.po @@ -33065,7 +33065,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38269,7 +38269,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Se dizolvă limitele dintre arealele adiacente un număr comun de categorii " @@ -48737,7 +48737,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ru.po b/locale/po/grassmods_ru.po index 2630e39adcf..87d6bbad54e 100644 --- a/locale/po/grassmods_ru.po +++ b/locale/po/grassmods_ru.po @@ -32900,7 +32900,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38055,7 +38055,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48284,7 +48284,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_si.po b/locale/po/grassmods_si.po index b2f15092dbc..2acdb89fbfe 100644 --- a/locale/po/grassmods_si.po +++ b/locale/po/grassmods_si.po @@ -32646,7 +32646,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37639,7 +37639,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47629,7 +47629,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_sl.po b/locale/po/grassmods_sl.po index 56c5e73fd60..c1f78896be4 100644 --- a/locale/po/grassmods_sl.po +++ b/locale/po/grassmods_sl.po @@ -35453,7 +35453,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -40975,7 +40975,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -51966,7 +51966,7 @@ msgstr "Uporabljam koordinate središča sloja\n" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_ta.po b/locale/po/grassmods_ta.po index 4bd45b751d5..05719977a92 100644 --- a/locale/po/grassmods_ta.po +++ b/locale/po/grassmods_ta.po @@ -32662,7 +32662,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37669,7 +37669,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47684,7 +47684,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_th.po b/locale/po/grassmods_th.po index a38947544d5..65e557c85d9 100644 --- a/locale/po/grassmods_th.po +++ b/locale/po/grassmods_th.po @@ -32774,7 +32774,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37894,7 +37894,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48103,7 +48103,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_tr.po b/locale/po/grassmods_tr.po index ef10aa29895..ecb42b13505 100644 --- a/locale/po/grassmods_tr.po +++ b/locale/po/grassmods_tr.po @@ -33009,7 +33009,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38276,7 +38276,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48802,7 +48802,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_uk.po b/locale/po/grassmods_uk.po index ded3fc09c7a..65b9178e653 100644 --- a/locale/po/grassmods_uk.po +++ b/locale/po/grassmods_uk.po @@ -32686,7 +32686,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37679,7 +37679,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47669,7 +47669,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_vi.po b/locale/po/grassmods_vi.po index cb4f0aa95a9..49b0683b187 100644 --- a/locale/po/grassmods_vi.po +++ b/locale/po/grassmods_vi.po @@ -32777,7 +32777,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37924,7 +37924,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48138,7 +48138,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_zh.po b/locale/po/grassmods_zh.po index 3ec8942025d..cccf638e84a 100644 --- a/locale/po/grassmods_zh.po +++ b/locale/po/grassmods_zh.po @@ -32927,7 +32927,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -38146,7 +38146,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -48560,7 +48560,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grassmods_zh_CN.po b/locale/po/grassmods_zh_CN.po index 476cc510193..455581b506d 100644 --- a/locale/po/grassmods_zh_CN.po +++ b/locale/po/grassmods_zh_CN.po @@ -32627,7 +32627,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37620,7 +37620,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47610,7 +47610,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/po/grasswxpy_ar.po b/locale/po/grasswxpy_ar.po index d036766265d..0475f287e81 100644 --- a/locale/po/grasswxpy_ar.po +++ b/locale/po/grasswxpy_ar.po @@ -7568,7 +7568,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_bn.po b/locale/po/grasswxpy_bn.po index e02d0b5a3ba..76ade0c0e31 100644 --- a/locale/po/grasswxpy_bn.po +++ b/locale/po/grasswxpy_bn.po @@ -7576,7 +7576,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_cs.po b/locale/po/grasswxpy_cs.po index 2423deae915..24423cf5314 100644 --- a/locale/po/grasswxpy_cs.po +++ b/locale/po/grasswxpy_cs.po @@ -7757,7 +7757,7 @@ msgstr "Rozloží společné hranice " #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Rozloží hranice mezi sousedícími plochami, sdílejícími společné číslo " diff --git a/locale/po/grasswxpy_el.po b/locale/po/grasswxpy_el.po index 86bd0fc413c..582972aba2b 100644 --- a/locale/po/grasswxpy_el.po +++ b/locale/po/grasswxpy_el.po @@ -7647,7 +7647,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_es.po b/locale/po/grasswxpy_es.po index a1b7b5dc5ca..dd64f3e2ca1 100644 --- a/locale/po/grasswxpy_es.po +++ b/locale/po/grasswxpy_es.po @@ -8127,7 +8127,7 @@ msgstr "Disolver contornos" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Disuelve contornos entre áreas adyacentes que comparten un número de " diff --git a/locale/po/grasswxpy_fi.po b/locale/po/grasswxpy_fi.po index f8bc8277c4c..72ce83830d8 100644 --- a/locale/po/grasswxpy_fi.po +++ b/locale/po/grasswxpy_fi.po @@ -7592,7 +7592,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_fr.po b/locale/po/grasswxpy_fr.po index cc9054a8c58..8879c526ca7 100644 --- a/locale/po/grasswxpy_fr.po +++ b/locale/po/grasswxpy_fr.po @@ -8108,7 +8108,7 @@ msgstr "Fusionner des contours" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Fusionne des contours entre surfaces adjacentes partageant un attribut ou " diff --git a/locale/po/grasswxpy_hu.po b/locale/po/grasswxpy_hu.po index 31bfc368ed9..c461a875154 100644 --- a/locale/po/grasswxpy_hu.po +++ b/locale/po/grasswxpy_hu.po @@ -7715,7 +7715,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_id_ID.po b/locale/po/grasswxpy_id_ID.po index 214b014b5ca..e1983612035 100644 --- a/locale/po/grasswxpy_id_ID.po +++ b/locale/po/grasswxpy_id_ID.po @@ -7571,7 +7571,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_it.po b/locale/po/grasswxpy_it.po index 214a047df46..ddeb21e75d2 100644 --- a/locale/po/grasswxpy_it.po +++ b/locale/po/grasswxpy_it.po @@ -7922,7 +7922,7 @@ msgstr "Dissolvi confini" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Dissolve i confini tra aree adiacenti che condividono categorie o attributi " diff --git a/locale/po/grasswxpy_ja.po b/locale/po/grasswxpy_ja.po index 3e5d57c2131..dce28745650 100644 --- a/locale/po/grasswxpy_ja.po +++ b/locale/po/grasswxpy_ja.po @@ -7723,7 +7723,7 @@ msgstr "境界の融合" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "共通のカテゴリー番号や属性を共有するエリアを融合させる" diff --git a/locale/po/grasswxpy_ko.po b/locale/po/grasswxpy_ko.po index 8b4fb2b2df0..2562d99de06 100644 --- a/locale/po/grasswxpy_ko.po +++ b/locale/po/grasswxpy_ko.po @@ -7640,7 +7640,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_lv.po b/locale/po/grasswxpy_lv.po index b3b37154a29..e733c4449a3 100644 --- a/locale/po/grasswxpy_lv.po +++ b/locale/po/grasswxpy_lv.po @@ -7710,7 +7710,7 @@ msgstr "Izšķīdināt robežas" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_ml.po b/locale/po/grasswxpy_ml.po index 662a6f8458f..f0cd245758a 100644 --- a/locale/po/grasswxpy_ml.po +++ b/locale/po/grasswxpy_ml.po @@ -7611,7 +7611,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_pl.po b/locale/po/grasswxpy_pl.po index ac254af9257..f399314c413 100644 --- a/locale/po/grasswxpy_pl.po +++ b/locale/po/grasswxpy_pl.po @@ -7768,7 +7768,7 @@ msgstr "Granice regionu" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Usuwa granice pomiędzy sąsiadującymi obszarami o tej samej kategorii lub " diff --git a/locale/po/grasswxpy_pt.po b/locale/po/grasswxpy_pt.po index fba7c73d12c..9ac71057c8c 100644 --- a/locale/po/grasswxpy_pt.po +++ b/locale/po/grasswxpy_pt.po @@ -7628,7 +7628,7 @@ msgstr "Dissolver fronteiras/contornos" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_pt_BR.po b/locale/po/grasswxpy_pt_BR.po index 25d6d633daf..bd7f33c244d 100644 --- a/locale/po/grasswxpy_pt_BR.po +++ b/locale/po/grasswxpy_pt_BR.po @@ -7995,7 +7995,7 @@ msgstr "Dissolver fronteiras" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Dissolve fronteiras entre áreas adjacentes que compartilham um número de " diff --git a/locale/po/grasswxpy_ro.po b/locale/po/grasswxpy_ro.po index b6b46be3dcc..973569f6110 100644 --- a/locale/po/grasswxpy_ro.po +++ b/locale/po/grasswxpy_ro.po @@ -7799,7 +7799,7 @@ msgstr "Dizolvă limitele" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Se dizolvă limitele dintre arealele adiacente un număr comun de categorii " diff --git a/locale/po/grasswxpy_ru.po b/locale/po/grasswxpy_ru.po index 0ba2b3f722c..67c026b0770 100644 --- a/locale/po/grasswxpy_ru.po +++ b/locale/po/grasswxpy_ru.po @@ -8225,7 +8225,7 @@ msgstr "Удаление границ" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Удаляет границы между смежными полигонами с одинаковым номером категории или " diff --git a/locale/po/grasswxpy_si.po b/locale/po/grasswxpy_si.po index ffb2ef37ba9..f3d27cc8385 100644 --- a/locale/po/grasswxpy_si.po +++ b/locale/po/grasswxpy_si.po @@ -7570,7 +7570,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_sl.po b/locale/po/grasswxpy_sl.po index d4be9c40b20..d38b3ea58a5 100644 --- a/locale/po/grasswxpy_sl.po +++ b/locale/po/grasswxpy_sl.po @@ -7568,7 +7568,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_ta.po b/locale/po/grasswxpy_ta.po index 0ef7e90495b..7d752f435f6 100644 --- a/locale/po/grasswxpy_ta.po +++ b/locale/po/grasswxpy_ta.po @@ -7580,7 +7580,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_th.po b/locale/po/grasswxpy_th.po index 056f6c8805e..b65840cfe09 100644 --- a/locale/po/grasswxpy_th.po +++ b/locale/po/grasswxpy_th.po @@ -7598,7 +7598,7 @@ msgstr "ละลาย ขอบเขต" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "Dissolves เขต ระหว่าง พื้นที่ที่อยู่ติดกันและมี ข้อมูลเหมือนกัน" diff --git a/locale/po/grasswxpy_tr.po b/locale/po/grasswxpy_tr.po index 726090ba1d6..760a131dcc6 100644 --- a/locale/po/grasswxpy_tr.po +++ b/locale/po/grasswxpy_tr.po @@ -7662,7 +7662,7 @@ msgstr "Sınırları çöz" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 #, fuzzy msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" "Ortak kategori numarası veya özniteliği paylaşan komşu alanlar arasındaki " diff --git a/locale/po/grasswxpy_uk.po b/locale/po/grasswxpy_uk.po index 196ede55c72..4bf446da553 100644 --- a/locale/po/grasswxpy_uk.po +++ b/locale/po/grasswxpy_uk.po @@ -7571,7 +7571,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_vi.po b/locale/po/grasswxpy_vi.po index f4c61ca3ab2..364aed72ba1 100644 --- a/locale/po/grasswxpy_vi.po +++ b/locale/po/grasswxpy_vi.po @@ -7581,7 +7581,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_zh.po b/locale/po/grasswxpy_zh.po index 6d0ac28a768..4d2ab8dfd85 100644 --- a/locale/po/grasswxpy_zh.po +++ b/locale/po/grasswxpy_zh.po @@ -7684,7 +7684,7 @@ msgstr "边界融合" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/po/grasswxpy_zh_CN.po b/locale/po/grasswxpy_zh_CN.po index 1172a4af931..cbb050149b9 100644 --- a/locale/po/grasswxpy_zh_CN.po +++ b/locale/po/grasswxpy_zh_CN.po @@ -7571,7 +7571,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/locale/templates/grassmods.pot b/locale/templates/grassmods.pot index 3476f2faa63..30b09b22a2b 100644 --- a/locale/templates/grassmods.pot +++ b/locale/templates/grassmods.pot @@ -32646,7 +32646,7 @@ msgstr "" #: ../locale/scriptstrings/v.what.spoly_to_translate.c:1 msgid "" -"Queries vector map with overlaping \"spaghetti\" polygons (e.g. Landsat " +"Queries vector map with overlapping \"spaghetti\" polygons (e.g. Landsat " "footprints) at given location. Polygons must have not intersected boundaries." msgstr "" @@ -37639,7 +37639,7 @@ msgstr "" #: ../locale/scriptstrings/v.dissolve_to_translate.c:1 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" @@ -47629,7 +47629,7 @@ msgstr "" #: ../locale/scriptstrings/v.scatterplot_to_translate.c:85 msgid "" -"Colum with categories. If selected, a separate ellipse will be drawn for " +"Column with categories. If selected, a separate ellipse will be drawn for " "each group/category" msgstr "" diff --git a/locale/templates/grasswxpy.pot b/locale/templates/grasswxpy.pot index cc797b54db5..57126b7f1a1 100644 --- a/locale/templates/grasswxpy.pot +++ b/locale/templates/grasswxpy.pot @@ -7569,7 +7569,7 @@ msgstr "" #: ../gui/wxpython/menustrings.py:572 ../gui/wxpython/menustrings.py:1537 msgid "" -"Dissolves adjacent or overlaping features sharing a common category number " +"Dissolves adjacent or overlapping features sharing a common category number " "or attribute." msgstr "" diff --git a/raster/r.horizon/r.horizon.html b/raster/r.horizon/r.horizon.html index 513af64b8c4..5adbf66a63f 100644 --- a/raster/r.horizon/r.horizon.html +++ b/raster/r.horizon/r.horizon.html @@ -31,7 +31,7 @@

      DESCRIPTION

      orientation (North=0, clockwise).

      -Activating the -l flag allows to additionally print the distance +Activating the -l flag allows additionally printing the distance to each horizon angle.

      Input parameters:

      diff --git a/raster3d/r3.gwflow/r3.gwflow.html b/raster3d/r3.gwflow/r3.gwflow.html index 7ced5f01ba8..82dca510162 100644 --- a/raster3d/r3.gwflow/r3.gwflow.html +++ b/raster3d/r3.gwflow/r3.gwflow.html @@ -4,7 +4,7 @@

      DESCRIPTION

      confined groundwater flow in three dimensions based on volume maps and the current 3D region settings. All initial- and boundary-conditions must be provided as volume maps. -The unit of the current coordinate refernce system must be meters. +The unit of the current coordinate reference system must be meters.

      This module is sensitive to mask settings. All cells which are outside the mask are ignored and handled as no flow boundaries.

      The module calculates the piezometric head and optionally the water diff --git a/renovate.json5 b/renovate.json5 index b5c0aeba9b8..12451b04103 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -5,11 +5,11 @@ ":semanticCommits", ":semanticCommitTypeAll(CI)", - // allows to use comments starting with + // allows using comments starting with // "# renovate: " to update _VERSION // environment variables in GitHub Action files. "customManagers:githubActionsVersions", - // allows to use comments starting with + // allows using comments starting with // "# renovate: " to update _VERSION // ENV or ARG in a Dockerfile. "customManagers:dockerfileVersions", diff --git a/scripts/v.dissolve/v.dissolve.py b/scripts/v.dissolve/v.dissolve.py index 7336833060a..cb03ae3591e 100755 --- a/scripts/v.dissolve/v.dissolve.py +++ b/scripts/v.dissolve/v.dissolve.py @@ -16,7 +16,7 @@ ############################################################################# # %module -# % description: Dissolves adjacent or overlaping features sharing a common category number or attribute. +# % description: Dissolves adjacent or overlapping features sharing a common category number or attribute. # % keyword: vector # % keyword: dissolve # % keyword: area diff --git a/vector/v.db.select/v.db.select.html b/vector/v.db.select/v.db.select.html index e75beb5336b..13bbbbb1b78 100644 --- a/vector/v.db.select/v.db.select.html +++ b/vector/v.db.select/v.db.select.html @@ -107,7 +107,7 @@

      JSON

      The JSON also contains information about columns stored under key info. Column names and types are under key columns. -Each colum has SQL data type under sql_type in all caps. +Each column has SQL data type under sql_type in all caps. A boolean is_number specifies whether the value is a number, i.e., integer or floating point number. The is_number value is aded for convenience and it is recommended to rely on the types derived From 9518106de82aeafb497c51cd5b8bfaffae98cd6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hern=C3=A1n=20De=20Angelis?= <51515911+dhdeangelis@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:16:11 +0100 Subject: [PATCH 44/45] docs: v.class.html fix typo, plus minor edit (#4762) --- vector/v.class/v.class.html | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/vector/v.class/v.class.html b/vector/v.class/v.class.html index 026f81c7e73..d833975173e 100644 --- a/vector/v.class/v.class.html +++ b/vector/v.class/v.class.html @@ -35,19 +35,20 @@

      NOTES

      are those of the number of breaks asked for.

      The discont algorithm systematically searches discontinuities -in the slope of the cumulated frequencies curve, by approximating this +in the slope of the cumulative frequencies curve, by approximating this curve through straight line segments whose vertices define the class breaks. The first approximation is a straight line which links the two end nodes of the curve. This line is then replaced by a two-segmented polyline whose central node is the point on the curve which is farthest from the preceding straight line. The point on the curve furthest from this new polyline is then chosen as a new node to create break up one of -the two preceding segments, and so forth. The problem of the difference -in terms of units between the two axes is solved by rescaling both -amplitudes to an interval between 0 and 1. In the original algorithm, -the process is stopped when the difference between the slopes of the two -new segments is no longer significant (alpha = 0.05). As the slope is -the ratio between the frequency and the amplitude of the corresponding +the two preceding segments, and so forth. + +

      The problem of the difference in terms of units between the two axes +is solved by rescaling both amplitudes to an interval between 0 and 1. +In the original algorithm, the process is stopped when the difference between +the slopes of the two new segments is no longer significant (alpha = 0.05). As +the slope is the ratio between the frequency and the amplitude of the corresponding interval, i.e. its density, this effectively tests whether the frequencies of the two newly proposed classes are different from those obtained by simply distributing the sum of their frequencies amongst them in proportion From 7e29f98e86c644696e35f504c8ae4d287e1745d3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Nov 2024 12:46:50 +0000 Subject: [PATCH 45/45] CI(deps): Update docker/build-push-action action to v6.10.0 (#4763) --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e4369818fc6..577a9702011 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -76,7 +76,7 @@ jobs: password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push id: docker_build - uses: docker/build-push-action@4f58ea79222b3b9dc2c8bbdd6debcef730109a75 # v6.9.0 + uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 with: push: true pull: true

    sqliteData storage in SQLite database files (default DB backend)http://sqlite.org/
    https://sqlite.org/
    dbfData storage in DBF files http://shapelib.maptools.org/dbf_api.html
    pgData storage in PostgreSQL RDBMShttp://postgresql.org/
    https://postgresql.org/
    mysqlData storage in MySQL RDBMShttp://mysql.org/
    https://www.mysql.org/
    odbcData storage via UnixODBC (PostgreSQL, Oracle, etc.) https://www.unixodbc.org/