diff env/lib/python3.7/site-packages/planemo/conda_lint.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/planemo/conda_lint.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-"""Logic for linting conda recipes."""
-
-from __future__ import absolute_import
-
-from functools import wraps
-
-from galaxy.tool_util.deps.conda_compat import raw_metadata
-from galaxy.util import unicodify
-
-from planemo.conda_verify.recipe import (
-    check_build_number,
-    check_dir_content,
-    check_license_family,
-    check_name,
-    check_requirements,
-    check_source,
-    check_url,
-    check_version,
-    FIELDS,
-    get_field,
-    RecipeError,
-)
-from planemo.exit_codes import (
-    EXIT_CODE_GENERIC_FAILURE,
-    EXIT_CODE_OK,
-)
-from planemo.io import (
-    coalesce_return_codes,
-    find_matching_directories,
-    info,
-)
-from planemo.lint import (
-    handle_lint_complete,
-    setup_lint,
-)
-
-
-def lint_recipes_on_paths(ctx, paths, **kwds):
-    """Apply conda linting procedure to recipes on supplied paths."""
-    assert_tools = kwds.get("assert_recipes", True)
-    recursive = kwds.get("recursive", False)
-    exit_codes = []
-    for recipe_dir in yield_recipes_on_paths(ctx, paths, recursive):
-        if lint_conda_recipe(ctx, recipe_dir, **kwds) != 0:
-            exit_codes.append(EXIT_CODE_GENERIC_FAILURE)
-        else:
-            exit_codes.append(EXIT_CODE_OK)
-    return coalesce_return_codes(exit_codes, assert_at_least_one=assert_tools)
-
-
-def lint_conda_recipe(ctx, recipe_dir, **kwds):
-    info("Linting conda recipe %s" % recipe_dir)
-    lint_args, lint_ctx = setup_lint(ctx, **kwds)
-
-    def apply(f):
-        lint_ctx.lint(f.__name__, f, recipe_dir)
-
-    apply(lint_name)
-    apply(lint_version)
-    apply(lint_summary)
-    apply(lint_build_number)
-    apply(lint_directory_content)
-    apply(lint_license_family)
-    apply(lint_about_urls)
-    apply(lint_source)
-    apply(lint_fields)
-    apply(lint_requirements)
-
-    return handle_lint_complete(lint_ctx, lint_args)
-
-
-def wraps_recipe_error(is_error=True):
-
-    def outer_wrapper(f):
-
-        @wraps(f)
-        def wrapper(recipe_dir, lint_ctx):
-            try:
-                f(recipe_dir, lint_ctx)
-            except RecipeError as e:
-                if is_error:
-                    lint_ctx.error(unicodify(e))
-                else:
-                    lint_ctx.warn(unicodify(e))
-            except TypeError as e:  # Errors in recipe checking code from YAML.
-                lint_ctx.error(unicodify(e))
-
-        return wrapper
-
-    return outer_wrapper
-
-
-def lints_metadata(f):
-
-    @wraps(f)
-    def wrapper(recipe_dir, lint_ctx):
-        meta = raw_metadata(recipe_dir)
-        f(meta, lint_ctx)
-
-    return wrapper
-
-
-@wraps_recipe_error(is_error=False)
-def lint_directory_content(recipe_dir, lint_ctx):
-    check_dir_content(recipe_dir)
-    lint_ctx.info("Directory content seems okay.")
-
-
-@lints_metadata
-@wraps_recipe_error(is_error=False)
-def lint_license_family(meta, lint_ctx):
-    check_license_family(meta)
-    lint_ctx.info("License from vaild license family.")
-
-
-@lints_metadata
-def lint_summary(meta, lint_ctx):
-    summary = get_field(meta, 'about/summary')
-
-    if not summary:
-        lint_ctx.warn("No summary supplied in about metadata.")
-
-    if summary and len(summary) > 80:
-        msg = "summary exceeds 80 characters"
-        lint_ctx.warn(msg)
-
-
-@lints_metadata
-@wraps_recipe_error(is_error=False)
-def lint_about_urls(meta, lint_ctx):
-    for field in ('about/home', 'about/dev_url', 'about/doc_url',
-                  'about/license_url'):
-        url = get_field(meta, field)
-        if url:
-            check_url(url)
-    lint_ctx.info("About urls (if present) are valid")
-
-
-@lints_metadata
-@wraps_recipe_error(is_error=True)
-def lint_source(meta, lint_ctx):
-    check_source(meta)
-    lint_ctx.info("Source (if present) is valid")
-
-
-@lints_metadata
-@wraps_recipe_error(is_error=True)
-def lint_build_number(meta, lint_ctx):
-    build_number = get_field(meta, 'build/number', 0)
-    check_build_number(build_number)
-    lint_ctx.info("Valid build number [%s]" % build_number)
-
-
-@lints_metadata
-@wraps_recipe_error(is_error=True)
-def lint_version(meta, lint_ctx):
-    version = get_field(meta, 'package/version')
-    check_version(version)
-    lint_ctx.info("Valid version number [%s]" % version)
-
-
-@lints_metadata
-@wraps_recipe_error(is_error=True)
-def lint_name(meta, lint_ctx):
-    name = get_field(meta, 'package/name')
-    check_name(name)
-    lint_ctx.info("Valid recipe name [%s]" % name)
-
-
-@lints_metadata
-@wraps_recipe_error(is_error=False)
-def lint_fields(meta, lint_ctx):
-    # Taken from validate_meta
-    for section in meta:
-        if section not in FIELDS:
-            raise RecipeError("Unknown section: %s" % section)
-        submeta = meta.get(section)
-        if submeta is None:
-            submeta = {}
-        for key in submeta:
-            # Next two lines added for planemo since we don't do the
-            # select lines thing.
-            if key == "skip":
-                continue
-
-            if key not in FIELDS[section]:
-                raise RecipeError("in section %r: unknown key %r" %
-                                  (section, key))
-
-
-@lints_metadata
-@wraps_recipe_error(is_error=False)
-def lint_requirements(meta, lint_ctx):
-    check_requirements(meta)
-    lint_ctx.info("Reference recipe files appear valid")
-
-
-def yield_recipes_on_paths(ctx, paths, recursive):
-    for path in paths:
-        recipe_dirs = find_matching_directories(
-            path, "meta.yaml", recursive=recursive
-        )
-        for recipe_dir in recipe_dirs:
-            yield recipe_dir
-
-
-__all__ = (
-    "lint_recipes_on_paths",
-)