selectolax 0.3.26__cp313-cp313-win_amd64.whl → 0.3.28__cp313-cp313-win_amd64.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/__init__.py +1 -1
- selectolax/lexbor/attrs.pxi +2 -1
- selectolax/lexbor/node.pxi +1 -1
- selectolax/lexbor/selection.pxi +12 -10
- selectolax/lexbor.c +1015 -893
- selectolax/lexbor.cp313-win_amd64.pyd +0 -0
- selectolax/lexbor.pyi +1 -1
- selectolax/lexbor.pyx +4 -2
- selectolax/parser.c +14 -14
- selectolax/parser.cp313-win_amd64.pyd +0 -0
- selectolax/parser.pyi +2 -2
- selectolax/utils.pxi +1 -1
- {selectolax-0.3.26.dist-info → selectolax-0.3.28.dist-info}/LICENSE +1 -1
- {selectolax-0.3.26.dist-info → selectolax-0.3.28.dist-info}/METADATA +18 -2
- selectolax-0.3.28.dist-info/RECORD +26 -0
- {selectolax-0.3.26.dist-info → selectolax-0.3.28.dist-info}/WHEEL +1 -1
- selectolax-0.3.26.dist-info/RECORD +0 -26
- {selectolax-0.3.26.dist-info → selectolax-0.3.28.dist-info}/top_level.txt +0 -0
|
Binary file
|
selectolax/lexbor.pyi
CHANGED
|
@@ -117,7 +117,7 @@ class LexborNode:
|
|
|
117
117
|
def text_content(self) -> str | None: ...
|
|
118
118
|
|
|
119
119
|
class LexborHTMLParser:
|
|
120
|
-
def __init__(self, html: str): ...
|
|
120
|
+
def __init__(self, html: str| bytes ): ...
|
|
121
121
|
@property
|
|
122
122
|
def selector(self) -> "LexborCSSSelector": ...
|
|
123
123
|
@property
|
selectolax/lexbor.pyx
CHANGED
|
@@ -112,6 +112,7 @@ cdef class LexborHTMLParser:
|
|
|
112
112
|
len(pybyte_name)
|
|
113
113
|
)
|
|
114
114
|
if status != 0x0000:
|
|
115
|
+
lxb_dom_collection_destroy(collection, <bint> True)
|
|
115
116
|
raise SelectolaxError("Can't locate elements.")
|
|
116
117
|
|
|
117
118
|
for i in range(lxb_dom_collection_length_noi(collection)):
|
|
@@ -226,13 +227,14 @@ cdef class LexborHTMLParser:
|
|
|
226
227
|
len(pybyte_name)
|
|
227
228
|
)
|
|
228
229
|
if status != 0x0000:
|
|
230
|
+
lxb_dom_collection_destroy(collection, <bint> True)
|
|
229
231
|
raise SelectolaxError("Can't locate elements.")
|
|
230
232
|
|
|
231
233
|
for i in range(lxb_dom_collection_length_noi(collection)):
|
|
232
234
|
if recursive:
|
|
233
|
-
lxb_dom_node_destroy( <lxb_dom_node_t*> lxb_dom_collection_element_noi(collection, i))
|
|
234
|
-
else:
|
|
235
235
|
lxb_dom_node_destroy_deep( <lxb_dom_node_t*> lxb_dom_collection_element_noi(collection, i))
|
|
236
|
+
else:
|
|
237
|
+
lxb_dom_node_destroy(<lxb_dom_node_t *> lxb_dom_collection_element_noi(collection, i))
|
|
236
238
|
lxb_dom_collection_destroy(collection, <bint> True)
|
|
237
239
|
|
|
238
240
|
def select(self, query=None):
|
selectolax/parser.c
CHANGED
|
@@ -3476,7 +3476,6 @@ static const char __pyx_k_HTMLParser_css[] = "HTMLParser.css";
|
|
|
3476
3476
|
static const char __pyx_k_Node_css_first[] = "Node.css_first";
|
|
3477
3477
|
static const char __pyx_k_Node_decompose[] = "Node.decompose";
|
|
3478
3478
|
static const char __pyx_k_fused_sigindex[] = "_fused_sigindex";
|
|
3479
|
-
static const char __pyx_k_html_body_head[] = "<html|<body|<head";
|
|
3480
3479
|
static const char __pyx_k_parse_fragment[] = "parse_fragment";
|
|
3481
3480
|
static const char __pyx_k_Attributes_keys[] = "_Attributes.keys";
|
|
3482
3481
|
static const char __pyx_k_Attributes_sget[] = "_Attributes.sget";
|
|
@@ -3507,6 +3506,7 @@ static const char __pyx_k_Node_replace_with[] = "Node.replace_with";
|
|
|
3507
3506
|
static const char __pyx_k_any_text_contains[] = "any_text_contains";
|
|
3508
3507
|
static const char __pyx_k_do_parse_fragment[] = "do_parse_fragment";
|
|
3509
3508
|
static const char __pyx_k_get_fragment_type[] = "get_fragment_type";
|
|
3509
|
+
static const char __pyx_k_html_body_head_er[] = "<html|<body|<head(?!er)";
|
|
3510
3510
|
static const char __pyx_k_selectolax_parser[] = "selectolax.parser";
|
|
3511
3511
|
static const char __pyx_k_Can_t_parse_HTML_s[] = "Can't parse HTML:\n%s";
|
|
3512
3512
|
static const char __pyx_k_HTMLParser_chars_s[] = "<HTMLParser chars=%s>";
|
|
@@ -4113,7 +4113,7 @@ typedef struct {
|
|
|
4113
4113
|
PyObject *__pyx_n_u_head_and_body;
|
|
4114
4114
|
PyObject *__pyx_n_s_html;
|
|
4115
4115
|
PyObject *__pyx_kp_u_html_2;
|
|
4116
|
-
PyObject *
|
|
4116
|
+
PyObject *__pyx_kp_u_html_body_head_er;
|
|
4117
4117
|
PyObject *__pyx_n_s_html_len;
|
|
4118
4118
|
PyObject *__pyx_n_s_html_re;
|
|
4119
4119
|
PyObject *__pyx_n_s_html_tree;
|
|
@@ -4657,7 +4657,7 @@ static int __pyx_m_clear(PyObject *m) {
|
|
|
4657
4657
|
Py_CLEAR(clear_module_state->__pyx_n_u_head_and_body);
|
|
4658
4658
|
Py_CLEAR(clear_module_state->__pyx_n_s_html);
|
|
4659
4659
|
Py_CLEAR(clear_module_state->__pyx_kp_u_html_2);
|
|
4660
|
-
Py_CLEAR(clear_module_state->
|
|
4660
|
+
Py_CLEAR(clear_module_state->__pyx_kp_u_html_body_head_er);
|
|
4661
4661
|
Py_CLEAR(clear_module_state->__pyx_n_s_html_len);
|
|
4662
4662
|
Py_CLEAR(clear_module_state->__pyx_n_s_html_re);
|
|
4663
4663
|
Py_CLEAR(clear_module_state->__pyx_n_s_html_tree);
|
|
@@ -5179,7 +5179,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
|
|
|
5179
5179
|
Py_VISIT(traverse_module_state->__pyx_n_u_head_and_body);
|
|
5180
5180
|
Py_VISIT(traverse_module_state->__pyx_n_s_html);
|
|
5181
5181
|
Py_VISIT(traverse_module_state->__pyx_kp_u_html_2);
|
|
5182
|
-
Py_VISIT(traverse_module_state->
|
|
5182
|
+
Py_VISIT(traverse_module_state->__pyx_kp_u_html_body_head_er);
|
|
5183
5183
|
Py_VISIT(traverse_module_state->__pyx_n_s_html_len);
|
|
5184
5184
|
Py_VISIT(traverse_module_state->__pyx_n_s_html_re);
|
|
5185
5185
|
Py_VISIT(traverse_module_state->__pyx_n_s_html_tree);
|
|
@@ -5801,7 +5801,7 @@ static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
|
|
|
5801
5801
|
#define __pyx_n_u_head_and_body __pyx_mstate_global->__pyx_n_u_head_and_body
|
|
5802
5802
|
#define __pyx_n_s_html __pyx_mstate_global->__pyx_n_s_html
|
|
5803
5803
|
#define __pyx_kp_u_html_2 __pyx_mstate_global->__pyx_kp_u_html_2
|
|
5804
|
-
#define
|
|
5804
|
+
#define __pyx_kp_u_html_body_head_er __pyx_mstate_global->__pyx_kp_u_html_body_head_er
|
|
5805
5805
|
#define __pyx_n_s_html_len __pyx_mstate_global->__pyx_n_s_html_len
|
|
5806
5806
|
#define __pyx_n_s_html_re __pyx_mstate_global->__pyx_n_s_html_re
|
|
5807
5807
|
#define __pyx_n_s_html_tree __pyx_mstate_global->__pyx_n_s_html_tree
|
|
@@ -29011,7 +29011,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED
|
|
|
29011
29011
|
* tree = parser_cls(html)
|
|
29012
29012
|
*
|
|
29013
29013
|
* import re # <<<<<<<<<<<<<<
|
|
29014
|
-
* html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
|
|
29014
|
+
* html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
|
|
29015
29015
|
*
|
|
29016
29016
|
*/
|
|
29017
29017
|
__pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_re, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 36, __pyx_L1_error)
|
|
@@ -29022,7 +29022,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED
|
|
|
29022
29022
|
/* "selectolax/utils.pxi":37
|
|
29023
29023
|
*
|
|
29024
29024
|
* import re
|
|
29025
|
-
* html_re = re.compile(r"<html|<body|<head", re.IGNORECASE) # <<<<<<<<<<<<<<
|
|
29025
|
+
* html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE) # <<<<<<<<<<<<<<
|
|
29026
29026
|
*
|
|
29027
29027
|
* has_html = False
|
|
29028
29028
|
*/
|
|
@@ -29045,7 +29045,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED
|
|
|
29045
29045
|
}
|
|
29046
29046
|
#endif
|
|
29047
29047
|
{
|
|
29048
|
-
PyObject *__pyx_callargs[3] = {__pyx_t_7,
|
|
29048
|
+
PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_html_body_head_er, __pyx_t_5};
|
|
29049
29049
|
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
|
|
29050
29050
|
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
|
|
29051
29051
|
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
|
|
@@ -29057,7 +29057,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_4get_fragment_type(CYTHON_UNUSED
|
|
|
29057
29057
|
__pyx_t_3 = 0;
|
|
29058
29058
|
|
|
29059
29059
|
/* "selectolax/utils.pxi":39
|
|
29060
|
-
* html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
|
|
29060
|
+
* html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
|
|
29061
29061
|
*
|
|
29062
29062
|
* has_html = False # <<<<<<<<<<<<<<
|
|
29063
29063
|
* has_head = False
|
|
@@ -31530,7 +31530,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED
|
|
|
31530
31530
|
* tree = parser_cls(html)
|
|
31531
31531
|
*
|
|
31532
31532
|
* import re # <<<<<<<<<<<<<<
|
|
31533
|
-
* html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
|
|
31533
|
+
* html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
|
|
31534
31534
|
*
|
|
31535
31535
|
*/
|
|
31536
31536
|
__pyx_t_3 = __Pyx_ImportDottedModule(__pyx_n_s_re, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(7, 36, __pyx_L1_error)
|
|
@@ -31541,7 +31541,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED
|
|
|
31541
31541
|
/* "selectolax/utils.pxi":37
|
|
31542
31542
|
*
|
|
31543
31543
|
* import re
|
|
31544
|
-
* html_re = re.compile(r"<html|<body|<head", re.IGNORECASE) # <<<<<<<<<<<<<<
|
|
31544
|
+
* html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE) # <<<<<<<<<<<<<<
|
|
31545
31545
|
*
|
|
31546
31546
|
* has_html = False
|
|
31547
31547
|
*/
|
|
@@ -31564,7 +31564,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED
|
|
|
31564
31564
|
}
|
|
31565
31565
|
#endif
|
|
31566
31566
|
{
|
|
31567
|
-
PyObject *__pyx_callargs[3] = {__pyx_t_7,
|
|
31567
|
+
PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_kp_u_html_body_head_er, __pyx_t_5};
|
|
31568
31568
|
__pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
|
|
31569
31569
|
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
|
|
31570
31570
|
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
|
|
@@ -31576,7 +31576,7 @@ static PyObject *__pyx_pf_10selectolax_6parser_16get_fragment_type(CYTHON_UNUSED
|
|
|
31576
31576
|
__pyx_t_3 = 0;
|
|
31577
31577
|
|
|
31578
31578
|
/* "selectolax/utils.pxi":39
|
|
31579
|
-
* html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
|
|
31579
|
+
* html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
|
|
31580
31580
|
*
|
|
31581
31581
|
* has_html = False # <<<<<<<<<<<<<<
|
|
31582
31582
|
* has_head = False
|
|
@@ -41210,7 +41210,7 @@ static int __Pyx_CreateStringTabAndInitStrings(void) {
|
|
|
41210
41210
|
{&__pyx_n_u_head_and_body, __pyx_k_head_and_body, sizeof(__pyx_k_head_and_body), 0, 1, 0, 1},
|
|
41211
41211
|
{&__pyx_n_s_html, __pyx_k_html, sizeof(__pyx_k_html), 0, 0, 1, 1},
|
|
41212
41212
|
{&__pyx_kp_u_html_2, __pyx_k_html_2, sizeof(__pyx_k_html_2), 0, 1, 0, 0},
|
|
41213
|
-
{&
|
|
41213
|
+
{&__pyx_kp_u_html_body_head_er, __pyx_k_html_body_head_er, sizeof(__pyx_k_html_body_head_er), 0, 1, 0, 0},
|
|
41214
41214
|
{&__pyx_n_s_html_len, __pyx_k_html_len, sizeof(__pyx_k_html_len), 0, 0, 1, 1},
|
|
41215
41215
|
{&__pyx_n_s_html_re, __pyx_k_html_re, sizeof(__pyx_k_html_re), 0, 0, 1, 1},
|
|
41216
41216
|
{&__pyx_n_s_html_tree, __pyx_k_html_tree, sizeof(__pyx_k_html_tree), 0, 0, 1, 1},
|
|
Binary file
|
selectolax/parser.pyi
CHANGED
|
@@ -53,14 +53,14 @@ class Selector:
|
|
|
53
53
|
) -> bool:
|
|
54
54
|
"""Returns True if any node in the current search scope contains specified text"""
|
|
55
55
|
...
|
|
56
|
-
def
|
|
56
|
+
def attribute_longer_than(
|
|
57
57
|
self, text: str, length: int, start: str | None = None
|
|
58
58
|
) -> Selector:
|
|
59
59
|
"""Filter all current matches by attribute length.
|
|
60
60
|
|
|
61
61
|
Similar to string-length in XPath."""
|
|
62
62
|
...
|
|
63
|
-
def
|
|
63
|
+
def any_attribute_longer_than(
|
|
64
64
|
self, text: str, length: int, start: str | None = None
|
|
65
65
|
) -> bool:
|
|
66
66
|
"""Returns True any href attribute longer than a specified length.
|
selectolax/utils.pxi
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
MIT License
|
|
3
3
|
|
|
4
|
-
Copyright (c) 2018-
|
|
4
|
+
Copyright (c) 2018-2025, Artem Golubin
|
|
5
5
|
|
|
6
6
|
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:
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: selectolax
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.28
|
|
4
4
|
Summary: Fast HTML5 parser with CSS selectors.
|
|
5
5
|
Home-page: https://github.com/rushter/selectolax
|
|
6
6
|
Author: Artem Golubin
|
|
@@ -26,6 +26,16 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
26
26
|
License-File: LICENSE
|
|
27
27
|
Provides-Extra: cython
|
|
28
28
|
Requires-Dist: Cython==3.0.11; extra == "cython"
|
|
29
|
+
Dynamic: author
|
|
30
|
+
Dynamic: author-email
|
|
31
|
+
Dynamic: classifier
|
|
32
|
+
Dynamic: description
|
|
33
|
+
Dynamic: home-page
|
|
34
|
+
Dynamic: keywords
|
|
35
|
+
Dynamic: license
|
|
36
|
+
Dynamic: project-url
|
|
37
|
+
Dynamic: provides-extra
|
|
38
|
+
Dynamic: summary
|
|
29
39
|
|
|
30
40
|
.. image:: docs/logo.png
|
|
31
41
|
:alt: selectolax logo
|
|
@@ -75,6 +85,10 @@ How to compile selectolax while developing:
|
|
|
75
85
|
Basic examples
|
|
76
86
|
--------------
|
|
77
87
|
|
|
88
|
+
Here are some basic examples to get you started with selectolax:
|
|
89
|
+
|
|
90
|
+
Parsing HTML and extracting text:
|
|
91
|
+
|
|
78
92
|
.. code:: python
|
|
79
93
|
|
|
80
94
|
In [1]: from selectolax.parser import HTMLParser
|
|
@@ -97,6 +111,8 @@ Basic examples
|
|
|
97
111
|
['Lorem Ipsum is simply dummy text of the printing and typesetting industry. ',
|
|
98
112
|
'Lorem ipsum dolor sit amet, consectetur adipiscing elit.']
|
|
99
113
|
|
|
114
|
+
Using advanced CSS selectors:
|
|
115
|
+
|
|
100
116
|
.. code:: python
|
|
101
117
|
|
|
102
118
|
In [1]: html = "<div><p id=p1><p id=p2><p id=p3><a>link</a><p id=p4><p id=p5>text<p id=p6></div>"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
selectolax/__init__.py,sha256=IMgHVlDkSCVB-D4ya7t6eqh3wvTxHwRpxOvV6ybw-Lw,185
|
|
2
|
+
selectolax/base.pxi,sha256=zOj3BrCA71xd-mJFtkMIAglP4ZybfrHVoCoy6ljTBDQ,93
|
|
3
|
+
selectolax/lexbor.c,sha256=Uwb33OzA7c6RxSct6extDwdzZZOGZrBjfnZqJklCvMk,2360252
|
|
4
|
+
selectolax/lexbor.cp313-win_amd64.pyd,sha256=X7bPkZdSBVqcVP4v9mnAauZJk0kHBXL7MVhoc2r-ctU,3196416
|
|
5
|
+
selectolax/lexbor.pxd,sha256=1d9nvZd9rZl27gwPwVV5BlbR2LAi6jDK69Xm9Guz5Kk,21538
|
|
6
|
+
selectolax/lexbor.pyi,sha256=32Ky5eZkOAPc4pN3m-eZQy4EJQV7O8xUwGHOWkOI06o,6724
|
|
7
|
+
selectolax/lexbor.pyx,sha256=CYorl52H--UfKOihmZn7SxVIjl2GYvSVh3Lg9YMRACU,11231
|
|
8
|
+
selectolax/parser.c,sha256=rGXXnE3kJJDElEps9cQMYaIfXCCxVpDk5ELR-RQF5nk,2215098
|
|
9
|
+
selectolax/parser.cp313-win_amd64.pyd,sha256=5TXYLPrYv-J9lHRb05DbbNjb83-natpAn9m9zLASLAo,2149888
|
|
10
|
+
selectolax/parser.pxd,sha256=4pM_CcZlvJlaR8EMjZCnSmnCcJbwcYOldRTBEbfwm48,25145
|
|
11
|
+
selectolax/parser.pyi,sha256=XItuYMW5pdpTbTFMI1FjH0JvBao9VTwbtfvnnrLn0Pk,11891
|
|
12
|
+
selectolax/parser.pyx,sha256=lQW4qJ6nCDraCupvcT61zUkgo-S-KIzl9JIGV6hh6hA,13386
|
|
13
|
+
selectolax/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
+
selectolax/utils.pxi,sha256=4rtdRcLWuemxN1qe7Eul5jvAmHZ65r7Gvf67_Wg8Bt4,3566
|
|
15
|
+
selectolax/lexbor/attrs.pxi,sha256=r9DroDAkoxIvSMiDTRKpfYp503b7yUteDoYwglhQ0FM,3241
|
|
16
|
+
selectolax/lexbor/node.pxi,sha256=g5R3gZw-Xa7y8TkupE4mAyaorcdDArl5DeaKBBU35jA,30207
|
|
17
|
+
selectolax/lexbor/selection.pxi,sha256=DVtVnaCwzXPPkDqgW0vEtkQa1zWJ0c2Ud3KGSrvK5PM,6755
|
|
18
|
+
selectolax/lexbor/util.pxi,sha256=0I4ElWIwXxrZCfMmGCtyDU127oMsPCqC3IcUk4QmMAc,582
|
|
19
|
+
selectolax/modest/node.pxi,sha256=xDJTFhcvkF7FGSObnCftZJSIBj7wV1--IdLJbFoIItw,33519
|
|
20
|
+
selectolax/modest/selection.pxi,sha256=0elY7JwnpPVaw0QZE1T7A78s9FIph5uWIhwy4sEXGU8,6586
|
|
21
|
+
selectolax/modest/util.pxi,sha256=o2nPGGGtRlLqOCa7yPk94CfBzNlVr7ull7osFy6NRX4,570
|
|
22
|
+
selectolax-0.3.28.dist-info/LICENSE,sha256=A7Jb3WZcENcLfZRc7QPdm9zJdwfpIyPodPJu-kdMH6E,1087
|
|
23
|
+
selectolax-0.3.28.dist-info/METADATA,sha256=KFj4io2mGglBQQmipQ0zmc_yAmwXu8kDVav_YS3SBZc,6448
|
|
24
|
+
selectolax-0.3.28.dist-info/WHEEL,sha256=6bXTkCllrWLYPW3gCPkeRA91N4604g9hqNhQqZWsUzQ,101
|
|
25
|
+
selectolax-0.3.28.dist-info/top_level.txt,sha256=e5MuEM2PrQzoDlWetkFli9uXSlxa_ktW5jJEihhaI1c,11
|
|
26
|
+
selectolax-0.3.28.dist-info/RECORD,,
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
selectolax/__init__.py,sha256=e6ZcOvKobBN936ksVQLGC_B9RmDKiHG7o2xy6da-oqY,185
|
|
2
|
-
selectolax/base.pxi,sha256=zOj3BrCA71xd-mJFtkMIAglP4ZybfrHVoCoy6ljTBDQ,93
|
|
3
|
-
selectolax/lexbor.c,sha256=OXp79KKhS3Zg5JY0cbv05VGROvfgFOnFZAmPs-JdQyY,2354322
|
|
4
|
-
selectolax/lexbor.cp313-win_amd64.pyd,sha256=UkRATgJ9DYIfoBdz076rX7j938oIpmmjNGFGxLFPTQY,6929920
|
|
5
|
-
selectolax/lexbor.pxd,sha256=1d9nvZd9rZl27gwPwVV5BlbR2LAi6jDK69Xm9Guz5Kk,21538
|
|
6
|
-
selectolax/lexbor.pyi,sha256=DXQejzmWT7FbWCXcakLzOYGEs-rOMMdaLIZaNSu2uiM,6716
|
|
7
|
-
selectolax/lexbor.pyx,sha256=H3-Y78orz2Hop0Qqf8JulJo6f3yBR0kbHRqNPyDOsAc,11097
|
|
8
|
-
selectolax/parser.c,sha256=Y96r4R41n15eztCveImVl1zFJId6TERe9HQp9GFJD04,2215023
|
|
9
|
-
selectolax/parser.cp313-win_amd64.pyd,sha256=IKBMYmdSCdfZITNee9h5DBJWrzvgsMLyHKPe5cEw4VE,2150400
|
|
10
|
-
selectolax/parser.pxd,sha256=4pM_CcZlvJlaR8EMjZCnSmnCcJbwcYOldRTBEbfwm48,25145
|
|
11
|
-
selectolax/parser.pyi,sha256=Ud_hBY54PJEVJX6WZ07L7s0uzs3u1FLD7TAGhES1y7Q,11887
|
|
12
|
-
selectolax/parser.pyx,sha256=lQW4qJ6nCDraCupvcT61zUkgo-S-KIzl9JIGV6hh6hA,13386
|
|
13
|
-
selectolax/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
selectolax/utils.pxi,sha256=GFDsBSjUCNh_Zmi7mKvWN-ww2meWKe955DqXlDqhNHc,3560
|
|
15
|
-
selectolax/lexbor/attrs.pxi,sha256=TEJUCGAkFwb14Emecyx4yljKSJMRmFbq8mOcNs35G_c,3204
|
|
16
|
-
selectolax/lexbor/node.pxi,sha256=P-KXzAk6fOo8ilEKAm0yjFQa90xkAXhWhSdce-YDauo,30213
|
|
17
|
-
selectolax/lexbor/selection.pxi,sha256=nRGiDYvpSAQcsWQ_2Z9-4kqebahIJmKWXQBtd3MPsis,6626
|
|
18
|
-
selectolax/lexbor/util.pxi,sha256=0I4ElWIwXxrZCfMmGCtyDU127oMsPCqC3IcUk4QmMAc,582
|
|
19
|
-
selectolax/modest/node.pxi,sha256=xDJTFhcvkF7FGSObnCftZJSIBj7wV1--IdLJbFoIItw,33519
|
|
20
|
-
selectolax/modest/selection.pxi,sha256=0elY7JwnpPVaw0QZE1T7A78s9FIph5uWIhwy4sEXGU8,6586
|
|
21
|
-
selectolax/modest/util.pxi,sha256=o2nPGGGtRlLqOCa7yPk94CfBzNlVr7ull7osFy6NRX4,570
|
|
22
|
-
selectolax-0.3.26.dist-info/LICENSE,sha256=Gy4WGsmAwV9QtqH0HaBHJQ35bt_0irn77fIt1iBncUo,1087
|
|
23
|
-
selectolax-0.3.26.dist-info/METADATA,sha256=U7aWCMLKtBNgpwXvijodix-Vn0cNPx6mbrbW9uvmg44,6105
|
|
24
|
-
selectolax-0.3.26.dist-info/WHEEL,sha256=UJbDlEYuWWwgv9Hu0As4Rgv2Qpdka2YFe6UlEKs4AoE,101
|
|
25
|
-
selectolax-0.3.26.dist-info/top_level.txt,sha256=e5MuEM2PrQzoDlWetkFli9uXSlxa_ktW5jJEihhaI1c,11
|
|
26
|
-
selectolax-0.3.26.dist-info/RECORD,,
|
|
File without changes
|