Merge lp://staging/~gary/lazr.batchnavigator/license_and_build into lp://staging/~launchpad-pqm/lazr.batchnavigator/trunk

Proposed by Gary Poster
Status: Merged
Approved by: Francis J. Lacoste
Approved revision: 28
Merged at revision: not available
Proposed branch: lp://staging/~gary/lazr.batchnavigator/license_and_build
Merge into: lp://staging/~launchpad-pqm/lazr.batchnavigator/trunk
Diff against target: None lines
To merge this branch: bzr merge lp://staging/~gary/lazr.batchnavigator/license_and_build
Reviewer Review Type Date Requested Status
Francis J. Lacoste (community) Approve
Review via email: mp+4853@code.staging.launchpad.net
To post a comment you must log in.
Revision history for this message
Gary Poster (gary) wrote :

The same changes as for the other lazr packages:

- license specifies v3 of LGPL

- buildout updates

Thanks

Gary

Revision history for this message
Francis J. Lacoste (flacoste) wrote :

On March 24, 2009, Gary Poster wrote:
> Gary Poster has proposed merging
> lp:~gary/lazr.batchnavigator/license_and_build into
> lp:~launchpad-pqm/lazr.batchnavigator/trunk.
>
> Requested reviews:
> LAZR Developers (lazr-developers)
>
> The same changes as for the other lazr packages:
>
> - license specifies v3 of LGPL
>
> - buildout updates
>

  status approved
  review approve

All good.

--
Francis J. Lacoste
<email address hidden>

review: Approve
Revision history for this message
Gary Poster (gary) wrote :

