<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>There isn't a way to omit __init__.py files, but you can omit any
      file that has 100% coverage, which should include all your
      __init__.py files:<br>
    </p>
    <p>[report]<br>
      skip_covered = True</p>
    <p>--Ned.<br>
    </p>
    <div class="moz-cite-prefix">On 1/10/19 2:57 PM, DZIOBEK, JOE wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:534AE3D618BF494BA6D6627C98FD2F916652B0ED@MISOUT7MSGUSRDA.ITServices.sbc.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Courier New \;color\:windowtext";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;
        color:black;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";
        color:black;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;
        color:black;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Hey
            Ned,<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">I
            wrote a script to create a __pytest__.py file in every
            subfolder<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Then
            I execute my tox/pytest/coverage command<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Then
            I delete the __init__.py files I created<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">This
            all works, except I would like to omit
            <b>all the __init__.py files</b> in the coverage report,
            there are too many.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Is
              there a way to omit all __init__.py files, no matter how
              many subdirectories are in its path?<o:p></o:p></span></b></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">I
            have tried various combinations and am still looking online
            for solutions.<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">This
            is what I have right now:<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">coverage
            run -m --source=. pytest --ignore=virtualenv-15.1.0/
            --ignore=.tox<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">coverage
            report -m  --omit=.tox/*<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Thanks
            - Joe<o:p></o:p></span></p>
        <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"><o:p> </o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:windowtext">From:</span></b><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:windowtext">
                Ned Batchelder [<a class="moz-txt-link-freetext" href="mailto:nedbat@gmail.com">mailto:nedbat@gmail.com</a>]
                <b>On Behalf Of </b>Ned Batchelder<br>
                <b>Sent:</b> Friday, January 04, 2019 4:07 PM<br>
                <b>To:</b> DZIOBEK, JOE <a class="moz-txt-link-rfc2396E" href="mailto:jd5948@att.com">&lt;jd5948@att.com&gt;</a>;
                <a class="moz-txt-link-abbreviated" href="mailto:testing-in-python@lists.idyll.org">testing-in-python@lists.idyll.org</a><br>
                <b>Subject:</b> Re: [TIP] Can pytest identify python
                code that has no test<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p>Coverage will only find files that it considers importable. 
          It's essential that you have __init__.py files in the
          subdirectories.  Those files can be empty, no one needs to
          update them.<o:p></o:p></p>
        <p>Your original output showed a __init__.py file, but this
          latest run does not. <o:p>
          </o:p></p>
        <p>--Ned.<o:p></o:p></p>
        <div>
          <p class="MsoNormal">On 1/4/19 2:31 PM, DZIOBEK, JOE wrote:<o:p></o:p></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Hi
              Ned,</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Yes,
              my tox.ini file is as described earlier:</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">commands
              =</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">   
              coverage run -m --source=. pytest
              --ignore=virtualenv-15.1.0/ --ignore=.tox</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">   
              coverage report -m --omit=.tox/*</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">For
              additional debugging, I added another py file to my root
              folder, so now I have:</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">script.py</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">test_script.py</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">scriptB2.py ( which does
              not have an associated test script! )</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">Then a subfolder (actually
              5 levels deep, see below)</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">scriptA.py</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">test_scriptA.py</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">scriptB.py ( which does not
              have an associated test script! )</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Executing
              the tox command again, I now get an improved picture:</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">Name                                                                     
              Stmts   Miss  Cover   Missing</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">-------------------------------------------------------------------------------------------------------</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">sub/sub2/sub3/sub4/sub5/scriptA.py           
              2      0   100%</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">sub/sub2/sub3/sub4/sub5/test_scriptA.py      
              3      0   100%</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">script.py                                             
                                     4      1    75%   3</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">scriptB2.py                                                         
              142    142     0%   3-322</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">test_script.py                                                               
              3      0   100%</span><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:&quot;Courier New
              ;color:windowtext&quot;,serif">-------------------------------------------------------------------------------------------------------</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">So
              we found the UNTESTED scriptB2.py in root folder – exactly
              what we want.</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">It
              did not find the UNTESTED script.py in the deeper folder.</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Any
              ideas? BTW, I don’t have any __init__.py files in any
              folder.</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">PS:
              Bruno, your idea with adding the import to the __init__.py
              file is good, but requires someone to update that file,
              probably the same person that forgot to write the test.py;
            </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Thanks
              for your help,</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D">Regards
              - Joe</span><o:p></o:p></p>
          <p class="MsoNormal"><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:#1F497D"> </span><o:p></o:p></p>
          <div>
            <div style="border:none;border-top:solid #E1E1E1
              1.0pt;padding:3.0pt 0in 0in 0in">
              <p class="MsoNormal"><b><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:windowtext">From:</span></b><span
style="font-size:11.0pt;font-family:&quot;Calibri&quot;,sans-serif;color:windowtext">
                  <a
                    href="mailto:testing-in-python-bounces@lists.idyll.org"
                    moz-do-not-send="true">testing-in-python-bounces@lists.idyll.org</a>
                  [<a
                    href="mailto:testing-in-python-bounces@lists.idyll.org"
                    moz-do-not-send="true">mailto:testing-in-python-bounces@lists.idyll.org</a>]
                  <b>On Behalf Of </b>Ned Batchelder<br>
                  <b>Sent:</b> Friday, January 04, 2019 11:59 AM<br>
                  <b>To:</b> <a
                    href="mailto:testing-in-python@lists.idyll.org"
                    moz-do-not-send="true">testing-in-python@lists.idyll.org</a><br>
                  <b>Subject:</b> Re: [TIP] Can pytest identify python
                  code that has no test</span><o:p></o:p></p>
            </div>
          </div>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p>Joe, since you have specified "--source=.", coverage will
            search your tree for importable Python files, and report on
            them even if they are never imported.  So you are already
            doing the right thing. I'm not sure why it wouldn't show you
            that file.  Are you sure you are running the commands you
            showed?<o:p></o:p></p>
          <p>--Ned.<o:p></o:p></p>
          <div>
            <p class="MsoNormal">On 1/4/19 11:42 AM, Bruno Oliveira
              wrote:<o:p></o:p></p>
          </div>
          <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
            <div>
              <p class="MsoNormal" style="margin-bottom:12.0pt">Hi Joe,<o:p></o:p></p>
              <div>
                <div>
                  <p class="MsoNormal">On Fri, Dec 21, 2018 at 5:06 PM
                    DZIOBEK, JOE &lt;<a href="mailto:jd5948@att.com"
                      moz-do-not-send="true">jd5948@att.com</a>&gt;
                    wrote:<o:p></o:p></p>
                </div>
                <blockquote style="border:none;border-left:solid #CCCCCC
                  1.0pt;padding:0in 0in 0in
6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
                  <div>
                    <div>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Is
                        there a way to have this file included in the
                        report?<o:p></o:p></p>
                    </div>
                  </div>
                </blockquote>
                <div>
                  <p class="MsoNormal"> <o:p></o:p></p>
                </div>
                <div>
                  <p class="MsoNormal">You are not seeing coverage
                    information for scriptB.py not because it does not
                    have an associated test file, but because it was
                    never imported during the run (I'm assuming). <o:p></o:p></p>
                </div>
                <div>
                  <p class="MsoNormal"> <o:p></o:p></p>
                </div>
                <div>
                  <p class="MsoNormal">One way to have it to appear on
                    the report is to import scriptB on your __init__.py
                    file, this way its coverage will be tracked.<o:p></o:p></p>
                </div>
                <div>
                  <p class="MsoNormal"> <o:p></o:p></p>
                </div>
                <div>
                  <p class="MsoNormal">Hope this helps,<o:p></o:p></p>
                </div>
                <div>
                  <p class="MsoNormal">Bruno<o:p></o:p></p>
                </div>
              </div>
            </div>
            <p class="MsoNormal"><br>
              <br>
              <br>
              <o:p></o:p></p>
            <pre>_______________________________________________<o:p></o:p></pre>
            <pre>testing-in-python mailing list<o:p></o:p></pre>
            <pre><a href="mailto:testing-in-python@lists.idyll.org" moz-do-not-send="true">testing-in-python@lists.idyll.org</a><o:p></o:p></pre>
            <pre><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.idyll.org_listinfo_testing-2Din-2Dpython&amp;d=DwMDaQ&amp;c=LFYZ-o9_HUMeMTSQicvjIg&amp;r=HqXpIkByGFw24obqdoDmDw&amp;m=pzoCcDdzPm0JZq_KFlE4flon2ylEw7Wn8WlOaZn3xgc&amp;s=LZn-2waQlWLtBfotLco8eIxWEeII9mXtCXPlJ8rxaos&amp;e=" moz-do-not-send="true">http://lists.idyll.org/listinfo/testing-in-python</a><o:p></o:p></pre>
          </blockquote>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>