Local Development Environment¶
The local development workflow consists of a few key points:
Managed conda environments using conda-flow
Using integrated development environments (IDEs) like PyCharm/CLion
Running applications that can consume
gstlal, like Jupyter Notebook
Creating the environment¶
Thanks to conda-flow, creating the environment is simple. Before we can use conda-flow, it must be installed. In whatever environment you prefer, install conda-flow from pip:
pip install conda-flow
Once conda-flow is installed, There are locked environment files contained within the gstlal repo under
gstlal/gstlal/share/conda/envs. Using conda-flow, we can make sure the local development conda environment is built:
conda-flow activate -n gstlal-dev -c /path/to/gstlal/gstlal/share/conda/conda-flow.yml
Activating the environment¶
The activate command within conda-flow is done through subprocesses, and consequently will not affect the parent
process, such as the shell from which conda-flow is called. This is done to prevent unintended side effects; however, it
also means that unlike conda activate, conda-flow activate will not activate the environment inside the shell. If
you wish to activate the environment inside the shell, run conda activate gstlal-dev.
Using Developer Tools¶
To use an IDE to develop gstlal, you will first need to start your IDE from within the appropriate conda environment.
For example, to launch the PyCharm IDE, run:
conda-flow activate -n gstlal-dev --run-after "open -na ""PyCharm.app""" -c /path/to/gstlal/gstlal/share/conda/conda-flow.yml
Python Development¶
Note that the python source modules are not in a typical pythonic package structure (due to use of GNU build for c code within gstlal). This can present problems with package indexing / imports in the IDE. The solution is to provide the IDE with a map of the proper import paths, which can be done via two ways:
Build
gstlal(or at least the python components) and add the build directory as a source directory in your IDECreate a new source directory full of symlinks to the source files with a structure that mimicks the import paths. There is a utility for constructing such symlinks at
gstlal/gstlal/share/conda/dev_links.py
Launching Applications¶
Conda-flow is capable of running arbitrary commands after activating the environment in the subprocess which is useful for launching applications in a controlled way. For example, to run a jupyter notebook:
conda-flow activate -n gstlal-dev --run-after "jupyter notebook" -c /path/to/gstlal/gstlal/share/conda/conda-flow.yml