From 884787bbb23c43789064d150d2217e1437795641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Ri=C3=9Fe?= Date: Fri, 24 May 2024 17:32:57 +0200 Subject: [PATCH 1/2] Add a codespell lint job --- .github/workflows/lint.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 6c8e77ee5..1e3ceee21 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -13,6 +13,21 @@ on: - 'GSOC**' jobs: + codespell: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3 + uses: actions/setup-python@v5 + with: + python-version: "3.x" + - name: Lint with codespell + run: | + python -m pip install --upgrade pip + pip install codespell + git ls-files -z | xargs -0 codespell --check-filenames + flake8: runs-on: ubuntu-latest timeout-minutes: 10 From 89ea551bc89fc0c9b4c7d3218200f2385446c4b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Ri=C3=9Fe?= Date: Mon, 27 May 2024 16:43:19 +0200 Subject: [PATCH 2/2] Fix misspellings found by codespell --- CHANGES.rst | 44 +++++++++---------- codespell-ignored-lines.txt | 2 + conftest.py | 2 +- docs/about.rst | 4 +- docs/development.rst | 10 ++--- docs/installation.rst | 8 ++-- docs/mscolab.rst | 8 ++-- docs/mswms.rst | 6 +-- .../mscolab/setup_saml2_backend.py.sample | 4 +- .../msui/performance_simple.json.sample | 2 +- docs/samples/config/mswms/mss_chem_plots.py | 12 ++--- .../config/mswms/mswms_settings.py.chem_plots | 2 +- .../config/mswms/mswms_settings.py.demodata | 2 +- .../config/mswms/mswms_settings.py.sample | 2 +- docs/samples/plugins/navaid.rst | 4 +- docs/sso_via_saml_mscolab.rst | 6 +-- .../tutorial_introduction_topview.rst | 2 +- docs/tutorials/tutorial_mscolab.rst | 2 +- docs/tutorials/tutorial_satellitetrack.rst | 2 +- localbuild/meta.yaml | 2 +- mslib/mscolab/conf.py | 2 +- mslib/mscolab/file_manager.py | 4 +- mslib/mscolab/mscolab.py | 2 +- mslib/mscolab/server.py | 4 +- mslib/msidp/idp.py | 8 ++-- mslib/msidp/idp_uwsgi.py | 8 ++-- mslib/msui/aircrafts.py | 2 +- mslib/msui/mpl_map.py | 2 +- mslib/msui/mpl_pathinteractor.py | 4 +- mslib/msui/mpl_qtwidget.py | 10 ++--- mslib/msui/mscolab.py | 4 +- mslib/msui/performance_settings.py | 8 ++-- mslib/msui/sideview.py | 2 +- mslib/msui/socket_control.py | 2 +- mslib/msui/wms_control.py | 16 +++---- mslib/mswms/dataaccess.py | 4 +- mslib/mswms/demodata.py | 4 +- mslib/mswms/gallery_builder.py | 4 +- mslib/mswms/mpl_hsec.py | 2 +- mslib/mswms/mpl_hsec_styles.py | 6 +-- mslib/mswms/mpl_vsec_styles.py | 4 +- mslib/mswms/wms.py | 4 +- mslib/static/docs/about.md | 4 +- .../templates/idp/idp_login_success.html | 2 +- .../static/templates/user/reset_password.html | 4 +- mslib/support/qt_json_view/model.py | 2 +- mslib/utils/migration/config_before_nine.py | 2 +- .../update_json_file_to_version_eight.py | 2 +- .../update_json_file_to_version_nine.py | 2 +- mslib/utils/netCDF4tools.py | 2 +- mslib/utils/qt.py | 4 +- pyproject.toml | 10 +++++ tests/_test_mscolab/test_file_manager.py | 2 +- tests/_test_mscolab/test_files_api.py | 2 +- .../test_server_auth_required.py | 2 +- tests/_test_mscolab/test_sockets_manager.py | 10 ++--- .../{test_aircrafts.py => test_aircraft.py} | 6 +-- tests/_test_msui/test_tableview.py | 2 +- tests/_test_mswms/test_wms.py | 4 +- tests/data/performance_simple.json | 2 +- tutorials/textfiles/tutorial_mscolab.txt | 8 ++-- .../textfiles/tutorial_satellitetrack.txt | 2 +- tutorials/textfiles/tutorial_wms.txt | 2 +- tutorials/tutorial_mscolab.py | 4 +- tutorials/tutorial_views.py | 2 +- tutorials/utils/__init__.py | 2 +- 66 files changed, 164 insertions(+), 152 deletions(-) create mode 100644 codespell-ignored-lines.txt create mode 100644 pyproject.toml rename tests/_test_msui/{test_aircrafts.py => test_aircraft.py} (96%) diff --git a/CHANGES.rst b/CHANGES.rst index a4d234058..5a66191ed 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -80,7 +80,7 @@ https://github.com/Open-MSS/MSS/milestone/99?closed=1 Version 8.3.0 ~~~~~~~~~~~~~ -Bug fix release and minor enhacements: +Bug fix release and minor enhancements: We improved the KML docking widget feature All changes: @@ -89,7 +89,7 @@ https://github.com/Open-MSS/MSS/milestone/98?closed=1 Version 8.2.0 ~~~~~~~~~~~~~ -Bug fix release and minor enhacements: +Bug fix release and minor enhancements: HINT: ~~~~~ @@ -148,7 +148,7 @@ Jatin Jain did UI and server improvements in his GSoC project. Users can now, compare and plot multiple flightpaths on topview. This feature can be used for flightpathes or MSColab operations. A fligthpath style width can be changed. -Timestamps are dislayed below each message in MSColab. +Timestamps are displayed below each message in MSColab. Mscolab Operations in use for more than 30 days, move to an inactive list. The initial idea for multiple flightpaths on topview stems from bkirbus. GSoC mentors were Reimar Bauer, Jörn Ungermann, Sonja Gisinger @@ -311,7 +311,7 @@ Version 6.1.0 ~~~~~~~~~~~~~ This release includes some small improvements of the usablity. -A few bug fixes, a new plugin for NAVAID waypoints is decribed and +A few bug fixes, a new plugin for NAVAID waypoints is described and mscolab gots few improvements for user creation. Wind speed plots can now be created for altitudes > 25km. @@ -474,7 +474,7 @@ HINT: ~~~~~ For using the 1-D samples along the flight path you have to add a configuration to your -mss_wms_settings.py. Similiar as to the other layers add: +mss_wms_settings.py. Similar as to the other layers add: .. code-block:: python @@ -634,7 +634,7 @@ Bug Fixes: - Error in handling project permission update in mscolab, #539 - mscolab: Selected Project highlight removed if new project is added, #533 - GUI tests fail in OSX, #531 - - developer hint seperate data from source, #529 + - developer hint separate data from source, #529 - PyVirtualDisplay Package not found for Windows OS, #527 - sync our meta.yaml with the one on conda-forge, #526 - improve "Building a development environment", #524 @@ -657,7 +657,7 @@ Bug Fixes: - make rtfd use of Non-ASCII characters, #492 - mscolab server command crashes, #491 - MSS doesn't close when "quit"ing while being connected to MSCO server, #490 - - "Checkout" of older revisions has no effect without double-clicking the revison, #485 + - "Checkout" of older revisions has no effect without double-clicking the revision, #485 - Adding unknown user to project throws exception, #483 - mcso windows cannot be closed by ctrl+w, #473 @@ -698,7 +698,7 @@ HINT ~~~~ - We deprecated and disabled the unmaintained feature trajectory and time series view. This will become removed in the next major release, #476 - - We added a new powerfull feature for collaborative editing of flight pathes. + - We added a new powerful feature for collaborative editing of flight paths. This is a new server and also a new client gui window. In a future version the client gui will replace the standard gui. @@ -771,8 +771,8 @@ New Features: - Avoid "catch-all" exception handlers, #42 Bug Fixes: - - Top View Map Appeareance options not defined with web map services, #401 - - Image dissappears after insert/delete operation in sideview mode, #399 + - Top View Map Appearance options not defined with web map services, #401 + - Image disappears after insert/delete operation in sideview mode, #399 - sideview options dialog suffix always hPa, #394 - Msui crashes on selecting Northern Hemisphere (stereo) from drop down menu under Top View section, #388 - qt widget property issue, #387 @@ -781,7 +781,7 @@ Bug Fixes: Other Changes: - clean up comments, #406 - - remove superflous pass statements, #405 + - remove superfluous pass statements, #405 - Change comments for function "flightlevel2pressure_a", #384 - Documentation about Reporting Issues, #112 @@ -822,7 +822,7 @@ Bug Fixes: - Support http://msgcpp-ogc-realtime.knmi.nl/msgrt.cgi WMS Server, #352 - Support http://geoservices.knmi.nl/cgi-bin/HARM_N25.cgi WMS server, #351 - Support NASA WMS Server "https://neo.sci.gsfc.nasa.gov/wms/wms", #348 - - wms server: return only on the getcapability request a capabilty document, #346 + - wms server: return only on the getcapability request a capability document, #346 - demodata pressure levels uses inconsistent units, #341 - waypoint labels (in sideview) not readable, #317 @@ -865,7 +865,7 @@ Version 1.7.0 ------------- New Features: - - Decrease unit depency of plotting styles, #328 + - Decrease unit dependency of plotting styles, #328 - Support basemap 1.1.0, #315, #329 - zorder of several plot elements in topview is wrong, #314 - pyfilesystem2 implemented, #313 @@ -933,7 +933,7 @@ Version 1.6.0 New Features: - disable traceback for server, #156 - - hybrid sigma coordinate whould work with float values, #203 + - hybrid sigma coordinate would work with float values, #203 - WMS data access classes difficult to set up, #210 - add mss to docker platform, 211 - loading a flighttrackfile does not set filename, #214 @@ -948,7 +948,7 @@ New Features: - Try preloading WMS servers on startup, #250 - traceback should show version info, #256 - add version info to output files, #259 - - completly remove vt_cache, #260 + - completely remove vt_cache, #260 - update layer list on get_capabilities, #268 Bug Fixes: @@ -1033,7 +1033,7 @@ Version 1.5.1 ------------- Bug Fixes: - - clicks on same position crashs waypoint insert for cyl projection, #197 + - clicks on same position crashes waypoint insert for cyl projection, #197 - existing picklefiles of py2 crash on py3 version (vice versa), #198 @@ -1051,12 +1051,12 @@ New Features: - refactored url strings, #150 - performance data used for time information on vertical plots, #151 - use a singleton for WMS capability storage, #168 - - ui files, _test folders excluded from conda build pacakages, #169 + - ui files, _test folders excluded from conda build packages, #169 - implemented virtualdisplay for linux, #172 - cache for basemap coastline and country shape data added, #173 - - consistant naming of "as" imports, #175 + - consistent naming of "as" imports, #175 - loopview enable/disabled, based on given URL, #183 - - configurable external proxy to cache on low bandwidth transfered images, #188 + - configurable external proxy to cache on low bandwidth transferred images, #188 Bug Fixes: @@ -1067,7 +1067,7 @@ Bug Fixes: Other Changes: - - line seperator of source files unified to LF, #92 + - line separator of source files unified to LF, #92 - refactored whole codebase for compatibility with python3, #176 - version number of recent conda package added to documentation, #185 - split mss_settings.json.sample into snippet parts, and further documentation #194 @@ -1131,7 +1131,7 @@ Version 1.3.3 Bug Fixes: - Inserting Waypoint outside of map in TopView crashes MSS, #149 - - Some of the additional tools don't close completly, #139 + - Some of the additional tools don't close completely, #139 Version 1.3.2 @@ -1279,7 +1279,7 @@ Bug Fixes: Other Changes: - - Namespace refactored, all modules dependend to mslib #24 + - Namespace refactored, all modules dependent to mslib #24 - Sphinx documentation introduced, #25, #26 - Documentation on http://mss.rtfd.io - Installation recipes based on conda diff --git a/codespell-ignored-lines.txt b/codespell-ignored-lines.txt new file mode 100644 index 000000000..36a2dc392 --- /dev/null +++ b/codespell-ignored-lines.txt @@ -0,0 +1,2 @@ + ssl_ciphers HIGH:!aNULL:!MD5; + - moved of mslib.thirdparty.owslib to mslib.owslib and hardcoded all imports in owslib to mslib.owslib, #1 diff --git a/conftest.py b/conftest.py index e596983d7..0861e226d 100644 --- a/conftest.py +++ b/conftest.py @@ -85,7 +85,7 @@ def generate_initial_config(): if not constants.ROOT_FS.exists("msui/testdata"): constants.ROOT_FS.makedirs("msui/testdata") - # make a copy for mscolab test, so that we read different pathes during parallel tests. + # make a copy for mscolab test, so that we read different paths during parallel tests. sample_path = os.path.join(os.path.dirname(__file__), "tests", "data") shutil.copy(os.path.join(sample_path, "example.ftml"), constants.ROOT_DIR) diff --git a/docs/about.rst b/docs/about.rst index cc2e542b0..8b39fa961 100644 --- a/docs/about.rst +++ b/docs/about.rst @@ -3,8 +3,8 @@ About The Mission Support System (MSS) is a software that is written by scientists in the field of atmospheric science. The purpose is to have a tool that simplifies the process for planning a scientific flight in which -parameters of the atmosphere are measured. The research aircrafts typically carry a comprehensive scientific payload -comprised of data aquisition instruments by different companies and research institutions. +parameters of the atmosphere are measured. The research aircraft typically carry a comprehensive scientific payload +comprised of data acquisition instruments by different companies and research institutions. The measurement of relevant parameters, for example the chemical composition of trace gases, temperature or aerosol particle characteristics, are needed to improve the scientific understanding of the processes in the atmosphere. This is of significant importance for the understanding for example of climate change or the diff --git a/docs/development.rst b/docs/development.rst index 26f4dca81..2fbd3d199 100644 --- a/docs/development.rst +++ b/docs/development.rst @@ -7,8 +7,8 @@ This chapter will get you started with MSS development. MSS is written in Python. -Once a stable release is published we do only bug fixes in stable and release regulary -new minor versions. If a fix needs a API change or it is likly more a new feature you have +Once a stable release is published we do only bug fixes in stable and release regularly +new minor versions. If a fix needs a API change or it is likely more a new feature you have to make a pull request to the develop branch. Documentation of changes is done by using our `issue tracker `_. @@ -147,7 +147,7 @@ Using predefined docker images instead of installing all requirements You can easily use our testing docker images which have all libraries pre installed. These are based on miniforge. We provide two images. In openmss/testing-stable we have mss-stable-env and in openmss/testing-develop we have mss-develop-env defined. -In the further course of the documentation we speak of the environment mssdev, this corresponds to one of these evironments. +In the further course of the documentation we speak of the environment mssdev, this corresponds to one of these environments. You can either mount your MSS workdir in the container or use the environment from the container as environment on your machine. @@ -282,7 +282,7 @@ Building the docs with Sphinx The documentation (in reStructuredText format, .rst) is in docs/. Usually building the docs also includes creating the images and pages for the gallery feature. -This can be ommitted by setting an environment variable :: +This can be omitted by setting an environment variable :: export GALLERY=False @@ -428,7 +428,7 @@ After filling the template completely click on Pull request Merging stable into develop --------------------------- -Bug fixes we have done in stable we need to merge regulary into develop too:: +Bug fixes we have done in stable we need to merge regularly into develop too:: git checkout stable git pull git@github.com:Open-MSS/MSS.git stable diff --git a/docs/installation.rst b/docs/installation.rst index 539a0222b..9075d450a 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -6,7 +6,7 @@ The Mission Support System (MSS) including a Web Map Service, a Collaboration Se This channel conda-forge has builds for osx-64, linux-64, win-64 -The conda-forge `github organization `_ uses various automated continuos integration +The conda-forge `github organization `_ uses various automated continuous integration build processes. We provide an automatic installation and a manual installation. @@ -147,7 +147,7 @@ you could try the `mamba update mss` as described. .. Important:: - mamba is under development. All dependencies of MSS and MSS itselfs are under development. + mamba is under development. All dependencies of MSS and MSS itself are under development. Sometimes this update feature of mamba can't resolve from existing to new dependencies. search for MSS what you can get :: @@ -164,7 +164,7 @@ compare what you have installed :: mss 7.0.2 py310hff52083_0 conda-forge -We have reports that often an update suceeds by using the install option and the new version number, +We have reports that often an update succeeds by using the install option and the new version number, in this example $mss_version and python as second option :: (mssenv) $ mamba install mss=$mss_version python @@ -175,7 +175,7 @@ The alternative is to use a new environment and install mss. -For further details of configurating mss :ref:`msui-configuration` +For further details of configuring mss :ref:`msui-configuration` Docker Instance diff --git a/docs/mscolab.rst b/docs/mscolab.rst index 983cf2921..7eb305d5f 100644 --- a/docs/mscolab.rst +++ b/docs/mscolab.rst @@ -54,7 +54,7 @@ Make a text file with the following format to import many users to the mscolab d $ mscolab db --users_by_file /path/to/file -After executed you get informations to exchange with users. +After executed you get information to exchange with users. .. code-block:: text @@ -69,7 +69,7 @@ Further options can be listed by `mscolab db -h` User Groups for Operations .......................... -When you want to use same set of users for different operations using same catagory +When you want to use same set of users for different operations using same category you can do this by setting up users in a special operation. On a given category for an operation ending with GROUP_POSTFIX @@ -139,10 +139,10 @@ If you want to use nginx to proxy this gunicorn server have a look on the exampl Backup Data Base ................ -For backups you can dump by `pg_dump -d mscolab -f outpu.sql` the sqlite database +For backups you can dump by `pg_dump -d mscolab -f output.sql` the sqlite database and restore it by `psql -v ON_ERROR_STOP=1 < new_db.sql` -On a PostgreSQL db you can regulary do backups by creating a dump +On a PostgreSQL db you can regularly do backups by creating a dump by `pg_dump `_ using a cron job :: #!/bin/bash diff --git a/docs/mswms.rst b/docs/mswms.rst index 79b3a1eff..90404fc48 100644 --- a/docs/mswms.rst +++ b/docs/mswms.rst @@ -495,7 +495,7 @@ package apache2-dev on your server. At current state we have to use pip to install mod_wsgi into the INSTANCE environment:: - # Instal `mod_wsgi` + # Install `mod_wsgi` $ pip install mod_wsgi # Find the full path to installed `mod_wsgi` @@ -519,7 +519,7 @@ Enable the new module by a2enmod and reload the apache2 server Configuration of apache mod_wsgi.conf ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -One posibility to setup the PYTHONPATH environment variable is by adding it to your mod_wsgi.conf. Alternativly you +One possibility to setup the PYTHONPATH environment variable is by adding it to your mod_wsgi.conf. Alternatively you could add it also to wms.wsgi. WSGIPythonPath /home/mss/INSTANCE/config:/home/mss/miniforge/envs/instance/lib/python3.X/site-packages @@ -616,7 +616,7 @@ Enable it with a2ensite mss.yourserver.de.conf Many Instances .............. -If you want to setup many instances we suggest to use a similiar proxy based configuration +If you want to setup many instances we suggest to use a similar proxy based configuration .. literalinclude:: samples/sites-available/mss_proxy.conf diff --git a/docs/samples/config/mscolab/setup_saml2_backend.py.sample b/docs/samples/config/mscolab/setup_saml2_backend.py.sample index 23d1cea61..d2bc963e6 100644 --- a/docs/samples/config/mscolab/setup_saml2_backend.py.sample +++ b/docs/samples/config/mscolab/setup_saml2_backend.py.sample @@ -32,7 +32,7 @@ class setup_saml2_backend: yaml_data["config"]["localhost_test_idp"]["key_file"] = \ f'{mscolab_settings.MSCOLAB_SSO_DIR}/key_mscolab.key' # set path to your mscolab key file yaml_data["config"]["localhost_test_idp"]["cert_file"] = \ - f'{mscolab_settings.MSCOLAB_SSO_DIR}/crt_mscolab.crt' # set path to your mscolab certiticate file + f'{mscolab_settings.MSCOLAB_SSO_DIR}/crt_mscolab.crt' # set path to your mscolab certificate file yaml_data["config"]["localhost_test_idp"]["metadata"]["local"][0] = \ f'{mscolab_settings.MSCOLAB_SSO_DIR}/idp.xml' # set path to your idp metadata xml file @@ -41,7 +41,7 @@ class setup_saml2_backend: if not os.path.exists(yaml_data["config"]["localhost_test_idp"]["metadata"]["local"][0]): yaml_data["config"]["localhost_test_idp"]["metadata"]["local"] = [] warnings.warn("idp.xml file does not exists !\ - Ignore this warning when you initializeing metadata.") + Ignore this warning when you initialize metadata.") localhost_test_idp = SPConfig().load(yaml_data["config"]["localhost_test_idp"]) sp_localhost_test_idp = Saml2Client(localhost_test_idp) diff --git a/docs/samples/config/msui/performance_simple.json.sample b/docs/samples/config/msui/performance_simple.json.sample index 5c20d1a70..420f8448e 100644 --- a/docs/samples/config/msui/performance_simple.json.sample +++ b/docs/samples/config/msui/performance_simple.json.sample @@ -11,5 +11,5 @@ "_comment3": "empty_weight: aircraft weight without fuel (lbs)", "_comment4": "climb/descent: weight(lbs), altitude(ft), duration(min), distance(nm), fuel(lbs)", "_comment5": "cruise: weight(lbs), altitude(ft), total air speed(nm/h), fuel flow(lbs/h)", - "_comment6": "ceiling: polynomial coeficients for relating weight (lbs) with peak flightlevel (hft). Leftmost coefficient is the intercept." + "_comment6": "ceiling: polynomial coefficients for relating weight (lbs) with peak flightlevel (hft). Leftmost coefficient is the intercept." } diff --git a/docs/samples/config/mswms/mss_chem_plots.py b/docs/samples/config/mswms/mss_chem_plots.py index e55508254..eddfcb903 100644 --- a/docs/samples/config/mswms/mss_chem_plots.py +++ b/docs/samples/config/mswms/mss_chem_plots.py @@ -128,7 +128,7 @@ def _plot_style(self): def make_msschem_hs_class( - entity, nam, vert, units, scale, add_data=None, add_contours=None, fix_styles=None, + entity, name, vert, units, scale, add_data=None, add_contours=None, fix_styles=None, add_styles=None, add_prepare=None): if add_data is None: add_data = [] @@ -143,7 +143,7 @@ class fnord(HS_MSSChemStyle): dataname = entity units = units unit_scale = scale - _title_tpl = nam + " (" + vert + ")" + _title_tpl = name + " (" + vert + ")" long_name = entity if units: _title_tpl += f"({units})" @@ -151,7 +151,7 @@ class fnord(HS_MSSChemStyle): required_datafields = [(vert, entity, None)] + add_data contours = add_contours - fnord.__name__ = nam + fnord.__name__ = name fnord.styles = list(fnord.styles) return fnord @@ -285,7 +285,7 @@ def _plot_style(self): def make_msschem_vs_class( - entity, nam, vert, units, scale, add_data=None, + entity, name, vert, units, scale, add_data=None, add_contours=None, fix_styles=None, add_styles=None, add_prepare=None): # This is CTM output, so we cannot expect any additional meteorological @@ -312,14 +312,14 @@ class fnord(VS_MSSChemStyle): dataname = entity units = units unit_scale = scale - title = nam + " (" + vert + ")" + title = name + " (" + vert + ")" long_name = entity if units: title += f"({units})" required_datafields = [(vert, entity, None)] + add_data contours = add_contours if add_contours else [] - fnord.__name__ = nam + fnord.__name__ = name fnord.styles = list(fnord.styles) if add_styles is not None: diff --git a/docs/samples/config/mswms/mswms_settings.py.chem_plots b/docs/samples/config/mswms/mswms_settings.py.chem_plots index b3c7c0d1c..f3ef0c1f2 100644 --- a/docs/samples/config/mswms/mswms_settings.py.chem_plots +++ b/docs/samples/config/mswms/mswms_settings.py.chem_plots @@ -30,7 +30,7 @@ import os import sys -# on a productions system you may want to limit the amout of tracebacks to 0 +# on a productions system you may want to limit the amount of tracebacks to 0 # sys.tracebacklimit = 0 # Configuration of Python's code search path diff --git a/docs/samples/config/mswms/mswms_settings.py.demodata b/docs/samples/config/mswms/mswms_settings.py.demodata index 4965b09b9..1068ef6de 100644 --- a/docs/samples/config/mswms/mswms_settings.py.demodata +++ b/docs/samples/config/mswms/mswms_settings.py.demodata @@ -30,7 +30,7 @@ import os import sys -# on a productions system you may want to limit the amout of tracebacks to 0 +# on a productions system you may want to limit the amount of tracebacks to 0 # sys.tracebacklimit = 0 # Configuration of Python's code search path diff --git a/docs/samples/config/mswms/mswms_settings.py.sample b/docs/samples/config/mswms/mswms_settings.py.sample index be7693aeb..e668c17be 100644 --- a/docs/samples/config/mswms/mswms_settings.py.sample +++ b/docs/samples/config/mswms/mswms_settings.py.sample @@ -29,7 +29,7 @@ import os import sys -# on a productions system you may want to limit the amout of tracebacks to 0 +# on a productions system you may want to limit the amount of tracebacks to 0 # sys.tracebacklimit = 0 # Configuration of Python's code search path diff --git a/docs/samples/plugins/navaid.rst b/docs/samples/plugins/navaid.rst index 81e8d0406..39b8b7e04 100644 --- a/docs/samples/plugins/navaid.rst +++ b/docs/samples/plugins/navaid.rst @@ -10,7 +10,7 @@ Alternative plugins could be placed into the settings directory. Details ~~~~~~~ -It may be requiered to compute the waypoints in the format WPT012034, +It may be required to compute the waypoints in the format WPT012034, where WPT is the NAVAID ID, 012 is the heading and 034 is the distance in nautical miles. This standard is used by several flight authorities. Data for the location of the NAVAID waypoints can be obtained as csv from @@ -19,7 +19,7 @@ The dataset should be named NAVAID_System.csv and placed into the subdir plugins of the config dir. For a given set of waypoints, the navaid export plugin exports an ASCII table containing a column of the so-determined waypoint names. For locations -ouside the given set of NAVAID points , e.g. over the oceans, the naming +outside the given set of NAVAID points , e.g. over the oceans, the naming convention switches to coordinate based name like xxyyNwwwzzW for latitude xx°yy'N and longitude www°zz'W. This is done if the closest NAVAID waypoint is more than 500 nm. diff --git a/docs/sso_via_saml_mscolab.rst b/docs/sso_via_saml_mscolab.rst index 95ba29fc3..19f5fabe8 100644 --- a/docs/sso_via_saml_mscolab.rst +++ b/docs/sso_via_saml_mscolab.rst @@ -322,7 +322,7 @@ Create a client specifically for SAML .. note:: When creating client ID, it should be same as the issuer ID of the MSColab server. - In here, the MSColab server used different issuer IDs for the particular idp_iedentity_name, and issued it by url bellow + In here, the MSColab server used different issuer IDs for the particular idp_iedentity_name, and issued it by url below http://127.0.0.1:8083/metadata/idp_identityname/ @@ -433,7 +433,7 @@ Create a client specifically for SAML When all sorted you need to export metadata file from the keycloak, - http://localhost:8080/auth/realms/saml-example-realm/protocol/saml/descripto + http://localhost:8080/auth/realms/saml-example-realm/protocol/saml/description Since we're going to import the file with the name as "key_cloak_v_13_idp.xml" in this example, We should store it with the same name. @@ -546,7 +546,7 @@ Configuration mss_saml2_backend.yaml file eg:- entityid: http://127.0.0.1:8083/metadata/ .. note:: - may be can be occured invalid redirect url problem, since we defined localhost in keycloak admin, and using 127.0..... be careful to set it correctly. + may be can be occurred invalid redirect url problem, since we defined localhost in keycloak admin, and using 127.0..... be careful to set it correctly. eg:- assertion_consumer_service: diff --git a/docs/tutorials/tutorial_introduction_topview.rst b/docs/tutorials/tutorial_introduction_topview.rst index cda45e8a7..b4edd8a1f 100644 --- a/docs/tutorials/tutorial_introduction_topview.rst +++ b/docs/tutorials/tutorial_introduction_topview.rst @@ -6,7 +6,7 @@ Selection and display of different data in the Top View with the help of the lay .. video:: ../_static/mp4/tutorial_wms.mp4 :alt: When we open the Top View (CTRL+H) of the map, the Web Map Service is already opened by default. It collects its data from the server: "open-mss dot org" that provides demodata for the meteorological or - atmospheric informations as layer lists. + atmospheric information as layer lists. As we click on the "server layer" option, the layer list window opens that lists out various layers. We just have to enter the WMS url and get capabilities for those layers. So, here we find various layers: Divergence and Geopotential Height, diff --git a/docs/tutorials/tutorial_mscolab.rst b/docs/tutorials/tutorial_mscolab.rst index 3aa014f12..c4164fa9c 100644 --- a/docs/tutorials/tutorial_mscolab.rst +++ b/docs/tutorials/tutorial_mscolab.rst @@ -34,7 +34,7 @@ shown on a MSColab server and the possibilities of interactions. After selecting users, we click on Add button, which moves these users to All users with permission section to the right side of the window. For the users who have access permission to the operation, we can also change the access roles. Here for b, we have changed the permission from collaborator to admin. - We can alo delete a user with a permission by selecting user and clicking on delete button. + We can also delete a user with a permission by selecting user and clicking on delete button. Changing their access roles.... We can filter users based on their roles being Collaborator, admin or viewer. Filtering for some time.... diff --git a/docs/tutorials/tutorial_satellitetrack.rst b/docs/tutorials/tutorial_satellitetrack.rst index f36dcb2ce..04561d811 100644 --- a/docs/tutorials/tutorial_satellitetrack.rst +++ b/docs/tutorials/tutorial_satellitetrack.rst @@ -8,7 +8,7 @@ To combine a flight path with a satellite overflight, the remotesensing widget i :alt: This is Satellite Tracking Prediction System that can be used to check the accuracy of the path travelled by a Satellite by the help of data collected from different space agencies and planning a flight accordingly. - These flights which can be refered to as the Testing flights are made to travel in + These flights which can be referred to as the Testing flights are made to travel in the direction of these Satellites by collaborating with these space agencies. Open the Top View (CTRL+H) of the MSS software. Click on “(select to open control)“ and then click “Satellite Tracks“. diff --git a/localbuild/meta.yaml b/localbuild/meta.yaml index 9e200326f..b9ef9360e 100644 --- a/localbuild/meta.yaml +++ b/localbuild/meta.yaml @@ -115,7 +115,7 @@ about: * http://www.geosci-model-dev.net/5/55/2012/gmd-5-55-2012.pdf Software for planning research Aircraft Missions. - For discussion of the possibilites of the research flights, + For discussion of the possibilities of the research flights, the Mission Support System (MSS) was developed. This software helps to review a big amount of metereological and model data by viewing the forecasted parameters of interest along possible regions diff --git a/mslib/mscolab/conf.py b/mslib/mscolab/conf.py index 1c6b02f5c..f501e62a7 100644 --- a/mslib/mscolab/conf.py +++ b/mslib/mscolab/conf.py @@ -181,7 +181,7 @@ class setup_saml2_backend: if not os.path.exists(yaml_data["config"]["localhost_test_idp"]["metadata"]["local"][0]): yaml_data["config"]["localhost_test_idp"]["metadata"]["local"] = [] warnings.warn("idp.xml file does not exists !\ - Ignore this warning when you initializeing metadata.") + Ignore this warning when you initialize metadata.") localhost_test_idp = SPConfig().load(yaml_data["config"]["localhost_test_idp"]) localhost_test_idp.verify_ssl_cert = mscolab_settings.ENABLE_SSO_SSL_CERT_VERIFICATION diff --git a/mslib/mscolab/file_manager.py b/mslib/mscolab/file_manager.py index e1a61f979..3be1a0179 100644 --- a/mslib/mscolab/file_manager.py +++ b/mslib/mscolab/file_manager.py @@ -124,7 +124,7 @@ def list_operations(self, user, skip_archived=False): ).days > mscolab_settings.ARCHIVE_THRESHOLD: # outdated OPs get archived self.update_operation(permission.op_id, "active", False, user) - # new query to get uptodate data + # new query to get up-to-date data if skip_archived: operation = Operation.query.filter_by(id=permission.op_id, active=skip_archived).first() else: @@ -228,7 +228,7 @@ def modify_user(self, user, attribute=None, value=None, action=None): db.session.delete(user) db.session.commit() user_query = User.query.filter_by(id=user.id).first() - # on delete we return succesfull deleted + # on delete we return successful deleted if user_query is None: return True elif action == "update_idp_user": diff --git a/mslib/mscolab/mscolab.py b/mslib/mscolab/mscolab.py index a04afe940..ad6dfe46b 100644 --- a/mslib/mscolab/mscolab.py +++ b/mslib/mscolab/mscolab.py @@ -306,7 +306,7 @@ def handle_local_idp_metadata_init(repo_exists): with open(os.path.join(mscolab_settings.MSCOLAB_SSO_DIR, "idp.xml"), "w", encoding="utf-8") as output_file: subprocess.run(cmd, stdout=output_file, check=True) - logging.info("idp metadata file generated succesfully") + logging.info("idp metadata file generated successfully") return True except subprocess.CalledProcessError as error: # Delete the idp.xml file when the subprocess fails diff --git a/mslib/mscolab/server.py b/mslib/mscolab/server.py index 568e78af4..7e6651161 100644 --- a/mslib/mscolab/server.py +++ b/mslib/mscolab/server.py @@ -140,7 +140,7 @@ def check_login(emailid, password): try: user = User.query.filter_by(emailid=str(emailid)).first() except sqlalchemy.exc.OperationalError as ex: - logging.debug("Problem in the database (%ex), likly version client different", ex) + logging.debug("Problem in the database (%ex), likely version client different", ex) return False if user is not None: if mscolab_settings.MAIL_ENABLED: @@ -715,7 +715,7 @@ def reset_request(): if mscolab_settings.MAIL_ENABLED: form = ResetRequestForm() if form.validate_on_submit(): - # Check wheather user exists or not based on the db + # Check whether user exists or not based on the db user = User.query.filter_by(emailid=form.email.data).first() if user: try: diff --git a/mslib/msidp/idp.py b/mslib/msidp/idp.py index 6ffa3316e..a6f1f78de 100644 --- a/mslib/msidp/idp.py +++ b/mslib/msidp/idp.py @@ -373,11 +373,11 @@ def do(self, query, binding_in, relay_state="", encrypt_cert=None, **kwargs): identity[REPOZE_ID_EQUIVALENT] = self.user try: try: - metod = self.environ["idp.authn"] + method = self.environ["idp.authn"] except KeyError: pass else: - resp_args["authn"] = metod + resp_args["authn"] = method _resp = IdpServerSettings_.IDP.create_authn_response( identity, userid=self.user, encrypt_cert_assertion=encrypt_cert, **resp_args @@ -991,7 +991,7 @@ def metadata(environ, start_response): start_response("200 OK", [("Content-Type", "text/xml")]) return [metadata] except Exception as ex: - logger.error("An error occured while creating metadata: %s", ex.message) + logger.error("An error occurred while creating metadata: %s", ex.message) return not_found(environ, start_response) @@ -1010,7 +1010,7 @@ def staticfile(environ, start_response): start_response("200 OK", [("Content-Type", "text/xml")]) return open(path).read() except Exception as ex: - logger.error("An error occured while creating metadata: %s", ex.message) + logger.error("An error occurred while creating metadata: %s", ex.message) return not_found(environ, start_response) diff --git a/mslib/msidp/idp_uwsgi.py b/mslib/msidp/idp_uwsgi.py index 7d86b6bbf..8a6097f96 100644 --- a/mslib/msidp/idp_uwsgi.py +++ b/mslib/msidp/idp_uwsgi.py @@ -368,11 +368,11 @@ def do(self, query, binding_in, relay_state="", encrypt_cert=None): identity[REPOZE_ID_EQUIVALENT] = self.user try: try: - metod = self.environ["idp.authn"] + method = self.environ["idp.authn"] except KeyError: pass else: - resp_args["authn"] = metod + resp_args["authn"] = method _resp = IDP.create_authn_response(identity, userid=self.user, encrypt_cert=encrypt_cert, **resp_args) @@ -957,7 +957,7 @@ def metadata(environ, start_response): start_response("200 OK", [("Content-Type", "text/xml")]) return metadata except Exception as ex: - logger.error("An error occured while creating metadata:", ex.message) + logger.error("An error occurred while creating metadata:", ex.message) return not_found(environ, start_response) @@ -979,7 +979,7 @@ def staticfile(environ, start_response): start_response("200 OK", [("Content-Type", "text/xml")]) return open(path).read() except Exception as ex: - logger.error("An error occured while creating metadata: %s", str(ex)) + logger.error("An error occurred while creating metadata: %s", str(ex)) return not_found(environ, start_response) diff --git a/mslib/msui/aircrafts.py b/mslib/msui/aircrafts.py index fbd2df2fc..19e5bb6c2 100644 --- a/mslib/msui/aircrafts.py +++ b/mslib/msui/aircrafts.py @@ -4,7 +4,7 @@ mslib.msui.aircrafts ~~~~~~~~~~~~~~~~~~~~ - This module provides aircrafts definitions + This module provides aircraft definitions This file is part of MSS. diff --git a/mslib/msui/mpl_map.py b/mslib/msui/mpl_map.py index ff5d12be1..e9e0efe2c 100644 --- a/mslib/msui/mpl_map.py +++ b/mslib/msui/mpl_map.py @@ -318,7 +318,7 @@ def _draw_auto_graticule(self, font_size=None): def set_graticule_visible(self, visible=True): """ - Set the visibily of the graticule. + Set the visibility of the graticule. Removes a currently visible graticule by deleting internally stored line and text objects representing graticule lines and labels, then diff --git a/mslib/msui/mpl_pathinteractor.py b/mslib/msui/mpl_pathinteractor.py index 59fb8702a..5c6f5a6d3 100644 --- a/mslib/msui/mpl_pathinteractor.py +++ b/mslib/msui/mpl_pathinteractor.py @@ -375,7 +375,7 @@ def __init__(self, ax, mplpath=None, markerfacecolor=markerfacecolor, animated=True) - # List to accomodate waypoint labels. + # List to accommodate waypoint labels. self.wp_labels = [] self.label_waypoints = label_waypoints @@ -507,7 +507,7 @@ def redraw_path(self, wp_vertices=None, waypoints_model_data=None): x, y = self.map.gcpoints_path(lons, lats) vertices = list(zip(x, y)) - # Set the line to disply great circle points, remove existing + # Set the line to display great circle points, remove existing # waypoints scatter instance and draw a new one. This is # necessary as scatter() does not provide a set_data method. self.line.set_data(list(zip(*vertices))) diff --git a/mslib/msui/mpl_qtwidget.py b/mslib/msui/mpl_qtwidget.py index 2544c154e..7b37b186a 100644 --- a/mslib/msui/mpl_qtwidget.py +++ b/mslib/msui/mpl_qtwidget.py @@ -314,7 +314,7 @@ def draw_image(self, img): def draw_legend(self, img): """Draw the legend graphics img on the current plot. - Adds new axes to the plot that accomodate the legend. + Adds new axes to the plot that accommodate the legend. """ # If the method is called with a "None" image, the current legend # graphic should be removed (if one exists). @@ -742,9 +742,9 @@ def set_settings(self, settings, save=False): pts = (self.linearview_size_settings["plot_title_size"] if self.settings["plot_title_size"] == "default" else int(self.settings["plot_title_size"])) - als = (self.linearview_size_settings["axes_label_size"] if self.settings["axes_label_size"] == "default" - else int(self.settings["axes_label_size"])) - self.ax.tick_params(axis='both', labelsize=als) + label_size = (self.linearview_size_settings["axes_label_size"] if self.settings["axes_label_size"] == "default" + else int(self.settings["axes_label_size"])) + self.ax.tick_params(axis='both', labelsize=label_size) self.ax.set_title("Linear flight profile", fontsize=pts, horizontalalignment='left', x=0) self.ax.figure.canvas.draw() @@ -1617,7 +1617,7 @@ def draw_image(self, img): def draw_legend(self, img): """Draw the legend graphics img on the current plot. - Adds new axes to the plot that accomodate the legend. + Adds new axes to the plot that accommodate the legend. """ self.plotter.draw_legend(img) # required so that it is actually drawn... diff --git a/mslib/msui/mscolab.py b/mslib/msui/mscolab.py index 2c59ace2d..d42d0b010 100644 --- a/mslib/msui/mscolab.py +++ b/mslib/msui/mscolab.py @@ -456,8 +456,8 @@ def new_user_handler(self): try: error_msg = json.loads(r.text)["message"] except Exception as e: - logging.debug("Unexpected error occured %s", e) - error_msg = "Unexpected error occured. Please try again." + logging.debug("Unexpected error occurred %s", e) + error_msg = "Unexpected error occurred. Please try again." self.set_status("Error", error_msg) diff --git a/mslib/msui/performance_settings.py b/mslib/msui/performance_settings.py index 6e1c0d725..e34b141dd 100644 --- a/mslib/msui/performance_settings.py +++ b/mslib/msui/performance_settings.py @@ -30,13 +30,13 @@ from PyQt5 import QtCore, QtWidgets from mslib.utils import FatalUserError -from mslib.msui import aircrafts, constants +from mslib.msui import aircrafts as aircraft, constants from mslib.utils.qt import get_open_filename from mslib.msui.qt5 import ui_performance_dockwidget as ui_dw DEFAULT_PERFORMANCE = { - "aircraft": aircrafts.SimpleAircraft(aircrafts.AIRCRAFT_DUMMY), + "aircraft": aircraft.SimpleAircraft(aircraft.AIRCRAFT_DUMMY), "visible": False, "takeoff_weight": 0, "takeoff_time": QtCore.QDateTime.currentDateTimeUtc(), @@ -84,7 +84,7 @@ def get_settings(self): Encapsulates GUI selections in a python dictionary. :return: - Dictionary of all setting informations + Dictionary of all setting information """ settings_dict = { "aircraft": self.aircraft, @@ -109,7 +109,7 @@ def load_performance(self): try: with open(filename) as tf: performance = json.load(tf) - self.aircraft = aircrafts.SimpleAircraft(performance) + self.aircraft = aircraft.SimpleAircraft(performance) self.lbAircraftName.setText(self.aircraft.name) self.dsbTakeoffWeight.setValue(self.aircraft.takeoff_weight) if not any(hasattr(self.aircraft, _x) for _x in ("fuel", "empty_weight")): diff --git a/mslib/msui/sideview.py b/mslib/msui/sideview.py index 53ecfc3ba..05c685fbc 100644 --- a/mslib/msui/sideview.py +++ b/mslib/msui/sideview.py @@ -313,7 +313,7 @@ def setFlightTrackModel(self, model): def open_settings_dialog(self): """ - Slot to open a dialog that lets the user specifiy sideview options. + Slot to open a dialog that lets the user specify sideview options. """ settings = self.getView().get_settings() dlg = MSUI_SV_OptionsDialog(parent=self, settings=settings) diff --git a/mslib/msui/socket_control.py b/mslib/msui/socket_control.py index 7f76c0b0d..2717eafff 100644 --- a/mslib/msui/socket_control.py +++ b/mslib/msui/socket_control.py @@ -38,7 +38,7 @@ class ConnectionManager(QtCore.QObject): signal_reload = QtCore.pyqtSignal(int, name="reload_wps") signal_message_receive = QtCore.pyqtSignal(str, name="message rcv") signal_message_reply_receive = QtCore.pyqtSignal(str, name="message reply") - signal_message_edited = QtCore.pyqtSignal(str, name="message editted") + signal_message_edited = QtCore.pyqtSignal(str, name="message edited") signal_message_deleted = QtCore.pyqtSignal(str, name="message deleted") signal_new_permission = QtCore.pyqtSignal(int, int, name="new permission") signal_update_permission = QtCore.pyqtSignal(int, int, str, name="update permission") diff --git a/mslib/msui/wms_control.py b/mslib/msui/wms_control.py index bf4827ad3..9bece6451 100644 --- a/mslib/msui/wms_control.py +++ b/mslib/msui/wms_control.py @@ -569,7 +569,7 @@ def initialise_wms(self, base_url, version="1.3.0"): (mr, 2011-02-25) """ - # initialize login cache fomr config file, but do not overwrite existing keys + # initialize login cache from config file, but do not overwrite existing keys http_auth = config_loader(dataset="MSS_auth") auth_username, auth_password = get_auth_from_url_and_name(base_url, http_auth) @@ -788,14 +788,14 @@ def activate_wms(self, wms, cache=False): self.prefetcher = WMSMapFetcher(self.wms_cache) self.prefetcher.moveToThread(self.thread_prefetch) - self.prefetch.connect(self.prefetcher.fetch_maps) # implicitely uses a queued connection + self.prefetch.connect(self.prefetcher.fetch_maps) # implicitly uses a queued connection self.fetcher = WMSMapFetcher(self.wms_cache) self.fetcher.moveToThread(self.thread_fetch) - self.fetch.connect(self.fetcher.fetch_maps) # implicitely uses a queued connection - self.fetcher.finished.connect(self.continue_retrieve_image) # implicitely uses a queued connection - self.fetcher.exception.connect(self.display_exception) # implicitely uses a queued connection - self.fetcher.started_request.connect(self.display_progress_dialog) # implicitely uses a queued connection + self.fetch.connect(self.fetcher.fetch_maps) # implicitly uses a queued connection + self.fetcher.finished.connect(self.continue_retrieve_image) # implicitly uses a queued connection + self.fetcher.exception.connect(self.display_exception) # implicitly uses a queued connection + self.fetcher.started_request.connect(self.display_progress_dialog) # implicitly uses a queued connection # logic to disable fill continents, fill oceans on connection to self.signal_disable_cbs.emit() @@ -1041,7 +1041,7 @@ def cb_valid_time_fwd_click(self): def auto_update(self): """If the auto update check box is checked, let btGetMap emit a - clicked() signal everytime this method is called. + clicked() signal every time this method is called. autoUpdate() should be called from the slots that handle time and level changes. @@ -1482,7 +1482,7 @@ def append_multiple_images(self, imgs): """ images = [x for x in imgs if x] if images: - # Add border around seperate legends + # Add border around separate legends if len(images) > 1: images = [ImageOps.expand(x, border=1, fill="black") for x in images] max_height = int((self.view.plotter.fig.get_size_inches() * self.view.plotter.fig.get_dpi())[1] * 0.99) diff --git a/mslib/mswms/dataaccess.py b/mslib/mswms/dataaccess.py index 3c0758eac..3951b7b29 100644 --- a/mslib/mswms/dataaccess.py +++ b/mslib/mswms/dataaccess.py @@ -199,7 +199,7 @@ class DefaultDataAccess(NWPDataAccess): Constructor needs information on domain ID. """ - # Workaround for the numerical issue concering the lon dimension in + # Workaround for the numerical issue concerning the lon dimension in # NetCDF files produced by netcdf-java 4.3.. def __init__(self, rootpath, domain_id, skip_dim_check=None, **kwargs): @@ -293,7 +293,7 @@ def _parse_file(self, filename): try: units(ncvar.units) except (AttributeError, ValueError, pint.UndefinedUnitError, pint.DefinitionSyntaxError): - logging.error("Skipping variable '%s' in file '%s': unparseable units attribute '%s'", + logging.error("Skipping variable '%s' in file '%s': unparsable units attribute '%s'", ncvarname, filename, ncvar.units) continue if len(ncvar.shape) == 4 and vert_name in ncvar.dimensions: diff --git a/mslib/mswms/demodata.py b/mslib/mswms/demodata.py index 6780bd47d..fe22869cb 100644 --- a/mslib/mswms/demodata.py +++ b/mslib/mswms/demodata.py @@ -752,7 +752,7 @@ def get_profile(coordinate, levels, standard_name): (air_pressure, air_potential_temperature, geopotential_height, ertel_potential_vorticity are tested) :param levels: Numerical values of coordinate variable to interpolate at :param standard_name: CF standard name of entity to interpolate at specified points. - :return: two array, one for mean, ond for variance at specified levels. + :return: two array, one for mean, one for variance at specified levels. """ assert coordinate in _PROFILES, coordinate assert standard_name in _PROFILES, standard_name @@ -929,7 +929,7 @@ def create_server_config(self, detailed_information=False): import os import sys -# on a productions system you may want to limit the amout of tracebacks to 0 +# on a productions system you may want to limit the amount of tracebacks to 0 # sys.tracebacklimit = 0 # Configuration of Python's code search path diff --git a/mslib/mswms/gallery_builder.py b/mslib/mswms/gallery_builder.py index af2f399a3..cfb0a97b5 100644 --- a/mslib/mswms/gallery_builder.py +++ b/mslib/mswms/gallery_builder.py @@ -482,7 +482,7 @@ def import_instructions(plot_object, l_type, layer, native_import=None, dataset= inspect.getsource(plot_object._prepare_datafields): style = "hsec" if isinstance(plot_object, HS_GenericStyle) else "vsec" - # Convert range to list, since numpy arrays string representation is unparseable + # Convert range to list, since numpy arrays string representation is unparsable if plot_object.contours: for i in range(len(plot_object.contours)): temp = list(plot_object.contours[i]) @@ -540,7 +540,7 @@ def source_and_import(plot_object, l_type, layer, dataset=""): parent = "HS_GenericStyle" if isinstance(plot_object, HS_GenericStyle) else "VS_GenericStyle" style = "hsec" if isinstance(plot_object, HS_GenericStyle) else "vsec" - # Convert range to list, since numpy arrays string representation is unparseable + # Convert range to list, since numpy arrays string representation is unparsable if plot_object.contours: for i in range(len(plot_object.contours)): temp = list(plot_object.contours[i]) diff --git a/mslib/mswms/mpl_hsec.py b/mslib/mswms/mpl_hsec.py index a5ac68b4d..3b6bd51e6 100644 --- a/mslib/mswms/mpl_hsec.py +++ b/mslib/mswms/mpl_hsec.py @@ -332,7 +332,7 @@ def plot_hsection(self, data, lats, lons, bbox=(-180, -90, 180, 90), logging.debug("Loaded '%s' from basemap cache", key) else: bm = basemap.Basemap(resolution='l', **bm_params) - # read in countries manually, as those are laoded only on demand + # read in countries manually, as those are loaded only on demand bm.cntrysegs, _ = bm._readboundarydata("countries") if basemap_use_cache: BASEMAP_CACHE[key] = (bm.resolution, bm.coastsegs, bm.coastpolygontypes, bm.coastpolygons, diff --git a/mslib/mswms/mpl_hsec_styles.py b/mslib/mswms/mpl_hsec_styles.py index 4d90d1288..fa4ea5118 100644 --- a/mslib/mswms/mpl_hsec_styles.py +++ b/mslib/mswms/mpl_hsec_styles.py @@ -1192,7 +1192,7 @@ def _plot_style(self): # Define colourbars and contour levels for the three styles. For # pressure and height, a terrain colourmap is used (bluish colours for # low altitudes, brownish colours for high altitudes). For potential - # temperature, a rainbow colourmap is used (blue=low temps, red=hight + # temperature, a rainbow colourmap is used (blue=low temps, red=high # temps). if self.style == "PRES": filled_contours = np.arange(120, 551, 10) @@ -1284,7 +1284,7 @@ def _plot_style(self): # Define colourbars and contour levels for the three styles. For # pressure and height, a terrain colourmap is used (bluish colours for # low altitudes, brownish colours for high altitudes). For potential - # temperature, a rainbow colourmap is used (blue=low temps, red=hight + # temperature, a rainbow colourmap is used (blue=low temps, red=high # temps). fcmap = plt.cm.terrain @@ -1327,7 +1327,7 @@ def _plot_style(self): class HS_VIProbWCB_Style_01(MPLBasemapHorizontalSectionStyle): """ Surface Field: Probability of WCB - Total column probability of WCB trajectory occurence, derived from + Total column probability of WCB trajectory occurrence, derived from Lagranto trajectories (TNF 2012 product). """ name = "VIProbWCB" diff --git a/mslib/mswms/mpl_vsec_styles.py b/mslib/mswms/mpl_vsec_styles.py index dc11b9617..b8a4d929d 100644 --- a/mslib/mswms/mpl_vsec_styles.py +++ b/mslib/mswms/mpl_vsec_styles.py @@ -146,7 +146,7 @@ def make_generic_class(name, standard_name, vert, add_data=None, add_contours=No E.g. [("ertel_potential_vorticity", [2, 4, 8, 16], "green", "red", "dashed", 2, True)] cause PV to be plotted for 2, 4, 8, and 16 PVU with dashed green lines, red labels, and line width of 2. The last value defines - wether a stroke effect shall be applied. + whether a stroke effect shall be applied. fix_styles (list, optional): A list of plotting styles, which must be defined in the mslib.mswms.generics.STYLES dictionary. Defaults @@ -1128,7 +1128,7 @@ def _plot_style(self): class VS_ProbabilityOfWCBStyle_01(AbstractVerticalSectionStyle): """ Probability of WCB - Vertical sections of probability of WCB trajectory occurence, + Vertical sections of probability of WCB trajectory occurrence, derived from Lagranto trajectories (TNF 2012 product). """ diff --git a/mslib/mswms/wms.py b/mslib/mswms/wms.py index 2b218282c..a95664e66 100644 --- a/mslib/mswms/wms.py +++ b/mslib/mswms/wms.py @@ -561,7 +561,7 @@ def create_service_exception(self, code=None, text="", version="1.3.0"): def get_capabilities(self, query, server_url=None): # ToDo find a more elegant method to do the same - # Preferable we don't want a seperate data_access module to be configured + # Preferable we don't want a separate data_access module to be configured data_access_dict = mswms_settings.data for key in data_access_dict: @@ -808,7 +808,7 @@ def produce_plot(self, query, mode): return self.create_service_exception(text=msg, version=version) elif mode == "getvsec": - # Vertical secton path. + # Vertical section path. path = query.get("PATH") if path is None: return self.create_service_exception(text="PATH not specified", version=version) diff --git a/mslib/static/docs/about.md b/mslib/static/docs/about.md index ee09fb062..7b772c4e5 100644 --- a/mslib/static/docs/about.md +++ b/mslib/static/docs/about.md @@ -4,9 +4,9 @@ The Mission Support System (MSS) is a software that is written by scientists in the field of atmospheric science. The purpose is to have a tool that simplifies the process for planning a scientific flight in -which parameters of the atmosphere are measured. The research aircrafts +which parameters of the atmosphere are measured. The research aircraft typically carry a comprehensive scientific payload comprised of data -aquisition instruments by different companies and research institutions. +acquisition instruments by different companies and research institutions. The measurement of relevant parameters, for example the chemical composition of trace gases, temperature or aerosol particle characteristics, are needed to improve the scientific understanding of diff --git a/mslib/static/templates/idp/idp_login_success.html b/mslib/static/templates/idp/idp_login_success.html index af46f2d04..e81d8ffbb 100644 --- a/mslib/static/templates/idp/idp_login_success.html +++ b/mslib/static/templates/idp/idp_login_success.html @@ -10,7 +10,7 @@

