From fd2784ed02d1c9a77498b704654ce116d0c644c3 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 18 Jun 2020 17:10:20 -0600 Subject: [PATCH 01/46] new stuff --- .gitlab-ci.yml | 213 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..dd4df250 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,213 @@ +image: usgs/centos:8 + +stages: + - test + - integration + - deploy + +variables: + CI_REGISTRY: ${CODE_REGISTRY} + CI_REGISTRY_IMAGE: ${CODE_REGISTRY_IMAGE} + +## -------------------------------------------------- +# Templates +## -------------------------------------------------- + +.adjust_image_names: + before_script: + - IMAGE_NAME=usgs/${APP_NAME}:${CI_COMMIT_REF_SLUG} + - IMAGE_NAME=${IMAGE_NAME/:master/:latest} + - INTERNAL_IMAGE_NAME=${CI_REGISTRY_IMAGE}/${IMAGE_NAME} + - STACK_NAME=${APP_NAME} + +.build_docker_image: + cache: {} + extends: + - .adjust_image_names + image: ${CODE_REGISTRY}/ghsc/hazdev/cloud-formation/hazdev-build-runner:latest + only: + - master@ghsc/geomag/geomag-plots + - production@ghsc/geomag/geomag-plots + - tags@ghsc/geomag/geomag-plots + script: + - docker build + --pull + --build-arg APP_NAME=${APP_NAME} + --build-arg FROM_IMAGE=${FROM_IMAGE} + --build-arg GIT_BRANCH_NAME=${CI_COMMIT_REF_NAME} + --build-arg GIT_COMMIT_SHA=${CI_COMMIT_SHA} + --tag local/${IMAGE_NAME} . + + - docker tag local/${IMAGE_NAME} ${IMAGE_NAME} + - docker push ${IMAGE_NAME} + - docker image rm ${IMAGE_NAME} + + - docker tag local/${IMAGE_NAME} ${INTERNAL_IMAGE_NAME} + - docker push ${INTERNAL_IMAGE_NAME} + - docker image rm ${INTERNAL_IMAGE_NAME} + stage: integration + tags: + - build + variables: + FROM_IMAGE: ${CODE_REGISTRY}/devops/images/usgs/centos:latest + +.check_code: + cache: {} + image: usgs/centos:latest + script: + - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh + - bash miniconda.sh -b -p $HOME/miniconda + - export PATH="$HOME/miniconda/bin:$PATH" + - conda config --set always_yes yes --set changeps1 no + - conda update --yes conda + - conda info -a + # Install Project Dependencies + - conda config --add channels conda-forge + - conda create -q -n test-environment python=${PYTHON_VERSION} obspy pycurl + - source activate test-environment + - pip install pipenv + - pipenv --site-packages install --dev + # Run Code Checks + - black --check . + - pytest + stage: test + tags: + - development + variables: + PYTHON_VERSION: 3.8 + +.deploy: + cache: {} + extends: + - .adjust_image_names + image: ${CODE_REGISTRY}/ghsc/hazdev/cloud-formation/hazdev-build-runner:latest + script: + - git clone ${GENERIC_SWARM_DEPLOY_REPO} generic-deploy + - export REGISTRY=${CI_REGISTRY_IMAGE} + - cp -v + generic-deploy/default.config.sh + generic-deploy/default.funcs.sh + generic-deploy/deploy.sh + scripts/. + - ./scripts/deploy.sh + stage: deploy + tags: + - deploy + - swarm + +.staging: + only: + - master@ghsc/geomag/geomag-plots + - tags@ghsc/geomag/geomag-plots + +.staging01: + tags: + - staging01 + +.staging02: + tags: + - staging02 + +.mage: + variables: + USGS_ONLY: 'false' + +.mage01: + tags: + - mage01 + +.production: + except: + - ^.*beta.*$ + - ^.*-rc.*$ + only: + - tags@ghsc/geomag/geomag-plots + - production@ghsc/geomag/geomag-plots + when: manual + +.production01: + tags: + - production01 + +.production02: + tags: + - production02 + +## -------------------------------------------------- +# Test Stage +## -------------------------------------------------- + +Check Python 3.6: + extends: + - .check_code + variables: + PYTHON_VERSION: 3.6 + +Check Python 3.7: + extends: + - .check_code + variables: + PYTHON_VERSION: 3.7 + +Check Python 3.8: + extends: + - .check_code + variables: + PYTHON_VERSION: 3.8 + +## -------------------------------------------------- +# Integration Stage +## -------------------------------------------------- + +Build Algorithms Image: + extends: + - .build_docker_image + variables: + APP_NAME: geomag-algorithms +# TODO: Penetration testing (e.g. OWASP ZAP etc...) + +## -------------------------------------------------- +# Deploy Stage +## -------------------------------------------------- + +# Deploy Production01: + +# extends: +# - .deploy +# - .production +# - .production01 +# variables: +# APP_NAME: geomag-plots + +# Deploy Production02: +# extends: +# - .deploy +# - .production +# - .production02 +# variables: +# APP_NAME: geomag-plots + +# Deploy Staging01: +# extends: +# - .deploy +# - .staging +# - .staging01 +# variables: +# APP_NAME: geomag-plots + +# Deploy Staging02: +# extends: +# - .deploy +# - .staging +# - .staging02 +# variables: +# APP_NAME: geomag-plots + +# Deploy Mage01: +# extends: +# - .deploy +# - .staging +# - .mage +# - .mage01 +# variables: +# APP_NAME: geomag-plots -- GitLab From 9cd86f337e6f446cc94c83407352e17d24770500 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 18 Jun 2020 17:13:50 -0600 Subject: [PATCH 02/46] add strings --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dd4df250..56327dd7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -141,19 +141,19 @@ Check Python 3.6: extends: - .check_code variables: - PYTHON_VERSION: 3.6 + PYTHON_VERSION: '3.6' Check Python 3.7: extends: - .check_code variables: - PYTHON_VERSION: 3.7 + PYTHON_VERSION: '3.7' Check Python 3.8: extends: - .check_code variables: - PYTHON_VERSION: 3.8 + PYTHON_VERSION: '3.8' ## -------------------------------------------------- # Integration Stage -- GitLab From ff2c13959d568637d3c2fbf668077d7af89607e1 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 18 Jun 2020 17:15:27 -0600 Subject: [PATCH 03/46] add wget --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 56327dd7..f8e1290e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,6 +55,7 @@ variables: cache: {} image: usgs/centos:latest script: + - yum install -y wget - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" -- GitLab From 90a011640ba1f1f168a5caff5b1bc1b40ed87e40 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 18 Jun 2020 17:19:58 -0600 Subject: [PATCH 04/46] add pre flag --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f8e1290e..56057a3c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -67,7 +67,7 @@ variables: - conda create -q -n test-environment python=${PYTHON_VERSION} obspy pycurl - source activate test-environment - pip install pipenv - - pipenv --site-packages install --dev + - pipenv --site-packages install --dev --pre # Run Code Checks - black --check . - pytest -- GitLab From 2ab63571c63caa9aa5375f2c6ee4a6908292996a Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 18 Jun 2020 17:23:06 -0600 Subject: [PATCH 05/46] remove environment --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 56057a3c..c41904c4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -64,8 +64,7 @@ variables: - conda info -a # Install Project Dependencies - conda config --add channels conda-forge - - conda create -q -n test-environment python=${PYTHON_VERSION} obspy pycurl - - source activate test-environment + - conda install python=${PYTHON_VERSION} obspy pycurl - pip install pipenv - pipenv --site-packages install --dev --pre # Run Code Checks -- GitLab From 5994b881eb6c2827308f15c4c74555cbd3c0fb85 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 18 Jun 2020 17:27:16 -0600 Subject: [PATCH 06/46] add pipenv run --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c41904c4..14b6c14d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -68,8 +68,8 @@ variables: - pip install pipenv - pipenv --site-packages install --dev --pre # Run Code Checks - - black --check . - - pytest + - pipenv run black --check . + - pipenv run pytest stage: test tags: - development -- GitLab From da9675c6f28bfb0ff353884b0c49668a12c98097 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 18 Jun 2020 17:28:53 -0600 Subject: [PATCH 07/46] add environment variables --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 14b6c14d..65962423 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -66,6 +66,8 @@ variables: - conda config --add channels conda-forge - conda install python=${PYTHON_VERSION} obspy pycurl - pip install pipenv + - export LC_ALL=C.UTF-8 + - export LANG=C.UTF-8 - pipenv --site-packages install --dev --pre # Run Code Checks - pipenv run black --check . -- GitLab From 73952b4fb1f1d2905aa1019ec9e8fd21cd7738b2 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 11:04:29 -0600 Subject: [PATCH 08/46] update pydantic version --- .gitlab-ci.yml | 2 +- Pipfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 65962423..88aacb8b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,7 +55,7 @@ variables: cache: {} image: usgs/centos:latest script: - - yum install -y wget + - yum install -y wget which - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh - bash miniconda.sh -b -p $HOME/miniconda - export PATH="$HOME/miniconda/bin:$PATH" diff --git a/Pipfile b/Pipfile index b0aa5ae3..006b1080 100644 --- a/Pipfile +++ b/Pipfile @@ -21,7 +21,7 @@ databases = {extras = ["postgresql", "sqlite"],version = "*"} fastapi = "*" httpx = "==0.11.1" openpyxl = "*" -pydantic = "==1.4" +pydantic = "==1.51" sqlalchemy = "*" sqlalchemy-utc = "*" typing = "*" -- GitLab From 814b30f4453e68d39393f340a4b9186393833125 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 11:12:55 -0600 Subject: [PATCH 09/46] fix pydantic version --- Pipfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pipfile b/Pipfile index 006b1080..ad00171f 100644 --- a/Pipfile +++ b/Pipfile @@ -21,7 +21,7 @@ databases = {extras = ["postgresql", "sqlite"],version = "*"} fastapi = "*" httpx = "==0.11.1" openpyxl = "*" -pydantic = "==1.51" +pydantic = "==1.5.1" sqlalchemy = "*" sqlalchemy-utc = "*" typing = "*" -- GitLab From 090cd7017e29a503cc8da15880aa6a603c3e5ec0 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 11:53:54 -0600 Subject: [PATCH 10/46] add devops registry variable --- .gitlab-ci.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 88aacb8b..c0e38a23 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: usgs/centos:8 +image: ${DEVOPS_REGISTRY}usgs/centos:latest stages: - test @@ -166,8 +166,6 @@ Build Algorithms Image: - .build_docker_image variables: APP_NAME: geomag-algorithms -# TODO: Penetration testing (e.g. OWASP ZAP etc...) - ## -------------------------------------------------- # Deploy Stage ## -------------------------------------------------- -- GitLab From 78c638fd83c698059fdc6abc9b0cab16c51e6a89 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 12:15:30 -0600 Subject: [PATCH 11/46] try pydantic 1.5 --- Pipfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Pipfile b/Pipfile index ad00171f..f2d148d4 100644 --- a/Pipfile +++ b/Pipfile @@ -21,7 +21,7 @@ databases = {extras = ["postgresql", "sqlite"],version = "*"} fastapi = "*" httpx = "==0.11.1" openpyxl = "*" -pydantic = "==1.5.1" +pydantic = "==1.5" sqlalchemy = "*" sqlalchemy-utc = "*" typing = "*" -- GitLab From ec5292a77bbb79644f97af4e327d4b8ec99eccb3 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 14:44:35 -0600 Subject: [PATCH 12/46] change back pydantic, add code cov --- .gitlab-ci.yml | 2 +- Pipfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c0e38a23..bffea6bf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -71,7 +71,7 @@ variables: - pipenv --site-packages install --dev --pre # Run Code Checks - pipenv run black --check . - - pipenv run pytest + - pipenv run pytest --cov-report term --cov=test/ stage: test tags: - development diff --git a/Pipfile b/Pipfile index f2d148d4..ad00171f 100644 --- a/Pipfile +++ b/Pipfile @@ -21,7 +21,7 @@ databases = {extras = ["postgresql", "sqlite"],version = "*"} fastapi = "*" httpx = "==0.11.1" openpyxl = "*" -pydantic = "==1.5" +pydantic = "==1.5.1" sqlalchemy = "*" sqlalchemy-utc = "*" typing = "*" -- GitLab From ca1dd7b2f1741ce54e0568525b1d65420c013999 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 15:14:02 -0600 Subject: [PATCH 13/46] add coverage --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bffea6bf..e7843761 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -71,7 +71,8 @@ variables: - pipenv --site-packages install --dev --pre # Run Code Checks - pipenv run black --check . - - pipenv run pytest --cov-report term --cov=test/ + - pipenv run pytest --cov-report term --cov=test/ --junitxml=geomag-algorithms/test + stage: test tags: - development -- GitLab From cfd0f74d6257e4f1d0850018f9b454d29ebb1aec Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 16:31:21 -0600 Subject: [PATCH 14/46] set up reports (maybe) --- .gitlab-ci.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e7843761..6c2e3e24 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -71,7 +71,6 @@ variables: - pipenv --site-packages install --dev --pre # Run Code Checks - pipenv run black --check . - - pipenv run pytest --cov-report term --cov=test/ --junitxml=geomag-algorithms/test stage: test tags: @@ -79,6 +78,15 @@ variables: variables: PYTHON_VERSION: 3.8 +.pytest: + extends: + - .check_code + script: + - pipenv run pytest --cov-report xml:cov.xml --cov=test/ --junitxml=geomag-algorithms/test + artifacts: + reports: + pytest: cov.xml + .deploy: cache: {} extends: -- GitLab From 04dcb01ecd22c4472777ee9ace3c7fd2f3549e1e Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 16:37:30 -0600 Subject: [PATCH 15/46] set up reports (maybe) --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6c2e3e24..90422588 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -166,6 +166,12 @@ Check Python 3.8: variables: PYTHON_VERSION: '3.8' +PyTest: + extends: + - .pytest + variables: + PYTHON_VERSION: '3.8' + ## -------------------------------------------------- # Integration Stage ## -------------------------------------------------- -- GitLab From 52c6ed48826cc707764bbde8b4cb74fde7e61ffc Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 16:38:55 -0600 Subject: [PATCH 16/46] set up reports (maybe) --- .gitlab-ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 90422588..d91ac636 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -87,6 +87,12 @@ variables: reports: pytest: cov.xml + stage: test + tags: + - development + variables: + PYTHON_VERSION: 3.8 + .deploy: cache: {} extends: -- GitLab From 767aea27cc26b3ba396473b9d72b43718e816dca Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 16:45:23 -0600 Subject: [PATCH 17/46] change reports key --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d91ac636..4d02a1eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -85,7 +85,7 @@ variables: - pipenv run pytest --cov-report xml:cov.xml --cov=test/ --junitxml=geomag-algorithms/test artifacts: reports: - pytest: cov.xml + junit: cov.xml stage: test tags: -- GitLab From c867daa19b086692b18b85a8319bfae4fb7dad59 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 16:51:36 -0600 Subject: [PATCH 18/46] add pytest to check code --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4d02a1eb..9256cc36 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -169,6 +169,7 @@ Check Python 3.7: Check Python 3.8: extends: - .check_code + - .pytest variables: PYTHON_VERSION: '3.8' -- GitLab From c488ffb3ec97184fef2a946fd339f6d0b0df2df8 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 16:55:47 -0600 Subject: [PATCH 19/46] add pytest to check code --- .gitlab-ci.yml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9256cc36..6f5de052 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -71,22 +71,10 @@ variables: - pipenv --site-packages install --dev --pre # Run Code Checks - pipenv run black --check . - - stage: test - tags: - - development - variables: - PYTHON_VERSION: 3.8 - -.pytest: - extends: - - .check_code - script: - pipenv run pytest --cov-report xml:cov.xml --cov=test/ --junitxml=geomag-algorithms/test artifacts: reports: junit: cov.xml - stage: test tags: - development @@ -169,13 +157,6 @@ Check Python 3.7: Check Python 3.8: extends: - .check_code - - .pytest - variables: - PYTHON_VERSION: '3.8' - -PyTest: - extends: - - .pytest variables: PYTHON_VERSION: '3.8' -- GitLab From fcb0fa755c816af625e7460e76ae2cda399dddd2 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Mon, 22 Jun 2020 17:04:58 -0600 Subject: [PATCH 20/46] change pytest settings --- .gitlab-ci.yml | 4 +- cov.xml | 1755 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1758 insertions(+), 1 deletion(-) create mode 100644 cov.xml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f5de052..bdda762f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -71,8 +71,10 @@ variables: - pipenv --site-packages install --dev --pre # Run Code Checks - pipenv run black --check . - - pipenv run pytest --cov-report xml:cov.xml --cov=test/ --junitxml=geomag-algorithms/test + - pipenv run pytest --cov-report xml:cov.xml --cov=test/ artifacts: + paths: + - cov.xml reports: junit: cov.xml stage: test diff --git a/cov.xml b/cov.xml new file mode 100644 index 00000000..fcffa53b --- /dev/null +++ b/cov.xml @@ -0,0 +1,1755 @@ +<?xml version="1.0" ?> +<coverage branch-rate="0" branches-covered="0" branches-valid="0" complexity="0" line-rate="0.8602" lines-covered="1335" lines-valid="1552" timestamp="1592867049082" version="5.1"> + <!-- Generated by coverage.py: https://coverage.readthedocs.io --> + <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd --> + <sources> + <source>/Users/trivers/Desktop/WebApps/Flask/geomag-algorithms/geomag-algorithms/test</source> + </sources> + <packages> + <package branch-rate="0" complexity="0" line-rate="0.7497" name="."> + <classes> + <class branch-rate="0" complexity="0" filename="ChannelConverter_test.py" line-rate="0.1336" name="ChannelConverter_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="7"/> + <line hits="1" number="8"/> + <line hits="1" number="9"/> + <line hits="1" number="10"/> + <line hits="1" number="12"/> + <line hits="1" number="14"/> + <line hits="1" number="17"/> + <line hits="1" number="48"/> + <line hits="0" number="55"/> + <line hits="0" number="56"/> + <line hits="0" number="57"/> + <line hits="0" number="58"/> + <line hits="0" number="59"/> + <line hits="0" number="60"/> + <line hits="1" number="62"/> + <line hits="0" number="73"/> + <line hits="0" number="74"/> + <line hits="0" number="75"/> + <line hits="0" number="76"/> + <line hits="0" number="77"/> + <line hits="0" number="82"/> + <line hits="0" number="83"/> + <line hits="0" number="84"/> + <line hits="0" number="85"/> + <line hits="0" number="86"/> + <line hits="0" number="87"/> + <line hits="0" number="91"/> + <line hits="0" number="92"/> + <line hits="0" number="93"/> + <line hits="0" number="94"/> + <line hits="0" number="95"/> + <line hits="0" number="96"/> + <line hits="0" number="102"/> + <line hits="0" number="103"/> + <line hits="0" number="104"/> + <line hits="0" number="105"/> + <line hits="0" number="106"/> + <line hits="0" number="107"/> + <line hits="1" number="109"/> + <line hits="0" number="118"/> + <line hits="0" number="119"/> + <line hits="0" number="120"/> + <line hits="0" number="121"/> + <line hits="0" number="122"/> + <line hits="1" number="124"/> + <line hits="0" number="133"/> + <line hits="0" number="134"/> + <line hits="0" number="135"/> + <line hits="0" number="136"/> + <line hits="0" number="139"/> + <line hits="0" number="140"/> + <line hits="0" number="141"/> + <line hits="0" number="142"/> + <line hits="1" number="144"/> + <line hits="0" number="153"/> + <line hits="0" number="154"/> + <line hits="0" number="155"/> + <line hits="0" number="156"/> + <line hits="0" number="159"/> + <line hits="0" number="160"/> + <line hits="0" number="161"/> + <line hits="0" number="162"/> + <line hits="1" number="164"/> + <line hits="0" number="176"/> + <line hits="0" number="177"/> + <line hits="0" number="178"/> + <line hits="0" number="179"/> + <line hits="0" number="180"/> + <line hits="0" number="181"/> + <line hits="1" number="183"/> + <line hits="0" number="193"/> + <line hits="0" number="194"/> + <line hits="0" number="195"/> + <line hits="0" number="196"/> + <line hits="0" number="197"/> + <line hits="1" number="199"/> + <line hits="0" number="210"/> + <line hits="0" number="211"/> + <line hits="0" number="212"/> + <line hits="0" number="213"/> + <line hits="0" number="216"/> + <line hits="0" number="217"/> + <line hits="0" number="218"/> + <line hits="0" number="219"/> + <line hits="0" number="222"/> + <line hits="0" number="223"/> + <line hits="0" number="224"/> + <line hits="0" number="225"/> + <line hits="0" number="226"/> + <line hits="0" number="229"/> + <line hits="0" number="230"/> + <line hits="0" number="231"/> + <line hits="0" number="232"/> + <line hits="0" number="233"/> + <line hits="0" number="236"/> + <line hits="0" number="237"/> + <line hits="0" number="238"/> + <line hits="0" number="239"/> + <line hits="0" number="240"/> + <line hits="0" number="243"/> + <line hits="0" number="244"/> + <line hits="0" number="245"/> + <line hits="0" number="246"/> + <line hits="0" number="247"/> + <line hits="1" number="249"/> + <line hits="0" number="258"/> + <line hits="0" number="259"/> + <line hits="0" number="260"/> + <line hits="0" number="261"/> + <line hits="0" number="264"/> + <line hits="0" number="265"/> + <line hits="0" number="266"/> + <line hits="0" number="267"/> + <line hits="0" number="270"/> + <line hits="0" number="271"/> + <line hits="0" number="272"/> + <line hits="0" number="273"/> + <line hits="1" number="275"/> + <line hits="0" number="283"/> + <line hits="0" number="284"/> + <line hits="0" number="285"/> + <line hits="0" number="286"/> + <line hits="1" number="288"/> + <line hits="0" number="296"/> + <line hits="0" number="297"/> + <line hits="0" number="298"/> + <line hits="0" number="299"/> + <line hits="1" number="301"/> + <line hits="0" number="312"/> + <line hits="0" number="313"/> + <line hits="0" number="314"/> + <line hits="0" number="315"/> + <line hits="0" number="316"/> + <line hits="0" number="321"/> + <line hits="0" number="322"/> + <line hits="0" number="323"/> + <line hits="0" number="324"/> + <line hits="0" number="325"/> + <line hits="0" number="326"/> + <line hits="0" number="330"/> + <line hits="0" number="331"/> + <line hits="0" number="332"/> + <line hits="0" number="333"/> + <line hits="0" number="334"/> + <line hits="0" number="335"/> + <line hits="0" number="341"/> + <line hits="0" number="342"/> + <line hits="0" number="343"/> + <line hits="0" number="344"/> + <line hits="0" number="345"/> + <line hits="0" number="346"/> + <line hits="0" number="347"/> + <line hits="0" number="348"/> + <line hits="1" number="350"/> + <line hits="0" number="358"/> + <line hits="0" number="359"/> + <line hits="0" number="360"/> + <line hits="0" number="361"/> + <line hits="0" number="362"/> + <line hits="1" number="364"/> + <line hits="0" number="373"/> + <line hits="0" number="374"/> + <line hits="0" number="375"/> + <line hits="0" number="376"/> + <line hits="0" number="379"/> + <line hits="0" number="380"/> + <line hits="0" number="381"/> + <line hits="0" number="382"/> + <line hits="1" number="384"/> + <line hits="0" number="394"/> + <line hits="0" number="395"/> + <line hits="0" number="396"/> + <line hits="0" number="399"/> + <line hits="0" number="400"/> + <line hits="0" number="401"/> + <line hits="0" number="402"/> + <line hits="0" number="405"/> + <line hits="0" number="406"/> + <line hits="0" number="407"/> + <line hits="0" number="408"/> + <line hits="0" number="411"/> + <line hits="0" number="412"/> + <line hits="0" number="413"/> + <line hits="0" number="414"/> + <line hits="1" number="416"/> + <line hits="0" number="427"/> + <line hits="0" number="428"/> + <line hits="0" number="429"/> + <line hits="0" number="430"/> + <line hits="0" number="432"/> + <line hits="0" number="433"/> + <line hits="0" number="434"/> + <line hits="0" number="435"/> + <line hits="0" number="438"/> + <line hits="0" number="439"/> + <line hits="0" number="440"/> + <line hits="0" number="441"/> + <line hits="0" number="442"/> + <line hits="1" number="444"/> + <line hits="0" number="454"/> + <line hits="0" number="455"/> + <line hits="0" number="456"/> + <line hits="0" number="457"/> + <line hits="1" number="461"/> + <line hits="0" number="471"/> + <line hits="0" number="472"/> + <line hits="0" number="473"/> + <line hits="0" number="474"/> + <line hits="0" number="477"/> + <line hits="0" number="478"/> + <line hits="0" number="479"/> + <line hits="0" number="480"/> + <line hits="0" number="481"/> + <line hits="1" number="483"/> + <line hits="0" number="491"/> + <line hits="0" number="492"/> + <line hits="0" number="493"/> + <line hits="0" number="494"/> + <line hits="0" number="495"/> + <line hits="0" number="497"/> + <line hits="0" number="498"/> + <line hits="1" number="500"/> + <line hits="0" number="505"/> + <line hits="0" number="506"/> + <line hits="0" number="507"/> + <line hits="1" number="511"/> + <line hits="0" number="516"/> + <line hits="0" number="517"/> + <line hits="0" number="518"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="Controller_test.py" line-rate="1" name="Controller_test.py"> + <methods/> + <lines> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="6"/> + <line hits="1" number="9"/> + <line hits="1" number="12"/> + <line hits="1" number="15"/> + <line hits="1" number="17"/> + <line hits="1" number="18"/> + <line hits="1" number="21"/> + <line hits="1" number="27"/> + <line hits="1" number="28"/> + <line hits="1" number="29"/> + <line hits="1" number="30"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="36"/> + <line hits="1" number="52"/> + <line hits="1" number="55"/> + <line hits="1" number="109"/> + <line hits="1" number="112"/> + <line hits="1" number="118"/> + <line hits="1" number="127"/> + <line hits="1" number="128"/> + <line hits="1" number="135"/> + <line hits="1" number="136"/> + <line hits="1" number="137"/> + <line hits="1" number="139"/> + <line hits="1" number="140"/> + <line hits="1" number="143"/> + <line hits="1" number="144"/> + <line hits="1" number="149"/> + <line hits="1" number="150"/> + <line hits="1" number="151"/> + <line hits="1" number="153"/> + <line hits="1" number="154"/> + <line hits="1" number="157"/> + <line hits="1" number="158"/> + <line hits="1" number="163"/> + <line hits="1" number="164"/> + <line hits="1" number="165"/> + <line hits="1" number="167"/> + <line hits="1" number="168"/> + <line hits="1" number="171"/> + <line hits="1" number="172"/> + <line hits="1" number="177"/> + <line hits="1" number="178"/> + <line hits="1" number="179"/> + <line hits="1" number="181"/> + <line hits="1" number="182"/> + <line hits="1" number="185"/> + <line hits="1" number="186"/> + <line hits="1" number="191"/> + <line hits="1" number="192"/> + <line hits="1" number="193"/> + <line hits="1" number="195"/> + <line hits="1" number="196"/> + <line hits="1" number="199"/> + <line hits="1" number="200"/> + <line hits="1" number="204"/> + <line hits="1" number="205"/> + <line hits="1" number="206"/> + <line hits="1" number="208"/> + <line hits="1" number="209"/> + <line hits="1" number="212"/> + <line hits="1" number="213"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="Metadata_test.py" line-rate="1" name="Metadata_test.py"> + <methods/> + <lines> + <line hits="1" number="1"/> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="6"/> + <line hits="1" number="12"/> + <line hits="1" number="18"/> + <line hits="1" number="24"/> + <line hits="1" number="27"/> + <line hits="1" number="29"/> + <line hits="1" number="35"/> + <line hits="1" number="38"/> + <line hits="1" number="40"/> + <line hits="1" number="46"/> + <line hits="1" number="49"/> + <line hits="1" number="51"/> + <line hits="1" number="57"/> + <line hits="1" number="60"/> + <line hits="1" number="62"/> + <line hits="1" number="68"/> + <line hits="1" number="71"/> + <line hits="1" number="73"/> + <line hits="1" number="79"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="ObservatoryMetadata_test.py" line-rate="1" name="ObservatoryMetadata_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="8"/> + <line hits="1" number="42"/> + <line hits="1" number="48"/> + <line hits="1" number="54"/> + <line hits="1" number="55"/> + <line hits="1" number="56"/> + <line hits="1" number="57"/> + <line hits="1" number="58"/> + <line hits="1" number="59"/> + <line hits="1" number="60"/> + <line hits="1" number="61"/> + <line hits="1" number="64"/> + <line hits="1" number="65"/> + <line hits="1" number="66"/> + <line hits="1" number="67"/> + <line hits="1" number="68"/> + <line hits="1" number="69"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="StreamConverter_test.py" line-rate="1" name="StreamConverter_test.py"> + <methods/> + <lines> + <line hits="1" number="12"/> + <line hits="1" number="13"/> + <line hits="1" number="14"/> + <line hits="1" number="16"/> + <line hits="1" number="18"/> + <line hits="1" number="19"/> + <line hits="1" number="21"/> + <line hits="1" number="22"/> + <line hits="1" number="23"/> + <line hits="1" number="26"/> + <line hits="1" number="33"/> + <line hits="1" number="39"/> + <line hits="1" number="40"/> + <line hits="1" number="41"/> + <line hits="1" number="42"/> + <line hits="1" number="43"/> + <line hits="1" number="44"/> + <line hits="1" number="45"/> + <line hits="1" number="46"/> + <line hits="1" number="53"/> + <line hits="1" number="62"/> + <line hits="1" number="69"/> + <line hits="1" number="73"/> + <line hits="1" number="74"/> + <line hits="1" number="75"/> + <line hits="1" number="76"/> + <line hits="1" number="77"/> + <line hits="1" number="78"/> + <line hits="1" number="79"/> + <line hits="1" number="80"/> + <line hits="1" number="81"/> + <line hits="1" number="86"/> + <line hits="1" number="87"/> + <line hits="1" number="88"/> + <line hits="1" number="89"/> + <line hits="1" number="90"/> + <line hits="1" number="91"/> + <line hits="1" number="92"/> + <line hits="1" number="93"/> + <line hits="1" number="94"/> + <line hits="1" number="95"/> + <line hits="1" number="102"/> + <line hits="1" number="111"/> + <line hits="1" number="118"/> + <line hits="1" number="123"/> + <line hits="1" number="124"/> + <line hits="1" number="125"/> + <line hits="1" number="126"/> + <line hits="1" number="127"/> + <line hits="1" number="128"/> + <line hits="1" number="129"/> + <line hits="1" number="130"/> + <line hits="1" number="131"/> + <line hits="1" number="132"/> + <line hits="1" number="137"/> + <line hits="1" number="143"/> + <line hits="1" number="148"/> + <line hits="1" number="149"/> + <line hits="1" number="150"/> + <line hits="1" number="151"/> + <line hits="1" number="152"/> + <line hits="1" number="153"/> + <line hits="1" number="154"/> + <line hits="1" number="155"/> + <line hits="1" number="156"/> + <line hits="1" number="157"/> + <line hits="1" number="162"/> + <line hits="1" number="169"/> + <line hits="1" number="175"/> + <line hits="1" number="176"/> + <line hits="1" number="177"/> + <line hits="1" number="178"/> + <line hits="1" number="179"/> + <line hits="1" number="180"/> + <line hits="1" number="181"/> + <line hits="1" number="182"/> + <line hits="1" number="183"/> + <line hits="1" number="184"/> + <line hits="1" number="191"/> + <line hits="1" number="198"/> + <line hits="1" number="203"/> + <line hits="1" number="210"/> + <line hits="1" number="216"/> + <line hits="1" number="217"/> + <line hits="1" number="218"/> + <line hits="1" number="219"/> + <line hits="1" number="220"/> + <line hits="1" number="221"/> + <line hits="1" number="222"/> + <line hits="1" number="223"/> + <line hits="1" number="224"/> + <line hits="1" number="225"/> + <line hits="1" number="232"/> + <line hits="1" number="235"/> + <line hits="1" number="244"/> + <line hits="1" number="255"/> + <line hits="1" number="256"/> + <line hits="1" number="257"/> + <line hits="1" number="258"/> + <line hits="1" number="259"/> + <line hits="1" number="260"/> + <line hits="1" number="261"/> + <line hits="1" number="262"/> + <line hits="1" number="263"/> + <line hits="1" number="270"/> + <line hits="1" number="271"/> + <line hits="1" number="272"/> + <line hits="1" number="273"/> + <line hits="1" number="274"/> + <line hits="1" number="275"/> + <line hits="1" number="276"/> + <line hits="1" number="277"/> + <line hits="1" number="286"/> + <line hits="1" number="298"/> + <line hits="1" number="299"/> + <line hits="1" number="300"/> + <line hits="1" number="303"/> + <line hits="1" number="306"/> + <line hits="1" number="309"/> + <line hits="1" number="312"/> + <line hits="1" number="313"/> + <line hits="1" number="314"/> + <line hits="1" number="316"/> + <line hits="1" number="324"/> + <line hits="1" number="325"/> + <line hits="1" number="326"/> + <line hits="1" number="329"/> + <line hits="1" number="332"/> + <line hits="1" number="333"/> + <line hits="1" number="336"/> + <line hits="1" number="337"/> + <line hits="1" number="338"/> + <line hits="1" number="339"/> + <line hits="1" number="340"/> + <line hits="1" number="343"/> + <line hits="1" number="346"/> + <line hits="1" number="362"/> + <line hits="1" number="363"/> + <line hits="1" number="364"/> + <line hits="1" number="365"/> + <line hits="1" number="366"/> + <line hits="1" number="367"/> + <line hits="1" number="368"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="TimeseriesUtility_test.py" line-rate="1" name="TimeseriesUtility_test.py"> + <methods/> + <lines> + <line hits="1" number="2"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="7"/> + <line hits="1" number="8"/> + <line hits="1" number="10"/> + <line hits="1" number="11"/> + <line hits="1" number="14"/> + <line hits="1" number="17"/> + <line hits="1" number="18"/> + <line hits="1" number="19"/> + <line hits="1" number="20"/> + <line hits="1" number="21"/> + <line hits="1" number="22"/> + <line hits="1" number="23"/> + <line hits="1" number="34"/> + <line hits="1" number="36"/> + <line hits="1" number="37"/> + <line hits="1" number="38"/> + <line hits="1" number="39"/> + <line hits="1" number="40"/> + <line hits="1" number="41"/> + <line hits="1" number="42"/> + <line hits="1" number="43"/> + <line hits="1" number="44"/> + <line hits="1" number="45"/> + <line hits="1" number="46"/> + <line hits="1" number="51"/> + <line hits="1" number="52"/> + <line hits="1" number="54"/> + <line hits="1" number="55"/> + <line hits="1" number="56"/> + <line hits="1" number="57"/> + <line hits="1" number="58"/> + <line hits="1" number="61"/> + <line hits="1" number="66"/> + <line hits="1" number="72"/> + <line hits="1" number="74"/> + <line hits="1" number="76"/> + <line hits="1" number="78"/> + <line hits="1" number="79"/> + <line hits="1" number="81"/> + <line hits="1" number="82"/> + <line hits="1" number="83"/> + <line hits="1" number="85"/> + <line hits="1" number="86"/> + <line hits="1" number="87"/> + <line hits="1" number="89"/> + <line hits="1" number="92"/> + <line hits="1" number="97"/> + <line hits="1" number="103"/> + <line hits="1" number="105"/> + <line hits="1" number="107"/> + <line hits="1" number="109"/> + <line hits="1" number="110"/> + <line hits="1" number="111"/> + <line hits="1" number="114"/> + <line hits="1" number="119"/> + <line hits="1" number="121"/> + <line hits="1" number="123"/> + <line hits="1" number="125"/> + <line hits="1" number="126"/> + <line hits="1" number="127"/> + <line hits="1" number="128"/> + <line hits="1" number="129"/> + <line hits="1" number="132"/> + <line hits="1" number="137"/> + <line hits="1" number="162"/> + <line hits="1" number="164"/> + <line hits="1" number="165"/> + <line hits="1" number="166"/> + <line hits="1" number="168"/> + <line hits="1" number="169"/> + <line hits="1" number="170"/> + <line hits="1" number="173"/> + <line hits="1" number="176"/> + <line hits="1" number="182"/> + <line hits="1" number="184"/> + <line hits="1" number="186"/> + <line hits="1" number="187"/> + <line hits="1" number="188"/> + <line hits="1" number="189"/> + <line hits="1" number="191"/> + <line hits="1" number="198"/> + <line hits="1" number="205"/> + <line hits="1" number="215"/> + <line hits="1" number="218"/> + <line hits="1" number="219"/> + <line hits="1" number="226"/> + <line hits="1" number="228"/> + <line hits="1" number="230"/> + <line hits="1" number="231"/> + <line hits="1" number="233"/> + <line hits="1" number="234"/> + <line hits="1" number="235"/> + <line hits="1" number="238"/> + <line hits="1" number="242"/> + <line hits="1" number="247"/> + <line hits="1" number="250"/> + <line hits="1" number="251"/> + <line hits="1" number="258"/> + <line hits="1" number="260"/> + <line hits="1" number="262"/> + <line hits="1" number="263"/> + <line hits="1" number="265"/> + <line hits="1" number="266"/> + <line hits="1" number="267"/> + <line hits="1" number="270"/> + <line hits="1" number="274"/> + <line hits="1" number="279"/> + <line hits="1" number="284"/> + <line hits="1" number="285"/> + <line hits="1" number="286"/> + <line hits="1" number="287"/> + <line hits="1" number="288"/> + <line hits="1" number="289"/> + <line hits="1" number="290"/> + <line hits="1" number="291"/> + <line hits="1" number="292"/> + <line hits="1" number="293"/> + <line hits="1" number="294"/> + <line hits="1" number="295"/> + <line hits="1" number="296"/> + <line hits="1" number="297"/> + <line hits="1" number="298"/> + <line hits="1" number="299"/> + <line hits="1" number="300"/> + <line hits="1" number="302"/> + <line hits="1" number="304"/> + <line hits="1" number="306"/> + <line hits="1" number="307"/> + <line hits="1" number="308"/> + <line hits="1" number="309"/> + <line hits="1" number="310"/> + <line hits="1" number="311"/> + <line hits="1" number="314"/> + <line hits="1" number="316"/> + <line hits="1" number="317"/> + <line hits="1" number="318"/> + <line hits="1" number="319"/> + <line hits="1" number="320"/> + <line hits="1" number="321"/> + <line hits="1" number="322"/> + <line hits="1" number="323"/> + <line hits="1" number="324"/> + <line hits="1" number="325"/> + <line hits="1" number="326"/> + <line hits="1" number="327"/> + <line hits="1" number="328"/> + <line hits="1" number="330"/> + <line hits="1" number="331"/> + <line hits="1" number="332"/> + <line hits="1" number="333"/> + <line hits="1" number="334"/> + <line hits="1" number="335"/> + <line hits="1" number="336"/> + <line hits="1" number="337"/> + <line hits="1" number="340"/> + <line hits="1" number="343"/> + <line hits="1" number="344"/> + <line hits="1" number="345"/> + <line hits="1" number="346"/> + <line hits="1" number="351"/> + <line hits="1" number="352"/> + <line hits="1" number="353"/> + <line hits="1" number="355"/> + <line hits="1" number="356"/> + <line hits="1" number="357"/> + <line hits="1" number="358"/> + <line hits="1" number="360"/> + <line hits="1" number="361"/> + <line hits="1" number="362"/> + <line hits="1" number="365"/> + <line hits="1" number="368"/> + <line hits="1" number="369"/> + <line hits="1" number="370"/> + <line hits="1" number="373"/> + <line hits="1" number="378"/> + <line hits="1" number="379"/> + <line hits="1" number="380"/> + <line hits="1" number="382"/> + <line hits="1" number="387"/> + <line hits="1" number="388"/> + <line hits="1" number="389"/> + <line hits="1" number="391"/> + <line hits="1" number="396"/> + <line hits="1" number="397"/> + <line hits="1" number="398"/> + <line hits="1" number="400"/> + <line hits="1" number="405"/> + <line hits="1" number="406"/> + <line hits="1" number="407"/> + <line hits="1" number="409"/> + <line hits="1" number="414"/> + <line hits="1" number="415"/> + <line hits="1" number="416"/> + <line hits="1" number="418"/> + <line hits="1" number="423"/> + <line hits="1" number="424"/> + <line hits="1" number="425"/> + <line hits="1" number="428"/> + <line hits="1" number="434"/> + <line hits="1" number="437"/> + <line hits="1" number="438"/> + <line hits="1" number="443"/> + <line hits="1" number="448"/> + <line hits="1" number="449"/> + <line hits="1" number="450"/> + <line hits="1" number="458"/> + <line hits="1" number="459"/> + <line hits="1" number="460"/> + <line hits="1" number="461"/> + <line hits="1" number="462"/> + <line hits="1" number="463"/> + <line hits="1" number="464"/> + <line hits="1" number="465"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="Util_test.py" line-rate="0.9318" name="Util_test.py"> + <methods/> + <lines> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="9"/> + <line hits="1" number="13"/> + <line hits="1" number="14"/> + <line hits="0" number="15"/> + <line hits="1" number="16"/> + <line hits="1" number="17"/> + <line hits="1" number="20"/> + <line hits="1" number="24"/> + <line hits="1" number="25"/> + <line hits="1" number="28"/> + <line hits="1" number="32"/> + <line hits="0" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="37"/> + <line hits="0" number="38"/> + <line hits="1" number="39"/> + <line hits="1" number="40"/> + <line hits="1" number="43"/> + <line hits="1" number="46"/> + <line hits="1" number="47"/> + <line hits="1" number="48"/> + <line hits="1" number="49"/> + <line hits="1" number="52"/> + <line hits="1" number="55"/> + <line hits="1" number="56"/> + <line hits="1" number="57"/> + <line hits="1" number="58"/> + <line hits="1" number="61"/> + <line hits="1" number="64"/> + <line hits="1" number="65"/> + <line hits="1" number="66"/> + <line hits="1" number="67"/> + <line hits="1" number="68"/> + <line hits="1" number="69"/> + <line hits="1" number="72"/> + <line hits="1" number="75"/> + <line hits="1" number="76"/> + <line hits="1" number="77"/> + <line hits="1" number="78"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="WebService_test.py" line-rate="0.9451" name="WebService_test.py"> + <methods/> + <lines> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="8"/> + <line hits="1" number="9"/> + <line hits="1" number="10"/> + <line hits="1" number="11"/> + <line hits="1" number="12"/> + <line hits="1" number="15"/> + <line hits="1" number="18"/> + <line hits="1" number="19"/> + <line hits="1" number="27"/> + <line hits="1" number="28"/> + <line hits="1" number="29"/> + <line hits="1" number="30"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="35"/> + <line hits="0" number="36"/> + <line hits="1" number="37"/> + <line hits="1" number="38"/> + <line hits="0" number="39"/> + <line hits="0" number="40"/> + <line hits="0" number="41"/> + <line hits="0" number="42"/> + <line hits="1" number="43"/> + <line hits="1" number="44"/> + <line hits="1" number="45"/> + <line hits="1" number="46"/> + <line hits="1" number="47"/> + <line hits="1" number="48"/> + <line hits="1" number="51"/> + <line hits="1" number="54"/> + <line hits="1" number="55"/> + <line hits="1" number="63"/> + <line hits="1" number="66"/> + <line hits="1" number="72"/> + <line hits="1" number="77"/> + <line hits="1" number="78"/> + <line hits="1" number="79"/> + <line hits="1" number="80"/> + <line hits="1" number="83"/> + <line hits="1" number="89"/> + <line hits="1" number="90"/> + <line hits="1" number="97"/> + <line hits="1" number="98"/> + <line hits="1" number="101"/> + <line hits="1" number="108"/> + <line hits="1" number="109"/> + <line hits="1" number="116"/> + <line hits="1" number="117"/> + <line hits="1" number="118"/> + <line hits="1" number="119"/> + <line hits="1" number="120"/> + <line hits="1" number="121"/> + <line hits="1" number="122"/> + <line hits="1" number="124"/> + <line hits="1" number="125"/> + <line hits="1" number="126"/> + <line hits="1" number="127"/> + <line hits="1" number="128"/> + <line hits="1" number="129"/> + <line hits="1" number="130"/> + <line hits="1" number="131"/> + <line hits="1" number="132"/> + <line hits="1" number="133"/> + <line hits="1" number="134"/> + <line hits="1" number="135"/> + <line hits="1" number="138"/> + <line hits="1" number="144"/> + <line hits="1" number="146"/> + <line hits="1" number="147"/> + <line hits="1" number="148"/> + <line hits="1" number="149"/> + <line hits="1" number="151"/> + <line hits="1" number="152"/> + <line hits="1" number="153"/> + <line hits="1" number="154"/> + <line hits="1" number="156"/> + <line hits="1" number="157"/> + <line hits="1" number="158"/> + <line hits="1" number="159"/> + <line hits="1" number="161"/> + <line hits="1" number="162"/> + <line hits="1" number="163"/> + <line hits="1" number="164"/> + <line hits="1" number="165"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="__init__.py" line-rate="1" name="__init__.py"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package branch-rate="0" complexity="0" line-rate="1" name="algorithm_test"> + <classes> + <class branch-rate="0" complexity="0" filename="algorithm_test/AdjustedAlgorithm_test.py" line-rate="1" name="AdjustedAlgorithm_test.py"> + <methods/> + <lines> + <line hits="1" number="1"/> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="6"/> + <line hits="1" number="10"/> + <line hits="1" number="12"/> + <line hits="1" number="14"/> + <line hits="1" number="17"/> + <line hits="1" number="24"/> + <line hits="1" number="27"/> + <line hits="1" number="28"/> + <line hits="1" number="29"/> + <line hits="1" number="30"/> + <line hits="1" number="33"/> + <line hits="1" number="36"/> + <line hits="1" number="41"/> + <line hits="1" number="46"/> + <line hits="1" number="51"/> + <line hits="1" number="58"/> + <line hits="1" number="65"/> + <line hits="1" number="72"/> + <line hits="1" number="73"/> + <line hits="1" number="74"/> + <line hits="1" number="75"/> + <line hits="1" number="78"/> + <line hits="1" number="81"/> + <line hits="1" number="86"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="algorithm_test/Algorithm_test.py" line-rate="1" name="Algorithm_test.py"> + <methods/> + <lines> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="7"/> + <line hits="1" number="12"/> + <line hits="1" number="13"/> + <line hits="1" number="14"/> + <line hits="1" number="15"/> + <line hits="1" number="18"/> + <line hits="1" number="24"/> + <line hits="1" number="25"/> + <line hits="1" number="26"/> + <line hits="1" number="27"/> + <line hits="1" number="28"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="algorithm_test/AverageAlgorithm_test.py" line-rate="1" name="AverageAlgorithm_test.py"> + <methods/> + <lines> + <line hits="1" number="1"/> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="9"/> + <line hits="1" number="17"/> + <line hits="1" number="18"/> + <line hits="1" number="19"/> + <line hits="1" number="22"/> + <line hits="1" number="25"/> + <line hits="1" number="26"/> + <line hits="1" number="29"/> + <line hits="1" number="30"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="34"/> + <line hits="1" number="35"/> + <line hits="1" number="37"/> + <line hits="1" number="38"/> + <line hits="1" number="41"/> + <line hits="1" number="42"/> + <line hits="1" number="44"/> + <line hits="1" number="47"/> + <line hits="1" number="55"/> + <line hits="1" number="59"/> + <line hits="1" number="60"/> + <line hits="1" number="61"/> + <line hits="1" number="62"/> + <line hits="1" number="63"/> + <line hits="1" number="66"/> + <line hits="1" number="69"/> + <line hits="1" number="70"/> + <line hits="1" number="71"/> + <line hits="1" number="74"/> + <line hits="1" number="75"/> + <line hits="1" number="76"/> + <line hits="1" number="78"/> + <line hits="1" number="80"/> + <line hits="1" number="83"/> + <line hits="1" number="86"/> + <line hits="1" number="94"/> + <line hits="1" number="95"/> + <line hits="1" number="98"/> + <line hits="1" number="99"/> + <line hits="1" number="100"/> + <line hits="1" number="101"/> + <line hits="1" number="102"/> + <line hits="1" number="105"/> + <line hits="1" number="106"/> + <line hits="1" number="107"/> + <line hits="1" number="110"/> + <line hits="1" number="111"/> + <line hits="1" number="112"/> + <line hits="1" number="116"/> + <line hits="1" number="117"/> + <line hits="1" number="120"/> + <line hits="1" number="122"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="algorithm_test/FilterAlgorithm_test.py" line-rate="1" name="FilterAlgorithm_test.py"> + <methods/> + <lines> + <line hits="1" number="1"/> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="7"/> + <line hits="1" number="11"/> + <line hits="1" number="29"/> + <line hits="1" number="30"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="36"/> + <line hits="1" number="37"/> + <line hits="1" number="38"/> + <line hits="1" number="40"/> + <line hits="1" number="41"/> + <line hits="1" number="42"/> + <line hits="1" number="44"/> + <line hits="1" number="45"/> + <line hits="1" number="46"/> + <line hits="1" number="49"/> + <line hits="1" number="53"/> + <line hits="1" number="70"/> + <line hits="1" number="71"/> + <line hits="1" number="73"/> + <line hits="1" number="74"/> + <line hits="1" number="75"/> + <line hits="1" number="77"/> + <line hits="1" number="78"/> + <line hits="1" number="79"/> + <line hits="1" number="81"/> + <line hits="1" number="82"/> + <line hits="1" number="83"/> + <line hits="1" number="85"/> + <line hits="1" number="86"/> + <line hits="1" number="87"/> + <line hits="1" number="90"/> + <line hits="1" number="94"/> + <line hits="1" number="111"/> + <line hits="1" number="112"/> + <line hits="1" number="114"/> + <line hits="1" number="115"/> + <line hits="1" number="116"/> + <line hits="1" number="118"/> + <line hits="1" number="119"/> + <line hits="1" number="120"/> + <line hits="1" number="122"/> + <line hits="1" number="123"/> + <line hits="1" number="124"/> + <line hits="1" number="126"/> + <line hits="1" number="127"/> + <line hits="1" number="128"/> + <line hits="1" number="131"/> + <line hits="1" number="135"/> + <line hits="1" number="156"/> + <line hits="1" number="157"/> + <line hits="1" number="159"/> + <line hits="1" number="160"/> + <line hits="1" number="161"/> + <line hits="1" number="163"/> + <line hits="1" number="164"/> + <line hits="1" number="165"/> + <line hits="1" number="167"/> + <line hits="1" number="168"/> + <line hits="1" number="169"/> + <line hits="1" number="171"/> + <line hits="1" number="172"/> + <line hits="1" number="173"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="algorithm_test/SQDistAlgorithm_test.py" line-rate="1" name="SQDistAlgorithm_test.py"> + <methods/> + <lines> + <line hits="1" number="1"/> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="11"/> + <line hits="1" number="18"/> + <line hits="1" number="19"/> + <line hits="1" number="20"/> + <line hits="1" number="23"/> + <line hits="1" number="24"/> + <line hits="1" number="27"/> + <line hits="1" number="28"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="35"/> + <line hits="1" number="39"/> + <line hits="1" number="40"/> + <line hits="1" number="53"/> + <line hits="1" number="58"/> + <line hits="1" number="63"/> + <line hits="1" number="84"/> + <line hits="1" number="85"/> + <line hits="1" number="98"/> + <line hits="1" number="103"/> + <line hits="1" number="108"/> + <line hits="1" number="129"/> + <line hits="1" number="130"/> + <line hits="1" number="144"/> + <line hits="1" number="163"/> + <line hits="1" number="169"/> + <line hits="1" number="191"/> + <line hits="1" number="192"/> + <line hits="1" number="206"/> + <line hits="1" number="212"/> + <line hits="1" number="231"/> + <line hits="1" number="253"/> + <line hits="1" number="254"/> + <line hits="1" number="268"/> + <line hits="1" number="274"/> + <line hits="1" number="293"/> + <line hits="1" number="314"/> + <line hits="1" number="321"/> + <line hits="1" number="322"/> + <line hits="1" number="323"/> + <line hits="1" number="324"/> + <line hits="1" number="325"/> + <line hits="1" number="328"/> + <line hits="1" number="329"/> + <line hits="1" number="330"/> + <line hits="1" number="331"/> + <line hits="1" number="334"/> + <line hits="1" number="335"/> + <line hits="1" number="338"/> + <line hits="1" number="339"/> + <line hits="1" number="340"/> + <line hits="1" number="343"/> + <line hits="1" number="367"/> + <line hits="1" number="374"/> + <line hits="1" number="377"/> + <line hits="1" number="380"/> + <line hits="1" number="385"/> + <line hits="1" number="386"/> + <line hits="1" number="389"/> + <line hits="1" number="413"/> + <line hits="1" number="416"/> + <line hits="1" number="422"/> + <line hits="1" number="430"/> + <line hits="1" number="436"/> + <line hits="1" number="438"/> + <line hits="1" number="440"/> + <line hits="1" number="442"/> + <line hits="1" number="448"/> + <line hits="1" number="454"/> + <line hits="1" number="460"/> + <line hits="1" number="466"/> + <line hits="1" number="472"/> + <line hits="1" number="480"/> + <line hits="1" number="481"/> + <line hits="1" number="488"/> + <line hits="1" number="512"/> + <line hits="1" number="518"/> + <line hits="1" number="524"/> + <line hits="1" number="532"/> + <line hits="1" number="540"/> + <line hits="1" number="541"/> + <line hits="1" number="546"/> + <line hits="1" number="570"/> + <line hits="1" number="576"/> + <line hits="1" number="582"/> + <line hits="1" number="590"/> + <line hits="1" number="591"/> + <line hits="1" number="598"/> + <line hits="1" number="622"/> + <line hits="1" number="628"/> + <line hits="1" number="634"/> + <line hits="1" number="642"/> + <line hits="1" number="643"/> + <line hits="1" number="644"/> + <line hits="1" number="655"/> + <line hits="1" number="679"/> + <line hits="1" number="685"/> + <line hits="1" number="691"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="algorithm_test/XYZAlgorithm_test.py" line-rate="1" name="XYZAlgorithm_test.py"> + <methods/> + <lines> + <line hits="1" number="2"/> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="9"/> + <line hits="1" number="14"/> + <line hits="1" number="15"/> + <line hits="1" number="16"/> + <line hits="1" number="17"/> + <line hits="1" number="18"/> + <line hits="1" number="19"/> + <line hits="1" number="20"/> + <line hits="1" number="21"/> + <line hits="1" number="24"/> + <line hits="1" number="30"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="37"/> + <line hits="1" number="43"/> + <line hits="1" number="44"/> + <line hits="1" number="45"/> + <line hits="1" number="46"/> + <line hits="1" number="47"/> + <line hits="1" number="48"/> + <line hits="1" number="49"/> + <line hits="1" number="51"/> + <line hits="1" number="52"/> + <line hits="1" number="54"/> + <line hits="1" number="56"/> + <line hits="1" number="59"/> + <line hits="1" number="67"/> + <line hits="1" number="68"/> + <line hits="1" number="69"/> + <line hits="1" number="70"/> + <line hits="1" number="71"/> + <line hits="1" number="72"/> + <line hits="1" number="73"/> + <line hits="1" number="74"/> + <line hits="1" number="78"/> + <line hits="1" number="82"/> + <line hits="1" number="84"/> + <line hits="1" number="85"/> + <line hits="1" number="87"/> + <line hits="1" number="89"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="algorithm_test/__init__.py" line-rate="1" name="__init__.py"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package branch-rate="0" complexity="0" line-rate="0.9444" name="edge_test"> + <classes> + <class branch-rate="0" complexity="0" filename="edge_test/EdgeFactory_test.py" line-rate="0.8919" name="EdgeFactory_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="8"/> + <line hits="1" number="12"/> + <line hits="1" number="15"/> + <line hits="1" number="19"/> + <line hits="1" number="22"/> + <line hits="1" number="27"/> + <line hits="1" number="28"/> + <line hits="1" number="29"/> + <line hits="1" number="30"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="37"/> + <line hits="1" number="42"/> + <line hits="1" number="43"/> + <line hits="1" number="44"/> + <line hits="1" number="47"/> + <line hits="1" number="50"/> + <line hits="1" number="51"/> + <line hits="1" number="52"/> + <line hits="1" number="53"/> + <line hits="1" number="56"/> + <line hits="1" number="61"/> + <line hits="1" number="62"/> + <line hits="1" number="63"/> + <line hits="1" number="64"/> + <line hits="1" number="65"/> + <line hits="1" number="66"/> + <line hits="1" number="70"/> + <line hits="0" number="75"/> + <line hits="0" number="76"/> + <line hits="0" number="84"/> + <line hits="0" number="89"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="edge_test/MiniSeedFactory_test.py" line-rate="0.9481" name="MiniSeedFactory_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="7"/> + <line hits="1" number="10"/> + <line hits="1" number="14"/> + <line hits="1" number="17"/> + <line hits="1" number="21"/> + <line hits="1" number="24"/> + <line hits="1" number="29"/> + <line hits="1" number="30"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="35"/> + <line hits="1" number="36"/> + <line hits="1" number="37"/> + <line hits="1" number="38"/> + <line hits="1" number="41"/> + <line hits="1" number="46"/> + <line hits="1" number="47"/> + <line hits="1" number="50"/> + <line hits="1" number="53"/> + <line hits="1" number="56"/> + <line hits="1" number="57"/> + <line hits="1" number="58"/> + <line hits="1" number="59"/> + <line hits="1" number="60"/> + <line hits="1" number="63"/> + <line hits="1" number="64"/> + <line hits="1" number="65"/> + <line hits="1" number="66"/> + <line hits="1" number="68"/> + <line hits="1" number="69"/> + <line hits="1" number="71"/> + <line hits="1" number="72"/> + <line hits="1" number="75"/> + <line hits="1" number="78"/> + <line hits="1" number="79"/> + <line hits="1" number="80"/> + <line hits="1" number="81"/> + <line hits="1" number="82"/> + <line hits="1" number="84"/> + <line hits="1" number="86"/> + <line hits="1" number="87"/> + <line hits="1" number="89"/> + <line hits="1" number="90"/> + <line hits="1" number="91"/> + <line hits="1" number="93"/> + <line hits="1" number="94"/> + <line hits="1" number="95"/> + <line hits="1" number="96"/> + <line hits="1" number="99"/> + <line hits="1" number="104"/> + <line hits="1" number="105"/> + <line hits="1" number="106"/> + <line hits="1" number="107"/> + <line hits="1" number="108"/> + <line hits="1" number="109"/> + <line hits="1" number="113"/> + <line hits="0" number="118"/> + <line hits="0" number="119"/> + <line hits="0" number="127"/> + <line hits="0" number="132"/> + <line hits="1" number="139"/> + <line hits="1" number="161"/> + <line hits="1" number="162"/> + <line hits="1" number="163"/> + <line hits="1" number="164"/> + <line hits="1" number="165"/> + <line hits="1" number="166"/> + <line hits="1" number="167"/> + <line hits="1" number="168"/> + <line hits="1" number="169"/> + <line hits="1" number="170"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="edge_test/RawInputClient_test.py" line-rate="1" name="RawInputClient_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="9"/> + <line hits="1" number="10"/> + <line hits="1" number="11"/> + <line hits="1" number="12"/> + <line hits="1" number="14"/> + <line hits="1" number="16"/> + <line hits="1" number="19"/> + <line hits="1" number="22"/> + <line hits="1" number="23"/> + <line hits="1" number="24"/> + <line hits="1" number="25"/> + <line hits="1" number="26"/> + <line hits="1" number="27"/> + <line hits="1" number="29"/> + <line hits="1" number="44"/> + <line hits="1" number="53"/> + <line hits="1" number="54"/> + <line hits="1" number="56"/> + <line hits="1" number="59"/> + <line hits="1" number="62"/> + <line hits="1" number="63"/> + <line hits="1" number="64"/> + <line hits="1" number="65"/> + <line hits="1" number="66"/> + <line hits="1" number="75"/> + <line hits="1" number="76"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="edge_test/__init__.py" line-rate="1" name="__init__.py"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package branch-rate="0" complexity="0" line-rate="1" name="iaga2002_test"> + <classes> + <class branch-rate="0" complexity="0" filename="iaga2002_test/IAGA2002Factory_test.py" line-rate="1" name="IAGA2002Factory_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="7"/> + <line hits="1" number="13"/> + <line hits="1" number="14"/> + <line hits="1" number="15"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="iaga2002_test/IAGA2002Parser_test.py" line-rate="1" name="IAGA2002Parser_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="7"/> + <line hits="1" number="44"/> + <line hits="1" number="51"/> + <line hits="1" number="52"/> + <line hits="1" number="57"/> + <line hits="1" number="63"/> + <line hits="1" number="64"/> + <line hits="1" number="67"/> + <line hits="1" number="70"/> + <line hits="1" number="76"/> + <line hits="1" number="77"/> + <line hits="1" number="80"/> + <line hits="1" number="86"/> + <line hits="1" number="93"/> + <line hits="1" number="94"/> + <line hits="1" number="97"/> + <line hits="1" number="100"/> + <line hits="1" number="103"/> + <line hits="1" number="110"/> + <line hits="1" number="111"/> + <line hits="1" number="112"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="iaga2002_test/__init__.py" line-rate="1" name="__init__.py"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package branch-rate="0" complexity="0" line-rate="1" name="imfjson_test"> + <classes> + <class branch-rate="0" complexity="0" filename="imfjson_test/IMFJSONWriter_test.py" line-rate="1" name="IMFJSONWriter_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="9"/> + <line hits="1" number="10"/> + <line hits="1" number="11"/> + <line hits="1" number="12"/> + <line hits="1" number="13"/> + <line hits="1" number="14"/> + <line hits="1" number="15"/> + <line hits="1" number="18"/> + <line hits="1" number="25"/> + <line hits="1" number="26"/> + <line hits="1" number="27"/> + <line hits="1" number="29"/> + <line hits="1" number="30"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="36"/> + <line hits="1" number="37"/> + <line hits="1" number="38"/> + <line hits="1" number="39"/> + <line hits="1" number="42"/> + <line hits="1" number="49"/> + <line hits="1" number="50"/> + <line hits="1" number="52"/> + <line hits="1" number="55"/> + <line hits="1" number="56"/> + <line hits="1" number="57"/> + <line hits="1" number="58"/> + <line hits="1" number="61"/> + <line hits="1" number="69"/> + <line hits="1" number="70"/> + <line hits="1" number="71"/> + <line hits="1" number="72"/> + <line hits="1" number="73"/> + <line hits="1" number="74"/> + <line hits="1" number="75"/> + <line hits="1" number="76"/> + <line hits="1" number="77"/> + <line hits="1" number="78"/> + <line hits="1" number="80"/> + <line hits="1" number="81"/> + <line hits="1" number="82"/> + <line hits="1" number="83"/> + <line hits="1" number="84"/> + <line hits="1" number="85"/> + <line hits="1" number="86"/> + <line hits="1" number="89"/> + <line hits="1" number="92"/> + <line hits="1" number="93"/> + <line hits="1" number="94"/> + <line hits="1" number="98"/> + <line hits="1" number="99"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="imfjson_test/__init__.py" line-rate="1" name="__init__.py"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package branch-rate="0" complexity="0" line-rate="1" name="imfv122_test"> + <classes> + <class branch-rate="0" complexity="0" filename="imfv122_test/IMFV122Parser_test.py" line-rate="1" name="IMFV122Parser_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="8"/> + <line hits="1" number="11"/> + <line hits="1" number="12"/> + <line hits="1" number="15"/> + <line hits="1" number="16"/> + <line hits="1" number="17"/> + <line hits="1" number="18"/> + <line hits="1" number="19"/> + <line hits="1" number="20"/> + <line hits="1" number="21"/> + <line hits="1" number="22"/> + <line hits="1" number="25"/> + <line hits="1" number="28"/> + <line hits="1" number="29"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="35"/> + <line hits="1" number="36"/> + <line hits="1" number="37"/> + <line hits="1" number="38"/> + <line hits="1" number="39"/> + <line hits="1" number="42"/> + <line hits="1" number="45"/> + <line hits="1" number="46"/> + <line hits="1" number="49"/> + <line hits="1" number="50"/> + <line hits="1" number="52"/> + <line hits="1" number="53"/> + <line hits="1" number="54"/> + <line hits="1" number="55"/> + <line hits="1" number="56"/> + <line hits="1" number="57"/> + <line hits="1" number="58"/> + <line hits="1" number="59"/> + <line hits="1" number="60"/> + <line hits="1" number="61"/> + <line hits="1" number="62"/> + <line hits="1" number="65"/> + <line hits="1" number="68"/> + <line hits="1" number="69"/> + <line hits="1" number="72"/> + <line hits="1" number="73"/> + <line hits="1" number="74"/> + <line hits="1" number="75"/> + <line hits="1" number="76"/> + <line hits="1" number="77"/> + <line hits="1" number="78"/> + <line hits="1" number="79"/> + <line hits="1" number="80"/> + <line hits="1" number="81"/> + <line hits="1" number="82"/> + <line hits="1" number="83"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="imfv122_test/__init__.py" line-rate="1" name="__init__.py"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package branch-rate="0" complexity="0" line-rate="1" name="imfv283_test"> + <classes> + <class branch-rate="0" complexity="0" filename="imfv283_test/IMFV283Parser_test.py" line-rate="1" name="IMFV283Parser_test.py"> + <methods/> + <lines> + <line hits="1" number="2"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="7"/> + <line hits="1" number="10"/> + <line hits="1" number="17"/> + <line hits="1" number="25"/> + <line hits="1" number="31"/> + <line hits="1" number="32"/> + <line hits="1" number="35"/> + <line hits="1" number="38"/> + <line hits="1" number="41"/> + <line hits="1" number="42"/> + <line hits="1" number="45"/> + <line hits="1" number="50"/> + <line hits="1" number="52"/> + <line hits="1" number="53"/> + <line hits="1" number="54"/> + <line hits="1" number="55"/> + <line hits="1" number="58"/> + <line hits="1" number="59"/> + <line hits="1" number="60"/> + <line hits="1" number="63"/> + <line hits="1" number="68"/> + <line hits="1" number="70"/> + <line hits="1" number="71"/> + <line hits="1" number="72"/> + <line hits="1" number="73"/> + <line hits="1" number="76"/> + <line hits="1" number="77"/> + <line hits="1" number="78"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="imfv283_test/__init__.py" line-rate="1" name="__init__.py"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package branch-rate="0" complexity="0" line-rate="1" name="pcdcp_test"> + <classes> + <class branch-rate="0" complexity="0" filename="pcdcp_test/PCDCPFactory_test.py" line-rate="1" name="PCDCPFactory_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="6"/> + <line hits="1" number="8"/> + <line hits="1" number="15"/> + <line hits="1" number="24"/> + <line hits="1" number="30"/> + <line hits="1" number="32"/> + <line hits="1" number="33"/> + <line hits="1" number="34"/> + <line hits="1" number="35"/> + <line hits="1" number="36"/> + <line hits="1" number="37"/> + <line hits="1" number="38"/> + <line hits="1" number="39"/> + <line hits="1" number="40"/> + <line hits="1" number="43"/> + <line hits="1" number="49"/> + <line hits="1" number="51"/> + <line hits="1" number="52"/> + <line hits="1" number="53"/> + <line hits="1" number="54"/> + <line hits="1" number="55"/> + <line hits="1" number="56"/> + <line hits="1" number="57"/> + <line hits="1" number="58"/> + <line hits="1" number="59"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="pcdcp_test/PCDCPParser_test.py" line-rate="1" name="PCDCPParser_test.py"> + <methods/> + <lines> + <line hits="1" number="3"/> + <line hits="1" number="4"/> + <line hits="1" number="7"/> + <line hits="1" number="20"/> + <line hits="1" number="36"/> + <line hits="1" number="42"/> + <line hits="1" number="43"/> + <line hits="1" number="47"/> + <line hits="1" number="48"/> + <line hits="1" number="49"/> + <line hits="1" number="50"/> + <line hits="1" number="51"/> + <line hits="1" number="54"/> + <line hits="1" number="60"/> + <line hits="1" number="61"/> + <line hits="1" number="65"/> + <line hits="1" number="66"/> + <line hits="1" number="67"/> + <line hits="1" number="68"/> + <line hits="1" number="69"/> + </lines> + </class> + <class branch-rate="0" complexity="0" filename="pcdcp_test/__init__.py" line-rate="1" name="__init__.py"> + <methods/> + <lines/> + </class> + </classes> + </package> + <package branch-rate="0" complexity="0" line-rate="1" name="residual_test"> + <classes> + <class branch-rate="0" complexity="0" filename="residual_test/residual_test.py" line-rate="1" name="residual_test.py"> + <methods/> + <lines> + <line hits="1" number="1"/> + <line hits="1" number="2"/> + <line hits="1" number="4"/> + <line hits="1" number="5"/> + <line hits="1" number="13"/> + <line hits="1" number="17"/> + <line hits="1" number="18"/> + <line hits="1" number="19"/> + <line hits="1" number="20"/> + <line hits="1" number="21"/> + <line hits="1" number="27"/> + <line hits="1" number="33"/> + <line hits="1" number="40"/> + <line hits="1" number="41"/> + <line hits="1" number="46"/> + <line hits="1" number="51"/> + <line hits="1" number="53"/> + <line hits="1" number="54"/> + <line hits="1" number="57"/> + <line hits="1" number="62"/> + <line hits="1" number="64"/> + <line hits="1" number="65"/> + <line hits="1" number="68"/> + <line hits="1" number="75"/> + <line hits="1" number="77"/> + <line hits="1" number="82"/> + <line hits="1" number="89"/> + <line hits="1" number="91"/> + <line hits="1" number="98"/> + <line hits="1" number="104"/> + <line hits="1" number="109"/> + <line hits="1" number="110"/> + <line hits="1" number="117"/> + <line hits="1" number="123"/> + <line hits="1" number="128"/> + <line hits="1" number="129"/> + </lines> + </class> + </classes> + </package> + </packages> +</coverage> -- GitLab From 72ec699881958080c06550999018df0710eeb7fe Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 23 Jun 2020 15:14:37 -0600 Subject: [PATCH 21/46] update docker build --- .gitlab-ci.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bdda762f..9a3bbdd6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,9 +26,9 @@ variables: - .adjust_image_names image: ${CODE_REGISTRY}/ghsc/hazdev/cloud-formation/hazdev-build-runner:latest only: - - master@ghsc/geomag/geomag-plots - - production@ghsc/geomag/geomag-plots - - tags@ghsc/geomag/geomag-plots + - master@ghsc/geomag/geomag-algorithms + - production@ghsc/geomag/geomag-algorithms + - tags@ghsc/geomag/geomag-algorithms script: - docker build --pull @@ -104,8 +104,8 @@ variables: .staging: only: - - master@ghsc/geomag/geomag-plots - - tags@ghsc/geomag/geomag-plots + - master@ghsc/geomag/geomag-algorithms + - tags@ghsc/geomag/geomag-algorithms .staging01: tags: @@ -128,8 +128,8 @@ variables: - ^.*beta.*$ - ^.*-rc.*$ only: - - tags@ghsc/geomag/geomag-plots - - production@ghsc/geomag/geomag-plots + - tags@ghsc/geomag/geomag-algorithms + - production@ghsc/geomag/geomag-algorithms when: manual .production01: @@ -165,7 +165,6 @@ Check Python 3.8: ## -------------------------------------------------- # Integration Stage ## -------------------------------------------------- - Build Algorithms Image: extends: - .build_docker_image -- GitLab From e1fd12bff03be9d1f122969c765f6658e45a1e0c Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 23 Jun 2020 15:20:47 -0600 Subject: [PATCH 22/46] comment out 'only' section of docker build --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9a3bbdd6..c161a28f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,10 +25,10 @@ variables: extends: - .adjust_image_names image: ${CODE_REGISTRY}/ghsc/hazdev/cloud-formation/hazdev-build-runner:latest - only: - - master@ghsc/geomag/geomag-algorithms - - production@ghsc/geomag/geomag-algorithms - - tags@ghsc/geomag/geomag-algorithms + # only: + # - master@ghsc/geomag/geomag-algorithms + # - production@ghsc/geomag/geomag-algorithms + # - tags@ghsc/geomag/geomag-algorithms script: - docker build --pull -- GitLab From 9c1b81d6de4ef19959d570d39b47c6fd96d5383c Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 23 Jun 2020 16:10:36 -0600 Subject: [PATCH 23/46] comment out 3.6,7 to test docker build --- .gitlab-ci.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c161a28f..565be8b6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -144,17 +144,17 @@ variables: # Test Stage ## -------------------------------------------------- -Check Python 3.6: - extends: - - .check_code - variables: - PYTHON_VERSION: '3.6' +# Check Python 3.6: +# extends: +# - .check_code +# variables: +# PYTHON_VERSION: '3.6' -Check Python 3.7: - extends: - - .check_code - variables: - PYTHON_VERSION: '3.7' +# Check Python 3.7: +# extends: +# - .check_code +# variables: +# PYTHON_VERSION: '3.7' Check Python 3.8: extends: -- GitLab From 30eb6f1d2c74bb63bd873e15bb23a412a391f7d6 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 23 Jun 2020 16:20:00 -0600 Subject: [PATCH 24/46] comment out tags for testing --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 565be8b6..857333de 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,8 +46,8 @@ variables: - docker push ${INTERNAL_IMAGE_NAME} - docker image rm ${INTERNAL_IMAGE_NAME} stage: integration - tags: - - build + # tags: + # - build variables: FROM_IMAGE: ${CODE_REGISTRY}/devops/images/usgs/centos:latest -- GitLab From 20a1c01a09bfd12100e73f76a5a0d5ce47b963e3 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 23 Jun 2020 16:36:02 -0600 Subject: [PATCH 25/46] add skip lock to pipenv install --- .gitlab-ci.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 857333de..624b2b35 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -65,7 +65,7 @@ variables: # Install Project Dependencies - conda config --add channels conda-forge - conda install python=${PYTHON_VERSION} obspy pycurl - - pip install pipenv + - pip install pipenv --skip-lock - export LC_ALL=C.UTF-8 - export LANG=C.UTF-8 - pipenv --site-packages install --dev --pre @@ -144,17 +144,17 @@ variables: # Test Stage ## -------------------------------------------------- -# Check Python 3.6: -# extends: -# - .check_code -# variables: -# PYTHON_VERSION: '3.6' +Check Python 3.6: + extends: + - .check_code + variables: + PYTHON_VERSION: '3.6' -# Check Python 3.7: -# extends: -# - .check_code -# variables: -# PYTHON_VERSION: '3.7' +Check Python 3.7: + extends: + - .check_code + variables: + PYTHON_VERSION: '3.7' Check Python 3.8: extends: -- GitLab From f15ad3f79fe28c7492f4af2ff0cc9b57c5a0c119 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 23 Jun 2020 16:39:06 -0600 Subject: [PATCH 26/46] move skip lock --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 624b2b35..75c436bb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -65,10 +65,10 @@ variables: # Install Project Dependencies - conda config --add channels conda-forge - conda install python=${PYTHON_VERSION} obspy pycurl - - pip install pipenv --skip-lock + - pip install pipenv - export LC_ALL=C.UTF-8 - export LANG=C.UTF-8 - - pipenv --site-packages install --dev --pre + - pipenv --site-packages install --dev --pre --skip-lock # Run Code Checks - pipenv run black --check . - pipenv run pytest --cov-report xml:cov.xml --cov=test/ -- GitLab From f098b7116c4808197fb17cfe956dfa0ae4f18993 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Tue, 23 Jun 2020 17:12:43 -0600 Subject: [PATCH 27/46] comment out 3.7 for testing --- .gitlab-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 75c436bb..c8aace1f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -150,11 +150,11 @@ Check Python 3.6: variables: PYTHON_VERSION: '3.6' -Check Python 3.7: - extends: - - .check_code - variables: - PYTHON_VERSION: '3.7' +# Check Python 3.7: +# extends: +# - .check_code +# variables: +# PYTHON_VERSION: '3.7' Check Python 3.8: extends: -- GitLab From 603e6de0bfe211fe69faef9a14b14a3d038c4f8c Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 12:30:47 -0600 Subject: [PATCH 28/46] update stuffs --- .gitlab-ci.yml | 4 ++-- Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c8aace1f..7be83cf8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -68,7 +68,7 @@ variables: - pip install pipenv - export LC_ALL=C.UTF-8 - export LANG=C.UTF-8 - - pipenv --site-packages install --dev --pre --skip-lock + - pipenv --site-packages install --dev --pre # Run Code Checks - pipenv run black --check . - pipenv run pytest --cov-report xml:cov.xml --cov=test/ @@ -144,7 +144,7 @@ variables: # Test Stage ## -------------------------------------------------- -Check Python 3.6: +Check_Python_3.6: extends: - .check_code variables: diff --git a/Dockerfile b/Dockerfile index 215b2e55..c236da2c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -ARG FROM_IMAGE=usgs/centos:8 +ARG FROM_IMAGE=usgs/centos:latest FROM ${FROM_IMAGE} LABEL maintainer="Jeremy Fee <jmfee@usgs.gov>" -- GitLab From 11cab65d45fcb98617c90b2cbc3fc9ca732bc478 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 12:33:19 -0600 Subject: [PATCH 29/46] remove template for test --- .gitlab-ci.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7be83cf8..edc9b579 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -145,8 +145,24 @@ variables: ## -------------------------------------------------- Check_Python_3.6: - extends: - - .check_code + script: + - yum install -y wget which + - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh + - bash miniconda.sh -b -p $HOME/miniconda + - export PATH="$HOME/miniconda/bin:$PATH" + - conda config --set always_yes yes --set changeps1 no + - conda update --yes conda + - conda info -a + # Install Project Dependencies + - conda config --add channels conda-forge + - conda install python=${PYTHON_VERSION} obspy pycurl + - pip install pipenv + - export LC_ALL=C.UTF-8 + - export LANG=C.UTF-8 + - pipenv --site-packages install --dev --pre + # Run Code Checks + - pipenv run black --check . + - pipenv run pytest --cov-report xml:cov.xml --cov=test/ variables: PYTHON_VERSION: '3.6' -- GitLab From a70900caa37d69311af0d81392d9ccc4fa90c83a Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 13:04:38 -0600 Subject: [PATCH 30/46] update python version --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index edc9b579..0e885cb7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -164,8 +164,7 @@ Check_Python_3.6: - pipenv run black --check . - pipenv run pytest --cov-report xml:cov.xml --cov=test/ variables: - PYTHON_VERSION: '3.6' - + PYTHON_VERSION: '3.7' # Check Python 3.7: # extends: # - .check_code -- GitLab From 29ce1db6c3a6dbe48a4eae6c77ddcfb25f8795f9 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 13:31:41 -0600 Subject: [PATCH 31/46] update python version --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0e885cb7..f04f0056 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -164,7 +164,7 @@ Check_Python_3.6: - pipenv run black --check . - pipenv run pytest --cov-report xml:cov.xml --cov=test/ variables: - PYTHON_VERSION: '3.7' + PYTHON_VERSION: 3.7 # Check Python 3.7: # extends: # - .check_code -- GitLab From 14808741901681c31514ff5d4e1afba0034fd984 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 13:32:14 -0600 Subject: [PATCH 32/46] update python version --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f04f0056..0e885cb7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -164,7 +164,7 @@ Check_Python_3.6: - pipenv run black --check . - pipenv run pytest --cov-report xml:cov.xml --cov=test/ variables: - PYTHON_VERSION: 3.7 + PYTHON_VERSION: '3.7' # Check Python 3.7: # extends: # - .check_code -- GitLab From 6cc8ce4648a3102a520dbdc7cce6c1aba643936e Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 13:45:53 -0600 Subject: [PATCH 33/46] remove quotes? --- .gitlab-ci.yml | 33 +++++++++------------------------ 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0e885cb7..d831d7bc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -145,31 +145,16 @@ variables: ## -------------------------------------------------- Check_Python_3.6: - script: - - yum install -y wget which - - wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh - - bash miniconda.sh -b -p $HOME/miniconda - - export PATH="$HOME/miniconda/bin:$PATH" - - conda config --set always_yes yes --set changeps1 no - - conda update --yes conda - - conda info -a - # Install Project Dependencies - - conda config --add channels conda-forge - - conda install python=${PYTHON_VERSION} obspy pycurl - - pip install pipenv - - export LC_ALL=C.UTF-8 - - export LANG=C.UTF-8 - - pipenv --site-packages install --dev --pre - # Run Code Checks - - pipenv run black --check . - - pipenv run pytest --cov-report xml:cov.xml --cov=test/ + extends: + - .check_code variables: - PYTHON_VERSION: '3.7' -# Check Python 3.7: -# extends: -# - .check_code -# variables: -# PYTHON_VERSION: '3.7' + PYTHON_VERSION: '3.6' + +Check Python 3.7: + extends: + - .check_code + variables: + PYTHON_VERSION: 3.7 Check Python 3.8: extends: -- GitLab From 5b513991b0e4f2c7bfa5256ba153b7171ce2adda Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 13:46:37 -0600 Subject: [PATCH 34/46] ok, quotes back --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d831d7bc..dedf15e5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -154,7 +154,7 @@ Check Python 3.7: extends: - .check_code variables: - PYTHON_VERSION: 3.7 + PYTHON_VERSION: '3.7' Check Python 3.8: extends: -- GitLab From c2f474df6a1fd71ae4ba902d08284ef9e0bb4e8d Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 13:52:48 -0600 Subject: [PATCH 35/46] add skip lock flag --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dedf15e5..ea9ddd90 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -68,7 +68,7 @@ variables: - pip install pipenv - export LC_ALL=C.UTF-8 - export LANG=C.UTF-8 - - pipenv --site-packages install --dev --pre + - pipenv --site-packages install --dev --pre --skip-lock # Run Code Checks - pipenv run black --check . - pipenv run pytest --cov-report xml:cov.xml --cov=test/ -- GitLab From 26e53ba19490a6004cbf56fb7fd44d0ae5cbb776 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 14:09:41 -0600 Subject: [PATCH 36/46] test docker --- .gitlab-ci.yml | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ea9ddd90..03eece12 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,10 +25,10 @@ variables: extends: - .adjust_image_names image: ${CODE_REGISTRY}/ghsc/hazdev/cloud-formation/hazdev-build-runner:latest - # only: - # - master@ghsc/geomag/geomag-algorithms - # - production@ghsc/geomag/geomag-algorithms - # - tags@ghsc/geomag/geomag-algorithms + only: + - master@ghsc/geomag/geomag-algorithms + - production@ghsc/geomag/geomag-algorithms + - tags@ghsc/geomag/geomag-algorithms script: - docker build --pull @@ -46,8 +46,8 @@ variables: - docker push ${INTERNAL_IMAGE_NAME} - docker image rm ${INTERNAL_IMAGE_NAME} stage: integration - # tags: - # - build + tags: + - build variables: FROM_IMAGE: ${CODE_REGISTRY}/devops/images/usgs/centos:latest @@ -165,9 +165,28 @@ Check Python 3.8: ## -------------------------------------------------- # Integration Stage ## -------------------------------------------------- -Build Algorithms Image: - extends: - - .build_docker_image +Build_Algorithms_Image: + before_script: + - IMAGE_NAME=usgs/${APP_NAME}:${CI_COMMIT_REF_SLUG} + - IMAGE_NAME=${IMAGE_NAME/:master/:latest} + - INTERNAL_IMAGE_NAME=${CI_REGISTRY_IMAGE}/${IMAGE_NAME} + - STACK_NAME=${APP_NAME} + script: + - docker build + --pull + --build-arg APP_NAME=${APP_NAME} + --build-arg FROM_IMAGE=${FROM_IMAGE} + --build-arg GIT_BRANCH_NAME=${CI_COMMIT_REF_NAME} + --build-arg GIT_COMMIT_SHA=${CI_COMMIT_SHA} + --tag local/${IMAGE_NAME} . + + - docker tag local/${IMAGE_NAME} ${IMAGE_NAME} + - docker push ${IMAGE_NAME} + - docker image rm ${IMAGE_NAME} + + - docker tag local/${IMAGE_NAME} ${INTERNAL_IMAGE_NAME} + - docker push ${INTERNAL_IMAGE_NAME} + - docker image rm ${INTERNAL_IMAGE_NAME} variables: APP_NAME: geomag-algorithms ## -------------------------------------------------- -- GitLab From 81487a55118107ee5f11a0c2dc57b37872779435 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 14:57:34 -0600 Subject: [PATCH 37/46] remove tag for test --- .gitlab-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 03eece12..eed7ebc0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -180,11 +180,9 @@ Build_Algorithms_Image: --build-arg GIT_COMMIT_SHA=${CI_COMMIT_SHA} --tag local/${IMAGE_NAME} . - - docker tag local/${IMAGE_NAME} ${IMAGE_NAME} - docker push ${IMAGE_NAME} - docker image rm ${IMAGE_NAME} - - docker tag local/${IMAGE_NAME} ${INTERNAL_IMAGE_NAME} - docker push ${INTERNAL_IMAGE_NAME} - docker image rm ${INTERNAL_IMAGE_NAME} variables: -- GitLab From ee4252f5883a1676adedf84740d1061f70725e62 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 14:58:37 -0600 Subject: [PATCH 38/46] remove other tag --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eed7ebc0..b1641dab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -178,7 +178,6 @@ Build_Algorithms_Image: --build-arg FROM_IMAGE=${FROM_IMAGE} --build-arg GIT_BRANCH_NAME=${CI_COMMIT_REF_NAME} --build-arg GIT_COMMIT_SHA=${CI_COMMIT_SHA} - --tag local/${IMAGE_NAME} . - docker push ${IMAGE_NAME} - docker image rm ${IMAGE_NAME} -- GitLab From d4a7bd95530b03ae15a9b74b25fccac553be023e Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 15:00:12 -0600 Subject: [PATCH 39/46] add build tag --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b1641dab..3bf39a59 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -184,6 +184,8 @@ Build_Algorithms_Image: - docker push ${INTERNAL_IMAGE_NAME} - docker image rm ${INTERNAL_IMAGE_NAME} + tags: + - build variables: APP_NAME: geomag-algorithms ## -------------------------------------------------- -- GitLab From bf27a519d710f3148e20febd1ab46368f883a6eb Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 15:01:22 -0600 Subject: [PATCH 40/46] add build tag --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3bf39a59..f379bcf9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -177,7 +177,7 @@ Build_Algorithms_Image: --build-arg APP_NAME=${APP_NAME} --build-arg FROM_IMAGE=${FROM_IMAGE} --build-arg GIT_BRANCH_NAME=${CI_COMMIT_REF_NAME} - --build-arg GIT_COMMIT_SHA=${CI_COMMIT_SHA} + --build-arg GIT_COMMIT_SHA=${CI_COMMIT_SHA} . - docker push ${IMAGE_NAME} - docker image rm ${IMAGE_NAME} -- GitLab From 6aa3f353be63f8c28c301740de21c7e6e9e3fbb3 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 15:02:21 -0600 Subject: [PATCH 41/46] add from image --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f379bcf9..ad9b312a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -188,6 +188,7 @@ Build_Algorithms_Image: - build variables: APP_NAME: geomag-algorithms + FROM_IMAGE: ${CODE_REGISTRY}/devops/images/usgs/centos:latest ## -------------------------------------------------- # Deploy Stage ## -------------------------------------------------- -- GitLab From 2595921eed19350fe2c51e51d34b7ebcd6e36477 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 15:03:05 -0600 Subject: [PATCH 42/46] add from image --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ad9b312a..219c88fa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -188,7 +188,7 @@ Build_Algorithms_Image: - build variables: APP_NAME: geomag-algorithms - FROM_IMAGE: ${CODE_REGISTRY}/devops/images/usgs/centos:latest + FROM_IMAGE: usgs/centos:latest ## -------------------------------------------------- # Deploy Stage ## -------------------------------------------------- -- GitLab From 7c4f1cb592964beed941b53e3d636ddbfb7ce3dd Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 15:17:47 -0600 Subject: [PATCH 43/46] clean up --- .gitlab-ci.yml | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 219c88fa..91201217 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -166,29 +166,10 @@ Check Python 3.8: # Integration Stage ## -------------------------------------------------- Build_Algorithms_Image: - before_script: - - IMAGE_NAME=usgs/${APP_NAME}:${CI_COMMIT_REF_SLUG} - - IMAGE_NAME=${IMAGE_NAME/:master/:latest} - - INTERNAL_IMAGE_NAME=${CI_REGISTRY_IMAGE}/${IMAGE_NAME} - - STACK_NAME=${APP_NAME} - script: - - docker build - --pull - --build-arg APP_NAME=${APP_NAME} - --build-arg FROM_IMAGE=${FROM_IMAGE} - --build-arg GIT_BRANCH_NAME=${CI_COMMIT_REF_NAME} - --build-arg GIT_COMMIT_SHA=${CI_COMMIT_SHA} . - - - docker push ${IMAGE_NAME} - - docker image rm ${IMAGE_NAME} - - - docker push ${INTERNAL_IMAGE_NAME} - - docker image rm ${INTERNAL_IMAGE_NAME} - tags: - - build + extends: + - .build_docker_image variables: APP_NAME: geomag-algorithms - FROM_IMAGE: usgs/centos:latest ## -------------------------------------------------- # Deploy Stage ## -------------------------------------------------- -- GitLab From abcd448d94f02ae8c5906e7af5ee1f44c9d05e96 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Wed, 24 Jun 2020 15:24:17 -0600 Subject: [PATCH 44/46] fix job names --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 91201217..f2fe110c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -144,7 +144,7 @@ variables: # Test Stage ## -------------------------------------------------- -Check_Python_3.6: +Check Python 3.6: extends: - .check_code variables: @@ -165,7 +165,7 @@ Check Python 3.8: ## -------------------------------------------------- # Integration Stage ## -------------------------------------------------- -Build_Algorithms_Image: +Build Algorithms Docker Image: extends: - .build_docker_image variables: -- GitLab From fc6d94a29443108f4f94e6083fe0a20e83753ba3 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 25 Jun 2020 10:44:15 -0600 Subject: [PATCH 45/46] remove integration and build steps --- .gitlab-ci.yml | 149 ------------------------------------------------- 1 file changed, 149 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f2fe110c..87aebece 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,44 +13,6 @@ variables: # Templates ## -------------------------------------------------- -.adjust_image_names: - before_script: - - IMAGE_NAME=usgs/${APP_NAME}:${CI_COMMIT_REF_SLUG} - - IMAGE_NAME=${IMAGE_NAME/:master/:latest} - - INTERNAL_IMAGE_NAME=${CI_REGISTRY_IMAGE}/${IMAGE_NAME} - - STACK_NAME=${APP_NAME} - -.build_docker_image: - cache: {} - extends: - - .adjust_image_names - image: ${CODE_REGISTRY}/ghsc/hazdev/cloud-formation/hazdev-build-runner:latest - only: - - master@ghsc/geomag/geomag-algorithms - - production@ghsc/geomag/geomag-algorithms - - tags@ghsc/geomag/geomag-algorithms - script: - - docker build - --pull - --build-arg APP_NAME=${APP_NAME} - --build-arg FROM_IMAGE=${FROM_IMAGE} - --build-arg GIT_BRANCH_NAME=${CI_COMMIT_REF_NAME} - --build-arg GIT_COMMIT_SHA=${CI_COMMIT_SHA} - --tag local/${IMAGE_NAME} . - - - docker tag local/${IMAGE_NAME} ${IMAGE_NAME} - - docker push ${IMAGE_NAME} - - docker image rm ${IMAGE_NAME} - - - docker tag local/${IMAGE_NAME} ${INTERNAL_IMAGE_NAME} - - docker push ${INTERNAL_IMAGE_NAME} - - docker image rm ${INTERNAL_IMAGE_NAME} - stage: integration - tags: - - build - variables: - FROM_IMAGE: ${CODE_REGISTRY}/devops/images/usgs/centos:latest - .check_code: cache: {} image: usgs/centos:latest @@ -83,63 +45,6 @@ variables: variables: PYTHON_VERSION: 3.8 -.deploy: - cache: {} - extends: - - .adjust_image_names - image: ${CODE_REGISTRY}/ghsc/hazdev/cloud-formation/hazdev-build-runner:latest - script: - - git clone ${GENERIC_SWARM_DEPLOY_REPO} generic-deploy - - export REGISTRY=${CI_REGISTRY_IMAGE} - - cp -v - generic-deploy/default.config.sh - generic-deploy/default.funcs.sh - generic-deploy/deploy.sh - scripts/. - - ./scripts/deploy.sh - stage: deploy - tags: - - deploy - - swarm - -.staging: - only: - - master@ghsc/geomag/geomag-algorithms - - tags@ghsc/geomag/geomag-algorithms - -.staging01: - tags: - - staging01 - -.staging02: - tags: - - staging02 - -.mage: - variables: - USGS_ONLY: 'false' - -.mage01: - tags: - - mage01 - -.production: - except: - - ^.*beta.*$ - - ^.*-rc.*$ - only: - - tags@ghsc/geomag/geomag-algorithms - - production@ghsc/geomag/geomag-algorithms - when: manual - -.production01: - tags: - - production01 - -.production02: - tags: - - production02 - ## -------------------------------------------------- # Test Stage ## -------------------------------------------------- @@ -161,57 +66,3 @@ Check Python 3.8: - .check_code variables: PYTHON_VERSION: '3.8' - -## -------------------------------------------------- -# Integration Stage -## -------------------------------------------------- -Build Algorithms Docker Image: - extends: - - .build_docker_image - variables: - APP_NAME: geomag-algorithms -## -------------------------------------------------- -# Deploy Stage -## -------------------------------------------------- - -# Deploy Production01: - -# extends: -# - .deploy -# - .production -# - .production01 -# variables: -# APP_NAME: geomag-plots - -# Deploy Production02: -# extends: -# - .deploy -# - .production -# - .production02 -# variables: -# APP_NAME: geomag-plots - -# Deploy Staging01: -# extends: -# - .deploy -# - .staging -# - .staging01 -# variables: -# APP_NAME: geomag-plots - -# Deploy Staging02: -# extends: -# - .deploy -# - .staging -# - .staging02 -# variables: -# APP_NAME: geomag-plots - -# Deploy Mage01: -# extends: -# - .deploy -# - .staging -# - .mage -# - .mage01 -# variables: -# APP_NAME: geomag-plots -- GitLab From 76211dca0634db636ccfc3136b933146f771d9a4 Mon Sep 17 00:00:00 2001 From: Travis Rivers <trivers@contractor.usgs.gov> Date: Thu, 25 Jun 2020 15:43:51 -0600 Subject: [PATCH 46/46] remove cov, add to gitignore, and update Pipfile --- .gitignore | 1 + Pipfile | 2 +- cov.xml | 1755 ---------------------------------------------------- 3 files changed, 2 insertions(+), 1756 deletions(-) delete mode 100644 cov.xml diff --git a/.gitignore b/.gitignore index ffcd96a5..a8cadd0b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .coverage +cov.xml .DS_Store node_modules *.pyc diff --git a/Pipfile b/Pipfile index ad00171f..6576f15b 100644 --- a/Pipfile +++ b/Pipfile @@ -21,7 +21,7 @@ databases = {extras = ["postgresql", "sqlite"],version = "*"} fastapi = "*" httpx = "==0.11.1" openpyxl = "*" -pydantic = "==1.5.1" +pydantic = "*" sqlalchemy = "*" sqlalchemy-utc = "*" typing = "*" diff --git a/cov.xml b/cov.xml deleted file mode 100644 index fcffa53b..00000000 --- a/cov.xml +++ /dev/null @@ -1,1755 +0,0 @@ -<?xml version="1.0" ?> -<coverage branch-rate="0" branches-covered="0" branches-valid="0" complexity="0" line-rate="0.8602" lines-covered="1335" lines-valid="1552" timestamp="1592867049082" version="5.1"> - <!-- Generated by coverage.py: https://coverage.readthedocs.io --> - <!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd --> - <sources> - <source>/Users/trivers/Desktop/WebApps/Flask/geomag-algorithms/geomag-algorithms/test</source> - </sources> - <packages> - <package branch-rate="0" complexity="0" line-rate="0.7497" name="."> - <classes> - <class branch-rate="0" complexity="0" filename="ChannelConverter_test.py" line-rate="0.1336" name="ChannelConverter_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="7"/> - <line hits="1" number="8"/> - <line hits="1" number="9"/> - <line hits="1" number="10"/> - <line hits="1" number="12"/> - <line hits="1" number="14"/> - <line hits="1" number="17"/> - <line hits="1" number="48"/> - <line hits="0" number="55"/> - <line hits="0" number="56"/> - <line hits="0" number="57"/> - <line hits="0" number="58"/> - <line hits="0" number="59"/> - <line hits="0" number="60"/> - <line hits="1" number="62"/> - <line hits="0" number="73"/> - <line hits="0" number="74"/> - <line hits="0" number="75"/> - <line hits="0" number="76"/> - <line hits="0" number="77"/> - <line hits="0" number="82"/> - <line hits="0" number="83"/> - <line hits="0" number="84"/> - <line hits="0" number="85"/> - <line hits="0" number="86"/> - <line hits="0" number="87"/> - <line hits="0" number="91"/> - <line hits="0" number="92"/> - <line hits="0" number="93"/> - <line hits="0" number="94"/> - <line hits="0" number="95"/> - <line hits="0" number="96"/> - <line hits="0" number="102"/> - <line hits="0" number="103"/> - <line hits="0" number="104"/> - <line hits="0" number="105"/> - <line hits="0" number="106"/> - <line hits="0" number="107"/> - <line hits="1" number="109"/> - <line hits="0" number="118"/> - <line hits="0" number="119"/> - <line hits="0" number="120"/> - <line hits="0" number="121"/> - <line hits="0" number="122"/> - <line hits="1" number="124"/> - <line hits="0" number="133"/> - <line hits="0" number="134"/> - <line hits="0" number="135"/> - <line hits="0" number="136"/> - <line hits="0" number="139"/> - <line hits="0" number="140"/> - <line hits="0" number="141"/> - <line hits="0" number="142"/> - <line hits="1" number="144"/> - <line hits="0" number="153"/> - <line hits="0" number="154"/> - <line hits="0" number="155"/> - <line hits="0" number="156"/> - <line hits="0" number="159"/> - <line hits="0" number="160"/> - <line hits="0" number="161"/> - <line hits="0" number="162"/> - <line hits="1" number="164"/> - <line hits="0" number="176"/> - <line hits="0" number="177"/> - <line hits="0" number="178"/> - <line hits="0" number="179"/> - <line hits="0" number="180"/> - <line hits="0" number="181"/> - <line hits="1" number="183"/> - <line hits="0" number="193"/> - <line hits="0" number="194"/> - <line hits="0" number="195"/> - <line hits="0" number="196"/> - <line hits="0" number="197"/> - <line hits="1" number="199"/> - <line hits="0" number="210"/> - <line hits="0" number="211"/> - <line hits="0" number="212"/> - <line hits="0" number="213"/> - <line hits="0" number="216"/> - <line hits="0" number="217"/> - <line hits="0" number="218"/> - <line hits="0" number="219"/> - <line hits="0" number="222"/> - <line hits="0" number="223"/> - <line hits="0" number="224"/> - <line hits="0" number="225"/> - <line hits="0" number="226"/> - <line hits="0" number="229"/> - <line hits="0" number="230"/> - <line hits="0" number="231"/> - <line hits="0" number="232"/> - <line hits="0" number="233"/> - <line hits="0" number="236"/> - <line hits="0" number="237"/> - <line hits="0" number="238"/> - <line hits="0" number="239"/> - <line hits="0" number="240"/> - <line hits="0" number="243"/> - <line hits="0" number="244"/> - <line hits="0" number="245"/> - <line hits="0" number="246"/> - <line hits="0" number="247"/> - <line hits="1" number="249"/> - <line hits="0" number="258"/> - <line hits="0" number="259"/> - <line hits="0" number="260"/> - <line hits="0" number="261"/> - <line hits="0" number="264"/> - <line hits="0" number="265"/> - <line hits="0" number="266"/> - <line hits="0" number="267"/> - <line hits="0" number="270"/> - <line hits="0" number="271"/> - <line hits="0" number="272"/> - <line hits="0" number="273"/> - <line hits="1" number="275"/> - <line hits="0" number="283"/> - <line hits="0" number="284"/> - <line hits="0" number="285"/> - <line hits="0" number="286"/> - <line hits="1" number="288"/> - <line hits="0" number="296"/> - <line hits="0" number="297"/> - <line hits="0" number="298"/> - <line hits="0" number="299"/> - <line hits="1" number="301"/> - <line hits="0" number="312"/> - <line hits="0" number="313"/> - <line hits="0" number="314"/> - <line hits="0" number="315"/> - <line hits="0" number="316"/> - <line hits="0" number="321"/> - <line hits="0" number="322"/> - <line hits="0" number="323"/> - <line hits="0" number="324"/> - <line hits="0" number="325"/> - <line hits="0" number="326"/> - <line hits="0" number="330"/> - <line hits="0" number="331"/> - <line hits="0" number="332"/> - <line hits="0" number="333"/> - <line hits="0" number="334"/> - <line hits="0" number="335"/> - <line hits="0" number="341"/> - <line hits="0" number="342"/> - <line hits="0" number="343"/> - <line hits="0" number="344"/> - <line hits="0" number="345"/> - <line hits="0" number="346"/> - <line hits="0" number="347"/> - <line hits="0" number="348"/> - <line hits="1" number="350"/> - <line hits="0" number="358"/> - <line hits="0" number="359"/> - <line hits="0" number="360"/> - <line hits="0" number="361"/> - <line hits="0" number="362"/> - <line hits="1" number="364"/> - <line hits="0" number="373"/> - <line hits="0" number="374"/> - <line hits="0" number="375"/> - <line hits="0" number="376"/> - <line hits="0" number="379"/> - <line hits="0" number="380"/> - <line hits="0" number="381"/> - <line hits="0" number="382"/> - <line hits="1" number="384"/> - <line hits="0" number="394"/> - <line hits="0" number="395"/> - <line hits="0" number="396"/> - <line hits="0" number="399"/> - <line hits="0" number="400"/> - <line hits="0" number="401"/> - <line hits="0" number="402"/> - <line hits="0" number="405"/> - <line hits="0" number="406"/> - <line hits="0" number="407"/> - <line hits="0" number="408"/> - <line hits="0" number="411"/> - <line hits="0" number="412"/> - <line hits="0" number="413"/> - <line hits="0" number="414"/> - <line hits="1" number="416"/> - <line hits="0" number="427"/> - <line hits="0" number="428"/> - <line hits="0" number="429"/> - <line hits="0" number="430"/> - <line hits="0" number="432"/> - <line hits="0" number="433"/> - <line hits="0" number="434"/> - <line hits="0" number="435"/> - <line hits="0" number="438"/> - <line hits="0" number="439"/> - <line hits="0" number="440"/> - <line hits="0" number="441"/> - <line hits="0" number="442"/> - <line hits="1" number="444"/> - <line hits="0" number="454"/> - <line hits="0" number="455"/> - <line hits="0" number="456"/> - <line hits="0" number="457"/> - <line hits="1" number="461"/> - <line hits="0" number="471"/> - <line hits="0" number="472"/> - <line hits="0" number="473"/> - <line hits="0" number="474"/> - <line hits="0" number="477"/> - <line hits="0" number="478"/> - <line hits="0" number="479"/> - <line hits="0" number="480"/> - <line hits="0" number="481"/> - <line hits="1" number="483"/> - <line hits="0" number="491"/> - <line hits="0" number="492"/> - <line hits="0" number="493"/> - <line hits="0" number="494"/> - <line hits="0" number="495"/> - <line hits="0" number="497"/> - <line hits="0" number="498"/> - <line hits="1" number="500"/> - <line hits="0" number="505"/> - <line hits="0" number="506"/> - <line hits="0" number="507"/> - <line hits="1" number="511"/> - <line hits="0" number="516"/> - <line hits="0" number="517"/> - <line hits="0" number="518"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="Controller_test.py" line-rate="1" name="Controller_test.py"> - <methods/> - <lines> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="6"/> - <line hits="1" number="9"/> - <line hits="1" number="12"/> - <line hits="1" number="15"/> - <line hits="1" number="17"/> - <line hits="1" number="18"/> - <line hits="1" number="21"/> - <line hits="1" number="27"/> - <line hits="1" number="28"/> - <line hits="1" number="29"/> - <line hits="1" number="30"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="36"/> - <line hits="1" number="52"/> - <line hits="1" number="55"/> - <line hits="1" number="109"/> - <line hits="1" number="112"/> - <line hits="1" number="118"/> - <line hits="1" number="127"/> - <line hits="1" number="128"/> - <line hits="1" number="135"/> - <line hits="1" number="136"/> - <line hits="1" number="137"/> - <line hits="1" number="139"/> - <line hits="1" number="140"/> - <line hits="1" number="143"/> - <line hits="1" number="144"/> - <line hits="1" number="149"/> - <line hits="1" number="150"/> - <line hits="1" number="151"/> - <line hits="1" number="153"/> - <line hits="1" number="154"/> - <line hits="1" number="157"/> - <line hits="1" number="158"/> - <line hits="1" number="163"/> - <line hits="1" number="164"/> - <line hits="1" number="165"/> - <line hits="1" number="167"/> - <line hits="1" number="168"/> - <line hits="1" number="171"/> - <line hits="1" number="172"/> - <line hits="1" number="177"/> - <line hits="1" number="178"/> - <line hits="1" number="179"/> - <line hits="1" number="181"/> - <line hits="1" number="182"/> - <line hits="1" number="185"/> - <line hits="1" number="186"/> - <line hits="1" number="191"/> - <line hits="1" number="192"/> - <line hits="1" number="193"/> - <line hits="1" number="195"/> - <line hits="1" number="196"/> - <line hits="1" number="199"/> - <line hits="1" number="200"/> - <line hits="1" number="204"/> - <line hits="1" number="205"/> - <line hits="1" number="206"/> - <line hits="1" number="208"/> - <line hits="1" number="209"/> - <line hits="1" number="212"/> - <line hits="1" number="213"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="Metadata_test.py" line-rate="1" name="Metadata_test.py"> - <methods/> - <lines> - <line hits="1" number="1"/> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="6"/> - <line hits="1" number="12"/> - <line hits="1" number="18"/> - <line hits="1" number="24"/> - <line hits="1" number="27"/> - <line hits="1" number="29"/> - <line hits="1" number="35"/> - <line hits="1" number="38"/> - <line hits="1" number="40"/> - <line hits="1" number="46"/> - <line hits="1" number="49"/> - <line hits="1" number="51"/> - <line hits="1" number="57"/> - <line hits="1" number="60"/> - <line hits="1" number="62"/> - <line hits="1" number="68"/> - <line hits="1" number="71"/> - <line hits="1" number="73"/> - <line hits="1" number="79"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="ObservatoryMetadata_test.py" line-rate="1" name="ObservatoryMetadata_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="8"/> - <line hits="1" number="42"/> - <line hits="1" number="48"/> - <line hits="1" number="54"/> - <line hits="1" number="55"/> - <line hits="1" number="56"/> - <line hits="1" number="57"/> - <line hits="1" number="58"/> - <line hits="1" number="59"/> - <line hits="1" number="60"/> - <line hits="1" number="61"/> - <line hits="1" number="64"/> - <line hits="1" number="65"/> - <line hits="1" number="66"/> - <line hits="1" number="67"/> - <line hits="1" number="68"/> - <line hits="1" number="69"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="StreamConverter_test.py" line-rate="1" name="StreamConverter_test.py"> - <methods/> - <lines> - <line hits="1" number="12"/> - <line hits="1" number="13"/> - <line hits="1" number="14"/> - <line hits="1" number="16"/> - <line hits="1" number="18"/> - <line hits="1" number="19"/> - <line hits="1" number="21"/> - <line hits="1" number="22"/> - <line hits="1" number="23"/> - <line hits="1" number="26"/> - <line hits="1" number="33"/> - <line hits="1" number="39"/> - <line hits="1" number="40"/> - <line hits="1" number="41"/> - <line hits="1" number="42"/> - <line hits="1" number="43"/> - <line hits="1" number="44"/> - <line hits="1" number="45"/> - <line hits="1" number="46"/> - <line hits="1" number="53"/> - <line hits="1" number="62"/> - <line hits="1" number="69"/> - <line hits="1" number="73"/> - <line hits="1" number="74"/> - <line hits="1" number="75"/> - <line hits="1" number="76"/> - <line hits="1" number="77"/> - <line hits="1" number="78"/> - <line hits="1" number="79"/> - <line hits="1" number="80"/> - <line hits="1" number="81"/> - <line hits="1" number="86"/> - <line hits="1" number="87"/> - <line hits="1" number="88"/> - <line hits="1" number="89"/> - <line hits="1" number="90"/> - <line hits="1" number="91"/> - <line hits="1" number="92"/> - <line hits="1" number="93"/> - <line hits="1" number="94"/> - <line hits="1" number="95"/> - <line hits="1" number="102"/> - <line hits="1" number="111"/> - <line hits="1" number="118"/> - <line hits="1" number="123"/> - <line hits="1" number="124"/> - <line hits="1" number="125"/> - <line hits="1" number="126"/> - <line hits="1" number="127"/> - <line hits="1" number="128"/> - <line hits="1" number="129"/> - <line hits="1" number="130"/> - <line hits="1" number="131"/> - <line hits="1" number="132"/> - <line hits="1" number="137"/> - <line hits="1" number="143"/> - <line hits="1" number="148"/> - <line hits="1" number="149"/> - <line hits="1" number="150"/> - <line hits="1" number="151"/> - <line hits="1" number="152"/> - <line hits="1" number="153"/> - <line hits="1" number="154"/> - <line hits="1" number="155"/> - <line hits="1" number="156"/> - <line hits="1" number="157"/> - <line hits="1" number="162"/> - <line hits="1" number="169"/> - <line hits="1" number="175"/> - <line hits="1" number="176"/> - <line hits="1" number="177"/> - <line hits="1" number="178"/> - <line hits="1" number="179"/> - <line hits="1" number="180"/> - <line hits="1" number="181"/> - <line hits="1" number="182"/> - <line hits="1" number="183"/> - <line hits="1" number="184"/> - <line hits="1" number="191"/> - <line hits="1" number="198"/> - <line hits="1" number="203"/> - <line hits="1" number="210"/> - <line hits="1" number="216"/> - <line hits="1" number="217"/> - <line hits="1" number="218"/> - <line hits="1" number="219"/> - <line hits="1" number="220"/> - <line hits="1" number="221"/> - <line hits="1" number="222"/> - <line hits="1" number="223"/> - <line hits="1" number="224"/> - <line hits="1" number="225"/> - <line hits="1" number="232"/> - <line hits="1" number="235"/> - <line hits="1" number="244"/> - <line hits="1" number="255"/> - <line hits="1" number="256"/> - <line hits="1" number="257"/> - <line hits="1" number="258"/> - <line hits="1" number="259"/> - <line hits="1" number="260"/> - <line hits="1" number="261"/> - <line hits="1" number="262"/> - <line hits="1" number="263"/> - <line hits="1" number="270"/> - <line hits="1" number="271"/> - <line hits="1" number="272"/> - <line hits="1" number="273"/> - <line hits="1" number="274"/> - <line hits="1" number="275"/> - <line hits="1" number="276"/> - <line hits="1" number="277"/> - <line hits="1" number="286"/> - <line hits="1" number="298"/> - <line hits="1" number="299"/> - <line hits="1" number="300"/> - <line hits="1" number="303"/> - <line hits="1" number="306"/> - <line hits="1" number="309"/> - <line hits="1" number="312"/> - <line hits="1" number="313"/> - <line hits="1" number="314"/> - <line hits="1" number="316"/> - <line hits="1" number="324"/> - <line hits="1" number="325"/> - <line hits="1" number="326"/> - <line hits="1" number="329"/> - <line hits="1" number="332"/> - <line hits="1" number="333"/> - <line hits="1" number="336"/> - <line hits="1" number="337"/> - <line hits="1" number="338"/> - <line hits="1" number="339"/> - <line hits="1" number="340"/> - <line hits="1" number="343"/> - <line hits="1" number="346"/> - <line hits="1" number="362"/> - <line hits="1" number="363"/> - <line hits="1" number="364"/> - <line hits="1" number="365"/> - <line hits="1" number="366"/> - <line hits="1" number="367"/> - <line hits="1" number="368"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="TimeseriesUtility_test.py" line-rate="1" name="TimeseriesUtility_test.py"> - <methods/> - <lines> - <line hits="1" number="2"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="7"/> - <line hits="1" number="8"/> - <line hits="1" number="10"/> - <line hits="1" number="11"/> - <line hits="1" number="14"/> - <line hits="1" number="17"/> - <line hits="1" number="18"/> - <line hits="1" number="19"/> - <line hits="1" number="20"/> - <line hits="1" number="21"/> - <line hits="1" number="22"/> - <line hits="1" number="23"/> - <line hits="1" number="34"/> - <line hits="1" number="36"/> - <line hits="1" number="37"/> - <line hits="1" number="38"/> - <line hits="1" number="39"/> - <line hits="1" number="40"/> - <line hits="1" number="41"/> - <line hits="1" number="42"/> - <line hits="1" number="43"/> - <line hits="1" number="44"/> - <line hits="1" number="45"/> - <line hits="1" number="46"/> - <line hits="1" number="51"/> - <line hits="1" number="52"/> - <line hits="1" number="54"/> - <line hits="1" number="55"/> - <line hits="1" number="56"/> - <line hits="1" number="57"/> - <line hits="1" number="58"/> - <line hits="1" number="61"/> - <line hits="1" number="66"/> - <line hits="1" number="72"/> - <line hits="1" number="74"/> - <line hits="1" number="76"/> - <line hits="1" number="78"/> - <line hits="1" number="79"/> - <line hits="1" number="81"/> - <line hits="1" number="82"/> - <line hits="1" number="83"/> - <line hits="1" number="85"/> - <line hits="1" number="86"/> - <line hits="1" number="87"/> - <line hits="1" number="89"/> - <line hits="1" number="92"/> - <line hits="1" number="97"/> - <line hits="1" number="103"/> - <line hits="1" number="105"/> - <line hits="1" number="107"/> - <line hits="1" number="109"/> - <line hits="1" number="110"/> - <line hits="1" number="111"/> - <line hits="1" number="114"/> - <line hits="1" number="119"/> - <line hits="1" number="121"/> - <line hits="1" number="123"/> - <line hits="1" number="125"/> - <line hits="1" number="126"/> - <line hits="1" number="127"/> - <line hits="1" number="128"/> - <line hits="1" number="129"/> - <line hits="1" number="132"/> - <line hits="1" number="137"/> - <line hits="1" number="162"/> - <line hits="1" number="164"/> - <line hits="1" number="165"/> - <line hits="1" number="166"/> - <line hits="1" number="168"/> - <line hits="1" number="169"/> - <line hits="1" number="170"/> - <line hits="1" number="173"/> - <line hits="1" number="176"/> - <line hits="1" number="182"/> - <line hits="1" number="184"/> - <line hits="1" number="186"/> - <line hits="1" number="187"/> - <line hits="1" number="188"/> - <line hits="1" number="189"/> - <line hits="1" number="191"/> - <line hits="1" number="198"/> - <line hits="1" number="205"/> - <line hits="1" number="215"/> - <line hits="1" number="218"/> - <line hits="1" number="219"/> - <line hits="1" number="226"/> - <line hits="1" number="228"/> - <line hits="1" number="230"/> - <line hits="1" number="231"/> - <line hits="1" number="233"/> - <line hits="1" number="234"/> - <line hits="1" number="235"/> - <line hits="1" number="238"/> - <line hits="1" number="242"/> - <line hits="1" number="247"/> - <line hits="1" number="250"/> - <line hits="1" number="251"/> - <line hits="1" number="258"/> - <line hits="1" number="260"/> - <line hits="1" number="262"/> - <line hits="1" number="263"/> - <line hits="1" number="265"/> - <line hits="1" number="266"/> - <line hits="1" number="267"/> - <line hits="1" number="270"/> - <line hits="1" number="274"/> - <line hits="1" number="279"/> - <line hits="1" number="284"/> - <line hits="1" number="285"/> - <line hits="1" number="286"/> - <line hits="1" number="287"/> - <line hits="1" number="288"/> - <line hits="1" number="289"/> - <line hits="1" number="290"/> - <line hits="1" number="291"/> - <line hits="1" number="292"/> - <line hits="1" number="293"/> - <line hits="1" number="294"/> - <line hits="1" number="295"/> - <line hits="1" number="296"/> - <line hits="1" number="297"/> - <line hits="1" number="298"/> - <line hits="1" number="299"/> - <line hits="1" number="300"/> - <line hits="1" number="302"/> - <line hits="1" number="304"/> - <line hits="1" number="306"/> - <line hits="1" number="307"/> - <line hits="1" number="308"/> - <line hits="1" number="309"/> - <line hits="1" number="310"/> - <line hits="1" number="311"/> - <line hits="1" number="314"/> - <line hits="1" number="316"/> - <line hits="1" number="317"/> - <line hits="1" number="318"/> - <line hits="1" number="319"/> - <line hits="1" number="320"/> - <line hits="1" number="321"/> - <line hits="1" number="322"/> - <line hits="1" number="323"/> - <line hits="1" number="324"/> - <line hits="1" number="325"/> - <line hits="1" number="326"/> - <line hits="1" number="327"/> - <line hits="1" number="328"/> - <line hits="1" number="330"/> - <line hits="1" number="331"/> - <line hits="1" number="332"/> - <line hits="1" number="333"/> - <line hits="1" number="334"/> - <line hits="1" number="335"/> - <line hits="1" number="336"/> - <line hits="1" number="337"/> - <line hits="1" number="340"/> - <line hits="1" number="343"/> - <line hits="1" number="344"/> - <line hits="1" number="345"/> - <line hits="1" number="346"/> - <line hits="1" number="351"/> - <line hits="1" number="352"/> - <line hits="1" number="353"/> - <line hits="1" number="355"/> - <line hits="1" number="356"/> - <line hits="1" number="357"/> - <line hits="1" number="358"/> - <line hits="1" number="360"/> - <line hits="1" number="361"/> - <line hits="1" number="362"/> - <line hits="1" number="365"/> - <line hits="1" number="368"/> - <line hits="1" number="369"/> - <line hits="1" number="370"/> - <line hits="1" number="373"/> - <line hits="1" number="378"/> - <line hits="1" number="379"/> - <line hits="1" number="380"/> - <line hits="1" number="382"/> - <line hits="1" number="387"/> - <line hits="1" number="388"/> - <line hits="1" number="389"/> - <line hits="1" number="391"/> - <line hits="1" number="396"/> - <line hits="1" number="397"/> - <line hits="1" number="398"/> - <line hits="1" number="400"/> - <line hits="1" number="405"/> - <line hits="1" number="406"/> - <line hits="1" number="407"/> - <line hits="1" number="409"/> - <line hits="1" number="414"/> - <line hits="1" number="415"/> - <line hits="1" number="416"/> - <line hits="1" number="418"/> - <line hits="1" number="423"/> - <line hits="1" number="424"/> - <line hits="1" number="425"/> - <line hits="1" number="428"/> - <line hits="1" number="434"/> - <line hits="1" number="437"/> - <line hits="1" number="438"/> - <line hits="1" number="443"/> - <line hits="1" number="448"/> - <line hits="1" number="449"/> - <line hits="1" number="450"/> - <line hits="1" number="458"/> - <line hits="1" number="459"/> - <line hits="1" number="460"/> - <line hits="1" number="461"/> - <line hits="1" number="462"/> - <line hits="1" number="463"/> - <line hits="1" number="464"/> - <line hits="1" number="465"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="Util_test.py" line-rate="0.9318" name="Util_test.py"> - <methods/> - <lines> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="9"/> - <line hits="1" number="13"/> - <line hits="1" number="14"/> - <line hits="0" number="15"/> - <line hits="1" number="16"/> - <line hits="1" number="17"/> - <line hits="1" number="20"/> - <line hits="1" number="24"/> - <line hits="1" number="25"/> - <line hits="1" number="28"/> - <line hits="1" number="32"/> - <line hits="0" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="37"/> - <line hits="0" number="38"/> - <line hits="1" number="39"/> - <line hits="1" number="40"/> - <line hits="1" number="43"/> - <line hits="1" number="46"/> - <line hits="1" number="47"/> - <line hits="1" number="48"/> - <line hits="1" number="49"/> - <line hits="1" number="52"/> - <line hits="1" number="55"/> - <line hits="1" number="56"/> - <line hits="1" number="57"/> - <line hits="1" number="58"/> - <line hits="1" number="61"/> - <line hits="1" number="64"/> - <line hits="1" number="65"/> - <line hits="1" number="66"/> - <line hits="1" number="67"/> - <line hits="1" number="68"/> - <line hits="1" number="69"/> - <line hits="1" number="72"/> - <line hits="1" number="75"/> - <line hits="1" number="76"/> - <line hits="1" number="77"/> - <line hits="1" number="78"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="WebService_test.py" line-rate="0.9451" name="WebService_test.py"> - <methods/> - <lines> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="8"/> - <line hits="1" number="9"/> - <line hits="1" number="10"/> - <line hits="1" number="11"/> - <line hits="1" number="12"/> - <line hits="1" number="15"/> - <line hits="1" number="18"/> - <line hits="1" number="19"/> - <line hits="1" number="27"/> - <line hits="1" number="28"/> - <line hits="1" number="29"/> - <line hits="1" number="30"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="35"/> - <line hits="0" number="36"/> - <line hits="1" number="37"/> - <line hits="1" number="38"/> - <line hits="0" number="39"/> - <line hits="0" number="40"/> - <line hits="0" number="41"/> - <line hits="0" number="42"/> - <line hits="1" number="43"/> - <line hits="1" number="44"/> - <line hits="1" number="45"/> - <line hits="1" number="46"/> - <line hits="1" number="47"/> - <line hits="1" number="48"/> - <line hits="1" number="51"/> - <line hits="1" number="54"/> - <line hits="1" number="55"/> - <line hits="1" number="63"/> - <line hits="1" number="66"/> - <line hits="1" number="72"/> - <line hits="1" number="77"/> - <line hits="1" number="78"/> - <line hits="1" number="79"/> - <line hits="1" number="80"/> - <line hits="1" number="83"/> - <line hits="1" number="89"/> - <line hits="1" number="90"/> - <line hits="1" number="97"/> - <line hits="1" number="98"/> - <line hits="1" number="101"/> - <line hits="1" number="108"/> - <line hits="1" number="109"/> - <line hits="1" number="116"/> - <line hits="1" number="117"/> - <line hits="1" number="118"/> - <line hits="1" number="119"/> - <line hits="1" number="120"/> - <line hits="1" number="121"/> - <line hits="1" number="122"/> - <line hits="1" number="124"/> - <line hits="1" number="125"/> - <line hits="1" number="126"/> - <line hits="1" number="127"/> - <line hits="1" number="128"/> - <line hits="1" number="129"/> - <line hits="1" number="130"/> - <line hits="1" number="131"/> - <line hits="1" number="132"/> - <line hits="1" number="133"/> - <line hits="1" number="134"/> - <line hits="1" number="135"/> - <line hits="1" number="138"/> - <line hits="1" number="144"/> - <line hits="1" number="146"/> - <line hits="1" number="147"/> - <line hits="1" number="148"/> - <line hits="1" number="149"/> - <line hits="1" number="151"/> - <line hits="1" number="152"/> - <line hits="1" number="153"/> - <line hits="1" number="154"/> - <line hits="1" number="156"/> - <line hits="1" number="157"/> - <line hits="1" number="158"/> - <line hits="1" number="159"/> - <line hits="1" number="161"/> - <line hits="1" number="162"/> - <line hits="1" number="163"/> - <line hits="1" number="164"/> - <line hits="1" number="165"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="__init__.py" line-rate="1" name="__init__.py"> - <methods/> - <lines/> - </class> - </classes> - </package> - <package branch-rate="0" complexity="0" line-rate="1" name="algorithm_test"> - <classes> - <class branch-rate="0" complexity="0" filename="algorithm_test/AdjustedAlgorithm_test.py" line-rate="1" name="AdjustedAlgorithm_test.py"> - <methods/> - <lines> - <line hits="1" number="1"/> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="6"/> - <line hits="1" number="10"/> - <line hits="1" number="12"/> - <line hits="1" number="14"/> - <line hits="1" number="17"/> - <line hits="1" number="24"/> - <line hits="1" number="27"/> - <line hits="1" number="28"/> - <line hits="1" number="29"/> - <line hits="1" number="30"/> - <line hits="1" number="33"/> - <line hits="1" number="36"/> - <line hits="1" number="41"/> - <line hits="1" number="46"/> - <line hits="1" number="51"/> - <line hits="1" number="58"/> - <line hits="1" number="65"/> - <line hits="1" number="72"/> - <line hits="1" number="73"/> - <line hits="1" number="74"/> - <line hits="1" number="75"/> - <line hits="1" number="78"/> - <line hits="1" number="81"/> - <line hits="1" number="86"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="algorithm_test/Algorithm_test.py" line-rate="1" name="Algorithm_test.py"> - <methods/> - <lines> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="7"/> - <line hits="1" number="12"/> - <line hits="1" number="13"/> - <line hits="1" number="14"/> - <line hits="1" number="15"/> - <line hits="1" number="18"/> - <line hits="1" number="24"/> - <line hits="1" number="25"/> - <line hits="1" number="26"/> - <line hits="1" number="27"/> - <line hits="1" number="28"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="algorithm_test/AverageAlgorithm_test.py" line-rate="1" name="AverageAlgorithm_test.py"> - <methods/> - <lines> - <line hits="1" number="1"/> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="9"/> - <line hits="1" number="17"/> - <line hits="1" number="18"/> - <line hits="1" number="19"/> - <line hits="1" number="22"/> - <line hits="1" number="25"/> - <line hits="1" number="26"/> - <line hits="1" number="29"/> - <line hits="1" number="30"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="34"/> - <line hits="1" number="35"/> - <line hits="1" number="37"/> - <line hits="1" number="38"/> - <line hits="1" number="41"/> - <line hits="1" number="42"/> - <line hits="1" number="44"/> - <line hits="1" number="47"/> - <line hits="1" number="55"/> - <line hits="1" number="59"/> - <line hits="1" number="60"/> - <line hits="1" number="61"/> - <line hits="1" number="62"/> - <line hits="1" number="63"/> - <line hits="1" number="66"/> - <line hits="1" number="69"/> - <line hits="1" number="70"/> - <line hits="1" number="71"/> - <line hits="1" number="74"/> - <line hits="1" number="75"/> - <line hits="1" number="76"/> - <line hits="1" number="78"/> - <line hits="1" number="80"/> - <line hits="1" number="83"/> - <line hits="1" number="86"/> - <line hits="1" number="94"/> - <line hits="1" number="95"/> - <line hits="1" number="98"/> - <line hits="1" number="99"/> - <line hits="1" number="100"/> - <line hits="1" number="101"/> - <line hits="1" number="102"/> - <line hits="1" number="105"/> - <line hits="1" number="106"/> - <line hits="1" number="107"/> - <line hits="1" number="110"/> - <line hits="1" number="111"/> - <line hits="1" number="112"/> - <line hits="1" number="116"/> - <line hits="1" number="117"/> - <line hits="1" number="120"/> - <line hits="1" number="122"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="algorithm_test/FilterAlgorithm_test.py" line-rate="1" name="FilterAlgorithm_test.py"> - <methods/> - <lines> - <line hits="1" number="1"/> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="7"/> - <line hits="1" number="11"/> - <line hits="1" number="29"/> - <line hits="1" number="30"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="36"/> - <line hits="1" number="37"/> - <line hits="1" number="38"/> - <line hits="1" number="40"/> - <line hits="1" number="41"/> - <line hits="1" number="42"/> - <line hits="1" number="44"/> - <line hits="1" number="45"/> - <line hits="1" number="46"/> - <line hits="1" number="49"/> - <line hits="1" number="53"/> - <line hits="1" number="70"/> - <line hits="1" number="71"/> - <line hits="1" number="73"/> - <line hits="1" number="74"/> - <line hits="1" number="75"/> - <line hits="1" number="77"/> - <line hits="1" number="78"/> - <line hits="1" number="79"/> - <line hits="1" number="81"/> - <line hits="1" number="82"/> - <line hits="1" number="83"/> - <line hits="1" number="85"/> - <line hits="1" number="86"/> - <line hits="1" number="87"/> - <line hits="1" number="90"/> - <line hits="1" number="94"/> - <line hits="1" number="111"/> - <line hits="1" number="112"/> - <line hits="1" number="114"/> - <line hits="1" number="115"/> - <line hits="1" number="116"/> - <line hits="1" number="118"/> - <line hits="1" number="119"/> - <line hits="1" number="120"/> - <line hits="1" number="122"/> - <line hits="1" number="123"/> - <line hits="1" number="124"/> - <line hits="1" number="126"/> - <line hits="1" number="127"/> - <line hits="1" number="128"/> - <line hits="1" number="131"/> - <line hits="1" number="135"/> - <line hits="1" number="156"/> - <line hits="1" number="157"/> - <line hits="1" number="159"/> - <line hits="1" number="160"/> - <line hits="1" number="161"/> - <line hits="1" number="163"/> - <line hits="1" number="164"/> - <line hits="1" number="165"/> - <line hits="1" number="167"/> - <line hits="1" number="168"/> - <line hits="1" number="169"/> - <line hits="1" number="171"/> - <line hits="1" number="172"/> - <line hits="1" number="173"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="algorithm_test/SQDistAlgorithm_test.py" line-rate="1" name="SQDistAlgorithm_test.py"> - <methods/> - <lines> - <line hits="1" number="1"/> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="11"/> - <line hits="1" number="18"/> - <line hits="1" number="19"/> - <line hits="1" number="20"/> - <line hits="1" number="23"/> - <line hits="1" number="24"/> - <line hits="1" number="27"/> - <line hits="1" number="28"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="35"/> - <line hits="1" number="39"/> - <line hits="1" number="40"/> - <line hits="1" number="53"/> - <line hits="1" number="58"/> - <line hits="1" number="63"/> - <line hits="1" number="84"/> - <line hits="1" number="85"/> - <line hits="1" number="98"/> - <line hits="1" number="103"/> - <line hits="1" number="108"/> - <line hits="1" number="129"/> - <line hits="1" number="130"/> - <line hits="1" number="144"/> - <line hits="1" number="163"/> - <line hits="1" number="169"/> - <line hits="1" number="191"/> - <line hits="1" number="192"/> - <line hits="1" number="206"/> - <line hits="1" number="212"/> - <line hits="1" number="231"/> - <line hits="1" number="253"/> - <line hits="1" number="254"/> - <line hits="1" number="268"/> - <line hits="1" number="274"/> - <line hits="1" number="293"/> - <line hits="1" number="314"/> - <line hits="1" number="321"/> - <line hits="1" number="322"/> - <line hits="1" number="323"/> - <line hits="1" number="324"/> - <line hits="1" number="325"/> - <line hits="1" number="328"/> - <line hits="1" number="329"/> - <line hits="1" number="330"/> - <line hits="1" number="331"/> - <line hits="1" number="334"/> - <line hits="1" number="335"/> - <line hits="1" number="338"/> - <line hits="1" number="339"/> - <line hits="1" number="340"/> - <line hits="1" number="343"/> - <line hits="1" number="367"/> - <line hits="1" number="374"/> - <line hits="1" number="377"/> - <line hits="1" number="380"/> - <line hits="1" number="385"/> - <line hits="1" number="386"/> - <line hits="1" number="389"/> - <line hits="1" number="413"/> - <line hits="1" number="416"/> - <line hits="1" number="422"/> - <line hits="1" number="430"/> - <line hits="1" number="436"/> - <line hits="1" number="438"/> - <line hits="1" number="440"/> - <line hits="1" number="442"/> - <line hits="1" number="448"/> - <line hits="1" number="454"/> - <line hits="1" number="460"/> - <line hits="1" number="466"/> - <line hits="1" number="472"/> - <line hits="1" number="480"/> - <line hits="1" number="481"/> - <line hits="1" number="488"/> - <line hits="1" number="512"/> - <line hits="1" number="518"/> - <line hits="1" number="524"/> - <line hits="1" number="532"/> - <line hits="1" number="540"/> - <line hits="1" number="541"/> - <line hits="1" number="546"/> - <line hits="1" number="570"/> - <line hits="1" number="576"/> - <line hits="1" number="582"/> - <line hits="1" number="590"/> - <line hits="1" number="591"/> - <line hits="1" number="598"/> - <line hits="1" number="622"/> - <line hits="1" number="628"/> - <line hits="1" number="634"/> - <line hits="1" number="642"/> - <line hits="1" number="643"/> - <line hits="1" number="644"/> - <line hits="1" number="655"/> - <line hits="1" number="679"/> - <line hits="1" number="685"/> - <line hits="1" number="691"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="algorithm_test/XYZAlgorithm_test.py" line-rate="1" name="XYZAlgorithm_test.py"> - <methods/> - <lines> - <line hits="1" number="2"/> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="9"/> - <line hits="1" number="14"/> - <line hits="1" number="15"/> - <line hits="1" number="16"/> - <line hits="1" number="17"/> - <line hits="1" number="18"/> - <line hits="1" number="19"/> - <line hits="1" number="20"/> - <line hits="1" number="21"/> - <line hits="1" number="24"/> - <line hits="1" number="30"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="37"/> - <line hits="1" number="43"/> - <line hits="1" number="44"/> - <line hits="1" number="45"/> - <line hits="1" number="46"/> - <line hits="1" number="47"/> - <line hits="1" number="48"/> - <line hits="1" number="49"/> - <line hits="1" number="51"/> - <line hits="1" number="52"/> - <line hits="1" number="54"/> - <line hits="1" number="56"/> - <line hits="1" number="59"/> - <line hits="1" number="67"/> - <line hits="1" number="68"/> - <line hits="1" number="69"/> - <line hits="1" number="70"/> - <line hits="1" number="71"/> - <line hits="1" number="72"/> - <line hits="1" number="73"/> - <line hits="1" number="74"/> - <line hits="1" number="78"/> - <line hits="1" number="82"/> - <line hits="1" number="84"/> - <line hits="1" number="85"/> - <line hits="1" number="87"/> - <line hits="1" number="89"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="algorithm_test/__init__.py" line-rate="1" name="__init__.py"> - <methods/> - <lines/> - </class> - </classes> - </package> - <package branch-rate="0" complexity="0" line-rate="0.9444" name="edge_test"> - <classes> - <class branch-rate="0" complexity="0" filename="edge_test/EdgeFactory_test.py" line-rate="0.8919" name="EdgeFactory_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="8"/> - <line hits="1" number="12"/> - <line hits="1" number="15"/> - <line hits="1" number="19"/> - <line hits="1" number="22"/> - <line hits="1" number="27"/> - <line hits="1" number="28"/> - <line hits="1" number="29"/> - <line hits="1" number="30"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="37"/> - <line hits="1" number="42"/> - <line hits="1" number="43"/> - <line hits="1" number="44"/> - <line hits="1" number="47"/> - <line hits="1" number="50"/> - <line hits="1" number="51"/> - <line hits="1" number="52"/> - <line hits="1" number="53"/> - <line hits="1" number="56"/> - <line hits="1" number="61"/> - <line hits="1" number="62"/> - <line hits="1" number="63"/> - <line hits="1" number="64"/> - <line hits="1" number="65"/> - <line hits="1" number="66"/> - <line hits="1" number="70"/> - <line hits="0" number="75"/> - <line hits="0" number="76"/> - <line hits="0" number="84"/> - <line hits="0" number="89"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="edge_test/MiniSeedFactory_test.py" line-rate="0.9481" name="MiniSeedFactory_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="7"/> - <line hits="1" number="10"/> - <line hits="1" number="14"/> - <line hits="1" number="17"/> - <line hits="1" number="21"/> - <line hits="1" number="24"/> - <line hits="1" number="29"/> - <line hits="1" number="30"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="35"/> - <line hits="1" number="36"/> - <line hits="1" number="37"/> - <line hits="1" number="38"/> - <line hits="1" number="41"/> - <line hits="1" number="46"/> - <line hits="1" number="47"/> - <line hits="1" number="50"/> - <line hits="1" number="53"/> - <line hits="1" number="56"/> - <line hits="1" number="57"/> - <line hits="1" number="58"/> - <line hits="1" number="59"/> - <line hits="1" number="60"/> - <line hits="1" number="63"/> - <line hits="1" number="64"/> - <line hits="1" number="65"/> - <line hits="1" number="66"/> - <line hits="1" number="68"/> - <line hits="1" number="69"/> - <line hits="1" number="71"/> - <line hits="1" number="72"/> - <line hits="1" number="75"/> - <line hits="1" number="78"/> - <line hits="1" number="79"/> - <line hits="1" number="80"/> - <line hits="1" number="81"/> - <line hits="1" number="82"/> - <line hits="1" number="84"/> - <line hits="1" number="86"/> - <line hits="1" number="87"/> - <line hits="1" number="89"/> - <line hits="1" number="90"/> - <line hits="1" number="91"/> - <line hits="1" number="93"/> - <line hits="1" number="94"/> - <line hits="1" number="95"/> - <line hits="1" number="96"/> - <line hits="1" number="99"/> - <line hits="1" number="104"/> - <line hits="1" number="105"/> - <line hits="1" number="106"/> - <line hits="1" number="107"/> - <line hits="1" number="108"/> - <line hits="1" number="109"/> - <line hits="1" number="113"/> - <line hits="0" number="118"/> - <line hits="0" number="119"/> - <line hits="0" number="127"/> - <line hits="0" number="132"/> - <line hits="1" number="139"/> - <line hits="1" number="161"/> - <line hits="1" number="162"/> - <line hits="1" number="163"/> - <line hits="1" number="164"/> - <line hits="1" number="165"/> - <line hits="1" number="166"/> - <line hits="1" number="167"/> - <line hits="1" number="168"/> - <line hits="1" number="169"/> - <line hits="1" number="170"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="edge_test/RawInputClient_test.py" line-rate="1" name="RawInputClient_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="9"/> - <line hits="1" number="10"/> - <line hits="1" number="11"/> - <line hits="1" number="12"/> - <line hits="1" number="14"/> - <line hits="1" number="16"/> - <line hits="1" number="19"/> - <line hits="1" number="22"/> - <line hits="1" number="23"/> - <line hits="1" number="24"/> - <line hits="1" number="25"/> - <line hits="1" number="26"/> - <line hits="1" number="27"/> - <line hits="1" number="29"/> - <line hits="1" number="44"/> - <line hits="1" number="53"/> - <line hits="1" number="54"/> - <line hits="1" number="56"/> - <line hits="1" number="59"/> - <line hits="1" number="62"/> - <line hits="1" number="63"/> - <line hits="1" number="64"/> - <line hits="1" number="65"/> - <line hits="1" number="66"/> - <line hits="1" number="75"/> - <line hits="1" number="76"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="edge_test/__init__.py" line-rate="1" name="__init__.py"> - <methods/> - <lines/> - </class> - </classes> - </package> - <package branch-rate="0" complexity="0" line-rate="1" name="iaga2002_test"> - <classes> - <class branch-rate="0" complexity="0" filename="iaga2002_test/IAGA2002Factory_test.py" line-rate="1" name="IAGA2002Factory_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="7"/> - <line hits="1" number="13"/> - <line hits="1" number="14"/> - <line hits="1" number="15"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="iaga2002_test/IAGA2002Parser_test.py" line-rate="1" name="IAGA2002Parser_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="7"/> - <line hits="1" number="44"/> - <line hits="1" number="51"/> - <line hits="1" number="52"/> - <line hits="1" number="57"/> - <line hits="1" number="63"/> - <line hits="1" number="64"/> - <line hits="1" number="67"/> - <line hits="1" number="70"/> - <line hits="1" number="76"/> - <line hits="1" number="77"/> - <line hits="1" number="80"/> - <line hits="1" number="86"/> - <line hits="1" number="93"/> - <line hits="1" number="94"/> - <line hits="1" number="97"/> - <line hits="1" number="100"/> - <line hits="1" number="103"/> - <line hits="1" number="110"/> - <line hits="1" number="111"/> - <line hits="1" number="112"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="iaga2002_test/__init__.py" line-rate="1" name="__init__.py"> - <methods/> - <lines/> - </class> - </classes> - </package> - <package branch-rate="0" complexity="0" line-rate="1" name="imfjson_test"> - <classes> - <class branch-rate="0" complexity="0" filename="imfjson_test/IMFJSONWriter_test.py" line-rate="1" name="IMFJSONWriter_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="9"/> - <line hits="1" number="10"/> - <line hits="1" number="11"/> - <line hits="1" number="12"/> - <line hits="1" number="13"/> - <line hits="1" number="14"/> - <line hits="1" number="15"/> - <line hits="1" number="18"/> - <line hits="1" number="25"/> - <line hits="1" number="26"/> - <line hits="1" number="27"/> - <line hits="1" number="29"/> - <line hits="1" number="30"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="36"/> - <line hits="1" number="37"/> - <line hits="1" number="38"/> - <line hits="1" number="39"/> - <line hits="1" number="42"/> - <line hits="1" number="49"/> - <line hits="1" number="50"/> - <line hits="1" number="52"/> - <line hits="1" number="55"/> - <line hits="1" number="56"/> - <line hits="1" number="57"/> - <line hits="1" number="58"/> - <line hits="1" number="61"/> - <line hits="1" number="69"/> - <line hits="1" number="70"/> - <line hits="1" number="71"/> - <line hits="1" number="72"/> - <line hits="1" number="73"/> - <line hits="1" number="74"/> - <line hits="1" number="75"/> - <line hits="1" number="76"/> - <line hits="1" number="77"/> - <line hits="1" number="78"/> - <line hits="1" number="80"/> - <line hits="1" number="81"/> - <line hits="1" number="82"/> - <line hits="1" number="83"/> - <line hits="1" number="84"/> - <line hits="1" number="85"/> - <line hits="1" number="86"/> - <line hits="1" number="89"/> - <line hits="1" number="92"/> - <line hits="1" number="93"/> - <line hits="1" number="94"/> - <line hits="1" number="98"/> - <line hits="1" number="99"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="imfjson_test/__init__.py" line-rate="1" name="__init__.py"> - <methods/> - <lines/> - </class> - </classes> - </package> - <package branch-rate="0" complexity="0" line-rate="1" name="imfv122_test"> - <classes> - <class branch-rate="0" complexity="0" filename="imfv122_test/IMFV122Parser_test.py" line-rate="1" name="IMFV122Parser_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="8"/> - <line hits="1" number="11"/> - <line hits="1" number="12"/> - <line hits="1" number="15"/> - <line hits="1" number="16"/> - <line hits="1" number="17"/> - <line hits="1" number="18"/> - <line hits="1" number="19"/> - <line hits="1" number="20"/> - <line hits="1" number="21"/> - <line hits="1" number="22"/> - <line hits="1" number="25"/> - <line hits="1" number="28"/> - <line hits="1" number="29"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="35"/> - <line hits="1" number="36"/> - <line hits="1" number="37"/> - <line hits="1" number="38"/> - <line hits="1" number="39"/> - <line hits="1" number="42"/> - <line hits="1" number="45"/> - <line hits="1" number="46"/> - <line hits="1" number="49"/> - <line hits="1" number="50"/> - <line hits="1" number="52"/> - <line hits="1" number="53"/> - <line hits="1" number="54"/> - <line hits="1" number="55"/> - <line hits="1" number="56"/> - <line hits="1" number="57"/> - <line hits="1" number="58"/> - <line hits="1" number="59"/> - <line hits="1" number="60"/> - <line hits="1" number="61"/> - <line hits="1" number="62"/> - <line hits="1" number="65"/> - <line hits="1" number="68"/> - <line hits="1" number="69"/> - <line hits="1" number="72"/> - <line hits="1" number="73"/> - <line hits="1" number="74"/> - <line hits="1" number="75"/> - <line hits="1" number="76"/> - <line hits="1" number="77"/> - <line hits="1" number="78"/> - <line hits="1" number="79"/> - <line hits="1" number="80"/> - <line hits="1" number="81"/> - <line hits="1" number="82"/> - <line hits="1" number="83"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="imfv122_test/__init__.py" line-rate="1" name="__init__.py"> - <methods/> - <lines/> - </class> - </classes> - </package> - <package branch-rate="0" complexity="0" line-rate="1" name="imfv283_test"> - <classes> - <class branch-rate="0" complexity="0" filename="imfv283_test/IMFV283Parser_test.py" line-rate="1" name="IMFV283Parser_test.py"> - <methods/> - <lines> - <line hits="1" number="2"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="7"/> - <line hits="1" number="10"/> - <line hits="1" number="17"/> - <line hits="1" number="25"/> - <line hits="1" number="31"/> - <line hits="1" number="32"/> - <line hits="1" number="35"/> - <line hits="1" number="38"/> - <line hits="1" number="41"/> - <line hits="1" number="42"/> - <line hits="1" number="45"/> - <line hits="1" number="50"/> - <line hits="1" number="52"/> - <line hits="1" number="53"/> - <line hits="1" number="54"/> - <line hits="1" number="55"/> - <line hits="1" number="58"/> - <line hits="1" number="59"/> - <line hits="1" number="60"/> - <line hits="1" number="63"/> - <line hits="1" number="68"/> - <line hits="1" number="70"/> - <line hits="1" number="71"/> - <line hits="1" number="72"/> - <line hits="1" number="73"/> - <line hits="1" number="76"/> - <line hits="1" number="77"/> - <line hits="1" number="78"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="imfv283_test/__init__.py" line-rate="1" name="__init__.py"> - <methods/> - <lines/> - </class> - </classes> - </package> - <package branch-rate="0" complexity="0" line-rate="1" name="pcdcp_test"> - <classes> - <class branch-rate="0" complexity="0" filename="pcdcp_test/PCDCPFactory_test.py" line-rate="1" name="PCDCPFactory_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="6"/> - <line hits="1" number="8"/> - <line hits="1" number="15"/> - <line hits="1" number="24"/> - <line hits="1" number="30"/> - <line hits="1" number="32"/> - <line hits="1" number="33"/> - <line hits="1" number="34"/> - <line hits="1" number="35"/> - <line hits="1" number="36"/> - <line hits="1" number="37"/> - <line hits="1" number="38"/> - <line hits="1" number="39"/> - <line hits="1" number="40"/> - <line hits="1" number="43"/> - <line hits="1" number="49"/> - <line hits="1" number="51"/> - <line hits="1" number="52"/> - <line hits="1" number="53"/> - <line hits="1" number="54"/> - <line hits="1" number="55"/> - <line hits="1" number="56"/> - <line hits="1" number="57"/> - <line hits="1" number="58"/> - <line hits="1" number="59"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="pcdcp_test/PCDCPParser_test.py" line-rate="1" name="PCDCPParser_test.py"> - <methods/> - <lines> - <line hits="1" number="3"/> - <line hits="1" number="4"/> - <line hits="1" number="7"/> - <line hits="1" number="20"/> - <line hits="1" number="36"/> - <line hits="1" number="42"/> - <line hits="1" number="43"/> - <line hits="1" number="47"/> - <line hits="1" number="48"/> - <line hits="1" number="49"/> - <line hits="1" number="50"/> - <line hits="1" number="51"/> - <line hits="1" number="54"/> - <line hits="1" number="60"/> - <line hits="1" number="61"/> - <line hits="1" number="65"/> - <line hits="1" number="66"/> - <line hits="1" number="67"/> - <line hits="1" number="68"/> - <line hits="1" number="69"/> - </lines> - </class> - <class branch-rate="0" complexity="0" filename="pcdcp_test/__init__.py" line-rate="1" name="__init__.py"> - <methods/> - <lines/> - </class> - </classes> - </package> - <package branch-rate="0" complexity="0" line-rate="1" name="residual_test"> - <classes> - <class branch-rate="0" complexity="0" filename="residual_test/residual_test.py" line-rate="1" name="residual_test.py"> - <methods/> - <lines> - <line hits="1" number="1"/> - <line hits="1" number="2"/> - <line hits="1" number="4"/> - <line hits="1" number="5"/> - <line hits="1" number="13"/> - <line hits="1" number="17"/> - <line hits="1" number="18"/> - <line hits="1" number="19"/> - <line hits="1" number="20"/> - <line hits="1" number="21"/> - <line hits="1" number="27"/> - <line hits="1" number="33"/> - <line hits="1" number="40"/> - <line hits="1" number="41"/> - <line hits="1" number="46"/> - <line hits="1" number="51"/> - <line hits="1" number="53"/> - <line hits="1" number="54"/> - <line hits="1" number="57"/> - <line hits="1" number="62"/> - <line hits="1" number="64"/> - <line hits="1" number="65"/> - <line hits="1" number="68"/> - <line hits="1" number="75"/> - <line hits="1" number="77"/> - <line hits="1" number="82"/> - <line hits="1" number="89"/> - <line hits="1" number="91"/> - <line hits="1" number="98"/> - <line hits="1" number="104"/> - <line hits="1" number="109"/> - <line hits="1" number="110"/> - <line hits="1" number="117"/> - <line hits="1" number="123"/> - <line hits="1" number="128"/> - <line hits="1" number="129"/> - </lines> - </class> - </classes> - </package> - </packages> -</coverage> -- GitLab