mirror of
				https://github.com/Akkudoktor-EOS/EOS.git
				synced 2025-11-04 08:46:20 +00:00 
			
		
		
		
	
		
			
	
	
		
			573 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			573 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								% SPDX-License-Identifier: Apache-2.0
							 | 
						|||
| 
								 | 
							
								(develop-page)=
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# Development Guide
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Development Prerequisites
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Have or
							 | 
						|||
| 
								 | 
							
								[create](https://docs.github.com/en/get-started/start-your-journey/creating-an-account-on-github)
							 | 
						|||
| 
								 | 
							
								a [GitHub](https://github.com/) account.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Make shure all the source installation prequistes are installed. See the
							 | 
						|||
| 
								 | 
							
								[installation guideline](#install-page) for a detailed list of tools.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Under Linux the [make](https://www.gnu.org/software/make/manual/make.html) tool should be installed
							 | 
						|||
| 
								 | 
							
								as we have a lot of pre-fabricated commands for it.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Install your favorite editor or integrated development environment (IDE):
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- Full-Featured IDEs
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  - [Eclipse + PyDev](https://www.pydev.org/)
							 | 
						|||
| 
								 | 
							
								  - [KDevelop](https://www.kdevelop.org/)
							 | 
						|||
| 
								 | 
							
								  - [PyCharm](https://www.jetbrains.com/pycharm/)
							 | 
						|||
| 
								 | 
							
								  - ...
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- Code Editors with Python Support
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  - [Visual Studio Code (VS Code)](https://code.visualstudio.com/)
							 | 
						|||
| 
								 | 
							
								  - [Sublime Text](https://www.sublimetext.com/)
							 | 
						|||
| 
								 | 
							
								  - [Atom / Pulsar](https://pulsar-edit.dev/)
							 | 
						|||
| 
								 | 
							
								  - ...
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- Python-Focused or Beginner-Friendly IDEs
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  - [Spyder](https://www.spyder-ide.org/)
							 | 
						|||
| 
								 | 
							
								  - [Thonny](https://thonny.org/)
							 | 
						|||
| 
								 | 
							
								  - [IDLE](https://www.python.org/downloads/)
							 | 
						|||
| 
								 | 
							
								  - ...
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Step 1 – Fork the Repository
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								[Fork the EOS repository](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo)
							 | 
						|||
| 
								 | 
							
								to your GitHub account.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Clone your fork locally and add the EOS upstream remote to track updates.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        git clone https://github.com/<YOURUSERNAME>/EOS.git
							 | 
						|||
| 
								 | 
							
								        cd EOS
							 | 
						|||
| 
								 | 
							
								        git remote add eos https://github.com/Akkudoktor-EOS/EOS.git
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        git clone https://github.com/<YOURUSERNAME>/EOS.git
							 | 
						|||
| 
								 | 
							
								        cd EOS
							 | 
						|||
| 
								 | 
							
								        git remote add eos https://github.com/Akkudoktor-EOS/EOS.git
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Replace `<YOURUSERNAME>` with your GitHub username.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Step 2 – Development Setup
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								This is recommended for developers who want to modify the source code and test changes locally.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Step 2.1 – Create a Virtual Environment
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        python -m venv .venv
							 | 
						|||
| 
								 | 
							
								        .venv\Scripts\pip install --upgrade pip
							 | 
						|||
| 
								 | 
							
								        .venv\Scripts\pip install -r requirements-dev.txt
							 | 
						|||
| 
								 | 
							
								        .venv\Scripts\pip install build
							 | 
						|||
| 
								 | 
							
								        .venv\Scripts\pip install -e .
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        python3 -m venv .venv
							 | 
						|||
| 
								 | 
							
								        .venv/bin/pip install --upgrade pip
							 | 
						|||
| 
								 | 
							
								        .venv/bin/pip install -r requirements-dev.txt
							 | 
						|||
| 
								 | 
							
								        .venv/bin/pip install build
							 | 
						|||
| 
								 | 
							
								        .venv/bin/pip install -e .
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux Make
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        make install
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Step 2.2 – Activate the Virtual Environment
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        .venv\Scripts\activate.bat
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        source .venv/bin/activate
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Step 2.3 - Install pre-commit
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Our code style and commit message checks use [`pre-commit`](https://pre-commit.com).
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pre-commit install
							 | 
						|||
| 
								 | 
							
								        pre-commit install --hook-type commit-msg --hook-type pre-push
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pre-commit install
							 | 
						|||
| 
								 | 
							
								        pre-commit install --hook-type commit-msg --hook-type pre-push
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Step 3 - Run EOS
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Make EOS accessible at [http://localhost:8503/docs](http://localhost:8503/docs) and EOSdash at
							 | 
						|||
| 
								 | 
							
								[http://localhost:8504](http://localhost:8504).
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Option 1 – Using Python Virtual Environment
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        python -m akkudoktoreos.server.eos
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        python -m akkudoktoreos.server.eos
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux Make
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        make run
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								To have full control of the servers during development you may start the servers independently -
							 | 
						|||
| 
								 | 
							
								e.g. in different terminal windows. Don't forget to activate the virtual environment in your
							 | 
						|||
| 
								 | 
							
								terminal window.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								:::{admonition} Note
							 | 
						|||
| 
								 | 
							
								:class: note
							 | 
						|||
| 
								 | 
							
								If you killed or stopped the servers shortly before, the ports may still be occupied by the last
							 | 
						|||
| 
								 | 
							
								processes. It may take more than 60 seconds until the ports are released.
							 | 
						|||
| 
								 | 
							
								:::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								You may add the `--reload true` parameter to have the servers automatically restarted on source code
							 | 
						|||
| 
								 | 
							
								changes. It is best to also add `--startup_eosdash false` to EOS to prevent the automatic restart
							 | 
						|||
| 
								 | 
							
								interfere with the EOS server trying to start EOSdash.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<!-- pyml disable line-length -->
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        python -m akkudoktoreos.server.eosdash --host localhost --port 8504 --log_level DEBUG --reload true
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        python -m akkudoktoreos.server.eosdash --host localhost --port 8504 --log_level DEBUG --reload true
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux Make
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        make run-dash-dev
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        python -m akkudoktoreos.server.eos --host localhost --port 8503 --log_level DEBUG --startup_eosdash false --reload true
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        python -m akkudoktoreos.server.eos --host localhost --port 8503 --log_level DEBUG --startup_eosdash false --reload true
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux Make
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        make run-dev
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								<!-- pyml enable line-length -->
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Option 2 – Using Docker
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Step 3.1 – Build the Docker Image
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        docker build -t akkudoktoreos .
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        docker build -t akkudoktoreos .
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Step 3.2 – Run the Container
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        docker run -d `
							 | 
						|||
| 
								 | 
							
								          --name akkudoktoreos `
							 | 
						|||
| 
								 | 
							
								          -p 8503:8503 `
							 | 
						|||
| 
								 | 
							
								          -p 8504:8504 `
							 | 
						|||
| 
								 | 
							
								          -e OPENBLAS_NUM_THREADS=1 `
							 | 
						|||
| 
								 | 
							
								          -e OMP_NUM_THREADS=1 `
							 | 
						|||
| 
								 | 
							
								          -e MKL_NUM_THREADS=1 `
							 | 
						|||
| 
								 | 
							
								          -e EOS_SERVER__HOST=0.0.0.0 `
							 | 
						|||
| 
								 | 
							
								          -e EOS_SERVER__PORT=8503 `
							 | 
						|||
| 
								 | 
							
								          -e EOS_SERVER__EOSDASH_HOST=0.0.0.0 `
							 | 
						|||
| 
								 | 
							
								          -e EOS_SERVER__EOSDASH_PORT=8504 `
							 | 
						|||
| 
								 | 
							
								          --ulimit nproc=65535:65535 `
							 | 
						|||
| 
								 | 
							
								          --ulimit nofile=65535:65535 `
							 | 
						|||
| 
								 | 
							
								          --security-opt seccomp=unconfined `
							 | 
						|||
| 
								 | 
							
								          akkudoktor-eos:latest
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								          docker run -d \
							 | 
						|||
| 
								 | 
							
								            --name akkudoktoreos \
							 | 
						|||
| 
								 | 
							
								            -p 8503:8503 \
							 | 
						|||
| 
								 | 
							
								            -p 8504:8504 \
							 | 
						|||
| 
								 | 
							
								            -e OPENBLAS_NUM_THREADS=1 \
							 | 
						|||
| 
								 | 
							
								            -e OMP_NUM_THREADS=1 \
							 | 
						|||
| 
								 | 
							
								            -e MKL_NUM_THREADS=1 \
							 | 
						|||
| 
								 | 
							
								            -e EOS_SERVER__HOST=0.0.0.0 \
							 | 
						|||
| 
								 | 
							
								            -e EOS_SERVER__PORT=8503 \
							 | 
						|||
| 
								 | 
							
								            -e EOS_SERVER__EOSDASH_HOST=0.0.0.0 \
							 | 
						|||
| 
								 | 
							
								            -e EOS_SERVER__EOSDASH_PORT=8504 \
							 | 
						|||
| 
								 | 
							
								            --ulimit nproc=65535:65535 \
							 | 
						|||
| 
								 | 
							
								            --ulimit nofile=65535:65535 \
							 | 
						|||
| 
								 | 
							
								            --security-opt seccomp=unconfined \
							 | 
						|||
| 
								 | 
							
								            akkudoktor-eos:latest
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Step 3.3 – Manage the Container
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        docker logs -f akkudoktoreos
							 | 
						|||
| 
								 | 
							
								        docker stop akkudoktoreos
							 | 
						|||
| 
								 | 
							
								        docker start akkudoktoreos
							 | 
						|||
| 
								 | 
							
								        docker rm -f akkudoktoreos
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        docker logs -f akkudoktoreos
							 | 
						|||
| 
								 | 
							
								        docker stop akkudoktoreos
							 | 
						|||
| 
								 | 
							
								        docker start akkudoktoreos
							 | 
						|||
| 
								 | 
							
								        docker rm -f akkudoktoreos
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								For detailed Docker instructions, refer to
							 | 
						|||
| 
								 | 
							
								**[Method 3 & 4: Installation with Docker](install.md#method-3-installation-with-docker-dockerhub)**
							 | 
						|||
| 
								 | 
							
								and
							 | 
						|||
| 
								 | 
							
								**[Method 4: Docker Compose](install.md#method-4-installation-with-docker-docker-compose)**.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Step 4 - Create the changes
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Step 4.1 - Create a development branch
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```bash
							 | 
						|||
| 
								 | 
							
								git checkout -b <MY_DEVELOPMENT_BRANCH>
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Replace `<MY_DEVELOPMENT_BRANCH>` with the development branch name. The branch name shall be of the
							 | 
						|||
| 
								 | 
							
								format (feat|fix|chore|docs|refactor|test)/[a-z0-9._-]+, e.g:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- feat/my_cool_new_feature
							 | 
						|||
| 
								 | 
							
								- fix/this_annoying_bug
							 | 
						|||
| 
								 | 
							
								- ...
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Step 4.2 – Edit the sources
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Use your fovourite editor or IDE to edit the sources.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Step 4.3 - Check the source code for correct format
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pre-commit run --all-files
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pre-commit run --all-files
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux Make
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        make format
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Step 4.4 - Test the changes
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								At a minimum, you should run the module tests:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pytest -vs --cov src --cov-report term-missing
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pytest -vs --cov src --cov-report term-missing
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux Make
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        make test
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								You should also run the system tests. These include additional tests that interact with real
							 | 
						|||
| 
								 | 
							
								resources:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pytest --system-test -vs --cov src --cov-report term-missing
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pytest --system-test -vs --cov src --cov-report term-missing
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux Make
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        make test-system
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Step 4.5 - Commit the changes
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Add the changed and new files to the commit.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Create a commit.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Step 5 - Pull request
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Before creating a pull request assure the changes are based on the latest EOS upstream.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Update your local main branch:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```bash
							 | 
						|||
| 
								 | 
							
								git checkout main
							 | 
						|||
| 
								 | 
							
								git pull eos main
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Switch back to your local development branch and rebase to main.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```bash
							 | 
						|||
| 
								 | 
							
								git checkout <MY_DEVELOPMENT_BRANCH>
							 | 
						|||
| 
								 | 
							
								git rebase -i main
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								During rebase you can also squash your changes into one (preferred) or a set of commits that have
							 | 
						|||
| 
								 | 
							
								proper commit messages and can easily be reviewed.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								After rebase run the tests once again.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								If everything is ok push the commit(s) to your fork on Github.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```bash
							 | 
						|||
| 
								 | 
							
								git push -f origin
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								If your push by intention does not comply to the rules you can skip the verification by:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```bash
							 | 
						|||
| 
								 | 
							
								git push -f --no-verify origin
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								<!-- pyml disable line-length -->
							 | 
						|||
| 
								 | 
							
								Once ready, [submit a pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork)
							 | 
						|||
| 
								 | 
							
								with your fork to the [Akkudoktor-EOS/EOS@master](https://github.com/Akkudoktor-EOS/EOS) repository.
							 | 
						|||
| 
								 | 
							
								<!-- pyml enable line-length -->
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Developer Tips
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Keep Your Fork Updated
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Regularly pull changes from the eos repository to avoid merge conflicts:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        git checkout main
							 | 
						|||
| 
								 | 
							
								        git pull eos main
							 | 
						|||
| 
								 | 
							
								        git push origin
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        git checkout main
							 | 
						|||
| 
								 | 
							
								        git pull eos main
							 | 
						|||
| 
								 | 
							
								        git push origin
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Rebase your development branch to the latest eos main branch.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        git checkout  <MY_DEVELOPMENT_BRANCH>
							 | 
						|||
| 
								 | 
							
								        git rebase -i main
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        git checkout  <MY_DEVELOPMENT_BRANCH>
							 | 
						|||
| 
								 | 
							
								        git rebase -i main
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Create Feature Branches
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Work in separate branches for each feature or bug fix:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        git checkout -b feat/my-feature
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        git checkout -b feat/my-feature
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Run Tests Frequently
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Ensure your changes do not break existing functionality:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								```{eval-rst}
							 | 
						|||
| 
								 | 
							
								.. tabs::
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Windows
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: powershell
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pytest -vs --cov src --cov-report term-missing
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        pytest -vs --cov src --cov-report term-missing
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								  .. tab:: Linux Make
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								     .. code-block:: bash
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        make test
							 | 
						|||
| 
								 | 
							
								```
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Follow Coding Standards
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Keep your code consistent with existing style and conventions.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Use Issues for Discussion
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Before making major changes, open an issue or discuss with maintainers.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### Document Changes
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								Update docstrings, comments, and any relevant documentation.
							 |