selectolax 0.3.25__cp37-cp37m-musllinux_1_2_i686.whl → 0.3.27__cp37-cp37m-musllinux_1_2_i686.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of selectolax might be problematic. Click here for more details.

selectolax/lexbor.pyi CHANGED
@@ -1,14 +1,27 @@
1
- from typing import Iterator, TypeVar, NoReturn
1
+ from typing import Any, Iterator, Literal, TypeVar, NoReturn, overload
2
2
 
3
3
  DefaultT = TypeVar("DefaultT")
4
4
 
5
5
  class LexborAttributes:
6
6
  @staticmethod
7
- def create(node: "LexborAttributes") -> "LexborAttributes": ...
7
+ def create(node: LexborAttributes) -> LexborAttributes: ...
8
8
  def keys(self) -> Iterator[str]: ...
9
- def items(self) -> Iterator[tuple[str, str]]: ...
10
- def values(self) -> Iterator[str]: ...
11
- def get(self, key: str, default: DefaultT | None = None) -> str | DefaultT | None: ...
9
+ def items(self) -> Iterator[tuple[str, str | None]]: ...
10
+ def values(self) -> Iterator[str | None]: ...
11
+ def __iter__(self) -> Iterator[str]: ...
12
+ def __len__(self) -> int: ...
13
+ def __getitem__(self, key: str) -> str | None: ...
14
+ def __setitem__(self, key: str, value: str) -> None: ...
15
+ def __delitem__(self, key: str) -> None: ...
16
+ def __contains__(self, key: str) -> bool: ...
17
+ def __repr__(self) -> str: ...
18
+ @overload
19
+ def get(self, key: str, default: DefaultT) -> DefaultT | str | None: ...
20
+ @overload
21
+ def get(self, key: str, default: None = ...) -> str | None: ...
22
+ @overload
23
+ def sget(self, key: str, default: str | DefaultT) -> str | DefaultT: ...
24
+ @overload
12
25
  def sget(self, key: str, default: str = "") -> str: ...
13
26
 
14
27
  class LexborSelector:
@@ -20,38 +33,38 @@ class LexborSelector:
20
33
  def any_matches(self) -> bool: ...
21
34
  def text_contains(
22
35
  self, text: str, deep: bool = True, separator: str = "", strip: bool = False
23
- ) -> "LexborSelector": ...
36
+ ) -> LexborSelector: ...
24
37
  def any_text_contains(
25
38
  self, text: str, deep: bool = True, separator: str = "", strip: bool = False
26
39
  ) -> bool: ...
27
40
  def attribute_longer_than(
28
41
  self, attribute: str, length: int, start: str | None = None
29
- ) -> "LexborSelector": ...
42
+ ) -> LexborSelector: ...
30
43
  def any_attribute_longer_than(
31
44
  self, attribute: str, length: int, start: str | None = None
32
45
  ) -> bool: ...
33
46
 
34
47
  class LexborCSSSelector:
35
48
  def __init__(self): ...
36
- def find(self, query: str, node: "LexborNode") -> list["LexborNode"]: ...
37
- def any_matches(self, query: str, node: "LexborNode") -> bool: ...
49
+ def find(self, query: str, node: LexborNode) -> list[LexborNode]: ...
50
+ def any_matches(self, query: str, node: LexborNode) -> bool: ...
38
51
 
39
52
  class LexborNode:
40
- parser: "LexborHTMLParser"
53
+ parser: LexborHTMLParser
41
54
  @property
42
55
  def mem_id(self) -> int: ...
43
56
  @property
44
- def child(self) -> None | "LexborNode": ...
57
+ def child(self) -> LexborNode | None: ...
45
58
  @property
46
- def first_child(self) -> None | "LexborNode": ...
59
+ def first_child(self) -> LexborNode | None: ...
47
60
  @property
48
- def parent(self) -> None | "LexborNode": ...
61
+ def parent(self) -> LexborNode | None: ...
49
62
  @property
50
- def next(self) -> None | "LexborNode": ...
63
+ def next(self) -> LexborNode | None: ...
51
64
  @property
52
- def prev(self) -> None | "LexborNode": ...
65
+ def prev(self) -> LexborNode | None: ...
53
66
  @property
