Merge lp:~wgrant/turnip/no-buildout into lp:turnip

Proposed by William Grant
Status: Merged
Merged at revision: 104
Proposed branch: lp:~wgrant/turnip/no-buildout
Merge into: lp:turnip
Diff against target: 686 lines (+67/-528)
10 files modified
Makefile (+24/-96)
_bootstrap/COPYRIGHT.txt (+0/-9)
_bootstrap/LICENSE.txt (+0/-54)
_bootstrap/bootstrap.py (+0/-277)
buildout.cfg (+0/-33)
pygit2-requirements.txt (+3/-0)
requirements.txt (+6/-19)
setup.py (+20/-7)
test-requirements.txt (+14/-0)
versions.cfg (+0/-33)
To merge this branch: bzr merge lp:~wgrant/turnip/no-buildout
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+252692@code.launchpad.net

Commit message

Drop buildout support, make things more usable with pip, and fix "setup.py test".

Description of the change

Maintaining infrastructure for both buildout and pip was silly, and the Python world clearly favours pip, so let's drop buildout support and make development without it more sensible.

The pip requirements.txt still exists, and now includes pygit2 bits. test-requirements.txt installs the test dependencies. These can be maintained by installing the dependencies and running pip-tools' "pip-dump" (manually moving new test deps to test-requirements.txt if they appear).

But normal development should probably not use requirements.txt. I've added the relevant sdists to lp:lp-source-dependencies (assumed to be checked out in the download-cache subdirectory of your source tree), so one can now do an offline installation like this:

~/src/turnip$ # Prevent setup_requires like pbr from hitting PyPI.
~/src/turnip$ cat ~/.pydistutils.cfg << EOF
[easy_install]
allow_hosts = ''
find_links = file:///~/src/turnip/download-cache/dist/
EOF
~/src/turnip$ virtualenv --no-site-packages env
~/src/turnip$ env/bin/pip install --no-index --find-links=download-cache/dist -e .[test]
~/src/turnip$ env/bin/python setup.py test

It also works with --system-site-packages, though I ran into a version conflict because I had a system zope.interface installed that conflicted with the pip-chosen zope.component. "apt-get install python-zope.component" fixed that.

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) wrote :

As discussed on IRC, we need to pull cffi, pycparser, and pygit2 out of requirements.txt (and possibly into a separate requirements file) to avoid making charm deployment depend on having a matching version of libgit2-dev on the deployment system. Other than that this seems fine.

review: Approve
lp:~wgrant/turnip/no-buildout updated
113. By William Grant

