Source code for qiuwenbot.argparse

from typing import List

from dargs import Argument, Variant


[docs] def page_variant() -> Variant: doc_type = "Method to scan pages." doc_type_all = "Scan all pages in alphabetical order." doc_type_new = "Scan new pages." doc_type_link = "Scan pages that link to a page or include a template." doc_type_page = "Scan a single page." doc_link_name = "Name of the page or template." doc_namespace = "Namespace(s) of the pages." doc_start = "Start time in ISO format." doc_end = "End time in ISO format." doc_restart = "Restart from the last page in the log." return Variant( "type", [ Argument( "all", dtype=dict, sub_fields=[ Argument( "namespace", dtype=int, optional=True, default=0, doc=doc_namespace, ), Argument( "restart", dtype=bool, optional=True, default=False, doc=doc_restart, ), ], doc=doc_type_all, ), Argument( "new", dtype=dict, sub_fields=[ Argument( "namespace", dtype=[int, list], optional=True, default=0, doc=doc_namespace, ), Argument( "start", dtype=str, optional=True, default=None, doc=doc_start ), Argument( "end", dtype=str, optional=True, default=None, doc=doc_end ), ], doc=doc_type_new, ), Argument( "link", dtype=dict, sub_fields=[ Argument("name", dtype=str, doc=doc_link_name), Argument( "namespace", dtype=[int, list], optional=True, default=None, doc=doc_namespace, ), ], alias=["template"], doc=doc_type_link, ), Argument( "page", dtype=dict, sub_fields=[ Argument("name", dtype=str, doc=doc_link_name), ], doc=doc_type_page, ), ], doc=doc_type, )
[docs] def submit_args() -> List[Argument]: doc_user = "Username." doc_pages = "Configurations of scanned pages." doc_task = "Task to submit." return [ Argument("user", dtype=str, doc=doc_user), Argument("pages", dtype=dict, doc=doc_pages, sub_variants=[page_variant()]), Argument("task", dtype=str, doc=doc_task), ]
[docs] def normalize(data: dict) -> dict: base = Argument("base", dtype=dict, sub_fields=submit_args()) base.check_value(data, strict=True) return base.normalize(data)