54
- def last_child(self) -> None | "LexborNode": ...
67
+ def last_child(self) -> LexborNode | None: ...
55
68
  @property
56
69
  def html(self) -> str | None: ...
57
70
  def __hash__(self) -> int: ...
@@ -59,10 +72,19 @@ class LexborNode:
59
72
  def text(
60
73
  self, deep: bool = True, separator: str = "", strip: bool = False
61
74
  ) -> str: ...
62
- def css(self, query: str) -> list["LexborNode"]: ...
75
+ def css(self, query: str) -> list[LexborNode]: ...
76
+ @overload
63
77
  def css_first(
64
- self, query: str, default: DefaultT | None = None, strict: bool = False
65
- ) -> "LexborNode" | DefaultT | None: ...
78
+ self, query: str, default: Any = ..., strict: Literal[True] = ...
79
+ ) -> LexborNode: ...
80
+ @overload
81
+ def css_first(
82
+ self, query: str, default: DefaultT, strict: bool = False
83
+ ) -> LexborNode | DefaultT: ...
84
+ @overload
85
+ def css_first(
86
+ self, query: str, default: None = ..., strict: bool = False
87
+ ) -> LexborNode | None: ...
66
88
  def any_css_matches(self, selectors: tuple[str]) -> bool: ...
67
89
  def css_matches(self, selector: str) -> bool: ...
68
90
  @property
@@ -74,23 +96,23 @@ class LexborNode:
74
96
  @property
75
97
  def attributes(self) -> dict[str, str | None]: ...
76
98
  @property
77
- def attrs(self) -> "LexborAttributes": ...
99
+ def attrs(self) -> LexborAttributes: ...
78
100
  @property
79
- def id(self) -> None | str: ...
80
- def iter(self, include_text: bool = False) -> Iterator["LexborNode"]: ...
101
+ def id(self) -> str | None: ...
102
+ def iter(self, include_text: bool = False) -> Iterator[LexborNode]: ...
81
103
  def unwrap(self) -> None: ...
82
104
  def unwrap_tags(self, tags: list[str]) -> None: ...
83
- def traverse(self, include_text: bool = False) -> Iterator["LexborNode"]: ...
84
- def replace_with(self, value: bytes | str | "LexborNode") -> None: ...
85
- def insert_before(self, value: bytes | str | "LexborNode") -> None: ...
86
- def insert_after(self, value: bytes | str | "LexborNode") -> None: ...
87
- def insert_child(self, value: bytes | str | "LexborNode") -> None: ...
105
+ def traverse(self, include_text: bool = False) -> Iterator[LexborNode]: ...
106
+ def replace_with(self, value: bytes | str | LexborNode) -> None: ...
107
+ def insert_before(self, value: bytes | str | LexborNode) -> None: ...
108
+ def insert_after(self, value: bytes | str | LexborNode) -> None: ...
109
+ def insert_child(self, value: bytes | str | LexborNode) -> None: ...
88
110
  @property
89
111
  def raw_value(self) -> NoReturn: ...
90
112
  def scripts_contain(self, query: str) -> bool: ...
91
113
  def scripts_srcs_contain(self, queries: tuple[str]) -> bool: ...
92
114
  def remove(self, recursive: bool = True) -> None: ...
93
- def select(self, query: str | None = None) -> "LexborSelector": ...
115
+ def select(self, query: str | None = None) -> LexborSelector: ...
94
116
  @property
95
117
  def text_content(self) -> str | None: ...
96
118
 
@@ -99,38 +121,47 @@ class LexborHTMLParser:
99
121
  @property
100
122
  def selector(self) -> "LexborCSSSelector": ...
101
123
  @property
102
- def root(self) -> "LexborNode" | None: ...
124
+ def root(self) -> LexborNode | None: ...
103
125
  @property
104
- def body(self) -> "LexborNode" | None: ...
126
+ def body(self) -> LexborNode | None: ...
105
127
  @property
106
- def head(self) -> None | "LexborNode": ...
107
- def tags(self, name: str) -> list["LexborNode"]: ...
128
+ def head(self) -> LexborNode | None: ...
129
+ def tags(self, name: str) -> list[LexborNode]: ...
108
130
  def text(
109
131
  self, deep: bool = True, separator: str = "", strip: bool = False
110
132
  ) -> str: ...
