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.

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 *__pyx_kp_u_html_body_head;
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->__pyx_kp_u_html_body_head);
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->__pyx_kp_u_html_body_head);
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 __pyx_kp_u_html_body_head __pyx_mstate_global->__pyx_kp_u_html_body_head
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, __pyx_kp_u_html_body_head, __pyx_t_5};
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, __pyx_kp_u_html_body_head, __pyx_t_5};
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
- {&__pyx_kp_u_html_body_head, __pyx_k_html_body_head, sizeof(__pyx_k_html_body_head), 0, 1, 0, 0},
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 attribute_long_than(
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 any_attribute_long_than(
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
@@ -34,7 +34,7 @@ def get_fragment_type(
34
34
  tree = parser_cls(html)
35
35
 
36
36
  import re
37
- html_re = re.compile(r"<html|<body|<head", re.IGNORECASE)
37
+ html_re = re.compile(r"<html|<body|<head(?!er)", re.IGNORECASE)
38
38
 
39
39
  has_html = False
40
40
  has_head = False
@@ -1,7 +1,7 @@
1
1
 
2
2
  MIT License
3
3
 
4
- Copyright (c) 2018-2023, Artem Golubin
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
1
+ Metadata-Version: 2.2
2
2
  Name: selectolax
3
- Version: 0.3.26
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,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp313-cp313-win_amd64
5
5
 
@@ -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,,