css_parser.pyc
1 o 2 t�c#� � @ s� d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm 3 Z 4 ddlZdd lm Z mZmZmZmZmZmZmZmZmZ d 5 Zh d�Zh d�Zh d �Zh d�Zh d�ZeeB eB eB eB ZdZd�e�Z dZ!dje e!d�Z"dje d�Z#dje ed�Z$dje#d�Z%dje"d�Z&djee%d�Z'dje"e'd�Z(d je%d!�Z)d"je%d!�Z*d#je%d!�Z+d$je"e%e(d%�Z,d&je"e%d'�Z-d(je"e%d'�Z.d)je%d!�Z/d*je"d�Z0d+�e-�Z1d,je%d!�Z2d-je.e"e!e e&d.�Z3d/je.e"e&d0�Z4d1je.e"e'd2�Z5d3je.e"d4�Z6d5je e"d6�Z7d1je.e"e'd2�Z8e�9d7je"d�ej:�Z;e�9d8je ed�ej:�Z<e�9d9je"d�ej:�Z=e�9d:je"e'd�ej>�Z?e�9e �Z@e�9d;�e"��ZAe�9d<�e"��ZBe�9d=�e/�ej>�ZCd>ZDd?ZEdZFd@ZGdAZHdBZIdCZJdDZKdEZLdFZMdGZNdHZOdIZPdJZQeeQdK�dLeRdMe e jS dNe e jT dOeUdPejVf 6 dQdR��ZWdudSdT�ZXdNe e jT dPeeReeRe jYf f fdUdV�ZZdvdXeRdYe[dPeRfdZd[�Z\d\eRdPeRfd]d^�Z]G d_d`� d`�Z^G dadb� dbe^�Z_G dcdd� dd�Z`G dedf� df�Zaeadg�jbeFeJB dh�Zceadi�jbeFeJB dh�Zdeadj�jbeFeJB eIB dh�Zeeadk�jbeFeJB eKB dh�Zfeadl�jbeFeJB dh�Zgeadm�jbeFeJB dh�Zheadn�jbeFeJB dh�Zieado�jbeFeJB dh�Zjeadp�jbeFeJB eOB dh�Zkeadq�jbeFdh�Zleadr�jbeFeJB dh�Zmeads�jbeFeJB dh�Zneadt�jbeFeMB eJB dh�Zoeadt�jbeFeNB eJB dh�ZpdS )wzCSS selector parser.� N)� lru_cache� )�util)� css_match)� css_types)�SelectorSyntaxError) 7 �Optional�Dict�Match�Tuple�Type�Any�List�Union�Iterator�casti�� > � :last-of-type� :required�:scope�:default�:last-child� :out-of-range� 8 :read-only�:first-child�:indeterminate�:first-of-type�:defined� :disabled� :optional�:enabled� :only-of-type�:checked�:placeholder-shown�:only-child�:link�:empty�:root�:read-write� :in-range� :any-link> z:focusz:focus-visiblez:targetz:pastz:futurez:local-linkz:hoverz:target-withinz:playingz:visitedz :user-invalidz:activez :focus-withinz:paused�:host�:current> �:where�:-soup-contains�:is� :contains�:-soup-contains-own�:not�:hasz:matches> z :host-contextr* r+ > �:nth-last-of-type�:lang�:nth-of-type�:nth-last-child� 9 :nth-child�:dirz(?:\r\n|(?!\r\n)[\n\f\r])z(?:[ \t]|{})z"(?:/\*[^*]*\*+(?:[^/*][^*]*\*+)*/)z(?:{ws}|{comments}))�ws�commentsz*(?:\\(?:[a-f0-9]{{1,6}}{ws}?|[^\r\n\f]|$)))r9 z/(?:\\(?:[a-f0-9]{{1,6}}{ws}?|[^\r\n\f]|$|{nl})))r9 �nlz� 10 (?:(?:-?(?:[^\x00-\x2f\x30-\x40\x5B-\x5E\x60\x7B-\x9f]|{esc})+|--) 11 (?:[^\x00-\x2c\x2e\x2f\x3A-\x40\x5B-\x5E\x60\x7B-\x9f]|{esc})*) 12 )�escz>(?:[-+])?(?:[0-9]+n?|n)(?:(?<=n){ws}*(?:[-+]){ws}*(?:[0-9]+))?zT 13 (?:"(?:\\(?:.|{nl})|[^\\"\r\n\f]+)*?"|'(?:\\(?:.|{nl})|[^\\'\r\n\f]+)*?'|{ident}+) 14 )r; �identzU 15 (?:{ws}*(?P<cmp>[!~^|*$]?=){ws}*(?P<value>{value})(?:{ws}+(?P<case>[is]))?)?{ws}*\] 16 )r9 �valuez \#{ident})r= z \.{ident}z6(?P<tag_ns>(?:{ident}|\*)?\|)?(?P<tag_name>{ident}|\*)zD 17 \[{ws}*(?P<attr_ns>(?:{ident}|\*)?\|)?(?P<attr_name>{ident}){attr} 18 )r9 r= �attrz$(?P<name>:{ident})(?P<open>\({ws}*)?)r9 r= z#(?P<name>:{ident})(?P<open>\({ws}*)z(?P<name>:(?=--){ident})z{ws}*\)z:{}z @P{ident}z} 19 (?P<pseudo_nth_child>{name} 20 (?P<nth_child>{nth}|even|odd))(?:{wsc}*\)|(?P<of>{comments}*{ws}{wsc}*of{comments}*{ws}{wsc}*)) 21 )�name�wscr: r9 �nthzA 22 (?P<pseudo_nth_type>{name} 23 (?P<nth_type>{nth}|even|odd)){ws}*\) 24 )r@ r9 rB z7{name}(?P<values>{value}(?:{ws}*,{ws}*{value})*){ws}*\))r@ r9 r>