111
133
  @property
112
- def html(self) -> None | str: ...
113
- def css(self, query: str) -> list["LexborNode"]: ...
134
+ def html(self) -> str | None: ...
135
+ def css(self, query: str) -> list[LexborNode]: ...
136
+ @overload
137
+ def css_first(
138
+ self, query: str, default: Any = ..., strict: Literal[True] = ...
139
+ ) -> LexborNode: ...
140
+ @overload
141
+ def css_first(
142
+ self, query: str, default: DefaultT, strict: bool = False
143
+ ) -> LexborNode | DefaultT: ...
144
+ @overload
114
145
  def css_first(
115
- self, query: str, default: DefaultT | None = None, strict: bool = False
116
- ) -> "LexborNode" | DefaultT | None : ...
146
+ self, query: str, default: None = ..., strict: bool = False
147
+ ) -> LexborNode | None: ...
117
148
  def strip_tags(self, tags: list[str], recursive: bool = False) -> None: ...
118
- def select(self, query: str | None = None) -> "LexborSelector" | None: ...
149
+ def select(self, query: str | None = None) -> LexborSelector | None: ...
119
150
  def any_css_matches(self, selectors: tuple[str]) -> bool: ...
120
151
  def scripts_contain(self, query: str) -> bool: ...
121
152
  def scripts_srcs_contain(self, queries: tuple[str]) -> bool: ...
122
153
  def css_matches(self, selector: str) -> bool: ...
123
- def clone(self) -> "LexborHTMLParser": ...
154
+ def clone(self) -> LexborHTMLParser: ...
124
155
  def unwrap_tags(self, tags: list[str]) -> None: ...
125
156
 
126
- def create_tag(tag: str) -> "LexborNode":
157
+ def create_tag(tag: str) -> LexborNode:
127
158
  """
128
159
  Given an HTML tag name, e.g. `"div"`, create a single empty node for that tag,
129
160
  e.g. `"<div></div>"`.
130
161
  """
131
162
  ...
132
163
 
