<p dir="auto">Maybe I am missing something, but is this correct?</p>
<p dir="auto"><code class="notranslate">np.issubdtype(np.double, np.bool) =&gt; True</code></p>
<p dir="auto">At the very least, this is confusing.</p>
<p dir="auto"><em>Original ticket <a href="http://projects.scipy.org/numpy/ticket/1739" rel="nofollow">http://projects.scipy.org/numpy/ticket/1739</a> on 2011-02-10 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/pv/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/pv">@pv</a>, assigned to unknown.</em></p>
<p dir="auto">Interestingly,</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt;&gt;&gt; np.issubdtype(int, np.bool_)
False
&gt;&gt;&gt; np.issubdtype(str, bool)
True"><pre class="notranslate"><code class="notranslate">&gt;&gt;&gt; np.issubdtype(int, np.bool_)
False
&gt;&gt;&gt; np.issubdtype(str, bool)
True
</code></pre></div>
<p dir="auto">The issubdtype routine apparently does not work correctly for this case (and never has). What it does is</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="    if issubclass_(arg2, generic):
        return issubclass(dtype(arg1).type, arg2)
    mro = dtype(arg2).type.mro()
    if len(mro) &gt; 1:
        val = mro[1]
    else:
        val = mro[0]
    return issubclass(dtype(arg1).type, val)"><pre class="notranslate"><code class="notranslate">    if issubclass_(arg2, generic):
        return issubclass(dtype(arg1).type, arg2)
    mro = dtype(arg2).type.mro()
    if len(mro) &gt; 1:
        val = mro[1]
    else:
        val = mro[0]
    return issubclass(dtype(arg1).type, val)
</code></pre></div>
<p dir="auto">Using mro[1] makes e.g. the Python <code class="notranslate">int</code> type behave as the more general <code class="notranslate">signedinteger</code>.</p>
<p dir="auto">For <code class="notranslate">bool</code>, it's directly <code class="notranslate">generic</code>, which results into strangeness.</p>
<p dir="auto">It might be better to hardcode the special handling of Python types, than just picking mro[1]...</p>