|  | @@ -7,23 +7,90 @@ import platform
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  try:
 | 
	
		
			
				|  |  |      from setuptools import setup, find_packages, Command
 | 
	
		
			
				|  |  | -    from setuptools.command.test import test as TestCommand
 | 
	
		
			
				|  |  | +    from setuptools.command.test import test
 | 
	
		
			
				|  |  | +    from setuptools.command.install import install
 | 
	
		
			
				|  |  |  except ImportError:
 | 
	
		
			
				|  |  |      from ez_setup import use_setuptools
 | 
	
		
			
				|  |  |      use_setuptools()
 | 
	
		
			
				|  |  |      from setuptools import setup, find_packages, Command
 | 
	
		
			
				|  |  | -    from setuptools.command.test import test as TestCommand
 | 
	
		
			
				|  |  | +    from setuptools.command.test import test
 | 
	
		
			
				|  |  | +    from setuptools.command.install import install
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import celery as distmeta
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -class QuickRunTests(TestCommand):
 | 
	
		
			
				|  |  | +def with_dist_not_in_path(fun):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def _inner(*args, **kwargs):
 | 
	
		
			
				|  |  | +        cwd = os.getcwd()
 | 
	
		
			
				|  |  | +        removed = []
 | 
	
		
			
				|  |  | +        for path in (cwd, cwd + "/", "."):
 | 
	
		
			
				|  |  | +            try:
 | 
	
		
			
				|  |  | +                i = sys.path.index(path)
 | 
	
		
			
				|  |  | +            except ValueError:
 | 
	
		
			
				|  |  | +                pass
 | 
	
		
			
				|  |  | +            else:
 | 
	
		
			
				|  |  | +                removed.append((i, path))
 | 
	
		
			
				|  |  | +                sys.path.remove(path)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            dist_module = sys.modules.pop("celery", None)
 | 
	
		
			
				|  |  | +            try:
 | 
	
		
			
				|  |  | +                import celery as existing_module
 | 
	
		
			
				|  |  | +            except ImportError, exc:
 | 
	
		
			
				|  |  | +                pass
 | 
	
		
			
				|  |  | +            else:
 | 
	
		
			
				|  |  | +                return fun(*args, celery=existing_module, **kwargs)
 | 
	
		
			
				|  |  | +        finally:
 | 
	
		
			
				|  |  | +            for i, path in removed:
 | 
	
		
			
				|  |  | +                sys.path.insert(i, path)
 | 
	
		
			
				|  |  | +            if dist_module:
 | 
	
		
			
				|  |  | +                sys.modules["celery"] = dist_module
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    return _inner
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class Upgrade(object):
 | 
	
		
			
				|  |  | +    old_modules = ("platform", )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def run(self):
 | 
	
		
			
				|  |  | +        path = self.detect_existing_installation()
 | 
	
		
			
				|  |  | +        if path:
 | 
	
		
			
				|  |  | +            self.remove_modules(path)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @with_dist_not_in_path
 | 
	
		
			
				|  |  | +    def detect_existing_installation(self, celery=None):
 | 
	
		
			
				|  |  | +        path = os.path.dirname(celery.__file__)
 | 
	
		
			
				|  |  | +        sys.stderr.write("* Upgrading old Celery from: \n\t%r\n" % path)
 | 
	
		
			
				|  |  | +        return path
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def try_remove(self, file):
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            os.remove(file)
 | 
	
		
			
				|  |  | +        except OSError:
 | 
	
		
			
				|  |  | +            pass
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def remove_modules(self, path):
 | 
	
		
			
				|  |  | +        for module_name in self.old_modules:
 | 
	
		
			
				|  |  | +            sys.stderr.write("* Removing old %s.py...\n" % module_name)
 | 
	
		
			
				|  |  | +            self.try_remove(os.path.join(path, "%s.py" % module_name))
 | 
	
		
			
				|  |  | +            self.try_remove(os.path.join(path, "%s.pyc" % module_name))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class quicktest(test):
 | 
	
		
			
				|  |  |      extra_env = dict(SKIP_RLIMITS=1, QUICKTEST=1)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def run(self, *args, **kwargs):
 | 
	
		
			
				|  |  |          for env_name, env_value in self.extra_env.items():
 | 
	
		
			
				|  |  |              os.environ[env_name] = str(env_value)
 | 
	
		
			
				|  |  | -        TestCommand.run(self, *args, **kwargs)
 | 
	
		
			
				|  |  | +        test.run(self, *args, **kwargs)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class upgrade(install):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def run(self, *args, **kwargs):
 | 
	
		
			
				|  |  | +        Upgrade().run()
 | 
	
		
			
				|  |  | +        install.run(self, *args, **kwargs)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  install_requires = []
 | 
	
	
		
			
				|  | @@ -68,7 +135,7 @@ setup(
 | 
	
		
			
				|  |  |      zip_safe=False,
 | 
	
		
			
				|  |  |      install_requires=install_requires,
 | 
	
		
			
				|  |  |      tests_require=['nose', 'nose-cover3', 'unittest2', 'simplejson'],
 | 
	
		
			
				|  |  | -    cmdclass={"quicktest": QuickRunTests},
 | 
	
		
			
				|  |  | +    cmdclass={"install": upgrade, "quicktest": quicktest},
 | 
	
		
			
				|  |  |      test_suite="nose.collector",
 | 
	
		
			
				|  |  |      classifiers=[
 | 
	
		
			
				|  |  |          "Development Status :: 5 - Production/Stable",
 |