Congratulations! You have successfully logged in to the mscolab server using Identity Provider.

-

Please proceed to log in using the user interface by bellow token.

+

Please proceed to log in using the user interface by below token.

Token : {{token}}
diff --git a/mslib/static/templates/user/reset_password.html b/mslib/static/templates/user/reset_password.html index dd2b2466b..b1dad1f70 100644 --- a/mslib/static/templates/user/reset_password.html +++ b/mslib/static/templates/user/reset_password.html @@ -35,7 +35,7 @@

Reset Password

- {{form.password(class="fpr,form-control form-control-lg is-invalid")}} + {{form.password(class="form-control form-control-lg is-invalid")}}
{% if form.password.errors %} {% for error in form.password.errors %} @@ -47,7 +47,7 @@

Reset Password

- {{form.confirm_password(class="fpr,form-control form-control-lg is-invalid")}} + {{form.confirm_password(class="form-control form-control-lg is-invalid")}}
{% if form.confirm_password.errors %} {% for error in form.confirm_password.errors %} diff --git a/mslib/support/qt_json_view/model.py b/mslib/support/qt_json_view/model.py index 3e2078e4e..9c855e83e 100644 --- a/mslib/support/qt_json_view/model.py +++ b/mslib/support/qt_json_view/model.py @@ -41,7 +41,7 @@ def serialize(self): class JsonSortFilterProxyModel(QtCore.QSortFilterProxyModel): # (msui) - """Show ALL occurences by keeping the parents of each occurence visible.""" + """Show ALL occurrences by keeping the parents of each occurrence visible.""" def filterAcceptsRow(self, sourceRow, sourceParent): """Accept the row if the parent has been accepted.""" diff --git a/mslib/utils/migration/config_before_nine.py b/mslib/utils/migration/config_before_nine.py index bee4bc1f7..7983e656d 100644 --- a/mslib/utils/migration/config_before_nine.py +++ b/mslib/utils/migration/config_before_nine.py @@ -144,7 +144,7 @@ class MSUIDefaultConfig: WMS_preload = [] # WMS image cache settings: - # this changes on any start of msui, use ths msui_settings.json when you want a persistent path + # this changes on any start of msui, use the msui_settings.json when you want a persistent path wms_cache = os.path.join(tempfile.TemporaryDirectory().name, "msui_wms_cache") # Maximum size of the cache in bytes. diff --git a/mslib/utils/migration/update_json_file_to_version_eight.py b/mslib/utils/migration/update_json_file_to_version_eight.py index 54c33af5e..7746eb24e 100644 --- a/mslib/utils/migration/update_json_file_to_version_eight.py +++ b/mslib/utils/migration/update_json_file_to_version_eight.py @@ -90,7 +90,7 @@ def change_parameters(self): modify_config_file(data_to_save_in_config_file) # read new file read_config_file() - # Todo move this to a seperate function to utils + # Todo move this to a separate function to utils # get all defaults default_options = config_loader(default=True) # get the data from the local file diff --git a/mslib/utils/migration/update_json_file_to_version_nine.py b/mslib/utils/migration/update_json_file_to_version_nine.py index 71b609d69..2f9abe89c 100644 --- a/mslib/utils/migration/update_json_file_to_version_nine.py +++ b/mslib/utils/migration/update_json_file_to_version_nine.py @@ -71,7 +71,7 @@ def change_parameters(self): modify_config_file(data_to_save_in_config_file) # read new file read_config_file() - # Todo move this to a seperate function to utils + # Todo move this to a separate function to utils # get all defaults default_options = config_loader(default=True) # get the data from the local file diff --git a/mslib/utils/netCDF4tools.py b/mslib/utils/netCDF4tools.py index bbd25e95e..cb855520f 100644 --- a/mslib/utils/netCDF4tools.py +++ b/mslib/utils/netCDF4tools.py @@ -260,7 +260,7 @@ def __init__(self, files, exclude=None, skip_dim_check=None, # Create the following: # cdf list of Dataset instances - # cdfVar dictionnary indexed by the variable names + # cdfVar dictionary indexed by the variable names cdf = [cdfm] self._cdf = cdf # Store this now, because dim() method needs it cdfVar = {} diff --git a/mslib/utils/qt.py b/mslib/utils/qt.py index 8a3357121..8503b80c4 100644 --- a/mslib/utils/qt.py +++ b/mslib/utils/qt.py @@ -315,7 +315,7 @@ def hidePopup(self): self.updateText() def timerEvent(self, event): - # After timeout, kill timer, and reenable click on line edit + # After timeout, kill timer, and re-enable click on line edit self.killTimer(event.timerId()) self.closeOnLineEditClick = False @@ -391,7 +391,7 @@ def __init__(self, function): def run(self): try: result = self.function() - # ToDo the capbilities worker member needs the possibility to terminate itselfs. + # ToDo the capbilities worker member needs the possibility to terminate itself. # ToDo refactoring needed if "MSUIWebMapService" in repr(result) and not result.contents: raise NoLayersError diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..536fb8b65 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,10 @@ +[tool.codespell] +exclude-file = "codespell-ignored-lines.txt" +ignore-words-list = [ + "PRES", + "aircrafts", # this ignore should be removed as soon as mslib.msui.aircrafts is renamed + "degreeE", + "doubleClick", + "indexIn", + "socio-economic", +] diff --git a/tests/_test_mscolab/test_file_manager.py b/tests/_test_mscolab/test_file_manager.py index 1f93cd64f..dde450a14 100644 --- a/tests/_test_mscolab/test_file_manager.py +++ b/tests/_test_mscolab/test_file_manager.py @@ -401,7 +401,7 @@ def test_group_permissions(self): self.fm.add_bulk_permission(operation_group.id, self.user, [self.collaboratoruser.id], "collaborator") assert self.fm.is_member(self.collaboratoruser.id, operation_no_1.id) is True assert self.fm.is_collaborator(self.collaboratoruser.id, operation_no_1.id) - # check that not other catergories get changed + # check that not other categories get changed assert self.fm.is_member(self.collaboratoruser.id, operation_oslo.id) is False self.fm.modify_bulk_permission(operation_group.id, self.user, [self.collaboratoruser.id], "viewer") assert self.fm.is_viewer(self.collaboratoruser.id, operation_no_1.id) diff --git a/tests/_test_mscolab/test_files_api.py b/tests/_test_mscolab/test_files_api.py index 3631f27b4..43dcb4864 100644 --- a/tests/_test_mscolab/test_files_api.py +++ b/tests/_test_mscolab/test_files_api.py @@ -86,7 +86,7 @@ def test_fetch_users_without_permission(self): flight_path, operation = self._create_operation(flight_path="V2") assert self.fm.fetch_users_without_permission(operation.id, self.user_2.id) is False without_permission = self.fm.fetch_users_without_permission(operation.id, self.user.id) - # ToDo after seeding removed use absolut comparison + # ToDo after seeding removed use absolute comparison assert without_permission[-1] == [self.user_2.username, self.user_2.id] def test_fetch_users_with_permission(self): diff --git a/tests/_test_mscolab/test_server_auth_required.py b/tests/_test_mscolab/test_server_auth_required.py index 5280792a3..14ab148e6 100644 --- a/tests/_test_mscolab/test_server_auth_required.py +++ b/tests/_test_mscolab/test_server_auth_required.py @@ -57,7 +57,7 @@ def test_authfunc(self): def test_verify_pw(self): assert verify_pw("user", "testvaluepassword") - assert verify_pw("unknown", "unknow") is False + assert verify_pw("unknown", "unknown") is False assert verify_pw("user", "wrong") is False def test_register_user(self): diff --git a/tests/_test_mscolab/test_sockets_manager.py b/tests/_test_mscolab/test_sockets_manager.py index cdffb9303..574730c6e 100644 --- a/tests/_test_mscolab/test_sockets_manager.py +++ b/tests/_test_mscolab/test_sockets_manager.py @@ -98,7 +98,7 @@ def test_handle_connect(self): def test_join_creator_to_operatiom(self): sio = self._connect() - operation = self._new_operation('new_operation', "example decription") + operation = self._new_operation('new_operation', "example description") with self.app.app_context(): assert self.fm.get_file(int(operation.id), self.user) is False json_config = {"token": self.token, @@ -112,7 +112,7 @@ def test_join_creator_to_operatiom(self): def test_join_collaborator_to_operation(self): self._connect() - operation = self._new_operation('new_operation', "example decription") + operation = self._new_operation('new_operation', "example description") sm = SocketsManager(self.cm, self.fm) sm.join_collaborator_to_operation(self.anotheruser.id, operation.id) perms = Permission(self.anotheruser.id, operation.id, "collaborator") @@ -123,7 +123,7 @@ def test_join_collaborator_to_operation(self): def test_remove_collaborator_from_operation(self): pytest.skip("get_session_id has None result") sio = self._connect() - operation = self._new_operation('new_operation', "example decription") + operation = self._new_operation('new_operation', "example description") sm = SocketsManager(self.cm, self.fm) sm.join_collaborator_to_operation(self.anotheruser.id, operation.id) perms = Permission(self.anotheruser.id, operation.id, "collaborator") @@ -172,7 +172,7 @@ def test_get_messages(self): sio = self._connect() sio.emit('start', {'token': self.token}) - # ToDo same message gets twice emmitted, why? (use a helper function) + # ToDo same message gets twice emitted, why? (use a helper function) sio.emit("chat-message", { "op_id": self.operation.id, "token": self.token, @@ -203,7 +203,7 @@ def test_get_messages(self): def test_get_messages_api(self): sio = self._connect() sio.emit('start', {'token': self.token}) - # ToDo same message gets twice emmitted, why? + # ToDo same message gets twice emitted, why? sio.emit("chat-message", { "op_id": self.operation.id, "token": self.token, diff --git a/tests/_test_msui/test_aircrafts.py b/tests/_test_msui/test_aircraft.py similarity index 96% rename from tests/_test_msui/test_aircrafts.py rename to tests/_test_msui/test_aircraft.py index c83208560..efc72f6ed 100644 --- a/tests/_test_msui/test_aircrafts.py +++ b/tests/_test_msui/test_aircraft.py @@ -1,10 +1,10 @@ # -*- coding: utf-8 -*- """ - tests._test_msui.test_aircrafts - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + tests._test_msui.test_aircraft + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - This module provides pytest functions to tests msui.aircrafts module + This module provides pytest functions to test the msui.aircrafts module. This file is part of MSS. diff --git a/tests/_test_msui/test_tableview.py b/tests/_test_msui/test_tableview.py index 6f14668e8..3500bc90f 100644 --- a/tests/_test_msui/test_tableview.py +++ b/tests/_test_msui/test_tableview.py @@ -38,7 +38,7 @@ class Test_TableView: @pytest.fixture(autouse=True) def setup(self, qtbot): - # Create an initital flight track. + # Create an initial flight track. initial_waypoints = [ft.Waypoint(flightlevel=0, location="EDMO", comments="take off OP"), ft.Waypoint(48.10, 10.27, 200), ft.Waypoint(52.32, 09.21, 200), diff --git a/tests/_test_mswms/test_wms.py b/tests/_test_mswms/test_wms.py index c614682a3..08494bdc1 100644 --- a/tests/_test_mswms/test_wms.py +++ b/tests/_test_mswms/test_wms.py @@ -170,7 +170,7 @@ def test_produce_hsec_service_exception(self): ("ecmwf_EUR_LL015.PLDiv01", "PLDiv01"), ("ecmwf_EUR_LL015.PLDiv01", "ecmwf_EUR_LL015.PLDav01"), ("ecmwf_EUR_LL015.PLDiv01", "ecmwf_AUR_LL015.PLDiv01"), - ("format=image%2Fpng", "format=omage%2Fpng"), + ("format=image%2Fpng", "format=omage%2Fpng"), # codespell:ignore omage ("bbox=-50.0%2C20.0%2C20.0%2C75.0", "bbox=-abcd%2C20.0%2C20.0%2C75.0")]: environ["QUERY_STRING"] = query_string.replace(orig, fake) result = self.client.get('/?{}'.format(environ["QUERY_STRING"])) @@ -225,7 +225,7 @@ def test_produce_vsec_service_exception(self): ("&time=2012-10-17T12%3A00%3A00Z", ""), ("layers=ecmwf_EUR_LL015.VS_HV01", "layers=ecmwf_AUR_LL015.VS_HV01"), ("layers=ecmwf_EUR_LL015.VS_HV01", "layers=ecmwf_EUR_LL015.VS_HV99"), - ("format=image%2Fpng", "format=omage%2Fpng"), + ("format=image%2Fpng", "format=omage%2Fpng"), # codespell:ignore omage ("path=52.78%2C-8.93%2C48.08%2C11.28", "path=aaaa%2C-8.93%2C48.08%2C11.28"), ("&path=52.78%2C-8.93%2C48.08%2C11.28", ""), ("bbox=201%2C500.0%2C10%2C100.0", "bbox=aaa%2C500.0%2C10%2C100.0")]: diff --git a/tests/data/performance_simple.json b/tests/data/performance_simple.json index 5c20d1a70..420f8448e 100644 --- a/tests/data/performance_simple.json +++ b/tests/data/performance_simple.json @@ -11,5 +11,5 @@ "_comment3": "empty_weight: aircraft weight without fuel (lbs)", "_comment4": "climb/descent: weight(lbs), altitude(ft), duration(min), distance(nm), fuel(lbs)", "_comment5": "cruise: weight(lbs), altitude(ft), total air speed(nm/h), fuel flow(lbs/h)", - "_comment6": "ceiling: polynomial coeficients for relating weight (lbs) with peak flightlevel (hft). Leftmost coefficient is the intercept." + "_comment6": "ceiling: polynomial coefficients for relating weight (lbs) with peak flightlevel (hft). Leftmost coefficient is the intercept." } diff --git a/tutorials/textfiles/tutorial_mscolab.txt b/tutorials/textfiles/tutorial_mscolab.txt index 5180cf8dd..52d8ef741 100644 --- a/tutorials/textfiles/tutorial_mscolab.txt +++ b/tutorials/textfiles/tutorial_mscolab.txt @@ -68,7 +68,7 @@ for the users who have access permission to the operation, we can also change th Here for b, we have changed the permission from collaborator to admin. -we can alo delete a user with a permission by selecting user and clicking on delete button. +we can also delete a user with a permission by selecting user and clicking on delete button. Changing their access roles.... @@ -107,7 +107,7 @@ we can upload files by clicking on upload and browsing for the file. Here, we send the mss logo to all the users to see. -we can also search for a meassage by entering a phrase or complete text and then pressing previous or next as we need to find the message. +we can also search for a message by entering a phrase or complete text and then pressing previous or next as we need to find the message. Next, we close the chat window. @@ -144,10 +144,10 @@ We then open drop down menu of "save to server." It will open a window. -We can either click overwite server waypoints with local waypoints or local waypoints with server waypoints. +We can either click overwrite server waypoints with local waypoints or local waypoints with server waypoints. -We click overwite with local waypoints. +We click overwrite with local waypoints. The server waypoint changes with the work we have done locally. diff --git a/tutorials/textfiles/tutorial_satellitetrack.txt b/tutorials/textfiles/tutorial_satellitetrack.txt index 405420426..8a2f29e7e 100644 --- a/tutorials/textfiles/tutorial_satellitetrack.txt +++ b/tutorials/textfiles/tutorial_satellitetrack.txt @@ -1,7 +1,7 @@ This is Satellite Tracking Prediction System that can be used to check the accuracy of the path travelled by a Satellite by the help of data collected from different space agencies and planning a flight accordingly. - These flights which can be reffered to as the Testing flights are made to travel in + These flights which can be referred to as the Testing flights are made to travel in the direction of these Satellites by collaborating with these space agencies. Open the top view of the MSS software. diff --git a/tutorials/textfiles/tutorial_wms.txt b/tutorials/textfiles/tutorial_wms.txt index e24ea2529..6c4408a11 100644 --- a/tutorials/textfiles/tutorial_wms.txt +++ b/tutorials/textfiles/tutorial_wms.txt @@ -9,7 +9,7 @@ So, lets start the tutorial to know what is wms in depth. When we open the top view of the map, the web map service is already opened by default. -It collects its data from the server: "open-mss.org" that provides all the meteorological or atmospheric informations as layer lists. +It collects its data from the server: "open-mss.org" that provides all the meteorological or atmospheric information as layer lists. As we click on the server layer option, the layer list window opens that lists out various layers. diff --git a/tutorials/tutorial_mscolab.py b/tutorials/tutorial_mscolab.py index 390d6bcf6..68dbf1954 100644 --- a/tutorials/tutorial_mscolab.py +++ b/tutorials/tutorial_mscolab.py @@ -37,7 +37,7 @@ EMAIL = 'johndoe@gmail.com' PASSWORD = 'johndoe' OPERATION_NAME = 'operation_of_john_doe' -OPERATION_DESCRIPTION = """This is John Doe's operation. He wants his collegues and friends \ +OPERATION_DESCRIPTION = """This is John Doe's operation. He wants his colleagues and friends \ to collaborate on this operation with him in the network. Mscolab, here, \ will be very helpful for Joe with various features to use!""" PATH = os.path.normpath(os.getcwd() + os.sep + os.pardir) @@ -232,7 +232,7 @@ def _adminwindow(): select_listelement(2, sleep=1) pag.sleep(1) create_tutorial_images() - # positions of buttons in the view mscolab admin windo + # positions of buttons in the view mscolab admin window pic = picture("mscolabadminwindow-all-users-without-permission.png") pos = pag.locateOnScreen(pic) left_side = (pos.left, pos.top, 500, 800) diff --git a/tutorials/tutorial_views.py b/tutorials/tutorial_views.py index a520b1b52..df304ef6e 100644 --- a/tutorials/tutorial_views.py +++ b/tutorials/tutorial_views.py @@ -481,7 +481,7 @@ def _tab_add_data(): # marks word pag.doubleClick() type_and_key('Location') - # annother waypoint name + # another waypoint name pag.click(x + xoffset, y - 263, duration=1) pag.sleep(1) pag.doubleClick() diff --git a/tutorials/utils/__init__.py b/tutorials/utils/__init__.py index 4cf865ce5..770aef845 100644 --- a/tutorials/utils/__init__.py +++ b/tutorials/utils/__init__.py @@ -141,7 +141,7 @@ def start(target=None, duration=120, dry_run=False): Note: Uncomment the line pag.press('q') if recording windows do not close in some cases. """ if platform.system() == 'Linux': - # makes shure the keyboard is set to US + # makes sure the keyboard is set to US os.system("setxkbmap -layout us") if target is None: return