commit d9d5e3452670fb1e934003417b814c4153d1e0c4 Author: Jesse Andrews Date: Thu May 27 23:05:26 2010 -0700 initial commit diff --git a/CA/.gitignore b/CA/.gitignore new file mode 100644 index 000000000..fae0922bf --- /dev/null +++ b/CA/.gitignore @@ -0,0 +1,11 @@ +index.txt +index.txt.old +index.txt.attr +index.txt.attr.old +cacert.pem +serial +serial.old +openssl.cnf +private/* +newcerts/* + diff --git a/CA/INTER/.gitignore b/CA/INTER/.gitignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/CA/INTER/.gitignore @@ -0,0 +1 @@ +* diff --git a/CA/reqs/.gitignore b/CA/reqs/.gitignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/CA/reqs/.gitignore @@ -0,0 +1 @@ +* diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..68c771a09 --- /dev/null +++ b/LICENSE @@ -0,0 +1,176 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 000000000..88f9974bd --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1 @@ +_build/* diff --git a/docs/_build/.gitignore b/docs/_build/.gitignore new file mode 100644 index 000000000..72e8ffc0d --- /dev/null +++ b/docs/_build/.gitignore @@ -0,0 +1 @@ +* diff --git a/docs/_static/.gitignore b/docs/_static/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/docs/_templates/.gitignore b/docs/_templates/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/nova/test.py b/nova/test.py new file mode 100644 index 000000000..610ad89aa --- /dev/null +++ b/nova/test.py @@ -0,0 +1,246 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright [2010] [Anso Labs, LLC] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Base classes for our unit tests. +Allows overriding of flags for use of fakes, +and some black magic for inline callbacks. +""" + +import logging +import time +import unittest + +from nova import vendor +import mox +from tornado import ioloop +from twisted.internet import defer +from twisted.python import failure +from twisted.trial import unittest as trial_unittest +import stubout + +from nova import datastore +from nova import fakerabbit +from nova import flags + + +FLAGS = flags.FLAGS +flags.DEFINE_bool('fake_tests', True, + 'should we use everything for testing') + + +def skip_if_fake(f): + def _skipper(*args, **kw): + if FLAGS.fake_tests: + raise trial_unittest.SkipTest('Test cannot be run in fake mode') + else: + return f(*args, **kw) + + _skipper.func_name = f.func_name + return _skipper + + +class TrialTestCase(trial_unittest.TestCase): + def setUp(self): + super(TrialTestCase, self).setUp() + + # emulate some of the mox stuff, we can't use the metaclass + # because it screws with our generators + self.mox = mox.Mox() + self.stubs = stubout.StubOutForTesting() + self.flag_overrides = {} + + def tearDown(self): + super(TrialTestCase, self).tearDown() + self.reset_flags() + self.mox.UnsetStubs() + self.stubs.UnsetAll() + self.stubs.SmartUnsetAll() + self.mox.VerifyAll() + + if FLAGS.fake_rabbit: + fakerabbit.reset_all() + + # attempt to wipe all keepers + #keeper = datastore.Keeper() + #keeper.clear_all() + + def flags(self, **kw): + for k, v in kw.iteritems(): + if k in self.flag_overrides: + self.reset_flags() + raise Exception( + 'trying to override already overriden flag: %s' % k) + self.flag_overrides[k] = getattr(FLAGS, k) + setattr(FLAGS, k, v) + + def reset_flags(self): + for k, v in self.flag_overrides.iteritems(): + setattr(FLAGS, k, v) + + + +class BaseTestCase(TrialTestCase): + def setUp(self): + super(BaseTestCase, self).setUp() + # TODO(termie): we could possibly keep a more global registry of + # the injected listeners... this is fine for now though + self.injected = [] + self.ioloop = ioloop.IOLoop.instance() + + self._waiting = None + self._doneWaiting = False + self._timedOut = False + self.set_up() + + def set_up(self): + pass + + def tear_down(self): + pass + + def tearDown(self): + super(BaseTestCase, self).tearDown() + for x in self.injected: + x.stop() + if FLAGS.fake_rabbit: + fakerabbit.reset_all() + self.tear_down() + + def _waitForTest(self, timeout=60): + """ Push the ioloop along to wait for our test to complete. """ + self._waiting = self.ioloop.add_timeout(time.time() + timeout, + self._timeout) + def _wait(): + if self._timedOut: + self.fail('test timed out') + self._done() + if self._doneWaiting: + self.ioloop.stop() + return + # we can use add_callback here but this uses less cpu when testing + self.ioloop.add_timeout(time.time() + 0.01, _wait) + + self.ioloop.add_callback(_wait) + self.ioloop.start() + + def _done(self): + if self._waiting: + try: + self.ioloop.remove_timeout(self._waiting) + except Exception: + pass + self._waiting = None + self._doneWaiting = True + + def _maybeInlineCallbacks(self, f): + """ If we're doing async calls in our tests, wait on them. + + This is probably the most complicated hunk of code we have so far. + + First up, if the function is normal (not async) we just act normal + and return. + + Async tests will use the "Inline Callbacks" pattern, which means + you yield Deferreds at every "waiting" step of your code instead + of making epic callback chains. + + Example (callback chain, ugly): + + d = self.node.terminate_instance(instance_id) # a Deferred instance + def _describe(_): + d_desc = self.node.describe_instances() # another Deferred instance + return d_desc + def _checkDescribe(rv): + self.assertEqual(rv, []) + d.addCallback(_describe) + d.addCallback(_checkDescribe) + d.addCallback(lambda x: self._done()) + self._waitForTest() + + Example (inline callbacks! yay!): + + yield self.node.terminate_instance(instance_id) + rv = yield self.node.describe_instances() + self.assertEqual(rv, []) + + If the test fits the Inline Callbacks pattern we will automatically + handle calling wait and done. + """ + # TODO(termie): this can be a wrapper function instead and + # and we can make a metaclass so that we don't + # have to copy all that "run" code below. + g = f() + if not hasattr(g, 'send'): + self._done() + return defer.succeed(g) + + inlined = defer.inlineCallbacks(f) + d = inlined() + return d + + def _catchExceptions(self, result, failure): + exc = (failure.type, failure.value, failure.getTracebackObject()) + if isinstance(failure.value, self.failureException): + result.addFailure(self, exc) + elif isinstance(failure.value, KeyboardInterrupt): + raise + else: + result.addError(self, exc) + + self._done() + + def _timeout(self): + self._waiting = False + self._timedOut = True + + def run(self, result=None): + if result is None: result = self.defaultTestResult() + + result.startTest(self) + testMethod = getattr(self, self._testMethodName) + try: + try: + self.setUp() + except KeyboardInterrupt: + raise + except: + result.addError(self, self._exc_info()) + return + + ok = False + try: + d = self._maybeInlineCallbacks(testMethod) + d.addErrback(lambda x: self._catchExceptions(result, x)) + d.addBoth(lambda x: self._done() and x) + self._waitForTest() + ok = True + except self.failureException: + result.addFailure(self, self._exc_info()) + except KeyboardInterrupt: + raise + except: + result.addError(self, self._exc_info()) + + try: + self.tearDown() + except KeyboardInterrupt: + raise + except: + result.addError(self, self._exc_info()) + ok = False + if ok: result.addSuccess(self) + finally: + result.stopTest(self) diff --git a/nova/tests/__init__.py b/nova/tests/__init__.py new file mode 100644 index 000000000..a4ccbbaeb --- /dev/null +++ b/nova/tests/__init__.py @@ -0,0 +1,27 @@ +# Copyright [2010] [Anso Labs, LLC] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +:mod:`nova.tests` -- Nova Unittests +===================================================== + +.. automodule:: nova.tests + :platform: Unix +.. moduleauthor:: Jesse Andrews +.. moduleauthor:: Devin Carlen +.. moduleauthor:: Vishvananda Ishaya +.. moduleauthor:: Joshua McKenty +.. moduleauthor:: Manish Singh +.. moduleauthor:: Andy Smith +""" \ No newline at end of file diff --git a/nova/utils.py b/nova/utils.py new file mode 100644 index 000000000..0cfa2cf6c --- /dev/null +++ b/nova/utils.py @@ -0,0 +1,96 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# Copyright [2010] [Anso Labs, LLC] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +System-level utilities and helper functions. +""" + +import logging +import socket +import sys +import os.path +import inspect +import subprocess +import random + +def fetchfile(url, target): + logging.debug("Fetching %s" % url) +# c = pycurl.Curl() +# fp = open(target, "wb") +# c.setopt(c.URL, url) +# c.setopt(c.WRITEDATA, fp) +# c.perform() +# c.close() +# fp.close() + execute("curl %s -o %s" % (url, target)) + +def execute(cmd, input=None): + #logging.debug("Running %s" % (cmd)) + obj = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + result = None + if input != None: + result = obj.communicate(input) + else: + result = obj.communicate() + obj.stdin.close() + if obj.returncode: + logging.debug("Result was %s" % (obj.returncode)) + return result + +def abspath(s): + return os.path.join(os.path.dirname(__file__), s) + +def default_flagfile(filename='nova.conf'): + for arg in sys.argv: + if arg.find('flagfile') != -1: + break + else: + if not os.path.isabs(filename): + # turn relative filename into an absolute path + script_dir = os.path.dirname(inspect.stack()[-1][1]) + filename = os.path.abspath(os.path.join(script_dir, filename)) + if os.path.exists(filename): + sys.argv = sys.argv[:1] + ['--flagfile=%s' % filename] + sys.argv[1:] + +def debug(arg): + logging.debug('debug in callback: %s', arg) + return arg + +def runthis(prompt, cmd): + logging.debug("Running %s" % (cmd)) + logging.debug(prompt % (subprocess.call(cmd.split(" ")))) + + +def generate_uid(topic, size=8): + return '%s-%s' % (topic, ''.join([random.choice('01234567890abcdefghijklmnopqrstuvwxyz') for x in xrange(size)])) + +def generate_mac(): + mac = [0x00, 0x16, 0x3e, random.randint(0x00, 0x7f), + random.randint(0x00, 0xff), random.randint(0x00, 0xff) + ] + return ':'.join(map(lambda x: "%02x" % x, mac)) + +def last_octet(address): + return int(address.split(".")[-1]) + +def get_my_ip(): + ''' returns the actual ip of the local machine. + ''' + csock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + csock.connect(('www.google.com', 80)) + (addr, port) = csock.getsockname() + csock.close() + return addr diff --git a/setup.py b/setup.py new file mode 100644 index 000000000..a25ae0c8c --- /dev/null +++ b/setup.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python +# Copyright [2010] [Anso Labs, LLC] +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import glob +import os +import sys + +from setuptools import setup, find_packages + +srcdir = os.path.join(os.path.dirname(sys.argv[0]), 'src') + +setup(name='nova', + version='0.3.0', + description='None Other, Vaguely Awesome', + author='nova-core', + author_email='nova-core@googlegroups.com', + url='http://novacc.org/', + packages = find_packages(), + + ) diff --git a/vendor/Twisted-10.0.0/LICENSE b/vendor/Twisted-10.0.0/LICENSE new file mode 100644 index 000000000..ebaf03c96 --- /dev/null +++ b/vendor/Twisted-10.0.0/LICENSE @@ -0,0 +1,57 @@ +Copyright (c) 2001-2010 +Allen Short +Andy Gayton +Andrew Bennetts +Antoine Pitrou +Apple Computer, Inc. +Benjamin Bruheim +Bob Ippolito +Canonical Limited +Christopher Armstrong +David Reid +Donovan Preston +Eric Mangold +Eyal Lotem +Itamar Shtull-Trauring +James Knight +Jason A. Mobarak +Jean-Paul Calderone +Jessica McKellar +Jonathan Jacobs +Jonathan Lange +Jonathan D. Simms +Jürgen Hermann +Kevin Horn +Kevin Turner +Mary Gardiner +Matthew Lefkowitz +Massachusetts Institute of Technology +Moshe Zadka +Paul Swartz +Pavel Pergamenshchik +Ralph Meijer +Sean Riley +Software Freedom Conservancy +Travis B. Hartwell +Thijs Triemstra +Thomas Herve +Timothy Allen + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/Twisted-10.0.0/doc/core/examples/threadedselect/Cocoa/SimpleWebClient/setup.py b/vendor/Twisted-10.0.0/doc/core/examples/threadedselect/Cocoa/SimpleWebClient/setup.py new file mode 100644 index 000000000..f3afe8a39 --- /dev/null +++ b/vendor/Twisted-10.0.0/doc/core/examples/threadedselect/Cocoa/SimpleWebClient/setup.py @@ -0,0 +1,14 @@ +""" +Script for building the example. + +Usage: + python setup.py py2app +""" + +from distutils.core import setup +import py2app + +setup( + app = ['Twistzilla.py'], + data_files = ["English.lproj"], +) diff --git a/vendor/Twisted-10.0.0/setup.py b/vendor/Twisted-10.0.0/setup.py new file mode 100755 index 000000000..c8b58775f --- /dev/null +++ b/vendor/Twisted-10.0.0/setup.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python + +# Copyright (c) 2001-2009 Twisted Matrix Laboratories. +# See LICENSE for details. + +""" +Distutils installer for Twisted. +""" + +try: + # Load setuptools, to build a specific source package + import setuptools +except ImportError: + pass + +import sys, os + + +def getExtensions(): + """ + Get all extensions from core and all subprojects. + """ + extensions = [] + + if not sys.platform.startswith('java'): + for dir in os.listdir("twisted") + [""]: + topfiles = os.path.join("twisted", dir, "topfiles") + if os.path.isdir(topfiles): + ns = {} + setup_py = os.path.join(topfiles, "setup.py") + execfile(setup_py, ns, ns) + if "extensions" in ns: + extensions.extend(ns["extensions"]) + + return extensions + + +def main(args): + """ + Invoke twisted.python.dist with the appropriate metadata about the + Twisted package. + """ + if os.path.exists('twisted'): + sys.path.insert(0, '.') + from twisted import copyright + from twisted.python.dist import getDataFiles, getScripts, getPackages, setup + + # "" is included because core scripts are directly in bin/ + projects = [''] + [x for x in os.listdir('bin') + if os.path.isdir(os.path.join("bin", x)) + and not x.startswith(".")] + scripts = [] + for i in projects: + scripts.extend(getScripts(i)) + + setup_args = dict( + # metadata + name="Twisted", + version=copyright.version, + description="An asynchronous networking framework written in " + "Python", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Glyph Lefkowitz", + maintainer_email="glyph@twistedmatrix.com", + url="http://twistedmatrix.com/", + license="MIT", + long_description="""\ +An extensible framework for Python programming, with special focus +on event-based network programming and multiprotocol integration. +""", + packages = getPackages('twisted'), + conditionalExtensions = getExtensions(), + scripts = scripts, + data_files=getDataFiles('twisted'), + ) + + if 'setuptools' in sys.modules: + from pkg_resources import parse_requirements + requirements = ["zope.interface"] + try: + list(parse_requirements(requirements)) + except: + print """You seem to be running a very old version of setuptools. +This version of setuptools has a bug parsing dependencies, so automatic +dependency resolution is disabled. +""" + else: + setup_args['install_requires'] = requirements + setup_args['include_package_data'] = True + setup_args['zip_safe'] = False + setup(**setup_args) + + +if __name__ == "__main__": + try: + main(sys.argv[1:]) + except KeyboardInterrupt: + sys.exit(1) + diff --git a/vendor/Twisted-10.0.0/twisted/conch/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/conch/topfiles/setup.py new file mode 100644 index 000000000..5f4090daf --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/conch/topfiles/setup.py @@ -0,0 +1,48 @@ +# Copyright (c) 2009 Twisted Matrix Laboratories. +# See LICENSE for details. + +import sys + +try: + from twisted.python import dist +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +if __name__ == '__main__': + if sys.version_info[:2] >= (2, 4): + extraMeta = dict( + classifiers=[ + "Development Status :: 4 - Beta", + "Environment :: Console", + "Environment :: No Input/Output (Daemon)", + "Intended Audience :: Developers", + "Intended Audience :: End Users/Desktop", + "Intended Audience :: System Administrators", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Topic :: Internet", + "Topic :: Security", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Terminals", + ]) + else: + extraMeta = {} + + dist.setup( + twisted_subproject="conch", + scripts=dist.getScripts("conch"), + # metadata + name="Twisted Conch", + description="Twisted SSHv2 implementation.", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Paul Swartz", + url="http://twistedmatrix.com/trac/wiki/TwistedConch", + license="MIT", + long_description="""\ +Conch is an SSHv2 implementation using the Twisted framework. It +includes a server, client, a SFTP client, and a key generator. +""", + **extraMeta) diff --git a/vendor/Twisted-10.0.0/twisted/internet/cfsupport/setup.py b/vendor/Twisted-10.0.0/twisted/internet/cfsupport/setup.py new file mode 100644 index 000000000..e5b3b2d06 --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/internet/cfsupport/setup.py @@ -0,0 +1,50 @@ +from distutils.core import setup +from distutils.extension import Extension +try: + from Pyrex.Distutils import build_ext + # pyrex is available + setup( + name = 'cfsupport', + version = '0.4', + description = "Enough CoreFoundation wrappers to deal with CFRunLoop", + long_description = "Pythonic wrappers for pieces of Apple's CoreFoundation API's that are not otherwise wrapped by MacPython.\nPrimarily useful for dealing with CFRunLoop.", + maintainer = 'Bob Ippolito', + maintainer_email = 'bob@redivi.com', + license = 'Python', + platforms = ['Mac OSX'], + keywords = ['CoreFoundation', 'CFRunLoop', 'Cocoa', 'GUI'], + ext_modules=[ + Extension( + 'cfsupport', + ['cfsupport.pyx'], + extra_link_args=[ + '-framework','CoreFoundation', + '-framework','CoreServices', + ], + ), + ], + cmdclass = {'build_ext': build_ext} + ) +except ImportError: + # pyrex is not available, use existing .c + setup( + name = 'cfsupport', + version = '0.4', + description = "Enough CoreFoundation wrappers to deal with CFRunLoop", + long_description = "Pythonic wrappers for pieces of Apple's CoreFoundation API's that are not otherwise wrapped by MacPython.\nPrimarily useful for dealing with CFRunLoop.", + maintainer = 'Bob Ippolito', + maintainer_email = 'bob@redivi.com', + license = 'Python', + platforms = ['Mac OSX'], + keywords = ['CoreFoundation', 'CFRunLoop', 'Cocoa', 'GUI'], + ext_modules=[ + Extension( + 'cfsupport', + ['cfsupport.c'], + extra_link_args=[ + '-framework','CoreFoundation', + '-framework','CoreServices', + ], + ), + ], + ) diff --git a/vendor/Twisted-10.0.0/twisted/internet/iocpreactor/setup.py b/vendor/Twisted-10.0.0/twisted/internet/iocpreactor/setup.py new file mode 100644 index 000000000..6a70d5577 --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/internet/iocpreactor/setup.py @@ -0,0 +1,23 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + + +""" +Distutils file for building low-level IOCP bindings from their Pyrex source +""" + + +from distutils.core import setup +from distutils.extension import Extension +from Pyrex.Distutils import build_ext + +setup(name='iocpsupport', + ext_modules=[Extension('iocpsupport', + ['iocpsupport/iocpsupport.pyx', + 'iocpsupport/winsock_pointers.c'], + libraries = ['ws2_32'], + ) + ], + cmdclass = {'build_ext': build_ext}, + ) + diff --git a/vendor/Twisted-10.0.0/twisted/lore/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/lore/topfiles/setup.py new file mode 100644 index 000000000..e8072f539 --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/lore/topfiles/setup.py @@ -0,0 +1,29 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + +import sys + +try: + from twisted.python import dist +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +if __name__ == '__main__': + dist.setup( + twisted_subproject="lore", + scripts=dist.getScripts("lore"), + # metadata + name="Twisted Lore", + description="Twisted documentation system", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Andrew Bennetts", + url="http://twistedmatrix.com/trac/wiki/TwistedLore", + license="MIT", + long_description="""\ +Twisted Lore is a documentation generator with HTML and LaTeX support, +used in the Twisted project. +""", + ) diff --git a/vendor/Twisted-10.0.0/twisted/mail/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/mail/topfiles/setup.py new file mode 100644 index 000000000..c7028fd21 --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/mail/topfiles/setup.py @@ -0,0 +1,50 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + +import sys + +try: + from twisted.python import dist +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +if __name__ == '__main__': + if sys.version_info[:2] >= (2, 4): + extraMeta = dict( + classifiers=[ + "Development Status :: 4 - Beta", + "Environment :: No Input/Output (Daemon)", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Topic :: Communications :: Email :: Post-Office :: IMAP", + "Topic :: Communications :: Email :: Post-Office :: POP3", + "Topic :: Software Development :: Libraries :: Python Modules", + ]) + else: + extraMeta = {} + + dist.setup( + twisted_subproject="mail", + scripts=dist.getScripts("mail"), + # metadata + name="Twisted Mail", + description="A Twisted Mail library, server and client.", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Jp Calderone", + url="http://twistedmatrix.com/trac/wiki/TwistedMail", + license="MIT", + long_description="""\ +An SMTP, IMAP and POP protocol implementation together with clients +and servers. + +Twisted Mail contains high-level, efficient protocol implementations +for both clients and servers of SMTP, POP3, and IMAP4. Additionally, +it contains an "out of the box" combination SMTP/POP3 virtual-hosting +mail server. Also included is a read/write Maildir implementation and +a basic Mail Exchange calculator. +""", + **extraMeta) diff --git a/vendor/Twisted-10.0.0/twisted/names/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/names/topfiles/setup.py new file mode 100644 index 000000000..164986d23 --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/names/topfiles/setup.py @@ -0,0 +1,50 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + +import sys + +try: + from twisted.python import dist +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +if __name__ == '__main__': + if sys.version_info[:2] >= (2, 4): + extraMeta = dict( + classifiers=[ + "Development Status :: 4 - Beta", + "Environment :: No Input/Output (Daemon)", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Topic :: Internet :: Name Service (DNS)", + "Topic :: Software Development :: Libraries :: Python Modules", + ]) + else: + extraMeta = {} + + dist.setup( + twisted_subproject="names", + # metadata + name="Twisted Names", + description="A Twisted DNS implementation.", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Jp Calderone", + url="http://twistedmatrix.com/trac/wiki/TwistedNames", + license="MIT", + long_description="""\ +Twisted Names is both a domain name server as well as a client +resolver library. Twisted Names comes with an "out of the box" +nameserver which can read most BIND-syntax zone files as well as a +simple Python-based configuration format. Twisted Names can act as an +authoritative server, perform zone transfers from a master to act as a +secondary, act as a caching nameserver, or any combination of +these. Twisted Names' client resolver library provides functions to +query for all commonly used record types as well as a replacement for +the blocking gethostbyname() function provided by the Python stdlib +socket module. +""", + **extraMeta) diff --git a/vendor/Twisted-10.0.0/twisted/news/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/news/topfiles/setup.py new file mode 100644 index 000000000..c0a8abeb4 --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/news/topfiles/setup.py @@ -0,0 +1,28 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + +try: + from twisted.python import dist +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +if __name__ == '__main__': + dist.setup( + twisted_subproject="news", + # metadata + name="Twisted News", + description="Twisted News is an NNTP server and programming library.", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Jp Calderone", + url="http://twistedmatrix.com/trac/wiki/TwistedNews", + license="MIT", + long_description="""\ +Twisted News is an NNTP protocol (Usenet) programming library. The +library contains server and client protocol implementations. A simple +NNTP server is also provided. +""", + ) + diff --git a/vendor/Twisted-10.0.0/twisted/pair/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/pair/topfiles/setup.py new file mode 100644 index 000000000..134627964 --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/pair/topfiles/setup.py @@ -0,0 +1,28 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + +import sys + +try: + from twisted.python import dist +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +if __name__ == '__main__': + dist.setup( + twisted_subproject="pair", + # metadata + name="Twisted Pair", + description="Twisted Pair contains low-level networking support.", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Tommi Virtanen", + url="http://twistedmatrix.com/trac/wiki/TwistedPair", + license="MIT", + long_description=""" +Raw network packet parsing routines, including ethernet, IP and UDP +packets, and tuntap support. +""", + ) diff --git a/vendor/Twisted-10.0.0/twisted/runner/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/runner/topfiles/setup.py new file mode 100644 index 000000000..bf765b75c --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/runner/topfiles/setup.py @@ -0,0 +1,35 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + +try: + from twisted.python.dist import setup, ConditionalExtension as Extension +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +extensions = [ + Extension("twisted.runner.portmap", + ["twisted/runner/portmap.c"], + condition=lambda builder: builder._check_header("rpc/rpc.h")), +] + +if __name__ == '__main__': + setup( + twisted_subproject="runner", + # metadata + name="Twisted Runner", + description="Twisted Runner is a process management library and inetd " + "replacement.", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Andrew Bennetts", + url="http://twistedmatrix.com/trac/wiki/TwistedRunner", + license="MIT", + long_description="""\ +Twisted Runner contains code useful for persistent process management +with Python and Twisted, and has an almost full replacement for inetd. +""", + # build stuff + conditionalExtensions=extensions, + ) diff --git a/vendor/Twisted-10.0.0/twisted/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/topfiles/setup.py new file mode 100644 index 000000000..a135c77fb --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/topfiles/setup.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python + +# Copyright (c) 2001-2009 Twisted Matrix Laboratories. +# See LICENSE for details. + + +""" +Distutils installer for Twisted. +""" + +import os, sys + +if sys.version_info < (2,3): + print >>sys.stderr, "You must use at least Python 2.3 for Twisted" + sys.exit(3) + +if os.path.exists('twisted'): + sys.path.insert(0, '.') # eek! need this to import twisted. sorry. +from twisted import copyright +from twisted.python.dist import setup, ConditionalExtension as Extension +from twisted.python.dist import getPackages, getDataFiles, getScripts +from twisted.python.dist import twisted_subprojects + + + +extensions = [ + Extension("twisted.protocols._c_urlarg", + ["twisted/protocols/_c_urlarg.c"]), + + Extension("twisted.test.raiser", + ["twisted/test/raiser.c"]), + + Extension("twisted.python._epoll", + ["twisted/python/_epoll.c"], + condition=lambda builder: builder._check_header("sys/epoll.h")), + + Extension("twisted.internet.iocpreactor.iocpsupport", + ["twisted/internet/iocpreactor/iocpsupport/iocpsupport.c", + "twisted/internet/iocpreactor/iocpsupport/winsock_pointers.c"], + libraries=["ws2_32"], + condition=lambda builder: sys.platform == "win32"), + + Extension("twisted.internet.cfsupport", + ["twisted/internet/cfsupport/cfsupport.c"], + extra_compile_args=['-w'], + extra_link_args=['-framework','CoreFoundation', + '-framework','CoreServices', + '-framework','Carbon'], + condition=lambda builder: sys.platform == "darwin"), + + Extension("twisted.python._initgroups", + ["twisted/python/_initgroups.c"]), +] + +# Figure out which plugins to include: all plugins except subproject ones +subProjectsPlugins = ['twisted_%s.py' % subProject + for subProject in twisted_subprojects] +plugins = os.listdir(os.path.join( + os.path.dirname(os.path.abspath(copyright.__file__)), 'plugins')) +plugins = [plugin[:-3] for plugin in plugins if plugin.endswith('.py') and + plugin not in subProjectsPlugins] + + + +setup_args = dict( + # metadata + name="Twisted Core", + version=copyright.version, + description="The core parts of the Twisted networking framework", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Glyph Lefkowitz", + url="http://twistedmatrix.com/", + license="MIT", + long_description="""\ +This is the core of Twisted, including: + * Networking support (twisted.internet) + * Trial, the unit testing framework (twisted.trial) + * AMP, the Asynchronous Messaging Protocol (twisted.protocols.amp) + * Twisted Spread, a remote object system (twisted.spread) + * Utility code (twisted.python) + * Basic abstractions that multiple subprojects use + (twisted.cred, twisted.application, twisted.plugin) + * Database connectivity support (twisted.enterprise) + * A few basic protocols and protocol abstractions (twisted.protocols) +""", + + # build stuff + packages=getPackages('twisted', + ignore=twisted_subprojects + ['plugins']), + plugins=plugins, + data_files=getDataFiles('twisted', ignore=twisted_subprojects), + conditionalExtensions=extensions, + scripts = getScripts(""), +) + + +if __name__ == '__main__': + setup(**setup_args) diff --git a/vendor/Twisted-10.0.0/twisted/web/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/web/topfiles/setup.py new file mode 100644 index 000000000..15eefc0ae --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/web/topfiles/setup.py @@ -0,0 +1,30 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + +import sys + +try: + from twisted.python import dist +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +if __name__ == '__main__': + dist.setup( + twisted_subproject="web", + scripts=dist.getScripts("web"), + # metadata + name="Twisted Web", + description="Twisted web server, programmable in Python.", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="James Knight", + url="http://twistedmatrix.com/trac/wiki/TwistedWeb", + license="MIT", + long_description="""\ +Twisted Web is a complete web server, aimed at hosting web +applications using Twisted and Python, but fully able to serve static +pages, also. +""", + ) diff --git a/vendor/Twisted-10.0.0/twisted/words/topfiles/setup.py b/vendor/Twisted-10.0.0/twisted/words/topfiles/setup.py new file mode 100644 index 000000000..fb33c62f8 --- /dev/null +++ b/vendor/Twisted-10.0.0/twisted/words/topfiles/setup.py @@ -0,0 +1,53 @@ +# Copyright (c) 2008 Twisted Matrix Laboratories. +# See LICENSE for details. + +import sys + +try: + from twisted.python import dist +except ImportError: + raise SystemExit("twisted.python.dist module not found. Make sure you " + "have installed the Twisted core package before " + "attempting to install any other Twisted projects.") + +if __name__ == '__main__': + if sys.version_info[:2] >= (2, 4): + extraMeta = dict( + classifiers=[ + "Development Status :: 4 - Beta", + "Environment :: No Input/Output (Daemon)", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python", + "Topic :: Communications :: Chat", + "Topic :: Communications :: Chat :: AOL Instant Messenger", + "Topic :: Communications :: Chat :: ICQ", + "Topic :: Communications :: Chat :: Internet Relay Chat", + "Topic :: Internet", + "Topic :: Software Development :: Libraries :: Python Modules", + ]) + else: + extraMeta = {} + + dist.setup( + twisted_subproject="words", + scripts=dist.getScripts("words"), + # metadata + name="Twisted Words", + description="Twisted Words contains Instant Messaging implementations.", + author="Twisted Matrix Laboratories", + author_email="twisted-python@twistedmatrix.com", + maintainer="Jp Calderone", + url="http://twistedmatrix.com/trac/wiki/TwistedWords", + license="MIT", + long_description="""\ +Twisted Words contains implementations of many Instant Messaging +protocols, including IRC, Jabber, MSN, OSCAR (AIM & ICQ), TOC (AOL), +and some functionality for creating bots, inter-protocol gateways, and +a client application for many of the protocols. + +In support of Jabber, Twisted Words also contains X-ish, a library for +processing XML with Twisted and Python, with support for a Pythonic DOM and +an XPath-like toolkit. +""", + **extraMeta) diff --git a/vendor/boto/boto/vpc/customergateway.py b/vendor/boto/boto/vpc/customergateway.py new file mode 100644 index 000000000..c50a616d5 --- /dev/null +++ b/vendor/boto/boto/vpc/customergateway.py @@ -0,0 +1,54 @@ +# Copyright (c) 2009 Mitch Garnaat http://garnaat.org/ +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, dis- +# tribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the fol- +# lowing conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- +# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +""" +Represents a Customer Gateway +""" + +from boto.ec2.ec2object import EC2Object + +class CustomerGateway(EC2Object): + + def __init__(self, connection=None): + EC2Object.__init__(self, connection) + self.id = None + self.type = None + self.state = None + self.ip_address = None + self.bgp_asn = None + + def __repr__(self): + return 'CustomerGateway:%s' % self.id + + def endElement(self, name, value, connection): + if name == 'customerGatewayId': + self.id = value + elif name == 'ipAddress': + self.ip_address = value + elif name == 'type': + self.type = value + elif name == 'state': + self.state = value + elif name == 'bgpAsn': + self.bgp_asn = value + else: + setattr(self, name, value) + diff --git a/vendor/boto/boto/vpc/vpngateway.py b/vendor/boto/boto/vpc/vpngateway.py new file mode 100644 index 000000000..0fa0a9efd --- /dev/null +++ b/vendor/boto/boto/vpc/vpngateway.py @@ -0,0 +1,80 @@ +# Copyright (c) 2009 Mitch Garnaat http://garnaat.org/ +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, dis- +# tribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the fol- +# lowing conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- +# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +""" +Represents a Vpn Gateway +""" + +from boto.ec2.ec2object import EC2Object + +class Attachment(object): + + def __init__(self, connection=None): + self.vpc_id = None + self.state = None + + def startElement(self, name, attrs, connection): + pass + + def endElement(self, name, value, connection): + if name == 'vpcId': + self.vpc_id = value + elif name == 'state': + self.state = value + else: + setattr(self, name, value) + +class VpnGateway(EC2Object): + + def __init__(self, connection=None): + EC2Object.__init__(self, connection) + self.id = None + self.type = None + self.state = None + self.availability_zone = None + self.attachments = [] + + def __repr__(self): + return 'VpnGateway:%s' % self.id + + def startElement(self, name, attrs, connection): + if name == 'item': + att = Attachment() + self.attachments.append(att) + return att + + def endElement(self, name, value, connection): + if name == 'vpnGatewayId': + self.id = value + elif name == 'type': + self.type = value + elif name == 'state': + self.state = value + elif name == 'availabilityZone': + self.availability_zone = value + elif name == 'attachments': + pass + else: + setattr(self, name, value) + + def attach(self, vpc_id): + return self.connection.attach_vpn_gateway(self.id, vpc_id) + diff --git a/vendor/boto/setup.py b/vendor/boto/setup.py new file mode 100644 index 000000000..bbfbf4a1a --- /dev/null +++ b/vendor/boto/setup.py @@ -0,0 +1,56 @@ +#!/usr/bin/python + +# Copyright (c) 2006-2009 Mitch Garnaat http://garnaat.org/ +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, dis- +# tribute, sublicense, and/or sell copies of the Software, and to permit +# persons to whom the Software is furnished to do so, subject to the fol- +# lowing conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- +# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT +# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +try: + from setuptools import setup +except ImportError: + from distutils.core import setup + +from boto import Version + +setup(name = "boto", + version = Version, + description = "Amazon Web Services Library", + long_description="Python interface to Amazon's Web Services.", + author = "Mitch Garnaat", + author_email = "mitch@garnaat.com", + scripts = ["bin/sdbadmin", "bin/elbadmin", "bin/cfadmin", + "bin/s3put", "bin/fetch_file", "bin/launch_instance", + "bin/list_instances", "bin/taskadmin", "bin/kill_instance", + "bin/bundle_image", "bin/pyami_sendmail"], + url = "http://code.google.com/p/boto/", + packages = [ 'boto', 'boto.sqs', 'boto.s3', + 'boto.ec2', 'boto.ec2.cloudwatch', 'boto.ec2.autoscale', 'boto.ec2.elb', + 'boto.sdb', 'boto.sdb.persist', 'boto.sdb.db', 'boto.sdb.db.manager', + 'boto.mturk', 'boto.pyami', 'boto.mashups', 'boto.contrib', 'boto.manage', + 'boto.services', 'boto.tests', 'boto.cloudfront', 'boto.rds', 'boto.vpc', + 'boto.fps', 'boto.emr'], + license = 'MIT', + platforms = 'Posix; MacOS X; Windows', + classifiers = [ 'Development Status :: 3 - Alpha', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + 'Topic :: Internet', + ], + ) diff --git a/vendor/lockfile/LICENSE b/vendor/lockfile/LICENSE new file mode 100644 index 000000000..610c0793f --- /dev/null +++ b/vendor/lockfile/LICENSE @@ -0,0 +1,21 @@ +This is the MIT license: http://www.opensource.org/licenses/mit-license.php + +Copyright (c) 2007 Skip Montanaro. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/vendor/lockfile/setup.py b/vendor/lockfile/setup.py new file mode 100644 index 000000000..3e407f57a --- /dev/null +++ b/vendor/lockfile/setup.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python + +V = "0.9" + +from distutils.core import setup +setup(name='lockfile', + author='Skip Montanaro', + author_email='skip@pobox.com', + url='http://smontanaro.dyndns.org/python/', + download_url=('http://smontanaro.dyndns.org/python/lockfile-%s.tar.gz' % + V), + version=V, + description="Platform-independent file locking module", + long_description=open("README").read(), + packages=['lockfile'], + license='MIT License', + classifiers=[ + 'Development Status :: 4 - Beta', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: MacOS', + 'Operating System :: Microsoft :: Windows :: Windows NT/2000', + 'Operating System :: POSIX', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2.4', + 'Programming Language :: Python :: 2.5', + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.0', + 'Topic :: Software Development :: Libraries :: Python Modules', + ] + ) diff --git a/vendor/pymox/setup.py b/vendor/pymox/setup.py new file mode 100755 index 000000000..0a981ad2d --- /dev/null +++ b/vendor/pymox/setup.py @@ -0,0 +1,14 @@ +#!/usr/bin/python2.4 +from distutils.core import setup + +setup(name='mox', + version='0.5.2', + py_modules=['mox', 'stubout'], + url='http://code.google.com/p/pymox/', + maintainer='pymox maintainers', + maintainer_email='mox-discuss@googlegroups.com', + license='Apache License, Version 2.0', + description='Mock object framework', + long_description='''Mox is a mock object framework for Python based on the +Java mock object framework EasyMock.''', + ) diff --git a/vendor/python-daemon/LICENSE.GPL-2 b/vendor/python-daemon/LICENSE.GPL-2 new file mode 100644 index 000000000..d511905c1 --- /dev/null +++ b/vendor/python-daemon/LICENSE.GPL-2 @@ -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. + + + Copyright (C) + + 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. + + , 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/vendor/python-daemon/LICENSE.PSF-2 b/vendor/python-daemon/LICENSE.PSF-2 new file mode 100644 index 000000000..28533b6c5 --- /dev/null +++ b/vendor/python-daemon/LICENSE.PSF-2 @@ -0,0 +1,48 @@ +PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 +-------------------------------------------- + +1. This LICENSE AGREEMENT is between the Python Software Foundation +("PSF"), and the Individual or Organization ("Licensee") accessing and +otherwise using this software ("Python") in source or binary form and +its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, PSF +hereby grants Licensee a nonexclusive, royalty-free, world-wide +license to reproduce, analyze, test, perform and/or display publicly, +prepare derivative works, distribute, and otherwise use Python +alone or in any derivative version, provided, however, that PSF's +License Agreement and PSF's notice of copyright, i.e., "Copyright (c) +2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation; +All Rights Reserved" are retained in Python alone or in any derivative +version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on +or incorporates Python or any part thereof, and wants to make +the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to Python. + +4. PSF is making Python available to Licensee on an "AS IS" +basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT +INFRINGE ANY THIRD PARTY RIGHTS. + +5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON +FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS +A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, +OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between PSF and +Licensee. This License Agreement does not grant permission to use PSF +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using Python, Licensee +agrees to be bound by the terms and conditions of this License +Agreement. diff --git a/vendor/python-daemon/setup.cfg b/vendor/python-daemon/setup.cfg new file mode 100644 index 000000000..861a9f554 --- /dev/null +++ b/vendor/python-daemon/setup.cfg @@ -0,0 +1,5 @@ +[egg_info] +tag_build = +tag_date = 0 +tag_svn_revision = 0 + diff --git a/vendor/python-daemon/setup.py b/vendor/python-daemon/setup.py new file mode 100644 index 000000000..8570c8ae2 --- /dev/null +++ b/vendor/python-daemon/setup.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +# setup.py +# Part of python-daemon, an implementation of PEP 3143. +# +# Copyright © 2008–2010 Ben Finney +# Copyright © 2008 Robert Niederreiter, Jens Klein +# +# This is free software: you may copy, modify, and/or distribute this work +# under the terms of the Python Software Foundation License, version 2 or +# later as published by the Python Software Foundation. +# No warranty expressed or implied. See the file LICENSE.PSF-2 for details. + +""" Distribution setup for python-daemon library. + """ + +import textwrap +from setuptools import setup, find_packages + +distribution_name = "python-daemon" +main_module_name = 'daemon' +main_module = __import__(main_module_name, fromlist=['version']) +version = main_module.version + +short_description, long_description = ( + textwrap.dedent(d).strip() + for d in main_module.__doc__.split(u'\n\n', 1) + ) + + +setup( + name=distribution_name, + version=version.version, + packages=find_packages(exclude=["test"]), + + # setuptools metadata + zip_safe=False, + test_suite="test.suite", + tests_require=[ + "MiniMock >=1.2.2", + ], + install_requires=[ + "setuptools", + "lockfile >=0.7", + ], + + # PyPI metadata + author=version.author_name, + author_email=version.author_email, + description=short_description, + license=version.license, + keywords=u"daemon fork unix".split(), + url=main_module._url, + long_description=long_description, + classifiers=[ + # Reference: http://pypi.python.org/pypi?%3Aaction=list_classifiers + "Development Status :: 4 - Beta", + "License :: OSI Approved :: Python Software Foundation License", + "Operating System :: POSIX", + "Programming Language :: Python", + "Intended Audience :: Developers", + "Topic :: Software Development :: Libraries :: Python Modules", + ], + ) diff --git a/vendor/python-gflags/setup.py b/vendor/python-gflags/setup.py new file mode 100755 index 000000000..26820a627 --- /dev/null +++ b/vendor/python-gflags/setup.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python + +# Copyright (c) 2007, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from setuptools import setup + +setup(name='python-gflags', + version='1.3', + description='Google Commandline Flags Module', + license='BSD', + author='Google Inc.', + author_email='opensource@google.com', + url='http://code.google.com/p/python-gflags', + py_modules=["gflags"], + data_files=[("bin", ["gflags2man.py"])], + include_package_data=True, + ) diff --git a/vendor/redis-py/.gitignore b/vendor/redis-py/.gitignore new file mode 100755 index 000000000..0ed6db73c --- /dev/null +++ b/vendor/redis-py/.gitignore @@ -0,0 +1,5 @@ +*.pyc +redis.egg-info +build/ +dist/ +dump.rdb diff --git a/vendor/redis-py/LICENSE b/vendor/redis-py/LICENSE new file mode 100755 index 000000000..073b05cec --- /dev/null +++ b/vendor/redis-py/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2010 Andy McCurdy + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/redis-py/setup.py b/vendor/redis-py/setup.py new file mode 100755 index 000000000..0660371df --- /dev/null +++ b/vendor/redis-py/setup.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python + +""" +@file setup.py +@author Andy McCurdy +@date 2/12/2010 +@brief Setuptools configuration for redis client +""" + +version = '1.36' + +sdict = { + 'name' : 'redis', + 'version' : version, + 'description' : 'Python client for Redis key-value store', + 'long_description' : 'Python client for Redis key-value store', + 'url': 'http://github.com/andymccurdy/redis-py', + 'download_url' : 'http://cloud.github.com/downloads/andymccurdy/redis-py/redis-%s.tar.gz' % version, + 'author' : 'Andy McCurdy', + 'author_email' : 'sedrik@gmail.com', + 'maintainer' : 'Andy McCurdy', + 'maintainer_email' : 'sedrik@gmail.com', + 'keywords' : ['Redis', 'key-value store'], + 'license' : 'MIT', + 'packages' : ['redis'], + 'test_suite' : 'tests.all_tests', + 'classifiers' : [ + 'Development Status :: 4 - Beta', + 'Environment :: Console', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + 'Programming Language :: Python'], +} + +try: + from setuptools import setup +except ImportError: + from distutils.core import setup + +setup(**sdict) + diff --git a/vendor/tornado/setup.py b/vendor/tornado/setup.py new file mode 100644 index 000000000..5cb69df2d --- /dev/null +++ b/vendor/tornado/setup.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# +# Copyright 2009 Facebook +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import distutils.core +import sys +# Importing setuptools adds some features like "setup.py develop", but +# it's optional so swallow the error if it's not there. +try: + import setuptools +except ImportError: + pass + +# Build the epoll extension for Linux systems with Python < 2.6 +extensions = [] +major, minor = sys.version_info[:2] +python_26 = (major > 2 or (major == 2 and minor >= 6)) +if "linux" in sys.platform.lower() and not python_26: + extensions.append(distutils.core.Extension( + "tornado.epoll", ["tornado/epoll.c"])) + +distutils.core.setup( + name="tornado", + version="0.2", + packages = ["tornado"], + ext_modules = extensions, + author="Facebook", + author_email="python-tornado@googlegroups.com", + url="http://www.tornadoweb.org/", + license="http://www.apache.org/licenses/LICENSE-2.0", + description="Tornado is an open source version of the scalable, non-blocking web server and and tools that power FriendFeed", +)