This was a mistaken review request. It simply updates the date, as requested in the review of lp:~gary/lazr.batchnavigator/build-license-changes. Sorry for the noise.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.bzrignore'
2--- .bzrignore 2009-03-03 19:43:53 +0000
3+++ .bzrignore 2009-03-23 16:14:28 +0000
4@@ -3,6 +3,9 @@
5 .installed.cfg
6 develop-eggs
7 parts
8-src/lazr.batchnavigator.egg-info
9+*.egg-info
10 tags
11 TAGS
12+build
13+*.egg
14+dist
15
16=== modified file 'HACKING.txt'
17--- HACKING.txt 2009-03-03 19:43:53 +0000
18+++ HACKING.txt 2009-03-23 16:14:28 +0000
19@@ -1,18 +1,18 @@
20 ..
21 This file is part of lazr.batchnavigator.
22
23- lazr.batchnavigator is free software: you can redistribute it and/or modify it
24- under the terms of the GNU Lesser General Public License as published by
25- the Free Software Foundation, either version 3 of the License, or (at your
26- option) any later version.
27+ lazr.batchnavigator is free software: you can redistribute it and/or
28+ modify it under the terms of the GNU Lesser General Public License as
29+ published by the Free Software Foundation, version 3 of the License.
30
31- lazr.batchnavigator is distributed in the hope that it will be useful, but WITHOUT
32- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
33- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
34+ lazr.batchnavigator is distributed in the hope that it will be useful, but
35+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
36+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
37 License for more details.
38
39 You should have received a copy of the GNU Lesser General Public License
40- along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
41+ along with lazr.batchnavigator. If not, see
42+ <http://www.gnu.org/licenses/>.
43
44 This project uses zc.buildout for development.
45
46
47=== added file 'MANIFEST.in'
48--- MANIFEST.in 1970-01-01 00:00:00 +0000
49+++ MANIFEST.in 2009-03-24 15:07:42 +0000
50@@ -0,0 +1,2 @@
51+exclude MANIFEST.in buildout.cfg bootstrap.py .bzrignore
52+prune _bootstrap
53
54=== modified file 'README.txt'
55--- README.txt 2009-03-05 23:19:16 +0000
56+++ README.txt 2009-03-23 16:14:28 +0000
57@@ -3,15 +3,15 @@
58 ..
59 This file is part of lazr.batchnavigator.
60
61- lazr.batchnavigator is free software: you can redistribute it and/or modify it
62- under the terms of the GNU Lesser General Public License as published by
63- the Free Software Foundation, either version 3 of the License, or (at your
64- option) any later version.
65+ lazr.batchnavigator is free software: you can redistribute it and/or
66+ modify it under the terms of the GNU Lesser General Public License as
67+ published by the Free Software Foundation, version 3 of the License.
68
69- lazr.batchnavigator is distributed in the hope that it will be useful, but WITHOUT
70- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
71- FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
72+ lazr.batchnavigator is distributed in the hope that it will be useful, but
73+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
74+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
75 License for more details.
76
77 You should have received a copy of the GNU Lesser General Public License
78- along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
79+ along with lazr.batchnavigator. If not, see
80+ <http://www.gnu.org/licenses/>.
81
82=== added directory '_bootstrap'
83=== added file '_bootstrap/COPYRIGHT.txt'
84--- _bootstrap/COPYRIGHT.txt 1970-01-01 00:00:00 +0000
85+++ _bootstrap/COPYRIGHT.txt 2009-03-24 15:07:42 +0000
86@@ -0,0 +1,9 @@
87+Copyright (c) 2004-2009 Zope Corporation and Contributors.
88+All Rights Reserved.
89+
90+This software is subject to the provisions of the Zope Public License,
91+Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
92+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
93+WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
94+WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
95+FOR A PARTICULAR PURPOSE.
96
97=== added file '_bootstrap/LICENSE.txt'
98--- _bootstrap/LICENSE.txt 1970-01-01 00:00:00 +0000
99+++ _bootstrap/LICENSE.txt 2009-03-24 15:07:42 +0000
100@@ -0,0 +1,54 @@
101+Zope Public License (ZPL) Version 2.1
102+-------------------------------------
103+
104+A copyright notice accompanies this license document that
105+identifies the copyright holders.
106+
107+This license has been certified as open source. It has also
108+been designated as GPL compatible by the Free Software
109+Foundation (FSF).
110+
111+Redistribution and use in source and binary forms, with or
112+without modification, are permitted provided that the
113+following conditions are met:
114+
115+1. Redistributions in source code must retain the
116+ accompanying copyright notice, this list of conditions,
117+ and the following disclaimer.
118+
119+2. Redistributions in binary form must reproduce the accompanying
120+ copyright notice, this list of conditions, and the
121+ following disclaimer in the documentation and/or other
122+ materials provided with the distribution.
123+
124+3. Names of the copyright holders must not be used to
125+ endorse or promote products derived from this software
126+ without prior written permission from the copyright
127+ holders.
128+
129+4. The right to distribute this software or to use it for
130+ any purpose does not give you the right to use
131+ Servicemarks (sm) or Trademarks (tm) of the copyright
132+ holders. Use of them is covered by separate agreement
133+ with the copyright holders.
134+
135+5. If any files are modified, you must cause the modified
136+ files to carry prominent notices stating that you changed
137+ the files and the date of any change.
138+
139+Disclaimer
140+
141+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS''
142+ AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
143+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
144+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
145+ NO EVENT SHALL THE COPYRIGHT HOLDERS BE
146+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
147+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
148+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
149+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
150+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
151+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
152+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
153+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
154+ DAMAGE.
155\ No newline at end of file
156
157=== renamed file 'bootstrap.py' => '_bootstrap/bootstrap.py'
158=== added symlink 'bootstrap.py'
159=== target is '_bootstrap/bootstrap.py'
160=== modified file 'buildout.cfg'
161--- buildout.cfg 2009-03-03 19:43:53 +0000
162+++ buildout.cfg 2009-03-23 16:14:28 +0000
163@@ -2,6 +2,7 @@
164 parts =
165 interpreter
166 test
167+ docs
168 tags
169 unzip = true
170
171@@ -10,7 +11,14 @@
172 [test]
173 recipe = zc.recipe.testrunner
174 eggs = lazr.batchnavigator
175-defaults = '--tests-pattern ^tests --exit-with-status'.split()
176+defaults = '--tests-pattern ^tests --exit-with-status --suite-name additional_tests'.split()
177+
178+[docs]
179+recipe = z3c.recipe.sphinxdoc
180+eggs = lazr.batchnavigator [docs]
181+index-doc = README
182+default.css =
183+layout.html =
184
185 [interpreter]
186 recipe = zc.recipe.egg
187
188=== added file 'ez_setup.py'
189--- ez_setup.py 1970-01-01 00:00:00 +0000
190+++ ez_setup.py 2009-03-23 16:14:28 +0000
191@@ -0,0 +1,241 @@
192+#!python
193+"""Bootstrap setuptools installation
194+
195+If you want to use setuptools in your package's setup.py, just include this
196+file in the same directory with it, and add this to the top of your setup.py::
197+
198+ from ez_setup import use_setuptools
199+ use_setuptools()
200+
201+If you want to require a specific version of setuptools, set a download
202+mirror, or use an alternate download directory, you can do so by supplying
203+the appropriate options to ``use_setuptools()``.
204+
205+This file can also be run as a script to install or upgrade setuptools.
206+"""
207+import sys
208+DEFAULT_VERSION = "0.6c8"
209+DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
210+
211+md5_data = {
212+ 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
213+ 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
214+ 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
215+ 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
216+ 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
217+ 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
218+ 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
219+ 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
220+ 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
221+ 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
222+ 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
223+ 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
224+ 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
225+ 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
226+ 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
227+ 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
228+ 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
229+ 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
230+ 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
231+ 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
232+ 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
233+ 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
234+ 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
235+ 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
236+ 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
237+ 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
238+ 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
239+ 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
240+ 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
241+ 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
242+}
243+
244+import sys, os
245+
246+def _validate_md5(egg_name, data):
247+ if egg_name in md5_data:
248+ from md5 import md5
249+ digest = md5(data).hexdigest()
250+ if digest != md5_data[egg_name]:
251+ print >>sys.stderr, (
252+ "md5 validation of %s failed! (Possible download problem?)"
253+ % egg_name
254+ )
255+ sys.exit(2)
256+ return data
257+
258+
259+def use_setuptools(
260+ version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
261+ download_delay=15, min_version=None
262+):
263+ """Automatically find/download setuptools and make it available on sys.path
264+
265+ `version` should be a valid setuptools version number that is available
266+ as an egg for download under the `download_base` URL (which should end with
267+ a '/'). `to_dir` is the directory where setuptools will be downloaded, if
268+ it is not already available. If `download_delay` is specified, it should
269+ be the number of seconds that will be paused before initiating a download,
270+ should one be required. If an older version of setuptools is installed,
271+ this routine will print a message to ``sys.stderr`` and raise SystemExit in
272+ an attempt to abort the calling script.
273+ """
274+ # Work around a hack in the ez_setup.py file from simplejson==1.7.3.
275+ if min_version:
276+ version = min_version
277+
278+ was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
279+ def do_download():
280+ egg = download_setuptools(version, download_base, to_dir, download_delay)
281+ sys.path.insert(0, egg)
282+ import setuptools; setuptools.bootstrap_install_from = egg
283+ try:
284+ import pkg_resources
285+ except ImportError:
286+ return do_download()
287+ try:
288+ pkg_resources.require("setuptools>="+version); return
289+ except pkg_resources.VersionConflict, e:
290+ if was_imported:
291+ print >>sys.stderr, (
292+ "The required version of setuptools (>=%s) is not available, and\n"
293+ "can't be installed while this script is running. Please install\n"
294+ " a more recent version first, using 'easy_install -U setuptools'."
295+ "\n\n(Currently using %r)"
296+ ) % (version, e.args[0])
297+ sys.exit(2)
298+ else:
299+ del pkg_resources, sys.modules['pkg_resources'] # reload ok
300+ return do_download()
301+ except pkg_resources.DistributionNotFound:
302+ return do_download()
303+
304+def download_setuptools(
305+ version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
306+ delay = 15
307+):
308+ """Download setuptools from a specified location and return its filename
309+
310+ `version` should be a valid setuptools version number that is available
311+ as an egg for download under the `download_base` URL (which should end
312+ with a '/'). `to_dir` is the directory where the egg will be downloaded.
313+ `delay` is the number of seconds to pause before an actual download attempt.
314+ """
315+ import urllib2, shutil
316+ egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
317+ url = download_base + egg_name
318+ saveto = os.path.join(to_dir, egg_name)
319+ src = dst = None
320+ if not os.path.exists(saveto): # Avoid repeated downloads
321+ try:
322+ from distutils import log
323+ if delay:
324+ log.warn("""
325+---------------------------------------------------------------------------
326+This script requires setuptools version %s to run (even to display
327+help). I will attempt to download it for you (from
328+%s), but
329+you may need to enable firewall access for this script first.
330+I will start the download in %d seconds.
331+
332+(Note: if this machine does not have network access, please obtain the file
333+
334+ %s
335+
336+and place it in this directory before rerunning this script.)
337+---------------------------------------------------------------------------""",
338+ version, download_base, delay, url
339+ ); from time import sleep; sleep(delay)
340+ log.warn("Downloading %s", url)
341+ src = urllib2.urlopen(url)
342+ # Read/write all in one block, so we don't create a corrupt file
343+ # if the download is interrupted.
344+ data = _validate_md5(egg_name, src.read())
345+ dst = open(saveto,"wb"); dst.write(data)
346+ finally:
347+ if src: src.close()
348+ if dst: dst.close()
349+ return os.path.realpath(saveto)
350+
351+def main(argv, version=DEFAULT_VERSION):
352+ """Install or upgrade setuptools and EasyInstall"""
353+ try:
354+ import setuptools
355+ except ImportError:
356+ egg = None
357+ try:
358+ egg = download_setuptools(version, delay=0)
359+ sys.path.insert(0,egg)
360+ from setuptools.command.easy_install import main
361+ return main(list(argv)+[egg]) # we're done here
362+ finally:
363+ if egg and os.path.exists(egg):
364+ os.unlink(egg)
365+ else:
366+ if setuptools.__version__ == '0.0.1':
367+ print >>sys.stderr, (
368+ "You have an obsolete version of setuptools installed. Please\n"
369+ "remove it from your system entirely before rerunning this script."
370+ )
371+ sys.exit(2)
372+
373+ req = "setuptools>="+version
374+ import pkg_resources
375+ try:
376+ pkg_resources.require(req)
377+ except pkg_resources.VersionConflict:
378+ try:
379+ from setuptools.command.easy_install import main
380+ except ImportError:
381+ from easy_install import main
382+ main(list(argv)+[download_setuptools(delay=0)])
383+ sys.exit(0) # try to force an exit
384+ else:
385+ if argv:
386+ from setuptools.command.easy_install import main
387+ main(argv)
388+ else:
389+ print "Setuptools version",version,"or greater has been installed."
390+ print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
391+
392+def update_md5(filenames):
393+ """Update our built-in md5 registry"""
394+
395+ import re
396+ from md5 import md5
397+
398+ for name in filenames:
399+ base = os.path.basename(name)
400+ f = open(name,'rb')
401+ md5_data[base] = md5(f.read()).hexdigest()
402+ f.close()
403+
404+ data = [" %r: %r,\n" % it for it in md5_data.items()]
405+ data.sort()
406+ repl = "".join(data)
407+
408+ import inspect
409+ srcfile = inspect.getsourcefile(sys.modules[__name__])
410+ f = open(srcfile, 'rb'); src = f.read(); f.close()
411+
412+ match = re.search("\nmd5_data = {\n([^}]+)}", src)
413+ if not match:
414+ print >>sys.stderr, "Internal error!"
415+ sys.exit(2)
416+
417+ src = src[:match.start(1)] + repl + src[match.end(1):]
418+ f = open(srcfile,'w')
419+ f.write(src)
420+ f.close()
421+
422+
423+if __name__=='__main__':
424+ if len(sys.argv)>2 and sys.argv[1]=='--md5update':
425+ update_md5(sys.argv[2:])
426+ else:
427+ main(sys.argv[1:])
428+
429+
430+
431+
432+
433
434=== modified file 'setup.py' (properties changed: -x to +x)
435--- setup.py 2009-03-05 23:19:16 +0000
436+++ setup.py 2009-03-23 16:14:28 +0000
437@@ -1,19 +1,23 @@
438+#!/usr/bin/env python
439+
440 # Copyright 2009 Canonical Ltd. All rights reserved.
441 #
442 # This file is part of lazr.batchnavigator
443 #
444-# lazr.batchnavigator is free software: you can redistribute it and/or modify it
445-# under the terms of the GNU Lesser General Public License as published by
446-# the Free Software Foundation, either version 3 of the License, or (at your
447-# option) any later version.
448+# lazr.batchnavigator is free software: you can redistribute it and/or modify
449+# it under the terms of the GNU Lesser General Public License as published by
450+# the Free Software Foundation, version 3 of the License.
451 #
452-# lazr.batchnavigator is distributed in the hope that it will be useful, but WITHOUT
453-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
454-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
455+# lazr.batchnavigator is distributed in the hope that it will be useful, but
456+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
457+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
458 # License for more details.
459 #
460 # You should have received a copy of the GNU Lesser General Public License
461-# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
462+# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
463+
464+import ez_setup
465+ez_setup.use_setuptools()
466
467 import sys
468 from setuptools import setup, find_packages
469@@ -32,7 +36,8 @@
470 return '\n'.join(res)
471 # end generic helpers
472
473-__version__ = '0.1'
474+sys.path.insert(0, 'src')
475+from lazr.batchnavigator import __version__
476
477 setup(
478 name='lazr.batchnavigator',
479@@ -56,10 +61,17 @@
480 'zope.publisher',
481 ],
482 url='https://launchpad.net/lazr.batchnavigator',
483+ download_url= 'https://launchpad.net/lazr.batchnavigator/+download',
484 classifiers=[
485 "Development Status :: 5 - Production/Stable",
486 "Intended Audience :: Developers",
487 "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)",
488 "Operating System :: OS Independent",
489 "Programming Language :: Python"],
490+ extras_require=dict(
491+ docs=['Sphinx',
492+ 'z3c.recipe.sphinxdoc']
493+ ),
494+ setup_requires=['eggtestinfo', 'setuptools_bzr'],
495+ test_suite='lazr.yourpkg.tests',
496 )
497
498=== modified file 'src/lazr/__init__.py'
499--- src/lazr/__init__.py 2009-03-03 19:43:53 +0000
500+++ src/lazr/__init__.py 2009-03-23 16:14:28 +0000
501@@ -2,18 +2,17 @@
502 #
503 # This file is part of lazr.batchnavigator.
504 #
505-# lazr.batchnavigator is free software: you can redistribute it and/or modify it
506-# under the terms of the GNU Lesser General Public License as published by
507-# the Free Software Foundation, either version 3 of the License, or (at your
508-# option) any later version.
509+# lazr.batchnavigator is free software: you can redistribute it and/or modify
510+# it under the terms of the GNU Lesser General Public License as published by
511+# the Free Software Foundation, version 3 of the License.
512 #
513-# lazr.batchnavigator is distributed in the hope that it will be useful, but WITHOUT
514-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
515-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
516+# lazr.batchnavigator is distributed in the hope that it will be useful, but
517+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
518+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
519 # License for more details.
520 #
521 # You should have received a copy of the GNU Lesser General Public License
522-# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
523+# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
524
525 # this is a namespace package
526 try:
527
528=== modified file 'src/lazr/batchnavigator/NEWS.txt'
529--- src/lazr/batchnavigator/NEWS.txt 2009-03-03 19:43:53 +0000
530+++ src/lazr/batchnavigator/NEWS.txt 2009-03-24 15:57:40 +0000
531@@ -1,8 +1,8 @@
532-=====================
533+============================
534 NEWS for lazr.batchnavigator
535-=====================
536+============================
537
538-1.0 (200X-XX-XX)
539+1.0 (2009-03-24)
540 ================
541
542-- Initial release
543+- Initial release on PyPI
544
545=== modified file 'src/lazr/batchnavigator/README.txt'
546--- src/lazr/batchnavigator/README.txt 2009-03-05 23:19:16 +0000
547+++ src/lazr/batchnavigator/README.txt 2009-03-23 16:14:28 +0000
548@@ -1,18 +1,18 @@
549 ..
550 This file is part of lazr.batchnavigator.
551
552- lazr.batchnavigator is free software: you can redistribute it and/or modify
553- it under the terms of the GNU Lesser General Public License as published by
554- the Free Software Foundation, either version 3 of the License, or (at your
555- option) any later version.
556+ lazr.batchnavigator is free software: you can redistribute it and/or
557+ modify it under the terms of the GNU Lesser General Public License as
558+ published by the Free Software Foundation, version 3 of the License.
559
560 lazr.batchnavigator is distributed in the hope that it will be useful, but
561 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
562- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
563+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
564 License for more details.
565
566 You should have received a copy of the GNU Lesser General Public License
567- along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
568+ along with lazr.batchnavigator. If not, see
569+ <http://www.gnu.org/licenses/>.
570
571 Batch Navigation
572 ****************
573@@ -40,7 +40,7 @@
574 >>> from zope.component import getSiteManager
575 >>> sm = getSiteManager()
576 >>> sm.registerAdapter(HTTPCharsets)
577-
578+
579 >>> def build_request(query_string_args=None, method='GET'):
580 ... if query_string_args is None:
581 ... query_string = ''
582@@ -119,7 +119,7 @@
583
584 >>> last_reindeer_batch_navigator.firstBatchURL()
585 'http://www.example.com/foo?start=0&batch=3'
586-
587+
588 >>> last_reindeer_batch_navigator.prevBatchURL()
589 'http://www.example.com/foo?start=0&batch=3'
590
591@@ -176,7 +176,7 @@
592 ... 'batch': '3'}, method='POST')
593 >>> reindeer_batch_navigator_post_with_qs = BatchNavigator(
594 ... reindeer, request)
595-
596+
597 >>> reindeer_batch_navigator_post_with_qs.start
598 3
599 >>> reindeer_batch_navigator_post_with_qs.nextBatchURL()
600@@ -207,7 +207,7 @@
601 ''
602 >>> null_batch_navigator.lastBatchURL()
603 ''
604-
605+
606 >>> null_batch_navigator = BatchNavigator(
607 ... [], build_request(), size=3)
608 >>> null_batch_navigator.firstBatchURL()
609@@ -242,7 +242,7 @@
610 ... def __init__(self, results):
611 ... self.stub_results = results
612 ... def count(self):
613- ... # imagine this actually returned
614+ ... # imagine this actually returned
615 ... return len(self.stub_results)
616 ... def __getitem__(self, ix):
617 ... return self.stub_results[ix] # also works with slices
618@@ -300,7 +300,7 @@
619 and it is undesirable or overly expensive to execute the query for
620 every value in the entire result set.
621
622-The callback function must define two parameters. The first is the
623+The callback function must define two parameters. The first is the
624 batch navigator object itself, and the second it the current batch.
625 The callback function is called once and only once when the
626 BatchNavigator is constructed, and the current batch is determined.
627@@ -308,13 +308,13 @@
628 >>> def print_callback(context, batch):
629 ... for item in batch:
630 ... print item
631-
632+
633 >>> reindeer_batch_navigator = BatchNavigator(
634 ... reindeer, build_request(), size=3, callback=print_callback)
635 Dasher
636 Dancer
637 Prancer
638-
639+
640 >>> request = build_request({"start": "3", "batch": "20"})
641 >>> last_reindeer_batch_navigator = BatchNavigator(
642 ... reindeer, request=request, callback=print_callback)
643@@ -339,7 +339,7 @@
644 ... return BatchNavigator(
645 ... reindeer, build_request(), size=3,
646 ... callback=self.constructReindeerFromAtoms)
647-
648+
649 >>> view = ReindeerView()
650 >>> batch_navigator = view.batchedReindeer()
651 >>> print view.built_reindeer
652@@ -441,4 +441,14 @@
653 >>> sm.unregisterAdapter(HTTPCharsets)
654 True
655 >>> sm.unregisterAdapter(ExampleAdapter)
656- True
657\ No newline at end of file
658+ True
659+
660+===============
661+Other Documents
662+===============
663+
664+.. toctree::
665+ :glob:
666+
667+ *
668+ docs/*
669
670=== added file 'src/lazr/batchnavigator/__init__.py'
671--- src/lazr/batchnavigator/__init__.py 1970-01-01 00:00:00 +0000
672+++ src/lazr/batchnavigator/__init__.py 2009-03-23 16:14:28 +0000
673@@ -0,0 +1,30 @@
674+# Copyright 2004-2009 Canonical Ltd. All rights reserved.
675+#
676+# This file is part of lazr.batchnavigator
677+#
678+# lazr.batchnavigator is free software: you can redistribute it and/or modify
679+# it under the terms of the GNU Lesser General Public License as published by
680+# the Free Software Foundation, version 3 of the License.
681+#
682+# lazr.batchnavigator is distributed in the hope that it will be useful, but
683+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
684+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
685+# License for more details.
686+#
687+# You should have received a copy of the GNU Lesser General Public License
688+# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
689+
690+"""Functions for working with generic syntax URIs."""
691+
692+__version__ = 1.0
693+
694+# Re-export in such a way that __version__ can still be imported if
695+# dependencies are not yet available.
696+try:
697+ # While we generally frown on "*" imports, this, combined with the fact we
698+ # only test code from this module, means that we can verify what has been
699+ # exported.
700+ from lazr.batchnavigator._batchnavigator import *
701+ from lazr.batchnavigator._batchnavigator import __all__
702+except ImportError:
703+ pass
704
705=== renamed file 'src/lazr/batchnavigator/__init__.py' => 'src/lazr/batchnavigator/_batchnavigator.py'
706--- src/lazr/batchnavigator/__init__.py 2009-03-05 23:29:09 +0000
707+++ src/lazr/batchnavigator/_batchnavigator.py 2009-03-23 16:14:28 +0000
708@@ -2,18 +2,17 @@
709 #
710 # This file is part of lazr.batchnavigator
711 #
712-# lazr.batchnavigator is free software: you can redistribute it and/or modify it
713-# under the terms of the GNU Lesser General Public License as published by
714-# the Free Software Foundation, either version 3 of the License, or (at your
715-# option) any later version.
716+# lazr.batchnavigator is free software: you can redistribute it and/or modify
717+# it under the terms of the GNU Lesser General Public License as published by
718+# the Free Software Foundation, version 3 of the License.
719 #
720-# lazr.batchnavigator is distributed in the hope that it will be useful, but WITHOUT
721-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
722-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
723+# lazr.batchnavigator is distributed in the hope that it will be useful, but
724+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
725+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
726 # License for more details.
727 #
728 # You should have received a copy of the GNU Lesser General Public License
729-# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
730+# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
731
732 __metaclass__ = type
733
734@@ -27,6 +26,7 @@
735 from lazr.batchnavigator.interfaces import (
736 IBatchNavigator, InvalidBatchSizeError, IBatchNavigatorFactory)
737
738+__all__ = ['BatchNavigator']
739
740 class BatchNavigator:
741
742@@ -57,7 +57,7 @@
743 @Lazy
744 def query_string_parameters(self):
745 query_string = self.request.get('QUERY_STRING', '')
746-
747+
748 # Just in case QUERY_STRING is in the environment explicitly as
749 # None (Some tests seem to do this, but not sure if it can ever
750 # happen outside of tests.)
751@@ -259,4 +259,3 @@
752
753 def currentBatch(self):
754 return self.batch
755-
756
757=== modified file 'src/lazr/batchnavigator/interfaces.py'
758--- src/lazr/batchnavigator/interfaces.py 2009-03-05 23:29:09 +0000
759+++ src/lazr/batchnavigator/interfaces.py 2009-03-23 16:14:28 +0000
760@@ -2,18 +2,17 @@
761 #
762 # This file is part of lazr.batchnavigator
763 #
764-# lazr.batchnavigator is free software: you can redistribute it and/or modify it
765-# under the terms of the GNU Lesser General Public License as published by
766-# the Free Software Foundation, either version 3 of the License, or (at your
767-# option) any later version.
768+# lazr.batchnavigator is free software: you can redistribute it and/or modify
769+# it under the terms of the GNU Lesser General Public License as published by
770+# the Free Software Foundation, version 3 of the License.
771 #
772-# lazr.batchnavigator is distributed in the hope that it will be useful, but WITHOUT
773-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
774-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
775+# lazr.batchnavigator is distributed in the hope that it will be useful, but
776+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
777+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
778 # License for more details.
779 #
780 # You should have received a copy of the GNU Lesser General Public License
781-# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
782+# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
783
784 from zope.interface import Interface, Attribute
785
786
787=== modified file 'src/lazr/batchnavigator/tests/__init__.py'
788--- src/lazr/batchnavigator/tests/__init__.py 2009-01-09 02:10:26 +0000
789+++ src/lazr/batchnavigator/tests/__init__.py 2009-03-23 16:14:28 +0000
790@@ -0,0 +1,16 @@
791+# Copyright 2009 Canonical Ltd. All rights reserved.
792+#
793+# This file is part of lazr.batchnavigator
794+#
795+# lazr.batchnavigator is free software: you can redistribute it and/or modify
796+# it under the terms of the GNU Lesser General Public License as published by
797+# the Free Software Foundation, version 3 of the License.
798+#
799+# lazr.batchnavigator is distributed in the hope that it will be useful, but
800+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
801+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
802+# License for more details.
803+#
804+# You should have received a copy of the GNU Lesser General Public License
805+# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
806+"The lazr.batchnavigator tests."
807
808=== renamed file 'src/lazr/batchnavigator/tests/test_documentation.py' => 'src/lazr/batchnavigator/tests/test_docs.py'
809--- src/lazr/batchnavigator/tests/test_documentation.py 2009-03-04 16:27:16 +0000
810+++ src/lazr/batchnavigator/tests/test_docs.py 2009-03-23 16:14:28 +0000
811@@ -1,14 +1,29 @@
812 # Copyright 2009 Canonical Ltd. All rights reserved.
813-
814-"""Test harness."""
815+#
816+# This file is part of lazr.batchnavigator
817+#
818+# lazr.batchnavigator is free software: you can redistribute it and/or modify
819+# it under the terms of the GNU Lesser General Public License as published by
820+# the Free Software Foundation, version 3 of the License.
821+#
822+# lazr.batchnavigator is distributed in the hope that it will be useful, but
823+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
824+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
825+# License for more details.
826+#
827+# You should have received a copy of the GNU Lesser General Public License
828+# along with lazr.batchnavigator. If not, see <http://www.gnu.org/licenses/>.
829+"Test harness for doctests."
830
831 __metaclass__ = type
832 __all__ = [
833- 'test_suite',
834+ 'additional_tests',
835 ]
836
837+import atexit
838+import doctest
839 import os
840-import doctest
841+import pkg_resources
842 import unittest
843
844 DOCTEST_FLAGS = (
845@@ -16,12 +31,20 @@
846 doctest.NORMALIZE_WHITESPACE |
847 doctest.REPORT_NDIFF)
848
849-def test_suite():
850- readme = os.path.normpath(
851+
852+def additional_tests():
853+ "Run the doc tests (README.txt and docs/*, if any exist)"
854+ doctest_files = [
855 os.path.abspath(
856- os.path.join(os.path.dirname(__file__),
857- os.path.pardir,
858- 'README.txt')))
859+ pkg_resources.resource_filename('lazr.batchnavigator', 'README.txt'))]
860+ if pkg_resources.resource_exists('lazr.batchnavigator', 'docs'):
861+ for name in pkg_resources.resource_listdir('lazr.batchnavigator', 'docs'):
862+ if name.endswith('.txt'):
863+ doctest_files.append(
864+ os.path.abspath(
865+ pkg_resources.resource_filename(
866+ 'lazr.batchnavigator', 'docs/%s' % name)))
867+ kwargs = dict(module_relative=False, optionflags=DOCTEST_FLAGS)
868+ atexit.register(pkg_resources.cleanup_resources)
869 return unittest.TestSuite((
870- doctest.DocFileSuite(
871- readme, module_relative=False, optionflags=DOCTEST_FLAGS)))
872+ doctest.DocFileSuite(*doctest_files, **kwargs)))
873
874=== modified file 'src/lazr/batchnavigator/tests/test_z3batching.py'
875--- src/lazr/batchnavigator/tests/test_z3batching.py 2009-03-03 18:02:58 +0000
876+++ src/lazr/batchnavigator/tests/test_z3batching.py 2009-03-23 16:14:28 +0000
877@@ -199,10 +199,7 @@
878 self.assertEqual(batch.endNumber(), 100)
879
880
881-def test_suite():
882+def additional_tests():
883 return unittest.TestSuite((
884 unittest.makeSuite(BatchTest),
885 ))
886-
887-if __name__ == '__main__':
888- unittest.main()
889
890=== added file 'src/lazr/batchnavigator/z3batching/COPYRIGHT.txt'
891--- src/lazr/batchnavigator/z3batching/COPYRIGHT.txt 1970-01-01 00:00:00 +0000
892+++ src/lazr/batchnavigator/z3batching/COPYRIGHT.txt 2009-03-24 15:07:42 +0000
893@@ -0,0 +1,9 @@
894+Copyright (c) 2004-2009 Zope Corporation and Contributors, and Canonical Ltd.
895+All Rights Reserved.
896+
897+This software is subject to the provisions of the Zope Public License,
898+Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
899+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
900+WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
901+WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
902+FOR A PARTICULAR PURPOSE.
903
904=== added file 'src/lazr/batchnavigator/z3batching/LICENSE.txt'
905--- src/lazr/batchnavigator/z3batching/LICENSE.txt 1970-01-01 00:00:00 +0000
906+++ src/lazr/batchnavigator/z3batching/LICENSE.txt 2009-03-24 15:07:42 +0000
907@@ -0,0 +1,54 @@
908+Zope Public License (ZPL) Version 2.1
909+-------------------------------------
910+
911+A copyright notice accompanies this license document that
912+identifies the copyright holders.
913+
914+This license has been certified as open source. It has also
915+been designated as GPL compatible by the Free Software
916+Foundation (FSF).
917+
918+Redistribution and use in source and binary forms, with or
919+without modification, are permitted provided that the
920+following conditions are met:
921+
922+1. Redistributions in source code must retain the
923+ accompanying copyright notice, this list of conditions,
924+ and the following disclaimer.
925+
926+2. Redistributions in binary form must reproduce the accompanying
927+ copyright notice, this list of conditions, and the
928+ following disclaimer in the documentation and/or other
929+ materials provided with the distribution.
930+
931+3. Names of the copyright holders must not be used to
932+ endorse or promote products derived from this software
933+ without prior written permission from the copyright
934+ holders.
935+
936+4. The right to distribute this software or to use it for
937+ any purpose does not give you the right to use
938+ Servicemarks (sm) or Trademarks (tm) of the copyright
939+ holders. Use of them is covered by separate agreement
940+ with the copyright holders.
941+
942+5. If any files are modified, you must cause the modified
943+ files to carry prominent notices stating that you changed
944+ the files and the date of any change.
945+
946+Disclaimer
947+
948+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS''
949+ AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
950+ NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
951+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
952+ NO EVENT SHALL THE COPYRIGHT HOLDERS BE
953+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
954+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
955+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
956+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
957+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
958+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
959+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
960+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
961+ DAMAGE.
962\ No newline at end of file
963
964=== added file 'src/lazr/batchnavigator/z3batching/README.txt'
965--- src/lazr/batchnavigator/z3batching/README.txt 1970-01-01 00:00:00 +0000
966+++ src/lazr/batchnavigator/z3batching/README.txt 2009-03-24 15:07:42 +0000
967@@ -0,0 +1,5 @@
968+This code is a very old fork of batching code from the Zope project. The
969+z3c.batching package (http://pypi.python.org/pypi/z3c.batching) appears to
970+have evolved from the same, or very similar, source. Ideally, we will be able
971+to change lazr.batchnavigator to depend on z3c.batching, perhaps contributing
972+to that package any necessary changes for our usage needs.

Subscribers

People subscribed via source and target branches