ยปCore Development>Code coverage>Lib/packaging/command/install_data.py

Python code coverage for Lib/packaging/command/install_data.py

#countcontent
1n/a"""Install platform-independent data files."""
2n/a
3n/a# Contributed by Bastian Kleineidam
4n/a
5n/aimport os
6n/afrom shutil import Error
7n/afrom sysconfig import get_paths, format_value
8n/afrom packaging import logger
9n/afrom packaging.util import convert_path
10n/afrom packaging.command.cmd import Command
11n/a
12n/a
13n/aclass install_data(Command):
14n/a
15n/a description = "install platform-independent data files"
16n/a
17n/a user_options = [
18n/a ('install-dir=', 'd',
19n/a "base directory for installing data files "
20n/a "(default: installation base dir)"),
21n/a ('root=', None,
22n/a "install everything relative to this alternate root directory"),
23n/a ('force', 'f', "force installation (overwrite existing files)"),
24n/a ]
25n/a
26n/a boolean_options = ['force']
27n/a
28n/a def initialize_options(self):
29n/a self.install_dir = None
30n/a self.outfiles = []
31n/a self.data_files_out = []
32n/a self.root = None
33n/a self.force = False
34n/a self.data_files = self.distribution.data_files
35n/a self.warn_dir = True
36n/a
37n/a def finalize_options(self):
38n/a self.set_undefined_options('install_dist',
39n/a ('install_data', 'install_dir'),
40n/a 'root', 'force')
41n/a
42n/a def run(self):
43n/a self.mkpath(self.install_dir)
44n/a for _file in self.data_files.items():
45n/a destination = convert_path(self.expand_categories(_file[1]))
46n/a dir_dest = os.path.abspath(os.path.dirname(destination))
47n/a
48n/a self.mkpath(dir_dest)
49n/a try:
50n/a out = self.copy_file(_file[0], dir_dest)[0]
51n/a except Error as e:
52n/a logger.warning('%s: %s', self.get_command_name(), e)
53n/a out = destination
54n/a
55n/a self.outfiles.append(out)
56n/a self.data_files_out.append((_file[0], destination))
57n/a
58n/a def expand_categories(self, path_with_categories):
59n/a local_vars = get_paths()
60n/a local_vars['distribution.name'] = self.distribution.metadata['Name']
61n/a expanded_path = format_value(path_with_categories, local_vars)
62n/a expanded_path = format_value(expanded_path, local_vars)
63n/a if '{' in expanded_path and '}' in expanded_path:
64n/a logger.warning(
65n/a '%s: unable to expand %s, some categories may be missing',
66n/a self.get_command_name(), path_with_categories)
67n/a return expanded_path
68n/a
69n/a def get_source_files(self):
70n/a return list(self.data_files)
71n/a
72n/a def get_inputs(self):
73n/a return list(self.data_files)
74n/a
75n/a def get_outputs(self):
76n/a return self.outfiles
77n/a
78n/a def get_resources_out(self):
79n/a return self.data_files_out