# Python code coverage is missing files

**URL:** <https://community.codecov.com/t/python-code-coverage-is-missing-files/4311>\
**Category:** Support\
**Created:** [May 3, 2023, 6:13pm UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311 "2023-05-03T18:13:49Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Wayonb](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/wayonb/32/2302_2.png) [@Wayonb](https://community.codecov.com/u/Wayonb)\
**Post date:** [May 3, 2023, 6:13pm UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/1 "2023-05-03T18:13:50Z")

</div>

## Before submitting a topic, please confirm the following

I have searched for similar issues before creating this topic.  
 I have verified that my repository is using the [Codecov GitHub app](https://github.com/apps/codecov), if using GitHub  
 I have [validated](https://docs.codecov.com/docs/codecov-yaml#validate-your-repository-yaml) my `codecov.yaml` configuration file.  
 I have filled out the below sections to the best of my ability.  
 I understand that the community boards are a free, best-effort tool. While we hope to have someone on the Codecov team resolve your problem quickly, this is not always possible.

### Description

Created a new monorepo with packages with Python and Javascript. The Javascript project looks fine but the Python project is missing files. Python project is using coverage tool and the data looks fine from the tool.

### CI/CD URL

[Please provide a link to the CI/CD run.](https://jenkins.symboldev.com/job/Nem/job/generated/job/miscellaneous/job/nemesis-generator/job/dev/4/console)

### Codecov Output

Please provide the full output of running the uploader on your CI/CD. This will typically have the Codecov logo as ASCII.

```auto
12:09:49 + codecov --verbose --nonZero --rootDir /home/ubuntu/jenkins/workspace/cellaneous_nemesis-generator_dev --flags nemesis-generator --dir .
12:09:49 [2023-05-03T16:09:49.125Z] ['verbose'] Start of uploader: 1683130189125...
12:09:49 [2023-05-03T16:09:49.126Z] ['info'] 
12:09:49 _____ _
12:09:49 / ____ | | |
12:09:49 | | _____ | | ______  _______
12:09:49 | | / _ \ / _` |/ _ \/ __/ _ \ \ / /
12:09:49 | |___| (_) | (_| |__/ (_| (_) \ V /
12:09:49 \ _____\___ / \ __,_|\___ |\ ___\___ / \_/
12:09:49  
12:09:49 Codecov report uploader 0.5.0
12:09:49 [2023-05-03T16:09:49.126Z] ['info'] => Project root located at: /home/ubuntu/jenkins/workspace/cellaneous_nemesis-generator_dev
12:09:49 [2023-05-03T16:09:49.129Z] ['info'] -> Token found by environment variables
12:09:49 [2023-05-03T16:09:49.130Z] ['verbose'] Start of network processing...
12:09:49 [2023-05-03T16:09:49.130Z] ['verbose'] Searching for files in /home/ubuntu/jenkins/workspace/cellaneous_nemesis-generator_dev
12:09:49 [2023-05-03T16:09:49.272Z] ['verbose'] Skipping coveragepy, no .coverage file found.
12:09:49 [2023-05-03T16:09:49.276Z] ['info'] Searching for coverage files...
12:09:49 [2023-05-03T16:09:49.357Z] ['info'] Warning: Some files located via search were excluded from upload.
12:09:49 [2023-05-03T16:09:49.358Z] ['info'] If Codecov did not locate your files, please review https://docs.codecov.com/docs/supported-report-formats
12:09:49 [2023-05-03T16:09:49.358Z] ['verbose'] Preparing to clean the following coverage paths: coverage.xml
12:09:49 [2023-05-03T16:09:49.358Z] ['info'] => Found 1 possible coverage files:
12:09:49 coverage.xml
12:09:49 [2023-05-03T16:09:49.358Z] ['verbose'] End of network processing
12:09:49 [2023-05-03T16:09:49.358Z] ['info'] Processing coverage.xml...
12:09:49 [2023-05-03T16:09:49.363Z] ['info'] Detected Jenkins CI as the CI provider.
12:09:49 [2023-05-03T16:09:49.363Z] ['verbose'] -> Using the following env variables:
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] BRANCH_NAME: dev
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] BUILD_NUMBER: 4
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] BUILD_URL: https://jenkins.symboldev.com/job/Nem/job/generated/job/miscellaneous/job/nemesis-generator/job/dev/4/
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] CHANGE_ID: undefined
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] GIT_BRANCH: dev
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] GIT_COMMIT: 0f9087a61ea292f3c1b7ca75ccf7e11b44b6c721
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] JENKINS_URL: https://jenkins.symboldev.com/
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] ghprbActualCommit: undefined
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] ghprbPullId: undefined
12:09:49 [2023-05-03T16:09:49.364Z] ['verbose'] ghprbSourceBranch: undefined
12:09:49 [2023-05-03T16:09:49.377Z] ['verbose'] Using the following upload parameters:
12:09:49 [2023-05-03T16:09:49.377Z] ['verbose'] branch
12:09:49 [2023-05-03T16:09:49.377Z] ['verbose'] build
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] buildURL
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] commit
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] job
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] pr
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] service
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] slug
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] name
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] tag
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] flags
12:09:49 [2023-05-03T16:09:49.378Z] ['verbose'] parent
12:09:49 [2023-05-03T16:09:49.379Z] ['info'] Pinging Codecov: https://codecov.io/upload/v4?package=uploader-0.5.0&token= ******* &branch=dev&build=4&build_url=https%3A%2F%2Fjenkins.symboldev.com%2Fjob%2FNem%2Fjob%2Fgenerated%2Fjob%2Fmiscellaneous%2Fjob%2Fnemesis-generator%2Fjob%2Fdev%2F4%2F&commit=0f9087a61ea292f3c1b7ca75ccf7e11b44b6c721&job=&pr=&service=jenkins&slug=NEMProject%2Fmiscellaneous&name=&tag=&flags=nemesis-generator&parent=
12:09:49 [2023-05-03T16:09:49.379Z] ['verbose'] Passed token was 36 characters long
12:09:49 [2023-05-03T16:09:49.379Z] ['verbose'] https://codecov.io/upload/v4?package=uploader-0.5.0&branch=dev&build=4&build_url=https%3A%2F%2Fjenkins.symboldev.com%2Fjob%2FNem%2Fjob%2Fgenerated%2Fjob%2Fmiscellaneous%2Fjob%2Fnemesis-generator%2Fjob%2Fdev%2F4%2F&commit=0f9087a61ea292f3c1b7ca75ccf7e11b44b6c721&job=&pr=&service=jenkins&slug=NEMProject%2Fmiscellaneous&name=&tag=&flags=nemesis-generator&parent=
12:09:49 Content-Type: 'text/plain'
12:09:49 Content-Encoding: 'gzip'
12:09:49 X-Reduced-Redundancy: 'false'
12:09:49 [2023-05-03T16:09:49.601Z] ['info'] https://app.codecov.io/github/NemProject/miscellaneous/commit/0f9087a61ea292f3c1b7ca75ccf7e11b44b6c721
12:09:49 https://storage.googleapis.com/codecov/v4/raw/2023-05-03/D15196F2D2954B7CD53E83DE79C5C907/0f9087a61ea292f3c1b7ca75ccf7e11b44b6c721/6a67dfb6-f6ad-4314-b022-fbb6dd24ce92.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=GOOG1EJOGFN2JQ4OCTGA2MU5AEIT7OT5Z7HTFOAN2SPG4NWSN2UJYOY5U6LZQ%2F20230503%2FUS%2Fs3%2Faws4_request&X-Amz-Date=20230503T160949Z&X-Amz-Expires=10&X-Amz-SignedHeaders=host&X-Amz-Signature=ca0dc69b68757b8e83be39116db15647797c7705c1e8c764598c547d0e95f394
12:09:49 [2023-05-03T16:09:49.601Z] ['verbose'] Returned upload url: https://storage.googleapis.com/codecov/v4/raw/2023-05-03/D15196F2D2954B7CD53E83DE79C5C907/0f9087a61ea292f3c1b7ca75ccf7e11b44b6c721/6a67dfb6-f6ad-4314-b022-fbb6dd24ce92.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=GOOG1EJOGFN2JQ4OCTGA2MU5AEIT7OT5Z7HTFOAN2SPG4NWSN2UJYOY5U6LZQ%2F20230503%2FUS%2Fs3%2Faws4_request&X-Amz-Date=20230503T160949Z&X-Amz-Expires=10&X-Amz-SignedHeaders=host&X-Amz-Signature=ca0dc69b68757b8e83be39116db15647797c7705c1e8c764598c547d0e95f394
12:09:49 [2023-05-03T16:09:49.601Z] ['info'] Uploading...
12:09:49 [2023-05-03T16:09:49.769Z] ['info'] {"status":"success","resultURL":"https://app.codecov.io/github/NemProject/miscellaneous/commit/0f9087a61ea292f3c1b7ca75ccf7e11b44b6c721"}
12:09:49 [2023-05-03T16:09:49.769Z] ['verbose'] End of uploader: 644 milliseconds

