.. _installing: Developing pyobs ================ For the development of *pyobs*, i.e. working on packages like *pyobs-core* or *pyobs-gui*, it is highly recommended to use the official workflow using *uv* (https://docs.astral.sh/uv/ ). Some packages are using Cython for integrating the driver, and for those *poetry* (https://python-poetry.org/ ) is used instead of *uv*. You can easily decide which one is used by looking for the corresponding lock files, i.e. `uv.lock` and `poetry.lock`. If you are using an IDE like PyCharm, please make sure that it uses the virtual environment in `~/pyobs/pyobs-core/.venv`. You should create one and use it for every single package. Although packages like *pyobs-gui* will install *pyobs-core* as a dependency, you can still override this in PyCharm by setting a dependency to the locally cloned *pyobs-core*. Install uv ---------- The easiest way to install *uv* is the official install script (see https://docs.astral.sh/uv/getting-started/installation/ ):: curl -LsSf https://astral.sh/uv/install.sh | sh *pyobs* currently uses Python 3.11 as its base version (which is always the Python version of the latest stable Debian release), so you should install it, if it doesn't exist:: uv python install python3.11 Install poetry -------------- Like *uv*, *poetry* can easiest be installed using the official install script (see https://python-poetry.org/docs/#installation ):: curl -sSL https://install.python-poetry.org | python3 - You should configure poetry to install the virtual environment within the project directory (like uv does):: poetry config virtualenvs.in-project true Setting up development for pyobs-core ------------------------------------- As an example, we use *pyobs-core* here, but this works for all other packages as well. Ideally, you should have a directory that will contain all your pyobs source, e.g. `~/pyobs`, so let's create it:: cd mkdir pyobs cd pyobs Clone pyobs-core: git clone git@github.com:pyobs/pyobs-core.git This only works with an SSH key. You might want to use the HTTP method:: git clone https://github.com/pyobs/pyobs-core.git Go into that directory:: cd pyobs-core Change the git branch to develop: git checkout develop Using uv ^^^^^^^^ Install packages:: uv sync --locked --all-extras --no-install-project --python 3.11 We also use black to automatically format Python files and flake8 as a syntax checker. This will be done automatically on each commit after installing pre-commit:: uv run pre-commit install Using poetry ^^^^^^^^^^^^ Select Python version:: poetry env use python3.11 Install packages:: poetry sync --no-root --all-extras --all-groups We also use black to automatically format Python files and flake8 as a syntax checker. This will be done automatically on each commit after installing pre-commit:: poetry run pre-commit install