Split out pygit2 deps so the charm can use a PPA package rather than shipping libgit2-dev everywhere.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'Makefile'
2--- Makefile 2015-02-26 21:34:02 +0000
3+++ Makefile 2015-03-12 13:11:13 +0000
4@@ -1,101 +1,29 @@
5 # Copyright 2005-2015 Canonical Ltd. This software is licensed under the
6 # GNU Affero General Public License version 3 (see the file LICENSE).
7
8-PYTHON = python
9-
10-BOOTSTRAP_BIN := bootstrap.py
11-BOOTSTRAP = PYTHONPATH= $(PYTHON) $(BOOTSTRAP_BIN)
12-
13-BUILDOUT_BIN := bin/buildout
14-BUILDOUT_CFG := buildout.cfg
15-BUILDOUT = PYTHONPATH= $(BUILDOUT_BIN) -qc $(BUILDOUT_CFG)
16-
17-APP_PATH := ./turnip
18-
19-
20-default: check
21-
22-
23-build: bin/twistd
24-
25-
26-# When a built tree is moved this updates absolute paths.
27-build-update-paths:
28- $(BUILDOUT)
29-
30-
31-check: bin/test
32- bin/test
33-
34-
35-dist: $(BUILDOUT_BIN)
36- $(BUILDOUT) setup setup.py egg_info -r sdist
37-
38-
39-TAGS: bin/tags
40- bin/tags --ctags-emacs
41-
42-
43-tags: bin/tags
44- bin/tags --ctags-vi
45-
46-
47-download-cache:
48- mkdir -p download-cache
49-
50-
51-eggs:
52- mkdir -p eggs
53-
54-
55-$(BUILDOUT_BIN): download-cache eggs
56- $(BOOTSTRAP) \
57- --setup-source=download-cache/dist/ez_setup.py \
58- --download-base=download-cache/dist \
59- --eggs=eggs --version=1.5.2
60- touch --no-create $@
61-
62+PYTHON=python
63+PSERVE=pserve
64+FLAKE8=flake8
65+
66+check:
67+ $(PYTHON) -m unittest discover turnip
68+
69+clean:
70+ find turnip -name '*.py[co]' -exec rm '{}' \;
71+
72+dist:
73+ $(PYTHON) ./setup.py sdist
74+
75+TAGS:
76+ ctags -e -R turnip
77+
78+tags:
79+ ctags -R turnip
80+
81+lint:
82+ @$(FLAKE8) turnip
83
84 run-api:
85- PYTHONPATH=$(APP_PATH) pserve api.ini --reload
86-
87-
88-bin/twistd: $(BUILDOUT_BIN) $(BUILDOUT_CFG) setup.py
89- $(BUILDOUT) install runtime
90-
91-
92-bin/test: $(BUILDOUT_BIN) $(BUILDOUT_CFG) setup.py
93- $(BUILDOUT) install test
94-
95-
96-bin/tags: $(BUILDOUT_BIN) $(BUILDOUT_CFG) setup.py
97- $(BUILDOUT) install tags
98-
99-
100-clean_buildout:
101- $(RM) -r bin
102- $(RM) -r parts
103- $(RM) -r develop-eggs
104- $(RM) .installed.cfg
105- $(RM) -r build
106- $(RM) -r dist
107-
108-
109-clean_eggs:
110- $(RM) -r download-cache
111- $(RM) -r *.egg-info
112- $(RM) -r eggs
113-
114-
115-clean: clean_buildout
116- find turnip -name '*.py[co]' -print0 | xargs -r0 $(RM)
117- find -maxdepth 1 -name '*.py[co]' -print0 | xargs -r0 $(RM)
118-
119-clean_all: clean_buildout clean_eggs
120-
121-lint:
122- @flake8 turnip
123-
124-.PHONY: \
125- build build-update-paths check clean clean_all clean_buildout \
126- clean_eggs default dist lint
127+ $(PSERVE) api.ini --reload
128+
129+.PHONY: check clean dist lint run-api
130
131=== removed directory '_bootstrap'
132=== removed file '_bootstrap/COPYRIGHT.txt'
133--- _bootstrap/COPYRIGHT.txt 2015-01-19 08:58:30 +0000
134+++ _bootstrap/COPYRIGHT.txt 1970-01-01 00:00:00 +0000
135@@ -1,9 +0,0 @@
136-Copyright (c) 2004-2009 Zope Corporation and Contributors.
137-All Rights Reserved.
138-
139-This software is subject to the provisions of the Zope Public License,
140-Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
141-THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
142-WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
143-WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
144-FOR A PARTICULAR PURPOSE.
145
146=== removed file '_bootstrap/LICENSE.txt'
147--- _bootstrap/LICENSE.txt 2015-01-19 08:58:30 +0000
148+++ _bootstrap/LICENSE.txt 1970-01-01 00:00:00 +0000
149@@ -1,54 +0,0 @@
150-Zope Public License (ZPL) Version 2.1
151--------------------------------------
152-
153-A copyright notice accompanies this license document that
154-identifies the copyright holders.
155-
156-This license has been certified as open source. It has also
157-been designated as GPL compatible by the Free Software
158-Foundation (FSF).
159-
160-Redistribution and use in source and binary forms, with or
161-without modification, are permitted provided that the
162-following conditions are met:
163-
164-1. Redistributions in source code must retain the
165- accompanying copyright notice, this list of conditions,
166- and the following disclaimer.
167-
168-2. Redistributions in binary form must reproduce the accompanying
169- copyright notice, this list of conditions, and the
170- following disclaimer in the documentation and/or other
171- materials provided with the distribution.
172-
173-3. Names of the copyright holders must not be used to
174- endorse or promote products derived from this software
175- without prior written permission from the copyright
176- holders.
177-
178-4. The right to distribute this software or to use it for
179- any purpose does not give you the right to use
180- Servicemarks (sm) or Trademarks (tm) of the copyright
181- holders. Use of them is covered by separate agreement
182- with the copyright holders.
183-
184-5. If any files are modified, you must cause the modified
185- files to carry prominent notices stating that you changed
186- the files and the date of any change.
187-
188-Disclaimer
189-
190- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS''
191- AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
192- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
193- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
194- NO EVENT SHALL THE COPYRIGHT HOLDERS BE
195- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
196- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
197- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
198- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
199- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
200- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
201- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
202- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
203- DAMAGE.
204\ No newline at end of file
205
206=== removed file '_bootstrap/bootstrap.py'
207--- _bootstrap/bootstrap.py 2015-01-19 08:58:30 +0000
208+++ _bootstrap/bootstrap.py 1970-01-01 00:00:00 +0000
209@@ -1,277 +0,0 @@
210-##############################################################################
211-#
212-# Copyright (c) 2006 Zope Foundation and Contributors.
213-# All Rights Reserved.
214-#
215-# This software is subject to the provisions of the Zope Public License,
216-# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
217-# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
218-# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
219-# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
220-# FOR A PARTICULAR PURPOSE.
221-#
222-##############################################################################
223-"""Bootstrap a buildout-based project
224-
225-Simply run this script in a directory containing a buildout.cfg.
226-The script accepts buildout command-line options, so you can
227-use the -c option to specify an alternate configuration file.
228-"""
229-
230-import os, shutil, sys, tempfile, urllib, urllib2, subprocess
231-from optparse import OptionParser
232-
233-if sys.platform == 'win32':
234- def quote(c):
235- if ' ' in c:
236- return '"%s"' % c # work around spawn lamosity on windows
237- else:
238- return c
239-else:
240- quote = str
241-
242-# See zc.buildout.easy_install._has_broken_dash_S for motivation and comments.
243-stdout, stderr = subprocess.Popen(
244- [sys.executable, '-Sc',
245- 'try:\n'
246- ' import ConfigParser\n'
247- 'except ImportError:\n'
248- ' print 1\n'
249- 'else:\n'
250- ' print 0\n'],
251- stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
252-has_broken_dash_S = bool(int(stdout.strip()))
253-
254-# In order to be more robust in the face of system Pythons, we want to
255-# run without site-packages loaded. This is somewhat tricky, in
256-# particular because Python 2.6's distutils imports site, so starting
257-# with the -S flag is not sufficient. However, we'll start with that:
258-if not has_broken_dash_S and 'site' in sys.modules:
259- # We will restart with python -S.
260- args = sys.argv[:]
261- args[0:0] = [sys.executable, '-S']
262- args = map(quote, args)
263- os.execv(sys.executable, args)
264-# Now we are running with -S. We'll get the clean sys.path, import site
265-# because distutils will do it later, and then reset the path and clean
266-# out any namespace packages from site-packages that might have been
267-# loaded by .pth files.
268-clean_path = sys.path[:]
269-import site # imported because of its side effects
270-sys.path[:] = clean_path
271-for k, v in sys.modules.items():
272- if k in ('setuptools', 'pkg_resources') or (
273- hasattr(v, '__path__') and
274- len(v.__path__) == 1 and
275- not os.path.exists(os.path.join(v.__path__[0], '__init__.py'))):
276- # This is a namespace package. Remove it.
277- sys.modules.pop(k)
278-
279-is_jython = sys.platform.startswith('java')
280-
281-setuptools_source = 'http://peak.telecommunity.com/dist/ez_setup.py'
282-distribute_source = 'http://python-distribute.org/distribute_setup.py'
283-distribute_source = 'https://bitbucket.org/pypa/setuptools/raw/f657df1f1ed46596d236376649c99a470662b4ba/distribute_setup.py'
284-
285-# parsing arguments
286-def normalize_to_url(option, opt_str, value, parser):
287- if value:
288- if '://' not in value: # It doesn't smell like a URL.
289- value = 'file://%s' % (
290- urllib.pathname2url(
291- os.path.abspath(os.path.expanduser(value))),)
292- if opt_str == '--download-base' and not value.endswith('/'):
293- # Download base needs a trailing slash to make the world happy.
294- value += '/'
295- else:
296- value = None
297- name = opt_str[2:].replace('-', '_')
298- setattr(parser.values, name, value)
299-
300-usage = '''\
301-[DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options]
302-
303-Bootstraps a buildout-based project.
304-
305-Simply run this script in a directory containing a buildout.cfg, using the
306-Python that you want bin/buildout to use.
307-
308-Note that by using --setup-source and --download-base to point to
309-local resources, you can keep this script from going over the network.
310-'''
311-
312-parser = OptionParser(usage=usage)
313-parser.add_option("-v", "--version", dest="version",
314- help="use a specific zc.buildout version")
315-parser.add_option("-d", "--distribute",
316- action="store_true", dest="use_distribute", default=False,
317- help="Use Distribute rather than Setuptools.")
318-parser.add_option("--setup-source", action="callback", dest="setup_source",
319- callback=normalize_to_url, nargs=1, type="string",
320- help=("Specify a URL or file location for the setup file. "
321- "If you use Setuptools, this will default to " +
322- setuptools_source + "; if you use Distribute, this "
323- "will default to " + distribute_source + "."))
324-parser.add_option("--download-base", action="callback", dest="download_base",
325- callback=normalize_to_url, nargs=1, type="string",
326- help=("Specify a URL or directory for downloading "
327- "zc.buildout and either Setuptools or Distribute. "
328- "Defaults to PyPI."))
329-parser.add_option("--eggs",
330- help=("Specify a directory for storing eggs. Defaults to "
331- "a temporary directory that is deleted when the "
332- "bootstrap script completes."))
333-parser.add_option("-t", "--accept-buildout-test-releases",
334- dest='accept_buildout_test_releases',
335- action="store_true", default=False,
336- help=("Normally, if you do not specify a --version, the "
337- "bootstrap script and buildout gets the newest "
338- "*final* versions of zc.buildout and its recipes and "
339- "extensions for you. If you use this flag, "
340- "bootstrap and buildout will get the newest releases "
341- "even if they are alphas or betas."))
342-parser.add_option("-c", None, action="store", dest="config_file",
343- help=("Specify the path to the buildout configuration "
344- "file to be used."))
345-
346-options, args = parser.parse_args()
347-
348-if options.eggs:
349- eggs_dir = os.path.abspath(os.path.expanduser(options.eggs))
350-else:
351- eggs_dir = tempfile.mkdtemp()
352-
353-if options.setup_source is None:
354- if options.use_distribute:
355- options.setup_source = distribute_source
356- else:
357- options.setup_source = setuptools_source
358-
359-if options.accept_buildout_test_releases:
360- args.insert(0, 'buildout:accept-buildout-test-releases=true')
361-
362-try:
363- import pkg_resources
364- import setuptools # A flag. Sometimes pkg_resources is installed alone.
365- if not hasattr(pkg_resources, '_distribute'):
366- raise ImportError
367-except ImportError:
368- ez_code = urllib2.urlopen(
369- options.setup_source).read().replace('\r\n', '\n')
370- ez = {}
371- exec ez_code in ez
372- setup_args = dict(to_dir=eggs_dir, download_delay=0)
373- if options.download_base:
374- setup_args['download_base'] = options.download_base
375- if options.use_distribute:
376- setup_args['no_fake'] = True
377- if sys.version_info[:2] == (2, 4):
378- setup_args['version'] = '0.6.32'
379- ez['use_setuptools'](**setup_args)
380- if 'pkg_resources' in sys.modules:
381- reload(sys.modules['pkg_resources'])
382- import pkg_resources
383- # This does not (always?) update the default working set. We will
384- # do it.
385- for path in sys.path:
386- if path not in pkg_resources.working_set.entries:
387- pkg_resources.working_set.add_entry(path)
388-
389-cmd = [quote(sys.executable),
390- '-c',
391- quote('from setuptools.command.easy_install import main; main()'),
392- '-mqNxd',
393- quote(eggs_dir)]
394-
395-if not has_broken_dash_S:
396- cmd.insert(1, '-S')
397-
398-find_links = options.download_base
399-if not find_links:
400- find_links = os.environ.get('bootstrap-testing-find-links')
401-if not find_links and options.accept_buildout_test_releases:
402- find_links = 'http://downloads.buildout.org/'
403-if find_links:
404- cmd.extend(['-f', quote(find_links)])
405-
406-if options.use_distribute:
407- setup_requirement = 'distribute'
408-else:
409- setup_requirement = 'setuptools'
410-ws = pkg_resources.working_set
411-setup_requirement_path = ws.find(
412- pkg_resources.Requirement.parse(setup_requirement)).location
413-env = dict(
414- os.environ,
415- PYTHONPATH=setup_requirement_path)
416-
417-requirement = 'zc.buildout'
418-version = options.version
419-if version is None and not options.accept_buildout_test_releases:
420- # Figure out the most recent final version of zc.buildout.
421- import setuptools.package_index
422- _final_parts = '*final-', '*final'
423-
424- def _final_version(parsed_version):
425- for part in parsed_version:
426- if (part[:1] == '*') and (part not in _final_parts):
427- return False
428- return True
429- index = setuptools.package_index.PackageIndex(
430- search_path=[setup_requirement_path])
431- if find_links:
432- index.add_find_links((find_links,))
433- req = pkg_resources.Requirement.parse(requirement)
434- if index.obtain(req) is not None:
435- best = []
436- bestv = None
437- for dist in index[req.project_name]:
438- distv = dist.parsed_version
439- if distv >= pkg_resources.parse_version('2dev'):
440- continue
441- if _final_version(distv):
442- if bestv is None or distv > bestv:
443- best = [dist]
444- bestv = distv
445- elif distv == bestv:
446- best.append(dist)
447- if best:
448- best.sort()
449- version = best[-1].version
450-
451-if version:
452- requirement += '=='+version
453-else:
454- requirement += '<2dev'
455-
456-cmd.append(requirement)
457-
458-if is_jython:
459- import subprocess
460- exitcode = subprocess.Popen(cmd, env=env).wait()
461-else: # Windows prefers this, apparently; otherwise we would prefer subprocess
462- exitcode = os.spawnle(*([os.P_WAIT, sys.executable] + cmd + [env]))
463-if exitcode != 0:
464- sys.stdout.flush()
465- sys.stderr.flush()
466- print ("An error occurred when trying to install zc.buildout. "
467- "Look above this message for any errors that "
468- "were output by easy_install.")
469- sys.exit(exitcode)
470-
471-ws.add_entry(eggs_dir)
472-ws.require(requirement)
473-import zc.buildout.buildout
474-
475-# If there isn't already a command in the args, add bootstrap
476-if not [a for a in args if '=' not in a]:
477- args.append('bootstrap')
478-
479-
480-# if -c was provided, we push it back into args for buildout's main function
481-if options.config_file is not None:
482- args[0:0] = ['-c', options.config_file]
483-
484-zc.buildout.buildout.main(args)
485-if not options.eggs: # clean up temporary egg directory
486- shutil.rmtree(eggs_dir)
487
488=== removed symlink 'bootstrap.py'
489=== target was u'_bootstrap/bootstrap.py'
490=== removed file 'buildout.cfg'
491--- buildout.cfg 2015-01-19 08:58:30 +0000
492+++ buildout.cfg 1970-01-01 00:00:00 +0000
493@@ -1,33 +0,0 @@
494-[buildout]
495-extends = versions.cfg
496-parts =
497- runtime
498- test
499- tags
500-unzip = true
501-include-site-packages = false
502-allowed-eggs-from-site-packages = pyyaml
503-exec-sitecustomize = true
504-develop = .
505-download-cache = download-cache
506-eggs-directory = eggs
507-# Relative paths are useful when deploying built trees.
508-relative-paths = true
509-# Disable this option temporarily if you want buildout to find
510-# software dependencies *other* than those in our download-cache.
511-# Once you have the desired software, re-enable this option.
512-install-from-cache = true
513-
514-[runtime]
515-recipe = z3c.recipe.scripts
516-eggs = turnip
517-entry-points = twistd=twisted.scripts.twistd:run
518-
519-[test]
520-recipe = zc.recipe.testrunner
521-eggs = turnip [test]
522-defaults = '--tests-pattern ^tests --exit-with-status --suite-name additional_tests'.split()
523-
524-[tags]
525-recipe = z3c.recipe.tag:tags
526-eggs = turnip
527
528=== added file 'pygit2-requirements.txt'
529--- pygit2-requirements.txt 1970-01-01 00:00:00 +0000
530+++ pygit2-requirements.txt 2015-03-12 13:11:13 +0000
531@@ -0,0 +1,3 @@
532+cffi==0.9.1
533+pycparser==2.10
534+pygit2==0.21.4
535
536=== modified file 'requirements.txt'
537--- requirements.txt 2015-02-27 18:07:56 +0000
538+++ requirements.txt 2015-03-12 13:11:13 +0000
539@@ -1,31 +1,18 @@
540-argparse==1.2.1
541-cornice==0.17
542-envdir==0.7
543-flake8==2.3.0
544+cornice==0.19.0
545 lazr.sshserver==0.1.1
546-mccabe==0.3
547-paste==1.7.5.1
548-pastedeploy==1.5.2
549-pastescript==1.7.5
550-pep8==1.6.1
551+PasteDeploy==1.5.2
552 pyasn1==0.1.7
553 pycrypto==2.6.1
554-pyflakes==0.8.1
555-pyramid==1.5.2
556-python-mimeparse==0.1.4
557-pyyaml==3.11
558+pyramid==1.5.4
559+PyYAML==3.11
560 repoze.lru==0.6
561-setuptools==0.6c11
562 simplejson==3.6.5
563 translationstring==1.3
564-twisted==13.0.0
565+Twisted==15.0.0
566 venusian==1.0
567 waitress==0.8.9
568-webob==1.4
569-wsgiref==0.1.2
570+WebOb==1.4
571 zope.component==4.2.1
572 zope.deprecation==4.1.2
573 zope.event==4.0.3
574-zope.exceptions==4.0.7
575 zope.interface==4.1.2
576-zope.testrunner==4.0.3
577
578=== modified file 'setup.py'
579--- setup.py 2015-03-11 14:09:54 +0000
580+++ setup.py 2015-03-12 13:11:13 +0000
581@@ -14,15 +14,28 @@
582 with open(os.path.join(here, 'README')) as f:
583 README = f.read()
584
585-requires = ['cornice', 'lazr.sshserver', 'pygit2', 'PyYAML', 'Twisted',
586- 'waitress', 'zope.interface']
587-test_requires = ['fixtures', 'testtools', 'webtest']
588+requires = [
589+ 'cornice',
590+ 'lazr.sshserver',
591+ 'pygit2>=0.21.0,<0.22.0',
592+ 'PyYAML',
593+ 'Twisted',
594+ 'waitress',
595+ 'zope.interface',
596+ ]
597+test_requires = [
598+ 'fixtures',
599+ 'flake8',
600+ 'testtools',
601+ 'webtest',
602+ ]
603
604 setup(
605 name='turnip',
606 version='0.1',
607- packages = ['turnip.%s' % package for package in find_packages(
608- 'turnip', exclude=['*.tests', 'tests'])],
609+ packages=[
610+ 'turnip.%s' % package for package in
611+ find_packages('turnip', exclude=['*.tests', 'tests'])],
612 include_package_data=True,
613 zip_safe=False,
614 maintainer='LAZR Developers',
615@@ -31,12 +44,12 @@
616 long_description=README,
617 url='https://launchpad.net/turnip',
618 download_url='https://launchpad.net/turnip/+download',
619- setup_requires=['PasteScript'],
620 install_requires=requires,
621+ tests_require=test_requires,
622 extras_require=dict(
623 test=test_requires),
624 test_suite='turnip',
625- entry_points = """\
626+ entry_points="""\
627 [paste.app_factory]
628 main = turnip.api:main
629 """,
630
631=== added file 'test-requirements.txt'
632--- test-requirements.txt 1970-01-01 00:00:00 +0000
633+++ test-requirements.txt 2015-03-12 13:11:13 +0000
634@@ -0,0 +1,14 @@
635+beautifulsoup4==4.3.2
636+extras==0.0.3
637+fixtures==1.0.0
638+flake8==2.4.0
639+linecache2==1.0.0
640+mccabe==0.3
641+pep8==1.5.7
642+pyflakes==0.8.1
643+python-mimeparse==0.1.4
644+six==1.9.0
645+testtools==1.7.1
646+traceback2==1.4.0
647+unittest2==1.0.1
648+WebTest==2.0.18
649
650=== removed file 'versions.cfg'
651--- versions.cfg 2015-02-27 18:07:56 +0000
652+++ versions.cfg 1970-01-01 00:00:00 +0000
653@@ -1,33 +0,0 @@
654-[buildout]
655-versions = versions
656-allow-picked-versions = false
657-use-dependency-links = false
658-
659-[versions]
660-# Alphabetical, case-SENSITIVE, blank line after this comment
661-
662-cornice = 0.17
663-envdir = 0.7
664-extras = 0.0.3
665-fixtures = 0.3.12
666-lazr.sshserver = 0.1.1
667-Paste = 1.7.5.1
668-PasteDeploy = 1.5.2
669-PasteScript = 1.7.5
670-pyasn1 = 0.1.6
671-pycrypto = 2.6
672-pygit2 = 0.21.4
673-python-mimeparse = 0.1.4
674-PyYAML = 3.11
675-setuptools = 0.6c11
676-testtools = 0.9.30
677-Twisted = 13.0.0
678-z3c.recipe.scripts = 1.0.1
679-zc.buildout = 1.5.2
680-zc.recipe.egg = 1.3.2
681-zc.recipe.testrunner = 1.4.0
682-zope.component = 3.10.0
683-zope.event = 3.5.2
684-zope.exceptions = 3.6.2
685-zope.interface = 3.8.0
686-zope.testrunner = 4.0.3

Subscribers

People subscribed via source and target branches

to all changes: