Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > 9280a66ca7ead4da2b3a98c5f98f2bcb > files > 103

python3-pkginfo-1.2b1-2.mga4.noarch.rpm



<!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>Distribution Types &mdash; pkginfo 1.1 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:     '1.1',
        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="pkginfo 1.1 documentation" href="index.html" />
    <link rel="next" title="Metadata Versions" href="metadata.html" />
    <link rel="prev" title="pkginfo 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="metadata.html" title="Metadata Versions"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="index.html" title="pkginfo documentation"
             accesskey="P">previous</a> |</li>
        <li><a href="index.html">pkginfo 1.1 documentation</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="distribution-types">
<h1>Distribution Types<a class="headerlink" href="#distribution-types" title="Permalink to this headline">¶</a></h1>
<p>The fundamental abstraction provided by this pacakge is the <tt class="docutils literal"><span class="pre">Distribution</span></tt>
base class.  Implementations exist for specific cases:  source distributions,
binary distributions, installed pakcages, and development checkouts.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pkginfo</span> <span class="kn">import</span> <span class="n">Distribution</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pkginfo</span> <span class="kn">import</span> <span class="n">SDist</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">assert</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">SDist</span><span class="p">,</span> <span class="n">Distribution</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pkginfo</span> <span class="kn">import</span> <span class="n">UnpackedSDist</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">assert</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">UnpackedSDist</span><span class="p">,</span> <span class="n">SDist</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pkginfo</span> <span class="kn">import</span> <span class="n">BDist</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">assert</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">BDist</span><span class="p">,</span> <span class="n">Distribution</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pkginfo</span> <span class="kn">import</span> <span class="n">Wheel</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">assert</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">Wheel</span><span class="p">,</span> <span class="n">Distribution</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pkginfo</span> <span class="kn">import</span> <span class="n">Installed</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">assert</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">Installed</span><span class="p">,</span> <span class="n">Distribution</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pkginfo</span> <span class="kn">import</span> <span class="n">Develop</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">assert</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">Develop</span><span class="p">,</span> <span class="n">Distribution</span><span class="p">)</span>
</pre></div>
</div>
<div class="section" id="introspecting-source-distributions">
<h2>Introspecting Source Distributions<a class="headerlink" href="#introspecting-source-distributions" title="Permalink to this headline">¶</a></h2>
<p><tt class="docutils literal"><span class="pre">SDist</span></tt> objects are created from a filesystem path to the corresponding
archive, which should have been created via the <tt class="docutils literal"><span class="pre">sdist</span></tt> command from
distutils:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mypackage</span> <span class="o">=</span> <span class="n">SDist</span><span class="p">(</span><span class="s">&#39;docs/examples/mypackage-0.1.tar.gz&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>After creation, the <tt class="docutils literal"><span class="pre">SDist</span></tt> instance will have attributes corrsponding
the the fields defined in the PEP corresponding to the metadata version,
lower-cased and transliterated into valid Python identifiers by mapping
hyphens to underscores.  E.g.:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mypackage</span><span class="o">.</span><span class="n">metadata_version</span>
<span class="go">1.0</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mypackage</span><span class="o">.</span><span class="n">name</span>
<span class="go">mypackage</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mypackage</span><span class="o">.</span><span class="n">version</span>
<span class="go">0.1</span>
</pre></div>
</div>
<p>Fields which are optional under the PEP, and which have no value set
in their <tt class="docutils literal"><span class="pre">PKG-INFO</span></tt>, will map to the value <tt class="docutils literal"><span class="pre">None</span></tt>:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mypackage</span><span class="o">.</span><span class="n">keywords</span>
<span class="go">None</span>
</pre></div>
</div>
<p>Fields which are marked &#8220;multiple use&#8221; under the PEP map onto sequences;
their names are pluralized to indicate the sequence.  &#8220;Multiple use&#8221; fields
with no occurences in the <tt class="docutils literal"><span class="pre">PKG-INFO</span></tt> file will map onto an empty sequence:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="nb">list</span><span class="p">(</span><span class="n">mypackage</span><span class="o">.</span><span class="n">supported_platforms</span><span class="p">)</span>
<span class="go">[]</span>
</pre></div>
</div>
<p>See <a class="reference external" href="metadata.html">Metadata Versions</a> for an example with a non-empty,
&#8220;multiple-use&#8221; field.</p>
</div>
<div class="section" id="introspecting-unpacked-source-distributions">
<h2>Introspecting Unpacked Source Distributions<a class="headerlink" href="#introspecting-unpacked-source-distributions" title="Permalink to this headline">¶</a></h2>
<p>You can also introspect a previously-unpacked package with <tt class="docutils literal"><span class="pre">UnpackedSDist</span></tt>
either by passing it the path to the unpacked package, or by passing it the
setup.py at the top level:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mypackage</span> <span class="o">=</span> <span class="n">UnpackedSDist</span><span class="p">(</span><span class="s">&#39;docs/examples/mypackage-0.1&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">mypackage</span><span class="o">.</span><span class="n">name</span>
<span class="go">mypackage</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">myotherpackage</span> <span class="o">=</span> <span class="n">UnpackedSDist</span><span class="p">(</span><span class="s">&#39;docs/examples/mypackage-0.1/setup.py&#39;</span><span class="p">)</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">print</span> <span class="n">myotherpackage</span><span class="o">.</span><span class="n">name</span>
<span class="go">mypackage</span>
</pre></div>
</div>
<p><tt class="docutils literal"><span class="pre">UnpackedSDist</span></tt> objects are most useful in conjuction with distutils to
produce sdists that want complex behavior for determining what metadata to use;
these sdists normally break when installed with <tt class="docutils literal"><span class="pre">pip</span></tt>, because metadata in an
sdist is regenerated when pip installed. You can achieve this in your
<cite>setup.py</cite> as follows:</p>
<div class="code highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">setuptools</span> <span class="kn">import</span> <span class="n">dist</span><span class="p">,</span> <span class="n">setup</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">dist</span><span class="o">.</span><span class="n">Distribution</span><span class="p">(</span><span class="nb">dict</span><span class="p">(</span><span class="n">setup_requires</span><span class="o">=</span><span class="s">&#39;pkginfo&#39;</span><span class="p">))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pkginfo</span> <span class="kn">import</span> <span class="n">UnpackedSDist</span>

<span class="gp">&gt;&gt;&gt; </span><span class="k">try</span><span class="p">:</span>
<span class="gp">... </span>    <span class="n">d</span> <span class="o">=</span> <span class="n">UnpackedSDist</span><span class="p">(</span><span class="n">__file__</span><span class="p">)</span>
<span class="gp">... </span>    <span class="n">VERSION</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">version</span>
<span class="gp">... </span><span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
<span class="gp">... </span>    <span class="n">VERSION</span> <span class="o">=</span> <span class="p">(</span><span class="n">version_from_source_control</span><span class="p">()</span> <span class="ow">or</span>
<span class="gp">... </span>               <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">&#39;VERSION&#39;</span><span class="p">,</span> <span class="s">&#39;1.0&#39;</span><span class="p">))</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s">&#39;mypackage&#39;</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="n">VERSION</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="introspecting-binary-distributions">
<h2>Introspecting Binary Distributions<a class="headerlink" href="#introspecting-binary-distributions" title="Permalink to this headline">¶</a></h2>
<p><tt class="docutils literal"><span class="pre">BDist</span></tt> objects are created from the filename, which should have been
generated via <tt class="docutils literal"><span class="pre">setup.py</span> <span class="pre">bdist_egg</span></tt>.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mypackage</span> <span class="o">=</span> <span class="n">BDist</span><span class="p">(</span><span class="s">&#39;docs/examples/mypackage-0.1-py2.6.egg&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>After that, they have the same metadata as other <tt class="docutils literal"><span class="pre">Distribution</span></tt> objects,</p>
</div>
<div class="section" id="introspecting-wheels">
<h2>Introspecting Wheels<a class="headerlink" href="#introspecting-wheels" title="Permalink to this headline">¶</a></h2>
<p><tt class="docutils literal"><span class="pre">Wheel</span></tt> objects are created from the filename, which should have been
generated via <tt class="docutils literal"><span class="pre">setup.py</span> <span class="pre">bdist_wheel</span></tt>.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">mypackage</span> <span class="o">=</span> <span class="n">Wheel</span><span class="p">(</span><span class="s">&#39;docs/examples/mypackage-0.1-cp26-none-linux_x86_64.whl&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>After that, they have the same metadata as other <tt class="docutils literal"><span class="pre">Distribution</span></tt> objects,</p>
</div>
<div class="section" id="introspecting-installed-packages">
<h2>Introspecting Installed Packages<a class="headerlink" href="#introspecting-installed-packages" title="Permalink to this headline">¶</a></h2>
<p><tt class="docutils literal"><span class="pre">Installed</span></tt> objects are created from either a module object or its
dotted name.  Note that this feature only works in Python 2.6 or later:
earlier Python versions did not record <tt class="docutils literal"><span class="pre">PKG-INFO</span></tt> for installed packages.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">sys</span>
<span class="gp">&gt;&gt;&gt; </span><span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">version_info</span> <span class="o">&gt;=</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mi">6</span><span class="p">):</span>
<span class="gp">... </span>   <span class="n">dotted</span> <span class="o">=</span> <span class="n">Installed</span><span class="p">(</span><span class="s">&#39;pkginfo&#39;</span><span class="p">)</span>
<span class="gp">... </span>   <span class="kn">import</span> <span class="nn">pkginfo</span>
<span class="gp">... </span>   <span class="n">direct</span> <span class="o">=</span> <span class="n">Installed</span><span class="p">(</span><span class="n">pkginfo</span><span class="p">)</span>
</pre></div>
</div>
<p>After that, they have the same metadata as other <tt class="docutils literal"><span class="pre">Distribution</span></tt> objects,
assuming that the package on which they were based has a discoverable
&#8216;.egg-info&#8217; file / directory.  To be discoverable, the &#8216;.egg-info&#8217; must
either be located inside the package (e.g., created via <tt class="docutils literal"><span class="pre">setup.py</span> <span class="pre">develop</span></tt>
under setuptools), or adjacent to the package (e.g., created via
<tt class="docutils literal"><span class="pre">setup.py</span> <span class="pre">instlall</span></tt>).</p>
</div>
<div class="section" id="introspecting-development-checkouts">
<h2>Introspecting Development Checkouts<a class="headerlink" href="#introspecting-development-checkouts" title="Permalink to this headline">¶</a></h2>
<p><tt class="docutils literal"><span class="pre">Develop</span></tt> objects are created from a path to a checkout containing
a <tt class="docutils literal"><span class="pre">PKG-iNFO</span></tt> file, e.g., created by running <tt class="docutils literal"><span class="pre">setup.py</span> <span class="pre">develop</span></tt> under
setuptools.</p>
<div class="highlight-python"><div class="highlight"><pre><span class="gp">&gt;&gt;&gt; </span><span class="n">develop</span> <span class="o">=</span> <span class="n">Develop</span><span class="p">(</span><span class="s">&#39;.&#39;</span><span class="p">)</span>
</pre></div>
</div>
<p>After that, they have the same metadata as other <tt class="docutils literal"><span class="pre">Distribution</span></tt> objects.</p>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Distribution Types</a><ul>
<li><a class="reference internal" href="#introspecting-source-distributions">Introspecting Source Distributions</a></li>
<li><a class="reference internal" href="#introspecting-unpacked-source-distributions">Introspecting Unpacked Source Distributions</a></li>
<li><a class="reference internal" href="#introspecting-binary-distributions">Introspecting Binary Distributions</a></li>
<li><a class="reference internal" href="#introspecting-wheels">Introspecting Wheels</a></li>
<li><a class="reference internal" href="#introspecting-installed-packages">Introspecting Installed Packages</a></li>
<li><a class="reference internal" href="#introspecting-development-checkouts">Introspecting Development Checkouts</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="index.html"
                        title="previous chapter"><tt class="docutils literal"><span class="pre">pkginfo</span></tt> documentation</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="metadata.html"
                        title="next chapter">Metadata Versions</a></p>
  <h3>This Page</h3>
  <ul class="this-page-menu">
    <li><a href="_sources/distributions.txt"
           rel="nofollow">Show Source</a></li>
  </ul>
<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="metadata.html" title="Metadata Versions"
             >next</a> |</li>
        <li class="right" >
          <a href="index.html" title="pkginfo documentation"
             >previous</a> |</li>
        <li><a href="index.html">pkginfo 1.1 documentation</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2009-2013, Tres Seaver.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
    </div>
  </body>
</html>