Installation
=============
IMSI and its dependencies can be installed from git or PyPI into a Python 3 virtual environment.
.. note::
ECCC users on U2 can access the group environment by referencing the CanESM docs.
Creating a virtual environment
-----------------------------------------------
You can create a virtual environment using `UV `_ (recommended):
.. code-block:: bash
>> uv venv imsi-venv --python=3.12 # Python 3.12+ is supported
>> source activate imsi-venv
Or, to create a virtual environment with standard python tooling (use `venv `_):
.. code-block:: bash
>> python3 -m venv imsi-venv
>> source imsi-venv/bin/activate
Installing imsi into your environment from PyPI
----------------------------------------------------------------
.. code-block:: bash
# install IMSI directly from PyPI
>> uv pip install cimsi
Or you can use standard python tooling with pip:
.. code-block:: bash
>> pip install cimsi
Local installation
-----------------------------------------------
IMSI can be installed locally by cloning the source repository. You can use the ``-e`` flag to install in editable/development mode.
.. code-block:: bash
>> git clone git@gitlab.science.gc.ca:CanESM/imsi.git
>> cd imsi
>> uv pip install -e .
# or pip install -e . for standard python tooling
Testing the installation
--------------------------
After installation, verify IMSI is available by running:
.. code-block:: bash
>> imsi --version
This should print the current IMSI version.
Tab Completion
-----------------
.. tip::
If you are using bash v >= 4.4 and Python click v >= 8.x, you can enable
tab-completion for imsi CLI commands. These are not required and are
simply for convenience.
**Steps:**
1. Activate an imsi environment
.. code-block:: bash
>> source /path/to/imsi/bin/activate
You can confirm that the environment is active by entering ``which imsi`` on your command line.
2. Generate the shell functions required, and save them to a file in a location accessible to you.
.. code-block::
>> _IMSI_COMPLETE=bash_source imsi > ~/.imsi-complete.bash
In the example above, the file ``.imsi-complete.bash`` is saved to the user's home directory.
3. Source the file. You can do this on the command line or from within your profile.
.. code-block:: bash
# .profile
>> source ~/.imsi-complete.bash
**Result:**
You should now be able to use tabs to trigger suggested functions and options
for imsi commands. These tab-completions are triggered using **two** tabs.
.. code-block:: bash
>> imsi
build config list save-restarts status
chunk-manager ensemble log-state set submit
clean iss reload setup
>> imsi setup -
--runid --ver --model --seq --flow -h
--repo --exp --fetch_method --machine --postproc --help
The generalized instructions can also be found in the
`click documentation on Shell Completion `_