Commits

Richard Shea  committed 9c5509f

#6 resolution

  • Participants
  • Parent commits d7e0539

Comments (0)

Files changed (63)

File dist/smtpErrorAnalysis-0.1.zip

Binary file added.

File doc/_build/doctrees/environment.pickle

Binary file modified.

File doc/_build/doctrees/findBadAddresses.doctree

Binary file modified.

File doc/_build/doctrees/regexEmailTester.doctree

Binary file modified.

File doc/_build/html/.buildinfo

 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 1df4d933f47cb35d98b043d5394d4c4b
+config: bd1e9fcd13787b6ce3834931c7bedb2e
 tags: fbb0d17656682115ca4d033fb2f83ba1

File doc/_build/html/_modules/findBadAddresses.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>findBadAddresses &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>findBadAddresses &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="../_static/default.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="../_static/jquery.js"></script>
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" />
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" />
     <link rel="up" title="Module code" href="index.html" /> 
   </head>
   <body>
         <li class="right" >
           <a href="../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
+        <li><a href="../index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
           <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
       </ul>
     </div>  
         <li class="right" >
           <a href="../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
+        <li><a href="../index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
           <li><a href="index.html" >Module code</a> &raquo;</li> 
       </ul>
     </div>

File doc/_build/html/_modules/index.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Overview: module code &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>Overview: module code &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="../_static/default.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="../_static/jquery.js"></script>
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" /> 
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" /> 
   </head>
   <body>
     <div class="related">
         <li class="right" >
           <a href="../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="../index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>  
 
         <li class="right" >
           <a href="../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="../index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>
     <div class="footer">

File doc/_build/html/_modules/regexEmailTester.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>regexEmailTester &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>regexEmailTester &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="../_static/default.css" type="text/css" />
     <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="../_static/jquery.js"></script>
     <script type="text/javascript" src="../_static/underscore.js"></script>
     <script type="text/javascript" src="../_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" />
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" />
     <link rel="up" title="Module code" href="index.html" /> 
   </head>
   <body>
         <li class="right" >
           <a href="../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
+        <li><a href="../index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
           <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
       </ul>
     </div>  
         <li class="right" >
           <a href="../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
+        <li><a href="../index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
           <li><a href="index.html" >Module code</a> &raquo;</li> 
       </ul>
     </div>

File doc/_build/html/findBadAddresses.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>findBadAddresses Module &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>findBadAddresses Module &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="index.html" />
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="index.html" />
     <link rel="next" title="regexEmailTester Module" href="regexEmailTester.html" />
     <link rel="prev" title="Welcome to ‘smtp-error-analysis’’s documentation!" href="index.html" /> 
   </head>
         <li class="right" >
           <a href="index.html" title="Welcome to ‘smtp-error-analysis’’s documentation!"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>  
 
         <li class="right" >
           <a href="index.html" title="Welcome to ‘smtp-error-analysis’’s documentation!"
              >previous</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>
     <div class="footer">

File doc/_build/html/genindex.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Index &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>Index &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="index.html" /> 
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="index.html" /> 
   </head>
   <body>
     <div class="related">
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>  
 
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>
     <div class="footer">

File doc/_build/html/index.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Welcome to ‘smtp-error-analysis’’s documentation! &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>Welcome to ‘smtp-error-analysis’’s documentation! &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="#" />
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="#" />
     <link rel="next" title="findBadAddresses Module" href="findBadAddresses.html" /> 
   </head>
   <body>
         <li class="right" >
           <a href="findBadAddresses.html" title="findBadAddresses Module"
              accesskey="N">next</a> |</li>
-        <li><a href="#">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="#">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>  
 
         <li class="right" >
           <a href="findBadAddresses.html" title="findBadAddresses Module"
              >next</a> |</li>
-        <li><a href="#">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="#">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>
     <div class="footer">

File doc/_build/html/objects.inv

Binary file modified.

File doc/_build/html/py-modindex.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Python Module Index &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>Python Module Index &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="index.html" />
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="index.html" />
  
 
     <script type="text/javascript">
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>  
 
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>
     <div class="footer">

File doc/_build/html/regexEmailTester.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>regexEmailTester Module &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>regexEmailTester Module &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="_static/jquery.js"></script>
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="index.html" />
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="index.html" />
     <link rel="prev" title="findBadAddresses Module" href="findBadAddresses.html" /> 
   </head>
   <body>
         <li class="right" >
           <a href="findBadAddresses.html" title="findBadAddresses Module"
              accesskey="P">previous</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>  
 
             
   <div class="section" id="module-regexEmailTester">
 <span id="regexemailtester-module"></span><h1>regexEmailTester Module<a class="headerlink" href="#module-regexEmailTester" title="Permalink to this headline">¶</a></h1>
+<p>This is a file which I want to hang onto for a while
+but needs chucking eventually</p>
 <dl class="function">
 <dt id="regexEmailTester.main">
 <tt class="descclassname">regexEmailTester.</tt><tt class="descname">main</tt><big>(</big><big>)</big><a class="reference internal" href="_modules/regexEmailTester.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#regexEmailTester.main" title="Permalink to this definition">¶</a></dt>
         <li class="right" >
           <a href="findBadAddresses.html" title="findBadAddresses Module"
              >previous</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>
     <div class="footer">

File doc/_build/html/search.html

   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
-    <title>Search &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
+    <title>Search &mdash; &#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</title>
     
     <link rel="stylesheet" href="_static/default.css" type="text/css" />
     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <script type="text/javascript" src="_static/underscore.js"></script>
     <script type="text/javascript" src="_static/doctools.js"></script>
     <script type="text/javascript" src="_static/searchtools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="index.html" />
+    <link rel="top" title="&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation" href="index.html" />
   <script type="text/javascript">
     jQuery(function() { Search.loadIndex("searchindex.js"); });
   </script>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>  
 
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li><a href="index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
+        <li><a href="index.html">&#39;smtpErrorAnalysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
       </ul>
     </div>
     <div class="footer">

File doc/_build/html/searchindex.js

