search_query.pubmed.linter

Pubmed query linter.

Classes

PubmedQueryListLinter(parser, ...)

Linter for PubMed Query Strings

PubmedQueryStringLinter([query_str, ...])

Linter for PubMed Query Strings

class search_query.pubmed.linter.PubmedQueryListLinter(parser: PubmedListParser, string_parser_class: Type[QueryStringParser])

Bases: QueryListLinter

Linter for PubMed Query Strings

OPERATOR_NODE_REGEX = re.compile('#?\\d+|AND|OR|NOT')
validate_tokens() None

Validate token list

class search_query.pubmed.linter.PubmedQueryStringLinter(query_str: str = '', *, original_str: str | None = None, silent: bool = False)

Bases: QueryStringLinter

Linter for PubMed Query Strings

PLATFORM: PLATFORM = 'pubmed'
PROXIMITY_REGEX = re.compile('^\\[(.+):~(.*)\\]$')
VALID_TOKEN_SEQUENCES: Dict[TokenTypes, List[TokenTypes]] = {TokenTypes.FIELD: [TokenTypes.LOGIC_OPERATOR, TokenTypes.PARENTHESIS_CLOSED, TokenTypes.RANGE_OPERATOR], TokenTypes.LOGIC_OPERATOR: [TokenTypes.TERM, TokenTypes.PARENTHESIS_OPEN], TokenTypes.PARENTHESIS_CLOSED: [TokenTypes.LOGIC_OPERATOR, TokenTypes.PARENTHESIS_CLOSED], TokenTypes.PARENTHESIS_OPEN: [TokenTypes.TERM, TokenTypes.PARENTHESIS_OPEN], TokenTypes.RANGE_OPERATOR: [TokenTypes.TERM], TokenTypes.TERM: [TokenTypes.FIELD, TokenTypes.LOGIC_OPERATOR, TokenTypes.PARENTHESIS_CLOSED]}
YEAR_VALUE_REGEX = re.compile('^"?(?P<year>\\d{4})(?P<month>\\/(0[1-9]|1[0-2]))?(?P<day>\\/(0[1-9]|[12]\\d|3[01]))?(\\:(?P<year2>(\\d{4})(?P<month2>\\/(0[1-9]|1[0-2]))?(?P<day2>\\/(0[1-9]|[12]\\d|3[01]))?))?"?$', re.VERBOSE)
add_artificial_parentheses_for_operator_precedence(index: int = 0, output: list | None = None) tuple[int, list[Token]]

Adds artificial parentheses with position (-1, -1) to enforce PubMed operator precedence.

check_character_replacement_in_term(query: Query) None

Check a search term for invalid characters

check_implicit_fields() None

Check the general search field

check_invalid_proximity_operator() None

Check search field for invalid proximity operator

check_invalid_syntax() None

Check for invalid syntax in the query string.

check_invalid_token_sequences() None

Check token list for invalid token sequences.

check_invalid_wildcard(query: Query) None

Check search term for invalid wildcard *

check_unsupported_pubmed_fields() None

Check for the correct format of fields.

check_year_format(query: Query) None

Check for the correct format of year.

syntax_str_to_generic_field_set(field_value: str) set

Translate a search field

validate_platform_query(query: Query) None

Validate the query for the PubMed platform

validate_query_tree(query: Query) None

Validate the query tree

validate_tokens(*, tokens: List[Token], query_str: str, field_general: str = '') List[Token]

Validate token list