Author: Maciej Fijalkowski <[email protected]>
Branch: single-run
Changeset: r321:15d8a7e08f61
Date: 2015-04-08 11:12 +0200
http://bitbucket.org/pypy/benchmarks/changeset/15d8a7e08f61/
Log: merge default
diff too long, truncating to 2000 out of 144423 lines
diff --git a/benchmarks.py b/benchmarks.py
--- a/benchmarks.py
+++ b/benchmarks.py
@@ -61,7 +61,9 @@
opts = {
'eparse' : {'bm_env': {'PYTHONPATH': relative('lib/monte')}},
'bm_mako' : {'bm_env': {'PYTHONPATH': relative('lib/mako')}},
- 'bm_chameleon': {'bm_env': {'PYTHONPATH': relative('lib/chameleon/src')}},
+ 'bm_dulwich_log': {'bm_env': {'PYTHONPATH':
relative('lib/dulwich-0.9.1')}},
+ 'bm_chameleon': {'bm_env': {'PYTHONPATH': relative('lib/chameleon/src')},
+ 'iteration_scaling': 3},
}
for name in ['expand', 'integrate', 'sum', 'str']:
@@ -77,12 +79,14 @@
for name in ['float', 'nbody_modified', 'meteor-contest', 'fannkuch',
'spectral-norm', 'chaos', 'telco', 'go', 'pyflate-fast',
'raytrace-simple', 'crypto_pyaes', 'bm_mako', 'bm_chameleon',
- 'json_bench', 'pidigits', 'hexiom2', 'eparse']:
+ 'json_bench', 'pidigits', 'hexiom2', 'eparse', 'deltablue',
+ 'bm_dulwich_log', 'bm_krakatau', 'bm_mdp', 'pypy_interp',
+ 'bm_icbd']:
_register_new_bm(name, name, globals(), **opts.get(name, {}))
for name in ['names', 'iteration', 'tcp', 'pb', ]:#'web']:#, 'accepts']:
_register_new_bm_twisted(name, 'twisted_' + name,
- globals(), bm_env={'PYTHONPATH': ':'.join(TWISTED)})
+ globals(), bm_env={'PYTHONPATH':
os.pathsep.join(TWISTED)})
_register_new_bm('spitfire', 'spitfire', globals(),
extra_args=['--benchmark=spitfire_o4'])
diff --git a/io/iobasic.py b/io/iobasic.py
new file mode 100644
--- /dev/null
+++ b/io/iobasic.py
@@ -0,0 +1,43 @@
+
+import os, time
+
+def measure(func, num1, num2):
+ t0 = time.time()
+ func(num1, num2)
+ print func.__code__.co_name, "%d bytes, %.2fus per write" % (
+ num2, (time.time() - t0) / num1 * 1000 * 1000)
+
+def fwrite(num, num2):
+ fd = os.open("/dev/null", os.O_WRONLY)
+ for i in range(num):
+ os.write(fd, " " * num2)
+
+def fread(num, num2):
+ fd = os.open("/dev/full", os.O_RDONLY)
+ for i in range(num):
+ os.read(fd, num2)
+
+def file_write(num, num2):
+ f = open("/dev/null", "w")
+ for i in range(num):
+ f.write(" " * num2)
+ f.flush()
+
+def file_read(num, num2):
+ f = open("/dev/full")
+ for i in range(num):
+ f.read(num2)
+
+if __name__ == '__main__':
+ measure(fread, 10000000, 100)
+ measure(fwrite, 10000000, 100)
+ measure(fread, 10000000, 1000)
+ measure(fwrite, 10000000, 1000)
+ measure(fread, 1000000, 10000)
+ measure(fwrite, 1000000, 10000)
+ measure(file_read, 10000000, 100)
+ measure(file_write, 10000000, 100)
+ measure(file_read, 10000000, 1000)
+ measure(file_write, 10000000, 1000)
+ measure(file_read, 1000000, 10000)
+ measure(file_write, 1000000, 10000)
diff --git a/lib/dulwich-0.9.1/COPYING b/lib/dulwich-0.9.1/COPYING
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/lib/dulwich-0.9.1/MANIFEST.in b/lib/dulwich-0.9.1/MANIFEST.in
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/MANIFEST.in
@@ -0,0 +1,7 @@
+include NEWS
+include README
+include Makefile
+include COPYING
+recursive-include docs conf.py *.txt Makefile make.bat
+recursive-include examples *.py
+graft dulwich/tests/data
diff --git a/lib/dulwich-0.9.1/Makefile b/lib/dulwich-0.9.1/Makefile
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/Makefile
@@ -0,0 +1,49 @@
+PYTHON = python
+SETUP = $(PYTHON) setup.py
+PYDOCTOR ?= pydoctor
+ifeq ($(shell $(PYTHON) -c "import sys; print sys.version_info >= (2,
7)"),True)
+TESTRUNNER ?= unittest
+else
+TESTRUNNER ?= unittest2.__main__
+endif
+RUNTEST = PYTHONPATH=.:$(PYTHONPATH) $(PYTHON) -m $(TESTRUNNER)
+
+DESTDIR=/
+
+all: build
+
+doc:: pydoctor
+
+pydoctor::
+ $(PYDOCTOR) --make-html -c dulwich.cfg
+
+build::
+ $(SETUP) build
+ $(SETUP) build_ext -i
+
+install::
+ $(SETUP) install --root="$(DESTDIR)"
+
+check:: build
+ $(RUNTEST) dulwich.tests.test_suite
+
+check-tutorial:: build
+ $(RUNTEST) dulwich.tests.tutorial_test_suite
+
+check-nocompat:: build
+ $(RUNTEST) dulwich.tests.nocompat_test_suite
+
+check-compat:: build
+ $(RUNTEST) dulwich.tests.compat_test_suite
+
+check-pypy:: clean
+ $(MAKE) check-noextensions PYTHON=pypy
+
+check-noextensions:: clean
+ $(RUNTEST) dulwich.tests.test_suite
+
+check-all: check check-pypy check-noextensions
+
+clean::
+ $(SETUP) clean --all
+ rm -f dulwich/*.so
diff --git a/lib/dulwich-0.9.1/NEWS b/lib/dulwich-0.9.1/NEWS
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/NEWS
@@ -0,0 +1,871 @@
+0.9.1 2013-09-22
+
+ BUG FIXES
+
+ * Support lookups of 40-character refs in BaseRepo.__getitem__. (Chow Loong
Jin, Jelmer Vernooij)
+
+ * Fix fetching packs with side-band-64k capability disabled. (David Keijser,
Jelmer Vernooij)
+
+ * Several fixes in send-pack protocol behaviour - handling of empty pack
files and deletes.
+ (milki, #1063087)
+
+ * Fix capability negotiation when fetching packs over HTTP.
+ (#1072461, William Grant)
+
+ * Enforce determine_wants returning an empty list rather than None. (Fabien
Boucher, Jelmer Vernooij)
+
+ * In the server, support pushes just removing refs. (Fabien Boucher, Jelmer
Vernooij)
+
+ IMPROVEMENTS
+
+ * Support passing a single revision to BaseRepo.get_walker() rather than a
list of revisions.
+ (Alberto Ruiz)
+
+ * Add `Repo.get_description` method. (Jelmer Vernooij)
+
+ * Support thin packs in Pack.iterobjects() and Pack.get_raw().
+ (William Grant)
+
+ * Add `MemoryObjectStore.add_pack` and `MemoryObjectStore.add_thin_pack`
methods.
+ (David Bennett)
+
+ * Add paramiko-based SSH vendor. (Aaron O'Mullan)
+
+ * Support running 'dulwich.server' and 'dulwich.web' using 'python -m'.
+ (Jelmer Vernooij)
+
+ * Add ObjectStore.close(). (Jelmer Vernooij)
+
+ * Raise appropriate NotImplementedError when encountering dumb HTTP servers.
+ (Jelmer Vernooij)
+
+ API CHANGES
+
+ * SSHVendor.connect_ssh has been renamed to SSHVendor.run_command.
+ (Jelmer Vernooij)
+
+ * ObjectStore.add_pack() now returns a 3-tuple. The last element will be an
+ abort() method that can be used to cancel the pack operation.
+ (Jelmer Vernooij)
+
+0.9.0 2013-05-31
+
+ BUG FIXES
+
+ * Push efficiency - report missing objects only. (#562676, Artem Tikhomirov)
+
+ * Use indentation consistent with C Git in config files.
+ (#1031356, Curt Moore, Jelmer Vernooij)
+
+ * Recognize and skip binary files in diff function.
+ (Takeshi Kanemoto)
+
+ * Fix handling of relative paths in dulwich.client.get_transport_and_path.
+ (Brian Visel, #1169368)
+
+ * Preserve ordering of entries in configuration.
+ (Benjamin Pollack)
+
+ * Support ~ expansion in SSH client paths. (milki, #1083439)
+
+ * Support relative paths in alternate paths.
+ (milki, Michel Lespinasse, #1175007)
+
+ * Log all error messages from wsgiref server to the logging module. This
+ makes the test suit quiet again. (Gary van der Merwe)
+
+ * Support passing None for empty tree in changes_from_tree.
+ (Kevin Watters)
+
+ * Support fetching empty repository in client. (milki, #1060462)
+
+ IMPROVEMENTS:
+
+ * Add optional honor_filemode flag to build_index_from_tree.
+ (Mark Mikofski)
+
+ * Support core/filemode setting when building trees. (Jelmer Vernooij)
+
+ * Add chapter on tags in tutorial. (Ryan Faulkner)
+
+ FEATURES
+
+ * Add support for mergetags. (milki, #963525)
+
+ * Add support for posix shell hooks. (milki)
+
+0.8.7 2012-11-27
+
+ BUG FIXES
+
+ * Fix use of alternates in ``DiskObjectStore``.{__contains__,__iter__}.
+ (Dmitriy)
+
+ * Fix compatibility with Python 2.4. (David Carr)
+
+0.8.6 2012-11-09
+
+ API CHANGES
+
+ * dulwich.__init__ no longer imports client, protocol, repo and
+ server modules. (Jelmer Vernooij)
+
+ FEATURES
+
+ * ConfigDict now behaves more like a dictionary.
+ (Adam 'Cezar' Jenkins, issue #58)
+
+ * HTTPGitApplication now takes an optional
+ `fallback_app` argument. (Jonas Haag, issue #67)
+
+ * Support for large pack index files. (Jameson Nash)
+
+ TESTING
+
+ * Make index entry tests a little bit less strict, to cope with
+ slightly different behaviour on various platforms.
+ (Jelmer Vernooij)
+
+ * ``setup.py test`` (available when setuptools is installed) now
+ runs all tests, not just the basic unit tests.
+ (Jelmer Vernooij)
+
+ BUG FIXES
+
+ * Commit._deserialize now actually deserializes the current state rather than
+ the previous one. (Yifan Zhang, issue #59)
+
+ * Handle None elements in lists of TreeChange objects. (Alex Holmes)
+
+ * Support cloning repositories without HEAD set.
+ (D-Key, Jelmer Vernooij, issue #69)
+
+ * Support ``MemoryRepo.get_config``. (Jelmer Vernooij)
+
+ * In ``get_transport_and_path``, pass extra keyword arguments on to
+ HttpGitClient. (Jelmer Vernooij)
+
+0.8.5 2012-03-29
+
+ BUG FIXES
+
+ * Avoid use of 'with' in dulwich.index. (Jelmer Vernooij)
+
+ * Be a little bit strict about OS behaviour in index tests.
+ Should fix the tests on Debian GNU/kFreeBSD. (Jelmer Vernooij)
+
+0.8.4 2012-03-28
+
+ BUG FIXES
+
+ * Options on the same line as sections in config files are now supported.
+ (Jelmer Vernooij, #920553)
+
+ * Only negotiate capabilities that are also supported by the server.
+ (Rod Cloutier, Risto Kankkunen)
+
+ * Fix parsing of invalid timezone offsets with two minus signs.
+ (Jason R. Coombs, #697828)
+
+ * Reset environment variables during tests, to avoid
+ test isolation leaks reading ~/.gitconfig. (Risto Kankkunen)
+
+ TESTS
+
+ * $HOME is now explicitly specified for tests that use it to read
+ ``~/.gitconfig``, to prevent test isolation issues.
+ (Jelmer Vernooij, #920330)
+
+ FEATURES
+
+ * Additional arguments to get_transport_and_path are now passed
+ on to the constructor of the transport. (Sam Vilain)
+
+ * The WSGI server now transparently handles when a git client submits data
+ using Content-Encoding: gzip.
+ (David Blewett, Jelmer Vernooij)
+
+ * Add dulwich.index.build_index_from_tree(). (milki)
+
+0.8.3 2012-01-21
+
+ FEATURES
+
+ * The config parser now supports the git-config file format as
+ described in git-config(1) and can write git config files.
+ (Jelmer Vernooij, #531092, #768687)
+
+ * ``Repo.do_commit`` will now use the user identity from
+ .git/config or ~/.gitconfig if none was explicitly specified.
+ (Jelmer Vernooij)
+
+ BUG FIXES
+
+ * Allow ``determine_wants`` methods to include the zero sha in their
+ return value. (Jelmer Vernooij)
+
+0.8.2 2011-12-18
+
+ BUG FIXES
+
+ * Cope with different zlib buffer sizes in sha1 file parser.
+ (Jelmer Vernooij)
+
+ * Fix get_transport_and_path for HTTP/HTTPS URLs.
+ (Bruno Renié)
+
+ * Avoid calling free_objects() on NULL in error cases. (Chris Eberle)
+
+ * Fix use --bare argument to 'dulwich init'. (Chris Eberle)
+
+ * Properly abort connections when the determine_wants function
+ raises an exception. (Jelmer Vernooij, #856769)
+
+ * Tweak xcodebuild hack to deal with more error output.
+ (Jelmer Vernooij, #903840)
+
+ FEATURES
+
+ * Add support for retrieving tarballs from remote servers.
+ (Jelmer Vernooij, #379087)
+
+ * New method ``update_server_info`` which generates data
+ for dumb server access. (Jelmer Vernooij, #731235)
+
+0.8.1 2011-10-31
+
+ FEATURES
+
+ * Repo.do_commit has a new argument 'ref'.
+
+ * Repo.do_commit has a new argument 'merge_heads'. (Jelmer Vernooij)
+
+ * New ``Repo.get_walker`` method. (Jelmer Vernooij)
+
+ * New ``Repo.clone`` method. (Jelmer Vernooij, #725369)
+
+ * ``GitClient.send_pack`` now supports the 'side-band-64k' capability.
+ (Jelmer Vernooij)
+
+ * ``HttpGitClient`` which supports the smart server protocol over
+ HTTP. "dumb" access is not yet supported. (Jelmer Vernooij, #373688)
+
+ * Add basic support for alternates. (Jelmer Vernooij, #810429)
+
+ CHANGES
+
+ * unittest2 or python >= 2.7 is now required for the testsuite.
+ testtools is no longer supported. (Jelmer Vernooij, #830713)
+
+ BUG FIXES
+
+ * Fix compilation with older versions of MSVC. (Martin gz)
+
+ * Special case 'refs/stash' as a valid ref. (Jelmer Vernooij, #695577)
+
+ * Smart protocol clients can now change refs even if they are
+ not uploading new data. (Jelmer Vernooij, #855993)
+
+ * Don't compile C extensions when running in pypy.
+ (Ronny Pfannschmidt, #881546)
+
+ * Use different name for strnlen replacement function to avoid clashing
+ with system strnlen. (Jelmer Vernooij, #880362)
+
+ API CHANGES
+
+ * ``Repo.revision_history`` is now deprecated in favor of
``Repo.get_walker``.
+ (Jelmer Vernooij)
+
+0.8.0 2011-08-07
+
+ FEATURES
+
+ * New DeltaChainIterator abstract class for quickly iterating all objects in
+ a pack, with implementations for pack indexing and inflation.
+ (Dave Borowitz)
+
+ * New walk module with a Walker class for customizable commit walking.
+ (Dave Borowitz)
+
+ * New tree_changes_for_merge function in diff_tree. (Dave Borowitz)
+
+ * Easy rename detection in RenameDetector even without find_copies_harder.
+ (Dave Borowitz)
+
+ BUG FIXES
+
+ * Avoid storing all objects in memory when writing pack.
+ (Jelmer Vernooij, #813268)
+
+ * Support IPv6 for git:// connections. (Jelmer Vernooij, #801543)
+
+ * Improve performance of Repo.revision_history(). (Timo Schmid, #535118)
+
+ * Fix use of SubprocessWrapper on Windows. (Paulo Madeira, #670035)
+
+ * Fix compilation on newer versions of Mac OS X (Lion and up). (Ryan McKern,
#794543)
+
+ * Prevent raising ValueError for correct refs in RefContainer.__delitem__.
+
+ * Correctly return a tuple from MemoryObjectStore.get_raw. (Dave Borowitz)
+
+ * Fix a bug in reading the pack checksum when there are fewer than 20 bytes
+ left in the buffer. (Dave Borowitz)
+
+ * Support ~ in git:// URL paths. (Jelmer Vernooij, #813555)
+
+ * Make ShaFile.__eq__ work when other is not a ShaFile. (Dave Borowitz)
+
+ * ObjectStore.get_graph_walker() now no longer yields the same
+ revision more than once. This has a significant improvement for
+ performance when wide revision graphs are involved.
+ (Jelmer Vernooij, #818168)
+
+ * Teach ReceivePackHandler how to read empty packs. (Dave Borowitz)
+
+ * Don't send a pack with duplicates of the same object. (Dave Borowitz)
+
+ * Teach the server how to serve a clone of an empty repo. (Dave Borowitz)
+
+ * Correctly advertise capabilities during receive-pack. (Dave Borowitz)
+
+ * Fix add/add and add/rename conflicts in tree_changes_for_merge.
+ (Dave Borowitz)
+
+ * Use correct MIME types in web server. (Dave Borowitz)
+
+ API CHANGES
+
+ * write_pack no longer takes the num_objects argument and requires an object
+ to be passed in that is iterable (rather than an iterator) and that
+ provides __len__. (Jelmer Vernooij)
+
+ * write_pack_data has been renamed to write_pack_objects and no longer takes
a
+ num_objects argument. (Jelmer Vernooij)
+
+ * take_msb_bytes, read_zlib_chunks, unpack_objects, and
+ PackStreamReader.read_objects now take an additional argument indicating a
+ crc32 to compute. (Dave Borowitz)
+
+ * PackObjectIterator was removed; its functionality is still exposed by
+ PackData.iterobjects. (Dave Borowitz)
+
+ * Add a sha arg to write_pack_object to incrementally compute a SHA.
+ (Dave Borowitz)
+
+ * Include offset in PackStreamReader results. (Dave Borowitz)
+
+ * Move PackStreamReader from server to pack. (Dave Borowitz)
+
+ * Extract a check_length_and_checksum, compute_file_sha, and
+ pack_object_header pack helper functions. (Dave Borowitz)
+
+ * Extract a compute_file_sha function. (Dave Borowitz)
+
+ * Remove move_in_thin_pack as a separate method; add_thin_pack now completes
+ the thin pack and moves it in in one step. Remove ThinPackData as well.
+ (Dave Borowitz)
+
+ * Custom buffer size in read_zlib_chunks. (Dave Borowitz)
+
+ * New UnpackedObject data class that replaces ad-hoc tuples in the return
+ value of unpack_object and various DeltaChainIterator methods.
+ (Dave Borowitz)
+
+ * Add a lookup_path convenience method to Tree. (Dave Borowitz)
+
+ * Optionally create RenameDetectors without passing in tree SHAs.
+ (Dave Borowitz)
+
+ * Optionally include unchanged entries in RenameDetectors. (Dave Borowitz)
+
+ * Optionally pass a RenameDetector to tree_changes. (Dave Borowitz)
+
+ * Optionally pass a request object through to server handlers. (Dave
Borowitz)
+
+ TEST CHANGES
+
+ * If setuptools is installed, "python setup.py test" will now run the
testsuite.
+ (Jelmer Vernooij)
+
+ * Add a new build_pack test utility for building packs from a simple spec.
+ (Dave Borowitz)
+
+ * Add a new build_commit_graph test utility for building commits from a
+ simple spec. (Dave Borowitz)
+
+0.7.1 2011-04-12
+
+ BUG FIXES
+
+ * Fix double decref in _diff_tree.c. (Ted Horst, #715528)
+
+ * Fix the build on Windows. (Pascal Quantin)
+
+ * Fix get_transport_and_path compatibility with pre-2.6.5 versions of Python.
+ (Max Bowsher, #707438)
+
+ * BaseObjectStore.determine_wants_all no longer breaks on zero SHAs.
+ (Jelmer Vernooij)
+
+ * write_tree_diff() now supports submodules.
+ (Jelmer Vernooij)
+
+ * Fix compilation for XCode 4 and older versions of distutils.sysconfig.
+ (Daniele Sluijters)
+
+ IMPROVEMENTS
+
+ * Sphinxified documentation. (Lukasz Balcerzak)
+
+ * Add Pack.keep.(Marc Brinkmann)
+
+ API CHANGES
+
+ * The order of the parameters to Tree.add(name, mode, sha) has changed, and
+ is now consistent with the rest of Dulwich. Existing code will still
+ work but print a DeprecationWarning. (Jelmer Vernooij, #663550)
+
+ * Tree.entries() is now deprecated in favour of Tree.items() and
+ Tree.iteritems(). (Jelmer Vernooij)
+
+0.7.0 2011-01-21
+
+ FEATURES
+
+ * New `dulwich.diff_tree` module for simple content-based rename detection.
+ (Dave Borowitz)
+
+ * Add Tree.items(). (Jelmer Vernooij)
+
+ * Add eof() and unread_pkt_line() methods to Protocol. (Dave Borowitz)
+
+ * Add write_tree_diff(). (Jelmer Vernooij)
+
+ * Add `serve_command` function for git server commands as executables.
+ (Jelmer Vernooij)
+
+ * dulwich.client.get_transport_and_path now supports rsync-style repository
URLs.
+ (Dave Borowitz, #568493)
+
+ BUG FIXES
+
+ * Correct short-circuiting operation for no-op fetches in the server.
+ (Dave Borowitz)
+
+ * Support parsing git mbox patches without a version tail, as generated by
+ Mercurial. (Jelmer Vernooij)
+
+ * Fix dul-receive-pack and dul-upload-pack. (Jelmer Vernooij)
+
+ * Zero-padded file modes in Tree objects no longer trigger an exception but
+ the check code warns about them. (Augie Fackler, #581064)
+
+ * Repo.init() now honors the mkdir flag. (#671159)
+
+ * The ref format is now checked when setting a ref rather than when reading
it back.
+ (Dave Borowitz, #653527)
+
+ * Make sure pack files are closed correctly. (Tay Ray Chuan)
+
+ DOCUMENTATION
+
+ * Run the tutorial inside the test suite. (Jelmer Vernooij)
+
+ * Reorganized and updated the tutorial. (Jelmer Vernooij, Dave Borowitz,
#610550,
+ #610540)
+
+
+0.6.2 2010-10-16
+
+ BUG FIXES
+
+ * HTTP server correctly handles empty CONTENT_LENGTH. (Dave Borowitz)
+
+ * Don't error when creating GitFiles with the default mode. (Dave Borowitz)
+
+ * ThinPackData.from_file now works with resolve_ext_ref callback.
+ (Dave Borowitz)
+
+ * Provide strnlen() on mingw32 which doesn't have it. (Hans Kolek)
+
+ * Set bare=true in the configuratin for bare repositories. (Dirk Neumann)
+
+ FEATURES
+
+ * Use slots for core objects to save up on memory. (Jelmer Vernooij)
+
+ * Web server supports streaming progress/pack output. (Dave Borowitz)
+
+ * New public function dulwich.pack.write_pack_header. (Dave Borowitz)
+
+ * Distinguish between missing files and read errors in HTTP server.
+ (Dave Borowitz)
+
+ * Initial work on support for fastimport using python-fastimport.
+ (Jelmer Vernooij)
+
+ * New dulwich.pack.MemoryPackIndex class. (Jelmer Vernooij)
+
+ * Delegate SHA peeling to the object store. (Dave Borowitz)
+
+ TESTS
+
+ * Use GitFile when modifying packed-refs in tests. (Dave Borowitz)
+
+ * New tests in test_web with better coverage and fewer ad-hoc mocks.
+ (Dave Borowitz)
+
+ * Standardize quote delimiters in test_protocol. (Dave Borowitz)
+
+ * Fix use when testtools is installed. (Jelmer Vernooij)
+
+ * Add trivial test for write_pack_header. (Jelmer Vernooij)
+
+ * Refactor some of dulwich.tests.compat.server_utils. (Dave Borowitz)
+
+ * Allow overwriting id property of objects in test utils. (Dave Borowitz)
+
+ * Use real in-memory objects rather than stubs for server tests.
+ (Dave Borowitz)
+
+ * Clean up MissingObjectFinder. (Dave Borowitz)
+
+ API CHANGES
+
+ * ObjectStore.iter_tree_contents now walks contents in depth-first, sorted
+ order. (Dave Borowitz)
+
+ * ObjectStore.iter_tree_contents can optionally yield tree objects as well.
+ (Dave Borowitz).
+
+ * Add side-band-64k support to ReceivePackHandler. (Dave Borowitz)
+
+ * Change server capabilities methods to classmethods. (Dave Borowitz)
+
+ * Tweak server handler injection. (Dave Borowitz)
+
+ * PackIndex1 and PackIndex2 now subclass FilePackIndex, which is
+ itself a subclass of PackIndex. (Jelmer Vernooij)
+
+ DOCUMENTATION
+
+ * Add docstrings for various functions in dulwich.objects. (Jelmer Vernooij)
+
+ * Clean up docstrings in dulwich.protocol. (Dave Borowitz)
+
+ * Explicitly specify allowed protocol commands to
+ ProtocolGraphWalker.read_proto_line. (Dave Borowitz)
+
+ * Add utility functions to DictRefsContainer. (Dave Borowitz)
+
+
+0.6.1 2010-07-22
+
+ BUG FIXES
+
+ * Fix memory leak in C implementation of sorted_tree_items. (Dave Borowitz)
+
+ * Use correct path separators for named repo files. (Dave Borowitz)
+
+ * python > 2.7 and testtools-based test runners will now also pick up skipped
+ tests correctly. (Jelmer Vernooij)
+
+ FEATURES
+
+ * Move named file initilization to BaseRepo. (Dave Borowitz)
+
+ * Add logging utilities and git/HTTP server logging. (Dave Borowitz)
+
+ * The GitClient interface has been cleaned up and instances are now reusable.
+ (Augie Fackler)
+
+ * Allow overriding paths to executables in GitSSHClient.
+ (Ross Light, Jelmer Vernooij, #585204)
+
+ * Add PackBasedObjectStore.pack_loose_objects(). (Jelmer Vernooij)
+
+ TESTS
+
+ * Add tests for sorted_tree_items and C implementation. (Dave Borowitz)
+
+ * Add a MemoryRepo that stores everything in memory. (Dave Borowitz)
+
+ * Quiet logging output from web tests. (Dave Borowitz)
+
+ * More flexible version checking for compat tests. (Dave Borowitz)
+
+ * Compat tests for servers with and without side-band-64k. (Dave Borowitz)
+
+ CLEANUP
+
+ * Clean up file headers. (Dave Borowitz)
+
+ TESTS
+
+ * Use GitFile when modifying packed-refs in tests. (Dave Borowitz)
+
+ API CHANGES
+
+ * dulwich.pack.write_pack_index_v{1,2} now take a file-like object
+ rather than a filename. (Jelmer Vernooij)
+
+ * Make dul-daemon/dul-web trivial wrappers around server functionality.
+ (Dave Borowitz)
+
+ * Move reference WSGI handler to web.py. (Dave Borowitz)
+
+ * Factor out _report_status in ReceivePackHandler. (Dave Borowitz)
+
+ * Factor out a function to convert a line to a pkt-line. (Dave Borowitz)
+
+
+0.6.0 2010-05-22
+
+note: This list is most likely incomplete for 0.6.0.
+
+ BUG FIXES
+
+ * Fix ReceivePackHandler to disallow removing refs without delete-refs.
+ (Dave Borowitz)
+
+ * Deal with capabilities required by the client, even if they
+ can not be disabled in the server. (Dave Borowitz)
+
+ * Fix trailing newlines in generated patch files.
+ (Jelmer Vernooij)
+
+ * Implement RefsContainer.__contains__. (Jelmer Vernooij)
+
+ * Cope with \r in ref files on Windows. (
+ http://github.com/jelmer/dulwich/issues/#issue/13, Jelmer Vernooij)
+
+ * Fix GitFile breakage on Windows. (Anatoly Techtonik, #557585)
+
+ * Support packed ref deletion with no peeled refs. (Augie Fackler)
+
+ * Fix send pack when there is nothing to fetch. (Augie Fackler)
+
+ * Fix fetch if no progress function is specified. (Augie Fackler)
+
+ * Allow double-staging of files that are deleted in the index.
+ (Dave Borowitz)
+
+ * Fix RefsContainer.add_if_new to support dangling symrefs.
+ (Dave Borowitz)
+
+ * Non-existant index files in non-bare repositories are now treated as
+ empty. (Dave Borowitz)
+
+ * Always update ShaFile.id when the contents of the object get changed.
+ (Jelmer Vernooij)
+
+ * Various Python2.4-compatibility fixes. (Dave Borowitz)
+
+ * Fix thin pack handling. (Dave Borowitz)
+
+ FEATURES
+
+ * Add include-tag capability to server. (Dave Borowitz)
+
+ * New dulwich.fastexport module that can generate fastexport
+ streams. (Jelmer Vernooij)
+
+ * Implemented BaseRepo.__contains__. (Jelmer Vernooij)
+
+ * Add __setitem__ to DictRefsContainer. (Dave Borowitz)
+
+ * Overall improvements checking Git objects. (Dave Borowitz)
+
+ * Packs are now verified while they are received. (Dave Borowitz)
+
+ TESTS
+
+ * Add framework for testing compatibility with C Git. (Dave Borowitz)
+
+ * Add various tests for the use of non-bare repositories. (Dave Borowitz)
+
+ * Cope with diffstat not being available on all platforms.
+ (Tay Ray Chuan, Jelmer Vernooij)
+
+ * Add make_object and make_commit convenience functions to test utils.
+ (Dave Borowitz)
+
+ API BREAKAGES
+
+ * The 'committer' and 'message' arguments to Repo.do_commit() have
+ been swapped. 'committer' is now optional. (Jelmer Vernooij)
+
+ * Repo.get_blob, Repo.commit, Repo.tag and Repo.tree are now deprecated.
+ (Jelmer Vernooij)
+
+ * RefsContainer.set_ref() was renamed to RefsContainer.set_symbolic_ref(),
+ for clarity. (Jelmer Vernooij)
+
+ API CHANGES
+
+ * The primary serialization APIs in dulwich.objects now work
+ with chunks of strings rather than with full-text strings.
+ (Jelmer Vernooij)
+
+0.5.02010-03-03
+
+ BUG FIXES
+
+ * Support custom fields in commits (readonly). (Jelmer Vernooij)
+
+ * Improved ref handling. (Dave Borowitz)
+
+ * Rework server protocol to be smarter and interoperate with cgit client.
+ (Dave Borowitz)
+
+ * Add a GitFile class that uses the same locking protocol for writes as
+ cgit. (Dave Borowitz)
+
+ * Cope with forward slashes correctly in the index on Windows.
+ (Jelmer Vernooij, #526793)
+
+ FEATURES
+
+ * --pure option to setup.py to allow building/installing without the C
+ extensions. (Hal Wine, Anatoly Techtonik, Jelmer Vernooij, #434326)
+
+ * Implement Repo.get_config(). (Jelmer Vernooij, Augie Fackler)
+
+ * HTTP dumb and smart server. (Dave Borowitz)
+
+ * Add abstract baseclass for Repo that does not require file system
+ operations. (Dave Borowitz)
+
+0.4.1 2010-01-03
+
+ FEATURES
+
+ * Add ObjectStore.iter_tree_contents(). (Jelmer Vernooij)
+
+ * Add Index.changes_from_tree(). (Jelmer Vernooij)
+
+ * Add ObjectStore.tree_changes(). (Jelmer Vernooij)
+
+ * Add functionality for writing patches in dulwich.patch.
+ (Jelmer Vernooij)
+
+0.4.0 2009-10-07
+
+ DOCUMENTATION
+
+ * Added tutorial.
+
+ API CHANGES
+
+ * dulwich.object_store.tree_lookup_path will now return the mode and
+ sha of the object found rather than the object itself.
+
+ BUG FIXES
+
+ * Use binascii.hexlify / binascii.unhexlify for better performance.
+
+ * Cope with extra unknown data in index files by ignoring it (for now).
+
+ * Add proper error message when server unexpectedly hangs up. (#415843)
+
+ * Correctly write opcode for equal in create_delta.
+
+0.3.3 2009-07-23
+
+ FEATURES
+
+ * Implement ShaFile.__hash__().
+
+ * Implement Tree.__len__()
+
+ BUG FIXES
+
+ * Check for 'objects' and 'refs' directories
+ when looking for a Git repository. (#380818)
+
+0.3.2 2009-05-20
+
+ BUG FIXES
+
+ * Support the encoding field in Commits.
+
+ * Some Windows compatibility fixes.
+
+ * Fixed several issues in commit support.
+
+ FEATURES
+
+ * Basic support for handling submodules.
+
+0.3.1 2009-05-13
+
+ FEATURES
+
+ * Implemented Repo.__getitem__, Repo.__setitem__ and Repo.__delitem__ to
+ access content.
+
+ API CHANGES
+
+ * Removed Repo.set_ref, Repo.remove_ref, Repo.tags, Repo.get_refs and
+ Repo.heads in favor of Repo.refs, a dictionary-like object for accessing
+ refs.
+
+ BUG FIXES
+
+ * Removed import of 'sha' module in objects.py, which was causing
+ deprecation warnings on Python 2.6.
+
+0.3.0 2009-05-10
+
+ FEATURES
+
+ * A new function 'commit_tree' has been added that can commit a tree
+ based on an index.
+
+ BUG FIXES
+
+ * The memory usage when generating indexes has been significantly reduced.
+
+ * A memory leak in the C implementation of parse_tree has been fixed.
+
+ * The send-pack smart server command now works. (Thanks Scott Chacon)
+
+ * The handling of short timestamps (less than 10 digits) has been fixed.
+
+ * The handling of timezones has been fixed.
+
+0.2.1 2009-04-30
+
+ BUG FIXES
+
+ * Fix compatibility with Python2.4.
+
+0.2.0 2009-04-30
+
+ FEATURES
+
+ * Support for activity reporting in smart protocol client.
+
+ * Optional C extensions for better performance in a couple of
+ places that are performance-critical.
+
+0.1.1 2009-03-13
+
+ BUG FIXES
+
+ * Fixed regression in Repo.find_missing_objects()
+
+ * Don't fetch ^{} objects from remote hosts, as requesting them
+ causes a hangup.
+
+ * Always write pack to disk completely before calculating checksum.
+
+ FEATURES
+
+ * Allow disabling thin packs when talking to remote hosts.
+
+0.1.0 2009-01-24
+
+ * Initial release.
diff --git a/lib/dulwich-0.9.1/PKG-INFO b/lib/dulwich-0.9.1/PKG-INFO
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/PKG-INFO
@@ -0,0 +1,18 @@
+Metadata-Version: 1.0
+Name: dulwich
+Version: 0.9.1
+Summary: Python Git Library
+Home-page: http://samba.org/~jelmer/dulwich
+Author: Jelmer Vernooij
+Author-email: [email protected]
+License: GPLv2 or later
+Description:
+ Simple Python implementation of the Git file formats and
+ protocols. Dulwich is the place where Mr. and Mrs. Git live
+ in one of the Monty Python sketches.
+
+ All functionality is available in pure Python, but (optional)
+ C extensions are also available for better performance.
+
+Keywords: git
+Platform: UNKNOWN
diff --git a/lib/dulwich-0.9.1/README b/lib/dulwich-0.9.1/README
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/README
@@ -0,0 +1,21 @@
+This is the Dulwich project.
+
+It aims to give an interface to git repos (both local and remote) that doesn't
+call out to git directly but instead uses pure Python.
+
+The project is named after the part of London that Mr. and Mrs. Git live in
+in the particular Monty Python sketch. It is based on the Python-Git module
+that James Westby <[email protected]> released in 2007 and now
+maintained by Jelmer Vernooij et al.
+
+Please file bugs in the Dulwich project on Launchpad:
+
+https://bugs.launchpad.net/dulwich/+filebug
+
+The dulwich documentation can be found in doc/ and on the web:
+
+http://www.samba.org/~jelmer/dulwich/docs/
+
+The API reference can be generated using pydoctor, by running "make pydoctor",
or on the web:
+
+http://www.samba.org/~jelmer/dulwich/apidocs
diff --git a/lib/dulwich-0.9.1/bin/dul-daemon b/lib/dulwich-0.9.1/bin/dul-daemon
new file mode 100755
--- /dev/null
+++ b/lib/dulwich-0.9.1/bin/dul-daemon
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+# dul-daemon - Simple git-daemon-like server
+# Copyright (C) 2008 John Carr <[email protected]>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# or (at your option) a later version of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+from dulwich.server import main
+
+if __name__ == '__main__':
+ main()
diff --git a/lib/dulwich-0.9.1/bin/dul-receive-pack
b/lib/dulwich-0.9.1/bin/dul-receive-pack
new file mode 100755
--- /dev/null
+++ b/lib/dulwich-0.9.1/bin/dul-receive-pack
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# dul-receive-pack - git-receive-pack in python
+# Copyright (C) 2008 John Carr <[email protected]>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# or (at your option) a later version of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+from dulwich.server import serve_command, ReceivePackHandler
+import os
+import sys
+
+if len(sys.argv) < 2:
+ print >>sys.stderr, "usage: %s <git-dir>" % os.path.basename(sys.argv[0])
+ sys.exit(1)
+
+sys.exit(serve_command(ReceivePackHandler))
diff --git a/lib/dulwich-0.9.1/bin/dul-upload-pack
b/lib/dulwich-0.9.1/bin/dul-upload-pack
new file mode 100755
--- /dev/null
+++ b/lib/dulwich-0.9.1/bin/dul-upload-pack
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+# dul-upload-pack - git-upload-pack in python
+# Copyright (C) 2008 John Carr <[email protected]>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# or (at your option) a later version of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+from dulwich.server import serve_command, UploadPackHandler
+import os
+import sys
+
+if len(sys.argv) < 2:
+ print >>sys.stderr, "usage: %s <git-dir>" % os.path.basename(sys.argv[0])
+ sys.exit(1)
+
+sys.exit(serve_command(UploadPackHandler))
diff --git a/lib/dulwich-0.9.1/bin/dul-web b/lib/dulwich-0.9.1/bin/dul-web
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/bin/dul-web
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+# dul-web - HTTP-based git server
+# Copyright (C) 2010 Google, Inc. <[email protected]>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# or (at your option) a later version of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+from dulwich.web import main
+
+if __name__ == '__main__':
+ main()
diff --git a/lib/dulwich-0.9.1/bin/dulwich b/lib/dulwich-0.9.1/bin/dulwich
new file mode 100755
--- /dev/null
+++ b/lib/dulwich-0.9.1/bin/dulwich
@@ -0,0 +1,232 @@
+#!/usr/bin/python -u
+#
+# dulwich - Simple command-line interface to Dulwich
+# Copyright (C) 2008-2011 Jelmer Vernooij <[email protected]>
+# vim: expandtab
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 2
+# or (at your option) a later version of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+"""Simple command-line interface to Dulwich>
+
+This is a very simple command-line wrapper for Dulwich. It is by
+no means intended to be a full-blown Git command-line interface but just
+a way to test Dulwich.
+"""
+
+import os
+import sys
+from getopt import getopt
+
+from dulwich.client import get_transport_and_path
+from dulwich.errors import ApplyDeltaError
+from dulwich.index import Index
+from dulwich.pack import Pack, sha_to_hex
+from dulwich.patch import write_tree_diff
+from dulwich.repo import Repo
+from dulwich.server import update_server_info
+
+
+def cmd_archive(args):
+ opts, args = getopt(args, "", [])
+ client, path = get_transport_and_path(args.pop(0))
+ committish = args.pop(0)
+ client.archive(path, committish, sys.stdout.write, sys.stderr.write)
+
+
+def cmd_fetch_pack(args):
+ opts, args = getopt(args, "", ["all"])
+ opts = dict(opts)
+ client, path = get_transport_and_path(args.pop(0))
+ r = Repo(".")
+ if "--all" in opts:
+ determine_wants = r.object_store.determine_wants_all
+ else:
+ determine_wants = lambda x: [y for y in args if not y in
r.object_store]
+ client.fetch(path, r, determine_wants)
+
+
+def cmd_fetch(args):
+ opts, args = getopt(args, "", [])
+ opts = dict(opts)
+ client, path = get_transport_and_path(args.pop(0))
+ r = Repo(".")
+ if "--all" in opts:
+ determine_wants = r.object_store.determine_wants_all
+ refs = client.fetch(path, r, progress=sys.stdout.write)
+ print "Remote refs:"
+ for item in refs.iteritems():
+ print "%s -> %s" % item
+
+
+def cmd_log(args):
+ opts, args = getopt(args, "", [])
+ if len(args) > 0:
+ path = args.pop(0)
+ else:
+ path = "."
+ r = Repo(path)
+ todo = [r.head()]
+ done = set()
+ while todo:
+ sha = todo.pop()
+ assert isinstance(sha, str)
+ if sha in done:
+ continue
+ done.add(sha)
+ commit = r[sha]
+ print "-" * 50
+ print "commit: %s" % sha
+ if len(commit.parents) > 1:
+ print "merge: %s" % "...".join(commit.parents[1:])
+ print "author: %s" % commit.author
+ print "committer: %s" % commit.committer
+ print ""
+ print commit.message
+ print ""
+ todo.extend([p for p in commit.parents if p not in done])
+
+
+def cmd_diff(args):
+ opts, args = getopt(args, "", [])
+
+ if args == []:
+ print "Usage: dulwich diff COMMITID"
+ sys.exit(1)
+
+ r = Repo(".")
+ commit_id = args[0]
+ commit = r[commit_id]
+ parent_commit = r[commit.parents[0]]
+ write_tree_diff(sys.stdout, r.object_store, parent_commit.tree,
commit.tree)
+
+
+def cmd_dump_pack(args):
+ opts, args = getopt(args, "", [])
+
+ if args == []:
+ print "Usage: dulwich dump-pack FILENAME"
+ sys.exit(1)
+
+ basename, _ = os.path.splitext(args[0])
+ x = Pack(basename)
+ print "Object names checksum: %s" % x.name()
+ print "Checksum: %s" % sha_to_hex(x.get_stored_checksum())
+ if not x.check():
+ print "CHECKSUM DOES NOT MATCH"
+ print "Length: %d" % len(x)
+ for name in x:
+ try:
+ print "\t%s" % x[name]
+ except KeyError, k:
+ print "\t%s: Unable to resolve base %s" % (name, k)
+ except ApplyDeltaError, e:
+ print "\t%s: Unable to apply delta: %r" % (name, e)
+
+
+def cmd_dump_index(args):
+ opts, args = getopt(args, "", [])
+
+ if args == []:
+ print "Usage: dulwich dump-index FILENAME"
+ sys.exit(1)
+
+ filename = args[0]
+ idx = Index(filename)
+
+ for o in idx:
+ print o, idx[o]
+
+
+def cmd_init(args):
+ opts, args = getopt(args, "", ["bare"])
+ opts = dict(opts)
+
+ if args == []:
+ path = os.getcwd()
+ else:
+ path = args[0]
+
+ if not os.path.exists(path):
+ os.mkdir(path)
+
+ if "--bare" in opts:
+ Repo.init_bare(path)
+ else:
+ Repo.init(path)
+
+
+def cmd_clone(args):
+ opts, args = getopt(args, "", [])
+ opts = dict(opts)
+
+ if args == []:
+ print "usage: dulwich clone host:path [PATH]"
+ sys.exit(1)
+ client, host_path = get_transport_and_path(args.pop(0))
+
+ if len(args) > 0:
+ path = args.pop(0)
+ else:
+ path = host_path.split("/")[-1]
+
+ if not os.path.exists(path):
+ os.mkdir(path)
+ r = Repo.init(path)
+ remote_refs = client.fetch(host_path, r,
+ determine_wants=r.object_store.determine_wants_all,
+ progress=sys.stdout.write)
+ r["HEAD"] = remote_refs["HEAD"]
+
+
+def cmd_commit(args):
+ opts, args = getopt(args, "", ["message"])
+ opts = dict(opts)
+ r = Repo(".")
+ committer = "%s <%s>" % (os.getenv("GIT_COMMITTER_NAME"),
+ os.getenv("GIT_COMMITTER_EMAIL"))
+ author = "%s <%s>" % (os.getenv("GIT_AUTHOR_NAME"),
+ os.getenv("GIT_AUTHOR_EMAIL"))
+ r.do_commit(committer=committer, author=author, message=opts["--message"])
+
+
+def cmd_update_server_info(args):
+ r = Repo(".")
+ update_server_info(r)
+
+
+commands = {
+ "commit": cmd_commit,
+ "fetch-pack": cmd_fetch_pack,
+ "fetch": cmd_fetch,
+ "dump-pack": cmd_dump_pack,
+ "dump-index": cmd_dump_index,
+ "init": cmd_init,
+ "log": cmd_log,
+ "clone": cmd_clone,
+ "archive": cmd_archive,
+ "update-server-info": cmd_update_server_info,
+ "diff": cmd_diff,
+ }
+
+if len(sys.argv) < 2:
+ print "Usage: %s <%s> [OPTIONS...]" % (sys.argv[0],
"|".join(commands.keys()))
+ sys.exit(1)
+
+cmd = sys.argv[1]
+if not cmd in commands:
+ print "No such subcommand: %s" % cmd
+ sys.exit(1)
+commands[cmd](sys.argv[2:])
diff --git a/lib/dulwich-0.9.1/dist/dulwich-0.9.1-py2.7-linux-x86_64.egg
b/lib/dulwich-0.9.1/dist/dulwich-0.9.1-py2.7-linux-x86_64.egg
new file mode 100644
index
0000000000000000000000000000000000000000..7768835f0a496224f916bbd51a62fda4b32905e6
GIT binary patch
[cut]
diff --git a/lib/dulwich-0.9.1/dist/dulwich-0.9.1-py2.7.egg
b/lib/dulwich-0.9.1/dist/dulwich-0.9.1-py2.7.egg
new file mode 100644
index
0000000000000000000000000000000000000000..3ce6ca8f51814c27ca6a42c8273298ac70a44348
GIT binary patch
[cut]
diff --git a/lib/dulwich-0.9.1/docs/Makefile b/lib/dulwich-0.9.1/docs/Makefile
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/docs/Makefile
@@ -0,0 +1,96 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+BUILDDIR = build
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes
linkcheck doctest
+
+help:
+ @echo "Please use \`make <target>' where <target> is one of"
+ @echo " html to make standalone HTML files"
+ @echo " pdf to make PDF document"
+ @echo " dirhtml to make HTML files named index.html in directories"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " qthelp to make HTML files and a qthelp project"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or
PAPER=letter"
+ @echo " changes to make an overview of all changed/added/deprecated
items"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " doctest to run all doctests embedded in the documentation
(if enabled)"
+
+clean:
+ -rm -rf $(BUILDDIR)/*
+
+html:
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+pickle:
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
+
+json:
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ @echo
+ @echo "Build finished; now you can run "qcollectiongenerator" with the"
\
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/dulwich.qhcp"
+ @echo "To view the help file:"
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/dulwich.qhc"
+
+latex:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+ @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+ "run these through (pdf)latex."
+
+changes:
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ @echo
+ @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ @echo "Testing of doctests in the sources finished, look at the " \
+ "results in $(BUILDDIR)/doctest/output.txt."
+
+pdf:
+ $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf
+ @echo
+ @echo "Build finished. The PDF files are in $(BUILDDIR)/pdf."
+
diff --git a/lib/dulwich-0.9.1/docs/conf.py b/lib/dulwich-0.9.1/docs/conf.py
new file mode 100644
--- /dev/null
+++ b/lib/dulwich-0.9.1/docs/conf.py
@@ -0,0 +1,215 @@
+# -*- coding: utf-8 -*-
+#
+# dulwich documentation build configuration file, created by
+# sphinx-quickstart on Thu Feb 18 23:18:28 2010.
+#
+# This file is execfile()d with the current directory set to its containing
dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+sys.path.insert(0, os.path.abspath('..'))
+sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__))))
+dulwich = __import__('dulwich')
+
+# -- General configuration
-----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be
extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc']
+try:
+ import rst2pdf
+ if rst2pdf.version >= '0.16':
+ extensions.append('rst2pdf.pdfbuilder')
+except ImportError:
+ print "[NOTE] In order to build PDF you need rst2pdf with version >=0.16"
+
+
+autoclass_content = "both"
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['templates']
+
+# The suffix of source filenames.
+source_suffix = '.txt'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'dulwich'
+copyright = u'2011, Jelmer Vernooij'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '.'.join(map(str, dulwich.__version__[:2]))
+# The full version, including alpha/beta/rc tags.
+release = '.'.join(map(str, dulwich.__version__))
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['build']
+
+# The reST default role (used for this markup: `text`) to use for all
documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output
---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+#html_theme = 'default'
+html_theme = 'nature'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit