def doc_script(): from cobaya.mpi import am_single_or_primary_process if not am_single_or_primary_process(): return warn_deprecation() # Parse arguments import argparse parser = argparse.ArgumentParser( description="Prints defaults for Cobaya's internal modules.") parser.add_argument("module", action="store", nargs="?", default="", metavar="module_name", help="The module whose defaults are requested.") kind_opt, kind_opt_ishort = "kind", 0 parser.add_argument( "-" + kind_opt[kind_opt_ishort], "--" + kind_opt, action="store", nargs=1, default=None, metavar="module_kind", help=("Kind of module whose defaults are requested: " + ", ".join(['%s' % kind for kind in _kinds]) + ". " + "Use only when module name is not unique (it would fail).")) parser.add_argument("-p", "--python", action="store_true", default=False, help="Request Python instead of YAML.") expand_flag, expand_flag_ishort = "expand", 1 parser.add_argument("-" + expand_flag[expand_flag_ishort], "--" + expand_flag, action="store_true", default=False, help="Expand YAML defaults.") arguments = parser.parse_args() # Remove plurals (= name of src subfolders), for user-friendliness if arguments.module.lower() in subfolders.values(): arguments.module = next(k for k in subfolders if arguments.module == subfolders[k]) # Kind given, list all if not arguments.module: msg = "Available modules: (some may need external code/data)" print(msg + "\n" + "-" * len(msg)) for kind in _kinds: print("%s:" % kind) print(_indent + ("\n" + _indent).join(get_available_modules(kind))) return # Kind given: list all modules of that kind if arguments.module.lower() in _kinds: print("%s:" % arguments.module.lower()) print(_indent + ("\n" + _indent).join(get_available_modules(arguments.module.lower()))) return # Otherwise, check if it's a unique module name try: if arguments.kind: arguments.kind = arguments.kind[0].lower() to_print = get_default_info(arguments.module, arguments.kind, return_yaml=not arguments.python, yaml_expand_defaults=arguments.expand, fail_if_not_found=True) if arguments.python: print(import_odict + pformat(to_print)) else: print(to_print) if "!defaults" in to_print: print("# This file contains defaults. " "To populate them, use the flag --%s (or -%s)." % (expand_flag, expand_flag[expand_flag_ishort])) except: if not arguments.kind: print("Specify its kind with '--%s [module_kind]'." % kind_opt) return 1 return
packages=find_packages(exclude=['docs', 'tests']), install_requires=[ 'numpy>=1.12.0', 'scipy>=1.0', 'pandas>=1.0.1', 'PyYAML>=5.1', 'requests>=2.18', 'py-bobyqa>=1.2', 'GetDist>=1.1.1', 'fuzzywuzzy>=0.17', 'packaging', 'tqdm' ], extras_require={ 'test': ['pytest', 'pytest-forked', 'flaky', 'mpi4py'], 'gui': ['pyqt5', 'pyside2'] }, package_data={ 'cobaya': list( chain(*[['%s/*/*.yaml' % folder, '%s/*/*.bibtex' % folder] for folder in subfolders.values()])) }, entry_points={ 'console_scripts': [ 'cobaya-install=cobaya.install:install_script', 'cobaya-create-image=cobaya.containers:create_image_script', 'cobaya-prepare-data=cobaya.containers:prepare_data_script', 'cobaya-run=cobaya.run:run_script', 'cobaya-doc=cobaya.doc:doc_script', 'cobaya-bib=cobaya.bib:bib_script', 'cobaya-grid-create=cobaya.grid_tools:make_grid_script', 'cobaya-grid-run=cobaya.grid_tools.runbatch:run', 'cobaya-run-job=cobaya.grid_tools.runMPI:run_single', 'cobaya-cosmo-generator=cobaya.cosmo_input:gui_script', ], },
classifiers=[ 'Development Status :: 3 - Alpha', 'Environment :: Console', 'Intended Audience :: Science/Research', 'Topic :: Scientific/Engineering :: Astronomy', 'License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)', 'Programming Language :: Python :: 2.7', ], keywords='montecarlo sampling cosmology', packages=find_packages(exclude=['docs', 'tests']), install_requires=[ 'numpy>=1.12.0', 'scipy >= 0.18', 'pandas>=0.17.1', 'PyYAML>=3.12', 'wget>=3.2', 'imageio>=2.2.0' ], package_data={ 'cobaya': ['%s/*/*.yaml' % folder for folder in subfolders.values()] }, entry_points={ 'console_scripts': [ 'cobaya-install=cobaya.install:install_script', 'cobaya-create-image=cobaya.containers:create_image_script', 'cobaya-prepare-data=cobaya.containers:prepare_data_script', 'cobaya-run=cobaya.run:run_script', 'cobaya-citation=cobaya.citation:citation_script', 'cobaya-grid-create=cobaya.grid_tools:MakeGridScript', 'cobaya-grid-run=cobaya.grid_tools.runbatch:run', 'cobaya-cosmo-generator=cobaya.cosmo_input:gui_script', ], }, )
def doc_script(): from cobaya.mpi import is_main_process if not is_main_process(): return warn_deprecation() # Parse arguments import argparse parser = argparse.ArgumentParser( description="Prints defaults for Cobaya's components.") parser.add_argument("component", action="store", nargs="?", default="", metavar="component_name", help="The component whose defaults are requested.") kind_opt, kind_opt_ishort = "kind", 0 parser.add_argument( "-" + kind_opt[kind_opt_ishort], "--" + kind_opt, action="store", nargs=1, default=None, metavar="component_kind", help=("Kind of component whose defaults are requested: " + ", ".join(['%s' % kind for kind in kinds]) + ". " + "Use only when component name is not unique (it would fail).")) parser.add_argument("-p", "--python", action="store_true", default=False, help="Request Python instead of YAML.") expand_flag, expand_flag_ishort = "expand", 1 parser.add_argument("-" + expand_flag[expand_flag_ishort], "--" + expand_flag, action="store_true", default=False, help="Expand YAML defaults.") arguments = parser.parse_args() # Remove plurals (= name of src subfolders), for user-friendliness if arguments.component.lower() in subfolders.values(): arguments.component = next(k for k in subfolders if arguments.component == subfolders[k]) # Kind given, list all if not arguments.component: msg = "Available components: (some may need external code/data)" print(msg + "\n" + "-" * len(msg)) for kind in kinds: print("%s:" % kind) print(_indent + ("\n" + _indent).join(get_available_internal_class_names(kind))) return # Kind given: list all components of that kind if arguments.component.lower() in kinds: print("%s:" % arguments.component.lower()) print(_indent + ("\n" + _indent).join( get_available_internal_class_names(arguments.component.lower()))) return # Otherwise, check if it's a unique component name try: if arguments.kind: arguments.kind = arguments.kind[0].lower() if arguments.kind not in kinds: print("Kind %r not recognized. Try one of %r" % (arguments.kind, tuple(kinds))) raise ValueError else: arguments.kind = get_kind(arguments.component) to_print = get_default_info(arguments.component, arguments.kind, return_yaml=not arguments.python, yaml_expand_defaults=arguments.expand) if arguments.python: print(pformat({arguments.kind: {arguments.component: to_print}})) else: print(arguments.kind + ":\n" + _indent + arguments.component + ":\n" + 2 * _indent + ("\n" + 2 * _indent).join(to_print.split("\n"))) if "!defaults" in to_print: print("# This file contains defaults. " "To populate them, use the flag --%s (or -%s)." % (expand_flag, expand_flag[expand_flag_ishort])) except Exception: if isinstance(Exception, LoggedError.__class__): pass else: if not arguments.kind: print("Specify its kind with '--%s [component_kind]'." % kind_opt) return 1 return
def doc_script(args=None): """Command line script for the documentation.""" warn_deprecation() logger_setup() logger = get_logger("doc") # Parse arguments import argparse parser = argparse.ArgumentParser( prog="cobaya doc", description="Prints defaults for Cobaya's components.") parser.add_argument( "component", action="store", nargs="?", default="", metavar="component_name", help=("The component whose defaults are requested. " "Pass a component kind (sampler, theory, likelihood) to " "list all available (internal) ones, pass nothing to list " "all available (internal) components of all kinds.")) parser.add_argument("-p", "--python", action="store_true", default=False, help="Request Python instead of YAML.") expand_flag, expand_flag_ishort = "expand", 1 parser.add_argument("-" + expand_flag[expand_flag_ishort], "--" + expand_flag, action="store_true", default=False, help="Expand YAML defaults.") arguments = parser.parse_args(args) # Nothing passed: list all if not arguments.component: msg = "Available components: (some may need external code/data)" print(msg + "\n" + "-" * len(msg)) for kind in kinds: print("%s:" % kind) print(_indent + ("\n" + _indent).join(get_available_internal_class_names(kind))) return # A kind passed (plural or singular): list all of that kind if arguments.component.lower() in subfolders.values(): arguments.component = next(k for k in subfolders if arguments.component == subfolders[k]) if arguments.component.lower() in kinds: print("%s:" % arguments.component.lower()) print(_indent + ("\n" + _indent).join( get_available_internal_class_names(arguments.component.lower()))) return # Otherwise, try to identify the component try: cls = get_component_class(arguments.component, logger=logger) except ComponentNotFoundError: suggestions = similar_internal_class_names(arguments.component) logger.error( f"Could not identify component '{arguments.component}'. " f"Did you mean any of the following? {suggestions} (mind capitalization!)" ) return 1 to_print = get_default_info(cls, return_yaml=not arguments.python, yaml_expand_defaults=arguments.expand) if arguments.python: print(pformat({cls.get_kind(): {arguments.component: to_print}})) else: print(cls.get_kind() + ":\n" + _indent + arguments.component + ":\n" + 2 * _indent + ("\n" + 2 * _indent).join(to_print.split("\n"))) if "!defaults" in to_print: print("# This file contains defaults. " "To populate them, use the flag --%s (or -%s)." % (expand_flag, expand_flag[expand_flag_ishort]))