<html><head></head><body><div style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:10px;"><div style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:10px;"><div></div>
        <div>Hi Peter,</div><div><br></div><div>I see. We could put a try: except: block around importing _aligners, and raise an Exception if anybody tries to instantiate a PairwiseAligner if the C code is not available.</div><div>I am against putting the pairwise aligner code in a separate submodule since, according to the Zen of Python, flat is better than nested.</div><div><br></div><div><br></div><div>Best,</div><div>-Michiel<br></div><div><br></div>
        
        </div><div id="yahoo_quoted_0173450329" class="yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Saturday, June 23, 2018, 6:47:39 PM GMT+9, Peter Cock <p.j.a.cock@googlemail.com> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div dir="ltr">On Sat, Jun 23, 2018 at 2:32 AM, Michiel de Hoon <<a shape="rect" ymailto="mailto:mjldehoon@yahoo.com" href="mailto:mjldehoon@yahoo.com">mjldehoon@yahoo.com</a>> wrote:<br clear="none">>> That has made be realise that the new pairwise alignment<br clear="none">> code being in Bio.Align at top level means it gets imported<br clear="none">> as a side effect all over the place. With hindsight, it would<br clear="none">> have been better as a sub-module to avoid this overhead.<br clear="none">> What are people's thoughts here?<br clear="none">><br clear="none">> Hi Peter,<br clear="none">> Can you show an example where this happens? I guess<br clear="none">> usually people would use "from Bio import Align"; then it<br clear="none">> doesn't really matter.<br clear="none">><br clear="none">> Best,<br clear="none">> -Michiel<br clear="none"><br clear="none">Using AlignIO imports Align, which now includes the new C code.<br clear="none">This means if there is a problem with the C code, lots of things<br clear="none">break (including SeqIO too, which imports AlignIO when needed).<br clear="none"><br clear="none">For an example, look at the logs for this attempt at building<br clear="none">Linux and macOS wheels for Biopython 1.72,<br clear="none"><br clear="none"><a shape="rect" href="https://travis-ci.org/biopython/biopython-wheels/builds/395533386" target="_blank">https://travis-ci.org/biopython/biopython-wheels/builds/395533386</a><br clear="none"><br clear="none">It seems to be something silly with the paths, meaning none<br clear="none">of the C code is available from the installed new wheel.<br clear="none"><br clear="none">I was not able to solve this last night (although the Windows<br clear="none">wheels are fine, which are built on AppVeyor instead).<div class="yqt6681160525" id="yqtfd60914"><br clear="none"><br clear="none">Peter<br clear="none"></div></div></div>
            </div>
        </div></div></body></html>