From e0820f7f80fd42b1eba02ca678984c6046bb5b7a Mon Sep 17 00:00:00 2001 From: Antti Soininen Date: Thu, 10 Aug 2023 09:37:42 +0300 Subject: [PATCH 1/4] Use PySide6 enum Re #1981 --- spinetoolbox/widgets/multi_tab_window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spinetoolbox/widgets/multi_tab_window.py b/spinetoolbox/widgets/multi_tab_window.py index 51fba6f5a..826adc5ba 100644 --- a/spinetoolbox/widgets/multi_tab_window.py +++ b/spinetoolbox/widgets/multi_tab_window.py @@ -474,7 +474,7 @@ def __init__(self, parent): self._plus_button.setIcon(QIcon(CharIconEngine("\uf067"))) self._plus_button.clicked.connect(lambda _=False: self.plus_clicked.emit()) self._move_plus_button() - self.setShape(QTabBar.RoundedNorth) + self.setShape(QTabBar.Shape.RoundedNorth) self.setTabsClosable(True) self.setMovable(True) self.setElideMode(Qt.ElideLeft) From 11a7fe4389ee762e688f6ea98384ac1a84dc52a9 Mon Sep 17 00:00:00 2001 From: Antti Soininen Date: Thu, 10 Aug 2023 09:38:13 +0300 Subject: [PATCH 2/4] Clear current class information on reset We must clear current (selected) entity class information when initializing model in TabularViewMixin. Otherwise, the view may point to non-existing entity class after Database editor's database has been changed by user. Re #1981 --- spinetoolbox/spine_db_editor/widgets/tabular_view_mixin.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spinetoolbox/spine_db_editor/widgets/tabular_view_mixin.py b/spinetoolbox/spine_db_editor/widgets/tabular_view_mixin.py index 6f62aca2f..4e6b44c8b 100644 --- a/spinetoolbox/spine_db_editor/widgets/tabular_view_mixin.py +++ b/spinetoolbox/spine_db_editor/widgets/tabular_view_mixin.py @@ -174,6 +174,9 @@ def _connect_pivot_table_header_signals(self): def init_models(self): """Initializes models.""" super().init_models() + self.current_class_id.clear() + self.current_class_type = None + self.current_class_name = None self.clear_pivot_table() @Slot(QModelIndex, object) From fd20b7af975020df416fb3e45df8cfa03961e104 Mon Sep 17 00:00:00 2001 From: Suvayu Ali Date: Tue, 15 Aug 2023 14:03:15 +0000 Subject: [PATCH 3/4] Add webinars to the README.md Add links to the webinars from the Spine Project to the README now that the old site is not as discoverable --- README.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/README.md b/README.md index 7d1bb3f01..a62a86b2a 100644 --- a/README.md +++ b/README.md @@ -249,6 +249,72 @@ are not needed and there is a chance of conflicts between the packages. **Note**: Python 3.8.0 is not supported. Use Python 3.8.1 or later. +## Recorded Webinars showing the use of Spine Tools + +### Spine Toolbox: Data, workflow and scenario management for modelling +*Wednesday Sep 8, 17:00-18:30 CEST (11:00-12:30 EDT) - Organized together with G-PST* + +Spine Toolbox is an open source software to manage data, scenarios and workflows for modelling and simulation. You can have your local workflow, but work as a team through version control and SQL databases. This webinar gives a quick overview of the different functionalities and showcases them through two examples. + +Recording Chapters: +- [00:00-00:05](https://www.youtube.com/watch?v=jaDIxonOmfY) Relation to G-PST Pillar 5 (Clayton Barrows, NREL) +- [00:05-00:35](https://youtu.be/jaDIxonOmfY?t=1350) Building a workflow in Spine Toolbox [PDF](http://www.spine-model.org/pdf/webinar/Spine%20Toolbox%20-%20Building%20a%20workflow%20in%20Toolbox%20by%20Juha%20Kiviluoma.pdf), *(Juha Kiviluoma, VTT)* +- [00:35-00:55](https://youtu.be/jaDIxonOmfY?t=2445) Example workflow from Canada to manage lots of input sources [PDF](http://www.spine-model.org/pdf/webinar/Spine%20Toolbox%20-%20Case%20in%20energy%20system%20integration%20with%20Toolbox%20by%20Madeleine%20McPherson%20and%20Jacob%20Monroe.pdf), *(Madeleine McPherson and Jake Monroe, University of Victoria)* +- [01:05-01:15](https://youtu.be/jaDIxonOmfY?t=3722) Example workflow from EU project TradeRES to serve +multiple models *(Milos Cvetkovic and Jim Hommes, TU Delft)* +- [01:15-01:30](https://youtu.be/jaDIxonOmfY?t=4500) Moderated Q&A + +### SpineOpt: A flexible energy system modelling framework in Julia +*Tuesday Sep 7, 14:00-15:30 CEST (8:00-9:30 EDT) - Organized together with EERA ESI* + +The importance of operational details in planning future energy systems has been rapidly increasing. One driver for this is the increasing role of variable power generation, which requires that the energy system models consider higher temporal granularity, longer time series and new aspects in power system stability. Another important driver is a consequence of sector coupling through the electrification of transport, space heating and industries. As the other sectors become more integrated with electricity, they need to be modelled at a granularity that is sufficient for describing the potential flexibility they can bring to the power system dominated by variable and uncertain power generation. + +This webinar will present the open source Julia based energy system modelling framework SpineOpt, which has been built with these challenges in mind. It can represent different energy sectors using representation typically available only in sector specific models and with highly adaptable temporal and stochastic structures available both for planning and operations. More information at https://spine-project.github.io/SpineOpt.jl/latest/index.html. + +Recording Chapters: +- [00:00-00:08](https://www.youtube.com/watch?v=FiiqZNcx7Ds) Introduction [PDF](http://www.spine-model.org/pdf/webinar/SpineOpt_Introduction%20by%20Erik%20Delarue.pdf) +- [00:08-00:31](https://www.youtube.com/watch?v=FiiqZNcx7Ds&t=475s) Basic elements of SpineOpt and the flexible spatial structure [PDF](http://www.spine-model.org/pdf/webinar/SpineOpt_Basic%20elements%20of%20SpineOpt%20by%20Maren%20Ihlemann.pdf) +- [00:31-00:40](https://youtu.be/FiiqZNcx7Ds?t=1876) Adaptable temporal and stochastic structures [PDF](http://www.spine-model.org/pdf/webinar/SpineOpt_Flexible%20temporal%20and%20stochastic%20structure%20by%20Topi%20Rasku.pdf) +- [00:50-01:30](https://youtu.be/FiiqZNcx7Ds?t=3608) Representation of different energy sectors & +Attempts to make the model faster [PDF](http://www.spine-model.org/pdf/webinar/SpineOpt_Different%20energy%20sectors%20and%20accomodating%20complexity%20by%20Jody%20Dillon.pdf) +- [01:25-01:35](https://youtu.be/FiiqZNcx7Ds?t=5065) Q&A + Step-by-step 10 minute demo on how to build a simple model with SpineOpt using Spine Toolbox + +### Demonstration of Spine modelling tools through selected case studies +*Thursday Sep 9, 14:00-16:00 CEST (8:00-10:00 EDT)* + +[Full recording](https://youtu.be/i2fxDwsMuF8), all presentations slides [PDF](http://www.spine-model.org/pdf/webinar/Case_Studies_all_presentations.pdf) + +Over the past 4 years, the EU project Spine has developed a set of open-source tools for modelling complex energy systems. This webinar demonstrates the Spine software through six selected case studies, covering topics such as sector coupling, co-optimization of operation and investments, stochastic modelling, and rolling horizon optimization. Each subsection described below consists of a brief introduction followed by a live demonstration of the particular case, where some of the outstanding features of Spine are highlighted and discussed. + +Recording Chapters: +- [00:05-00:15](https://youtu.be/i2fxDwsMuF8?t=252) Introduction to Spine: This section uses a simple example to demonstrate the SpineOpt modelling principle. First, the user defines the different objects in their system, such as units and nodes, as well as the relationships between them, such as which units are connected to which nodes. Then, they specify values for certain pre-defined parameters such as node demand, unit capacity, cost, and conversion ratio. The resulting dataset is passed to SpineOpt which generates the corresponding optimisation model, optimizes it, and delivers the results. +- [00:15-00:30](https://youtu.be/i2fxDwsMuF8?t=939) Hydro: This section demonstrates hydropower modelling in Spine as performed in Case study A5. The objective is to model part of the Swedish hydropower system, namely the Skellefte river with its 15 power stations, by coupling the river system with the power system. The model maximizes income from electricity supply over one week with an hourly resolution, while respecting basic hydrological constraints. +- [00:29-00:45](https://youtu.be/i2fxDwsMuF8?t=1745) Building heating: This section demonstrates building heating modelling in Spine as performed in Case study A4. The objective is to model the Finnish power and district heating system coupled with an electrically heated residential building stock. The result is a rolling unit commitment and economic dispatch model, that optimizes system performance over one year at hourly resolution. +- [00:45-00:57] Break +- [00:57-01:06](https://youtu.be/i2fxDwsMuF8?t=3411) Gas grid: This section demonstrates gas grid modelling in Spine as performed in Case study A2. The objective is to model a natural gas transmission system with pressure-driven gas and couple it with an electricity system to capture the flexibility provided by the gas network. The result is a dispatch model that co-optimizes operations in both systems over a day at hourly resolution. +- [01:06-01:22](https://youtu.be/i2fxDwsMuF8?t=3992) Stochastic: This section demonstrates stochastic modelling in Spine using a simple example system. Three different stochastic structures are demonstrated: purely deterministic, stochastic fan, and converging fan. +- [01:22-01:35](https://youtu.be/i2fxDwsMuF8?t=4970) Power grid investments: This section demonstrates power grid investment modelling in Spine as performed in case study C2. The objective is twofold: (i) to model the Nordic synchronous power system (Norway, Sweden, Finland, and Denmark) with high operational detail; and (ii) to find optimal transmission line investment decisions over a long-term horizon of 10 years, for three different wind penetration scenarios. +- [01:35-01:40](https://youtu.be/i2fxDwsMuF8?t=5652) Q&A + +### SpineInterface: How to quickly and easily create new optimization models in Julia Friday +*Friday Sep 10, 14:00-15:30 CEST (8:00-9:30 EDT)* + +[Full recording](https://youtu.be/cUopRUTzXpY), all presentations [PDF](http://www.spine-model.org/pdf/webinar/SpineInterface_all_presentations.pdf) + +Creation of new optimisation models requires a lot of work to get the data to the models and the results out of the models. Spine Toolbox is an open source data and workflow management tool to assist with these tasks and can work with models written in any language. Meanwhile, SpineInterface is a Julia package that links the data management capabilities of Spine Toolbox with Julia/JuMP modelling environment in a very direct way. + +The data interfaces of Spine Toolbox together with SpineInterface simplifies the process of developing optimization models by allowing the model developer to focus on the constraint equations. The required data structures and data are defined with a graphical interface in Spine Toolbox and are immediately available to the model developer inside the constraint equation code without any action or code required by the model developer. SpineInterface supports the full range of data parameter types supported by Toolbox and provides a mechanism for representation of time and time-based data, either time series, time patterns or arbitrarily varying temporal data. + +This session will be of interest to model developers and/or students who want a significant head start in developing optimization models. The sessions will also be of interest to model developers who may wish to translate existing models developed in other platforms such as GAMS, into the Spine framework using SpineInterface. The power of SpineInterface will be demonstrated in an interactive session where the full modelling workflow will be illustrated from data structure design and implementation to constraint equation development. + +Agenda: +- Overview of SpineInterface +- Toolbox concepts and data structures including the Spine data API +- SpineInterface: convenience functions and accessing Spine Toolbox data in Julia +- Defining a model data structure in Spine Toolbox +- Building and solving an optimization model using SpineInterface +- Q&A + live demo [00:45-01:21](https://youtu.be/cUopRUTzXpY?t=2737) + ## Contribution Guide All are welcome to contribute! From 20c8ce00de5bf9622251d95c8e9a1fa326ad397e Mon Sep 17 00:00:00 2001 From: PekkaSavolainen <43600314+PekkaSavolainen@users.noreply.github.com> Date: Wed, 16 Aug 2023 17:05:27 +0300 Subject: [PATCH 4/4] User Guide Updates (#2257) Update sections, remove Execution Modes section, Add What's New section - Updated Settings section - Updated Settings up Consoles and External Tools section - Took relevant stuff from Execution Modes section into Setting Up Consoles and External Tools section - Removed Execution Modes section - Added What's New? section, which shows the Changelog.md - Removed created dates from start of files - Capitalized all main headers - Updated some links - Fixed some Sphinx warnings by editing docstrings when building the html docs Re Issue #2156 --- docs/source/contribution_guide.rst | 7 +- docs/source/data_import_export.rst | 5 +- docs/source/developer_documentation.rst | 2 +- docs/source/execution_modes.rst | 185 ------------ docs/source/execution_tests.rst | 2 +- docs/source/getting_started.rst | 6 +- docs/source/how_to_run_spineopt.rst | 19 +- .../img/executable_tool_spec_dir_runner.png | Bin 0 -> 17515 bytes docs/source/img/ijulia_missing.png | Bin 9037 -> 0 bytes docs/source/img/ipykernel_missing.png | Bin 6908 -> 0 bytes .../img/julia_jupyter_console_selected.png | Bin 0 -> 37118 bytes .../julia_kernel_specification_creator.png | Bin 0 -> 14027 bytes docs/source/img/kernel_specs_missing.png | Bin 8612 -> 0 bytes .../img/python_jupyter_console_selected.png | Bin 0 -> 36487 bytes .../python_kernel_specification_creator.png | Bin 0 -> 15696 bytes docs/source/img/settings_tools_default.png | Bin 0 -> 35867 bytes ...tings_tools_default_python_git_version.png | Bin 31109 -> 0 bytes .../settings_tools_filled_for_spineopt.png | Bin 31649 -> 0 bytes ...ettings_tools_python_installed_version.png | Bin 32440 -> 0 bytes .../start_jupyter_console_menu_listing.png | Bin 0 -> 41222 bytes docs/source/index.rst | 8 +- docs/source/metadata_description.rst | 2 +- docs/source/parameter_value_editor.rst | 3 +- docs/source/plotting.rst | 1 - docs/source/project_item_development.rst | 2 +- docs/source/setting_up.rst | 270 +++++++++++++----- docs/source/settings.rst | 116 ++++++-- docs/source/spine_db_editor/index.rst | 2 +- docs/source/tool_specification_editor.rst | 7 +- docs/source/ui_guidelines.rst | 2 +- docs/source/unit_testing_guidelines.rst | 2 +- docs/source/whats_new.rst | 10 + spinetoolbox/fetch_parent.py | 6 +- spinetoolbox/mvcmodels/map_model.py | 2 +- .../mvcmodels/alternative_model.py | 2 +- 35 files changed, 333 insertions(+), 328 deletions(-) delete mode 100644 docs/source/execution_modes.rst create mode 100644 docs/source/img/executable_tool_spec_dir_runner.png delete mode 100644 docs/source/img/ijulia_missing.png delete mode 100644 docs/source/img/ipykernel_missing.png create mode 100644 docs/source/img/julia_jupyter_console_selected.png create mode 100644 docs/source/img/julia_kernel_specification_creator.png delete mode 100644 docs/source/img/kernel_specs_missing.png create mode 100644 docs/source/img/python_jupyter_console_selected.png create mode 100644 docs/source/img/python_kernel_specification_creator.png create mode 100644 docs/source/img/settings_tools_default.png delete mode 100644 docs/source/img/settings_tools_default_python_git_version.png delete mode 100644 docs/source/img/settings_tools_filled_for_spineopt.png delete mode 100644 docs/source/img/settings_tools_python_installed_version.png create mode 100644 docs/source/img/start_jupyter_console_menu_listing.png create mode 100644 docs/source/whats_new.rst diff --git a/docs/source/contribution_guide.rst b/docs/source/contribution_guide.rst index e29452b03..d051a2fdf 100644 --- a/docs/source/contribution_guide.rst +++ b/docs/source/contribution_guide.rst @@ -1,5 +1,4 @@ .. Contribution guide - Created: 19.6.2018 .. _Qt Style Sheets: http://doc.qt.io/qt-5/stylesheet.html .. _PEP-8: https://www.python.org/dev/peps/pep-0008/ @@ -7,9 +6,9 @@ .. _Contribution Guide: -************************************ -Contribution Guide for Spine Toolbox -************************************ +****************** +Contribution Guide +****************** All are welcome to contribute! This guide is based on a set of best practices for open source projects [JF18]_. Reporting Bugs diff --git a/docs/source/data_import_export.rst b/docs/source/data_import_export.rst index d88ad253e..afc5ddb78 100644 --- a/docs/source/data_import_export.rst +++ b/docs/source/data_import_export.rst @@ -1,5 +1,4 @@ .. Importing and exporting data - Created: 15.5.2019 .. |open-folder| image:: ../../spinetoolbox/ui/resources/menu_icons/folder-open-solid.svg :width: 16 @@ -10,7 +9,7 @@ **************************** -Importing and exporting data +Importing and Exporting Data **************************** This section explains the different ways of importing and exporting data to and from a Spine database. @@ -386,7 +385,7 @@ GAMS gdx export .. note:: You need to have GAMS installed to use this functionality. However, you do not need to own a GAMS license as the demo version works just as well. - See :ref:`Setting up External Tools` for more information. + See :ref:`Setting up Consoles and External Tools` for more information. The gdx backend turns the output tables to GAMS sets, parameters and scalars following the rules below: diff --git a/docs/source/developer_documentation.rst b/docs/source/developer_documentation.rst index 30623ff9d..ffc2cf769 100644 --- a/docs/source/developer_documentation.rst +++ b/docs/source/developer_documentation.rst @@ -1,4 +1,4 @@ -Developer documentation +Developer Documentation ======================= Here you can find developer specific documentation on Spine Toolbox. diff --git a/docs/source/execution_modes.rst b/docs/source/execution_modes.rst deleted file mode 100644 index a2a207c15..000000000 --- a/docs/source/execution_modes.rst +++ /dev/null @@ -1,185 +0,0 @@ -.. How to set up shell or Jupyter Console execution model. - Created 4.6.2021 - -.. |browse| image:: ../../spinetoolbox/ui/resources/menu_icons/folder-open-solid.svg - :width: 16 -.. |play| image:: ../../spinetoolbox/ui/resources/menu_icons/play-circle-solid.svg - :width: 16 -.. |stop| image:: ../../spinetoolbox/ui/resources/menu_icons/stop-circle-regular.svg - :width: 16 - -.. _Execution Modes: - -*************** -Execution Modes -*************** - -Python and Julia Tools can be executed in either an embedded basic console or a Jupyter Console. GAMS Tools -are only executed in the shell. Executable tools are a shell or by running the executable file straight. - -Python -****** - -Under the **Tools** page in **File -> Settings...**, you can set the default console for new Python Tool specifications -as either a Basic Console or a Jupyter Console. In the Tool Specification Editor, Tool specification specific selections -can be made overriding the default settings. - -Basic Console -------------- - -If Basic Console is selected (it is by default) Tools are executed in the **Console** dock widget on a basic console. -You can set the default Python interpreter in the settings and item specific interpreters in the -Tool's specification editor. - -Jupyter Console ---------------- -Jupyter Console will also appear in the **Console** dock widget. -If you want to use a Jupyter Console as the default, check the *Jupyter Console* check box. -There is an extra step involved since -the Jupyter Console requires a couple of extra packages (*ipykernel* and its dependencies) to be -installed on the selected Python. In addition, kernel specifications for the selected Python needs to be -installed beforehand. **Spine Toolbox can install these for you**, from the **Python Kernel Specification Creator** widget that -you can open from the **Tools** page in **File -> Settings...** by clicking the **Make Python Kernel** button. - -.. note:: - You can install Python kernel specifications manually and Spine Toolbox will find them. You can select the kernel - spec used in the Jupyter Console from the drop-down menu *Select Python kernel...*. - -.. 1. Go to ``_ and download the Python you want - 2. Run the Python installer and follow instructions - 3. Either let the installer put Python in your PATH or memorize the path where you installed it - (e.g. `C:\\Python38`) - 4. Start Spine Toolbox - 5. Go to File -> Settings (or press F1) and click the Tools tab open - 6. If the installed Python is now in your PATH, you can leave the Python interpreter line edit blank. - Or you can set the Python interpreter explicitly by setting it to e.g. `C:\\Python38\\python.exe` - by using the |browse| button. - 7. Check the `Use embedded Python Console` check box - 8. Create a project with a Tool and a Python Tool specification (See :ref:`Getting Started`) - 9. Press play to execute the project (See :ref:`Executing Projects`) - 10. You will see a question box - -.. .. image:: img/ipykernel_missing.png - :align: center - -.. When you click on the *Install ipykernel* button, you can see the progress of the - operation in Process Log. The following packages will be installed on your selected Python.:: - -.. backcall, colorama, decorator, ipykernel, ipython, ipython-genutils, jedi, jupyter-client, - jupyter-core, parso, pickleshare, prompt-toolkit, pygments, python-dateutil, pywin32, pyzmq, six, - tornado, traitlets, wcwidth - -.. When this operation finishes successfully, you will see another guestion box. - -.. .. image:: img/kernel_specs_missing.png - :align: center - -.. Clicking on *Install specifications* button starts installing the kernel specs for the selected Python. - On the tested system, this creates a new kernel into directory - `C:\\Users\\ttepsa\\AppData\\Roaming\\jupyter\\kernels\\Python-3.8`, which contains the `kernel.json` file - required by the embedded Python Console (which is actually a jupyter qtconsole) - -.. 11. After the kernel specs have been installed, executing your Tool project item starts in the - Python Console immediately. You can see the executed command and the Tool output in the Python - Console. - -.. .. note:: - If you want to set up your Python environment ready for Python Console manually, the following - commands are executed by Spine Toolbox under the hood - -.. This installs all required packages:: - -.. python -m pip install ipykernel - -.. And this installs the kernel specifications:: - -.. python -m ipykernel install --user --name python-3.8 --display-name Python3.8 - - -Julia -***** - -As with Python, default console type can be selected in the settings and Julia kernels can also be created by pressing -**Make Julia Kernel** -button. In addition a default project can be selected for Julia Tool specifications. - -Basic Console -------------- -On **Tools** page in **File -> Settings...**, check the **Basic Console** radiobutton. -This is the default execution mode for Julia Tools. - -.. 1. Go to ``_ and download the Julia you want - 2. Run the Julia installer and follow instructions - 3. Either let the installer put Julia in your PATH or memorize the path where you installed it - (e.g. `C:\\Julia-1.2.0`) - 4. Start Spine Toolbox - 5. Go to File -> Settings (or press F1) and click the Tools tab open - 6. If the installed Julia is now in your PATH, you can leave the Julia executable line edit blank. - Or you can set the Julia executable explicitly by setting it to e.g. `C:\\Julia.1.2.0\\bin\\julia.exe` - by using the |browse| button. - 7. Uncheck the `Use embedded Julia Console` check box - 8. Create a project with a Tool and a Julia Tool specification (See :ref:`Getting Started`) - 9. Press |play| to execute the project (See :ref:`Executing Projects`) - 10. Executing your Tool project item starts. You can see the output (stdout and stderr) in the - Process Log. - -Jupyter Console ---------------- - -Like the Python Console, the Jupyter Console with Julia requires some extra setting up. A couple of -additional packages (`IJulia`, etc.) are required to be installed and built. **Spine Toolbox can set this up for you -automatically**. Just click the **Make Julia Kernel** button after selecting the **Jupyter Console** -radiobutton. - -.. note:: - You can install Julia kernel specifications manually and Spine Toolbox will find them. You can select the kernel - spec used in the Jupyter Console from the drop-down menu *Select Julia kernel...*. - -.. 1. Go to ``_ and download the Julia you want - 2. Run the Julia installer and follow instructions - 3. Either let the installer put Julia in your PATH or memorize the path where you installed it - (e.g. `C:\\Julia-1.2.0`) - 4. Start Spine Toolbox - 5. Go to File -> Settings (or press F1) and click the Tools tab open - 6. If the installed Julia is now in your PATH, you can leave the Julia executable line edit blank. - Or you can set the Julia executable explicitly by setting it to e.g. `C:\\Julia.1.2.0\\bin\\julia.exe` - by using the |browse| button. - 7. Check the `Use embedded Julia Console` check box - 8. Create a project with a Tool and a Julia Tool specification (See :ref:`Getting Started`) - 9. Press |play| to execute the project (See :ref:`Executing Projects`) - 10. You will see a question box - -.. .. image:: img/ijulia_missing.png - :align: center - -.. When you click on the *Allow* button, installing IJulia starts and you can see the progress of the - operation in Process Log. **This may take a few minutes**. - -.. When you see the these messages in the Event Log, the Julia Console is ready to be used.:: - -.. IJulia installation successful. - *** Starting Julia Console *** - -.. 11. After the installation has finished, executing your Julia Tool project item starts in the - Julia Console immediately. You can see the executed command and the Tool output in the Julia - Console. If nothing seems to be happening in the Julia Console. Just click |Stop| button and - then try executing the project again by clicking the |play| button. - -Executable -********** - -With executable Tool types there are two ways to run the executable file: using a shell or without one. - -Using a shell -------------- - -To run an executable with a shell you need to select a shell out of the three available options that is -appropriate for the operating system you are running Spine Toolbox on. Then you can write a command that -runs the executable with the arguments that it needs into the *Command* textbox just like you would on a -normal shell. - -Without a shell ---------------- - -To run an executable file without a shell you can either select the executable file as the main program -file of the Tool and write the possible arguments into *Command line arguments* or select *no shell* and -write the filepath of the executable file followed by it's arguments into the *Command* textbox. -Either way the file is executed independent of a shell and with the provided arguments. diff --git a/docs/source/execution_tests.rst b/docs/source/execution_tests.rst index 016816d2a..38f2ec0c2 100644 --- a/docs/source/execution_tests.rst +++ b/docs/source/execution_tests.rst @@ -1,6 +1,6 @@ .. _Execution tests: -Execution tests +Execution Tests =============== Toolbox contains *execution tests* that test entire workflows in the headless mode. diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index 809919445..eb2e73e2d 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -35,7 +35,7 @@ Welcome to the Spine Toolbox's getting started guide. In this guide you will learn two ways of running a `"Hello, World!" program `_ on Spine Toolbox. If you need help on how to run **SpineOpt.jl** using Spine Toolbox, see chapter -:ref:`How to set up SpineOpt.jl`. For small example projects utilizing **SpineOpt.jl**, see `SpineOpt tutorials +:ref:`How to Set up SpineOpt.jl`. For small example projects utilizing **SpineOpt.jl**, see `SpineOpt tutorials `_. This chapter introduces the following topics: @@ -205,7 +205,7 @@ Once the execution is finished, you can see the details about the item execution | -.. note:: For more information about execution modes in Spine Toolbox, please see :ref:`Setting Up External Tools` +.. note:: For more information about setting up Consoles in Spine Toolbox, please see :ref:`Setting up Consoles and External Tools` for help. Congratulations, you just executed your first Spine Toolbox project. @@ -321,7 +321,7 @@ Press |execute| once again. The project will be executed successfully this time: That's all for now. I hope you've enjoyed following this guide as much as I enjoyed writing it. See you next time. Where to next: If you need help on how to set up and run **SpineOpt.jl** using Spine Toolbox, see chapter -:ref:`How to set up SpineOpt.jl`. After setting up SpineOpt, there are three tutorials over on **SpineOpt.jl**'s +:ref:`How to Set up SpineOpt.jl`. After setting up SpineOpt, there are three tutorials over on **SpineOpt.jl**'s documentation that will help you get started on using SpineOpt in Spine Toolbox: `Simple system `_, diff --git a/docs/source/how_to_run_spineopt.rst b/docs/source/how_to_run_spineopt.rst index 7ab6a42ee..f03ddf5c9 100644 --- a/docs/source/how_to_run_spineopt.rst +++ b/docs/source/how_to_run_spineopt.rst @@ -1,13 +1,12 @@ -.. How to set up SpineOpt.jl documentation - Created 26.5.2021 +.. How to Set up SpineOpt.jl documentation .. |execute| image:: ../../spinetoolbox/ui/resources/menu_icons/play-circle-solid.svg :width: 16 -.. _How to set up SpineOpt.jl: +.. _How to Set up SpineOpt.jl: ************************* -How to set up SpineOpt.jl +How to Set up SpineOpt.jl ************************* #. Install Julia (v1.6 or later) from ``_ if you don't have one. @@ -17,17 +16,17 @@ How to set up SpineOpt.jl #. Create a new project (**File -> New project...**) -#. Select **File -> Settings** from the main menu and open the `Tools` page. +#. Select **File -> Settings** from the main menu and open the *Tools* page. -#. Set a path to a Julia executable to the appropriate line edit (e.g. ``C:/Julia-1.5.4/bin/julia.exe``). +#. Set a path to a Julia executable to the appropriate line edit (e.g. `C:/Julia-1.6.0/bin/julia.exe`). Your selections should look similar to this now. - .. image:: img/settings_tools_filled_for_spineopt_github.png + .. image:: img/settings_tools_default.png :align: center #. *[Optional]* If you want to install and run SpineOpt in a specific Julia project environment (the place for - ``Project.toml`` and ``Manifest.toml``), you can set the path to the environment folder to the line edit just below the - Julia executable (the one that says `Using Julia default project`). + `Project.toml` and `Manifest.toml`), you can set the path to the environment folder to the line edit just below the + Julia executable (the one that says *Using Julia default project*). #. Next, you need to install **SpineOpt.jl** package for the Julia you just selected for Spine Toolbox. You can do this manually by `following the instructions `_ @@ -49,7 +48,7 @@ Spine Toolbox and Julia are now correctly set up for running **SpineOpt.jl**. Ne `Create a project workflow using SpineOpt.jl `_ (takes you to SpineOpt documentation). See also `Tutorials `_ in SpineOpt documentation for more advanced -use cases. For more information on how to select a specific Python or Julia version, see :ref:`Setting up External Tools`). +use cases. For more information on how to select a specific Python or Julia version, see :ref:`Setting up Consoles and External Tools`). .. note:: The **SpineOpt Plugin Toolbar** contains an exporter specification as well as three predefined Tools that make use of SpineOpt.jl. **The SpineOpt Plugin is not a requirement to run SpineOpt.jl**, they are provided just for diff --git a/docs/source/img/executable_tool_spec_dir_runner.png b/docs/source/img/executable_tool_spec_dir_runner.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d6373c0ce41f9a91b58abf03c081aa2f1edacc GIT binary patch literal 17515 zcmeHubyQVd*Y7@bcPK3-At5P!l+BHbN=lr%{9;qC)I z@B4h;_uhBhJMR6)xPM&7aBR*wd#^RuT66y9oWD8udo>kVTr3JK00401<)kzK02%xf zi39@)ywDHN`~)u$M-ACWKw%%%8u$Ul;-T_G04NE?zIciXe#U$yr{@R&c&&*4kaoLl zGXRhRV^H;Aeg%B&$QSQ&_iy0-m9_2u?;NouaR1j4$E5QaaH!My09yENsE>6J&o7b8Z@gkvts%}2Gmi}7zJ=6SRh8C= z3t@>wu6jIkEwwNS%mU}gmU5AsW>e?o!(m+AgzqG>Hcgo-mzTK?Aq{A%idEQ5S1QK| zH0*foi0pMRFr9U17N2j|?KEA%H^vI;=KU$H4a3EUdIpffWZRPZ>c!-qqKq?t>gV~g z4=$1A`&|Ijue$8(0RtlnoxB9T_{q=Hm87Pf#&Z|p1aPm9sux2%PP>ian-&uKiGdcP zi?@q>E;nqf!o^*-39XO3lAiHBO!xde7*7rW(EE=ea<5X_`8T1)2NW>x%MD|RqY2Xp zZ|`GQAJ?iME|ECp-j`>_@V#i`%XOW(lkbA!TUM$bgF!|Ir~N*&kI6Azwy7P5_sXp< z>bS!D_MYzqIR$gZRCzU)tC6npuy+@ci3y4t+G85$hFq$<#3<*xlQ_EgH_6GKz9^#+ z>+RvrVu`QXb4mzta_zYf3N+UNf2Pm$!r#BELHO*R=p{x2TJqh**9*SboD<;c7&k;W z^!kO*H_LjHE^5I=f95niYawrZwfH?aB0$L=Gn#0G)7JH6h0nO_7a4yiv-5hH-cqJP zy?yE*d#1MwnMM6xMsH9b5@!(lSXK(&>c(b)(Zp=cXMJ$z_B?^FoxF*C`e@QY&U z)~sI!Y4sn&JY=b0-bZCgh7O%fTyC9;iG_M4&)UR}XZDvORl5dMea?n^;{=UCb(c8p zR8_M7Xua}SzXBgJl!up^VEaKb%FnRI*CYp6>*6Z3CvGJzbxAkEf8w6N(r`xicrDPV zfXn`HS%xbM)OB5gQvS)u@4uwX+wVXnkVL?f5{56aT;(T6a!8 zSbwXV!Qjqmys+LKY@~t?0L66Q*?=E$_+oyo;;SQ9`X&+HvsdurovJzS2=Apq_-WGB z>0NMjQ-U6;@AO|++MRRM=khj2E54^uE3=mN&bi>@|GZ<*9+35FOT){IQCOYgFqGb! za^#a|w6RpdybdRyQXSk0v<>WMo=5`?CDp`Rn+cqd)$f#co^9+#y9ZekhBUd~lJR{` zS|v`J@i%pmn!o3}yp$}~mK9d?sF~Wu^)4GXJ~=eRYWlRn(c=V8#Zt~uE3U7e&^tDP z#ZRTQxyRDtA_J;bWOO46HO`kVqeMOcfO(h1DWO(cGIp$O2cuH2ZJsOCq9h~Ziw@Ku z?|U>Id+fN6*ST!ZSfP{A3V475u10b~EI}yp`p%oU8^0oIF`BDAciQJ_y`u{SK;?jm zuMxq-K@qnr#*Mn8xj?f$2kpyvdbR`xpnwB-4KV=_@XCjeL;zmO@&4B@lrXq4`zb5p zDI!{!HT?@*6gqImv7sa2U=r0N5%eQK%mWN)(xt8OH3&14BN0F_5SXl_0ZbhpRatxV z!jGGdNY%~du&k}{op7OoKb(g7#|_GCrUg9W0}v8&*C;6g5wG@t1X9IHjCi zHq~@kxi@+Yvf?|RWV z@5aq-#>5E(V{Q9vu{U1LaYp2q?GL5-9QcK9*PfLp>f{GMK^R8v2H#hmx~WFbT7 zC+?+2Vr9gs#~6_P#tXBN(G0iknN;nehsb*UH1|(uiHYDBroP?Z&}xP}VD3``E}`kX zuj*9vr9xO9Icq0Dmhk6x{pvf~wgU>zGh*agmC~J3!9F z0#7hD=TniX*gL~svTh1FMvF*cXS4kbXAH$YmyOvJq1ijg9NYluPZ7jJxW9fgd_LSK z)D3&uQcr|?KLc781~^R`!&hmGB3q3wetO_1`qZ=F3VrHB^+tJot3R(GzTeM7oVDgYE{`^;Ppsuo>si_F==Y3RUJpDpfU!-ufEwoH zV*kD^8UAF=A@Duw7i)#l=;WZoGpIU;h@_p7fa1G2R=i zn|;+RvFX~9Fhth0o6x@X>b>3eNov-)# zNrn&s5e-hfiR5TjUx(qND>L#YQ(O0#&{Q!kl;oLyTN72M9f^vE7oN*qHXDM|0tJWG zQ_nrx17)iW%8tHpgsxZC=>CbI2x~q)%pX2Kytmqg?ogpHf99dgJf0 z%aJY&)U4=T{zfA;d3pOcz922keUhU6DZ2JkFBBjCQ3P2P%eq> z?s534gFNrTkgHc8O7iiKYE25%jA4{yorEK4O|HhH`04LrKyPoq@_B-J^=*0@7@Et_ zypbpN+8rSF*iuuwdMK zDTSS@af2btcIKp=y-AlAb|iFGNL+YY=V*JrdKOS5x9cZG+O7Sno!WIK zqHi%&r;(5;9VMB1es&>lsC43oGQRwiuCtNvS-a;E8@UsN>~oO46{nz@N)W5^c2^wC z?v6?~f65o{SVO|zsCLrvy}klMlaaMf2aeV{c-U+RXPq7Tfnt(s9!4rf>oEPHX& z!tYFfunw-Z2)Z;=3YAy&cSD!)q9UfrV~rD#H$FjAPLboP>peQvB#UNqjb%R=4>OF= zXK>&rbKVRsZM9BKTInm0bqp0#6_6&68o%F75~?V+es6MkxlmTnp+6KcSz&1?I~P|W zt5FWyzC`=pB4A11ypgh!s$8}0GZby`4RP-9y|+nc(X!rJq%fM-2PK-~-izLMr|hub zbBV9BU%4&%RCTxM&Tu_ksfssfCB!p7mme6hDLX`QToLip#yJH(h1(d^kb3It)bgT? zQp{ykJrZo|4>rO)c=QawI_t%yqpqQi&h5E+&_Wv)S14>V+>b%luQSEF#P-tmR?w%3 z$JO0uhTPU?1^1@~-yT&e*JiALh$}o;K2p{;4I1ft@nkvULf1bJ^MhBN!A^D(OYkO= zX^RWlxQ-gd{VvY)J-TBDm9oL3f~W|hDhitl4WYja#ac!suZu}`X%7a#}Tt=y5C zg*en%OvJvF72!3j-C9hJlqL#Ol7ZG?yC=a{jv)}k-rA2B5fOK;fr?TdTty z5)?mn>@q*LXk=37FYW|(DR>-lMoE*Az_jYPv+4t7T{OhVdiLU8y0P*1ro9v4)7nRRqn0%g?&bqR zSjc(DTr9vSFNb$m0$ApGXPf(AWbNPtFDy)1!>sO^oHQ`BKO?_+pz>JFdG_NU?>oRd z3h4;+R4=M_$B0oyw!t$Tz1CVqT*?;JP=BRlR^IkIByr<3IK)YntX( zR_m5t5g`v`=S-+QRnkjO(lLK=n{IIKx1@h>DNQ0RtnJR3yY8XtQ-kx<0IY;mr=wlf zr=swaMLYN5IQWBvBCoBNF7FX;4nRqM(}HG<-;e)wq4-u&02Z8s8{zwq{cu6|2oCi0 zz7akt!XHvx>_^N!x^~HAyNADb+i9;{=<8gzN+a3nfM$RW3;T`+7WfiH zz=c1UIlc8Vw?;9g0KGQ=_@iHk2v7dyMOGB>A_Q+rPSHZ61FtYN$?J4t?BTz;41NU; z^k7(<97w$_aF2QbAe|r&679u-&Y`kA1YWRd7uka369i)l50ae&h7ieUNCf57NNSp3 zU;_n{2TKu@d~kqgtLEq4hL>j-pdVOiw>wqoKcUAryqrj1yx9(TEq zXovn-4#7EIue2GSLK?Sr8^Ni-bfb83S`A^lH6jA_N{?OF*_v0wg0^B)9R?A@z6WhX z3M?|a8I1RSUrM}hu)fK`hqaPIUfV-O|3LT6JCHW~7pdh!c+Y*?@VsUc8hO)s= z4tPU8o>dJ!8|Y`C2bRILF5P+rV2QJ1TxHda=)IPXZ2j2hT*J{$wtm$!?R=rs9eY^5RRlw(cfHt#z6qa~xGZu@LJ)>sWz)s0923mr`KD zG#HVBOfD8evYD^6evD2UvLzHU)|u9kp)?V1rn+~y7#!gJRlj3wA13!fNv2u zd{mL`I<#Nf+%|ZsFZhDiZjIvL(@chfsy|y!rBQ#JctO0F&IF9$Tuw1YV#6LGXPoCj+h zM~jTT>Dt-==A<|1bcY(|#!(~PT3%T`xFaZHLp?^*rI}B@g~*b}?vQ+D2R9urk~dwJ z;+Kvjfr3EcKmpxdJzt7BJQ3=7OES+3_mY~U^Z^M!94!@zN5=q3Q^^SK?S|3r-sH-c zZzOAdg(d1HH176)?!;IbAS6~q?M5jzG&VbwaJZFTTF>EG=za2pyg@<9Wb<4bU%NBmJEhXeu#_d2$G09(*4M#mk`jYMqAc+!8qji%T&^>9buRx=@Rf_bV4c;Ld-I?=(SgBI zN0dkU()?RLjfiwTucd5Z%7!o&e^K|<-UtdErFu`1-<`583rO~}{$okoU{BjuL8tKF zB!>wPMI3Mq$JMjl+P+0JdYh3X3*iU@IWkANOU6^V!j46jZ8V4U(`zT>Pbvb%I*JT* zGd|cttr9YPa+cE4>i99G5sd{|~^$c^<@GF6rD65|I_SWR~+rEakg zmeS$a?C79N71DUtSbi)$u7`s5DmKnjy=ZAHUXH@_J)SO$m-79sMjZ1+i=WyUSxWi8M|0!l!i{ zovy6v+*NQS3=RhIX*3DO_ZoFN&^$kMtpF9ZG{?riM+q+lZMuY8^+>lC_`h|hn`2um zb{N_lZ;XHZObHNwPevM03nQ=nNy_P|w;A9GAQc~wz>={@jcZZD+fvs@d+E+y2nhTu zgYp1%40?c@45V=Egf@$%v7mb`U$8|%SA~U=?3X+nqBpS9eMf^F#u&YX)L)DgmfwBO z04&On15PJ|-7>VW9*+gTXl*bZL`6~)Zc{Dz9{E8>a6d)mP85y+Kq?`K1iPR95_r@WaQ**H?))$F>NF5OiNGf<*#&Ty ztQ3J#4#WpyL`n}>QvdxDW72q7U{_$=1V0#7y;7w>urX8fSl8ll=gc^CbF_o()=T5_ zDZ%=ATxLLC5-&s3-&!3^puw?}7>VrhgqFgX6hGIW_S%WBXQ$0(hF>#Mqh`quQIkQ^ zTl4c;4RxiXQp}E)fo9v={`FB)iaK#&$ z#}p^)W^<~Hsk$6mQz-p5SOEpS-nIKW>|~0|X$Q|P+&%i8R@!j*?gv>ca0O}Rr+dq? zv|a}vNZDtPDyyj7mcqeci05)BOmgkh9o8_OVPg{l2umWTmRgD1Lv!qC#?mk%zPD3_ zsCa8w>ld5P6wxW`l-~Somfdj73giM82L!!&M=39q74Oj16~(S9yq3-lbb@4E7>Qi$ z8W(rDD{SvFg6`l=5Q+9yA!@BvP9nX9t5=OL6}-89qZ=0-;1)JWL(QFyRTb)%ENqtb z!)K2h?~38S_{X;1tXCU}LIc?AuIi2HcME=dENldp|wB*UjNf2!Za+()XeRrG;pGE{$){&V7 z<#I8NtAuB=Ztf}$gu7Qgd5zfiTiA`i{kW(cd+y6p*?)^*QpA(E_+9na0!J~p6YP0=y@;o2$*z_<|%Q~zyzdY=rkS_VD`v^Hl3i!Ktu z8nM9-+?Ll{{_nBi&n;+#uwNpYpTQt7F>yL2VEvVO)FCo1lu}2D8WC%Pqrn8qegfsD zwo|`oMiVtTuFdl!KQ+cW|JSB2u62F`yYz#F)@@ zPz7L}t!9W@$f#hyR!TQhc|!1bO2FX7FDCL9%;{FAYz(M)?YAS1N6hBdWPeZvAIR05 zjvkV{0Oc~_30oyrmS}02gJ^Vqe>S%O3O0Zzfx5BC!0q>e0WCpoX}~Y?gNp#e36T?b zu4%Y=+quElF6jaTTst&SJia%6=*f39u%O^r0P;=cfWg8?;MJ| zCPO_`3IGhLh|!ZNy{xGk(CN-w)&+f~Wo(pdl$D#&xMfIeXJ&U6_xnVQKlI1PhU@Fu zF7Wp0G6j$uIfYaA4eJBKKVir%bs6pFX0MNRhv*x~@t39mfGk+umZ}qCX>DYd77dO= z)?uSF;Php%(0Z=X%cYkh$JqH-Y*vDcKVP5771COHtD8FxG}^ZM0PuNv@Hz=+heq*9 z`tiaW14`g4y@^1O+OU;O-BA1Yk}y!=?#91@T_%|wj)k>dsXC6iea(oLvFLo$);Ac` zZ4`A_qrG3W;hnfWURK&>lhQ;}=CpguKcL1{QaS7P7HZAQexYLnURRgiQ*FVLftSFU z#%o8ZoyeBpJN#sZ>zPt3WZOAI(2_Lo@ZxS`e`>CA3$f-M9sq{fTK_ZPiwf@)b`GVi z1DG>ZR^}LeDT~%0#WUJauG$&l8f@f^TYj~XH|W5t+c}^4Zp%TEUt3Wa3;XK;%S`Dn zmwQfQi?d%znEL8Mox2ZcU~Cl2=VS9-EiN@FUut4`BI+i)qWFV86)|MLA5m02b-fKX zE~rm1^lbQ~lqHS?ryT=Juei3FUzWJ99de!WB;%zIH&N6rn0)?8&Kdf+0(WpQKcxyO z)BrcG6@zuARNl4tr|rUiU(?T-Nj}?<8G~sr|oT@GHJFv z@*GyO)WdBGM{*p1TmGZ>;w?2mV{6lIvPtG#Wz-_*tzKb{zhYXHjieKwHObvu4(F&i z=rvndQ*UNZI?fK~qsP-re%0>_+Rj+wVKbu9d2pe*nw~Z~zawtd@9xJP3l95Xz1;Oh z`ohj1N5^_Bh(Lz#Pi%6QCiOMn&z*5LVA#OqL@EDA&`6a4lpr6)LiJ^6M{5D3WAG)F=9bh!Q$95 z62aGWH9XMH0seOo%ft0iaR8!3CIDYWfXo0$mGD6*eGoV>K#9Nz0XSlyWI+U&SYIH( z32FyYESM7~*Q3s^62Ul)1p^)=PI+jVE~<(HKR_o*U{Zyyd<>ZB1B+6jkX6$2CLBUS zb;fJ(xkLXf0wsCOeg_}@XZ1tik<>RvOlX1RLU*f#ei#a!lvKPE`1vjHE-+9IctPz4 zlpp2di=Iz|S*j@XO9(ggfD| z0zc|5JtE$uYx2#ZW65ei6bHP1@g|j^e?fG3_)z@L)oD<80k&U=ix>oda&G(lneKXL zf+%3Weg%1W)ack;-EOv}-MnO`tFEmTRJ?fB*rgP0-<-%VY5_kR5&k^m{Fw|hn#HK{ zi-lT7BaaWW@~J`(^8K`@`WPQtx9JU$)v|HqAEuOv15s-kGGRRPO_r&+&40~P$~v+2 zkaqz{CziiYyV`dTXESEQtkvD8|Lkpp@v(*M5H07b+NC$6fr4>Mxrid1FC+4-t@lGz zkd{%U{v-UQ&>1VqkwDro(iX*6HeRUBP*0AwFr+ZEPtlDB8Ry@^zRaB_%$>GMT(q(m z)erT2pf~qD9l19}U~PqYz4@$hzCURA((s@)%A(V2`y$>@HT{@hmGIooHo2d7m$L$} zDKC86QcQYV=-qtXPPMz1AQ*&%vZ>ZsE*=9P#eq}*>2mD4Dq$xnfeX(XVXQP*1_8mdtWi1F`$A?> ze%)QppS~+aGl;mtdDcTjGq9bs8#xMy{5I@C%D`*Wl-8pe+vwHla`bfJtx(auj{T&o z3;vg56N|UjQ!zmsctB*XSv>vrIU$l-WplUB9yL}&iLAgy@$FC8>mAC!Q4Z0@!;=bC zbmj2$%&k~rVvVJu&-QCHm%lvv5uWArCfqMWyM9vvjRpq)i4QjctIg+aT;5OXp5^P7 zJWKLAa$9(Rcheq6PvMn)*35s}z#u|c58fOr)y5CersKS{{LBYpPe|01FyPhGPJ%`h zSY!9Nh>Urvty8u;B8@rn_qK*AM!A0jjGhQx^uZJV4%YwK_zkbP>-D{t!D9GEU!>~UA^)oUHp`#!Me^Co z9iz9J!VJxdA=ww?cVvVPM>MzIy->;s5?S^K6Al6x0pWf5Ns`T@WW97CJ!J3njtI}` z!#ktR@yW6H80##$4B!9(Ff~%hqu>Q4h5YCK8&N=*CLzv$_0-kt`qBAZ`1gbys zPp8W#4mvgeZm|0puXY=AQN8iKgi->cM21^ zZ@!Vi%Wz!jOF-_2UW@E7h&&KdvzAkMrIN#zdr~Fadgn4U>ifnEf3g-RJb2Vz@=9)V zm{i;@2fvaHkO%VxL`oKu3Z8?k`-+PNcBqpGJC16( zX(4e!g2a2-UR;Y6)%#*wkGr{ap3D^4KF&8t-`krZa;NiIQlU(hxqzMkt(A?wCSR2> zJyurGC}Ho|3+wlYlTJjeW?bj4#J0+ZueRpky$9IW2c#i@S|?^HLjn6h`NDHryPCSv zg+<~s7f#3rc9a!7!QTt~ZtG*Eaz3`X#t(cx)CRHQp}r&|>m=^!HkMgqsRdO%K>O6M zwR1B5V&)Bc@?EgwPcoVY>>;biK0fZC7p{70fpY%R*5^3Rp;yhjs*e^$HiOi+ z`PF?#v$IjErYFS?13l{NMGyR*R4+VJkZkU`psyWC>Q7)BC%MM!kN55sESRHblfLUS zK~_7VPIj~y|4j`Vp+VrajxEkXgr8SKH{Vp8j;nF3UVcIG0-zkGfK#+6e41xkJA&!FKJ88L*(iS!{;)-aXA1(&_?xn*wp< z-*6am-=G;AfP2bNoXLAqoH}dATJOlWJ>z}8MP#p%1NBe;`kC|AH9~cYKqa5jLFCM7 z`rlh@sd)gJ2KoL8q%r0zL}*O^;GhARb)>zs}Q1QUd!Z(q7elk-VNZ zA!-LG5RU{G0I>5^{yH*i03UNO_GJc|)35Qy2$TSw7A$gMzC-wh|MD}a zn`zg{9oJ*jKX9d25yguKp@PCJO_WZLRH-rM6;Y5U_j9#|<59(HTb5{164QES(+Ju$BVW9a+7^#)?m2pud0KNbbn0{RQ}7!LFLMEA>w z`@+7vtr*iKxIDN%C65v|puniX{e_E5r9Lp^ag}kVdFQf5O~CzY2IXdeZjDMDk&?c5 zZ(u`CYGf;l0|j{+Ig+wNt%Vndgc;!ynqWzP(FC@PZx>7r^&)5?}u6 zD->#CySxsr5j&PHjwEth+rf8XdyS?Igk*_DP=a!F3FK(PrZylnf!h{K?vVU=#&O z`tel5P^!awRoqN^ea2+1v1z>)mz^@Iim3GnBr~fYnnoEmB&8}E2ZRP^LOU1OeF+Is z{-@$$)P2`(&xpzea1hFPX)aTu8i3(g83sW~J^-cYF^-UwfK5PO>dFCAjb7)s^ZNMK zWI<+4d_ZZ1x|06SHgW=oXVl4ZbRF(q%osy&Xz{Z|Mv6nR*IB;M`j);cJDK$^;xNcn zTf0jhMl5x%@4FP`>yj)eUh3_2Qea_~4+<1aDfp!opl5EN2zDQx(g$NP-mV>RA$jzU3mdIA-u%sYW~Rl8!&WkHy+iEkXAbd4x5)l6 z5S(P<{oO=eLfAT{W=r+`zHu~=vHzp^j2B7;Pb$EYPbBJJ+nLjZfq(w(pXqvTmeN; zWQd2sm%8?x9RnA08f5wZGUughLJTD1{{s%)5b^)hRO=(P>#W-fqNX?qR!X;^{D^fU z(lX@d`+dD0Mip5sxYMJ^44N!Vt)?G4O=$dcaanAmR1Gdr55QenL)Py$wD@&nPBwy2RA>$z{7!EE-O9 zBeL4K;G5i8I3dC;V?d~l_|01Z9$^VSbWk^KLDk9`%xzaifXNumAP$ZjW-kvZ>|N4( zJgAsU3ouddSY}4O(kw`2jTFY$0xz6rp%+DM-Zj z;#uznQ2xq<$54}_x9YCskkmelXz{M{*-QIHYWVJM6%VT$-~QO=s--B5A&z~mE5s`g zP?EnCr*0$2P$5_7bD#?@Ywf30R|6MWcrG0s9S>V=Okqfz`MGDfT21DbmO7gxbFKM)9@OXNR>OQiOEt#Cq(#>RaPV1e_$TcG z29uDonj#+@?U>lu`>a`5e`5|XzWbe?o_@h$l+^f(>*(ACdlRhwuLW%24lif*fvQG- z!xq*f|C22+*{lZZI68#}R&Z1tus?x1+aF;u*NS;?9GYU}x!cCPJHqfE6te87utGCh z`TbC_q1dZ2J&VbYnn8$4^R>z`g0BWB`9Lh+T+81njf>FLkBByfGIo()nVMbfVU8>0 zw|h!QW6;?xe&1y?lw<()(bdvg9kemX-eV|?(#6hv#FYU>@tFkr-VWvRq%<$0%Y-&?x}6DV|6?=B6S zh;8Wml)qU1gRC+$1Sl3npyAaFhRnFDy4+l-+iCaLI@Kb5XOhQC%(~YGg+yAHv76o% zV3UfbiwF2IgawA1&TF{_ypGm0j<<&A0fY zsLNS+o&D|LX~+wC+4+|C>oiFv{)YMx*a0T@<-;a{R9pU>X*58D&YNCI6?pDTKbs|KLcCm4lb!^KAoFYd-^v zE$wAt>WZjS^aZsa8CAvKX*-3%_LNqaL;v>=IJZAh`u+tSH}s7eL~aM}?WlvU2gR5Y zzg;~*Q2CZ=o!u~r&C$^?w)ybeW3}M?@uco5-`!WWX)lz=1A7RUPzK@l*UGk7bVIpv z1DG%7swQrwsFfrSm(XI>c(C)|lT{2}+aff|VeqkmdGBXEcT$<`4#J`7F4 z0y`L(m$mMo{sjrwKU%K#^!NWq&MxFBfF$>qdHgp;&Hr#Dy-lz?xI*Q~qkq8wP7EA= zejbe?7FXlgakfntN9;sY17H7>7a?Z{a=t|>-pL3NeTxhFl1Hl6vo(69A^Sfm@dUuS%2S{59jUlL z$4KUX68bfA5EdfW^lqsz?jVHcNMT;|8SOnL?eSaE&YD~h}tZNv4gI0nkmY_PHo!x zb6T-h%8)82-QB<=$!oGUr0K@STL8xF;-{SrH4A4V)Z~w?lX5kmW`H)Kefr+;xzNbL zz0PWvft*w=eh&Uc#_X+ZaX z;)r&D=4x&U3FF8&W{CGTZwf9#?;#k;;7fG>JF(Eepq>AZv&dK~7(u(HN9YUd3szJ* z0008OI*=h)B$YBjR5QV55UqzG&2556`T)TFPv0H`4U7}f3unpV40b%r(n^8Md@q#D(r5=p-mTK12)9v^1EymxUq0qsZEv2Ns z$z=1&ias?9U_X#GecJRgI;gevQRq@ZOSW#sqZ)OmTaZ=GV5@z^;-9sS-tR!A9_E&L zE2k~Y+QTn)XPHGaM#E^5|HI7!-sFb19?*(#q2Q6LwZLimp6KLOEI(}h@D(z9v}S{Y=%;z z@XqzvlsV`7dLMq(^9);B+2@mH>R9D+Mp* zA##Y$GQd)_1~9_|{{W_7SkP|O1Viujo(;IQkNl&l@%ru8Yq5sj7ay3~r{T!a8;Q$` zX=#)99IKt=ZTU?b_xnS{A0_aK+Nu4N?Y-Tby`{%f@Z#c7si-(AtMI|Vy+RzW?tKv+22=cn|AKq=532t!AX3x$^FvebK;wY3Td6bges@|;T8<8OyL%#@U>tgNw*JY ztQ%P`uXJbx$}UdQjIFvpO}1{X4Ib_d_ZaH0`6`R#>x^gOEgoBNmu$OXOc~nVF}*A` z>}Nv5{*@TXu&C;Myuwkvx6D3MZqfh@t$+jOr%184kaV?g0QcGTBDgVOm++CaCrv>(icV`M|(s zPFKJ4$#pPGpvPLNPb=bNN?42pNBl*e@ip;6i46R#aq$9C5%T-|dTL4jtgE??B!?If zI(MIptirN&%8fKJ27kMd(Gtg+sR^Sf;sko7z7pp#5<~wmPf~r;Is}~OLCe6*!pO){ z&&0OKot>D*-jGeYM>C2R>)^}nyli2EWK>X!#Sd@$erMzb01|#4}l%odfH3qNRW!nTtM9L))SJO*@+7aDO-Qy0C~G+-kIPm#QTesdd-RrIVRW zy;nkLYj8zJC99ii;y#i6ed(^)MCXY~o8B5W6|QDOZj3E4^7V^Z%@e_m;Us;_X(^Wi z0AQ8^{!H{*Kt%{SgDX)~~G8rf>et ztG=ZbX29Be49p%ePM^HrQ3bqr*`p4)I38jufoD>vf)$ssF zUFH>gcb=A)fL%&2{~{oVhD%L5qx6gW8~5DuS4Zi7H~nb?FHP_L^ou};b8S1LCc8dr zj#2WnKlzyCAy}JOqL(E~YBx_ppMZ2&3m1Zkyeb`@3A4~Pnvw?2O)mPBCE)`$q4l=8 z7zEh;ZxTCGX5ezghBaiPs-woismj=USnBxTf(5)vKicLTt_d~%XS=}4pCO5yAwN$> z@$Hi*nZ_IwKm6a2J=W1r*S=lR^H*wovssc}wq8QdO5eni4$ay#usw9i2LJ+Xc0RY+ zDp4Uu89<5UdxCq91&%ll+z}U1I}})Ke!B_eFLL9JQ|61YwlCGN*S321c5PgZdC`9a zh0D~7nYHv@@>!7TKb`-mrs3rv*s(4RqtwXr`xO6nu!jTb0-RS`z+ok{r5uK2dE1(M z4>nD8lON!Js(7>Fx|iIO;x|n_om3q?rdE@!{8*iNT!5~h`BjCG(qj{~@1D|Jb`FCZ zKC%x%9}Pc;lc;DS1B9NT|L|{%JWkIYq5&v8ohlTObuL$=2Zn6Sjm$%SYPLznON?GK zP5T9(UeoIa{C-H!4|e!#Vynw;tN@LeFR7m|E+z%;4NHlZC_aIozDDPD2LYzC(#PXk zSYqK%^My?<*w)^G{$Zkq`z+D&*AArx8O7mdYAhcq3xJkI>@HR}ul<0xkL_LUa9aiL z_%T@rMsWmBl{{Zr+BO*7&)jR`m#Z&})yaEV-B@y=pU^N`2X~l{@#vJcO`kG=GvrYFOk9ww&YV?N zlYYe6D!o#Fr0uWjvZ5z#Zhe_WOcniJvH*aHt}QU+@6}& zb>Ab^zq}dIGoCmmzGO4N3_@tI4lDgIvC=UW8hC)Tu{h*hJa z@VoP-zNqz^e&kaTIi9G{oOFnP^Q5w0o=MH&By4YS_kgkk~m_a>a zo}I!kv3e)F1OomFhPkiwY+a%$A>fPEq8h%8?mvrTfp!9}D88xpZv!a*9=q(@o5Wce zFUs_avmImyI1GgCubKK8m16%6Q zWzLn&Ei**E^D{ew;@xUcFq3D2Y_0^JR{7RSRbuiW)Q<4&5o+y6ZtOy)^N&j1SwSy5 zqiG$9v$5YwAFG)UzQ2FdN=i!#F;;Dt&fJDEg`S^N1?g}YPJDfAxoy<8_)V&Boe%14 zT$A&zS*9h`lhH{1p%w>6k?0yDRx+k}n}$Z_yMtHCJ+ioux;`_B$gdrmK}UM3`r9gY zTg0Sh*r{Ce-|c)`|Dx)ov$;rHdcTVb%59cay@76hBDaxG+xWyRK%BX5#$z!VeeuND zJS*AXC+K)%{N$x>Z~9e4L9< zepoxRDtn5Hv;2VE^(5pa&GB)&Cm4%;s4{+&s0O8%3_ zSc{MlJP2sxwsthkz2p0(jxSN9VLYbNtDSgrU~9g{JS^FV(t3mJAxMKb6Jf zAFbX#V$eOe{~5$wJ?=_h>>#3L?>jrvu4ivjSpTMydC(kIT!m44+V0S2RRj-eJqDe~ z`b|OkSmuwCb!;sB$4eP%b*B`w68)vPnA@W}WJGR=+MDyYjn#VS6D=)$rF%rDrBm2< zANtWG#pU)Sf5`=&4u%Ew)sVVbeyolFy1~C9|21PKq@uzfCz^D*WS1&kB6;)(2QxIF zrS>j&y=DQw`=_up_22kO8Ce+87>c$xNx8LFXXlDy9G^) zAkOJ8nzX}Q@=kEaFSYbmpN6wPi9NZ?YBHIC-#oAXtMWCW;%9r6dcJmYN|{z~z@p)c zTHX#3v(1|yEXi0QFS=jaH23LDq6fB}D7mGro!RwuRf$YO%Ps`n*ul}mfb1tVh8pqFLv!Xh*QzCc?V*-(I6LRRkG%GVx>L@|lOu~4ZT zbqz_SuKYjk$So~R-Ff;!k#aR=n03H3Bh^y8{C5S}wsi5OS#B4uryYJ#0vRq_cVHlm z%duw^y5^U{F3LOFL7*{XTY3viCBL`mFSS(@E*n++w<~!y-W~-36^BOK3HLy^D?hc` zeNHgMomE}t6J$JI4^s$xMHkXO&7u^lfU{`)S?Xa?D%4v3Z_eoSy$%fdxsjcBq*Nr; z<9_h@p(4yIZK~HL;1yb(87A+77CriE#g8)(rc02g!A_p7dAoD=2a<*H2H0?cA&oYv z_~3WvUuziy$5pNCLYu@dYhMrBS`<_fkO^dTR58-_MN^l?vTF`Ep{P!E#2e9+U~ zed6;&#MY7hGeYKb%do|!+dE1(@=r-xkA-$b7L4_vHKB8nZNGg;ly?pZ^mq{{S2nm} zF=u#_Uahga@g@076|#6U)C(U#*aDdWf_R--VRVLSDEV*w&=iEHR&!5Gx5i~E;dF8h zZWrYm&;<?YuJV(>8z{>i+cd07|UvB#O2eVmG& z{-o7rfQ@WaMBzC-;@rkl4@yUyqei$<8A#JlXIF49=&c&y%)z4mN)%nyBGGNk`Lq!3 zh%Kd(#}0|_NVr3j{LlBwsZEVi{flJ)fFt#{FhqN9&-gP)R;}C1tERyM?(;1w3Y;Sr z%2HB>QTuIyBNY!B7^*ujA-ec#Y`FqMjw0}G3D=k8VYX6IqpbAxSDKMobt|8EqbkdB zg6}RXV)1uI$ZOoaojo2oA3|%agX=OX%v8e|VGvOWL0cl1|n78i%!$;NfadiQR7 z3rK}n$Zhrg+Gsb~qT{_?bM|%co_i_(K?>c1THF`xUE&Xhg27G_Y6=Wl%NReE9AfeM@kMBFE}BYS)W*FP3q#q1>g4{`50wN;6S@&UFnh7UL zRWOHHNe{PCM_3QY+}rw)0uwV6YTI(s-dBvrj#5+iyrS;4)`3Q}VOGXeyo&!Ok*{w$K9-_?xC(We286%uw zE!+Xi(YjxsM%~Ft#T2Fv0a^XlLxtbJ!aC)Hkjsr$s(tHrXMl?I*gI{~SfPjs^{2r^Eb4OU)^X}jBy zkqGtUGaB@khH7f%yDB<_9qp&l;ILPb!wuusZP|3-JUYx66X!TEni6xO%gNSWlq!>X zDjj3nxlLAYESI+~33dUdJg|^?0?!rprvlh0pp8+`yicV|KNy2!-;Gi&UCtkn7u1_H z=C|?c^BD(}{3?$Rh5d|x6a}rrbqwEX&J_*Yk9hG)A-@YBFfif3LS&RF2s*;)i5z;< z_?RR3SMCLFGlE&OR%k7D>Y@oP$z1w;1fDjj0t{DpNYTurcRiii+uxfe5I=aOYaf{r za%wE%k$OK%>#=seGRmw~01xnRS|ktCgL6S|{`@v{*bZp9@B>+@%gA<(eugj>oTA$O z;|zLVq}3S#dj#@0_@)&Q6U|GZW~dfg-&O& z5xTWva`yl>m%lzEsomSKp8`%*U9Ut_=x)j_R?ygm&DH>TAr>_8#*6KJr5d{mPM^l| zkxZFjtZ3e`w|17-)I>OcdfT5qoF`m!3VN`Moa>VU%Wk;B=gSKZzJ1 zqIw8)&n7;E`Bgk7Tng|{)AtHaOtPRE3)}G11pz^WUyi`s0DxXha0%|z2t5GYX13<; z|6kf+W&MD|JyEY4uGIO9OOP}*b3ZXHQJKH9|BH>(YwN^lTZ)IrRq5CPw+-d_PUZEv z=6_T(UP`_=b^2DAp)iVBFJNAR_qaCh`3cHGU59s6w5$io)=O^3!&2iR;QW=D)o5U2 zN1snET=A!Vj1Klenp;0msD=f z9F*wJmcqZyOk4A8rIua%Rq14n-UAp$R<@L#Tn)=Pu{Jnry7c$Uln$C5c4{;v;E

