def run_nose( verbose=False, run_answer_tests=False, answer_big_data=False, call_pdb=False, module=None, ): import sys from yt.utilities.logger import ytLogger as mylog from yt.utilities.on_demand_imports import _nose orig_level = mylog.getEffectiveLevel() mylog.setLevel(50) nose_argv = sys.argv nose_argv += ["--exclude=answer_testing", "--detailed-errors", "--exe"] if call_pdb: nose_argv += ["--pdb", "--pdb-failures"] if verbose: nose_argv.append("-v") if run_answer_tests: nose_argv.append("--with-answer-testing") if answer_big_data: nose_argv.append("--answer-big-data") if module: nose_argv.append(module) initial_dir = os.getcwd() yt_file = os.path.abspath(__file__) yt_dir = os.path.dirname(yt_file) if os.path.samefile(os.path.dirname(yt_dir), initial_dir): # Provide a nice error message to work around nose bug # see https://github.com/nose-devs/nose/issues/701 raise RuntimeError( """ The yt.run_nose function does not work correctly when invoked in the same directory as the installed yt package. Try starting a python session in a different directory before invoking yt.run_nose again. Alternatively, you can also run the "nosetests" executable in the current directory like so: $ nosetests """ ) os.chdir(yt_dir) try: _nose.run(argv=nose_argv) finally: os.chdir(initial_dir) mylog.setLevel(orig_level)
# also attempt to parse the command line and set up the global state of various # operations. The variable unparsed_args is not used internally but is # provided as a convenience for users who wish to parse arguments in scripts. # https://mail.python.org/archives/list/[email protected]/thread/L6AQPJ3OIMJC5SNKVM7CJG32YVQZRJWA/ import yt.startup_tasks as __startup_tasks from yt import * from yt._maintenance.deprecation import issue_deprecation_warning from yt.config import ytcfg, ytcfg_defaults from yt.utilities.logger import ytLogger issue_deprecation_warning("The yt.mods module is deprecated.", since="4.1.0", removal="4.2.0") unparsed_args = __startup_tasks.unparsed_args if ytLogger.getEffectiveLevel() >= int( ytcfg_defaults["yt"]["log_level"]): # type: ignore # This won't get displayed. mylog.debug("Turning off NumPy error reporting") np.seterr(all="ignore") # We load plugins. Keep in mind, this can be fairly dangerous - # the primary purpose is to allow people to have a set of functions # that get used every time that they don't have to *define* every time. # This way, other command-line tools can be used very simply. # Unfortunately, for now, I think the easiest and simplest way of doing # this is also the most dangerous way. if ytcfg.get("yt", "load_field_plugins"): enable_plugins()