Mercurial > repos > guerler > springsuite
diff planemo/lib/python3.7/site-packages/soupsieve/__init__.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/planemo/lib/python3.7/site-packages/soupsieve/__init__.py Fri Jul 31 00:32:28 2020 -0400 @@ -0,0 +1,111 @@ +""" +Soup Sieve. + +A CSS selector filter for BeautifulSoup4. + +MIT License + +Copyright (c) 2018 Isaac Muse + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +""" +from .__meta__ import __version__, __version_info__ # noqa: F401 +from . import css_parser as cp +from . import css_match as cm +from . import css_types as ct +from .util import DEBUG, SelectorSyntaxError # noqa: F401 + +__all__ = ( + 'DEBUG', 'SelectorSyntaxError', 'SoupSieve', + 'closest', 'compile', 'filter', 'iselect', + 'match', 'select', 'select_one' +) + +SoupSieve = cm.SoupSieve + + +def compile(pattern, namespaces=None, flags=0, **kwargs): # noqa: A001 + """Compile CSS pattern.""" + + if namespaces is not None: + namespaces = ct.Namespaces(**namespaces) + + custom = kwargs.get('custom') + if custom is not None: + custom = ct.CustomSelectors(**custom) + + if isinstance(pattern, SoupSieve): + if flags: + raise ValueError("Cannot process 'flags' argument on a compiled selector list") + elif namespaces is not None: + raise ValueError("Cannot process 'namespaces' argument on a compiled selector list") + elif custom is not None: + raise ValueError("Cannot process 'custom' argument on a compiled selector list") + return pattern + + return cp._cached_css_compile(pattern, namespaces, custom, flags) + + +def purge(): + """Purge cached patterns.""" + + cp._purge_cache() + + +def closest(select, tag, namespaces=None, flags=0, **kwargs): + """Match closest ancestor.""" + + return compile(select, namespaces, flags, **kwargs).closest(tag) + + +def match(select, tag, namespaces=None, flags=0, **kwargs): + """Match node.""" + + return compile(select, namespaces, flags, **kwargs).match(tag) + + +def filter(select, iterable, namespaces=None, flags=0, **kwargs): # noqa: A001 + """Filter list of nodes.""" + + return compile(select, namespaces, flags, **kwargs).filter(iterable) + + +def select_one(select, tag, namespaces=None, flags=0, **kwargs): + """Select a single tag.""" + + return compile(select, namespaces, flags, **kwargs).select_one(tag) + + +def select(select, tag, namespaces=None, limit=0, flags=0, **kwargs): + """Select the specified tags.""" + + return compile(select, namespaces, flags, **kwargs).select(tag, limit) + + +def iselect(select, tag, namespaces=None, limit=0, flags=0, **kwargs): + """Iterate the specified tags.""" + + for el in compile(select, namespaces, flags, **kwargs).iselect(tag, limit): + yield el + + +def escape(ident): + """Escape identifier.""" + + return cp.escape(ident)