H=#6bk;zA_AY-VzYnC*bd&xa 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 diff --git a/docs/source/img/ipykernel_missing.png b/docs/source/img/ipykernel_missing.png deleted file mode 100644 index 763814ab72b356ba9a9b633901c2a7d044a73a08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6908 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 diff --git a/docs/source/img/julia_jupyter_console_selected.png b/docs/source/img/julia_jupyter_console_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..163714b1b37a7b6ab3a36be42dd8dcfd114725ac GIT binary patch literal 37118 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 literal 0 HcmV?d00001 diff --git a/docs/source/img/julia_kernel_specification_creator.png b/docs/source/img/julia_kernel_specification_creator.png new file mode 100644 index 0000000000000000000000000000000000000000..46f3c095ce34cd1659f52624f6688bdf8ecff51a GIT binary patch literal 14027 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 literal 0 HcmV?d00001 diff --git a/docs/source/img/kernel_specs_missing.png b/docs/source/img/kernel_specs_missing.png deleted file mode 100644 index ef823a53f7236757b2aff46aa343681be54434da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8612 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 literal 0 HcmV?d00001 diff --git a/docs/source/img/python_kernel_specification_creator.png b/docs/source/img/python_kernel_specification_creator.png new file mode 100644 index 0000000000000000000000000000000000000000..914e4b5f2ea37a599927a648e5109a7cba12c518 GIT binary patch literal 15696 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 F{|CwEEEfO( literal 0 HcmV?d00001 diff --git a/docs/source/img/settings_tools_default.png b/docs/source/img/settings_tools_default.png new file mode 100644 index 0000000000000000000000000000000000000000..c87bf15fb6474bc50f1bc4829ff7c6a94f7aa52d GIT binary patch literal 35867 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 oJ*w&`;U=W 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