133
- def parse_fragment(html: str) -> list["LexborNode"]:
164
+ def parse_fragment(html: str) -> list[LexborNode]:
134
165
  """
135
166
  Given HTML, parse it into a list of Nodes, such that the nodes
136
167
  correspond to the given HTML.
selectolax/parser.c CHANGED
@@ -31,143 +31,143 @@
31
31
  "name": "selectolax.parser",
32
32
  "sources": [
33
33
  "selectolax/parser.pyx",
34
- "modest/source/mycore/incoming.c",
35
- "modest/source/mycore/utils.c",
36
- "modest/source/mycore/thread_queue.c",
37
- "modest/source/mycore/mythread.c",
38
- "modest/source/mycore/mystring.c",
39
- "modest/source/mycore/myosi.c",
40
- "modest/source/mycore/utils/mctree.c",
41
- "modest/source/mycore/utils/avl_tree.c",
42
- "modest/source/mycore/utils/mcobject.c",
43
- "modest/source/mycore/utils/mchar_async.c",
44
- "modest/source/mycore/utils/mcobject_async.c",
45
- "modest/source/mycore/utils/mhash.c",
46
- "modest/source/mycore/utils/mcsimple.c",
47
- "modest/source/mycore/utils/mcsync.c",
48
34
  "modest/source/myfont/os_2.c",
35
+ "modest/source/myfont/vmtx.c",
36
+ "modest/source/myfont/hmtx.c",
37
+ "modest/source/myfont/maxp.c",
49
38
  "modest/source/myfont/pclt.c",
39
+ "modest/source/myfont/loca.c",
50
40
  "modest/source/myfont/hhea.c",
51
- "modest/source/myfont/hmtx.c",
52
41
  "modest/source/myfont/name.c",
53
- "modest/source/myfont/vmtx.c",
54
- "modest/source/myfont/loca.c",
55
42
  "modest/source/myfont/myfont.c",
56
- "modest/source/myfont/glyf.c",
57
- "modest/source/myfont/maxp.c",
58
43
  "modest/source/myfont/myosi.c",
59
44
  "modest/source/myfont/vhea.c",
60
45
  "modest/source/myfont/head.c",
46
+ "modest/source/myfont/glyf.c",
61
47
  "modest/source/myfont/cmap.c",
62
- "modest/source/myport/posix/mycore/io.c",
63
- "modest/source/myport/posix/mycore/thread.c",
64
- "modest/source/myport/posix/mycore/memory.c",
65
- "modest/source/myport/posix/mycore/perf.c",
66
- "modest/source/myport/posix/mycore/utils/mcsync.c",
67
- "modest/source/myurl/parser_end.c",
68
48
  "modest/source/myurl/utils.c",
69
- "modest/source/myurl/punycode.c",
49
+ "modest/source/myurl/scheme.c",
50
+ "modest/source/myurl/parser_end.c",
70
51
  "modest/source/myurl/path.c",
71
52
  "modest/source/myurl/host.c",
72
- "modest/source/myurl/scheme.c",
73
53
  "modest/source/myurl/myosi.c",
74
- "modest/source/myurl/serialization.c",
54
+ "modest/source/myurl/punycode.c",
75
55
  "modest/source/myurl/parser.c",
76
56
  "modest/source/myurl/url.c",
57
+ "modest/source/myurl/serialization.c",
58
+ "modest/source/mycore/utils.c",
59
+ "modest/source/mycore/incoming.c",
60
+ "modest/source/mycore/myosi.c",
61
+ "modest/source/mycore/thread_queue.c",
62
+ "modest/source/mycore/mythread.c",
63
+ "modest/source/mycore/mystring.c",
64
+ "modest/source/mycore/utils/mchar_async.c",
65
+ "modest/source/mycore/utils/mcsimple.c",
66
+ "modest/source/mycore/utils/mcsync.c",
67
+ "modest/source/mycore/utils/avl_tree.c",
68
+ "modest/source/mycore/utils/mhash.c",
69
+ "modest/source/mycore/utils/mctree.c",
70
+ "modest/source/mycore/utils/mcobject.c",
71
+ "modest/source/mycore/utils/mcobject_async.c",
77
72
  "modest/source/myunicode/myosi.c",
78
- "modest/source/modest/modest.c",
79
- "modest/source/modest/glue.c",
80
- "modest/source/modest/declaration.c",
81
- "modest/source/modest/node/raw_property.c",
82
- "modest/source/modest/node/property.c",
83
- "modest/source/modest/node/node.c",
84
- "modest/source/modest/node/serialization.c",
85
- "modest/source/modest/layer/layer.c",
86
- "modest/source/modest/render/tree_node.c",
87
- "modest/source/modest/render/binding.c",
88
- "modest/source/modest/render/begin.c",
89
- "modest/source/modest/render/tree.c",
90
- "modest/source/modest/style/map.c",
91
- "modest/source/modest/style/type.c",
92
- "modest/source/modest/style/default.c",
93
- "modest/source/modest/style/sheet.c",
94
- "modest/source/modest/style/raw.c",
95
- "modest/source/modest/finder/type.c",
96
- "modest/source/modest/finder/pseudo_class.c",
97
- "modest/source/modest/finder/thread.c",
98
- "modest/source/modest/finder/finder.c",
99
- "modest/source/modest/finder/match.c",
100
- "modest/source/myhtml/charef.c",
101
- "modest/source/myhtml/tokenizer_script.c",
102
73
  "modest/source/myhtml/tokenizer_doctype.c",
103
- "modest/source/myhtml/tokenizer.c",
104
- "modest/source/myhtml/callback.c",
105
- "modest/source/myhtml/tree.c",
106
- "modest/source/myhtml/rules.c",
107
- "modest/source/myhtml/tag_init.c",
108
74
  "modest/source/myhtml/myhtml.c",
109
- "modest/source/myhtml/stream.c",
110
- "modest/source/myhtml/tokenizer_end.c",
75
+ "modest/source/myhtml/charef.c",
76
+ "modest/source/myhtml/callback.c",
77
+ "modest/source/myhtml/tag.c",
78
+ "modest/source/myhtml/parser.c",
111
79
  "modest/source/myhtml/token.c",
112
80
  "modest/source/myhtml/data_process.c",
81
+ "modest/source/myhtml/stream.c",
82
+ "modest/source/myhtml/tag_init.c",
83
+ "modest/source/myhtml/tokenizer.c",
84
+ "modest/source/myhtml/mynamespace.c",
85
+ "modest/source/myhtml/tree.c",
86
+ "modest/source/myhtml/rules.c",
113
87
  "modest/source/myhtml/mystring.c",
114
- "modest/source/myhtml/tag.c",
88
+ "modest/source/myhtml/tokenizer_end.c",
89
+ "modest/source/myhtml/tokenizer_script.c",
115
90
  "modest/source/myhtml/serialization.c",
116
- "modest/source/myhtml/parser.c",
117
- "modest/source/myhtml/mynamespace.c",
118
- "modest/source/myencoding/mystring.c",
119
- "modest/source/myencoding/encoding.c",
120
- "modest/source/myencoding/detect.c",
91
+ "modest/source/mycss/stylesheet.c",
121
92
  "modest/source/mycss/mycss.c",
122
- "modest/source/mycss/stack.c",
123
- "modest/source/mycss/tokenizer.c",
124
93
  "modest/source/mycss/an_plus_b.c",
125
- "modest/source/mycss/check.c",
126
94
  "modest/source/mycss/entry.c",
127
- "modest/source/mycss/tokenizer_global.c",
128
- "modest/source/mycss/tokenizer_end.c",
129
- "modest/source/mycss/stylesheet.c",
130
- "modest/source/mycss/mystring.c",
131
95
  "modest/source/mycss/convert.c",
132
96
  "modest/source/mycss/parser.c",
133
- "modest/source/mycss/declaration/default.c",
134
- "modest/source/mycss/declaration/entry.c",
97
+ "modest/source/mycss/tokenizer_global.c",
98
+ "modest/source/mycss/check.c",
99
+ "modest/source/mycss/tokenizer.c",
100
+ "modest/source/mycss/mystring.c",
101
+ "modest/source/mycss/stack.c",
102
+ "modest/source/mycss/tokenizer_end.c",
103
+ "modest/source/mycss/selectors/function_parser.c",
104
+ "modest/source/mycss/selectors/state.c",
105
+ "modest/source/mycss/selectors/value.c",
106
+ "modest/source/mycss/selectors/pseudo.c",
107
+ "modest/source/mycss/selectors/function.c",
108
+ "modest/source/mycss/selectors/init.c",
109
+ "modest/source/mycss/selectors/parser.c",
110
+ "modest/source/mycss/selectors/list.c",
111
+ "modest/source/mycss/selectors/serialization.c",
135
112
  "modest/source/mycss/declaration/state.c",
136
- "modest/source/mycss/declaration/entry_destroy.c",
137
- "modest/source/mycss/declaration/serialization.c",
138
113
  "modest/source/mycss/declaration/init.c",
114
+ "modest/source/mycss/declaration/entry.c",
115
+ "modest/source/mycss/declaration/entry_destroy.c",
139
116
  "modest/source/mycss/declaration/parser.c",
140
- "modest/source/mycss/property/parser_url.c",
141
- "modest/source/mycss/property/parser_background.c",
142
- "modest/source/mycss/property/shared.c",
143
- "modest/source/mycss/property/parser_image.c",
144
- "modest/source/mycss/property/parser_text_decoration.c",
145
- "modest/source/mycss/property/serialization.c",
146
- "modest/source/mycss/property/init.c",
147
- "modest/source/mycss/property/parser.c",
148
- "modest/source/mycss/namespace/state.c",
149
- "modest/source/mycss/namespace/serialization.c",
150
- "modest/source/mycss/namespace/init.c",
151
- "modest/source/mycss/namespace/parser.c",
152
- "modest/source/mycss/media/state.c",
153
- "modest/source/mycss/media/init.c",
117
+ "modest/source/mycss/declaration/default.c",
118
+ "modest/source/mycss/declaration/serialization.c",
119
+ "modest/source/mycss/values/color.c",
154
120
  "modest/source/mycss/values/destroy.c",
155
121
  "modest/source/mycss/values/units.c",
156
- "modest/source/mycss/values/color.c",
157
- "modest/source/mycss/values/consume.c",
158
122
  "modest/source/mycss/values/color_parser.c",
123
+ "modest/source/mycss/values/consume.c",
159
124
  "modest/source/mycss/values/image.c",
160
125
  "modest/source/mycss/values/serialization.c",
161
126
  "modest/source/mycss/values/values.c",
162
- "modest/source/mycss/selectors/function.c",
163
- "modest/source/mycss/selectors/pseudo.c",
164
- "modest/source/mycss/selectors/list.c",
165
- "modest/source/mycss/selectors/state.c",
166
- "modest/source/mycss/selectors/value.c",
167
- "modest/source/mycss/selectors/serialization.c",
168
- "modest/source/mycss/selectors/function_parser.c",
169
- "modest/source/mycss/selectors/init.c",
170
- "modest/source/mycss/selectors/parser.c"
127
+ "modest/source/mycss/media/state.c",
128
+ "modest/source/mycss/media/init.c",
129
+ "modest/source/mycss/namespace/state.c",
130
+ "modest/source/mycss/namespace/init.c",
131
+ "modest/source/mycss/namespace/parser.c",
132
+ "modest/source/mycss/namespace/serialization.c",
133
+ "modest/source/mycss/property/parser_image.c",
134
+ "modest/source/mycss/property/parser_url.c",
135
+ "modest/source/mycss/property/parser_background.c",
136
+ "modest/source/mycss/property/shared.c",
137
+ "modest/source/mycss/property/init.c",
138
+ "modest/source/mycss/property/parser_text_decoration.c",
139
+ "modest/source/mycss/property/parser.c",
140
+ "modest/source/mycss/property/serialization.c",
141
+ "modest/source/myencoding/detect.c",
142
+ "modest/source/myencoding/mystring.c",
143
+ "modest/source/myencoding/encoding.c",
144
+ "modest/source/myport/posix/mycore/perf.c",
145
+ "modest/source/myport/posix/mycore/memory.c",
146
+ "modest/source/myport/posix/mycore/io.c",
147
+ "modest/source/myport/posix/mycore/thread.c",
148
+ "modest/source/myport/posix/mycore/utils/mcsync.c",
149
+ "modest/source/modest/declaration.c",
150
+ "modest/source/modest/glue.c",
151
+ "modest/source/modest/modest.c",
152
+ "modest/source/modest/render/begin.c",
153
+ "modest/source/modest/render/binding.c",
154
+ "modest/source/modest/render/tree.c",
155
+ "modest/source/modest/render/tree_node.c",
156
+ "modest/source/modest/style/map.c",
157
+ "modest/source/modest/style/sheet.c",
158
+ "modest/source/modest/style/raw.c",
159
+ "modest/source/modest/style/type.c",
160
+ "modest/source/modest/style/default.c",
161
+ "modest/source/modest/layer/layer.c",
162
+ "modest/source/modest/finder/pseudo_class.c",
163
+ "modest/source/modest/finder/finder.c",
164
+ "modest/source/modest/finder/thread.c",
165
+ "modest/source/modest/finder/match.c",
166
+ "modest/source/modest/finder/type.c",
167
+ "modest/source/modest/node/raw_property.c",
168
+ "modest/source/modest/node/node.c",
169
+ "modest/source/modest/node/property.c",
170
+ "modest/source/modest/node/serialization.c"
171
171
  ]
172
172
  },
173
173
  "module_name": "selectolax.parser"
@@ -3482,7 +3482,6 @@ static const char __pyx_k_HTMLParser_css[] = "HTMLParser.css";
3482
3482
  static const char __pyx_k_Node_css_first[] = "Node.css_first";
3483
3483
  static const char __pyx_k_Node_decompose[] = "Node.decompose";
3484
3484
  static const char __pyx_k_fused_sigindex[] = "_fused_sigindex";
3485
- static const char __pyx_k_html_body_head[] = "<html|<body|<head";
3486
3485
  static const char __pyx_k_parse_fragment[] = "parse_fragment";
3487
3486
  static const char __pyx_k_Attributes_keys[] = "_Attributes.keys";
3488
3487
  static const char __pyx_k_Attributes_sget[] = "_Attributes.sget";
@@ -3513,6 +3512,7 @@ static const char __pyx_k_Node_replace_with[] = "Node.replace_with";
3513
3512
  static const char __pyx_k_any_text_contains[] = "any_text_contains";
3514
3513
  static const char __pyx_k_do_parse_fragment[] = "do_parse_fragment";
3515
3514
  static const char __pyx_k_get_fragment_type[] = "get_fragment_type";
3515
+ static const char __pyx_k_html_body_head_er[] = "<html|<body|<head(?!er)";
3516
3516
  static const char __pyx_k_selectolax_parser[] = "selectolax.parser";
3517
3517
  static const char __pyx_k_Can_t_parse_HTML_s[] = "Can't parse HTML:\n%s";
3518
3518
  static const char __pyx_k_HTMLParser_chars_s[] = "<HTMLParser chars=%s>";
@@ -4119,7 +4119,7 @@ typedef struct {
4119
4119
  PyObject *__pyx_n_u_head_and_body;
4120
4120
  PyObject *__pyx_n_s_html;
4121
4121
  PyObject *__pyx_kp_u_html_2;
4122
- PyObject *__pyx_kp_u_html_body_head;
4122
+ PyObject *__pyx_kp_u_html_body_head_er;
4123
4123
  PyObject *__pyx_n_s_html_len;
4124
4124
  PyObject *__pyx_n_s_html_re;
4125
4125
  PyObject *__pyx_n_s_html_tree;
@@ -4663,7 +4663,7 @@ static int __pyx_m_clear(PyObject *m) {
4663
4663
  Py_CLEAR(clear_module_state->__pyx_n_u_head_and_body);
4664
4664
  Py_CLEAR(clear_module_state->__pyx_n_s_html);
4665
4665
  Py_CLEAR(clear_module_state->__pyx_kp_u_html_2);
4666
- Py_CLEAR(clear_module_state->__pyx_kp_u_html_body_head);
4666
+ Py_CLEAR(clear_module_state->__pyx_kp_u_html_body_head_er);
4667
4667
  Py_CLEAR(clear_module_state->__pyx_n_s_html_len);
4668
4668
  Py_CLEAR(clear_module_state->__pyx_n_s_html_re);
4669
4669
  Py_CLEAR(clear_module_state->__pyx_n_s_html_tree);
@@ -5185,7 +5185,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
5185
5185
  Py_VISIT(traverse_module_state->__pyx_n_u_head_and_body);
5186
5186
  Py_VISIT(traverse_module_state->__pyx_n_s_html);
5187
5187
  Py_VISIT(traverse_module_state->__pyx_kp_u_html_2);
5188
- Py_VISIT(traverse_module_state->__pyx_kp_u_html_body_head);
5188
+ Py_VISIT(traverse_module_state->__pyx_kp_u_html_body_head_er);
5189
5189
  Py_VISIT(traverse_module_state->__pyx_n_s_html_len);
5190
5190
  Py_VISIT(traverse_module_state->__pyx_n_s_html_re);
5191
5191
  Py_VISIT(traverse_module_state->__pyx_n_s_html_tree);
@@ -5807,7 +5807,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
5807
5807
  #define __pyx_n_u_head_and_body __pyx_mstate_global->__pyx_n_u_head_and_body
5808
5808
  #define __pyx_n_s_html __pyx_mstate_global->__pyx_n_s_html
5809
5809
  #define __pyx_kp_u_html_2 __pyx_mstate_global->__pyx_kp_u_html_2
5810
- #define __pyx_kp_u_html_body_head __pyx_mstate_global->__pyx_kp_u_html_body_head
5810
+ #define __pyx_kp_u_html_body_head_er __pyx_mstate_global->__pyx_kp_u_html_body_head_er
5811
5811
  #define __pyx_n_s_html_len __pyx_mstate_global->__pyx_n_s_html_len
5812
5812
  #define __pyx_n_s_html_re __pyx_mstate_global->__pyx_n_s_html_re
5813
5813
  #define __pyx_n_s_html_tree __pyx_mstate_global->__pyx_n_s_html_tree
@@ -29017,7 +29017,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED
29017
29017
  * tree = parser_cls(html)
29018
29018
  *
29019
29019
  * import re # <<<<<<<<<<<<<<
29020
- * html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
29020
+ * html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
29021
29021
  *
29022
29022
  */
29023
29023
  __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_re, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 36, __pyx_L1_error)
@@ -29028,7 +29028,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED
29028
29028
  /* "selectolax/utils.pxi":37
29029
29029
  *
29030
29030
  * import re
29031
- * html_re = re.compile(r"<html|<body|<head", re.IGNORECASE) # <<<<<<<<<<<<<<
29031
+ * html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE) # <<<<<<<<<<<<<<
29032
29032
  *
29033
29033
  * has_html = False
29034
29034
  */
@@ -29051,7 +29051,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED
29051
29051
  }
29052
29052
  #endif
29053
29053
  {
29054
- PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_html_body_head, __pyx_t_5};
29054
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_html_body_head_er, __pyx_t_5};
29055
29055
  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
29056
29056
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
29057
29057
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -29063,7 +29063,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED
29063
29063
  __pyx_t_3 = 0;
29064
29064
 
29065
29065
  /* "selectolax/utils.pxi":39
29066
- * html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
29066
+ * html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
29067
29067
  *
29068
29068
  * has_html = False # <<<<<<<<<<<<<<
29069
29069
  * has_head = False
@@ -31536,7 +31536,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED
31536
31536
  * tree = parser_cls(html)
31537
31537
  *
31538
31538
  * import re # <<<<<<<<<<<<<<
31539
- * html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
31539
+ * html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
31540
31540
  *
31541
31541
  */
31542
31542
  __pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_re, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 36, __pyx_L1_error)
@@ -31547,7 +31547,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED
31547
31547
  /* "selectolax/utils.pxi":37
31548
31548
  *
31549
31549
  * import re
31550
- * html_re = re.compile(r"<html|<body|<head", re.IGNORECASE) # <<<<<<<<<<<<<<
31550
+ * html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE) # <<<<<<<<<<<<<<
31551
31551
  *
31552
31552
  * has_html = False
31553
31553
  */
@@ -31570,7 +31570,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED
31570
31570
  }
31571
31571
  #endif
31572
31572
  {
31573
- PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_html_body_head, __pyx_t_5};
31573
+ PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_html_body_head_er, __pyx_t_5};
31574
31574
  __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
31575
31575
  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
31576
31576
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -31582,7 +31582,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED
31582
31582
  __pyx_t_3 = 0;
31583
31583
 
31584
31584
  /* "selectolax/utils.pxi":39
31585
- * html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
31585
+ * html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
31586
31586
  *
31587
31587
  * has_html = False # <<<<<<<<<<<<<<
31588
31588
  * has_head = False
@@ -41216,7 +41216,7 @@ static int __Pyx_CreateStringTabAndInitStrings(void) {
41216
41216
  {&__pyx_n_u_head_and_body, __pyx_k_head_and_body, sizeof(__pyx_k_head_and_body), 0, 1, 0, 1},
41217
41217
  {&__pyx_n_s_html, __pyx_k_html, sizeof(__pyx_k_html), 0, 0, 1, 1},
41218
41218
  {&__pyx_kp_u_html_2, __pyx_k_html_2, sizeof(__pyx_k_html_2), 0, 1, 0, 0},
41219
- {&__pyx_kp_u_html_body_head, __pyx_k_html_body_head, sizeof(__pyx_k_html_body_head), 0, 1, 0, 0},
41219
+ {&__pyx_kp_u_html_body_head_er, __pyx_k_html_body_head_er, sizeof(__pyx_k_html_body_head_er), 0, 1, 0, 0},
41220
41220
  {&__pyx_n_s_html_len, __pyx_k_html_len, sizeof(__pyx_k_html_len), 0, 0, 1, 1},
41221
41221
  {&__pyx_n_s_html_re, __pyx_k_html_re, sizeof(__pyx_k_html_re), 0, 0, 1, 1},
41222
41222
  {&__pyx_n_s_html_tree, __pyx_k_html_tree, sizeof(__pyx_k_html_tree), 0, 0, 1, 1},