pytest2/py/doc/_build/html/future.html

197 lines
11 KiB
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>11. Visions and ideas for further development of the py lib &mdash; py lib v1.0.0b1 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.0.0b1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="py lib v1.0.0b1 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><a href="index.html">py lib v1.0.0b1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="visions-and-ideas-for-further-development-of-the-py-lib">
<h1>11. Visions and ideas for further development of the py lib<a class="headerlink" href="#visions-and-ideas-for-further-development-of-the-py-lib" title="Permalink to this headline"></a></h1>
<p>This document tries to describe directions and guiding ideas
for the near-future development of the py lib. <em>Note that all
statements within this document - even if they sound factual -
mostly just express thoughts and ideas. They not always refer to
real code so read with some caution.</em></p>
<div class="section" id="distribute-tests-ad-hoc-across-multiple-platforms">
<h2>11.1. Distribute tests ad-hoc across multiple platforms<a class="headerlink" href="#distribute-tests-ad-hoc-across-multiple-platforms" title="Permalink to this headline"></a></h2>
<p>After some more refactoring and unification of
the current testing and distribution support code
we&#8217;d like to be able to run tests on multiple
platforms simultanously and allow for interaction
and introspection into the (remote) failures.</p>
</div>
<div class="section" id="make-apigen-useful-for-more-projects">
<h2>11.2. Make APIGEN useful for more projects<a class="headerlink" href="#make-apigen-useful-for-more-projects" title="Permalink to this headline"></a></h2>
<p>The new APIGEN tool offers rich information
derived from running tests against an application:
argument types and callsites, i.e. it shows
the places where a particular API is used.
In its first incarnation, there are still
some specialties that likely prevent it
from documenting APIs for other projects.
We&#8217;d like to evolve to a <cite>py.apigen</cite> tool
that can make use of information provided
by a py.test run.</p>
</div>
<div class="section" id="consider-apigen-and-pdb-integration">
<h2>11.3. Consider APIGEN and pdb integration<a class="headerlink" href="#consider-apigen-and-pdb-integration" title="Permalink to this headline"></a></h2>
<p>The information provided by APIGEN can be used in many
different ways. An example of this could be to write
an extension to pdb which makes it available.
Imagine you could issue a pdb command
&#8220;info &lt;function name&gt;&#8221; and get information
regarding incoming, and outgoing types, possible
exceptions, field types and call sites.</p>
</div>
<div class="section" id="distribute-channels-programs-across-networks">
<h2>11.4. Distribute channels/programs across networks<a class="headerlink" href="#distribute-channels-programs-across-networks" title="Permalink to this headline"></a></h2>
<p>Apart from stabilizing setup/teardown procedures
for <a class="reference external" href="execnet.html">py.execnet</a>, we&#8217;d like to generalize its
implementation to allow connecting two programs
across multiple hosts, i.e. we&#8217;d like to arbitrarily
send &#8220;channels&#8221; across the network. Likely this
will be done by using the &#8220;pipe&#8221; model, i.e.
that each channel is actually a pair of endpoints,
both of which can be independently transported
across the network. The programs who &#8220;own&#8221;
these endpoints remain connected.</p>
</div>
<div class="section" id="benchmarking-and-persistent-storage">
<h2>11.5. Benchmarking and persistent storage<a class="headerlink" href="#benchmarking-and-persistent-storage" title="Permalink to this headline"></a></h2>
<p>For storing test results, but also benchmarking
and other information, we need a solid way
to store all kinds of information from test runs.
We&#8217;d like to generate statistics or html-overview
out of it, but also use such information to determine when
a certain test broke, or when its performance
decreased considerably.</p>
</div>
<div class="section" id="refactor-path-implementations-to-use-a-filesystem-abstraction">
<span id="a-more-general-view-on-path-objects"></span><span id="general-path"></span><h2>11.6. Refactor path implementations to use a Filesystem Abstraction<a class="headerlink" href="#refactor-path-implementations-to-use-a-filesystem-abstraction" title="Permalink to this headline"></a></h2>
<p>It seems like a good idea to refactor all <a class="reference external" href="http://codespeak.net/py/dist/path.html">py.path</a> Path implementations to
use an internal Filesystem abstraction. The current code base
would be transformed to have Filesystem implementations for e.g.
local, subversion and subversion &#8220;working copy&#8221; filesystems. Today
the according code is scattered through path-handling code.</p>
<p>On a related note, Armin Rigo has hacked <a class="reference external" href="http://codespeak.net/svn/user/arigo/hack/pylufs/">pylufs</a> and more recently has
written <a class="reference external" href="http://codespeak.net/svn/user/arigo/hack/pyfuse/">pyfuse</a> which allow to
implement kernel-level linux filesystems with pure python. Now
the idea is that the mentioned filesystem implementations would
be directly usable for such linux-filesystem glue code.</p>
<p>In other words, implementing a <a class="reference external" href="http://codespeak.net/svn/user/arigo/hack/pyfuse/memoryfs.py">memoryfs</a> or a <a class="reference external" href="http://codespeak.net/pipermail/py-dev/2005-January/000191.html">dictfs</a> would
give you two things for free: a filesystem mountable at kernel level
as well as a uniform &#8220;path&#8221; object allowing you to access your
filesystem in convenient ways.</p>
<p>Also interesting to check out is Will McGugan&#8217;s work on
his <a class="reference external" href="http://www.willmcgugan.com/2008/09/21/announcing-fs-010-a-python-file-system/#comment-60276">fs package</a>.</p>
<p>I think the main question is what the very fundamental
filesystem API should look like. Here are some doctests
on how a <a class="reference external" href="draft_pyfs">draft py.fs</a> could look like. There also
is Matthew Scotts <a class="reference external" href="http://codespeak.net/pipermail/py-dev/attachments/20050128/d9595512/virtual1-0001.bin">dictproxy patch</a> which adds
<tt class="docutils literal"><span class="pre">py.path.dict</span></tt> and <tt class="docutils literal"><span class="pre">py.path.proxy</span></tt>.</p>
</div>
<div class="section" id="integrate-interactive-completion">
<h2>11.7. Integrate interactive completion<a class="headerlink" href="#integrate-interactive-completion" title="Permalink to this headline"></a></h2>
<p>It&#8217;d be nice to integrate the bash-like
<a class="reference external" href="http://codespeak.net/rlcompleter2/">rlcompleter2</a> python command line completer
into the py lib, and making it work remotely
and with pdb.</p>
</div>
<div class="section" id="consider-more-features">
<h2>11.8. Consider more features<a class="headerlink" href="#consider-more-features" title="Permalink to this headline"></a></h2>
<p>There are many more features and useful classes
that might be nice to integrate. For example, we might put
Armin&#8217;s <a class="reference external" href="http://codespeak.net/svn/user/arigo/hack/misc/collect.py">lazy list</a> implementation into the py lib.</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 external" href="">11. Visions and ideas for further development of the py lib</a><ul>
<li><a class="reference external" href="#distribute-tests-ad-hoc-across-multiple-platforms">11.1. Distribute tests ad-hoc across multiple platforms</a></li>
<li><a class="reference external" href="#make-apigen-useful-for-more-projects">11.2. Make APIGEN useful for more projects</a></li>
<li><a class="reference external" href="#consider-apigen-and-pdb-integration">11.3. Consider APIGEN and pdb integration</a></li>
<li><a class="reference external" href="#distribute-channels-programs-across-networks">11.4. Distribute channels/programs across networks</a></li>
<li><a class="reference external" href="#benchmarking-and-persistent-storage">11.5. Benchmarking and persistent storage</a></li>
<li><a class="reference external" href="#refactor-path-implementations-to-use-a-filesystem-abstraction">11.6. Refactor path implementations to use a Filesystem Abstraction</a></li>
<li><a class="reference external" href="#integrate-interactive-completion">11.7. Integrate interactive completion</a></li>
<li><a class="reference external" href="#consider-more-features">11.8. Consider more features</a></li>
</ul>
</li>
</ul>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/future.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" size="18" />
<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><a href="index.html">py lib v1.0.0b1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2009, Holger Krekel.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.7.
</div>
</body>
</html>