4ZhiF)2p7+yG#&<>`jiHT*bM&tV}A$?q$ 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 literal 0 HcmV?d00001 diff --git a/docs/source/index.rst b/docs/source/index.rst index f70720971..ef3611d96 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -12,9 +12,9 @@ Welcome to Spine Toolbox's User Guide! computation tasks, such as energy system models. If you are new to Spine Toolbox, :ref:`Getting Started` section is a good place to start. If you want to run -`SpineOpt.jl `_ using Spine Toolbox, :ref:`How to set up SpineOpt.jl` +`SpineOpt.jl `_ using Spine Toolbox, :ref:`How to Set up SpineOpt.jl` provides the step-by-step instructions on how to get started. For information on how to set up Python, Julia, and -Gams for Spine Toolbox, see :ref:`Setting up External Tools`. Please see :ref:`Settings` chapter for information +Gams for Spine Toolbox, see :ref:`Setting up Consoles and External Tools`. Please see :ref:`Settings` chapter for information on user customizable Spine Toolbox settings. If you need help in understanding the terms we use throughout the app and this User Guide, please check the :ref:`Terminology` section. If you want to contribute to this project, please see the :ref:`Contribution Guide`. The last section contains the complete code reference of Spine Toolbox. @@ -23,6 +23,7 @@ please see the :ref:`Contribution Guide`. The last section contains the complete :maxdepth: 1 :caption: Contents: + whats_new getting_started how_to_run_spineopt setting_up @@ -31,9 +32,8 @@ please see the :ref:`Contribution Guide`. The last section contains the complete links tool_specification_editor executing_projects - execution_modes settings - Spine database editor + Spine Database Editor plotting parameter_value_editor metadata_description diff --git a/docs/source/metadata_description.rst b/docs/source/metadata_description.rst index 9358fc89f..9f3ddae73 100644 --- a/docs/source/metadata_description.rst +++ b/docs/source/metadata_description.rst @@ -1,7 +1,7 @@ .. _Metadata description: ************************** -Spine metadata description +Spine Metadata Description ************************** This is the metadata description for Spine, edited from ``_. diff --git a/docs/source/parameter_value_editor.rst b/docs/source/parameter_value_editor.rst index 3cafa74f0..89e1f9eae 100644 --- a/docs/source/parameter_value_editor.rst +++ b/docs/source/parameter_value_editor.rst @@ -1,8 +1,7 @@ .. Parameter value editor - Created: 15.8.2019 ********************** -Parameter value editor +Parameter Value Editor ********************** Parameter value editor is used to edit object and relationship parameter values diff --git a/docs/source/plotting.rst b/docs/source/plotting.rst index 71272f3d0..3dc587dd1 100644 --- a/docs/source/plotting.rst +++ b/docs/source/plotting.rst @@ -1,5 +1,4 @@ .. Plotting - Created: 15.8.2019 Plotting ======== diff --git a/docs/source/project_item_development.rst b/docs/source/project_item_development.rst index dcd1029ed..f4dc77a18 100644 --- a/docs/source/project_item_development.rst +++ b/docs/source/project_item_development.rst @@ -1,6 +1,6 @@ .. _Project item development: -Project item development +Project Item Development ======================== This document discusses the basics of :ref:`project item` development: diff --git a/docs/source/setting_up.rst b/docs/source/setting_up.rst index 4b066b1d3..fc77b0ec6 100644 --- a/docs/source/setting_up.rst +++ b/docs/source/setting_up.rst @@ -1,5 +1,4 @@ -.. Setting up External Tools - Created 2.4.2020 +.. Setting up Consoles and External Tools .. |browse| image:: ../../spinetoolbox/ui/resources/menu_icons/folder-open-solid.svg :width: 16 @@ -8,101 +7,203 @@ .. |stop| image:: ../../spinetoolbox/ui/resources/menu_icons/stop-circle-regular.svg :width: 16 -.. _Setting up External Tools: +.. _Setting up Consoles and External Tools: -************************* -Setting up External Tools -************************* +************************************** +Setting up Consoles and External Tools +************************************** + +This section describes the options for executing different Python, Julia, Gams, and Executable Tools and how to set +them up. To get started with **SpineOpt.jl**, see :ref:`How to Set up SpineOpt.jl`. See also +:ref:`Executing Projects`. -This section describes the default **Python** used by Spine Toolbox and how to change that. Here you can also find the -instructions on how to set up **Julia** and **Gams** for executing Julia and Gams Tools. To get started with -**SpineOpt.jl**, see :ref:`How to set up SpineOpt.jl`. See also :ref:`Executing Projects` and :ref:`Execution Modes`. .. contents:: :local: +Python and Julia Tools can be executed either in an embedded *Basic Console* or in a *Jupyter Console*. GAMS Tools +are executed in a sub-process. Executable Tools (external programs) are executed in a shell or by running the +executable file straight. You can also make a Tool that executes a shell command by creating an *Executable* Tool +Spec in **Tool Specification Editor**, entering the shell command to the *Command* line edit and then selecting the +Shell for this Tool. + +Basic Consoles +-------------- +Basic Console appears to the **Console** dock widget in the main window when you execute (|play|) a project +containing either a Python or a Julia Tool with Basic Console selected. + Python ****** -No set up required! Python Tools are executed using the **default Python**, which **depends on how you installed Spine Toolbox.** The -installation options are: - -1. Using a single-file **installation bundle** (e.g. *spine-toolbox-0.6.0-final.2-x64.exe* or newer). You can - find this file and all releases from - `Spine Toolbox releases `_. - The installation bundles are only available for Windows at the moment. -2. Cloning Spine Toolbox Git repository from ``_. Checkout branch - **release-0.6** or **master** and run `pip install -r requirements.txt` in the repo root. - -.. tip:: You can always see the current Python configured for Spine Toolbox from the `Tools` page in - `File->Settings...`. - -Default Python for Spine Toolbox installed using an installation bundle ------------------------------------------------------------------------ -The default Python is the **Python in your PATH** environment variable. **If Python is not in your PATH**, the -default Python is an 'embedded' Python that is shipped with the installation bundle. The 'embedded' Python is -located in *\\tools\\python.exe*, where ** is *C:\\Program Files\\Spine Toolbox* if you -installed Spine Toolbox to the default directory for all users. - -.. important:: If you want access to `spinedb_api` package from Tools and Consoles in Spine Toolbox, bear in mind - that the version of `spinedb_api` must be compatible with the version of Spine Toolbox you are using! Spine - Toolbox v0.6.0 is shipped with `spinedb_api` v0.12.1. If you want to use the Python in your PATH, **you must install - the correct version of spinedb_api for this Python manually**. The correct version in this case is in the - `release-0.12` branch of `spinedb_api` git repo - (https://github.com/spine-tools/Spine-Database-API/tree/release-0.12). - **To avoid this additional step, it is recommended** that you use the 'embedded' Python interpreter that is shipped - with the application. You can set up this Python for Spine Toolbox by opening the `Tools` page of - `File->Settings...` and replacing the path of the Python Interpreter with *\\tools\\python.exe*. - **The 'embedded' Python interpreter has access to `spinedb_api` that is shipped with the application.** - -Here are the recommended settings - -.. image:: img/settings_tools_python_installed_version.png +Executing a Python Tool in the Basic Console requires no set up. Simply create a *Python* Tool Spec in +**Tool Specification Editor** and select the Basic Console radio button. The default Python interpreter used +in launching the Console is the same Python that was used in launching Spine Toolbox. You can also select another +Python by changing the Python interpreter line edit. Remember to save the new Tool Spec when closing the **Tool +Spec. Editor**. Then drag the Python Tool Spec into the **Design View**, and press |play| to execute it. + +.. note:: The Python settings on the *Tools* page in **File -> Settings** are the *default* settings for new Python + Tool Specs. You can select a different Python executable for each Python Tool Spec separately using the + **Tool Specification Editor**. + +Julia +***** +To execute Julia Tools in the Basic Console, first install Julia (v1.6 or later) +`from here `_ and add `/bin` to your PATH environment variable +(if not done automatically by the installer). Then go to the *Tools* page in **File -> Settings** and make sure that +the Basic Console radio button is selected in the Julia group. If Julia is in your PATH, the Julia executable line +edit should show the path as (grey) placeholder text. If you want to use another Julia on your system, you can change +the path in the line edit. You can also set a Julia Project below the Julia executable line edit. + +.. note:: The Julia settings are *global* application settings. All Julia Tools are executed with the settings + selected on the *Tools* page in **File -> Settings**. In upcoming versions, the Julia settings will be consistent + with the Python settings, in a way that you can select a specific Julia executable and Julia project for each + Julia Tool Spec separately. + +Jupyter Consoles +---------------- +Jupyter Console appears to the **Console** dock widget in the main window when you execute (|play|) a project +containing either a Python or a Julia Tool with the *Jupyter Console* selected. The Jupyter Console +requires a Jupyter kernel to be installed on your system. Kernels are programming language specific processes +that run independently and interact with the Jupyter Applications and their user interfaces. + +Python +****** +Select *Jupyter Console* radio button in **File -> Settings**. You also need to select the Python kernel you +wish to use from the *Select Python kernel...* combo box. If this list is empty, you need to install the kernel specs +on your system. You can either do this manually or click the **Make Python Kernel** button. Clicking the button opens +a **Python Kernel Specification Creator** window, that first installs the **ipykernel** package (if missing) for +the Python that is currently selected in the Python interpreter line edit (the kernel specs will be created +for `C:/Python39/python.exe` in the picture below). You can make kernel specs for other Pythons and virtual +environments (venv) by changing the Python interpreter line edit path to point to another Python. Please see +specific instructions for creating kernel specs for Conda environments below. + +.. image:: img/python_jupyter_console_selected.png :align: center -Default Python for Spine Toolbox installed using Git ----------------------------------------------------- -The default Python is the **Python that was used in launching the application** (i.e. *sys.executable*). -When you start the app for the first time (or if you clear the path), the path to the default Python is -shown as placeholder (gray) text in the line edit like this: +Once the **ipykernel** package is installed, the wizard runs the **ipykernel** install command, which creates the +kernel specs directory on your system. You can quickly open the kernel spec directory from the +**Select Python Kernel...** combo box's context-menu (mouse right-click menu). Once the process finishes, +click Close, and the newly created kernel spec (*python39* in this case) should be selected automatically. +Click *Ok* to close the **Settings** widget and to save your selections. -.. image:: img/settings_tools_default_python_git_version.png +.. image:: img/python_kernel_specification_creator.png :align: center -The default Python has access to the `spinedb_api` version that was installed with the application (the one in -in \\lib\\site-packages\\spinedb_api). +If something went wrong, or if you want to remake the kernel specs, you can remove the kernel spec directory from +your system, try the **Make Python Kernel** button again, or install the kernel specs manually. + +If you want to install the Python kernel specs manually, these are the commands that you need to run. + +To install **ipykernel** and it's dependencies, run:: + + python -m pip install ipykernel -Changing the default Python ---------------------------- -If you want to use another Python than the default, you can use existing Pythons in your system or you can -download additional Pythons from ``_. You can change the default Python -on the `Tools` page of `File->Settings...` by clicking the |browse| button and selecting the Python interpreter -(`python.exe` on Windows) you want. You can use **any Python in your system**. +And to install the kernel specs run:: + + python -m ipykernel install --user --name python39 --display-name python39_spinetoolbox + +Make sure to use the ``--user`` argument to make sure that the kernel specs are discoverable by Spine Toolbox. + +.. note:: + Clicking **Make Python Kernel** button when the kernel specs have already been installed, does NOT open the + **Python Kernel Specification Creator**, but simply selects the Python kernel automatically. .. note:: Executing Python Tools using the Jupyter Console supports Python versions from 2.7 all the way to newest one. - Executing Python Tools **without** using the Jupyter Console supports even earlier Pythons than 2.7. - You can start Spine Toolbox only with Python 3.7 or with 3.8, but you can set up a Jupyter Console in - Spine Toolbox that uses e.g. Python 2.7. This means, that if you still have some old Python 2.7 scripts - lying around, you can incorporate those into a Spine Toolbox project workflow and execute them without - modifications. + This means, that if you still have some old Python 2.7 scripts lying around, you can incorporate those into + a Spine Toolbox project workflow and execute them without modifications. .. important:: If you want to have access to `spinedb_api`, you need to install it manually for the Python you select here. Julia ***** -Executing Julia Tools in Spine Toolbox requires that Julia is installed on your system. Julia downloads are -available from ``_. You can see the current Julia on the `Tools` page in -`File->Settings...`. The **default Julia is the Julia in your PATH** environment variable. Setting some other -Julia to the line edit overrides the Julia in PATH. If you want to use a specific **Julia project environment** -(the place for Project.toml and Manifest.toml), you can set the path to the environment folder to the line -edit just below the Julia executable line edit (the one that says *Using Julia default project* when empty). +To use the Jupyter Console with Julia Tools, go to the *Tools* page in **File -> Settings** and select the +Jupyter Console radio button like in the picture below. + +.. image:: img/julia_jupyter_console_selected.png + :align: center + +Like with Python, you need to select an existing Julia kernel for the Julia Jupyter Console, or create one +either manually, or by clicking the **Make Julia Kernel** button. + +.. image:: img/julia_kernel_specification_creator.png + :align: center + +Clicking the button opens **Julia Kernel Specification Creator** window, that first installs the **IJulia** package +(if missing) for the Julia and Julia project that are currently selected in the Julia executable and Julia Project +line edits (the kernel specs will be created for the default project of `C:/Julia-1.9.0/bin/julia.exe` in the +picture above). + +If something went wrong, or if you want to remake the kernel specs, you can remove the kernel spec directory from +your system, try the **Make Julia Kernel** button again, or install the kernel specs manually. + +If you want to install the Julia kernel specs manually, these are the commands that you need to run. + +To install **IJulia** and it's dependencies, open Julia REPL with the project you want and run:: -If you are trying to execute Julia Tools and you see an error message in Event Log complaining about not finding -Julia, you either don't have a Julia installation in your PATH, or the Julia path in Settings is invalid. + using Pkg + Pkg.add("IJulia") + +Rebuild IJulia:: + + Pkg.build("IJulia") + +And to install the kernel specs run:: + + using IJulia + installkernel("julia", --project="my_project") + +.. note:: + Clicking **Make Julia Kernel** button when the kernel specs have already been installed, does NOT open the + **Julia Kernel Specification Creator**, but simply selects a Julia kernel that matches the selected Julia + executable and Julia Project. If a kernel spec matching the Julia executable is found but the Julia project is + different, a warning window appears, saying that Julia kernel spec may be overwritten if you continue. + +Conda +***** +You also have the option of running Python Tools in a Conda environment. All you need to do is the following. + +1. Open Anaconda Prompt and make a new Conda environment:: + + conda create -n test python=3.10 + +2. Activate the environment:: + + conda activate test + +3. Install **ipykernel**:: + + pip install ipykernel + +4. Back in Spine Toolbox, add path to Conda executable on the *Tools* page in **File -> Settings**. + +That's it! Now, in Spine Toolbox main window, open the **Consoles -> Start Jupyter Console** menu, wait a second, +and the new kernel should appear in the list. In this case, the new kernel name is *conda-env-.conda-test-py*. +This autogenerated name will most likely change to something more readable in the future. You can use Conda Python +kernels just like regular Python kernels, i.e. select one of them as the default kernel in the +**File -> Settings** widget or select them for individual Python Tool Specs in **Tool Specification Editor** directly. + +Detached Consoles +***************** +You can open 'detached' Jupyter Consoles from the main window menu **Consoles -> Start Jupyter Console**. The menu +is populated dynamically with every Jupyter kernel that Spine Toolbox is able to find on your system. 'Detached' +here means that the Consoles are not bound to any Tool. These Consoles are mostly useful e.g. for +checking that the kernel has access to the correct packages, debugging, small coding, testing, etc. These may be +especially useful for checking that everything works before running a full workflow that may take hours to finish. + +Officially, Spine Toolbox only supports Python and Julia Jupyter kernels but it's possible that other kernels can +be accessed in a Detached Console as well. For example, if you install a javascript kernel on your system, you can +open a Detached Console for it, but this does not mean that Spine Toolbox projects should support Javascript. However, +if there's interest and legitimate use cases for other kernels, we may build support for them in future releases. + +.. image:: img/start_jupyter_console_menu_listing.png + :align: center + +If interested, you can `read more on Jupyter kernels `_ . +There you can also find a `list of available kernels `_. GAMS -**** +---- Executing Gams Tools or needing to use the GDX file format requires an installation of Gams on your system. You can download Gams from ``_. @@ -110,9 +211,26 @@ You can download Gams from ``_. .. important:: The bitness (32 or 64bit) of Gams has to match the bitness of the Python interpreter. -The default Gams is the Gams defined under ``gams.location`` in Windows registry or in your PATH environment variable. -You can see the one that is currently in use from the `Tools` page in `File->Settings...`. -The placeholder text shows the default Gams if found. -You can also override the default Gams by setting some other gams.exe path to the line edit -(e.g. `C:\\GAMS\\win64\\28.2\\gams.exe`). +The default Gams is the Gams defined under ``gams.location`` in Windows registry or in your PATH environment +variable. You can see the one that is currently in use from the *Tools* page in **File -> Settings**. The +placeholder text shows the default Gams if found. You can also override the default Gams by setting some other +gams executable path to the line edit. + +Executable +---------- +Executable Tool Spec types can be used to execute virtually any program as part of a Spine Toolbox workflow. They +also provide the possibility to run Shell commands as part the workflow. To run an executable with a shell you +need to select a shell out of the three available options that is appropriate for your operating system. +Then you can write a command that runs the executable with the arguments that it needs into the *Command* +line edit just like you would on a normal shell. +To run an executable file without a shell you can either select the executable file as the main program +file of the Tool and write the possible arguments into *Command line arguments* or select *no shell* and +write the filepath of the executable file followed by it's arguments into the *Command* textbox. +Either way the file is executed independent of a shell and with the provided arguments. + +To run a Shell command, just type the command into the *command* line edit and select the appropriate Shell from the +list. Picture below depicts an Executable Tool Spec that runs *dir* in in cmd.exe. + +.. image:: img/executable_tool_spec_dir_runner.png + :align: center diff --git a/docs/source/settings.rst b/docs/source/settings.rst index c78eeaa78..678ee256f 100644 --- a/docs/source/settings.rst +++ b/docs/source/settings.rst @@ -1,5 +1,7 @@ .. Settings form documentation - Created 14.1.2019 + +.. |open-folder| image:: ../../spinetoolbox/ui/resources/menu_icons/folder-open-solid.svg + :width: 16 .. _Settings: @@ -7,16 +9,17 @@ Settings ******** -You can open Spine Toolbox settings from the main window menu `File->Settings...`, or by +You can open Spine Toolbox settings from the main window menu **File -> Settings...**, or by pressing **Ctrl+,**. Settings are categorized into five tabs; *General*, *Tools*, *Db editor*, *Spec. editors* and *Engine*. -In addition to application settings, each Project item has user adjustable -properties (See :ref:`Project Items`) +In addition to application settings, each project item has user adjustable +properties (See :ref:`Project Items`). See also :ref:`Setting up Consoles and External Tools` +for more information on how to set up Consoles and external Tools. .. contents:: :local: -General settings +General Settings ---------------- .. image:: img/settings_general.png @@ -32,7 +35,7 @@ Settings in the **Main** group: - **Delete data when project item is removed from project** Check this box to delete project item's data when a project item is removed from project. This means that the *project item directory* and its contents will be deleted from your hard drive. You can find the project item directories from the - ``/.spinetoolbox/items/`` directory, where ```` is your current project directory. + `/.spinetoolbox/items/` directory, where `` is your current project directory. - **Open previous project at startup** If checked, application opens the project at startup that was open the last time the application was shut down. If left unchecked, application starts without a @@ -45,7 +48,7 @@ Settings in the **Main** group: when the application exits. - **Work directory** Directory where processing the Tool takes place. Default place (if left empty) is - the ``/work`` subdirectory of Spine Toolbox install directory. You can change this directory. + the `/work` subdirectory of Spine Toolbox install directory. You can change this directory. Make sure to clean up the directory every now and then. Settings in the **UI** group: @@ -55,44 +58,109 @@ Settings in the **UI** group: - **Color properties widgets** Check this box to make the background of Project item properties more colorful. -- **Curved links** Controls the look of the arrows on Design View. +- **Curved links** Controls the look of the arrows on **Design View**. - **Drag to draw links** When checked, the mouse button needs to be pressed while drawing links between project items. If unchecked, single clicks at link source and destination items suffices. - **Prevent items from overlapping** When checked, other project items can be pushed away when - moving an item around the Design view. If left unchecked, items can be piled on top of each other. + moving an item around the **Design view**. If left unchecked, items can be piled on top of each other. - **Rounded items** Check this box to round the corners of otherwise rectangular project items. -- **Show date and time in Event Log messages** If checked, every Event Log message is prepended with +- **Show date and time in Event Log messages** If checked, every **Event Log** message is prepended with a date and time 'tag'. -- **Smooth zoom** Controls the way zooming (by using the mouse wheel) behaves in Design View and in - Spine database editor. Controls if the zoom in/out is continuous or discrete. On older computers, +- **Smooth zoom** Controls the way zooming (by using the mouse wheel) behaves in **Design View** and in + **Spine DB Editor**. Controls if the zoom in/out is continuous or discrete. On older computers, smooth zoom is not recommended because it may be slower. -- **Background** Has some pattern options for the background of the Design view. +- **Background** Has some pattern options for the background of the **Design View**. Clicking on the square next to 'Color' let's you choose the pattern's color. -- **Link flash speed** This slider controls the speed of the link animation on Design - View when execution is ongoing. +- **Link flash speed** This slider controls the speed of the link animation on **Design + View** when execution is ongoing. -Tools settings +Tools Settings -------------- -The Tool settings tab contains settings for external tools. -See :ref:`Setting up External Tools` for more information and examples. +The Tools tab contains settings for external tools. + +.. image:: img/settings_tools_default.png + :align: center + +Settings in the **GAMS** group: + +- **GAMS executable** Set the path to GAMS executable you want to use when executing GAMS tools. If you have GAMS in + your PATH environment variable, it will be automatically used. You can also choose another GAMS by clicking the + |open-folder| button. + +Settings in the **Julia** group: + +Choose the settings on how Julia Tools are executed. + +- **Basic Console** When selected, Julia Tools will be executed in a custom interactive Julia REPL. + +- **Julia executable** Set the path to a Julia Executable used in launching the Basic Console. If Julia is in PATH + this will be autofilled, but you can also choose another Julia executable. + +- **Julia project** Set the Julia project you want to activate in the Basic Console. + +- **Jupyter Console** Choosing this option runs Julia Tools in a custom Jupyter QtConsole embedded into Spine Toolbox. + +- **Select Julia kernel... drop-dowm menu** Select the kernel you want to launch in Jupyter Console. + +- **Make Julia Kernel** clicking this button makes a new kernel based on the selected *Julia executable*, and *Julia + project*. The progress of the operation is shown in another dialog. Installing a Julia kernel requires the **IJulia** + package which will be installed to the selected *Julia project*. After **IJulia** has been installed, the kernel is + installed. This process can take a couple of minutes to finish. + +- **Install Julia** Installs the latest Julia on your system using the **jill** package. + +- **Add/Update SpineOpt** Installs the latest compatible **SpineOpt** to the selected Julia project. If the selected + *Julia project* already has SpineOpt, it is upgraded if there's a new version available. + +.. note:: These Julia settings are *global* application settings. All Julia Tools are executed with the settings + selected here. + +Settings in the **Python** group: + +Choose the settings on how Python Tools are executed. + +- **Basic Console** When selected, Python Tools will be executed in a custom interactive Python REPL. + +- **Python executable** Set the path to a Python Executable used in launching the Basic Console. The default option + (if the line edit is blank) is the Python executable that was used in launching Spine Toolbox. + +- **Jupyter Console** Choosing this option runs Python Tools in a custom Jupyter QtConsole embedded into Spine + Toolbox. + +- **Select Python kernel... drop-dowm menu** Select the kernel you want to launch in Jupyter Console. + +- **Make Python Kernel** clicking this button makes a new kernel based on the selected *Python executable*. The + progress of the operation is shown in another dialog. Installing a Python kernel (actually IPython kernel) + requires the **ipykernel** package which will be installed to the selected *Python executables*. After + **ipykernel** has been installed, the kernel is installed. This process can take a couple of minutes to finish. + +.. note:: These Python settings are just the default settings *for new Python Tool Specs*. You can select a + specific Python kernel for each Python Tool Spec separately using the **Tool Specification Editor**. + +Settings in the **Conda** group: + +- **Miniconda executable** If you want to run Python Tools in a Conda environment, you can set the path + to your Conda executable here. + +See :ref:`Setting up Consoles and External Tools` for more information and examples. -Database editor settings ------------------------- +Db editor Settings +------------------ .. image:: img/settings_db_editor.png :align: center -This tab contains settings for the Database editor. -The same settings can be accessed directly from the Database editor itself. +This tab contains settings for the Spine Database editor. The same settings can be accessed directly +from the Database editor itself. - **Commit session before closing** This checkbox controls what happens when you close a database editor which has uncommitted changes. When this is unchecked, all changes are discarded without @@ -126,8 +194,8 @@ The same settings can be accessed directly from the Database editor itself. that are open on the same table into a single graph if they contains common object nodes. If unchecked, a separate graph will be drawn for each database. -Specification editor settings ------------------------------ +Spec. editor Settings +--------------------- .. image:: img/settings_specification_editors.png :align: center diff --git a/docs/source/spine_db_editor/index.rst b/docs/source/spine_db_editor/index.rst index 6672cd533..fdad1e7f2 100644 --- a/docs/source/spine_db_editor/index.rst +++ b/docs/source/spine_db_editor/index.rst @@ -1,7 +1,7 @@ .. _Spine db editor: -Welcome to Spine database editor's User Guide! +Welcome to Spine Database Editor's User Guide! ============================================== Spine database editor is a dedicated component of Spine Toolbox, diff --git a/docs/source/tool_specification_editor.rst b/docs/source/tool_specification_editor.rst index 0e9a614c1..128c2d370 100644 --- a/docs/source/tool_specification_editor.rst +++ b/docs/source/tool_specification_editor.rst @@ -1,5 +1,4 @@ .. Tool specification editor documentation - Created 15.1.2019 .. |folder_open| image:: ../../spinetoolbox/ui/resources/menu_icons/folder-open-regular.svg :width: 16 @@ -15,7 +14,7 @@ .. _Tool specification editor: ************************* -Tool specification editor +Tool Specification Editor ************************* This section describes how to make a new Tool specification and how to edit existing Tool specifications. @@ -89,8 +88,8 @@ The Tool specification file is a text file in JSON format and has an extension * You can change the location by pressing [change]. Also, you need to save your project for the specification to stick. -.. tip:: Only *name*, *type*, and *main program file* fields are required to make a Tool specification. The other - fields are optional. +.. tip:: Only *name*, *type*, and either *main program file* or *command* fields are required to make a Tool + specification. The other fields are optional. Here is a minimal Tool specification for a Julia script *script.jl* diff --git a/docs/source/ui_guidelines.rst b/docs/source/ui_guidelines.rst index 9b871cd86..7aff3e2a7 100644 --- a/docs/source/ui_guidelines.rst +++ b/docs/source/ui_guidelines.rst @@ -1,6 +1,6 @@ .. _UI guidelines: -UI guidelines +UI Guidelines ============= Keyboard shortcuts diff --git a/docs/source/unit_testing_guidelines.rst b/docs/source/unit_testing_guidelines.rst index 2ac3cb654..56441e966 100644 --- a/docs/source/unit_testing_guidelines.rst +++ b/docs/source/unit_testing_guidelines.rst @@ -1,6 +1,6 @@ .. _Unit testing guidelines: -Unit testing guidelines +Unit Testing Guidelines ======================= Test modules, directories diff --git a/docs/source/whats_new.rst b/docs/source/whats_new.rst new file mode 100644 index 000000000..e80bb58e4 --- /dev/null +++ b/docs/source/whats_new.rst @@ -0,0 +1,10 @@ +.. _Whats new: + +*********** +What's New? +*********** + +Here's the Changelog for Spine Toolbox. + +.. include:: ../../CHANGELOG.md + :literal: diff --git a/spinetoolbox/fetch_parent.py b/spinetoolbox/fetch_parent.py index 19fab9253..e7641f107 100644 --- a/spinetoolbox/fetch_parent.py +++ b/spinetoolbox/fetch_parent.py @@ -22,7 +22,7 @@ class FetchParent(QObject): Attrs: fetch_token (int or None) will_have_children (bool or None): Whether this parent will have children if fetched. - None means we don't know yet. Set to a boolean value whenever we find out. + None means we don't know yet. Set to a boolean value whenever we find out. """ _changes_pending = Signal() @@ -31,9 +31,9 @@ def __init__(self, owner=None, chunk_size=1000): """ Args: owner (object): somebody who owns this FetchParent. If it's a QObject instance, then this FetchParent - becomes obsolete whenever the owner is destroyed + becomes obsolete whenever the owner is destroyed chunk_size (int or None): the number of items this parent should be happy with fetching at a time. - If None, then no limit is imposed and the parent should fetch the entire contents of the DB. + If None, then no limit is imposed and the parent should fetch the entire contents of the DB. """ super().__init__() self._timer = QTimer() diff --git a/spinetoolbox/mvcmodels/map_model.py b/spinetoolbox/mvcmodels/map_model.py index 3983d586e..04437bc78 100644 --- a/spinetoolbox/mvcmodels/map_model.py +++ b/spinetoolbox/mvcmodels/map_model.py @@ -564,7 +564,7 @@ def _apply_index_names(map_value, index_names): def _numpy_string_to_python_strings(rows): - """Converts instances of numpy.str_ to regular Python strings. + """Converts instances of ``numpy.str_`` to regular Python strings. Args: rows (list of list): table rows diff --git a/spinetoolbox/spine_db_editor/mvcmodels/alternative_model.py b/spinetoolbox/spine_db_editor/mvcmodels/alternative_model.py index 7b2da2d57..7e5f2495e 100644 --- a/spinetoolbox/spine_db_editor/mvcmodels/alternative_model.py +++ b/spinetoolbox/spine_db_editor/mvcmodels/alternative_model.py @@ -63,7 +63,7 @@ def paste_alternative_mime_data(self, mime_data, database_item): Args: mime_data (QMimeData): mime data - database_item (DBItem): target database item + database_item (alternative_item.DBItem): target database item """ alternative_data = pickle.loads(mime_data.data(mime_types.ALTERNATIVE_DATA)) names_to_descriptions = {}