```

### Expected Results

I expected that all the files should show coverage. Below is the output of the `coverage` tool during the CI run. It shows that all the files had 100% coverage.

```auto
12:09:48 + coverage report --fail-under=95
12:09:48 Name Stmts Miss Cover
12:09:48 --------------------------------------------------------------
12:09:48 configuration_generator/ __init__.py 0 0 100%
12:09:48 configuration_generator/ __main__.py 61 0 100%
12:09:48 generator/ __init__.py 0 0 100%
12:09:48 generator/ __main__.py 104 0 100%
12:09:48 node_configuration_generator/ __init__.py 0 0 100%
12:09:48 node_configuration_generator/ __main__.py 52 0 100%
12:09:48 --------------------------------------------------------------
12:09:48 TOTAL 217 0 100%

```

### Actual Results

Only the `configuration_generator` folder shows in the UI.

> **[Code coverage done right.](https://app.codecov.io/gh/NemProject/miscellaneous/tree/dev/nemesis-generator)**
>
> Hosted coverage report highly integrated with GitHub, Bitbucket and GitLab. Awesome pull request comments to enhance your QA.

### Additional Information

These are the missing files/folder

```auto
generator/ __main__.py 104 0 100%
node_configuration_generator/ __main__.py 52 0 100%

```

---

<div class="post-metadata">

**Author:** ![tom](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/tom/32/8_2.png) [@tom](https://community.codecov.com/u/tom)\
**Post date:** [May 5, 2023, 5:15pm UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/2 "2023-05-05T17:15:18Z")

</div>

@Wayonb I think there is something wrong with the way the coverage is being merged before you run the Codecov upload commands, but I could be wrong. Would you be able to output `cat coverage.xml` before uploading to Codecov, around [here](https://jenkins.symboldev.com/blue/organizations/jenkins/Nem%2Fgenerated%2Fmiscellaneous%2Fnemesis-generator/detail/dev/4/pipeline#log-521)?

Codecov is getting a coverage report with only one ` __init__.py` and ` __main__.py`, so it’s not really possible for us to figure out which directory it’s getting under. You can see that by clicking `Download` on the `4` build [here](https://app.codecov.io/gh/NemProject/miscellaneous/commit/0f9087a61ea292f3c1b7ca75ccf7e11b44b6c721/blob/nemesis-generator/configuration_generator/ __main__.py)

---

<div class="post-metadata">

**Author:** ![Wayonb](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/wayonb/32/2302_2.png) [@Wayonb](https://community.codecov.com/u/Wayonb)\
**Post date:** [May 8, 2023, 12:39am UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/3 "2023-05-08T00:39:47Z")

</div>

@tom I will cat coverage.xml to be sure but in the logs coverage is logging the correct info below.

```auto

