annotate Lib/distutils/command/install_egg_info.py @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents 54f622dd3b26
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
37253
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
1 """distutils.command.install_egg_info
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
2
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
3 Implements the Distutils 'install_egg_info' command, for installing
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
4 a package's PKG-INFO metadata."""
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
5
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
6
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
7 from distutils.cmd import Command
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
8 from distutils import log, dir_util
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
9 import os, sys, re
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
10
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
11 class install_egg_info(Command):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
12 """Install an .egg-info file for the package"""
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
13
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
14 description = "Install package's PKG-INFO metadata as an .egg-info file"
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
15 user_options = [
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
16 ('install-dir=', 'd', "directory to install to"),
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
17 ]
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
18
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
19 def initialize_options(self):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
20 self.install_dir = None
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
21
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
22 def finalize_options(self):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
23 self.set_undefined_options('install_lib',('install_dir','install_dir'))
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
24 basename = "%s-%s-py%s.egg-info" % (
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
25 to_filename(safe_name(self.distribution.get_name())),
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
26 to_filename(safe_version(self.distribution.get_version())),
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
27 sys.version[:3]
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
28 )
37307
e58a71a8550e whitespace normalisation
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37253
diff changeset
29 self.target = os.path.join(self.install_dir, basename)
37253
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
30 self.outputs = [self.target]
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
31
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
32 def run(self):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
33 target = self.target
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
34 if os.path.isdir(target) and not os.path.islink(target):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
35 dir_util.remove_tree(target, dry_run=self.dry_run)
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
36 elif os.path.exists(target):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
37 self.execute(os.unlink,(self.target,),"Removing "+target)
40322
54f622dd3b26 Fix SF#1566719: not creating site-packages (or other target directory) when
Phillip J. Eby <pje@telecommunity.com>
parents: 37307
diff changeset
38 elif not os.path.isdir(self.install_dir):
54f622dd3b26 Fix SF#1566719: not creating site-packages (or other target directory) when
Phillip J. Eby <pje@telecommunity.com>
parents: 37307
diff changeset
39 self.execute(os.makedirs, (self.install_dir,),
54f622dd3b26 Fix SF#1566719: not creating site-packages (or other target directory) when
Phillip J. Eby <pje@telecommunity.com>
parents: 37307
diff changeset
40 "Creating "+self.install_dir)
37253
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
41 log.info("Writing %s", target)
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
42 if not self.dry_run:
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
43 f = open(target, 'w')
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
44 self.distribution.metadata.write_pkg_file(f)
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
45 f.close()
37307
e58a71a8550e whitespace normalisation
Anthony Baxter <anthonybaxter@gmail.com>
parents: 37253
diff changeset
46
37253
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
47 def get_outputs(self):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
48 return self.outputs
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
49
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
50
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
51 # The following routines are taken from setuptools' pkg_resources module and
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
52 # can be replaced by importing them from pkg_resources once it is included
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
53 # in the stdlib.
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
54
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
55 def safe_name(name):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
56 """Convert an arbitrary string to a standard distribution name
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
57
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
58 Any runs of non-alphanumeric/. characters are replaced with a single '-'.
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
59 """
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
60 return re.sub('[^A-Za-z0-9.]+', '-', name)
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
61
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
62
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
63 def safe_version(version):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
64 """Convert an arbitrary string to a standard version string
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
65
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
66 Spaces become dots, and all other non-alphanumeric characters become
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
67 dashes, with runs of multiple dashes condensed to a single dash.
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
68 """
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
69 version = version.replace(' ','.')
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
70 return re.sub('[^A-Za-z0-9.]+', '-', version)
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
71
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
72
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
73 def to_filename(name):
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
74 """Convert a project or version name to its filename-escaped form
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
75
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
76 Any '-' characters are currently replaced with '_'.
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
77 """
93344da76acd Patch #1459476: install PKG-INFO metadata alongside distutils-installed packages.
Phillip J. Eby <pje@telecommunity.com>
parents:
diff changeset
78 return name.replace('-','_')