From 87f200324506d09a819b66d3af06ac4c9777480f Mon Sep 17 00:00:00 2001 From: Ronny Pfannschmidt Date: Tue, 13 Mar 2018 18:08:26 +0100 Subject: [PATCH] remove CmdOptions since we can use argparse.Namespace() --- _pytest/config.py | 24 ++++++------------------ changelog/3304.trivial | 1 + 2 files changed, 7 insertions(+), 18 deletions(-) create mode 100644 changelog/3304.trivial diff --git a/_pytest/config.py b/_pytest/config.py index cdd996896fc..63c7dc3bba2 100644 --- a/_pytest/config.py +++ b/_pytest/config.py @@ -5,7 +5,7 @@ import traceback import types import warnings - +import copy import six import py # DON't import pytest here because it causes import cycle troubles @@ -68,7 +68,7 @@ def main(args=None, plugins=None): return 4 -class cmdline(object): # compatibility namespace +class cmdline(object): # NOQA compatibility namespace main = staticmethod(main) @@ -845,19 +845,6 @@ def _ensure_removed_sysmodule(modname): pass -class CmdOptions(object): - """ holds cmdline options as attributes.""" - - def __init__(self, values=()): - self.__dict__.update(values) - - def __repr__(self): - return "" % (self.__dict__,) - - def copy(self): - return CmdOptions(self.__dict__) - - class Notset(object): def __repr__(self): return "" @@ -885,7 +872,7 @@ class Config(object): def __init__(self, pluginmanager): #: access to command line option as attributes. #: (deprecated), use :py:func:`getoption() <_pytest.config.Config.getoption>` instead - self.option = CmdOptions() + self.option = argparse.Namespace() _a = FILE_OR_DIR self._parser = Parser( usage="%%(prog)s [options] [%s] [%s] [...]" % (_a, _a), @@ -989,7 +976,7 @@ def pytest_load_initial_conftests(self, early_config): self.pluginmanager._set_initial_conftests(early_config.known_args_namespace) def _initini(self, args): - ns, unknown_args = self._parser.parse_known_and_unknown_args(args, namespace=self.option.copy()) + ns, unknown_args = self._parser.parse_known_and_unknown_args(args, namespace=copy.copy(self.option)) r = determine_setup(ns.inifilename, ns.file_or_dir + unknown_args, warnfunc=self.warn, rootdir_cmd_arg=ns.rootdir or None) self.rootdir, self.inifile, self.inicfg = r @@ -1054,7 +1041,8 @@ def _preparse(self, args, addopts=True): self.pluginmanager.consider_preparse(args) self.pluginmanager.load_setuptools_entrypoints('pytest11') self.pluginmanager.consider_env() - self.known_args_namespace = ns = self._parser.parse_known_args(args, namespace=self.option.copy()) + self.known_args_namespace = ns = self._parser.parse_known_args( + args, namespace=copy.copy(self.option)) if self.known_args_namespace.confcutdir is None and self.inifile: confcutdir = py.path.local(self.inifile).dirname self.known_args_namespace.confcutdir = confcutdir diff --git a/changelog/3304.trivial b/changelog/3304.trivial new file mode 100644 index 00000000000..6e66a1e13cf --- /dev/null +++ b/changelog/3304.trivial @@ -0,0 +1 @@ +Internal refactoring to better integrate with argparse. \ No newline at end of file