Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/setuptools/_distutils/command/install_egg_info.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 """distutils.command.install_egg_info | |
2 | |
3 Implements the Distutils 'install_egg_info' command, for installing | |
4 a package's PKG-INFO metadata.""" | |
5 | |
6 | |
7 from distutils.cmd import Command | |
8 from distutils import log, dir_util | |
9 import os, sys, re | |
10 | |
11 class install_egg_info(Command): | |
12 """Install an .egg-info file for the package""" | |
13 | |
14 description = "Install package's PKG-INFO metadata as an .egg-info file" | |
15 user_options = [ | |
16 ('install-dir=', 'd', "directory to install to"), | |
17 ] | |
18 | |
19 def initialize_options(self): | |
20 self.install_dir = None | |
21 | |
22 def finalize_options(self): | |
23 self.set_undefined_options('install_lib',('install_dir','install_dir')) | |
24 basename = "%s-%s-py%d.%d.egg-info" % ( | |
25 to_filename(safe_name(self.distribution.get_name())), | |
26 to_filename(safe_version(self.distribution.get_version())), | |
27 *sys.version_info[:2] | |
28 ) | |
29 self.target = os.path.join(self.install_dir, basename) | |
30 self.outputs = [self.target] | |
31 | |
32 def run(self): | |
33 target = self.target | |
34 if os.path.isdir(target) and not os.path.islink(target): | |
35 dir_util.remove_tree(target, dry_run=self.dry_run) | |
36 elif os.path.exists(target): | |
37 self.execute(os.unlink,(self.target,),"Removing "+target) | |
38 elif not os.path.isdir(self.install_dir): | |
39 self.execute(os.makedirs, (self.install_dir,), | |
40 "Creating "+self.install_dir) | |
41 log.info("Writing %s", target) | |
42 if not self.dry_run: | |
43 with open(target, 'w', encoding='UTF-8') as f: | |
44 self.distribution.metadata.write_pkg_file(f) | |
45 | |
46 def get_outputs(self): | |
47 return self.outputs | |
48 | |
49 | |
50 # The following routines are taken from setuptools' pkg_resources module and | |
51 # can be replaced by importing them from pkg_resources once it is included | |
52 # in the stdlib. | |
53 | |
54 def safe_name(name): | |
55 """Convert an arbitrary string to a standard distribution name | |
56 | |
57 Any runs of non-alphanumeric/. characters are replaced with a single '-'. | |
58 """ | |
59 return re.sub('[^A-Za-z0-9.]+', '-', name) | |
60 | |
61 | |
62 def safe_version(version): | |
63 """Convert an arbitrary string to a standard version string | |
64 | |
65 Spaces become dots, and all other non-alphanumeric characters become | |
66 dashes, with runs of multiple dashes condensed to a single dash. | |
67 """ | |
68 version = version.replace(' ','.') | |
69 return re.sub('[^A-Za-z0-9.]+', '-', version) | |
70 | |
71 | |
72 def to_filename(name): | |
73 """Convert a project or version name to its filename-escaped form | |
74 | |
75 Any '-' characters are currently replaced with '_'. | |
76 """ | |
77 return name.replace('-','_') |