[2023-05-03T16:09:48.306Z] + coverage report --fail-under=95

[2023-05-03T16:09:48.561Z] Name Stmts Miss Cover

[2023-05-03T16:09:48.561Z] --------------------------------------------------------------

[2023-05-03T16:09:48.561Z] configuration_generator/ __init__.py 0 0 100%

[2023-05-03T16:09:48.561Z] configuration_generator/ __main__.py 61 0 100%

[2023-05-03T16:09:48.561Z] generator/ __init__.py 0 0 100%

[2023-05-03T16:09:48.561Z] generator/ __main__.py 104 0 100%

[2023-05-03T16:09:48.561Z] node_configuration_generator/ __init__.py 0 0 100%

[2023-05-03T16:09:48.561Z] node_configuration_generator/ __main__.py 52 0 100%

[2023-05-03T16:09:48.561Z] --------------------------------------------------------------

```

---

<div class="post-metadata">

**Author:** ![Wayonb](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/wayonb/32/2302_2.png) [@Wayonb](https://community.codecov.com/u/Wayonb)\
**Post date:** [May 8, 2023, 12:48am UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/4 "2023-05-08T00:48:06Z")

</div>

@tom You are right.

I ran a quick test locally and the xml it generated is incorrect. 😂 🤔

```auto
Wrote XML report to coverage.xml
<?xml version="1.0" ?>
<coverage version="7.2.5" timestamp="1683506709270" lines-valid="217" lines-covered="217" line-rate="1" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
	<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.2.5 -->
	<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
	<sources>
		<source>/miscell/nemesis-generator/configuration_generator</source>
		<source>/miscell/nemesis-generator/generator</source>
		<source>/miscell/nemesis-generator/node_configuration_generator</source>
	</sources>
	<packages>
		<package name="." line-rate="1" branch-rate="0" complexity="0">
			<classes>
				<class name=" __init__.py" filename=" __init__.py" complexity="0" line-rate="1" branch-rate="0">
					<methods/>
					<lines/>
				</class>
				<class name=" __main__.py" filename=" __main__.py" complexity="0" line-rate="1" branch-rate="0">
					<methods/>
					<lines>
						<line number="1" hits="1"/>
						<line number="2" hits="1"/>
						<line number="3" hits="1"/>
						<line number="4" hits="1"/>
						<line number="5" hits="1"/>
						<line number="7" hits="1"/>
						<line number="9" hits="1"/>
						<line number="12" hits="1"/>
						<line number="13" hits="1"/>
						<line number="39" hits="1"/>
						<line number="42" hits="1"/>
						<line number="43" hits="1"/>
						<line number="55" hits="1"/>
						<line number="61" hits="1"/>
						<line number="62" hits="1"/>
						<line number="63" hits="1"/>
						<line number="65" hits="1"/>
						<line number="66" hits="1"/>
						<line number="68" hits="1"/>
						<line number="69" hits="1"/>
						<line number="70" hits="1"/>
						<line number="72" hits="1"/>
						<line number="73" hits="1"/>
						<line number="74" hits="1"/>
						<line number="76" hits="1"/>
						<line number="89" hits="1"/>
						<line number="91" hits="1"/>
						<line number="94" hits="1"/>
						<line number="95" hits="1"/>
						<line number="96" hits="1"/>
						<line number="99" hits="1"/>
						<line number="100" hits="1"/>
						<line number="101" hits="1"/>
						<line number="104" hits="1"/>
						<line number="105" hits="1"/>
						<line number="106" hits="1"/>
						<line number="109" hits="1"/>
						<line number="110" hits="1"/>
						<line number="111" hits="1"/>
						<line number="112" hits="1"/>
						<line number="113" hits="1"/>
						<line number="115" hits="1"/>
						<line number="116" hits="1"/>
						<line number="117" hits="1"/>
						<line number="118" hits="1"/>
						<line number="119" hits="1"/>
						<line number="120" hits="1"/>
						<line number="121" hits="1"/>
						<line number="122" hits="1"/>
						<line number="124" hits="1"/>
						<line number="127" hits="1"/>
						<line number="128" hits="1"/>
					</lines>
				</class>
			</classes>
		</package>
	</packages>
