From 0037e2e21ad525b06a8b20afee005885cea4cb19 Mon Sep 17 00:00:00 2001
From: JanHab <Jan.Habscheid@web.de>
Date: Tue, 26 Nov 2024 18:02:50 +0100
Subject: [PATCH 1/7] Add Coverage?

---
 .gitlab-ci.yml | 9 ++++++++-
 Dockerfile     | 2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f5d26fc..15763ec 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -49,7 +49,14 @@ test:
   tags:
     - docker
   script:
-    - python -m pytest # Run the tests
+    # - python -m pytest # Run the tests
+    - pytest --cov=fxdgm --cov-report=xml --cov-report=term-missing tests/ # Run the tests and store coverage 
+  artifacts:
+    paths:
+      - coverage.xml # Save the coverage report
+    expire_in: 12 month  # Optional: Set how long to keep the artifacts (default: 30 days)
+  coverage: '/^TOTAL.*\s+(\d+\%)$/'
+
   
 # Job to deploy documentation to GitLab Pages
 pages:
diff --git a/Dockerfile b/Dockerfile
index 23fafbd..6dcdddf 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,7 +9,7 @@ ENV HOME /root
 # Create the environment and install packages
 # FEniCSx backend + documentation and testing dependencies
 RUN conda create --name ${CONDA_DEFAULT_ENV} python=3.12.3 -y && \
-    conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest==8.3.3 -y
+    conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest==8.3.3 pytest-cov==6.0.0  -y
 # fxdgm package from git
 RUN pip install git+https://git.rwth-aachen.de/JanHab/bsc-electrolytemodels@Package
 
-- 
GitLab


From bb05b7966c110719275919e595bf1d7683ec9fec Mon Sep 17 00:00:00 2001
From: JanHab <jan.habscheid@rwth-aachen.de>
Date: Tue, 11 Feb 2025 12:02:22 +0100
Subject: [PATCH 2/7] add coverage + skip main functions for coverage

---
 .coverage                  | Bin 0 -> 53248 bytes
 coverage.xml               | 640 +++++++++++++++++++++++++++++++++++++
 fxdgm/ElectrolyticDiode.py |   2 +-
 fxdgm/Eq02.py              |  80 ++---
 fxdgm/Eq04.py              |   2 +-
 fxdgm/EqN.py               |   2 +-
 6 files changed, 683 insertions(+), 43 deletions(-)
 create mode 100644 .coverage
 create mode 100644 coverage.xml

diff --git a/.coverage b/.coverage
new file mode 100644
index 0000000000000000000000000000000000000000..a9320ef354670acb84953dfaf7fc2b2f67903333
GIT binary patch
literal 53248
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

literal 0
HcmV?d00001

