mirror of
https://github.com/python/cpython.git
synced 2025-12-10 11:00:14 +00:00
Factored out code for extracting-or-creating one of the option
dictionaries in 'self.command_options' to 'get_option_dict()'. Simplified code in 'parse_config_files()' and 'parse_command_line()' accordingly. Fixed code in constructor that processes the 'options' dictionary from the setup script so it actually works: uses the new 'self.command_options' dictionary rather than creating command objects and calling 'set_option()' on them.
This commit is contained in:
parent
37af1c3807
commit
0e48cfd2c5
1 changed files with 20 additions and 13 deletions
|
|
@ -185,11 +185,9 @@ class Distribution:
|
||||||
if options:
|
if options:
|
||||||
del attrs['options']
|
del attrs['options']
|
||||||
for (command, cmd_options) in options.items():
|
for (command, cmd_options) in options.items():
|
||||||
cmd_obj = self.get_command_obj (command)
|
opt_dict = self.get_option_dict(command)
|
||||||
for (key, val) in cmd_options.items():
|
for (opt, val) in cmd_options.items():
|
||||||
cmd_obj.set_option (key, val)
|
opt_dict[opt] = ("setup script", val)
|
||||||
# loop over commands
|
|
||||||
# if any command options
|
|
||||||
|
|
||||||
# Now work on the rest of the attributes. Any attribute that's
|
# Now work on the rest of the attributes. Any attribute that's
|
||||||
# not already defined is invalid!
|
# not already defined is invalid!
|
||||||
|
|
@ -205,6 +203,19 @@ class Distribution:
|
||||||
# __init__ ()
|
# __init__ ()
|
||||||
|
|
||||||
|
|
||||||
|
def get_option_dict (self, command):
|
||||||
|
"""Get the option dictionary for a given command. If that
|
||||||
|
command's option dictionary hasn't been created yet, then create it
|
||||||
|
and return the new dictionary; otherwise, return the existing
|
||||||
|
option dictionary.
|
||||||
|
"""
|
||||||
|
|
||||||
|
dict = self.command_options.get(command)
|
||||||
|
if dict is None:
|
||||||
|
dict = self.command_options[command] = {}
|
||||||
|
return dict
|
||||||
|
|
||||||
|
|
||||||
# -- Config file finding/parsing methods ---------------------------
|
# -- Config file finding/parsing methods ---------------------------
|
||||||
|
|
||||||
def find_config_files (self):
|
def find_config_files (self):
|
||||||
|
|
@ -266,13 +277,11 @@ class Distribution:
|
||||||
parser.read(filename)
|
parser.read(filename)
|
||||||
for section in parser.sections():
|
for section in parser.sections():
|
||||||
options = parser.options(section)
|
options = parser.options(section)
|
||||||
if not self.command_options.has_key(section):
|
opt_dict = self.get_option_dict(section)
|
||||||
self.command_options[section] = {}
|
|
||||||
opts = self.command_options[section]
|
|
||||||
|
|
||||||
for opt in options:
|
for opt in options:
|
||||||
if opt != '__name__':
|
if opt != '__name__':
|
||||||
opts[opt] = (filename, parser.get(section,opt))
|
opt_dict[opt] = (filename, parser.get(section,opt))
|
||||||
|
|
||||||
# Make the ConfigParser forget everything (so we retain
|
# Make the ConfigParser forget everything (so we retain
|
||||||
# the original filenames that options come from) -- gag,
|
# the original filenames that options come from) -- gag,
|
||||||
|
|
@ -409,11 +418,9 @@ class Distribution:
|
||||||
|
|
||||||
# Put the options from the command-line into their official
|
# Put the options from the command-line into their official
|
||||||
# holding pen, the 'command_options' dictionary.
|
# holding pen, the 'command_options' dictionary.
|
||||||
if not self.command_options.has_key(command):
|
opt_dict = self.get_option_dict(command)
|
||||||
self.command_options[command] = {}
|
|
||||||
cmd_opts = self.command_options[command]
|
|
||||||
for (name, value) in vars(opts).items():
|
for (name, value) in vars(opts).items():
|
||||||
cmd_opts[name] = ("command line", value)
|
opt_dict[name] = ("command line", value)
|
||||||
|
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue