[POL-stage_2_v12.0] Running shell script
+ runuser jenkins -c devops-stages/stage-test.sh
Launching tox
✔ OK black in 6.027 seconds
black create: /tmp/.tox/black
black installdeps: black
black installed: black==23.3.0,click==8.1.3,mypy-extensions==1.0.0,packaging==23.0,pathspec==0.11.1,platformdirs==3.2.0,tomli==2.0.1,typing_extensions==4.5.0
black run-test-pre: PYTHONHASHSEED='1267514370'
black run-test: commands[0] | black --check --diff osm_policy_module/
All done! ✨ 🍰 ✨
47 files would be left unchanged.
black run-test: commands[1] | black --check --diff setup.py
All done! ✨ 🍰 ✨
1 file would be left unchanged.
✔ OK flake8 in 8.542 seconds
flake8 create: /tmp/.tox/flake8
flake8 installdeps: flake8
flake8 develop-inst: /home/jenkins/workspace/POL-stage_2_v12.0
flake8 installed: flake8==6.0.0,mccabe==0.7.0,-e git+https://osm.etsi.org/gerrit/osm/POL.git@90c437db951c5d9cebac47c65f7aefd2cf6e7577#egg=osm_policy_module,pycodestyle==2.10.0,pyflakes==3.0.1
flake8 run-test-pre: PYTHONHASHSEED='171463141'
flake8 run-test: commands[0] | flake8 osm_policy_module/ setup.py
✔ OK safety in 21.11 seconds
safety create: /tmp/.tox/safety
safety installdeps: -r/home/jenkins/workspace/POL-stage_2_v12.0/requirements.txt, safety
safety develop-inst: /home/jenkins/workspace/POL-stage_2_v12.0
safety installed: aiokafka==0.7.2,cached-property==1.5.2,certifi==2022.6.15,charset-normalizer==2.0.12,click==8.1.3,dparse==0.6.2,idna==3.3,jsonschema==2.6.0,kafka-python==2.0.2,mock==4.0.3,-e git+https://osm.etsi.org/gerrit/osm/POL.git@90c437db951c5d9cebac47c65f7aefd2cf6e7577#egg=osm_policy_module,packaging==21.3,peewee==3.8.2,peewee-migrate==1.1.6,PyMySQL==0.9.3,pyparsing==3.0.9,PyYAML==5.4.1,requests==2.28.0,ruamel.yaml==0.17.21,ruamel.yaml.clib==0.2.7,safety==2.3.5,toml==0.10.2,urllib3==1.26.9
safety run-test-pre: PYTHONHASHSEED='2074203714'
safety run-test: commands[0] | - safety check --full-report
+==============================================================================+
/$$$$$$ /$$
/$$__ $$ | $$
/$$$$$$$ /$$$$$$ | $$ \__//$$$$$$ /$$$$$$ /$$ /$$
/$$_____/ |____ $$| $$$$ /$$__ $$|_ $$_/ | $$ | $$
| $$$$$$ /$$$$$$$| $$_/ | $$$$$$$$ | $$ | $$ | $$
\____ $$ /$$__ $$| $$ | $$_____/ | $$ /$$| $$ | $$
/$$$$$$$/| $$$$$$$| $$ | $$$$$$$ | $$$$/| $$$$$$$
|_______/ \_______/|__/ \_______/ \___/ \____ $$
/$$ | $$
| $$$$$$/
by pyup.io \______/
+==============================================================================+
[1mREPORT[0m
[31m[22m Safety is using PyUp's free open-source vulnerability database. This
data is 30 days old and limited. [0m
[31m For real-time enhanced vulnerability data, fix recommendations, severity
reporting, cybersecurity support, team and project policy management and more
sign up at https://pyup.io or email sales@pyup.io[0m
Safety [1mv2.3.5[0m is scanning for [1mVulnerabilities[0m[1m...[0m
[1m Scanning dependencies[0m in your [1menvironment:[0m
-> /home/jenkins/workspace/POL-stage_2_v12.0
-> /tmp/.tox/safety/lib/python3.8/site-packages
Using [1mnon-commercial database[0m
[1m Found and scanned 26 packages[0m
Timestamp [1m2023-03-29 08:35:26[0m
[1m 1[0m[1m vulnerability found[0m
[1m 0[0m[1m vulnerabilities ignored[0m
+==============================================================================+
[31m[1mVULNERABILITIES FOUND[0m
+==============================================================================+
[31m-> Vulnerability found in certifi version 2022.6.15
[0m[1m Vulnerability ID: [0m52365
[1m Affected spec: [0m<2022.12.07
[1m ADVISORY: [0mCertifi is a curated collection of Root Certificates for
validating the trustworthiness of SSL certificates while verifying the
identity of TLS hosts. Certifi 2022.12.07 removes root certificates from
"TrustCor" from the root store. These are in the process of being removed
from Mozilla's trust store. TrustCor's root certificates are being removed
pursuant to an investigation prompted by media reporting that TrustCor's
ownership also operated a business that produced spyware. Conclusions of
Mozilla's investigation can be found in the linked google group discussion.
[1m CVE-2022-23491[0m
[1m For more information, please visit [0mhttps://pyup.io/v/52365/f17[0m
Scan was completed. 1 vulnerability was found.
+==============================================================================+
[32m[1m REMEDIATIONS[0m
1 vulnerability was found in 1 package. For detailed remediation & fix
recommendations, upgrade to a commercial license.
+==============================================================================+
[31m[22m Safety is using PyUp's free open-source vulnerability database. This
data is 30 days old and limited. [0m
[31m For real-time enhanced vulnerability data, fix recommendations, severity
reporting, cybersecurity support, team and project policy management and more
sign up at https://pyup.io or email sales@pyup.io[0m
+==============================================================================+[0m
✔ OK cover in 31.096 seconds
cover create: /tmp/.tox/cover
cover installdeps: -r/home/jenkins/workspace/POL-stage_2_v12.0/requirements.txt, -r/home/jenkins/workspace/POL-stage_2_v12.0/requirements-dev.txt, -r/home/jenkins/workspace/POL-stage_2_v12.0/requirements-test.txt
cover develop-inst: /home/jenkins/workspace/POL-stage_2_v12.0
cover installed: aiokafka==0.7.2,cached-property==1.5.2,certifi==2022.6.15,charset-normalizer==2.0.12,click==8.1.3,coverage==6.4.1,dataclasses==0.6,idna==3.3,jsonschema==2.6.0,kafka-python==2.0.2,mock==4.0.3,nose2==0.11.0,osm-common @ git+https://osm.etsi.org/gerrit/osm/common.git@0509c81975df7adfd9f45005d534ef187d567bb5,-e git+https://osm.etsi.org/gerrit/osm/POL.git@90c437db951c5d9cebac47c65f7aefd2cf6e7577#egg=osm_policy_module,peewee==3.8.2,peewee-migrate==1.1.6,pycrypto==2.6.1,pymongo==3.12.3,PyMySQL==0.9.3,PyYAML==5.4.1,requests==2.28.0,six==1.16.0,urllib3==1.26.9
cover run-test-pre: PYTHONHASHSEED='4267065000'
cover run-test: commands[0] | sh -c 'rm -f nosetests.xml'
cover run-test: commands[1] | coverage erase
cover run-test: commands[2] | nose2 -C --coverage osm_policy_module
INFO:osm_policy_module.alarming.service:Executing request to url http://alarm-url/ for vnf alarm test_id with status alarm
Executing request to url http://alarm-url/ for vnf alarm test_id with status alarm
Executing request to url http://alarm-url/ for vnf alarm test_id with status alarm
INFO:osm_policy_module.alarming.service:Response <MagicMock name='post()' id='139662329228496'>
Response <MagicMock name='post()' id='139662329228496'>
Response <MagicMock name='post()' id='139662329228496'>
..INFO:osm_policy_module.alarming.service:Executing request to url http://insufficient-data-url/ for vnf alarm test_id with status insufficient-data
Executing request to url http://insufficient-data-url/ for vnf alarm test_id with status insufficient-data
Executing request to url http://insufficient-data-url/ for vnf alarm test_id with status insufficient-data
INFO:osm_policy_module.alarming.service:Response <MagicMock name='post()' id='139662330038160'>
Response <MagicMock name='post()' id='139662330038160'>
Response <MagicMock name='post()' id='139662330038160'>
.INFO:osm_policy_module.alarming.service:Executing request to url http://ok-url/ for vnf alarm test_id with status ok
Executing request to url http://ok-url/ for vnf alarm test_id with status ok
Executing request to url http://ok-url/ for vnf alarm test_id with status ok
INFO:osm_policy_module.alarming.service:Response <MagicMock name='post()' id='139662329754192'>
Response <MagicMock name='post()' id='139662329754192'>
Response <MagicMock name='post()' id='139662329754192'>
...INFO:osm_policy_module.autoscaling.service:Sending scale_in action message for ns: test_nsr_id
Sending scale_in action message for ns: test_nsr_id
Sending scale_in action message for ns: test_nsr_id
.INFO:osm_policy_module.autoscaling.service:Sending scale_in action message for ns: test_nsr_id
Sending scale_in action message for ns: test_nsr_id
Sending scale_in action message for ns: test_nsr_id
.INFO:osm_policy_module.autoscaling.service:Sending scale_in action message for ns: test_nsr_id
Sending scale_in action message for ns: test_nsr_id
Sending scale_in action message for ns: test_nsr_id
..INFO:osm_policy_module.autoscaling.service:Sending scale_out action message for ns: test_nsr_id
Sending scale_out action message for ns: test_nsr_id
Sending scale_out action message for ns: test_nsr_id
.INFO:osm_policy_module.autoscaling.service:Sending scale_out action message for ns: test_nsr_id
Sending scale_out action message for ns: test_nsr_id
Sending scale_out action message for ns: test_nsr_id
.INFO:osm_policy_module.autoscaling.service:Sending scale_out action message for ns: test_nsr_id
Sending scale_out action message for ns: test_nsr_id
Sending scale_out action message for ns: test_nsr_id
.....INFO:osm_policy_module.healing.service:HealingService Initialized
HealingService Initialized
HealingService Initialized
INFO:osm_policy_module.healing.service:Constructor created for HealingService
Constructor created for HealingService
Constructor created for HealingService
.INFO:osm_policy_module.healing.service:HealingService Initialized
HealingService Initialized
HealingService Initialized
INFO:osm_policy_module.healing.service:Constructor created for HealingService
Constructor created for HealingService
Constructor created for HealingService
INFO:osm_policy_module.core.agent:Configuring nsr_id: test_nsr_id
Configuring nsr_id: test_nsr_id
Configuring nsr_id: test_nsr_id
INFO:osm_policy_module.core.agent:Network_service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
Network_service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
Network_service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
.INFO:osm_policy_module.healing.service:HealingService Initialized
HealingService Initialized
HealingService Initialized
INFO:osm_policy_module.healing.service:Constructor created for HealingService
Constructor created for HealingService
Constructor created for HealingService
INFO:osm_policy_module.core.agent:_handle_policy_update: {'nsr_id': 'test_nsr_id', 'vnf_member_index': '1', 'operationState': 'COMPLETED'}
_handle_policy_update: {'nsr_id': 'test_nsr_id', 'vnf_member_index': '1', 'operationState': 'COMPLETED'}
_handle_policy_update: {'nsr_id': 'test_nsr_id', 'vnf_member_index': '1', 'operationState': 'COMPLETED'}
INFO:osm_policy_module.core.agent:Updating policies of VNF with nsr_id: test_nsr_id and vnf-member-index: 1
Updating policies of VNF with nsr_id: test_nsr_id and vnf-member-index: 1
Updating policies of VNF with nsr_id: test_nsr_id and vnf-member-index: 1
INFO:osm_policy_module.core.agent:_handle_policy_update: {'nsr_id': 'test_nsr_id', 'vnf_member_index': '1', 'operationState': 'FAILED'}
_handle_policy_update: {'nsr_id': 'test_nsr_id', 'vnf_member_index': '1', 'operationState': 'FAILED'}
_handle_policy_update: {'nsr_id': 'test_nsr_id', 'vnf_member_index': '1', 'operationState': 'FAILED'}
INFO:osm_policy_module.core.agent:Network service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
Network service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
Network service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
.INFO:osm_policy_module.healing.service:HealingService Initialized
HealingService Initialized
HealingService Initialized
INFO:osm_policy_module.healing.service:Constructor created for HealingService
Constructor created for HealingService
Constructor created for HealingService
INFO:osm_policy_module.core.agent:Deleting policies of VNF with nsr_id: test_nsr_id and vnf-member-index: 1
Deleting policies of VNF with nsr_id: test_nsr_id and vnf-member-index: 1
Deleting policies of VNF with nsr_id: test_nsr_id and vnf-member-index: 1
INFO:osm_policy_module.core.agent:Network service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
Network service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
Network service is not in COMPLETED or PARTIALLY_COMPLETED state. Current state is FAILED. Skipping...
...INFO:osm_policy_module.healing.service:HealingService Initialized
HealingService Initialized
HealingService Initialized
INFO:osm_policy_module.healing.service:Constructor created for HealingService
Constructor created for HealingService
Constructor created for HealingService
INFO:osm_policy_module.healing.service:Configuring Healing alarm for NS test_nsr_id
Configuring Healing alarm for NS test_nsr_id
Configuring Healing alarm for NS test_nsr_id
.INFO:osm_policy_module.healing.service:HealingService Initialized
HealingService Initialized
HealingService Initialized
INFO:osm_policy_module.healing.service:Constructor created for HealingService
Constructor created for HealingService
Constructor created for HealingService
INFO:osm_policy_module.autoscaling.service:Configuring scaling groups for network service with nsr_id: test_nsr_id
Configuring scaling groups for network service with nsr_id: test_nsr_id
Configuring scaling groups for network service with nsr_id: test_nsr_id
.INFO:osm_policy_module.healing.service:HealingService Initialized
HealingService Initialized
HealingService Initialized
INFO:osm_policy_module.healing.service:Constructor created for HealingService
Constructor created for HealingService
Constructor created for HealingService
INFO:osm_policy_module.alarming.service:Configuring vnf alarms for network service test_nsr_id
Configuring vnf alarms for network service test_nsr_id
Configuring vnf alarms for network service test_nsr_id
.ERROR:aiokafka:Unable connect to "kafka:9092": [Errno -3] Temporary failure in name resolution
Unable connect to "kafka:9092": [Errno -3] Temporary failure in name resolution
Unable connect to "kafka:9092": [Errno -3] Temporary failure in name resolution
s
ERROR:asyncio:Unclosed AIOKafkaProducer
producer: <aiokafka.producer.producer.AIOKafkaProducer object at 0x7f05ab7d0b80>
Unclosed AIOKafkaProducer
producer: <aiokafka.producer.producer.AIOKafkaProducer object at 0x7f05ab7d0b80>
Unclosed AIOKafkaProducer
producer: <aiokafka.producer.producer.AIOKafkaProducer object at 0x7f05ab7d0b80>
----------------------------------------------------------------------
Ran 27 tests in 0.839s
OK (skipped=1)
Name Stmts Miss Cover
------------------------------------------------------------------------------------------
osm_policy_module/__init__.py 0 0 100%
osm_policy_module/alarming/__init__.py 0 0 100%
osm_policy_module/alarming/service.py 173 80 54%
osm_policy_module/autoscaling/__init__.py 0 0 100%
osm_policy_module/autoscaling/service.py 246 91 63%
osm_policy_module/cmd/__init__.py 0 0 100%
osm_policy_module/cmd/policy_module_agent.py 34 34 0%
osm_policy_module/cmd/policy_module_healthcheck.py 30 30 0%
osm_policy_module/common/__init__.py 0 0 100%
osm_policy_module/common/common_db_client.py 35 17 51%
osm_policy_module/common/lcm_client.py 45 25 44%
osm_policy_module/common/message_bus_client.py 22 2 91%
osm_policy_module/common/mon_client.py 81 63 22%
osm_policy_module/core/__init__.py 0 0 100%
osm_policy_module/core/agent.py 115 50 57%
osm_policy_module/core/config.py 39 11 72%
osm_policy_module/core/database.py 166 23 86%
osm_policy_module/core/exceptions.py 4 0 100%
osm_policy_module/healing/__init__.py 0 0 100%
osm_policy_module/healing/service.py 137 86 37%
osm_policy_module/migrations/001_initial.py 50 50 0%
osm_policy_module/migrations/002_add_vnf_alarm.py 25 25 0%
osm_policy_module/migrations/003_add_fields_to_policy.py 7 7 0%
osm_policy_module/migrations/004_add_fields_to_alarm.py 7 7 0%
osm_policy_module/migrations/005_change_vnf_index_member_to_str.py 11 11 0%
osm_policy_module/migrations/006_add_heal_alarm.py 24 24 0%
osm_policy_module/migrations/007_add_vnf_alarm_fields.py 7 7 0%
osm_policy_module/migrations/__init__.py 0 0 100%
osm_policy_module/migrations/conf.py 2 2 0%
osm_policy_module/tests/__init__.py 0 0 100%
osm_policy_module/tests/integration/__init__.py 0 0 100%
osm_policy_module/tests/integration/test_kafka_messages.py 44 14 68%
osm_policy_module/tests/integration/test_policy_agent.py 124 2 98%
osm_policy_module/tests/unit/__init__.py 0 0 100%
osm_policy_module/tests/unit/alarming/__init__.py 0 0 100%
osm_policy_module/tests/unit/alarming/test_alarming_service.py 83 6 93%
osm_policy_module/tests/unit/autoscaling/__init__.py 0 0 100%
osm_policy_module/tests/unit/autoscaling/test_autoscaling_service.py 177 0 100%
osm_policy_module/tests/unit/common/__init__.py 0 0 100%
osm_policy_module/tests/unit/common/test_message_bus_client.py 41 1 98%
osm_policy_module/tests/unit/core/__init__.py 0 0 100%
osm_policy_module/tests/unit/core/test_policy_agent.py 148 2 99%
osm_policy_module/tests/unit/utils/__init__.py 0 0 100%
osm_policy_module/tests/unit/utils/test_vnfd_utils.py 19 0 100%
osm_policy_module/utils/__init__.py 0 0 100%
osm_policy_module/utils/vnfd.py 14 0 100%
------------------------------------------------------------------------------------------
TOTAL 1910 670 65%
cover run-test: commands[3] | coverage report '--omit=*tests*'
Name Stmts Miss Cover
----------------------------------------------------------------------------------------
osm_policy_module/__init__.py 0 0 100%
osm_policy_module/alarming/__init__.py 0 0 100%
osm_policy_module/alarming/service.py 173 80 54%
osm_policy_module/autoscaling/__init__.py 0 0 100%
osm_policy_module/autoscaling/service.py 246 91 63%
osm_policy_module/cmd/__init__.py 0 0 100%
osm_policy_module/cmd/policy_module_agent.py 34 34 0%
osm_policy_module/cmd/policy_module_healthcheck.py 30 30 0%
osm_policy_module/common/__init__.py 0 0 100%
osm_policy_module/common/common_db_client.py 35 17 51%
osm_policy_module/common/lcm_client.py 45 25 44%
osm_policy_module/common/message_bus_client.py 22 2 91%
osm_policy_module/common/mon_client.py 81 63 22%
osm_policy_module/core/__init__.py 0 0 100%
osm_policy_module/core/agent.py 115 50 57%
osm_policy_module/core/config.py 39 11 72%
osm_policy_module/core/database.py 166 23 86%
osm_policy_module/core/exceptions.py 4 0 100%
osm_policy_module/healing/__init__.py 0 0 100%
osm_policy_module/healing/service.py 137 86 37%
osm_policy_module/migrations/001_initial.py 50 50 0%
osm_policy_module/migrations/002_add_vnf_alarm.py 25 25 0%
osm_policy_module/migrations/003_add_fields_to_policy.py 7 7 0%
osm_policy_module/migrations/004_add_fields_to_alarm.py 7 7 0%
osm_policy_module/migrations/005_change_vnf_index_member_to_str.py 11 11 0%
osm_policy_module/migrations/006_add_heal_alarm.py 24 24 0%
osm_policy_module/migrations/007_add_vnf_alarm_fields.py 7 7 0%
osm_policy_module/migrations/__init__.py 0 0 100%
osm_policy_module/migrations/conf.py 2 2 0%
osm_policy_module/utils/__init__.py 0 0 100%
osm_policy_module/utils/vnfd.py 14 0 100%
----------------------------------------------------------------------------------------
TOTAL 1274 645 49%
cover run-test: commands[4] | coverage html -d ./cover '--omit=*tests*'
Wrote HTML report to ./cover/index.html
cover run-test: commands[5] | coverage xml -o coverage.xml '--omit=*tests*'
Wrote XML report to coverage.xml
✔ OK pylint in 43.301 seconds
pylint create: /tmp/.tox/pylint
pylint installdeps: -r/home/jenkins/workspace/POL-stage_2_v12.0/requirements.txt, -r/home/jenkins/workspace/POL-stage_2_v12.0/requirements-dev.txt, -r/home/jenkins/workspace/POL-stage_2_v12.0/requirements-test.txt, pylint
pylint develop-inst: /home/jenkins/workspace/POL-stage_2_v12.0
pylint installed: aiokafka==0.7.2,astroid==2.15.1,cached-property==1.5.2,certifi==2022.6.15,charset-normalizer==2.0.12,click==8.1.3,coverage==6.4.1,dataclasses==0.6,dill==0.3.6,idna==3.3,isort==5.12.0,jsonschema==2.6.0,kafka-python==2.0.2,lazy-object-proxy==1.9.0,mccabe==0.7.0,mock==4.0.3,nose2==0.11.0,osm-common @ git+https://osm.etsi.org/gerrit/osm/common.git@0509c81975df7adfd9f45005d534ef187d567bb5,-e git+https://osm.etsi.org/gerrit/osm/POL.git@90c437db951c5d9cebac47c65f7aefd2cf6e7577#egg=osm_policy_module,peewee==3.8.2,peewee-migrate==1.1.6,platformdirs==3.2.0,pycrypto==2.6.1,pylint==2.17.1,pymongo==3.12.3,PyMySQL==0.9.3,PyYAML==5.4.1,requests==2.28.0,six==1.16.0,tomli==2.0.1,tomlkit==0.11.7,typing_extensions==4.5.0,urllib3==1.26.9,wrapt==1.15.0
pylint run-test-pre: PYTHONHASHSEED='4032481528'
pylint run-test: commands[0] | - pylint -E osm_policy_module
************* Module osm_policy_module.alarming.service
osm_policy_module/alarming/service.py:188:29: E1133: Non-iterable value VnfAlarmRepository.list(VnfAlarm.nsr_id == nsr_id) is used in an iterating context (not-an-iterable)
osm_policy_module/alarming/service.py:226:29: E1133: Non-iterable value VnfAlarmRepository.list(alarm_conditions) is used in an iterating context (not-an-iterable)
osm_policy_module/alarming/service.py:319:39: E0701: Bad except clauses order (RequestException is an ancestor class of ConnectionError) (bad-except-order)
osm_policy_module/alarming/service.py:342:35: E0701: Bad except clauses order (RequestException is an ancestor class of ConnectionError) (bad-except-order)
************* Module osm_policy_module.healing.service
osm_policy_module/healing/service.py:157:29: E1133: Non-iterable value HealingActionRepository.list(HealingAction.nsr_id == nsr_id) is used in an iterating context (not-an-iterable)
osm_policy_module/healing/service.py:194:29: E1133: Non-iterable value HealingActionRepository.list(HealingAction.nsr_id == nsr_id) is used in an iterating context (not-an-iterable)
osm_policy_module/healing/service.py:265:33: E1133: Non-iterable value alarms is used in an iterating context (not-an-iterable)
************* Module osm_policy_module.autoscaling.service
osm_policy_module/autoscaling/service.py:270:41: E1133: Non-iterable value ScalingGroupRepository.list(scale_conditions) is used in an iterating context (not-an-iterable)
osm_policy_module/autoscaling/service.py:304:41: E1133: Non-iterable value ScalingGroupRepository.list(ScalingGroup.nsr_id == nsr_id) is used in an iterating context (not-an-iterable)
osm_policy_module/autoscaling/service.py:387:29: E1133: Non-iterable value alarms is used in an iterating context (not-an-iterable)
___________________________________ summary ____________________________________
black: commands succeeded
cover: commands succeeded
flake8: commands succeeded
pylint: commands succeeded
safety: commands succeeded
congratulations :)