diff --git a/coverage.xml b/coverage.xml
new file mode 100644
index 0000000..4394685
--- /dev/null
+++ b/coverage.xml
@@ -0,0 +1,640 @@
+<?xml version="1.0" ?>
+<coverage version="7.6.11" timestamp="1739271601600" lines-valid="591" lines-covered="560" line-rate="0.9475" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
+	<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.6.11 -->
+	<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
+	<sources>
+		<source>/Users/janhabscheid/Documents/git/fxdgm/fxdgm</source>
+	</sources>
+	<packages>
+		<package name="." line-rate="0.9475" branch-rate="0" complexity="0">
+			<classes>
+				<class name="ElectrolyticDiode.py" filename="ElectrolyticDiode.py" complexity="0" line-rate="0.9384" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="10" hits="1"/>
+						<line number="11" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="13" hits="1"/>
+						<line number="14" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="16" hits="1"/>
+						<line number="17" hits="1"/>
+						<line number="18" hits="1"/>
+						<line number="19" hits="1"/>
+						<line number="21" hits="1"/>
+						<line number="82" hits="1"/>
+						<line number="83" hits="0"/>
+						<line number="84" hits="1"/>
+						<line number="85" hits="1"/>
+						<line number="86" hits="1"/>
+						<line number="87" hits="1"/>
+						<line number="88" hits="0"/>
+						<line number="89" hits="0"/>
+						<line number="90" hits="0"/>
+						<line number="93" hits="1"/>
+						<line number="94" hits="1"/>
+						<line number="95" hits="0"/>
+						<line number="97" hits="1"/>
+						<line number="98" hits="0"/>
+						<line number="100" hits="1"/>
+						<line number="101" hits="1"/>
+						<line number="103" hits="1"/>
+						<line number="104" hits="1"/>
+						<line number="106" hits="1"/>
+						<line number="107" hits="1"/>
+						<line number="108" hits="1"/>
+						<line number="109" hits="1"/>
+						<line number="111" hits="1"/>
+						<line number="112" hits="1"/>
+						<line number="113" hits="1"/>
+						<line number="114" hits="1"/>
+						<line number="116" hits="1"/>
+						<line number="117" hits="1"/>
+						<line number="118" hits="1"/>
+						<line number="119" hits="1"/>
+						<line number="121" hits="1"/>
+						<line number="122" hits="1"/>
+						<line number="123" hits="1"/>
+						<line number="124" hits="1"/>
+						<line number="127" hits="1"/>
+						<line number="130" hits="1"/>
+						<line number="135" hits="1"/>
+						<line number="136" hits="1"/>
+						<line number="139" hits="1"/>
+						<line number="140" hits="1"/>
+						<line number="141" hits="1"/>
+						<line number="144" hits="1"/>
+						<line number="145" hits="1"/>
+						<line number="146" hits="1"/>
+						<line number="147" hits="1"/>
+						<line number="149" hits="1"/>
+						<line number="150" hits="1"/>
+						<line number="151" hits="1"/>
+						<line number="152" hits="1"/>
+						<line number="153" hits="1"/>
+						<line number="154" hits="1"/>
+						<line number="155" hits="1"/>
+						<line number="156" hits="1"/>
+						<line number="157" hits="1"/>
+						<line number="158" hits="1"/>
+						<line number="159" hits="1"/>
+						<line number="160" hits="1"/>
+						<line number="162" hits="1"/>
+						<line number="163" hits="1"/>
+						<line number="164" hits="1"/>
+						<line number="165" hits="1"/>
+						<line number="166" hits="1"/>
+						<line number="167" hits="1"/>
+						<line number="168" hits="1"/>
+						<line number="169" hits="1"/>
+						<line number="170" hits="1"/>
+						<line number="171" hits="1"/>
+						<line number="172" hits="1"/>
+						<line number="173" hits="1"/>
+						<line number="176" hits="1"/>
+						<line number="177" hits="1"/>
+						<line number="178" hits="1"/>
+						<line number="179" hits="1"/>
+						<line number="181" hits="1"/>
+						<line number="182" hits="1"/>
+						<line number="183" hits="1"/>
+						<line number="184" hits="1"/>
+						<line number="186" hits="1"/>
+						<line number="187" hits="1"/>
+						<line number="188" hits="1"/>
+						<line number="189" hits="1"/>
+						<line number="192" hits="1"/>
+						<line number="212" hits="1"/>
+						<line number="246" hits="1"/>
+						<line number="247" hits="1"/>
+						<line number="250" hits="1"/>
+						<line number="251" hits="1"/>
+						<line number="253" hits="1"/>
+						<line number="254" hits="1"/>
+						<line number="262" hits="1"/>
+						<line number="274" hits="1"/>
+						<line number="275" hits="1"/>
+						<line number="276" hits="1"/>
+						<line number="277" hits="1"/>
+						<line number="278" hits="1"/>
+						<line number="279" hits="1"/>
+						<line number="280" hits="1"/>
+						<line number="281" hits="1"/>
+						<line number="282" hits="1"/>
+						<line number="283" hits="1"/>
+						<line number="284" hits="1"/>
+						<line number="285" hits="1"/>
+						<line number="286" hits="1"/>
+						<line number="287" hits="1"/>
+						<line number="295" hits="1"/>
+						<line number="298" hits="1"/>
+						<line number="299" hits="1"/>
+						<line number="300" hits="1"/>
+						<line number="301" hits="1"/>
+						<line number="303" hits="1"/>
+						<line number="304" hits="1"/>
+						<line number="305" hits="1"/>
+						<line number="306" hits="1"/>
+						<line number="309" hits="1"/>
+						<line number="311" hits="1"/>
+						<line number="312" hits="1"/>
+						<line number="313" hits="1"/>
+						<line number="314" hits="1"/>
+						<line number="315" hits="1"/>
+						<line number="316" hits="1"/>
+						<line number="319" hits="1"/>
+						<line number="320" hits="1"/>
+						<line number="321" hits="1"/>
+						<line number="322" hits="1"/>
+						<line number="325" hits="1"/>
+						<line number="326" hits="1"/>
+						<line number="327" hits="1"/>
+						<line number="328" hits="1"/>
+						<line number="330" hits="1"/>
+						<line number="331" hits="1"/>
+						<line number="333" hits="1"/>
+						<line number="334" hits="1"/>
+						<line number="335" hits="0"/>
+						<line number="336" hits="0"/>
+						<line number="338" hits="0"/>
+					</lines>
+				</class>
+				<class name="Eq02.py" filename="Eq02.py" complexity="0" line-rate="0.9604" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="8" hits="1"/>
+						<line number="9" hits="1"/>
+						<line number="10" hits="1"/>
+						<line number="11" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="13" hits="1"/>
+						<line number="14" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="16" hits="1"/>
+						<line number="19" hits="1"/>
+						<line number="93" hits="1"/>
+						<line number="94" hits="0"/>
+						<line number="96" hits="1"/>
+						<line number="97" hits="1"/>
+						<line number="100" hits="1"/>
+						<line number="101" hits="1"/>
+						<line number="103" hits="1"/>
+						<line number="104" hits="1"/>
+						<line number="107" hits="1"/>
+						<line number="108" hits="1"/>
+						<line number="110" hits="1"/>
+						<line number="113" hits="1"/>
+						<line number="116" hits="1"/>
+						<line number="117" hits="1"/>
+						<line number="120" hits="1"/>
+						<line number="121" hits="1"/>
+						<line number="122" hits="1"/>
+						<line number="125" hits="1"/>
+						<line number="126" hits="1"/>
+						<line number="129" hits="1"/>
+						<line number="130" hits="1"/>
+						<line number="131" hits="1"/>
+						<line number="132" hits="1"/>
+						<line number="133" hits="1"/>
+						<line number="134" hits="1"/>
+						<line number="137" hits="1"/>
+						<line number="138" hits="1"/>
+						<line number="139" hits="1"/>
+						<line number="140" hits="1"/>
+						<line number="141" hits="1"/>
+						<line number="142" hits="1"/>
+						<line number="146" hits="1"/>
+						<line number="147" hits="1"/>
+						<line number="148" hits="1"/>
+						<line number="149" hits="1"/>
+						<line number="151" hits="1"/>
+						<line number="152" hits="1"/>
+						<line number="156" hits="1"/>
+						<line number="158" hits="1"/>
+						<line number="159" hits="1"/>
+						<line number="160" hits="1"/>
+						<line number="161" hits="1"/>
+						<line number="162" hits="1"/>
+						<line number="163" hits="1"/>
+						<line number="164" hits="1"/>
+						<line number="166" hits="1"/>
+						<line number="167" hits="1"/>
+						<line number="168" hits="1"/>
+						<line number="169" hits="1"/>
+						<line number="170" hits="1"/>
+						<line number="171" hits="1"/>
+						<line number="172" hits="1"/>
+						<line number="176" hits="1"/>
+						<line number="178" hits="1"/>
+						<line number="179" hits="1"/>
+						<line number="182" hits="1"/>
+						<line number="183" hits="1"/>
+						<line number="186" hits="1"/>
+						<line number="187" hits="1"/>
+						<line number="189" hits="1"/>
+						<line number="196" hits="1"/>
+						<line number="199" hits="1"/>
+						<line number="202" hits="1"/>
+						<line number="203" hits="1"/>
+						<line number="204" hits="1"/>
+						<line number="205" hits="1"/>
+						<line number="206" hits="1"/>
+						<line number="208" hits="0"/>
+						<line number="209" hits="0"/>
+						<line number="211" hits="0"/>
+						<line number="212" hits="1"/>
+						<line number="213" hits="1"/>
+						<line number="216" hits="1"/>
+						<line number="217" hits="1"/>
+						<line number="218" hits="1"/>
+						<line number="219" hits="1"/>
+						<line number="222" hits="1"/>
+						<line number="225" hits="1"/>
+						<line number="226" hits="1"/>
+						<line number="227" hits="1"/>
+						<line number="228" hits="1"/>
+						<line number="231" hits="1"/>
+						<line number="232" hits="1"/>
+						<line number="234" hits="1"/>
+						<line number="235" hits="1"/>
+						<line number="237" hits="1"/>
+						<line number="238" hits="1"/>
+						<line number="239" hits="1"/>
+						<line number="240" hits="1"/>
+						<line number="241" hits="1"/>
+						<line number="243" hits="1"/>
+					</lines>
+				</class>
+				<class name="Eq04.py" filename="Eq04.py" complexity="0" line-rate="0.9558" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="8" hits="1"/>
+						<line number="9" hits="1"/>
+						<line number="10" hits="1"/>
+						<line number="11" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="13" hits="1"/>
+						<line number="14" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="16" hits="1"/>
+						<line number="19" hits="1"/>
+						<line number="89" hits="1"/>
+						<line number="90" hits="1"/>
+						<line number="93" hits="1"/>
+						<line number="94" hits="1"/>
+						<line number="96" hits="1"/>
+						<line number="97" hits="1"/>
+						<line number="100" hits="1"/>
+						<line number="101" hits="1"/>
+						<line number="103" hits="1"/>
+						<line number="106" hits="1"/>
+						<line number="109" hits="1"/>
+						<line number="110" hits="1"/>
+						<line number="113" hits="1"/>
+						<line number="114" hits="1"/>
+						<line number="115" hits="1"/>
+						<line number="118" hits="1"/>
+						<line number="119" hits="1"/>
+						<line number="120" hits="1"/>
+						<line number="121" hits="1"/>
+						<line number="124" hits="1"/>
+						<line number="125" hits="1"/>
+						<line number="126" hits="1"/>
+						<line number="127" hits="1"/>
+						<line number="128" hits="1"/>
+						<line number="129" hits="1"/>
+						<line number="130" hits="1"/>
+						<line number="131" hits="1"/>
+						<line number="132" hits="1"/>
+						<line number="133" hits="1"/>
+						<line number="136" hits="1"/>
+						<line number="137" hits="1"/>
+						<line number="138" hits="1"/>
+						<line number="139" hits="1"/>
+						<line number="140" hits="1"/>
+						<line number="141" hits="1"/>
+						<line number="142" hits="1"/>
+						<line number="143" hits="1"/>
+						<line number="144" hits="1"/>
+						<line number="145" hits="1"/>
+						<line number="149" hits="1"/>
+						<line number="150" hits="1"/>
+						<line number="151" hits="1"/>
+						<line number="152" hits="1"/>
+						<line number="154" hits="1"/>
+						<line number="155" hits="1"/>
+						<line number="157" hits="1"/>
+						<line number="158" hits="1"/>
+						<line number="160" hits="1"/>
+						<line number="161" hits="1"/>
+						<line number="164" hits="1"/>
+						<line number="169" hits="1"/>
+						<line number="171" hits="1"/>
+						<line number="172" hits="1"/>
+						<line number="175" hits="1"/>
+						<line number="176" hits="1"/>
+						<line number="179" hits="1"/>
+						<line number="180" hits="1"/>
+						<line number="184" hits="1"/>
+						<line number="194" hits="1"/>
+						<line number="195" hits="1"/>
+						<line number="201" hits="1"/>
+						<line number="202" hits="1"/>
+						<line number="205" hits="1"/>
+						<line number="206" hits="1"/>
+						<line number="209" hits="1"/>
+						<line number="210" hits="1"/>
+						<line number="212" hits="1"/>
+						<line number="213" hits="1"/>
+						<line number="215" hits="1"/>
+						<line number="225" hits="1"/>
+						<line number="228" hits="1"/>
+						<line number="229" hits="1"/>
+						<line number="230" hits="1"/>
+						<line number="231" hits="1"/>
+						<line number="233" hits="1"/>
+						<line number="234" hits="1"/>
+						<line number="235" hits="1"/>
+						<line number="236" hits="1"/>
+						<line number="239" hits="1"/>
+						<line number="242" hits="1"/>
+						<line number="243" hits="1"/>
+						<line number="244" hits="1"/>
+						<line number="245" hits="1"/>
+						<line number="246" hits="1"/>
+						<line number="248" hits="0"/>
+						<line number="249" hits="0"/>
+						<line number="251" hits="0"/>
+						<line number="252" hits="1"/>
+						<line number="253" hits="1"/>
+						<line number="256" hits="1"/>
+						<line number="257" hits="1"/>
+						<line number="258" hits="1"/>
+						<line number="259" hits="1"/>
+						<line number="262" hits="1"/>
+						<line number="265" hits="1"/>
+						<line number="266" hits="1"/>
+						<line number="267" hits="1"/>
+						<line number="268" hits="1"/>
+						<line number="269" hits="1"/>
+						<line number="270" hits="1"/>
+						<line number="272" hits="1"/>
+						<line number="273" hits="0"/>
+						<line number="274" hits="0"/>
+					</lines>
+				</class>
+				<class name="EqN.py" filename="EqN.py" complexity="0" line-rate="0.9364" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="8" hits="1"/>
+						<line number="9" hits="1"/>
+						<line number="10" hits="1"/>
+						<line number="11" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="13" hits="1"/>
+						<line number="14" hits="1"/>
+						<line number="15" hits="1"/>
+						<line number="16" hits="1"/>
+						<line number="18" hits="1"/>
+						<line number="82" hits="1"/>
+						<line number="83" hits="0"/>
+						<line number="84" hits="1"/>
+						<line number="85" hits="0"/>
+						<line number="87" hits="1"/>
+						<line number="88" hits="1"/>
+						<line number="91" hits="1"/>
+						<line number="92" hits="1"/>
+						<line number="94" hits="1"/>
+						<line number="95" hits="1"/>
+						<line number="98" hits="1"/>
+						<line number="99" hits="1"/>
+						<line number="101" hits="1"/>
+						<line number="104" hits="1"/>
+						<line number="107" hits="1"/>
+						<line number="108" hits="1"/>
+						<line number="109" hits="1"/>
+						<line number="110" hits="1"/>
+						<line number="113" hits="1"/>
+						<line number="114" hits="1"/>
+						<line number="115" hits="1"/>
+						<line number="117" hits="1"/>
+						<line number="118" hits="1"/>
+						<line number="119" hits="1"/>
+						<line number="120" hits="1"/>
+						<line number="123" hits="1"/>
+						<line number="124" hits="1"/>
+						<line number="127" hits="1"/>
+						<line number="128" hits="1"/>
+						<line number="129" hits="1"/>
+						<line number="130" hits="1"/>
+						<line number="131" hits="1"/>
+						<line number="132" hits="1"/>
+						<line number="135" hits="1"/>
+						<line number="136" hits="1"/>
+						<line number="137" hits="1"/>
+						<line number="138" hits="1"/>
+						<line number="139" hits="1"/>
+						<line number="140" hits="1"/>
+						<line number="143" hits="1"/>
+						<line number="144" hits="1"/>
+						<line number="145" hits="1"/>
+						<line number="146" hits="1"/>
+						<line number="148" hits="1"/>
+						<line number="149" hits="1"/>
+						<line number="152" hits="1"/>
+						<line number="155" hits="1"/>
+						<line number="156" hits="1"/>
+						<line number="157" hits="1"/>
+						<line number="158" hits="1"/>
+						<line number="159" hits="1"/>
+						<line number="160" hits="1"/>
+						<line number="161" hits="1"/>
+						<line number="162" hits="1"/>
+						<line number="165" hits="1"/>
+						<line number="167" hits="1"/>
+						<line number="168" hits="1"/>
+						<line number="169" hits="1"/>
+						<line number="170" hits="1"/>
+						<line number="171" hits="1"/>
+						<line number="174" hits="1"/>
+						<line number="175" hits="1"/>
+						<line number="176" hits="1"/>
+						<line number="177" hits="1"/>
+						<line number="180" hits="1"/>
+						<line number="187" hits="1"/>
+						<line number="188" hits="1"/>
+						<line number="191" hits="1"/>
+						<line number="192" hits="0"/>
+						<line number="194" hits="0"/>
+						<line number="195" hits="1"/>
+						<line number="198" hits="1"/>
+						<line number="199" hits="1"/>
+						<line number="202" hits="1"/>
+						<line number="203" hits="1"/>
+						<line number="204" hits="1"/>
+						<line number="205" hits="1"/>
+						<line number="208" hits="1"/>
+						<line number="211" hits="1"/>
+						<line number="212" hits="1"/>
+						<line number="213" hits="1"/>
+						<line number="214" hits="1"/>
+						<line number="215" hits="1"/>
+						<line number="217" hits="0"/>
+						<line number="218" hits="0"/>
+						<line number="220" hits="0"/>
+						<line number="221" hits="1"/>
+						<line number="222" hits="1"/>
+						<line number="225" hits="1"/>
+						<line number="226" hits="1"/>
+						<line number="227" hits="1"/>
+						<line number="228" hits="1"/>
+						<line number="231" hits="1"/>
+						<line number="232" hits="1"/>
+						<line number="233" hits="1"/>
+						<line number="234" hits="1"/>
+						<line number="235" hits="1"/>
+						<line number="236" hits="1"/>
+						<line number="237" hits="1"/>
+						<line number="238" hits="1"/>
+					</lines>
+				</class>
+				<class name="Helper_DoubleLayerCapacity.py" filename="Helper_DoubleLayerCapacity.py" complexity="0" line-rate="0.977" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="4" hits="1"/>
+						<line number="5" hits="1"/>
+						<line number="9" hits="1"/>
+						<line number="23" hits="1"/>
+						<line number="25" hits="1"/>
+						<line number="41" hits="1"/>
+						<line number="43" hits="1"/>
+						<line number="59" hits="1"/>
+						<line number="61" hits="1"/>
+						<line number="77" hits="1"/>
+						<line number="78" hits="1"/>
+						<line number="79" hits="1"/>
+						<line number="80" hits="1"/>
+						<line number="82" hits="1"/>
+						<line number="108" hits="1"/>
+						<line number="109" hits="1"/>
+						<line number="110" hits="1"/>
+						<line number="112" hits="1"/>
+						<line number="144" hits="1"/>
+						<line number="145" hits="1"/>
+						<line number="146" hits="1"/>
+						<line number="147" hits="1"/>
+						<line number="148" hits="1"/>
+						<line number="150" hits="1"/>
+						<line number="188" hits="1"/>
+						<line number="189" hits="0"/>
+						<line number="190" hits="1"/>
+						<line number="191" hits="1"/>
+						<line number="192" hits="1"/>
+						<line number="194" hits="1"/>
+						<line number="195" hits="1"/>
+						<line number="196" hits="1"/>
+						<line number="199" hits="1"/>
+						<line number="200" hits="1"/>
+						<line number="202" hits="1"/>
+						<line number="203" hits="1"/>
+						<line number="204" hits="1"/>
+						<line number="206" hits="1"/>
+						<line number="207" hits="1"/>
+						<line number="208" hits="1"/>
+						<line number="210" hits="1"/>
+						<line number="212" hits="1"/>
+						<line number="214" hits="1"/>
+						<line number="215" hits="1"/>
+						<line number="217" hits="1"/>
+						<line number="218" hits="1"/>
+						<line number="221" hits="1"/>
+						<line number="265" hits="1"/>
+						<line number="266" hits="1"/>
+						<line number="267" hits="1"/>
+						<line number="268" hits="1"/>
+						<line number="269" hits="1"/>
+						<line number="273" hits="1"/>
+						<line number="311" hits="1"/>
+						<line number="312" hits="0"/>
+						<line number="313" hits="1"/>
+						<line number="314" hits="1"/>
+						<line number="315" hits="1"/>
+						<line number="317" hits="1"/>
+						<line number="318" hits="1"/>
+						<line number="319" hits="1"/>
+						<line number="321" hits="1"/>
+						<line number="323" hits="1"/>
+						<line number="324" hits="1"/>
+						<line number="326" hits="1"/>
+						<line number="328" hits="1"/>
+						<line number="329" hits="1"/>
+						<line number="331" hits="1"/>
+						<line number="333" hits="1"/>
+						<line number="334" hits="1"/>
+						<line number="335" hits="1"/>
+						<line number="337" hits="1"/>
+						<line number="338" hits="1"/>
+						<line number="340" hits="1"/>
+						<line number="341" hits="1"/>
+						<line number="343" hits="1"/>
+						<line number="344" hits="1"/>
+						<line number="346" hits="1"/>
+						<line number="348" hits="1"/>
+						<line number="350" hits="1"/>
+						<line number="355" hits="1"/>
+						<line number="403" hits="1"/>
+						<line number="404" hits="1"/>
+						<line number="406" hits="1"/>
+						<line number="407" hits="1"/>
+						<line number="408" hits="1"/>
+						<line number="409" hits="1"/>
+					</lines>
+				</class>
+				<class name="RefinedMesh1D.py" filename="RefinedMesh1D.py" complexity="0" line-rate="0.8519" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="8" hits="1"/>
+						<line number="9" hits="1"/>
+						<line number="10" hits="1"/>
+						<line number="11" hits="1"/>
+						<line number="12" hits="1"/>
+						<line number="16" hits="1"/>
+						<line number="32" hits="1"/>
+						<line number="33" hits="1"/>
+						<line number="34" hits="1"/>
+						<line number="35" hits="1"/>
+						<line number="36" hits="1"/>
+						<line number="37" hits="1"/>
+						<line number="38" hits="0"/>
+						<line number="39" hits="0"/>
+						<line number="40" hits="0"/>
+						<line number="41" hits="0"/>
+						<line number="42" hits="1"/>
+						<line number="43" hits="1"/>
+						<line number="44" hits="1"/>
+						<line number="45" hits="1"/>
+						<line number="46" hits="1"/>
+						<line number="47" hits="1"/>
+						<line number="48" hits="1"/>
+						<line number="49" hits="1"/>
+						<line number="50" hits="1"/>
+						<line number="51" hits="1"/>
+						<line number="52" hits="1"/>
+					</lines>
+				</class>
+				<class name="__init__.py" filename="__init__.py" complexity="0" line-rate="1" branch-rate="0">
+					<methods/>
+					<lines>
+						<line number="1" hits="1"/>
+						<line number="3" hits="1"/>
+						<line number="4" hits="1"/>
+						<line number="5" hits="1"/>
+						<line number="6" hits="1"/>
+						<line number="7" hits="1"/>
+						<line number="8" hits="1"/>
+					</lines>
+				</class>
+			</classes>
+		</package>
+	</packages>
+</coverage>
diff --git a/fxdgm/ElectrolyticDiode.py b/fxdgm/ElectrolyticDiode.py
index 836b48c..5016d42 100644
--- a/fxdgm/ElectrolyticDiode.py
+++ b/fxdgm/ElectrolyticDiode.py
@@ -337,7 +337,7 @@ def ElectrolyticDiode(Bias_type:str, phi_bias:float, g_phi:float, z_A:float, z_C
     else:
         raise ValueError('Invalid return_type')
 
-if __name__ == '__main__':
+if __name__ == '__main__': # pragma: no cover # dont cover main in coverage
     phi_bias = 10#10
     Bias_type = 'ForwardBias' # 'ForwardBias', 'NoBias', 'BackwardBias'
     g_phi = 350#5
diff --git a/fxdgm/Eq02.py b/fxdgm/Eq02.py
index bf40e41..15f96f4 100644
--- a/fxdgm/Eq02.py
+++ b/fxdgm/Eq02.py
@@ -242,47 +242,47 @@ def solve_System_2eq(phi_left:float, phi_right:float, p_right:float, z_A:float,
         
         return y_A_vals, y_C_vals, phi_vals, p_vals, x_vals
     
-if __name__ == '__main__':
-    # Define the parameters
-    phi_left = 5.0
-    phi_right = 0.0
-    p_right = 0.0
-    y_A_R = 1/3
-    y_C_R = 1/3
-    z_A = -1.0
-    z_C = 1.0
-    K = 'incompressible'
-    Lambda2 = 8.553e-6
-    a2 = 7.5412e-4
-    number_cells = 1024
-    relax_param = .1
-    rtol = 1e-4
-    max_iter = 500
+# if __name__ == '__main__':
+#     # Define the parameters
+#     phi_left = 5.0
+#     phi_right = 0.0
+#     p_right = 0.0
+#     y_A_R = 1/3
+#     y_C_R = 1/3
+#     z_A = -1.0
+#     z_C = 1.0
+#     K = 'incompressible'
+#     Lambda2 = 8.553e-6
+#     a2 = 7.5412e-4
+#     number_cells = 1024
+#     relax_param = .1
+#     rtol = 1e-4
+#     max_iter = 500
     
-    # Solve the system
-    y_A, y_C, phi, p, x = solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol)
+#     # Solve the system
+#     y_A, y_C, phi, p, x = solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol)
     
-    # Plot the solution
-    plt.plot(x, phi)
-    plt.xlim(0,0.05)
-    plt.grid()
-    plt.xlabel('x [-]')
-    plt.ylabel('$\\varphi$  [-]')
-    plt.show()
+#     # Plot the solution
+#     plt.plot(x, phi)
+#     plt.xlim(0,0.05)
+#     plt.grid()
+#     plt.xlabel('x [-]')
+#     plt.ylabel('$\\varphi$  [-]')
+#     plt.show()
     
-    plt.plot(x, y_A, '--', color='tab:blue', label='$y_A$')
-    plt.plot(x, y_C, '-', color='tab:blue', label='$y_C$')
-    plt.plot(x, 1 - y_A - y_C, ':', color='tab:blue', label='$y_S$')
-    plt.xlim(0,0.05)
-    plt.legend()
-    plt.grid()
-    plt.xlabel('x [-]')
-    plt.ylabel('$y_\\alpha$ [-]')
-    plt.show()
+#     plt.plot(x, y_A, '--', color='tab:blue', label='$y_A$')
+#     plt.plot(x, y_C, '-', color='tab:blue', label='$y_C$')
+#     plt.plot(x, 1 - y_A - y_C, ':', color='tab:blue', label='$y_S$')
+#     plt.xlim(0,0.05)
+#     plt.legend()
+#     plt.grid()
+#     plt.xlabel('x [-]')
+#     plt.ylabel('$y_\\alpha$ [-]')
+#     plt.show()
     
-    plt.plot(x, p)
-    plt.xlim(0,0.05)
-    plt.grid()
-    plt.xlabel('x [-]')
-    plt.ylabel('$p$ [-]')
-    plt.show()
+#     plt.plot(x, p)
+#     plt.xlim(0,0.05)
+#     plt.grid()
+#     plt.xlabel('x [-]')
+#     plt.ylabel('$p$ [-]')
+#     plt.show()
diff --git a/fxdgm/Eq04.py b/fxdgm/Eq04.py
index a370fff..95cbdf9 100644
--- a/fxdgm/Eq04.py
+++ b/fxdgm/Eq04.py
@@ -274,7 +274,7 @@ def solve_System_4eq(phi_left:float, phi_right:float, p_right:float, z_A:float,
         return y_A, y_C, phi, p, msh
     
     
-if __name__ == '__main__':
+if __name__ == '__main__': # pragma: no cover # dont cover main in coverage
     # Define the parameters
     phi_left = 10.0
     phi_right = 0.0
diff --git a/fxdgm/EqN.py b/fxdgm/EqN.py
index b24a077..5c847d9 100644
--- a/fxdgm/EqN.py
+++ b/fxdgm/EqN.py
@@ -238,7 +238,7 @@ def solve_System_Neq(phi_left:float, phi_right:float, p_right:float, z_alpha:lis
         return y, phi, p, x
     
     
-if __name__ == '__main__':
+if __name__ == '__main__': # pragma: no cover # dont cover main in coverage
     # Define the parameters
     phi_left = 8.0
     phi_right = 0.0
-- 
GitLab


From cca2aa83478d7ff48a72d8536bd4c148a444ad8c Mon Sep 17 00:00:00 2001
From: JanHab <jan.habscheid@rwth-aachen.de>
Date: Tue, 11 Feb 2025 12:07:37 +0100
Subject: [PATCH 3/7] Try out coverage

---
 .coverage     | Bin 53248 -> 53248 bytes
 coverage.xml  |   4 +--
 fxdgm/Eq02.py |  80 +++++++++++++++++++++++++-------------------------
 3 files changed, 42 insertions(+), 42 deletions(-)

diff --git a/.coverage b/.coverage
index a9320ef354670acb84953dfaf7fc2b2f67903333..f50d7eead9a1e192f1d3388d0616e50d9d8c294c 100644
GIT binary patch
delta 522
zcmZozz}&Eac>}A1AnzXr{+;}p{Azr+_@?uP^8VQ@DDaGzEu5W&q0xA9gTFe5Zb@o!
zNoHR9<WxTuHU~DKI4ek88YZrvR*{mPtM6Lqr&mzv$O@Ea2g%D|$Qzgd6?m}#6-a^<
zsG=zdN=?hmOHJ`jEzU4>0U5=N$0#G90zW380!5HfnrKG3=A<T<6y@hsmSiToWag)&
z0#&;*0#);aR3m)!&R<-R_b&r~7QZ^*48AblzkIj(cL4+7IWJ2D3()(F@frxlsd1_-
zjx0dW14X6KEd+a>&4~r*cc3(8*ns`c>dgZ5I#6B(O*^{RS@0MH@;S3V3((_0gEY_#
d!sc-%R~DeZ8T}Dn+59g4x;~@!=41U<4gjPeswe;e

delta 313
zcmZozz}&Eac>}A1AfE*T{~`V=eh0oke24ft`7AaI3Mlch`LnYyG%8Pi;HN&>&`*Wc
zoQ;{G6vPwKPpe2t&((J=^wTS-v|wdsC<h6Pz=aJ=fZ|RpK;4{R-TeOItQO3e%8Y=@
z+?asM1i{MY`Af6fFfudLgL&`##Rd5+8ThOD9r+IPb@5s9{pCLlbeJ+9O8^VdS&VTS
zlMUlknJt)0L2N;|?I1_7Su&S{M1|p^U^lTkvjCk0(#an$!HlT}<RE5u7NC1TYUahu
Xu-GuygZ;4iUHo-@M()kW`mG!Q@0VLz

diff --git a/coverage.xml b/coverage.xml
index 4394685..3d7d1a1 100644
--- a/coverage.xml
+++ b/coverage.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" ?>
-<coverage version="7.6.11" timestamp="1739271601600" lines-valid="591" lines-covered="560" line-rate="0.9475" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
+<coverage version="7.6.11" timestamp="1739272050600" lines-valid="591" lines-covered="560" line-rate="0.9475" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
 	<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.6.11 -->
 	<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
 	<sources>
-		<source>/Users/janhabscheid/Documents/git/fxdgm/fxdgm</source>
+		<source>/Users/janhabscheid/Documents/git/fxdgm-testing/fxdgm</source>
 	</sources>
 	<packages>
 		<package name="." line-rate="0.9475" branch-rate="0" complexity="0">
diff --git a/fxdgm/Eq02.py b/fxdgm/Eq02.py
index 15f96f4..b006ed3 100644
--- a/fxdgm/Eq02.py
+++ b/fxdgm/Eq02.py
@@ -242,47 +242,47 @@ def solve_System_2eq(phi_left:float, phi_right:float, p_right:float, z_A:float,
         
         return y_A_vals, y_C_vals, phi_vals, p_vals, x_vals
     
-# if __name__ == '__main__':
-#     # Define the parameters
-#     phi_left = 5.0
-#     phi_right = 0.0
-#     p_right = 0.0
-#     y_A_R = 1/3
-#     y_C_R = 1/3
-#     z_A = -1.0
-#     z_C = 1.0
-#     K = 'incompressible'
-#     Lambda2 = 8.553e-6
-#     a2 = 7.5412e-4
-#     number_cells = 1024
-#     relax_param = .1
-#     rtol = 1e-4
-#     max_iter = 500
+if __name__ == '__main__': # pragma: no cover # dont cover main in coverage
+    # Define the parameters
+    phi_left = 5.0
+    phi_right = 0.0
+    p_right = 0.0
+    y_A_R = 1/3
+    y_C_R = 1/3
+    z_A = -1.0
+    z_C = 1.0
+    K = 'incompressible'
+    Lambda2 = 8.553e-6
+    a2 = 7.5412e-4
+    number_cells = 1024
+    relax_param = .1
+    rtol = 1e-4
+    max_iter = 500
     
-#     # Solve the system
-#     y_A, y_C, phi, p, x = solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol)
+    # Solve the system
+    y_A, y_C, phi, p, x = solve_System_2eq(phi_left, phi_right, p_right, z_A, z_C, y_A_R, y_C_R, K, Lambda2, a2, number_cells, relax_param=relax_param, x0=0, x1=1, refinement_style='uniform', return_type='Vector', max_iter=max_iter, rtol=rtol)
     
-#     # Plot the solution
-#     plt.plot(x, phi)
-#     plt.xlim(0,0.05)
-#     plt.grid()
-#     plt.xlabel('x [-]')
-#     plt.ylabel('$\\varphi$  [-]')
-#     plt.show()
+    # Plot the solution
+    plt.plot(x, phi)
+    plt.xlim(0,0.05)
+    plt.grid()
+    plt.xlabel('x [-]')
+    plt.ylabel('$\\varphi$  [-]')
+    plt.show()
     
-#     plt.plot(x, y_A, '--', color='tab:blue', label='$y_A$')
-#     plt.plot(x, y_C, '-', color='tab:blue', label='$y_C$')
-#     plt.plot(x, 1 - y_A - y_C, ':', color='tab:blue', label='$y_S$')
-#     plt.xlim(0,0.05)
-#     plt.legend()
-#     plt.grid()
-#     plt.xlabel('x [-]')
-#     plt.ylabel('$y_\\alpha$ [-]')
-#     plt.show()
+    plt.plot(x, y_A, '--', color='tab:blue', label='$y_A$')
+    plt.plot(x, y_C, '-', color='tab:blue', label='$y_C$')
+    plt.plot(x, 1 - y_A - y_C, ':', color='tab:blue', label='$y_S$')
+    plt.xlim(0,0.05)
+    plt.legend()
+    plt.grid()
+    plt.xlabel('x [-]')
+    plt.ylabel('$y_\\alpha$ [-]')
+    plt.show()
     
-#     plt.plot(x, p)
-#     plt.xlim(0,0.05)
-#     plt.grid()
-#     plt.xlabel('x [-]')
-#     plt.ylabel('$p$ [-]')
-#     plt.show()
+    plt.plot(x, p)
+    plt.xlim(0,0.05)
+    plt.grid()
+    plt.xlabel('x [-]')
+    plt.ylabel('$p$ [-]')
+    plt.show()
-- 
GitLab


From 87aceceb8bcd348db6bc9f36c1de33e44378aba7 Mon Sep 17 00:00:00 2001
From: JanHab <jan.habscheid@rwth-aachen.de>
Date: Tue, 11 Feb 2025 12:10:54 +0100
Subject: [PATCH 4/7] Update coverage to generate html

---
 .gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 15763ec..90cd721 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -50,7 +50,7 @@ test:
     - docker
   script:
     # - python -m pytest # Run the tests
-    - pytest --cov=fxdgm --cov-report=xml --cov-report=term-missing tests/ # Run the tests and store coverage 
+    -  pytest --cov=fxdgm --cov-report=term --cov-report=html tests/ # Run the tests and store coverage 
   artifacts:
     paths:
       - coverage.xml # Save the coverage report
-- 
GitLab


From a14885b92ef9381ee3d0773e72ca468b0cec8491 Mon Sep 17 00:00:00 2001
From: JanHab <jan.habscheid@rwth-aachen.de>
Date: Tue, 11 Feb 2025 12:12:19 +0100
Subject: [PATCH 5/7] Update artifacts for storage

---
 .gitlab-ci.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 90cd721..4df2e31 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -53,7 +53,7 @@ test:
     -  pytest --cov=fxdgm --cov-report=term --cov-report=html tests/ # Run the tests and store coverage 
   artifacts:
     paths:
-      - coverage.xml # Save the coverage report
+      - htmlcov # Save the coverage report
     expire_in: 12 month  # Optional: Set how long to keep the artifacts (default: 30 days)
   coverage: '/^TOTAL.*\s+(\d+\%)$/'
 
-- 
GitLab


From 8c7f4a86940117a6c00bb5de903a7c887d7f342f Mon Sep 17 00:00:00 2001
From: JanHab <jan.habscheid@rwth-aachen.de>
Date: Wed, 12 Feb 2025 12:24:54 +0100
Subject: [PATCH 6/7] Update base docker image to (hopefully) get the testing
 problem to run

---
 .gitignore | 3 +++
 Dockerfile | 7 +++----
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index 4554ccf..f353371 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,9 @@
 *.pytest_cache*
 # ignore Sphinx documentation output
 *docs/build
+# Ignore coverage files
+.coverage
+htmlcov
 # Ignore pip folder
 *egg-info/*
 # Ignore venv files
diff --git a/Dockerfile b/Dockerfile
index b58959d..dd58c7c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,5 +1,5 @@
 # Start with a base image that includes conda
-FROM continuumio/miniconda3
+FROM continuumio/miniconda3:latest
 
 # Set environment variables
 ENV CONDA_DEFAULT_ENV=base
@@ -7,15 +7,14 @@ ENV PATH /opt/conda/envs/${CONDA_DEFAULT_ENV}/bin:$PATH
 ENV HOME /root
 
 # Create the environment and install packages
+# RUN conda install -n ${CONDA_DEFAULT_ENV} python=3.11.8 -y
 # FEniCSx backend + documentation and testing dependencies
-RUN conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest==8.3.3 pytest-cov==6.0.0 -y
-# fxdgm package from git
+RUN conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest=8.3.3 pytest-cov=6.0.0 sqlite=3.41.2 -y
 
 # Activate environment
 # SHELL ["conda", "run", "-n", "fenicsx-env", "/bin/bash", "-c"]
 
 WORKDIR /root
-# WORKDIR /solver
 
 ADD . /fxdgm
 RUN pip install --editable /fxdgm/.
-- 
GitLab


From 14e10267ca05142d808be1ccf988d423501166be Mon Sep 17 00:00:00 2001
From: JanHab <jan.habscheid@rwth-aachen.de>
Date: Wed, 12 Feb 2025 14:48:31 +0100
Subject: [PATCH 7/7] Update comments and rm coverage from repo, just keep as
 artefact

---
 .coverage      | Bin 53248 -> 0 bytes
 .gitlab-ci.yml |   1 -
 Dockerfile     |   5 +-
 coverage.xml   | 640 -------------------------------------------------
 4 files changed, 1 insertion(+), 645 deletions(-)
 delete mode 100644 .coverage
 delete mode 100644 coverage.xml

diff --git a/.coverage b/.coverage
deleted file mode 100644
index f50d7eead9a1e192f1d3388d0616e50d9d8c294c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 53248
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

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4df2e31..cf48a98 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -49,7 +49,6 @@ test:
   tags:
     - docker
   script:
-    # - python -m pytest # Run the tests
     -  pytest --cov=fxdgm --cov-report=term --cov-report=html tests/ # Run the tests and store coverage 
   artifacts:
     paths:
diff --git a/Dockerfile b/Dockerfile
index dd58c7c..ae690b6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -7,13 +7,10 @@ ENV PATH /opt/conda/envs/${CONDA_DEFAULT_ENV}/bin:$PATH
 ENV HOME /root
 
 # Create the environment and install packages
-# RUN conda install -n ${CONDA_DEFAULT_ENV} python=3.11.8 -y
 # FEniCSx backend + documentation and testing dependencies
+# sqlite for coverage, it necessary
 RUN conda install -n ${CONDA_DEFAULT_ENV} -c conda-forge fenics-dolfinx=0.8.0 mpich=4.2.1 pyvista=0.43.10 gcc=12.4.0 sphinx=7.3.7 myst-parser=4.0.0 sphinx-copybutton=0.5.2 sphinx-rtd-theme=3.0.1 pytest=8.3.3 pytest-cov=6.0.0 sqlite=3.41.2 -y
 
-# Activate environment
-# SHELL ["conda", "run", "-n", "fenicsx-env", "/bin/bash", "-c"]
-
 WORKDIR /root
 
 ADD . /fxdgm
diff --git a/coverage.xml b/coverage.xml
deleted file mode 100644
index 3d7d1a1..0000000
--- a/coverage.xml
+++ /dev/null
@@ -1,640 +0,0 @@
-<?xml version="1.0" ?>
-<coverage version="7.6.11" timestamp="1739272050600" lines-valid="591" lines-covered="560" line-rate="0.9475" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
-	<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.6.11 -->
-	<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
-	<sources>
-		<source>/Users/janhabscheid/Documents/git/fxdgm-testing/fxdgm</source>
-	</sources>
-	<packages>
-		<package name="." line-rate="0.9475" branch-rate="0" complexity="0">
-			<classes>
-				<class name="ElectrolyticDiode.py" filename="ElectrolyticDiode.py" complexity="0" line-rate="0.9384" branch-rate="0">
-					<methods/>
-					<lines>
-						<line number="10" hits="1"/>
-						<line number="11" hits="1"/>
-						<line number="12" hits="1"/>
-						<line number="13" hits="1"/>
-						<line number="14" hits="1"/>
-						<line number="15" hits="1"/>
-						<line number="16" hits="1"/>
-						<line number="17" hits="1"/>
-						<line number="18" hits="1"/>
-						<line number="19" hits="1"/>
-						<line number="21" hits="1"/>
-						<line number="82" hits="1"/>
-						<line number="83" hits="0"/>
-						<line number="84" hits="1"/>
-						<line number="85" hits="1"/>
-						<line number="86" hits="1"/>
-						<line number="87" hits="1"/>
-						<line number="88" hits="0"/>
-						<line number="89" hits="0"/>
-						<line number="90" hits="0"/>
-						<line number="93" hits="1"/>
-						<line number="94" hits="1"/>
-						<line number="95" hits="0"/>
-						<line number="97" hits="1"/>
-						<line number="98" hits="0"/>
-						<line number="100" hits="1"/>
-						<line number="101" hits="1"/>
-						<line number="103" hits="1"/>
-						<line number="104" hits="1"/>
-						<line number="106" hits="1"/>
-						<line number="107" hits="1"/>
-						<line number="108" hits="1"/>
-						<line number="109" hits="1"/>
-						<line number="111" hits="1"/>
-						<line number="112" hits="1"/>
-						<line number="113" hits="1"/>
-						<line number="114" hits="1"/>
-						<line number="116" hits="1"/>
-						<line number="117" hits="1"/>
-						<line number="118" hits="1"/>
-						<line number="119" hits="1"/>
-						<line number="121" hits="1"/>
-						<line number="122" hits="1"/>
-						<line number="123" hits="1"/>
-						<line number="124" hits="1"/>
-						<line number="127" hits="1"/>
-						<line number="130" hits="1"/>
-						<line number="135" hits="1"/>
-						<line number="136" hits="1"/>
-						<line number="139" hits="1"/>
-						<line number="140" hits="1"/>
-						<line number="141" hits="1"/>
-						<line number="144" hits="1"/>
-						<line number="145" hits="1"/>
-						<line number="146" hits="1"/>
-						<line number="147" hits="1"/>
-						<line number="149" hits="1"/>
-						<line number="150" hits="1"/>
-						<line number="151" hits="1"/>
-						<line number="152" hits="1"/>
-						<line number="153" hits="1"/>
-						<line number="154" hits="1"/>
-						<line number="155" hits="1"/>
-						<line number="156" hits="1"/>
-						<line number="157" hits="1"/>
-						<line number="158" hits="1"/>
-						<line number="159" hits="1"/>
-						<line number="160" hits="1"/>
-						<line number="162" hits="1"/>
-						<line number="163" hits="1"/>
-						<line number="164" hits="1"/>
-						<line number="165" hits="1"/>
-						<line number="166" hits="1"/>
-						<line number="167" hits="1"/>
-						<line number="168" hits="1"/>
-						<line number="169" hits="1"/>
-						<line number="170" hits="1"/>
-						<line number="171" hits="1"/>
-						<line number="172" hits="1"/>
-						<line number="173" hits="1"/>
-						<line number="176" hits="1"/>
-						<line number="177" hits="1"/>
-						<line number="178" hits="1"/>
-						<line number="179" hits="1"/>
-						<line number="181" hits="1"/>
-						<line number="182" hits="1"/>
-						<line number="183" hits="1"/>
-						<line number="184" hits="1"/>
-						<line number="186" hits="1"/>
-						<line number="187" hits="1"/>
-						<line number="188" hits="1"/>
-						<line number="189" hits="1"/>
-						<line number="192" hits="1"/>
-						<line number="212" hits="1"/>
-						<line number="246" hits="1"/>
-						<line number="247" hits="1"/>
-						<line number="250" hits="1"/>
-						<line number="251" hits="1"/>
-						<line number="253" hits="1"/>
-						<line number="254" hits="1"/>
-						<line number="262" hits="1"/>
-						<line number="274" hits="1"/>
-						<line number="275" hits="1"/>
-						<line number="276" hits="1"/>
-						<line number="277" hits="1"/>
-						<line number="278" hits="1"/>
-						<line number="279" hits="1"/>
-						<line number="280" hits="1"/>
-						<line number="281" hits="1"/>
-						<line number="282" hits="1"/>
-						<line number="283" hits="1"/>
-						<line number="284" hits="1"/>
-						<line number="285" hits="1"/>
-						<line number="286" hits="1"/>
-						<line number="287" hits="1"/>
-						<line number="295" hits="1"/>
-						<line number="298" hits="1"/>
-						<line number="299" hits="1"/>
-						<line number="300" hits="1"/>
-						<line number="301" hits="1"/>
-						<line number="303" hits="1"/>
-						<line number="304" hits="1"/>
-						<line number="305" hits="1"/>
-						<line number="306" hits="1"/>
-						<line number="309" hits="1"/>
-						<line number="311" hits="1"/>
-						<line number="312" hits="1"/>
-						<line number="313" hits="1"/>
-						<line number="314" hits="1"/>
-						<line number="315" hits="1"/>
-						<line number="316" hits="1"/>
-						<line number="319" hits="1"/>
-						<line number="320" hits="1"/>
-						<line number="321" hits="1"/>
-						<line number="322" hits="1"/>
-						<line number="325" hits="1"/>
-						<line number="326" hits="1"/>
-						<line number="327" hits="1"/>
-						<line number="328" hits="1"/>
-						<line number="330" hits="1"/>
-						<line number="331" hits="1"/>
-						<line number="333" hits="1"/>
-						<line number="334" hits="1"/>
-						<line number="335" hits="0"/>
-						<line number="336" hits="0"/>
-						<line number="338" hits="0"/>
-					</lines>
-				</class>
-				<class name="Eq02.py" filename="Eq02.py" complexity="0" line-rate="0.9604" branch-rate="0">
-					<methods/>
-					<lines>
-						<line number="8" hits="1"/>
-						<line number="9" hits="1"/>
-						<line number="10" hits="1"/>
-						<line number="11" hits="1"/>
-						<line number="12" hits="1"/>
-						<line number="13" hits="1"/>
-						<line number="14" hits="1"/>
-						<line number="15" hits="1"/>
-						<line number="16" hits="1"/>
-						<line number="19" hits="1"/>
-						<line number="93" hits="1"/>
-						<line number="94" hits="0"/>
-						<line number="96" hits="1"/>
-						<line number="97" hits="1"/>
-						<line number="100" hits="1"/>
-						<line number="101" hits="1"/>
-						<line number="103" hits="1"/>
-						<line number="104" hits="1"/>
-						<line number="107" hits="1"/>
-						<line number="108" hits="1"/>
-						<line number="110" hits="1"/>
-						<line number="113" hits="1"/>
-						<line number="116" hits="1"/>
-						<line number="117" hits="1"/>
-						<line number="120" hits="1"/>
-						<line number="121" hits="1"/>
-						<line number="122" hits="1"/>
-						<line number="125" hits="1"/>
-						<line number="126" hits="1"/>
-						<line number="129" hits="1"/>
-						<line number="130" hits="1"/>
-						<line number="131" hits="1"/>
-						<line number="132" hits="1"/>
-						<line number="133" hits="1"/>
-						<line number="134" hits="1"/>
-						<line number="137" hits="1"/>
-						<line number="138" hits="1"/>
-						<line number="139" hits="1"/>
-						<line number="140" hits="1"/>
-						<line number="141" hits="1"/>
-						<line number="142" hits="1"/>
-						<line number="146" hits="1"/>
-						<line number="147" hits="1"/>
-						<line number="148" hits="1"/>
-						<line number="149" hits="1"/>
-						<line number="151" hits="1"/>
-						<line number="152" hits="1"/>
-						<line number="156" hits="1"/>
-						<line number="158" hits="1"/>
-						<line number="159" hits="1"/>
-						<line number="160" hits="1"/>
-						<line number="161" hits="1"/>
-						<line number="162" hits="1"/>
-						<line number="163" hits="1"/>
-						<line number="164" hits="1"/>
-						<line number="166" hits="1"/>
-						<line number="167" hits="1"/>
-						<line number="168" hits="1"/>
-						<line number="169" hits="1"/>
-						<line number="170" hits="1"/>
-						<line number="171" hits="1"/>
-						<line number="172" hits="1"/>
-						<line number="176" hits="1"/>
-						<line number="178" hits="1"/>
-						<line number="179" hits="1"/>
-						<line number="182" hits="1"/>
-						<line number="183" hits="1"/>
-						<line number="186" hits="1"/>
-						<line number="187" hits="1"/>
-						<line number="189" hits="1"/>
-						<line number="196" hits="1"/>
-						<line number="199" hits="1"/>
-						<line number="202" hits="1"/>
-						<line number="203" hits="1"/>
-						<line number="204" hits="1"/>
-						<line number="205" hits="1"/>
-						<line number="206" hits="1"/>
-						<line number="208" hits="0"/>
-						<line number="209" hits="0"/>
-						<line number="211" hits="0"/>
-						<line number="212" hits="1"/>
-						<line number="213" hits="1"/>
-						<line number="216" hits="1"/>
-						<line number="217" hits="1"/>
-						<line number="218" hits="1"/>
-						<line number="219" hits="1"/>
-						<line number="222" hits="1"/>
-						<line number="225" hits="1"/>
-						<line number="226" hits="1"/>
-						<line number="227" hits="1"/>
-						<line number="228" hits="1"/>
-						<line number="231" hits="1"/>
-						<line number="232" hits="1"/>
-						<line number="234" hits="1"/>
-						<line number="235" hits="1"/>
-						<line number="237" hits="1"/>
-						<line number="238" hits="1"/>
-						<line number="239" hits="1"/>
-						<line number="240" hits="1"/>
-						<line number="241" hits="1"/>
-						<line number="243" hits="1"/>
-					</lines>
-				</class>
-				<class name="Eq04.py" filename="Eq04.py" complexity="0" line-rate="0.9558" branch-rate="0">
-					<methods/>
-					<lines>
-						<line number="8" hits="1"/>
-						<line number="9" hits="1"/>
-						<line number="10" hits="1"/>
-						<line number="11" hits="1"/>
-						<line number="12" hits="1"/>
-						<line number="13" hits="1"/>
-						<line number="14" hits="1"/>
-						<line number="15" hits="1"/>
-						<line number="16" hits="1"/>
-						<line number="19" hits="1"/>
-						<line number="89" hits="1"/>
-						<line number="90" hits="1"/>
-						<line number="93" hits="1"/>
-						<line number="94" hits="1"/>
-						<line number="96" hits="1"/>
-						<line number="97" hits="1"/>
-						<line number="100" hits="1"/>
-						<line number="101" hits="1"/>
-						<line number="103" hits="1"/>
-						<line number="106" hits="1"/>
-						<line number="109" hits="1"/>
-						<line number="110" hits="1"/>
-						<line number="113" hits="1"/>
-						<line number="114" hits="1"/>
-						<line number="115" hits="1"/>
-						<line number="118" hits="1"/>
-						<line number="119" hits="1"/>
-						<line number="120" hits="1"/>
-						<line number="121" hits="1"/>
-						<line number="124" hits="1"/>
-						<line number="125" hits="1"/>
-						<line number="126" hits="1"/>
-						<line number="127" hits="1"/>
-						<line number="128" hits="1"/>
-						<line number="129" hits="1"/>
-						<line number="130" hits="1"/>
-						<line number="131" hits="1"/>
-						<line number="132" hits="1"/>
-						<line number="133" hits="1"/>
-						<line number="136" hits="1"/>
-						<line number="137" hits="1"/>
-						<line number="138" hits="1"/>
-						<line number="139" hits="1"/>
-						<line number="140" hits="1"/>
-						<line number="141" hits="1"/>
-						<line number="142" hits="1"/>
-						<line number="143" hits="1"/>
-						<line number="144" hits="1"/>
-						<line number="145" hits="1"/>
-						<line number="149" hits="1"/>
-						<line number="150" hits="1"/>
-						<line number="151" hits="1"/>
-						<line number="152" hits="1"/>
-						<line number="154" hits="1"/>
-						<line number="155" hits="1"/>
-						<line number="157" hits="1"/>
-						<line number="158" hits="1"/>
-						<line number="160" hits="1"/>
-						<line number="161" hits="1"/>
-						<line number="164" hits="1"/>
-						<line number="169" hits="1"/>
-						<line number="171" hits="1"/>
-						<line number="172" hits="1"/>
-						<line number="175" hits="1"/>
-						<line number="176" hits="1"/>
-						<line number="179" hits="1"/>
-						<line number="180" hits="1"/>
-						<line number="184" hits="1"/>
-						<line number="194" hits="1"/>
-						<line number="195" hits="1"/>
-						<line number="201" hits="1"/>
-						<line number="202" hits="1"/>
-						<line number="205" hits="1"/>
-						<line number="206" hits="1"/>
-						<line number="209" hits="1"/>
-						<line number="210" hits="1"/>
-						<line number="212" hits="1"/>
-						<line number="213" hits="1"/>
-						<line number="215" hits="1"/>
-						<line number="225" hits="1"/>
-						<line number="228" hits="1"/>
-						<line number="229" hits="1"/>
-						<line number="230" hits="1"/>
-						<line number="231" hits="1"/>
-						<line number="233" hits="1"/>
-						<line number="234" hits="1"/>
-						<line number="235" hits="1"/>
-						<line number="236" hits="1"/>
-						<line number="239" hits="1"/>
-						<line number="242" hits="1"/>
-						<line number="243" hits="1"/>
-						<line number="244" hits="1"/>
-						<line number="245" hits="1"/>
-						<line number="246" hits="1"/>
-						<line number="248" hits="0"/>
-						<line number="249" hits="0"/>
-						<line number="251" hits="0"/>
-						<line number="252" hits="1"/>
-						<line number="253" hits="1"/>
-						<line number="256" hits="1"/>
-						<line number="257" hits="1"/>
-						<line number="258" hits="1"/>
-						<line number="259" hits="1"/>
-						<line number="262" hits="1"/>
-						<line number="265" hits="1"/>
-						<line number="266" hits="1"/>
-						<line number="267" hits="1"/>
-						<line number="268" hits="1"/>
-						<line number="269" hits="1"/>
-						<line number="270" hits="1"/>
-						<line number="272" hits="1"/>
-						<line number="273" hits="0"/>
-						<line number="274" hits="0"/>
-					</lines>
-				</class>
-				<class name="EqN.py" filename="EqN.py" complexity="0" line-rate="0.9364" branch-rate="0">
-					<methods/>
-					<lines>
-						<line number="8" hits="1"/>
-						<line number="9" hits="1"/>
-						<line number="10" hits="1"/>
-						<line number="11" hits="1"/>
-						<line number="12" hits="1"/>
-						<line number="13" hits="1"/>
-						<line number="14" hits="1"/>
-						<line number="15" hits="1"/>
-						<line number="16" hits="1"/>
-						<line number="18" hits="1"/>
-						<line number="82" hits="1"/>
-						<line number="83" hits="0"/>
-						<line number="84" hits="1"/>
-						<line number="85" hits="0"/>
-						<line number="87" hits="1"/>
-						<line number="88" hits="1"/>
-						<line number="91" hits="1"/>
-						<line number="92" hits="1"/>
-						<line number="94" hits="1"/>
-						<line number="95" hits="1"/>
-						<line number="98" hits="1"/>
-						<line number="99" hits="1"/>
-						<line number="101" hits="1"/>
-						<line number="104" hits="1"/>
-						<line number="107" hits="1"/>
-						<line number="108" hits="1"/>
-						<line number="109" hits="1"/>
-						<line number="110" hits="1"/>
-						<line number="113" hits="1"/>
-						<line number="114" hits="1"/>
-						<line number="115" hits="1"/>
-						<line number="117" hits="1"/>
-						<line number="118" hits="1"/>
-						<line number="119" hits="1"/>
-						<line number="120" hits="1"/>
-						<line number="123" hits="1"/>
-						<line number="124" hits="1"/>
-						<line number="127" hits="1"/>
-						<line number="128" hits="1"/>
-						<line number="129" hits="1"/>
-						<line number="130" hits="1"/>
-						<line number="131" hits="1"/>
-						<line number="132" hits="1"/>
-						<line number="135" hits="1"/>
-						<line number="136" hits="1"/>
-						<line number="137" hits="1"/>
-						<line number="138" hits="1"/>
-						<line number="139" hits="1"/>
-						<line number="140" hits="1"/>
-						<line number="143" hits="1"/>
-						<line number="144" hits="1"/>
-						<line number="145" hits="1"/>
-						<line number="146" hits="1"/>
-						<line number="148" hits="1"/>
-						<line number="149" hits="1"/>
-						<line number="152" hits="1"/>
-						<line number="155" hits="1"/>
-						<line number="156" hits="1"/>
-						<line number="157" hits="1"/>
-						<line number="158" hits="1"/>
-						<line number="159" hits="1"/>
-						<line number="160" hits="1"/>
-						<line number="161" hits="1"/>
-						<line number="162" hits="1"/>
-						<line number="165" hits="1"/>
-						<line number="167" hits="1"/>
-						<line number="168" hits="1"/>
-						<line number="169" hits="1"/>
-						<line number="170" hits="1"/>
-						<line number="171" hits="1"/>
-						<line number="174" hits="1"/>
-						<line number="175" hits="1"/>
-						<line number="176" hits="1"/>
-						<line number="177" hits="1"/>
-						<line number="180" hits="1"/>
-						<line number="187" hits="1"/>
-						<line number="188" hits="1"/>
-						<line number="191" hits="1"/>
-						<line number="192" hits="0"/>
-						<line number="194" hits="0"/>
-						<line number="195" hits="1"/>
-						<line number="198" hits="1"/>
-						<line number="199" hits="1"/>
-						<line number="202" hits="1"/>
-						<line number="203" hits="1"/>
-						<line number="204" hits="1"/>
-						<line number="205" hits="1"/>
-						<line number="208" hits="1"/>
-						<line number="211" hits="1"/>
-						<line number="212" hits="1"/>
-						<line number="213" hits="1"/>
-						<line number="214" hits="1"/>
-						<line number="215" hits="1"/>
-						<line number="217" hits="0"/>
-						<line number="218" hits="0"/>
-						<line number="220" hits="0"/>
-						<line number="221" hits="1"/>
-						<line number="222" hits="1"/>
-						<line number="225" hits="1"/>
-						<line number="226" hits="1"/>
-						<line number="227" hits="1"/>
-						<line number="228" hits="1"/>
-						<line number="231" hits="1"/>
-						<line number="232" hits="1"/>
-						<line number="233" hits="1"/>
-						<line number="234" hits="1"/>
-						<line number="235" hits="1"/>
-						<line number="236" hits="1"/>
-						<line number="237" hits="1"/>
-						<line number="238" hits="1"/>
-					</lines>
-				</class>
-				<class name="Helper_DoubleLayerCapacity.py" filename="Helper_DoubleLayerCapacity.py" complexity="0" line-rate="0.977" branch-rate="0">
-					<methods/>
-					<lines>
-						<line number="4" hits="1"/>
-						<line number="5" hits="1"/>
-						<line number="9" hits="1"/>
-						<line number="23" hits="1"/>
-						<line number="25" hits="1"/>
-						<line number="41" hits="1"/>
-						<line number="43" hits="1"/>
-						<line number="59" hits="1"/>
-						<line number="61" hits="1"/>
-						<line number="77" hits="1"/>
-						<line number="78" hits="1"/>
-						<line number="79" hits="1"/>
-						<line number="80" hits="1"/>
-						<line number="82" hits="1"/>
-						<line number="108" hits="1"/>
-						<line number="109" hits="1"/>
-						<line number="110" hits="1"/>
-						<line number="112" hits="1"/>
-						<line number="144" hits="1"/>
-						<line number="145" hits="1"/>
-						<line number="146" hits="1"/>
-						<line number="147" hits="1"/>
-						<line number="148" hits="1"/>
-						<line number="150" hits="1"/>
-						<line number="188" hits="1"/>
-						<line number="189" hits="0"/>
-						<line number="190" hits="1"/>
-						<line number="191" hits="1"/>
-						<line number="192" hits="1"/>
-						<line number="194" hits="1"/>
-						<line number="195" hits="1"/>
-						<line number="196" hits="1"/>
-						<line number="199" hits="1"/>
-						<line number="200" hits="1"/>
-						<line number="202" hits="1"/>
-						<line number="203" hits="1"/>
-						<line number="204" hits="1"/>
-						<line number="206" hits="1"/>
-						<line number="207" hits="1"/>
-						<line number="208" hits="1"/>
-						<line number="210" hits="1"/>
-						<line number="212" hits="1"/>
-						<line number="214" hits="1"/>
-						<line number="215" hits="1"/>
-						<line number="217" hits="1"/>
-						<line number="218" hits="1"/>
-						<line number="221" hits="1"/>
-						<line number="265" hits="1"/>
-						<line number="266" hits="1"/>
-						<line number="267" hits="1"/>
-						<line number="268" hits="1"/>
-						<line number="269" hits="1"/>
-						<line number="273" hits="1"/>
-						<line number="311" hits="1"/>
-						<line number="312" hits="0"/>
-						<line number="313" hits="1"/>
-						<line number="314" hits="1"/>
-						<line number="315" hits="1"/>
-						<line number="317" hits="1"/>
-						<line number="318" hits="1"/>
-						<line number="319" hits="1"/>
-						<line number="321" hits="1"/>
-						<line number="323" hits="1"/>
-						<line number="324" hits="1"/>
-						<line number="326" hits="1"/>
-						<line number="328" hits="1"/>
-						<line number="329" hits="1"/>
-						<line number="331" hits="1"/>
-						<line number="333" hits="1"/>
-						<line number="334" hits="1"/>
-						<line number="335" hits="1"/>
-						<line number="337" hits="1"/>
-						<line number="338" hits="1"/>
-						<line number="340" hits="1"/>
-						<line number="341" hits="1"/>
-						<line number="343" hits="1"/>
-						<line number="344" hits="1"/>
-						<line number="346" hits="1"/>
-						<line number="348" hits="1"/>
-						<line number="350" hits="1"/>
-						<line number="355" hits="1"/>
-						<line number="403" hits="1"/>
-						<line number="404" hits="1"/>
-						<line number="406" hits="1"/>
-						<line number="407" hits="1"/>
-						<line number="408" hits="1"/>
-						<line number="409" hits="1"/>
-					</lines>
-				</class>
-				<class name="RefinedMesh1D.py" filename="RefinedMesh1D.py" complexity="0" line-rate="0.8519" branch-rate="0">
-					<methods/>
-					<lines>
-						<line number="8" hits="1"/>
-						<line number="9" hits="1"/>
-						<line number="10" hits="1"/>
-						<line number="11" hits="1"/>
-						<line number="12" hits="1"/>
-						<line number="16" hits="1"/>
-						<line number="32" hits="1"/>
-						<line number="33" hits="1"/>
-						<line number="34" hits="1"/>
-						<line number="35" hits="1"/>
-						<line number="36" hits="1"/>
-						<line number="37" hits="1"/>
-						<line number="38" hits="0"/>
-						<line number="39" hits="0"/>
-						<line number="40" hits="0"/>
-						<line number="41" hits="0"/>
-						<line number="42" hits="1"/>
-						<line number="43" hits="1"/>
-						<line number="44" hits="1"/>
-						<line number="45" hits="1"/>
-						<line number="46" hits="1"/>
-						<line number="47" hits="1"/>
-						<line number="48" hits="1"/>
-						<line number="49" hits="1"/>
-						<line number="50" hits="1"/>
-						<line number="51" hits="1"/>
-						<line number="52" hits="1"/>
-					</lines>
-				</class>
-				<class name="__init__.py" filename="__init__.py" complexity="0" line-rate="1" branch-rate="0">
-					<methods/>
-					<lines>
-						<line number="1" hits="1"/>
-						<line number="3" hits="1"/>
-						<line number="4" hits="1"/>
-						<line number="5" hits="1"/>
-						<line number="6" hits="1"/>
-						<line number="7" hits="1"/>
-						<line number="8" hits="1"/>
-					</lines>
-				</class>
-			</classes>
-		</package>
-	</packages>
-</coverage>
-- 
GitLab