-Search.setIndex({objects:{"":{findBadAddresses:[1,0,1,""],regexEmailTester:[2,0,1,""]},findBadAddresses:{strip_line_feeds:[1,1,1,""],FindBadAddExcptn:[1,2,1,""],build_ignore_list:[1,1,1,""],remove_rfc_notation:[1,1,1,""],find_email:[1,1,1,""],parse_email_for_del_stat_part:[1,1,1,""],main:[1,1,1,""]},regexEmailTester:{main:[2,1,1,""]}},terms:{recipi:1,all:1,code:1,text:1,global:1,find_email:1,follow:1,find:1,row:1,web:1,locat:1,instr:1,smith:1,except:1,param:1,larg:1,subsequ:1,analys:1,modul:[0,1,2],match:1,sourc:[1,2],"return":1,string:1,format:1,made:1,report:1,bar:1,path_em_fil:1,findbadaddexcptn:1,somewher:1,like:1,specif:1,list:1,rfc:1,regexemailtest:[0,2],remove_rfc_not:1,contain:1,found:1,page:0,"function":[1,2],hard:1,sampl:1,multipart:1,fail:1,variabl:1,index:0,statu:1,someth:1,content:[0,1],suspect:1,parse_email_for_del_stat_part:1,current:1,foo:1,email:1,file_nam:1,assumpt:1,error:[0,1],given:1,entir:1,crlf:1,output:1,tue:1,valu:1,search:[0,1],sender:1,pdt:1,queue:1,base:1,place:1,action:1,origin:1,via:1,"808f17f8080":1,bounc:1,within:1,arriv:1,due:1,header:1,least:1,assum:1,differ:1,convent:1,script:1,unknown:1,support:1,findbadaddress:[0,1],two:1,messag:1,name:1,john:1,type:1,"final":1,deliveri:1,main:[1,2],strip_line_fe:1,about:1,part:1,pars:1,particular:1,line:1,hold:1,"true":1,than:1,those:1,ident:1,input:1,csv:1,remot:1,might:1,remov:1,work:1,focu:1,structur:1,charact:1,directori:1,were:1,problem:1,mta:1,address:1,sort:1,file:1,csv_dict_wrtr:1,look:1,process:1,smtp:[0,1],build_ignore_list:1,indic:0,diagnost:1,have:1,tabl:0,need:1,seem:1,mai:1,welcom:0,detail:1,invalid:1,write:1,other:1,which:1,test:1,command:1,document:0,email_to_be_clean:1,analysi:0,hdr_output_col:1,thi:1,rfc822:1,someon:1,rais:1,date:1,littl:1,"class":1,postfix:1,descript:1,doe:1,ignor:1,allow:1,order:1,left:1},objtypes:{"0":"py:module","1":"py:function","2":"py:exception"},titles:["Welcome to &#8216;smtp-error-analysis&#8217;&#8217;s documentation!","findBadAddresses Module","regexEmailTester Module"],objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","exception","Python exception"]},filenames:["index","findBadAddresses","regexEmailTester"]})
+Search.setIndex({objects:{"":{findBadAddresses:[1,0,1,""],regexEmailTester:[2,0,1,""]},findBadAddresses:{strip_line_feeds:[1,1,1,""],FindBadAddExcptn:[1,2,1,""],build_ignore_list:[1,1,1,""],remove_rfc_notation:[1,1,1,""],find_email:[1,1,1,""],parse_email_for_del_stat_part:[1,1,1,""],main:[1,1,1,""]},regexEmailTester:{main:[2,1,1,""]}},terms:{recipi:1,all:1,code:1,text:1,global:1,find_email:1,follow:1,find:1,row:1,web:1,locat:1,"808f17f8080":1,smith:1,except:1,param:1,suspect:1,subsequ:1,analys:1,bounc:1,match:1,sourc:[1,2],"return":1,string:1,format:1,ident:1,report:1,bar:1,path_em_fil:1,findbadaddexcptn:1,somewher:1,like:1,specif:1,list:1,chuck:2,rfc:1,regexemailtest:[0,2],remove_rfc_not:1,contain:1,output:1,page:0,hard:1,sampl:1,multipart:1,fail:1,variabl:1,index:0,statu:1,someth:1,content:[0,1],larg:1,parse_email_for_del_stat_part:1,current:1,foo:1,email:1,file_nam:1,assumpt:1,were:1,given:1,base:1,crlf:1,found:1,tue:1,valu:1,search:[0,1],sender:1,pdt:1,queue:1,entir:1,place:1,action:1,onto:2,origin:1,via:1,instr:1,modul:[0,1,2],within:1,arriv:1,two:1,header:1,messag:1,assum:1,differ:1,convent:1,script:1,unknown:1,support:1,findbadaddress:[0,1],due:1,least:1,name:1,john:1,type:1,"final":1,"function":[1,2],main:[1,2],strip_line_fe:1,about:1,sort:1,part:1,pars:1,particular:1,line:1,hold:1,"true":1,than:1,those:1,made:1,input:1,csv:1,remot:1,might:1,remov:1,work:1,focu:1,structur:1,charact:1,postfix:1,"while":2,error:[0,1],problem:1,mta:1,document:0,address:1,deliveri:1,have:1,csv_dict_wrtr:1,look:1,process:1,smtp:[0,1],build_ignore_list:1,indic:0,diagnost:1,file:[1,2],tabl:0,need:[1,2],seem:1,date:1,welcom:0,want:2,detail:1,invalid:1,write:1,other:1,which:[1,2],test:1,ignor:1,eventu:2,email_to_be_clean:1,analysi:0,hdr_output_col:1,allow:1,rfc822:1,hang:2,someon:1,rais:1,mai:1,littl:1,"class":1,directori:1,descript:1,doe:1,command:1,thi:[1,2],order:1,left:1},objtypes:{"0":"py:module","1":"py:function","2":"py:exception"},titles:["Welcome to &#8216;smtp-error-analysis&#8217;&#8217;s documentation!","findBadAddresses Module","regexEmailTester Module"],objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","exception","Python exception"]},filenames:["index","findBadAddresses","regexEmailTester"]})

File doc/build/doctrees/environment.pickle

Binary file removed.

File doc/build/doctrees/findBadAddresses.doctree

Binary file removed.

File doc/build/doctrees/index.doctree

Binary file removed.

File doc/build/doctrees/regexEmailTester.doctree

Binary file removed.

File doc/build/html/.buildinfo

-# Sphinx build info version 1
-# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 1df4d933f47cb35d98b043d5394d4c4b
-tags: fbb0d17656682115ca4d033fb2f83ba1

File doc/build/html/_modules/findBadAddresses.html

-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>findBadAddresses &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
-    
-    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../',
-        VERSION:     '&#39;0.1.0&#39;',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" />
-    <link rel="up" title="Module code" href="index.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="../genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="../py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
-          <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <h1>Source code for findBadAddresses</h1><pre>
-'''
-Allows a directory of email messages to be parsed for 'bounce messages'
-and for those 'bounce messages' to be parsed for details which will 
-allow the problems to be analysed.
-
-Particular focus on emails bounced due to sender having used an invalid
-address
-
-'''
-import os
-import email
-import csv
-import re
-import pprint
-ERR1 = "Found zero email addresses so don't know what to do" 
-ERR2 = "Found more than one email address so don't know what to do [%s]"
-HDR_OUTPUT_COLS = [ 'HUM-READ-EMAIL-ADDR',
-                    'ACTION', 
-                    'STATUS', 
-                    'DIAGNOSTIC-CODE', 
-                    'FINAL-RECIPIENT',
-                    'ORIGINAL-RECIPIENT', 
-                    'SOURCE-FILENAME', 
-                    'REMOTE-MTA', 
-                    'LAST-ATTEMPT-DATE',
-                    'WILL-RETRY-UNTIL'] 
-<div class="viewcode-block" id="FindBadAddExcptn"><a class="viewcode-back" href="../findBadAddresses.html#findBadAddresses.FindBadAddExcptn">[docs]</a>class FindBadAddExcptn(Exception):
-    '''Base class for errors in this script.'''
-    def __init__(self, value):
-        super(FindBadAddExcptn, self).__init__(value)
-        self.value = value
-    def __str__(self):
-        return repr(self.value)
-
-</div>
-<div class="viewcode-block" id="strip_line_feeds"><a class="viewcode-back" href="../findBadAddresses.html#findBadAddresses.strip_line_feeds">[docs]</a>def strip_line_feeds(string):
-    '''
-    Return the input string with CRLF
-    characters removed
-    '''
-    string = string.replace("\r","")
-    string = string.replace("\n","")
-    string = string.strip()
-    return string
-</div>
-<div class="viewcode-block" id="find_email"><a class="viewcode-back" href="../findBadAddresses.html#findBadAddresses.find_email">[docs]</a>def find_email(instr):
-    '''
-    Given a string searches for all email addresses contained
-    within the string. We assume:
-
-    * At least email address will be found
-    * All addresses found will be identical
-
-    If this is so the email address found will be returned.
-    If this is not so errors are raised
-
-    '''
-    #Following regex found at : http://stackp.online.fr/?p=19
-    email_pattern = re.compile('([\w\-\.]+@(\w[\w\-]+\.)+[\w\-]+)')
-    results = []
-    #Put all email addresses found into a list. The resulting list
-    #should contain one or more identical email addresses
-    for match in email_pattern.findall(instr):
-        results.append(match[0])
-
-    if len(results) == 0: 
-        raise FindBadAddExcptn(ERR1)
-    elif len(results) &gt; 1:
-        for email_address in results[1:]:
-            if email_address != results[0]:  
-                raise FindBadAddExcptn( ERR2 % pprint.pformat(results))
-
-    return results[0]
-
-</div>
-<div class="viewcode-block" id="remove_rfc_notation"><a class="viewcode-back" href="../findBadAddresses.html#findBadAddresses.remove_rfc_notation">[docs]</a>def remove_rfc_notation(email_to_be_cleaned):
-    '''
-    Given a string which contains an email address in oe of the two 
-    following formats
-
-        * ``a@foo.bar``
-        * ``rfc:a@foo.bar``
-
-    this function will return ``a@foo.bar``
-    '''
-    l_em_to_be_clnd = email_to_be_cleaned.split(';')
-    if len(l_em_to_be_clnd) == 0:
-        return l_em_to_be_clnd[0]
-    else:
-        return l_em_to_be_clnd[1]
-</div>
-<div class="viewcode-block" id="parse_email_for_del_stat_part"><a class="viewcode-back" href="../findBadAddresses.html#findBadAddresses.parse_email_for_del_stat_part">[docs]</a>def parse_email_for_del_stat_part(file_name, path_em_file, csv_dict_wrtr):
-    '''
-    Given the text of a SMTP 'bounce message' writes a CSV row 
-    to match the headers in the global variable HDR_OUTPUT_COLS.
-
-    It does this by finding the 'message/delivery-status' part of 
-    the entire email and parsing the headers.
-
-    An 'message/delivery-status' part of a 'bounce email' looks a 
-    little like this ::
-    
-
-        Content-Description: Delivery report
-        Content-Type: message/delivery-status
-
-        Reporting-MTA: dns; a.b.web              
-        X-Postfix-Queue-ID: 808F17F8080
-        X-Postfix-Sender: rfc822; someone@c.d.web
-        Arrival-Date: Tue,  8 May 2012 16:30:12 -0700 (PDT)
-
-        Final-Recipient: rfc822; john.smith@e.web
-        Original-Recipient: rfc822;john.smith@e.web
-        Action: failed
-        Status: 5.0.0
-        Remote-MTA: dns; smtp.e.web
-        Diagnostic-Code: smtp; 550 &lt;john.smith@e.web&gt;, Recipient unknown
-
-    NB: All sorts of assumptions are made about the structure of the 
-    bounce message which seem to hold true for a large sample I have 
-    used in testing but it seems likely that somewhere there are 'bounce
-    messages' which follow different conventions. In particular I suspect
-    that were the original email message to be something other than a two
-    part multipart email message there might be problems
-
-    '''
-    print "About to process : %s" % file_name
-    em_file = file(path_em_file)
-    em_msg = email.message_from_string(em_file.read())
-    try:
-        #Get the second email.message.Message 
-        #from the list of email.message.Message
-        #in the email message contained in em_file
-        em_msg_dlv_status = em_msg.get_payload()[1]
-    except IndexError:
-        print "File %s is not a recognised format [a]" % file_name
-    else:
-        #Convert the generator of email.message.Message objects returned
-        #by .walk() to a list of email.message.Message
-        lst_em_msg_dlv_status = []
-        try:
-            for elem in em_msg_dlv_status.walk():
-                lst_em_msg_dlv_status.append(elem)
-        except AttributeError:
-            print "File %s is not a recognised format [b]" % file_name
-        else:
-            #Get the message's field headers and values
-            lst_hdrs_kv_pairs = lst_em_msg_dlv_status[2].items()
-            #Populate the dic_diag dictionary using the header
-            #names as keys and the header values of element values
-            dic_diag = {}
-            for hdr_kv in lst_hdrs_kv_pairs:
-                hdr_name = hdr_kv[0].upper()
-                hdr_val = hdr_kv[1]
-                hdr_val = hdr_val.replace("\r","")
-                hdr_val = hdr_val.replace("\n","")
-                
-                if dic_diag.has_key(hdr_name):
-                    raise FindBadAddExcptn(
-                            ERR1 % pprint.pformat(lst_hdrs_kv_pairs))
-                else:
-                    dic_diag[hdr_name] = hdr_val 
-            #Add a couple of non-header derived values
-            dic_diag['SOURCE-FILENAME'] = file_name
-            dic_diag['HUM-READ-EMAIL-ADDR'] = \
-                    remove_rfc_notation(dic_diag['FINAL-RECIPIENT'])
-            #Write the dictionary as a CSV row
-            csv_dict_wrtr.writerow(dic_diag)
-
-</div>
-<div class="viewcode-block" id="build_ignore_list"><a class="viewcode-back" href="../findBadAddresses.html#findBadAddresses.build_ignore_list">[docs]</a>def build_ignore_list():
-    '''
-    Returns a hard-coded list of file names which will be ignored
-    in subsequent processing
-
-    This is not currently used but is left in place as it supports        
-    the 'ignore me' structure which is in place    
-    '''
-    lst = []
-    return lst
-</div>
-<div class="viewcode-block" id="main"><a class="viewcode-back" href="../findBadAddresses.html#findBadAddresses.main">[docs]</a>def main():
-    '''
-    The main() function
-
-    Needs work in order that the location of email files to be parsed
-    and the location of output files may be specificed via command
-    line params
-    '''
-    lst_files_to_ignore = build_ignore_list() 
-    path = 'C:/usr/rshea/mytemp/20110609/NZLPProblemEmails-20120510/'
-    listing = os.listdir(path)
-
-    #Create a csv.DictWriter to write output to
-    csv_dict_wrtr = csv.DictWriter( \
-            open('NZLP-bademailaddresses-headers-20120510.csv', 'wb'), \
-            HDR_OUTPUT_COLS, \
-            restval='N/A', \
-            dialect='excel')
-
-    #Write the initial headers
-    csv_dict_wrtr.writerow(dict(zip(HDR_OUTPUT_COLS, HDR_OUTPUT_COLS)))
-
-    #Process each file in turn
-    for in_file_name in listing:
-        if in_file_name in lst_files_to_ignore:
-            pass
-        else:
-            in_file_path = "%s/%s" % (path, in_file_name)
-            parse_email_for_del_stat_part(  in_file_name, 
-                                            in_file_path, 
-                                            csv_dict_wrtr)
-</div>
-if __name__ == "__main__":
-    main()
-
-
-
-</pre>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="../genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="../py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
-          <li><a href="index.html" >Module code</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Richard Shea.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

File doc/build/html/_modules/index.html

-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>Overview: module code &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
-    
-    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../',
-        VERSION:     '&#39;0.1.0&#39;',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="../genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="../py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <h1>All modules for which code is available</h1>
-<ul><li><a href="findBadAddresses.html">findBadAddresses</a></li>
-<li><a href="regexEmailTester.html">regexEmailTester</a></li>
-</ul>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="../genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="../py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Richard Shea.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

File doc/build/html/_modules/regexEmailTester.html

-
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    
-    <title>regexEmailTester &mdash; &#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</title>
-    
-    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
-    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-    
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    '../',
-        VERSION:     '&#39;0.1.0&#39;',
-        COLLAPSE_INDEX: false,
-        FILE_SUFFIX: '.html',
-        HAS_SOURCE:  true
-      };
-    </script>
-    <script type="text/javascript" src="../_static/jquery.js"></script>
-    <script type="text/javascript" src="../_static/underscore.js"></script>
-    <script type="text/javascript" src="../_static/doctools.js"></script>
-    <link rel="top" title="&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation" href="../index.html" />
-    <link rel="up" title="Module code" href="index.html" /> 
-  </head>
-  <body>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="../genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="../py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
-          <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body">
-            
-  <h1>Source code for regexEmailTester</h1><pre>
-import re, sys
-import pprint
-<div class="viewcode-block" id="main"><a class="viewcode-back" href="../regexEmailTester.html#regexEmailTester.main">[docs]</a>def main():
-    '''
-    The main() function
-    '''
- 
-    email_pattern = re.compile('([\w\-\.]+@(\w[\w\-]+\.)+[\w\-]+)')
-    #rawstr = re.compile(r"""^(?P&lt;fullErrorMessage&gt;[&lt;](?P&lt;emailAddress&gt;.+)[&gt;].*)""")
-    #compile_obj = re.compile(rawstr,  re.MULTILINE| re.DOTALL)
-     
-    line = '''&lt;associates.co.nz@diezel.dreamhost.com&gt; (expanded from &lt;associates.co.nz&gt;):    unknown user: "associates.co.nz"'''
-
-    arrLines = []
-    arrLines.append('''1306107014.V811I65c91c6M159839.diezel,associates.co.nz@diezel.dreamhost.com&gt; (expanded from &lt;associates.co.nz,"&lt;associates.co.nz@diezel.dreamhost.com&gt; (expanded from &lt;associates.co.nz&gt;):    unknown user: ""associates.co.nz"""''')
-    arrLines.append('''1306107015.V811I65c91c7M469029.diezel,don.eadie@roadtrain.org.nz,&lt;don.eadie@roadtrain.org.nz&gt;: [roadtrain.org.nz]: Name or service not known''')
-    arrLines.append('''1306107016.V811I65cc3c8M33430.diezel,su@murulearncentre.org.nz,&lt;su@murulearncentre.org.nz&gt;: [murulearncentre.org.nz]: Name or service not    known''')
-    arrLines.append('''1306107016.V811I65cc3c9M208857.diezel,a.carrington@eplus-salvationarmy.co.nz,&lt;a.carrington@eplus-salvationarmy.co.nz&gt;: [eplus-salvationarmy.co.nz]: Name or    service not known''')
-    arrLines.append('''1306107016.V811I65cc3cbM585965.diezel,keithmcgregor1@hotmail.com,&lt;keithmcgregor1@hotmail.com&gt;: host mx3.hotmail.com[65.54.188.94] said: 550    Requested action not taken: mailbox unavailable (in reply to RCPT TO    command)''')
-    arrLines.append('''1306107016.V811I65cc3ccM591758.diezel,diane@sadlerand.dreamhost.com,&lt;diane@sadlerand.dreamhost.com&gt;: [sadlerand.dreamhost.com]: Name or service not    known''')
-    arrLines.append('''1306107016.V811I65cc3cdM624973.diezel,marina8088@hotmail.com,&lt;marina8088@hotmail.com&gt;: host mx3.hotmail.com[65.54.188.72] said: 550    Requested action not taken: mailbox unavailable (in reply to RCPT TO    command)''')
-    arrLines.append('''1306107017.V811I65cc3ceM10074.diezel,bramdev@ihug.co.nz,&lt;bramdev@ihug.co.nz&gt;: host zuul.ihug.co.nz[203.109.135.49] said: 550 #5.1.0    Address rejected bramdev@ihug.co.nz (in reply to RCPT TO command)''')
-    arrLines.append('''1306107017.V811I65cc3cfM50315.diezel,valeria@senz.org.nz,&lt;valeria@senz.org.nz&gt;: host equipperschurch.com.s9a1.psmtp.com[74.125.148.10]    said: 550 No such user - psmtp (in reply to RCPT TO command)''')
-    arrLines.append('''1306107017.V811I65cc3d0M54814.diezel,mccomish@actrix.gen.nz&gt;: host mta.actrix.co.nz[203.96.16.183] said: 550 5.1.1    &lt;mccomish@actrix.gen.nz,&lt;mccomish@actrix.gen.nz&gt;: host mta.actrix.co.nz[203.96.16.183] said: 550 5.1.1    &lt;mccomish@actrix.gen.nz&gt;: Recipient address rejected: User unknown in local    recipient table (in reply to RCPT TO command)''')
-    arrLines.append('''1306107017.V811I65cc3d1M68979.diezel,k.elliott@paradise.net.nz,&lt;k.elliott@paradise.net.nz&gt;: host mx.paradise.net.nz[203.97.33.212] said: 550    #5.1.0 Address rejected k.elliott@paradise.net.nz (in reply to RCPT TO    command)''')
-    arrLines.append('''1306107017.V811I65cc3d2M227320.diezel,mtctour@xtra.co.nz,&lt;mtctour@xtra.co.nz&gt;: host mx1.tnz.mail.yahoo.com[124.108.96.211] said: 554    delivery error: dd This user doesn't have a xtra.co.nz account    (mtctour@xtra.co.nz) [0] - mta1001.tnz.mail.aue.yahoo.com (in reply to end    of DATA command)''')
-    arrLines.append('''1306107017.V811I65cc3d3M508051.diezel,positive.people@ww.co.nz,"&lt;positive.people@ww.co.nz&gt;: host mail.ww.co.nz[124.198.191.58] said: 550    ""Unknown User"" (in reply to RCPT TO command)"''')
-
-
-    for line in arrLines:
-        '''
-        match_obj = compile_obj.search(line)
-        try:
-            fullErrorMessage = match_obj.group('fullErrorMessage')
-        except AttributeError:
-            print "Error 1" 
-        except:
-            print "Unexpected error:", sys.exc_info()[0]
-            raise
-        else:
-            fullErrorMessage = stripLineFeeds(fullErrorMessage)
-            blnGoodErrMsg = True 
-
-        
-        try:
-            emailAddress = match_obj.group('emailAddress')
-        except AttributeError:
-            print "Error 2" 
-        except:
-            print "Unexpected error:", sys.exc_info()[0]
-            raise
-        else:
-            emailAddress = stripFromVerboseMessage(emailAddress, compile_objVerboseMsg)
-            emailAddress = stripLineFeeds(emailAddress)
-            blnGoodEmail = True
-        '''
-
-        print "+" * 50
-        print line
-        print "!" * 50
-        #emailAddress = match_obj.group('emailAddress')
-        for match in email_pattern.findall(line):
-                #print match[0]
-                pprint.pprint(match)
-        print "-" * 50
-</div>
-if __name__ == "__main__":
-    main()
-</pre>
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar">
-        <div class="sphinxsidebarwrapper">
-<div id="searchbox" style="display: none">
-  <h3>Quick search</h3>
-    <form class="search" action="../search.html" method="get">
-      <input type="text" name="q" />
-      <input type="submit" value="Go" />
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-    <p class="searchtip" style="font-size: 90%">
-    Enter search terms or a module, class or function name.
-    </p>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="../genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="../py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li><a href="../index.html">&#39;smtp-error-analysis&#39; &#39;0.1.0&#39; documentation</a> &raquo;</li>
-          <li><a href="index.html" >Module code</a> &raquo;</li> 
-      </ul>
-    </div>
-    <div class="footer">
-        &copy; Copyright 2012, Richard Shea.
-      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
-    </div>
-  </body>
-</html>

File doc/build/html/_static/ajax-loader.gif

Removed
Old image

File doc/build/html/_static/basic.css

-/*
- * basic.css
- * ~~~~~~~~~
- *
- * Sphinx stylesheet -- basic theme.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/* -- main layout ----------------------------------------------------------- */
-
-div.clearer {
-    clear: both;
-}
-
-/* -- relbar ---------------------------------------------------------------- */
-
-div.related {
-    width: 100%;
-    font-size: 90%;
-}
-
-div.related h3 {
-    display: none;
-}
-
-div.related ul {
-    margin: 0;
-    padding: 0 0 0 10px;
-    list-style: none;
-}
-
-div.related li {
-    display: inline;
-}
-
-div.related li.right {
-    float: right;
-    margin-right: 5px;
-}
-
-/* -- sidebar --------------------------------------------------------------- */
-
-div.sphinxsidebarwrapper {
-    padding: 10px 5px 0 10px;
-}
-
-div.sphinxsidebar {
-    float: left;
-    width: 230px;
-    margin-left: -100%;
-    font-size: 90%;
-}
-
-div.sphinxsidebar ul {
-    list-style: none;
-}
-
-div.sphinxsidebar ul ul,
-div.sphinxsidebar ul.want-points {
-    margin-left: 20px;
-    list-style: square;
-}
-
-div.sphinxsidebar ul ul {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-div.sphinxsidebar form {
-    margin-top: 10px;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #98dbcc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-div.sphinxsidebar #searchbox input[type="text"] {
-    width: 170px;
-}
-
-div.sphinxsidebar #searchbox input[type="submit"] {
-    width: 30px;
-}
-
-img {
-    border: 0;
-}
-
-/* -- search page ----------------------------------------------------------- */
-
-ul.search {
-    margin: 10px 0 0 20px;
-    padding: 0;
-}
-
-ul.search li {
-    padding: 5px 0 5px 20px;
-    background-image: url(file.png);
-    background-repeat: no-repeat;
-    background-position: 0 7px;
-}
-
-ul.search li a {
-    font-weight: bold;
-}
-
-ul.search li div.context {
-    color: #888;
-    margin: 2px 0 0 30px;
-    text-align: left;
-}
-
-ul.keywordmatches li.goodmatch a {
-    font-weight: bold;
-}
-
-/* -- index page ------------------------------------------------------------ */
-
-table.contentstable {
-    width: 90%;
-}
-
-table.contentstable p.biglink {
-    line-height: 150%;
-}
-
-a.biglink {
-    font-size: 1.3em;
-}
-
-span.linkdescr {
-    font-style: italic;
-    padding-top: 5px;
-    font-size: 90%;
-}
-
-/* -- general index --------------------------------------------------------- */
-
-table.indextable {
-    width: 100%;
-}
-
-table.indextable td {
-    text-align: left;
-    vertical-align: top;
-}
-
-table.indextable dl, table.indextable dd {
-    margin-top: 0;
-    margin-bottom: 0;
-}
-
-table.indextable tr.pcap {
-    height: 10px;
-}
-
-table.indextable tr.cap {
-    margin-top: 10px;
-    background-color: #f2f2f2;
-}
-
-img.toggler {
-    margin-right: 3px;
-    margin-top: 3px;
-    cursor: pointer;
-}
-
-div.modindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-div.genindex-jumpbox {
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-    margin: 1em 0 1em 0;
-    padding: 0.4em;
-}
-
-/* -- general body styles --------------------------------------------------- */
-
-a.headerlink {
-    visibility: hidden;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink {
-    visibility: visible;
-}
-
-div.body p.caption {
-    text-align: inherit;
-}
-
-div.body td {
-    text-align: left;
-}
-
-.field-list ul {
-    padding-left: 1em;
-}
-
-.first {
-    margin-top: 0 !important;
-}
-
-p.rubric {
-    margin-top: 30px;
-    font-weight: bold;
-}
-
-img.align-left, .figure.align-left, object.align-left {
-    clear: left;
-    float: left;
-    margin-right: 1em;
-}
-
-img.align-right, .figure.align-right, object.align-right {
-    clear: right;
-    float: right;
-    margin-left: 1em;
-}
-
-img.align-center, .figure.align-center, object.align-center {
-  display: block;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-.align-left {
-    text-align: left;
-}
-
-.align-center {
-    text-align: center;
-}
-
-.align-right {
-    text-align: right;
-}
-
-/* -- sidebars -------------------------------------------------------------- */
-
-div.sidebar {
-    margin: 0 0 0.5em 1em;
-    border: 1px solid #ddb;
-    padding: 7px 7px 0 7px;
-    background-color: #ffe;
-    width: 40%;
-    float: right;
-}
-
-p.sidebar-title {
-    font-weight: bold;
-}
-
-/* -- topics ---------------------------------------------------------------- */
-
-div.topic {
-    border: 1px solid #ccc;
-    padding: 7px 7px 0 7px;
-    margin: 10px 0 10px 0;
-}
-
-p.topic-title {
-    font-size: 1.1em;
-    font-weight: bold;
-    margin-top: 10px;
-}
-
-/* -- admonitions ----------------------------------------------------------- */
-
-div.admonition {
-    margin-top: 10px;
-    margin-bottom: 10px;
-    padding: 7px;
-}
-
-div.admonition dt {
-    font-weight: bold;
-}
-
-div.admonition dl {
-    margin-bottom: 0;
-}
-
-p.admonition-title {
-    margin: 0px 10px 5px 0px;
-    font-weight: bold;
-}
-
-div.body p.centered {
-    text-align: center;
-    margin-top: 25px;
-}
-
-/* -- tables ---------------------------------------------------------------- */
-
-table.docutils {
-    border: 0;
-    border-collapse: collapse;
-}
-
-table.docutils td, table.docutils th {
-    padding: 1px 8px 1px 5px;
-    border-top: 0;
-    border-left: 0;
-    border-right: 0;
-    border-bottom: 1px solid #aaa;
-}
-
-table.field-list td, table.field-list th {
-    border: 0 !important;
-}
-
-table.footnote td, table.footnote th {
-    border: 0 !important;
-}
-
-th {
-    text-align: left;
-    padding-right: 5px;
-}
-
-table.citation {
-    border-left: solid 1px gray;
-    margin-left: 1px;
-}
-
-table.citation td {
-    border-bottom: none;
-}
-
-/* -- other body styles ----------------------------------------------------- */
-
-ol.arabic {
-    list-style: decimal;
-}
-
-ol.loweralpha {
-    list-style: lower-alpha;
-}
-
-ol.upperalpha {
-    list-style: upper-alpha;
-}
-
-ol.lowerroman {
-    list-style: lower-roman;
-}
-
-ol.upperroman {
-    list-style: upper-roman;
-}
-
-dl {
-    margin-bottom: 15px;
-}
-
-dd p {
-    margin-top: 0px;
-}
-
-dd ul, dd table {
-    margin-bottom: 10px;
-}
-
-dd {
-    margin-top: 3px;
-    margin-bottom: 10px;
-    margin-left: 30px;
-}
-
-dt:target, .highlighted {
-    background-color: #fbe54e;
-}
-
-dl.glossary dt {
-    font-weight: bold;
-    font-size: 1.1em;
-}
-
-.field-list ul {
-    margin: 0;
-    padding-left: 1em;
-}
-
-.field-list p {
-    margin: 0;
-}
-
-.refcount {
-    color: #060;
-}
-
-.optional {
-    font-size: 1.3em;
-}
-
-.versionmodified {
-    font-style: italic;
-}
-
-.system-message {
-    background-color: #fda;
-    padding: 5px;
-    border: 3px solid red;
-}
-
-.footnote:target  {
-    background-color: #ffa;
-}
-
-.line-block {
-    display: block;
-    margin-top: 1em;
-    margin-bottom: 1em;
-}
-
-.line-block .line-block {
-    margin-top: 0;
-    margin-bottom: 0;
-    margin-left: 1.5em;
-}
-
-.guilabel, .menuselection {
-    font-family: sans-serif;
-}
-
-.accelerator {
-    text-decoration: underline;
-}
-
-.classifier {
-    font-style: oblique;
-}
-
-abbr, acronym {
-    border-bottom: dotted 1px;
-    cursor: help;
-}
-
-/* -- code displays --------------------------------------------------------- */
-
-pre {
-    overflow: auto;
-    overflow-y: hidden;  /* fixes display issues on Chrome browsers */
-}
-
-td.linenos pre {
-    padding: 5px 0px;
-    border: 0;
-    background-color: transparent;
-    color: #aaa;
-}
-
-table.highlighttable {
-    margin-left: 0.5em;
-}
-
-table.highlighttable td {
-    padding: 0 0.5em 0 0.5em;
-}
-
-tt.descname {
-    background-color: transparent;
-    font-weight: bold;
-    font-size: 1.2em;
-}
-
-tt.descclassname {
-    background-color: transparent;
-}
-
-tt.xref, a tt {
-    background-color: transparent;
-    font-weight: bold;
-}
-
-h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
-    background-color: transparent;
-}
-
-.viewcode-link {
-    float: right;
-}
-
-.viewcode-back {
-    float: right;
-    font-family: sans-serif;
-}
-
-div.viewcode-block:target {
-    margin: -1px -10px;
-    padding: 0 10px;
-}
-
-/* -- math display ---------------------------------------------------------- */
-
-img.math {
-    vertical-align: middle;
-}
-
-div.body div.math p {
-    text-align: center;
-}
-
-span.eqno {
-    float: right;
-}
-
-/* -- printout stylesheet --------------------------------------------------- */
-
-@media print {
-    div.document,
-    div.documentwrapper,
-    div.bodywrapper {
-        margin: 0 !important;
-        width: 100%;
-    }
-
-    div.sphinxsidebar,
-    div.related,
-    div.footer,
-    #top-link {
-        display: none;
-    }
-}

File doc/build/html/_static/comment-bright.png

Removed
Old image

File doc/build/html/_static/comment-close.png

Removed
Old image

File doc/build/html/_static/comment.png

Removed
Old image

File doc/build/html/_static/default.css

-/*
- * default.css_t
- * ~~~~~~~~~~~~~
- *
- * Sphinx stylesheet -- default theme.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-@import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
-    font-family: sans-serif;
-    font-size: 100%;
-    background-color: #11303d;
-    color: #000;
-    margin: 0;
-    padding: 0;
-}
-
-div.document {
-    background-color: #1c4e63;
-}
-
-div.documentwrapper {
-    float: left;
-    width: 100%;
-}
-
-div.bodywrapper {
-    margin: 0 0 0 230px;
-}
-
-div.body {
-    background-color: #ffffff;
-    color: #000000;
-    padding: 0 20px 30px 20px;
-}
-
-div.footer {
-    color: #ffffff;
-    width: 100%;
-    padding: 9px 0 9px 0;
-    text-align: center;
-    font-size: 75%;
-}
-
-div.footer a {
-    color: #ffffff;
-    text-decoration: underline;
-}
-
-div.related {
-    background-color: #133f52;
-    line-height: 30px;
-    color: #ffffff;
-}
-
-div.related a {
-    color: #ffffff;
-}
-
-div.sphinxsidebar {
-}
-
-div.sphinxsidebar h3 {
-    font-family: 'Trebuchet MS', sans-serif;
-    color: #ffffff;
-    font-size: 1.4em;
-    font-weight: normal;
-    margin: 0;
-    padding: 0;
-}
-
-div.sphinxsidebar h3 a {
-    color: #ffffff;
-}
-
-div.sphinxsidebar h4 {
-    font-family: 'Trebuchet MS', sans-serif;
-    color: #ffffff;
-    font-size: 1.3em;
-    font-weight: normal;
-    margin: 5px 0 0 0;
-    padding: 0;
-}
-
-div.sphinxsidebar p {
-    color: #ffffff;
-}
-
-div.sphinxsidebar p.topless {
-    margin: 5px 10px 10px 10px;
-}
-
-div.sphinxsidebar ul {
-    margin: 10px;
-    padding: 0;
-    color: #ffffff;
-}
-
-div.sphinxsidebar a {
-    color: #98dbcc;
-}
-
-div.sphinxsidebar input {
-    border: 1px solid #98dbcc;
-    font-family: sans-serif;
-    font-size: 1em;
-}
-
-
-
-/* -- hyperlink styles ------------------------------------------------------ */
-
-a {
-    color: #355f7c;
-    text-decoration: none;
-}
-
-a:visited {
-    color: #355f7c;
-    text-decoration: none;
-}
-
-a:hover {
-    text-decoration: underline;
-}
-
-
-
-/* -- body styles ----------------------------------------------------------- */
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
-    font-family: 'Trebuchet MS', sans-serif;
-    background-color: #f2f2f2;
-    font-weight: normal;
-    color: #20435c;
-    border-bottom: 1px solid #ccc;
-    margin: 20px -20px 10px -20px;
-    padding: 3px 0 3px 10px;
-}
-
-div.body h1 { margin-top: 0; font-size: 200%; }
-div.body h2 { font-size: 160%; }
-div.body h3 { font-size: 140%; }
-div.body h4 { font-size: 120%; }
-div.body h5 { font-size: 110%; }
-div.body h6 { font-size: 100%; }
-
-a.headerlink {
-    color: #c60f0f;
-    font-size: 0.8em;
-    padding: 0 4px 0 4px;
-    text-decoration: none;
-}
-
-a.headerlink:hover {
-    background-color: #c60f0f;
-    color: white;
-}
-
-div.body p, div.body dd, div.body li {
-    text-align: justify;
-    line-height: 130%;
-}
-
-div.admonition p.admonition-title + p {
-    display: inline;
-}
-
-div.admonition p {
-    margin-bottom: 5px;
-}
-
-div.admonition pre {
-    margin-bottom: 5px;
-}
-
-div.admonition ul, div.admonition ol {
-    margin-bottom: 5px;
-}
-
-div.note {
-    background-color: #eee;
-    border: 1px solid #ccc;
-}
-
-div.seealso {
-    background-color: #ffc;
-    border: 1px solid #ff6;
-}
-
-div.topic {
-    background-color: #eee;
-}
-
-div.warning {
-    background-color: #ffe4e4;
-    border: 1px solid #f66;
-}
-
-p.admonition-title {
-    display: inline;
-}
-
-p.admonition-title:after {
-    content: ":";
-}
-
-pre {
-    padding: 5px;
-    background-color: #eeffcc;
-    color: #333333;
-    line-height: 120%;
-    border: 1px solid #ac9;
-    border-left: none;
-    border-right: none;
-}
-
-tt {
-    background-color: #ecf0f3;
-    padding: 0 1px 0 1px;
-    font-size: 0.95em;
-}
-
-th {
-    background-color: #ede;
-}
-
-.warning tt {
-    background: #efc2c2;
-}
-
-.note tt {
-    background: #d6d6d6;
-}
-
-.viewcode-back {
-    font-family: sans-serif;
-}
-
-div.viewcode-block:target {
-    background-color: #f4debf;
-    border-top: 1px solid #ac9;
-    border-bottom: 1px solid #ac9;
-}

File doc/build/html/_static/doctools.js

-/*
- * doctools.js
- * ~~~~~~~~~~~
- *
- * Sphinx JavaScript utilities for all documentation.
- *
- * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
- * :license: BSD, see LICENSE for details.
- *
- */
-
-/**
- * select a different prefix for underscore
- */
-$u = _.noConflict();
-
-/**
- * make the code below compatible with browsers without
- * an installed firebug like debugger
-if (!window.console || !console.firebug) {
-  var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
-    "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
-    "profile", "profileEnd"];
-  window.console = {};
-  for (var i = 0; i < names.length; ++i)
-    window.console[names[i]] = function() {};
-}
- */
-
-/**
- * small helper function to urldecode strings
- */
-jQuery.urldecode = function(x) {
-  return decodeURIComponent(x).replace(/\+/g, ' ');
-}
-
-/**
- * small helper function to urlencode strings
- */
-jQuery.urlencode = encodeURIComponent;
-
-/**
- * This function returns the parsed url parameters of the
- * current request. Multiple values per key are supported,
- * it will always return arrays of strings for the value parts.
- */
-jQuery.getQueryParameters = function(s) {
-  if (typeof s == 'undefined')
-    s = document.location.search;
-  var parts = s.substr(s.indexOf('?') + 1).split('&');
-  var result = {};
-  for (var i = 0; i < parts.length; i++) {
-    var tmp = parts[i].split('=', 2);
-    var key = jQuery.urldecode(tmp[0]);
-    var value = jQuery.urldecode(tmp[1]);
-    if (key in result)
-      result[key].push(value);
-    else
-      result[key] = [value];
-  }
-  return result;
-};
-
-/**
- * small function to check if an array contains
- * a given item.
- */
-jQuery.contains = function(arr, item) {
-  for (var i = 0; i < arr.length; i++) {
-    if (arr[i] == item)
-      return true;
-  }
-  return false;
-};
-
-/**
- * highlight a given string on a jquery object by wrapping it in
- * span elements with the given class name.
- */
-jQuery.fn.highlightText = function(text, className) {
-  function highlight(node) {
-    if (node.nodeType == 3) {
-      var val = node.nodeValue;
-      var pos = val.toLowerCase().indexOf(text);
-      if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
-        var span = document.createElement("span");
-        span.className = className;
-        span.appendChild(document.createTextNode(val.substr(pos, text.length)));
-        node.parentNode.insertBefore(span, node.parentNode.insertBefore(
-          document.createTextNode(val.substr(pos + text.length)),
-          node.nextSibling));
-        node.nodeValue = val.substr(0, pos);
-      }
-    }
-    else if (!jQuery(node).is("button, select, textarea")) {
-      jQuery.each(node.childNodes, function() {
-        highlight(this);
-      });
-    }
-  }
-  return this.each(function() {