Commits

Jason R. Coombs  committed fec0306 Merge

Merged in vinay.sajip/setuptools/single-codebase (pull request #5)

Additional changes relating to single codebase support

  • Participants
  • Parent commits 512744f, 58a6734

Comments (0)

Files changed (38)

 *.swp
 .coverage
 distribute.egg-info
+setuptools.egg-info
 build
 dist
 lib

File docs/conf.py

 master_doc = 'index'
 
 # General information about the project.
-project = u'Setuptools'
-copyright = u'2009-2013, The fellowship of the packaging'
+project = 'Setuptools'
+copyright = '2009-2013, The fellowship of the packaging'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # Grouping the document tree into LaTeX files. List of tuples
 # (source start file, target name, title, author, documentclass [howto/manual]).
 latex_documents = [
-  ('index', 'Setuptools.tex', ur'Setuptools Documentation',
-   ur'The fellowship of the packaging', 'manual'),
+  ('index', 'Setuptools.tex', 'Setuptools Documentation',
+   'The fellowship of the packaging', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of

File pkg_resources.py

     def parse_map(cls, data, dist=None):
         """Parse a map of entry point groups"""
         if isinstance(data,dict):
-            data = list(data.items())
+            data = data.items()
         else:
             data = split_sections(data)
         maps = {}
 add_activation_listener(lambda dist: dist.activate())
 working_set.entries=[]; list(map(working_set.add_entry,sys.path)) # match order
 
-

File release.py

File contents unchanged.

File setup.py

File contents unchanged.

File setuptools.egg-info/entry_points.txt

-[distutils.commands]
-bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm
-rotate = setuptools.command.rotate:rotate
-develop = setuptools.command.develop:develop
-setopt = setuptools.command.setopt:setopt
-build_py = setuptools.command.build_py:build_py
-saveopts = setuptools.command.saveopts:saveopts
-egg_info = setuptools.command.egg_info:egg_info
-register = setuptools.command.register:register
-upload_docs = setuptools.command.upload_docs:upload_docs
-install_egg_info = setuptools.command.install_egg_info:install_egg_info
-alias = setuptools.command.alias:alias
-easy_install = setuptools.command.easy_install:easy_install
-install_scripts = setuptools.command.install_scripts:install_scripts
-bdist_wininst = setuptools.command.bdist_wininst:bdist_wininst
-bdist_egg = setuptools.command.bdist_egg:bdist_egg
-install = setuptools.command.install:install
-test = setuptools.command.test:test
-install_lib = setuptools.command.install_lib:install_lib
-build_ext = setuptools.command.build_ext:build_ext
-sdist = setuptools.command.sdist:sdist
-
-[egg_info.writers]
-dependency_links.txt = setuptools.command.egg_info:overwrite_arg
-requires.txt = setuptools.command.egg_info:write_requirements
-PKG-INFO = setuptools.command.egg_info:write_pkg_info
-eager_resources.txt = setuptools.command.egg_info:overwrite_arg
-top_level.txt = setuptools.command.egg_info:write_toplevel_names
-namespace_packages.txt = setuptools.command.egg_info:overwrite_arg
-entry_points.txt = setuptools.command.egg_info:write_entries
-depends.txt = setuptools.command.egg_info:warn_depends_obsolete
-
-[console_scripts]
-easy_install = setuptools.command.easy_install:main
-easy_install-2.7 = setuptools.command.easy_install:main
-
-[setuptools.file_finders]
-svn_cvs = setuptools.command.sdist:_default_revctrl
-
-[distutils.setup_keywords]
-dependency_links = setuptools.dist:assert_string_list
-entry_points = setuptools.dist:check_entry_points
-extras_require = setuptools.dist:check_extras
-use_2to3_exclude_fixers = setuptools.dist:assert_string_list
-package_data = setuptools.dist:check_package_data
-install_requires = setuptools.dist:check_requirements
-use_2to3 = setuptools.dist:assert_bool
-use_2to3_fixers = setuptools.dist:assert_string_list
-include_package_data = setuptools.dist:assert_bool
-exclude_package_data = setuptools.dist:check_package_data
-namespace_packages = setuptools.dist:check_nsp
-test_suite = setuptools.dist:check_test_suite
-eager_resources = setuptools.dist:assert_string_list
-zip_safe = setuptools.dist:assert_bool
-test_loader = setuptools.dist:check_importable
-packages = setuptools.dist:check_packages
-convert_2to3_doctests = setuptools.dist:assert_string_list
-tests_require = setuptools.dist:check_requirements
-
-[setuptools.installation]
-eggsecutable = setuptools.command.easy_install:bootstrap
-
+[console_scripts]
+easy_install = setuptools.command.easy_install:main
+easy_install-3.3 = setuptools.command.easy_install:main
+
+[distutils.setup_keywords]
+namespace_packages = setuptools.dist:check_nsp
+use_2to3_exclude_fixers = setuptools.dist:assert_string_list
+package_data = setuptools.dist:check_package_data
+use_2to3 = setuptools.dist:assert_bool
+install_requires = setuptools.dist:check_requirements
+entry_points = setuptools.dist:check_entry_points
+convert_2to3_doctests = setuptools.dist:assert_string_list
+dependency_links = setuptools.dist:assert_string_list
+test_suite = setuptools.dist:check_test_suite
+test_loader = setuptools.dist:check_importable
+tests_require = setuptools.dist:check_requirements
+packages = setuptools.dist:check_packages
+use_2to3_fixers = setuptools.dist:assert_string_list
+extras_require = setuptools.dist:check_extras
+include_package_data = setuptools.dist:assert_bool
+eager_resources = setuptools.dist:assert_string_list
+exclude_package_data = setuptools.dist:check_package_data
+zip_safe = setuptools.dist:assert_bool
+
+[distutils.commands]
+bdist_wininst = setuptools.command.bdist_wininst:bdist_wininst
+test = setuptools.command.test:test
+easy_install = setuptools.command.easy_install:easy_install
+install_egg_info = setuptools.command.install_egg_info:install_egg_info
+upload_docs = setuptools.command.upload_docs:upload_docs
+setopt = setuptools.command.setopt:setopt
+install = setuptools.command.install:install
+bdist_egg = setuptools.command.bdist_egg:bdist_egg
+alias = setuptools.command.alias:alias
+saveopts = setuptools.command.saveopts:saveopts
+sdist = setuptools.command.sdist:sdist
+rotate = setuptools.command.rotate:rotate
+develop = setuptools.command.develop:develop
+install_lib = setuptools.command.install_lib:install_lib
+register = setuptools.command.register:register
+build_py = setuptools.command.build_py:build_py
+install_scripts = setuptools.command.install_scripts:install_scripts
+bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm
+egg_info = setuptools.command.egg_info:egg_info
+build_ext = setuptools.command.build_ext:build_ext
+
+[setuptools.file_finders]
+svn_cvs = setuptools.command.sdist:_default_revctrl
+
+[egg_info.writers]
+requires.txt = setuptools.command.egg_info:write_requirements
+namespace_packages.txt = setuptools.command.egg_info:overwrite_arg
+entry_points.txt = setuptools.command.egg_info:write_entries
+top_level.txt = setuptools.command.egg_info:write_toplevel_names
+depends.txt = setuptools.command.egg_info:warn_depends_obsolete
+PKG-INFO = setuptools.command.egg_info:write_pkg_info
+eager_resources.txt = setuptools.command.egg_info:overwrite_arg
+dependency_links.txt = setuptools.command.egg_info:overwrite_arg
+
+[setuptools.installation]
+eggsecutable = setuptools.command.easy_install:bootstrap
+

File setuptools.egg-info/requires.txt

 [ssl:sys_platform=='win32' and python_version=='2.4']
 ctypes==1.0.2
 
-[ssl:sys_platform=='win32']
-wincertstore==0.1
+[ssl:python_version in '2.4, 2.5']
+ssl==1.16
 
 [certs]
 certifi==0.0.8
 
-[ssl:python_version in '2.4, 2.5']
-ssl==1.16
+[ssl:sys_platform=='win32']
+wincertstore==0.1

File setuptools/command/alias.py

File contents unchanged.

File setuptools/command/bdist_egg.py

File contents unchanged.

File setuptools/command/easy_install.py

          DistributionNotFound, VersionConflict, \
         DEVELOP_DIST
 
-sys_executable = os.path.normpath(sys.executable)
+if '__VENV_LAUNCHER__' in os.environ:
+    sys_executable = os.environ['__VENV_LAUNCHER__']
+else:
+    sys_executable = os.path.normpath(sys.executable)
 
 __all__ = [
     'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
             self.script_dir = self.install_scripts
         # default --record from the install command
         self.set_undefined_options('install', ('record', 'record'))
+        # Should this be moved to the if statement below? It's not used
+        # elsewhere
         normpath = map(normalize_path, sys.path)
         self.all_site_dirs = get_site_dirs()
         if self.site_dirs is not None:

File setuptools/command/egg_info.py

File contents unchanged.

File setuptools/command/install_egg_info.py

File contents unchanged.

File setuptools/command/install_scripts.py

File contents unchanged.

File setuptools/command/sdist.py

File contents unchanged.

File setuptools/command/test.py

                 for name in sys.modules:
                     if name.startswith(module):
                         del_modules.append(name)
-                map(sys.modules.__delitem__, del_modules)
+                list(map(sys.modules.__delitem__, del_modules))
 
         loader_ep = EntryPoint.parse("x="+self.test_loader)
         loader_class = loader_ep.load(require=False)

File setuptools/command/upload.py

File contents unchanged.

File setuptools/command/upload_docs.py

 except ImportError:
     from setuptools.command.upload import upload
 
-from setuptools.compat import httplib, urlparse
+from setuptools.compat import httplib, urlparse, unicode, iteritems
 
 _IS_PYTHON3 = sys.version > '3'
 
+if _IS_PYTHON3:
+    errors = 'surrogateescape'
+else:
+    errors = 'strict'
+
+
 # This is not just a replacement for byte literals
 # but works as a general purpose encoder
 def b(s, encoding='utf-8'):
     if isinstance(s, unicode):
-        return s.encode(encoding)
+        return s.encode(encoding, errors)
     return s
 
 
         sep_boundary = b('\n--') + b(boundary)
         end_boundary = sep_boundary + b('--')
         body = []
-        for key, values in data.iteritems():
+        for key, values in iteritems(data):
             title = '\nContent-Disposition: form-data; name="%s"' % key
             # handle multiple entries for the same name
             if type(values) != type([]):

File setuptools/compat.py

File contents unchanged.

File setuptools/depends.py

File contents unchanged.

File setuptools/dist.py

File contents unchanged.

File setuptools/extension.py

             if source.endswith('.pyx'):
                 source = source[:-4] + '.c'
             return source
-        self.sources = map(pyx_to_c, self.sources)
+        self.sources = list(map(pyx_to_c, self.sources))
 
 class Library(Extension):
     """Just like a regular Extension, but built as a library instead"""

File setuptools/package_index.py

 
     for match in REL.finditer(page):
         tag, rel = match.groups()
-        rels = map(str.strip, rel.lower().split(','))
+        rels = set(map(str.strip, rel.lower().split(',')))
         if 'homepage' in rels or 'download' in rels:
             for match in HREF.finditer(tag):
                 yield urljoin(url, htmldecode(match.group(1)))
         elif scheme.startswith('hg+'):
             return self._download_hg(url, filename)
         elif scheme=='file':
-            return url2pathname(urlparse.urlparse(url)[2])
+            return url2pathname(urlparse(url)[2])
         else:
             self.url_ok(url, True)   # raises error if not allowed
             return self._attempt_download(url, filename)
         url = url.split('#',1)[0]   # remove any fragment for svn's sake
         creds = ''
         if url.lower().startswith('svn:') and '@' in url:
-            scheme, netloc, path, p, q, f = urlparse.urlparse(url)
+            scheme, netloc, path, p, q, f = urlparse(url)
             if not netloc and path.startswith('//') and '/' in path[2:]:
                 netloc, path = path[2:].split('/',1)
-                auth, host = urllib.splituser(netloc)
+                auth, host = splituser(netloc)
                 if auth:
                     if ':' in auth:
                         user, pw = auth.split(':',1)
                     else:
                         creds = " --username="+auth
                     netloc = host
-                    url = urlparse.urlunparse((scheme, netloc, url, p, q, f))
+                    url = urlunparse((scheme, netloc, url, p, q, f))
         self.info("Doing subversion checkout from %s to %s", url, filename)
         os.system("svn checkout%s -q %s %s" % (creds, url, filename))
         return filename
 
     def _vcs_split_rev_from_url(self, url, pop_prefix=False):
-        scheme, netloc, path, query, frag = urlparse.urlsplit(url)
+        scheme, netloc, path, query, frag = urlsplit(url)
 
         scheme = scheme.split('+', 1)[-1]
 
             path, rev = path.rsplit('@', 1)
 
         # Also, discard fragment
-        url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
+        url = urlunsplit((scheme, netloc, path, query, ''))
 
         return url, rev
 

File setuptools/sandbox.py

             # exclude any encodings modules. See #285
             and not mod_name.startswith('encodings.')
         ]
-        map(sys.modules.__delitem__, del_modules)
+        list(map(sys.modules.__delitem__, del_modules))
         os.chdir(old_dir)
         sys.path[:] = save_path
         sys.argv[:] = save_argv

File setuptools/script template (dev).py

 from pkg_resources import require; require("""%(spec)r""")
 del require
 __file__ = """%(dev_path)r"""
-execfile(__file__)
+try:
+    execfile(__file__)
+except NameError:
+    exec(compile(open(__file__).read(), __file__, 'exec'))

File setuptools/ssl_support.py

File contents unchanged.

File setuptools/tests/__init__.py

 import sys
 import os
 import unittest
-import doctest
+from setuptools.tests import doctest
 import distutils.core
 import distutils.cmd
 from distutils.errors import DistutilsOptionError, DistutilsPlatformError
 from distutils.version import LooseVersion
 from setuptools.compat import func_code
 
+from setuptools.compat import func_code
 import setuptools.dist
 import setuptools.depends as dep
 from setuptools import Feature

File setuptools/tests/doctest.py

File contents unchanged.

File setuptools/tests/server.py

File contents unchanged.

File setuptools/tests/test_develop.py

         site.USER_SITE = tempfile.mkdtemp()
 
     def tearDown(self):
-        if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
+        if sys.version < "2.6" or hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix):
             return
 
         os.chdir(self.old_cwd)

File setuptools/tests/test_easy_install.py

 import tarfile
 import distutils.core
 
+from setuptools.compat import StringIO, BytesIO, next, urlparse
 from setuptools.sandbox import run_setup, SandboxViolation
 from setuptools.command.easy_install import easy_install, fix_jython_executable, get_script_args
 from setuptools.command.easy_install import  PthDistributions

File setuptools/tests/test_packageindex.py

File contents unchanged.

File setuptools/tests/test_resources.py

File contents unchanged.

File setuptools/tests/test_sdist.py

File contents unchanged.

File setuptools/tests/test_test.py

File contents unchanged.

File tests/api_tests.txt

File contents unchanged.

File tests/manual_test.py

File contents unchanged.

File tests/test_ez_setup.py

File contents unchanged.

File tests/test_pkg_resources.py

 
 import pkg_resources
 
+try:
+    unicode
+except NameError:
+    unicode = str
+
 class EggRemover(unicode):
-	def __call__(self):
-		if self in sys.path:
-			sys.path.remove(self)
-		if os.path.exists(self):
-			os.remove(self)
+    def __call__(self):
+        if self in sys.path:
+            sys.path.remove(self)
+        if os.path.exists(self):
+            os.remove(self)
 
 class TestZipProvider(object):
-	finalizers = []
+    finalizers = []
 
-	@classmethod
-	def setup_class(cls):
-		"create a zip egg and add it to sys.path"
-		egg = tempfile.NamedTemporaryFile(suffix='.egg', delete=False)
-		zip_egg = zipfile.ZipFile(egg, 'w')
-		zip_info = zipfile.ZipInfo()
-		zip_info.filename = 'mod.py'
-		zip_info.date_time = 2013, 5, 12, 13, 25, 0
-		zip_egg.writestr(zip_info, 'x = 3\n')
-		zip_info = zipfile.ZipInfo()
-		zip_info.filename = 'data.dat'
-		zip_info.date_time = 2013, 5, 12, 13, 25, 0
-		zip_egg.writestr(zip_info, 'hello, world!')
-		zip_egg.close()
-		egg.close()
+    @classmethod
+    def setup_class(cls):
+        "create a zip egg and add it to sys.path"
+        egg = tempfile.NamedTemporaryFile(suffix='.egg', delete=False)
+        zip_egg = zipfile.ZipFile(egg, 'w')
+        zip_info = zipfile.ZipInfo()
+        zip_info.filename = 'mod.py'
+        zip_info.date_time = 2013, 5, 12, 13, 25, 0
+        zip_egg.writestr(zip_info, 'x = 3\n')
+        zip_info = zipfile.ZipInfo()
+        zip_info.filename = 'data.dat'
+        zip_info.date_time = 2013, 5, 12, 13, 25, 0
+        zip_egg.writestr(zip_info, 'hello, world!')
+        zip_egg.close()
+        egg.close()
 
-		sys.path.append(egg.name)
-		cls.finalizers.append(EggRemover(egg.name))
+        sys.path.append(egg.name)
+        cls.finalizers.append(EggRemover(egg.name))
 
-	@classmethod
-	def teardown_class(cls):
-		for finalizer in cls.finalizers:
-			finalizer()
+    @classmethod
+    def teardown_class(cls):
+        for finalizer in cls.finalizers:
+            finalizer()
 
-	def test_resource_filename_rewrites_on_change(self):
-		"""
-		If a previous call to get_resource_filename has saved the file, but
-		the file has been subsequently mutated with different file of the
-		same size and modification time, it should not be overwritten on a
-		subsequent call to get_resource_filename.
-		"""
-		import mod
-		manager = pkg_resources.ResourceManager()
-		zp = pkg_resources.ZipProvider(mod)
-		filename = zp.get_resource_filename(manager, 'data.dat')
-		assert os.stat(filename).st_mtime == 1368379500
-		f = open(filename, 'wb')
-		f.write('hello, world?')
-		f.close()
-		os.utime(filename, (1368379500, 1368379500))
-		filename = zp.get_resource_filename(manager, 'data.dat')
-		f = open(filename)
-		assert f.read() == 'hello, world!'
-		manager.cleanup_resources()
+    def test_resource_filename_rewrites_on_change(self):
+        """
+        If a previous call to get_resource_filename has saved the file, but
+        the file has been subsequently mutated with different file of the
+        same size and modification time, it should not be overwritten on a
+        subsequent call to get_resource_filename.
+        """
+        import mod
+        manager = pkg_resources.ResourceManager()
+        zp = pkg_resources.ZipProvider(mod)
+        filename = zp.get_resource_filename(manager, 'data.dat')
+        assert os.stat(filename).st_mtime == 1368379500
+        f = open(filename, 'wb')
+        f.write('hello, world?')
+        f.close()
+        os.utime(filename, (1368379500, 1368379500))
+        filename = zp.get_resource_filename(manager, 'data.dat')
+        f = open(filename)
+        assert f.read() == 'hello, world!'
+        manager.cleanup_resources()