197 lines
11 KiB
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 — 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> »</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’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’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
|
|
“info <function name>” 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’d like to generalize its
|
|
implementation to allow connecting two programs
|
|
across multiple hosts, i.e. we’d like to arbitrarily
|
|
send “channels” across the network. Likely this
|
|
will be done by using the “pipe” 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 “own”
|
|
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’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 “working copy” 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 “path” object allowing you to access your
|
|
filesystem in convenient ways.</p>
|
|
<p>Also interesting to check out is Will McGugan’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’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’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> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer">
|
|
© Copyright 2009, Holger Krekel.
|
|
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.7.
|
|
</div>
|
|
</body>
|
|
</html> |