</coverage>

```

---

<div class="post-metadata">

**Author:** ![tom](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/tom/32/8_2.png) [@tom](https://community.codecov.com/u/tom)\
**Post date:** [May 8, 2023, 1:28am UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/5 "2023-05-08T01:28:54Z")

</div>

@Wayonb what are the `coverage ...` commands you are running? Maybe there’s a clue there. Also, what directory are you running it from?

---

<div class="post-metadata">

**Author:** ![Wayonb](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/wayonb/32/2302_2.png) [@Wayonb](https://community.codecov.com/u/Wayonb)\
**Post date:** [May 8, 2023, 2:36am UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/6 "2023-05-08T02:36:39Z")

</div>

@tom Thanks.

It seems to be how the directories/files are specified in the `.coveragerc`.  
I switched from the first to the second connif and it seems to work.  
The first seems to combined the output 😅

```auto
cat .coveragerc 
[run]
source = 
	generator
	configuration_generator
	node_configuration_generator

```

to

```auto
cat .coveragerc 
[run]
include = 
	generator/*.py
	configuration_generator/*.py
	node_configuration_generator/*.py

```

---

<div class="post-metadata">

**Author:** ![Wayonb](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/wayonb/32/2302_2.png) [@Wayonb](https://community.codecov.com/u/Wayonb)\
**Post date:** [May 8, 2023, 2:59am UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/7 "2023-05-08T02:59:44Z")

</div>

push a fix and it looks good.

> **[Code coverage done right.](https://app.codecov.io/gh/NemProject/miscellaneous/tree/fix%2Fgenerator_code_coverage/nemesis-generator)**
>
> Hosted coverage report highly integrated with GitHub, Bitbucket and GitLab. Awesome pull request comments to enhance your QA.

---

<div class="post-metadata">

**Author:** ![tom](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/tom/32/8_2.png) [@tom](https://community.codecov.com/u/tom)\
**Post date:** [May 8, 2023, 12:17pm UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/8 "2023-05-08T12:17:57Z")

</div>

Oh, nice find @Wayonb! Thanks for coming back with the details!

---

<div class="post-metadata">

**Author:** ![Wayonb](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/wayonb/32/2302_2.png) [@Wayonb](https://community.codecov.com/u/Wayonb)\
**Post date:** [May 8, 2023, 1:53pm UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/9 "2023-05-08T13:53:22Z")

</div>

@tom is the file drop if its empty?

The ` __init__ py` file is empty and the xml seems correct below. Not a big deal but just wondering.

```auto
Wrote XML report to coverage.xml
<?xml version="1.0" ?>
<coverage version="7.2.5" timestamp="1683553669823" lines-valid="217" lines-covered="217" line-rate="1" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
	<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.2.5 -->
	<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
	<sources>
		<source>/miscell/nemesis-generator</source>
	</sources>
	<packages>
		<package name="configuration_generator" line-rate="1" branch-rate="0" complexity="0">
			<classes>
				<class name=" __init__.py" filename="configuration_generator/ __init__.py" complexity="0" line-rate="1" branch-rate="0">
					<methods/>
					<lines/>
				</class>
				<class name=" __main__.py" filename="configuration_generator/ __main__.py" complexity="0" line-rate="1" branch-rate="0">
					<methods/>
					<lines>
						<line number="1" hits="1"/>
						<line number="2" hits="1"/>
						<line number="4" hits="1"/>
						<line number="5" hits="1"/>
						<line number="6" hits="1"/>
						<line number="7" hits="1"/>
						<line number="8" hits="1"/>
						<line number="10" hits="1"/>
						<line number="13" hits="1"/>
						<line number="14" hits="1"/>
						<line number="15" hits="1"/>
						<line number="19" hits="1"/>
						<line number="20" hits="1"/>
						<line number="21" hits="1"/>
						<line number="22" hits="1"/>
						<line number="23" hits="1"/>
						<line number="25" hits="1"/>
						<line number="26" hits="1"/>
						<line number="27" hits="1"/>
						<line number="29" hits="1"/>
						<line number="30" hits="1"/>
						<line number="31" hits="1"/>
						<line number="32" hits="1"/>
						<line number="33" hits="1"/>
						<line number="35" hits="1"/>
						<line number="36" hits="1"/>
						<line number="38" hits="1"/>
						<line number="39" hits="1"/>
						<line number="44" hits="1"/>
						<line number="53" hits="1"/>
						<line number="55" hits="1"/>
						<line number="56" hits="1"/>
						<line number="62" hits="1"/>
						<line number="72" hits="1"/>
						<line number="74" hits="1"/>
						<line number="75" hits="1"/>
						<line number="76" hits="1"/>
						<line number="77" hits="1"/>
						<line number="79" hits="1"/>
						<line number="80" hits="1"/>
						<line number="81" hits="1"/>
						<line number="84" hits="1"/>
						<line number="85" hits="1"/>
						<line number="86" hits="1"/>
						<line number="87" hits="1"/>
						<line number="88" hits="1"/>
						<line number="90" hits="1"/>
						<line number="94" hits="1"/>
						<line number="95" hits="1"/>
						<line number="96" hits="1"/>
						<line number="97" hits="1"/>
						<line number="98" hits="1"/>
						<line number="99" hits="1"/>
						<line number="100" hits="1"/>
						<line number="102" hits="1"/>
						<line number="103" hits="1"/>
						<line number="104" hits="1"/>
						<line number="105" hits="1"/>
						<line number="106" hits="1"/>
						<line number="109" hits="1"/>
						<line number="110" hits="1"/>
					</lines>
				</class>
			</classes>
		</package>
		<package name="generator" line-rate="1" branch-rate="0" complexity="0">
			<classes>
				<class name=" __init__.py" filename="generator/ __init__.py" complexity="0" line-rate="1" branch-rate="0">
					<methods/>
					<lines/>
				</class>
				<class name=" __main__.py" filename="generator/ __main__.py" complexity="0" line-rate="1" branch-rate="0">
					<methods/>
					<lines>
						<line number="1" hits="1"/>
						<line number="3" hits="1"/>
						<line number="4" hits="1"/>
						<line number="5" hits="1"/>
						<line number="6" hits="1"/>
						<line number="7" hits="1"/>
						<line number="8" hits="1"/>
						<line number="9" hits="1"/>
						<line number="11" hits="1"/>
						<line number="12" hits="1"/>
						<line number="15" hits="1"/>
						<line number="16" hits="1"/>
						<line number="17" hits="1"/>
						<line number="18" hits="1"/>
						<line number="19" hits="1"/>
						<line number="22" hits="1"/>
						<line number="24" hits="1"/>
						<line number="26" hits="1"/>
						<line number="27" hits="1"/>
						<line number="28" hits="1"/>
						<line number="30" hits="1"/>
						<line number="31" hits="1"/>
						<line number="34" hits="1"/>
						<line number="35" hits="1"/>
						<line number="38" hits="1"/>
						<line number="40" hits="1"/>
						<line number="41" hits="1"/>
						<line number="42" hits="1"/>
						<line number="44" hits="1"/>
						<line number="45" hits="1"/>
						<line number="46" hits="1"/>
						<line number="48" hits="1"/>
						<line number="49" hits="1"/>
						<line number="50" hits="1"/>
						<line number="52" hits="1"/>
						<line number="53" hits="1"/>
						<line number="54" hits="1"/>
						<line number="56" hits="1"/>
						<line number="57" hits="1"/>
						<line number="58" hits="1"/>
						<line number="59" hits="1"/>
						<line number="61" hits="1"/>
						<line number="62" hits="1"/>
						<line number="63" hits="1"/>
						<line number="64" hits="1"/>
						<line number="65" hits="1"/>
						<line number="67" hits="1"/>
						<line number="68" hits="1"/>
						<line number="69" hits="1"/>
						<line number="71" hits="1"/>
						<line number="73" hits="1"/>
						<line number="79" hits="1"/>
						<line number="80" hits="1"/>
						<line number="83" hits="1"/>
						<line number="84" hits="1"/>
						<line number="85" hits="1"/>
						<line number="86" hits="1"/>
						<line number="87" hits="1"/>
						<line number="90" hits="1"/>
						<line number="91" hits="1"/>
						<line number="92" hits="1"/>
						<line number="93" hits="1"/>
						<line number="95" hits="1"/>
						<line number="96" hits="1"/>
						<line number="97" hits="1"/>
						<line number="98" hits="1"/>
						<line number="100" hits="1"/>
						<line number="101" hits="1"/>
						<line number="102" hits="1"/>
						<line number="104" hits="1"/>
						<line number="106" hits="1"/>
						<line number="108" hits="1"/>
						<line number="110" hits="1"/>
						<line number="111" hits="1"/>
						<line number="113" hits="1"/>
						<line number="114" hits="1"/>
						<line number="115" hits="1"/>
						<line number="117" hits="1"/>
						<line number="118" hits="1"/>
						<line number="119" hits="1"/>
						<line number="120" hits="1"/>
						<line number="121" hits="1"/>
						<line number="123" hits="1"/>
						<line number="124" hits="1"/>
						<line number="126" hits="1"/>
						<line number="127" hits="1"/>
						<line number="128" hits="1"/>
						<line number="129" hits="1"/>
						<line number="130" hits="1"/>
						<line number="133" hits="1"/>
						<line number="134" hits="1"/>
						<line number="135" hits="1"/>
						<line number="136" hits="1"/>
						<line number="138" hits="1"/>
						<line number="142" hits="1"/>
						<line number="143" hits="1"/>
						<line number="144" hits="1"/>
						<line number="146" hits="1"/>
						<line number="147" hits="1"/>
						<line number="149" hits="1"/>
						<line number="150" hits="1"/>
						<line number="151" hits="1"/>
						<line number="154" hits="1"/>
						<line number="155" hits="1"/>
					</lines>
				</class>
			</classes>
		</package>
		<package name="node_configuration_generator" line-rate="1" branch-rate="0" complexity="0">
			<classes>
				<class name=" __init__.py" filename="node_configuration_generator/ __init__.py" complexity="0" line-rate="1" branch-rate="0">
					<methods/>
					<lines/>
				</class>
				<class name=" __main__.py" filename="node_configuration_generator/ __main__.py" complexity="0" line-rate="1" branch-rate="0">
					<methods/>
					<lines>
						<line number="1" hits="1"/>
						<line number="2" hits="1"/>
						<line number="3" hits="1"/>
						<line number="4" hits="1"/>
						<line number="5" hits="1"/>
						<line number="7" hits="1"/>
						<line number="9" hits="1"/>
						<line number="12" hits="1"/>
						<line number="13" hits="1"/>
						<line number="39" hits="1"/>
						<line number="42" hits="1"/>
						<line number="43" hits="1"/>
						<line number="55" hits="1"/>
						<line number="61" hits="1"/>
						<line number="62" hits="1"/>
						<line number="63" hits="1"/>
						<line number="65" hits="1"/>
						<line number="66" hits="1"/>
						<line number="68" hits="1"/>
						<line number="69" hits="1"/>
						<line number="70" hits="1"/>
						<line number="72" hits="1"/>
						<line number="73" hits="1"/>
						<line number="74" hits="1"/>
						<line number="76" hits="1"/>
						<line number="89" hits="1"/>
						<line number="91" hits="1"/>
						<line number="94" hits="1"/>
						<line number="95" hits="1"/>
						<line number="96" hits="1"/>
						<line number="99" hits="1"/>
						<line number="100" hits="1"/>
						<line number="101" hits="1"/>
						<line number="104" hits="1"/>
						<line number="105" hits="1"/>
						<line number="106" hits="1"/>
						<line number="109" hits="1"/>
						<line number="110" hits="1"/>
						<line number="111" hits="1"/>
						<line number="112" hits="1"/>
						<line number="113" hits="1"/>
						<line number="115" hits="1"/>
						<line number="116" hits="1"/>
						<line number="117" hits="1"/>
						<line number="118" hits="1"/>
						<line number="119" hits="1"/>
						<line number="120" hits="1"/>
						<line number="121" hits="1"/>
						<line number="122" hits="1"/>
						<line number="124" hits="1"/>
						<line number="127" hits="1"/>
						<line number="128" hits="1"/>
					</lines>
				</class>
			</classes>
		</package>
	</packages>
</coverage>

```

---

<div class="post-metadata">

**Author:** ![tom](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/tom/32/8_2.png) [@tom](https://community.codecov.com/u/tom)\
**Post date:** [May 8, 2023, 9:52pm UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/10 "2023-05-08T21:52:27Z")

</div>

@Wayonb yeah, we don’t show files that are empty as there is no coverage to actually show.

---

<div class="post-metadata">

**Author:** ![Wayonb](https://yyz1.discourse-cdn.com/flex029/user_avatar/community.codecov.com/wayonb/32/2302_2.png) [@Wayonb](https://community.codecov.com/u/Wayonb)\
**Post date:** [May 9, 2023, 2:41pm UTC](https://community.codecov.com/t/python-code-coverage-is-missing-files/4311/11 "2023-05-09T14:41:38Z")

</div>

Thanks for verifying 👍
