css-inline 0.20.1__tar.gz → 0.21.0__tar.gz
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.
- {css_inline-0.20.1 → css_inline-0.21.0}/PKG-INFO +4 -5
- {css_inline-0.20.1/bindings/python → css_inline-0.21.0}/README.md +2 -2
- {css_inline-0.20.1 → css_inline-0.21.0}/bindings/python/CHANGELOG.md +25 -1
- {css_inline-0.20.1 → css_inline-0.21.0}/bindings/python/Cargo.lock +131 -153
- {css_inline-0.20.1 → css_inline-0.21.0}/bindings/python/Cargo.toml +2 -2
- {css_inline-0.20.1 → css_inline-0.21.0/bindings/python}/README.md +2 -2
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/Cargo.toml +9 -5
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/README.md +2 -2
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/document.rs +8 -10
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/serializer.rs +44 -9
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/lib.rs +12 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/pyproject.toml +2 -3
- {css_inline-0.20.1 → css_inline-0.21.0}/LICENSE +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/bindings/python/build.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/bindings/python/src/lib.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/benches/inliner.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/rustfmt.toml +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/error.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/attributes.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/element.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/iter.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/mod.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/node.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/parser.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/selectors/attr_value.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/selectors/local_name.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/selectors/mod.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/selectors/parser.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/selectors/pseudo_classes.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/selectors/pseudo_elements.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/html/selectors/selector_impl.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/main.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/parser.rs +0 -0
- {css_inline-0.20.1 → css_inline-0.21.0}/css-inline/src/resolver.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: css-inline
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.21.0
|
|
4
4
|
Classifier: Development Status :: 4 - Beta
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -8,7 +8,6 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
8
8
|
Classifier: Operating System :: Microsoft :: Windows
|
|
9
9
|
Classifier: Operating System :: POSIX
|
|
10
10
|
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
13
12
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -21,7 +20,7 @@ License-File: LICENSE
|
|
|
21
20
|
Summary: High-performance library for inlining CSS into HTML 'style' attributes
|
|
22
21
|
Keywords: css,html,email,stylesheet,inlining
|
|
23
22
|
Author-email: Dmitry Dygalo <dmitry@dygalo.dev>
|
|
24
|
-
Requires-Python: >=3.
|
|
23
|
+
Requires-Python: >=3.10
|
|
25
24
|
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
26
25
|
Project-URL: homepage, https://github.com/Stranger6667/css-inline/tree/master/bindings/python
|
|
27
26
|
Project-URL: repository, https://github.com/Stranger6667/css-inline
|
|
@@ -72,7 +71,7 @@ into:
|
|
|
72
71
|
- Can process multiple documents in parallel
|
|
73
72
|
- Works on Linux, Windows, macOS and in the browser via PyOdide
|
|
74
73
|
- Supports HTML5 & CSS3
|
|
75
|
-
- Tested on CPython 3.
|
|
74
|
+
- Tested on CPython 3.10, 3.11, 3.12, 3.13, 3.14 and PyPy 3.11.
|
|
76
75
|
|
|
77
76
|
## Playground
|
|
78
77
|
|
|
@@ -118,7 +117,7 @@ inlined = css_inline.inline(HTML)
|
|
|
118
117
|
|
|
119
118
|
Note that `css-inline` automatically adds missing `html` and `body` tags, so the output is a valid HTML document.
|
|
120
119
|
|
|
121
|
-
Alternatively, you can inline CSS into an HTML fragment
|
|
120
|
+
Alternatively, you can inline CSS into an HTML fragment. Structural tags (`<html>`, `<head>`, `<body>`) are stripped from the output; only their contents are preserved. Use `inline` if you need to keep the full document structure:
|
|
122
121
|
|
|
123
122
|
```python
|
|
124
123
|
FRAGMENT = """<main>
|
|
@@ -44,7 +44,7 @@ into:
|
|
|
44
44
|
- Can process multiple documents in parallel
|
|
45
45
|
- Works on Linux, Windows, macOS and in the browser via PyOdide
|
|
46
46
|
- Supports HTML5 & CSS3
|
|
47
|
-
- Tested on CPython 3.
|
|
47
|
+
- Tested on CPython 3.10, 3.11, 3.12, 3.13, 3.14 and PyPy 3.11.
|
|
48
48
|
|
|
49
49
|
## Playground
|
|
50
50
|
|
|
@@ -90,7 +90,7 @@ inlined = css_inline.inline(HTML)
|
|
|
90
90
|
|
|
91
91
|
Note that `css-inline` automatically adds missing `html` and `body` tags, so the output is a valid HTML document.
|
|
92
92
|
|
|
93
|
-
Alternatively, you can inline CSS into an HTML fragment
|
|
93
|
+
Alternatively, you can inline CSS into an HTML fragment. Structural tags (`<html>`, `<head>`, `<body>`) are stripped from the output; only their contents are preserved. Use `inline` if you need to keep the full document structure:
|
|
94
94
|
|
|
95
95
|
```python
|
|
96
96
|
FRAGMENT = """<main>
|
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.21.0] - 2026-06-16
|
|
6
|
+
|
|
7
|
+
### Removed
|
|
8
|
+
|
|
9
|
+
- Support for Python 3.9.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Update `selectors` to `0.38`.
|
|
14
|
+
- Update `cssparser` to `0.37`.
|
|
15
|
+
- Update `PyO3` to `0.29.0`.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- `width`/`height` HTML attributes not derived from an element's own inline `style` attribute. [#725](https://github.com/Stranger6667/css-inline/issues/725)
|
|
20
|
+
|
|
21
|
+
## [0.20.2] - 2026-04-02
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- `inline_fragment` silently returning only whitespace when the input starts with whitespace or contains structural HTML tags (`<html>`, `<head>`, `<body>`, `<style>`). [#692](https://github.com/Stranger6667/css-inline/issues/692) [#693](https://github.com/Stranger6667/css-inline/issues/693)
|
|
26
|
+
|
|
5
27
|
## [0.20.1] - 2026-03-26
|
|
6
28
|
|
|
7
29
|
### Changed
|
|
@@ -563,7 +585,9 @@
|
|
|
563
585
|
|
|
564
586
|
- Initial public release
|
|
565
587
|
|
|
566
|
-
[Unreleased]: https://github.com/Stranger6667/css-inline/compare/python-v0.
|
|
588
|
+
[Unreleased]: https://github.com/Stranger6667/css-inline/compare/python-v0.21.0...HEAD
|
|
589
|
+
[0.21.0]: https://github.com/Stranger6667/css-inline/compare/python-v0.20.2...python-v0.21.0
|
|
590
|
+
[0.20.2]: https://github.com/Stranger6667/css-inline/compare/python-v0.20.1...python-v0.20.2
|
|
567
591
|
[0.20.1]: https://github.com/Stranger6667/css-inline/compare/python-v0.20.0...python-v0.20.1
|
|
568
592
|
[0.20.0]: https://github.com/Stranger6667/css-inline/compare/python-v0.19.1...python-v0.20.0
|
|
569
593
|
[0.19.1]: https://github.com/Stranger6667/css-inline/compare/python-v0.19.0...python-v0.19.1
|
|
@@ -25,9 +25,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
|
|
|
25
25
|
|
|
26
26
|
[[package]]
|
|
27
27
|
name = "autocfg"
|
|
28
|
-
version = "1.5.
|
|
28
|
+
version = "1.5.1"
|
|
29
29
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
30
|
-
checksum = "
|
|
30
|
+
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
31
31
|
|
|
32
32
|
[[package]]
|
|
33
33
|
name = "base64"
|
|
@@ -37,9 +37,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
|
|
37
37
|
|
|
38
38
|
[[package]]
|
|
39
39
|
name = "bitflags"
|
|
40
|
-
version = "2.
|
|
40
|
+
version = "2.13.0"
|
|
41
41
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
42
|
-
checksum = "
|
|
42
|
+
checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
|
|
43
43
|
|
|
44
44
|
[[package]]
|
|
45
45
|
name = "built"
|
|
@@ -53,9 +53,9 @@ dependencies = [
|
|
|
53
53
|
|
|
54
54
|
[[package]]
|
|
55
55
|
name = "bumpalo"
|
|
56
|
-
version = "3.20.
|
|
56
|
+
version = "3.20.3"
|
|
57
57
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
58
|
-
checksum = "
|
|
58
|
+
checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
|
|
59
59
|
|
|
60
60
|
[[package]]
|
|
61
61
|
name = "bytes"
|
|
@@ -77,9 +77,9 @@ dependencies = [
|
|
|
77
77
|
|
|
78
78
|
[[package]]
|
|
79
79
|
name = "cc"
|
|
80
|
-
version = "1.2.
|
|
80
|
+
version = "1.2.64"
|
|
81
81
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
82
|
-
checksum = "
|
|
82
|
+
checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f"
|
|
83
83
|
dependencies = [
|
|
84
84
|
"find-msvc-tools",
|
|
85
85
|
"shlex",
|
|
@@ -99,9 +99,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
|
|
|
99
99
|
|
|
100
100
|
[[package]]
|
|
101
101
|
name = "chrono"
|
|
102
|
-
version = "0.4.
|
|
102
|
+
version = "0.4.45"
|
|
103
103
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
104
|
-
checksum = "
|
|
104
|
+
checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
|
|
105
105
|
dependencies = [
|
|
106
106
|
"iana-time-zone",
|
|
107
107
|
"num-traits",
|
|
@@ -141,7 +141,7 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
|
|
|
141
141
|
|
|
142
142
|
[[package]]
|
|
143
143
|
name = "css-inline"
|
|
144
|
-
version = "0.
|
|
144
|
+
version = "0.21.0"
|
|
145
145
|
dependencies = [
|
|
146
146
|
"cssparser",
|
|
147
147
|
"html5ever",
|
|
@@ -157,7 +157,7 @@ dependencies = [
|
|
|
157
157
|
|
|
158
158
|
[[package]]
|
|
159
159
|
name = "css-inline-python"
|
|
160
|
-
version = "0.
|
|
160
|
+
version = "0.21.0"
|
|
161
161
|
dependencies = [
|
|
162
162
|
"built",
|
|
163
163
|
"css-inline",
|
|
@@ -169,9 +169,9 @@ dependencies = [
|
|
|
169
169
|
|
|
170
170
|
[[package]]
|
|
171
171
|
name = "cssparser"
|
|
172
|
-
version = "0.
|
|
172
|
+
version = "0.37.0"
|
|
173
173
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
174
|
-
checksum = "
|
|
174
|
+
checksum = "8c9cdaae01d5ed7882b04d795e7f752f46ff52d2fa3b50a20d28c464510bba98"
|
|
175
175
|
dependencies = [
|
|
176
176
|
"cssparser-macros",
|
|
177
177
|
"dtoa-short",
|
|
@@ -182,9 +182,9 @@ dependencies = [
|
|
|
182
182
|
|
|
183
183
|
[[package]]
|
|
184
184
|
name = "cssparser-macros"
|
|
185
|
-
version = "0.
|
|
185
|
+
version = "0.7.0"
|
|
186
186
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
187
|
-
checksum = "
|
|
187
|
+
checksum = "10a2a99df6e410a8ff4245aa2006499ea662245f967cc7c0a38c83ef8eb44dbf"
|
|
188
188
|
dependencies = [
|
|
189
189
|
"quote",
|
|
190
190
|
"syn",
|
|
@@ -213,9 +213,9 @@ dependencies = [
|
|
|
213
213
|
|
|
214
214
|
[[package]]
|
|
215
215
|
name = "displaydoc"
|
|
216
|
-
version = "0.2.
|
|
216
|
+
version = "0.2.6"
|
|
217
217
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
218
|
-
checksum = "
|
|
218
|
+
checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
|
|
219
219
|
dependencies = [
|
|
220
220
|
"proc-macro2",
|
|
221
221
|
"quote",
|
|
@@ -239,9 +239,9 @@ dependencies = [
|
|
|
239
239
|
|
|
240
240
|
[[package]]
|
|
241
241
|
name = "either"
|
|
242
|
-
version = "1.
|
|
242
|
+
version = "1.16.0"
|
|
243
243
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
244
|
-
checksum = "
|
|
244
|
+
checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
|
|
245
245
|
|
|
246
246
|
[[package]]
|
|
247
247
|
name = "equivalent"
|
|
@@ -251,9 +251,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
|
|
251
251
|
|
|
252
252
|
[[package]]
|
|
253
253
|
name = "fastrand"
|
|
254
|
-
version = "2.
|
|
254
|
+
version = "2.4.1"
|
|
255
255
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
256
|
-
checksum = "
|
|
256
|
+
checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
|
|
257
257
|
|
|
258
258
|
[[package]]
|
|
259
259
|
name = "find-msvc-tools"
|
|
@@ -354,9 +354,9 @@ dependencies = [
|
|
|
354
354
|
|
|
355
355
|
[[package]]
|
|
356
356
|
name = "hashbrown"
|
|
357
|
-
version = "0.
|
|
357
|
+
version = "0.17.1"
|
|
358
358
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
359
|
-
checksum = "
|
|
359
|
+
checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
|
|
360
360
|
dependencies = [
|
|
361
361
|
"allocator-api2",
|
|
362
362
|
"equivalent",
|
|
@@ -381,9 +381,9 @@ dependencies = [
|
|
|
381
381
|
|
|
382
382
|
[[package]]
|
|
383
383
|
name = "http"
|
|
384
|
-
version = "1.4.
|
|
384
|
+
version = "1.4.2"
|
|
385
385
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
386
|
-
checksum = "
|
|
386
|
+
checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
|
|
387
387
|
dependencies = [
|
|
388
388
|
"bytes",
|
|
389
389
|
"itoa",
|
|
@@ -420,9 +420,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
|
|
|
420
420
|
|
|
421
421
|
[[package]]
|
|
422
422
|
name = "hyper"
|
|
423
|
-
version = "1.
|
|
423
|
+
version = "1.10.1"
|
|
424
424
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
425
|
-
checksum = "
|
|
425
|
+
checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
|
|
426
426
|
dependencies = [
|
|
427
427
|
"atomic-waker",
|
|
428
428
|
"bytes",
|
|
@@ -433,7 +433,6 @@ dependencies = [
|
|
|
433
433
|
"httparse",
|
|
434
434
|
"itoa",
|
|
435
435
|
"pin-project-lite",
|
|
436
|
-
"pin-utils",
|
|
437
436
|
"smallvec",
|
|
438
437
|
"tokio",
|
|
439
438
|
"want",
|
|
@@ -441,15 +440,14 @@ dependencies = [
|
|
|
441
440
|
|
|
442
441
|
[[package]]
|
|
443
442
|
name = "hyper-rustls"
|
|
444
|
-
version = "0.27.
|
|
443
|
+
version = "0.27.9"
|
|
445
444
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
446
|
-
checksum = "
|
|
445
|
+
checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f"
|
|
447
446
|
dependencies = [
|
|
448
447
|
"http",
|
|
449
448
|
"hyper",
|
|
450
449
|
"hyper-util",
|
|
451
450
|
"rustls",
|
|
452
|
-
"rustls-pki-types",
|
|
453
451
|
"tokio",
|
|
454
452
|
"tokio-rustls",
|
|
455
453
|
"tower-service",
|
|
@@ -607,9 +605,9 @@ dependencies = [
|
|
|
607
605
|
|
|
608
606
|
[[package]]
|
|
609
607
|
name = "indexmap"
|
|
610
|
-
version = "2.
|
|
608
|
+
version = "2.14.0"
|
|
611
609
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
612
|
-
checksum = "
|
|
610
|
+
checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
|
|
613
611
|
dependencies = [
|
|
614
612
|
"equivalent",
|
|
615
613
|
"hashbrown",
|
|
@@ -621,16 +619,6 @@ version = "2.12.0"
|
|
|
621
619
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
622
620
|
checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
|
|
623
621
|
|
|
624
|
-
[[package]]
|
|
625
|
-
name = "iri-string"
|
|
626
|
-
version = "0.7.11"
|
|
627
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
628
|
-
checksum = "d8e7418f59cc01c88316161279a7f665217ae316b388e58a0d10e29f54f1e5eb"
|
|
629
|
-
dependencies = [
|
|
630
|
-
"memchr",
|
|
631
|
-
"serde",
|
|
632
|
-
]
|
|
633
|
-
|
|
634
622
|
[[package]]
|
|
635
623
|
name = "itoa"
|
|
636
624
|
version = "1.0.18"
|
|
@@ -639,25 +627,26 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
|
|
639
627
|
|
|
640
628
|
[[package]]
|
|
641
629
|
name = "js-sys"
|
|
642
|
-
version = "0.3.
|
|
630
|
+
version = "0.3.102"
|
|
643
631
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
644
|
-
checksum = "
|
|
632
|
+
checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31"
|
|
645
633
|
dependencies = [
|
|
646
|
-
"
|
|
634
|
+
"cfg-if",
|
|
635
|
+
"futures-util",
|
|
647
636
|
"wasm-bindgen",
|
|
648
637
|
]
|
|
649
638
|
|
|
650
639
|
[[package]]
|
|
651
640
|
name = "libc"
|
|
652
|
-
version = "0.2.
|
|
641
|
+
version = "0.2.186"
|
|
653
642
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
654
|
-
checksum = "
|
|
643
|
+
checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
|
|
655
644
|
|
|
656
645
|
[[package]]
|
|
657
646
|
name = "litemap"
|
|
658
|
-
version = "0.8.
|
|
647
|
+
version = "0.8.2"
|
|
659
648
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
660
|
-
checksum = "
|
|
649
|
+
checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
|
|
661
650
|
|
|
662
651
|
[[package]]
|
|
663
652
|
name = "lock_api"
|
|
@@ -670,15 +659,15 @@ dependencies = [
|
|
|
670
659
|
|
|
671
660
|
[[package]]
|
|
672
661
|
name = "log"
|
|
673
|
-
version = "0.4.
|
|
662
|
+
version = "0.4.32"
|
|
674
663
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
675
|
-
checksum = "
|
|
664
|
+
checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a"
|
|
676
665
|
|
|
677
666
|
[[package]]
|
|
678
667
|
name = "lru"
|
|
679
|
-
version = "0.
|
|
668
|
+
version = "0.18.0"
|
|
680
669
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
681
|
-
checksum = "
|
|
670
|
+
checksum = "8a860605968fce16869fd239cf4237a82f3ac470723415db603b0e8b6c8d4fb9"
|
|
682
671
|
dependencies = [
|
|
683
672
|
"hashbrown",
|
|
684
673
|
]
|
|
@@ -702,15 +691,15 @@ dependencies = [
|
|
|
702
691
|
|
|
703
692
|
[[package]]
|
|
704
693
|
name = "memchr"
|
|
705
|
-
version = "2.8.
|
|
694
|
+
version = "2.8.2"
|
|
706
695
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
707
|
-
checksum = "
|
|
696
|
+
checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
|
|
708
697
|
|
|
709
698
|
[[package]]
|
|
710
699
|
name = "mio"
|
|
711
|
-
version = "1.
|
|
700
|
+
version = "1.2.1"
|
|
712
701
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
713
|
-
checksum = "
|
|
702
|
+
checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
|
|
714
703
|
dependencies = [
|
|
715
704
|
"libc",
|
|
716
705
|
"wasi",
|
|
@@ -826,12 +815,6 @@ version = "0.2.17"
|
|
|
826
815
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
827
816
|
checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
|
|
828
817
|
|
|
829
|
-
[[package]]
|
|
830
|
-
name = "pin-utils"
|
|
831
|
-
version = "0.1.0"
|
|
832
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
833
|
-
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
|
834
|
-
|
|
835
818
|
[[package]]
|
|
836
819
|
name = "portable-atomic"
|
|
837
820
|
version = "1.13.1"
|
|
@@ -840,9 +823,9 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
|
|
|
840
823
|
|
|
841
824
|
[[package]]
|
|
842
825
|
name = "potential_utf"
|
|
843
|
-
version = "0.1.
|
|
826
|
+
version = "0.1.5"
|
|
844
827
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
845
|
-
checksum = "
|
|
828
|
+
checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
|
|
846
829
|
dependencies = [
|
|
847
830
|
"zerovec",
|
|
848
831
|
]
|
|
@@ -873,9 +856,9 @@ dependencies = [
|
|
|
873
856
|
|
|
874
857
|
[[package]]
|
|
875
858
|
name = "pyo3"
|
|
876
|
-
version = "0.
|
|
859
|
+
version = "0.29.0"
|
|
877
860
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
878
|
-
checksum = "
|
|
861
|
+
checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
|
|
879
862
|
dependencies = [
|
|
880
863
|
"libc",
|
|
881
864
|
"once_cell",
|
|
@@ -887,9 +870,9 @@ dependencies = [
|
|
|
887
870
|
|
|
888
871
|
[[package]]
|
|
889
872
|
name = "pyo3-build-config"
|
|
890
|
-
version = "0.
|
|
873
|
+
version = "0.29.0"
|
|
891
874
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
892
|
-
checksum = "
|
|
875
|
+
checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
|
|
893
876
|
dependencies = [
|
|
894
877
|
"target-lexicon",
|
|
895
878
|
]
|
|
@@ -902,9 +885,9 @@ checksum = "4bf83fcee540452241ba030140f50418b973e840a64727c967b9266660f0a690"
|
|
|
902
885
|
|
|
903
886
|
[[package]]
|
|
904
887
|
name = "pyo3-ffi"
|
|
905
|
-
version = "0.
|
|
888
|
+
version = "0.29.0"
|
|
906
889
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
907
|
-
checksum = "
|
|
890
|
+
checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
|
|
908
891
|
dependencies = [
|
|
909
892
|
"libc",
|
|
910
893
|
"pyo3-build-config",
|
|
@@ -912,9 +895,9 @@ dependencies = [
|
|
|
912
895
|
|
|
913
896
|
[[package]]
|
|
914
897
|
name = "pyo3-macros"
|
|
915
|
-
version = "0.
|
|
898
|
+
version = "0.29.0"
|
|
916
899
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
917
|
-
checksum = "
|
|
900
|
+
checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
|
|
918
901
|
dependencies = [
|
|
919
902
|
"proc-macro2",
|
|
920
903
|
"pyo3-macros-backend",
|
|
@@ -924,13 +907,12 @@ dependencies = [
|
|
|
924
907
|
|
|
925
908
|
[[package]]
|
|
926
909
|
name = "pyo3-macros-backend"
|
|
927
|
-
version = "0.
|
|
910
|
+
version = "0.29.0"
|
|
928
911
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
929
|
-
checksum = "
|
|
912
|
+
checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
|
|
930
913
|
dependencies = [
|
|
931
914
|
"heck",
|
|
932
915
|
"proc-macro2",
|
|
933
|
-
"pyo3-build-config",
|
|
934
916
|
"quote",
|
|
935
917
|
"syn",
|
|
936
918
|
]
|
|
@@ -1007,9 +989,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
|
|
1007
989
|
|
|
1008
990
|
[[package]]
|
|
1009
991
|
name = "rand"
|
|
1010
|
-
version = "0.9.
|
|
992
|
+
version = "0.9.4"
|
|
1011
993
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1012
|
-
checksum = "
|
|
994
|
+
checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
|
|
1013
995
|
dependencies = [
|
|
1014
996
|
"rand_chacha",
|
|
1015
997
|
"rand_core",
|
|
@@ -1036,9 +1018,9 @@ dependencies = [
|
|
|
1036
1018
|
|
|
1037
1019
|
[[package]]
|
|
1038
1020
|
name = "rayon"
|
|
1039
|
-
version = "1.
|
|
1021
|
+
version = "1.12.0"
|
|
1040
1022
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1041
|
-
checksum = "
|
|
1023
|
+
checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
|
|
1042
1024
|
dependencies = [
|
|
1043
1025
|
"either",
|
|
1044
1026
|
"rayon-core",
|
|
@@ -1119,9 +1101,9 @@ dependencies = [
|
|
|
1119
1101
|
|
|
1120
1102
|
[[package]]
|
|
1121
1103
|
name = "rustc-hash"
|
|
1122
|
-
version = "2.1.
|
|
1104
|
+
version = "2.1.2"
|
|
1123
1105
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1124
|
-
checksum = "
|
|
1106
|
+
checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
|
|
1125
1107
|
|
|
1126
1108
|
[[package]]
|
|
1127
1109
|
name = "rustc_version"
|
|
@@ -1134,9 +1116,9 @@ dependencies = [
|
|
|
1134
1116
|
|
|
1135
1117
|
[[package]]
|
|
1136
1118
|
name = "rustls"
|
|
1137
|
-
version = "0.23.
|
|
1119
|
+
version = "0.23.40"
|
|
1138
1120
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1139
|
-
checksum = "
|
|
1121
|
+
checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b"
|
|
1140
1122
|
dependencies = [
|
|
1141
1123
|
"once_cell",
|
|
1142
1124
|
"ring",
|
|
@@ -1148,9 +1130,9 @@ dependencies = [
|
|
|
1148
1130
|
|
|
1149
1131
|
[[package]]
|
|
1150
1132
|
name = "rustls-pki-types"
|
|
1151
|
-
version = "1.14.
|
|
1133
|
+
version = "1.14.1"
|
|
1152
1134
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1153
|
-
checksum = "
|
|
1135
|
+
checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9"
|
|
1154
1136
|
dependencies = [
|
|
1155
1137
|
"web-time",
|
|
1156
1138
|
"zeroize",
|
|
@@ -1158,9 +1140,9 @@ dependencies = [
|
|
|
1158
1140
|
|
|
1159
1141
|
[[package]]
|
|
1160
1142
|
name = "rustls-webpki"
|
|
1161
|
-
version = "0.103.
|
|
1143
|
+
version = "0.103.13"
|
|
1162
1144
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1163
|
-
checksum = "
|
|
1145
|
+
checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
|
|
1164
1146
|
dependencies = [
|
|
1165
1147
|
"ring",
|
|
1166
1148
|
"rustls-pki-types",
|
|
@@ -1187,9 +1169,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
|
|
1187
1169
|
|
|
1188
1170
|
[[package]]
|
|
1189
1171
|
name = "selectors"
|
|
1190
|
-
version = "0.
|
|
1172
|
+
version = "0.38.0"
|
|
1191
1173
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1192
|
-
checksum = "
|
|
1174
|
+
checksum = "8adfa1c298912827b8a28b223b3b874357397ae706e6190acd9bf28cee99114d"
|
|
1193
1175
|
dependencies = [
|
|
1194
1176
|
"bitflags",
|
|
1195
1177
|
"cssparser",
|
|
@@ -1206,9 +1188,9 @@ dependencies = [
|
|
|
1206
1188
|
|
|
1207
1189
|
[[package]]
|
|
1208
1190
|
name = "semver"
|
|
1209
|
-
version = "1.0.
|
|
1191
|
+
version = "1.0.28"
|
|
1210
1192
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1211
|
-
checksum = "
|
|
1193
|
+
checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
|
|
1212
1194
|
dependencies = [
|
|
1213
1195
|
"serde",
|
|
1214
1196
|
"serde_core",
|
|
@@ -1246,9 +1228,9 @@ dependencies = [
|
|
|
1246
1228
|
|
|
1247
1229
|
[[package]]
|
|
1248
1230
|
name = "serde_json"
|
|
1249
|
-
version = "1.0.
|
|
1231
|
+
version = "1.0.150"
|
|
1250
1232
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1251
|
-
checksum = "
|
|
1233
|
+
checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
|
|
1252
1234
|
dependencies = [
|
|
1253
1235
|
"itoa",
|
|
1254
1236
|
"memchr",
|
|
@@ -1289,15 +1271,15 @@ dependencies = [
|
|
|
1289
1271
|
|
|
1290
1272
|
[[package]]
|
|
1291
1273
|
name = "shlex"
|
|
1292
|
-
version = "
|
|
1274
|
+
version = "2.0.1"
|
|
1293
1275
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1294
|
-
checksum = "
|
|
1276
|
+
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
|
1295
1277
|
|
|
1296
1278
|
[[package]]
|
|
1297
1279
|
name = "siphasher"
|
|
1298
|
-
version = "1.0.
|
|
1280
|
+
version = "1.0.3"
|
|
1299
1281
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1300
|
-
checksum = "
|
|
1282
|
+
checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
|
|
1301
1283
|
|
|
1302
1284
|
[[package]]
|
|
1303
1285
|
name = "slab"
|
|
@@ -1307,15 +1289,15 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
|
|
|
1307
1289
|
|
|
1308
1290
|
[[package]]
|
|
1309
1291
|
name = "smallvec"
|
|
1310
|
-
version = "1.15.
|
|
1292
|
+
version = "1.15.2"
|
|
1311
1293
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1312
|
-
checksum = "
|
|
1294
|
+
checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
|
|
1313
1295
|
|
|
1314
1296
|
[[package]]
|
|
1315
1297
|
name = "socket2"
|
|
1316
|
-
version = "0.6.
|
|
1298
|
+
version = "0.6.4"
|
|
1317
1299
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1318
|
-
checksum = "
|
|
1300
|
+
checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
|
|
1319
1301
|
dependencies = [
|
|
1320
1302
|
"libc",
|
|
1321
1303
|
"windows-sys 0.61.2",
|
|
@@ -1426,9 +1408,9 @@ dependencies = [
|
|
|
1426
1408
|
|
|
1427
1409
|
[[package]]
|
|
1428
1410
|
name = "tinystr"
|
|
1429
|
-
version = "0.8.
|
|
1411
|
+
version = "0.8.3"
|
|
1430
1412
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1431
|
-
checksum = "
|
|
1413
|
+
checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
|
|
1432
1414
|
dependencies = [
|
|
1433
1415
|
"displaydoc",
|
|
1434
1416
|
"zerovec",
|
|
@@ -1451,9 +1433,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|
|
1451
1433
|
|
|
1452
1434
|
[[package]]
|
|
1453
1435
|
name = "tokio"
|
|
1454
|
-
version = "1.
|
|
1436
|
+
version = "1.52.3"
|
|
1455
1437
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1456
|
-
checksum = "
|
|
1438
|
+
checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
|
|
1457
1439
|
dependencies = [
|
|
1458
1440
|
"bytes",
|
|
1459
1441
|
"libc",
|
|
@@ -1531,20 +1513,20 @@ dependencies = [
|
|
|
1531
1513
|
|
|
1532
1514
|
[[package]]
|
|
1533
1515
|
name = "tower-http"
|
|
1534
|
-
version = "0.6.
|
|
1516
|
+
version = "0.6.11"
|
|
1535
1517
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1536
|
-
checksum = "
|
|
1518
|
+
checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
|
|
1537
1519
|
dependencies = [
|
|
1538
1520
|
"bitflags",
|
|
1539
1521
|
"bytes",
|
|
1540
1522
|
"futures-util",
|
|
1541
1523
|
"http",
|
|
1542
1524
|
"http-body",
|
|
1543
|
-
"iri-string",
|
|
1544
1525
|
"pin-project-lite",
|
|
1545
1526
|
"tower",
|
|
1546
1527
|
"tower-layer",
|
|
1547
1528
|
"tower-service",
|
|
1529
|
+
"url",
|
|
1548
1530
|
]
|
|
1549
1531
|
|
|
1550
1532
|
[[package]]
|
|
@@ -1646,9 +1628,9 @@ dependencies = [
|
|
|
1646
1628
|
|
|
1647
1629
|
[[package]]
|
|
1648
1630
|
name = "wasm-bindgen"
|
|
1649
|
-
version = "0.2.
|
|
1631
|
+
version = "0.2.125"
|
|
1650
1632
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1651
|
-
checksum = "
|
|
1633
|
+
checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a"
|
|
1652
1634
|
dependencies = [
|
|
1653
1635
|
"cfg-if",
|
|
1654
1636
|
"once_cell",
|
|
@@ -1659,23 +1641,19 @@ dependencies = [
|
|
|
1659
1641
|
|
|
1660
1642
|
[[package]]
|
|
1661
1643
|
name = "wasm-bindgen-futures"
|
|
1662
|
-
version = "0.4.
|
|
1644
|
+
version = "0.4.75"
|
|
1663
1645
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1664
|
-
checksum = "
|
|
1646
|
+
checksum = "503b14d284f2c8dac03b819967e155ea753f573586193b2b2c95990cb5d69280"
|
|
1665
1647
|
dependencies = [
|
|
1666
|
-
"cfg-if",
|
|
1667
|
-
"futures-util",
|
|
1668
1648
|
"js-sys",
|
|
1669
|
-
"once_cell",
|
|
1670
1649
|
"wasm-bindgen",
|
|
1671
|
-
"web-sys",
|
|
1672
1650
|
]
|
|
1673
1651
|
|
|
1674
1652
|
[[package]]
|
|
1675
1653
|
name = "wasm-bindgen-macro"
|
|
1676
|
-
version = "0.2.
|
|
1654
|
+
version = "0.2.125"
|
|
1677
1655
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1678
|
-
checksum = "
|
|
1656
|
+
checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d"
|
|
1679
1657
|
dependencies = [
|
|
1680
1658
|
"quote",
|
|
1681
1659
|
"wasm-bindgen-macro-support",
|
|
@@ -1683,9 +1661,9 @@ dependencies = [
|
|
|
1683
1661
|
|
|
1684
1662
|
[[package]]
|
|
1685
1663
|
name = "wasm-bindgen-macro-support"
|
|
1686
|
-
version = "0.2.
|
|
1664
|
+
version = "0.2.125"
|
|
1687
1665
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1688
|
-
checksum = "
|
|
1666
|
+
checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd"
|
|
1689
1667
|
dependencies = [
|
|
1690
1668
|
"bumpalo",
|
|
1691
1669
|
"proc-macro2",
|
|
@@ -1696,18 +1674,18 @@ dependencies = [
|
|
|
1696
1674
|
|
|
1697
1675
|
[[package]]
|
|
1698
1676
|
name = "wasm-bindgen-shared"
|
|
1699
|
-
version = "0.2.
|
|
1677
|
+
version = "0.2.125"
|
|
1700
1678
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1701
|
-
checksum = "
|
|
1679
|
+
checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f"
|
|
1702
1680
|
dependencies = [
|
|
1703
1681
|
"unicode-ident",
|
|
1704
1682
|
]
|
|
1705
1683
|
|
|
1706
1684
|
[[package]]
|
|
1707
1685
|
name = "web-sys"
|
|
1708
|
-
version = "0.3.
|
|
1686
|
+
version = "0.3.102"
|
|
1709
1687
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1710
|
-
checksum = "
|
|
1688
|
+
checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d"
|
|
1711
1689
|
dependencies = [
|
|
1712
1690
|
"js-sys",
|
|
1713
1691
|
"wasm-bindgen",
|
|
@@ -1725,9 +1703,9 @@ dependencies = [
|
|
|
1725
1703
|
|
|
1726
1704
|
[[package]]
|
|
1727
1705
|
name = "web_atoms"
|
|
1728
|
-
version = "0.2.
|
|
1706
|
+
version = "0.2.4"
|
|
1729
1707
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1730
|
-
checksum = "
|
|
1708
|
+
checksum = "d7cff6eef815df1834fd250e3a2ff436044d82a9f1bc1980ca1dbdf07effc538"
|
|
1731
1709
|
dependencies = [
|
|
1732
1710
|
"phf",
|
|
1733
1711
|
"phf_codegen",
|
|
@@ -1737,9 +1715,9 @@ dependencies = [
|
|
|
1737
1715
|
|
|
1738
1716
|
[[package]]
|
|
1739
1717
|
name = "webpki-roots"
|
|
1740
|
-
version = "1.0.
|
|
1718
|
+
version = "1.0.7"
|
|
1741
1719
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1742
|
-
checksum = "
|
|
1720
|
+
checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d"
|
|
1743
1721
|
dependencies = [
|
|
1744
1722
|
"rustls-pki-types",
|
|
1745
1723
|
]
|
|
@@ -1976,15 +1954,15 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
|
|
|
1976
1954
|
|
|
1977
1955
|
[[package]]
|
|
1978
1956
|
name = "writeable"
|
|
1979
|
-
version = "0.6.
|
|
1957
|
+
version = "0.6.3"
|
|
1980
1958
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1981
|
-
checksum = "
|
|
1959
|
+
checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
|
|
1982
1960
|
|
|
1983
1961
|
[[package]]
|
|
1984
1962
|
name = "yoke"
|
|
1985
|
-
version = "0.8.
|
|
1963
|
+
version = "0.8.3"
|
|
1986
1964
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1987
|
-
checksum = "
|
|
1965
|
+
checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
|
|
1988
1966
|
dependencies = [
|
|
1989
1967
|
"stable_deref_trait",
|
|
1990
1968
|
"yoke-derive",
|
|
@@ -1993,9 +1971,9 @@ dependencies = [
|
|
|
1993
1971
|
|
|
1994
1972
|
[[package]]
|
|
1995
1973
|
name = "yoke-derive"
|
|
1996
|
-
version = "0.8.
|
|
1974
|
+
version = "0.8.2"
|
|
1997
1975
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1998
|
-
checksum = "
|
|
1976
|
+
checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
|
|
1999
1977
|
dependencies = [
|
|
2000
1978
|
"proc-macro2",
|
|
2001
1979
|
"quote",
|
|
@@ -2005,18 +1983,18 @@ dependencies = [
|
|
|
2005
1983
|
|
|
2006
1984
|
[[package]]
|
|
2007
1985
|
name = "zerocopy"
|
|
2008
|
-
version = "0.8.
|
|
1986
|
+
version = "0.8.52"
|
|
2009
1987
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2010
|
-
checksum = "
|
|
1988
|
+
checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f"
|
|
2011
1989
|
dependencies = [
|
|
2012
1990
|
"zerocopy-derive",
|
|
2013
1991
|
]
|
|
2014
1992
|
|
|
2015
1993
|
[[package]]
|
|
2016
1994
|
name = "zerocopy-derive"
|
|
2017
|
-
version = "0.8.
|
|
1995
|
+
version = "0.8.52"
|
|
2018
1996
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2019
|
-
checksum = "
|
|
1997
|
+
checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930"
|
|
2020
1998
|
dependencies = [
|
|
2021
1999
|
"proc-macro2",
|
|
2022
2000
|
"quote",
|
|
@@ -2025,18 +2003,18 @@ dependencies = [
|
|
|
2025
2003
|
|
|
2026
2004
|
[[package]]
|
|
2027
2005
|
name = "zerofrom"
|
|
2028
|
-
version = "0.1.
|
|
2006
|
+
version = "0.1.8"
|
|
2029
2007
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2030
|
-
checksum = "
|
|
2008
|
+
checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
|
|
2031
2009
|
dependencies = [
|
|
2032
2010
|
"zerofrom-derive",
|
|
2033
2011
|
]
|
|
2034
2012
|
|
|
2035
2013
|
[[package]]
|
|
2036
2014
|
name = "zerofrom-derive"
|
|
2037
|
-
version = "0.1.
|
|
2015
|
+
version = "0.1.7"
|
|
2038
2016
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2039
|
-
checksum = "
|
|
2017
|
+
checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
|
|
2040
2018
|
dependencies = [
|
|
2041
2019
|
"proc-macro2",
|
|
2042
2020
|
"quote",
|
|
@@ -2046,15 +2024,15 @@ dependencies = [
|
|
|
2046
2024
|
|
|
2047
2025
|
[[package]]
|
|
2048
2026
|
name = "zeroize"
|
|
2049
|
-
version = "1.
|
|
2027
|
+
version = "1.9.0"
|
|
2050
2028
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2051
|
-
checksum = "
|
|
2029
|
+
checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
|
|
2052
2030
|
|
|
2053
2031
|
[[package]]
|
|
2054
2032
|
name = "zerotrie"
|
|
2055
|
-
version = "0.2.
|
|
2033
|
+
version = "0.2.4"
|
|
2056
2034
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2057
|
-
checksum = "
|
|
2035
|
+
checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
|
|
2058
2036
|
dependencies = [
|
|
2059
2037
|
"displaydoc",
|
|
2060
2038
|
"yoke",
|
|
@@ -2063,9 +2041,9 @@ dependencies = [
|
|
|
2063
2041
|
|
|
2064
2042
|
[[package]]
|
|
2065
2043
|
name = "zerovec"
|
|
2066
|
-
version = "0.11.
|
|
2044
|
+
version = "0.11.6"
|
|
2067
2045
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2068
|
-
checksum = "
|
|
2046
|
+
checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
|
|
2069
2047
|
dependencies = [
|
|
2070
2048
|
"yoke",
|
|
2071
2049
|
"zerofrom",
|
|
@@ -2074,9 +2052,9 @@ dependencies = [
|
|
|
2074
2052
|
|
|
2075
2053
|
[[package]]
|
|
2076
2054
|
name = "zerovec-derive"
|
|
2077
|
-
version = "0.11.
|
|
2055
|
+
version = "0.11.3"
|
|
2078
2056
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2079
|
-
checksum = "
|
|
2057
|
+
checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
|
|
2080
2058
|
dependencies = [
|
|
2081
2059
|
"proc-macro2",
|
|
2082
2060
|
"quote",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "css-inline-python"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.21.0"
|
|
4
4
|
authors = ["Dmitry Dygalo <dmitry@dygalo.dev>"]
|
|
5
5
|
edition = "2024"
|
|
6
6
|
rust-version = "1.85"
|
|
@@ -15,7 +15,7 @@ crate-type = ["cdylib"]
|
|
|
15
15
|
built = { version = "0.8.0", features = ["cargo-lock", "chrono"] }
|
|
16
16
|
|
|
17
17
|
[dependencies]
|
|
18
|
-
pyo3 = { version = "0.
|
|
18
|
+
pyo3 = { version = "0.29.0", features = ["extension-module", "abi3-py310"] }
|
|
19
19
|
pyo3-built = "0.6"
|
|
20
20
|
rayon = "1"
|
|
21
21
|
url = "2"
|
|
@@ -44,7 +44,7 @@ into:
|
|
|
44
44
|
- Can process multiple documents in parallel
|
|
45
45
|
- Works on Linux, Windows, macOS and in the browser via PyOdide
|
|
46
46
|
- Supports HTML5 & CSS3
|
|
47
|
-
- Tested on CPython 3.
|
|
47
|
+
- Tested on CPython 3.10, 3.11, 3.12, 3.13, 3.14 and PyPy 3.11.
|
|
48
48
|
|
|
49
49
|
## Playground
|
|
50
50
|
|
|
@@ -90,7 +90,7 @@ inlined = css_inline.inline(HTML)
|
|
|
90
90
|
|
|
91
91
|
Note that `css-inline` automatically adds missing `html` and `body` tags, so the output is a valid HTML document.
|
|
92
92
|
|
|
93
|
-
Alternatively, you can inline CSS into an HTML fragment
|
|
93
|
+
Alternatively, you can inline CSS into an HTML fragment. Structural tags (`<html>`, `<head>`, `<body>`) are stripped from the output; only their contents are preserved. Use `inline` if you need to keep the full document structure:
|
|
94
94
|
|
|
95
95
|
```python
|
|
96
96
|
FRAGMENT = """<main>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "css-inline"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.21.0"
|
|
4
4
|
authors = ["Dmitry Dygalo <dmitry@dygalo.dev>"]
|
|
5
5
|
edition = "2021"
|
|
6
6
|
license = "MIT"
|
|
@@ -16,7 +16,11 @@ exclude = [
|
|
|
16
16
|
"tests",
|
|
17
17
|
]
|
|
18
18
|
categories = ["web-programming"]
|
|
19
|
-
rust-version = "1.
|
|
19
|
+
rust-version = "1.85"
|
|
20
|
+
resolver = "3"
|
|
21
|
+
|
|
22
|
+
[[bin]]
|
|
23
|
+
name = "css-inline"
|
|
20
24
|
|
|
21
25
|
[features]
|
|
22
26
|
default = ["cli", "http", "file", "stylesheet-cache"]
|
|
@@ -26,15 +30,15 @@ file = []
|
|
|
26
30
|
stylesheet-cache = ["lru"]
|
|
27
31
|
|
|
28
32
|
[dependencies]
|
|
29
|
-
cssparser = "0.
|
|
33
|
+
cssparser = "0.37.0"
|
|
30
34
|
html5ever = "0.39.0"
|
|
31
|
-
lru = { version = "0.
|
|
35
|
+
lru = { version = "0.18.0", optional = true }
|
|
32
36
|
memchr = "2.7"
|
|
33
37
|
precomputed-hash = "0.1.1"
|
|
34
38
|
rayon = { version = "1.10", optional = true }
|
|
35
39
|
reqwest = { version = "0.12.0", optional = true, default-features = false, features = ["rustls-tls", "blocking"] }
|
|
36
40
|
rustc-hash = "2.0.0"
|
|
37
|
-
selectors = "0.
|
|
41
|
+
selectors = "0.38.0"
|
|
38
42
|
smallvec = "1"
|
|
39
43
|
url = "2"
|
|
40
44
|
|
|
@@ -59,7 +59,7 @@ To include it in your project, add the following line to the dependencies sectio
|
|
|
59
59
|
css-inline = "0.20"
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
The Minimum Supported Rust Version is 1.
|
|
62
|
+
The Minimum Supported Rust Version is 1.85.
|
|
63
63
|
|
|
64
64
|
## Usage
|
|
65
65
|
|
|
@@ -82,7 +82,7 @@ fn main() -> css_inline::Result<()> {
|
|
|
82
82
|
|
|
83
83
|
Note that `css-inline` automatically adds missing `html` and `body` tags, so the output is a valid HTML document.
|
|
84
84
|
|
|
85
|
-
Alternatively, you can inline CSS into an HTML fragment
|
|
85
|
+
Alternatively, you can inline CSS into an HTML fragment. Structural tags (`<html>`, `<head>`, `<body>`) are stripped from the output; only their contents are preserved. Use `inline` if you need to keep the full document structure:
|
|
86
86
|
|
|
87
87
|
```rust
|
|
88
88
|
const FRAGMENT: &str = r#"<main>
|
|
@@ -220,16 +220,14 @@ impl Document {
|
|
|
220
220
|
|
|
221
221
|
match bytes.first() {
|
|
222
222
|
// Class selector: .classname
|
|
223
|
-
Some(b'.') => extract_identifier(&bytes[1..])
|
|
224
|
-
self.by_class.contains_key(&LocalName::from(name))
|
|
225
|
-
}),
|
|
223
|
+
Some(b'.') => extract_identifier(&bytes[1..])
|
|
224
|
+
.is_none_or(|name| self.by_class.contains_key(&LocalName::from(name))),
|
|
226
225
|
// ID selector: #id
|
|
227
226
|
Some(b'#') => extract_identifier(&bytes[1..])
|
|
228
|
-
.
|
|
227
|
+
.is_none_or(|name| self.by_id.contains_key(&LocalName::from(name))),
|
|
229
228
|
// Tag selector: starts with ASCII letter
|
|
230
|
-
Some(b'a'..=b'z' | b'A'..=b'Z') => extract_identifier(bytes)
|
|
231
|
-
self.by_tag.contains_key(&LocalName::from(name))
|
|
232
|
-
}),
|
|
229
|
+
Some(b'a'..=b'z' | b'A'..=b'Z') => extract_identifier(bytes)
|
|
230
|
+
.is_none_or(|name| self.by_tag.contains_key(&LocalName::from(name))),
|
|
233
231
|
// Universal (*), attribute ([), pseudo-class (:), empty, or unknown
|
|
234
232
|
_ => true,
|
|
235
233
|
}
|
|
@@ -284,10 +282,10 @@ impl Document {
|
|
|
284
282
|
|
|
285
283
|
/// Remove all the children from node and append them to `new_parent`.
|
|
286
284
|
pub(super) fn reparent_children(&mut self, node: NodeId, new_parent: NodeId) {
|
|
287
|
-
|
|
288
|
-
|
|
285
|
+
// Re-read `first_child` each iteration: `append` calls `detach` internally, which clears
|
|
286
|
+
// `child.next_sibling` and updates `node.first_child` to the former second child.
|
|
287
|
+
while let Some(child) = self[node].first_child {
|
|
289
288
|
self.append(new_parent, child);
|
|
290
|
-
next_child = self[child].next_sibling;
|
|
291
289
|
}
|
|
292
290
|
}
|
|
293
291
|
|
|
@@ -119,6 +119,37 @@ fn find_style_value<'a>(styles: &'a ElementStyleMap<'_>, property: &str) -> Opti
|
|
|
119
119
|
.map(|(_, _, value)| *value)
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
/// Find a property value in an element's inline `style` attribute (last declaration wins).
|
|
123
|
+
fn find_inline_style_value<'a>(style: &'a str, property: &str) -> Option<&'a str> {
|
|
124
|
+
let mut input = cssparser::ParserInput::new(style);
|
|
125
|
+
let mut css_parser = cssparser::Parser::new(&mut input);
|
|
126
|
+
let mut declaration_parser = parser::CSSDeclarationListParser;
|
|
127
|
+
let declarations = cssparser::RuleBodyParser::new(&mut css_parser, &mut declaration_parser);
|
|
128
|
+
let mut found = None;
|
|
129
|
+
for (name, value) in declarations.flatten() {
|
|
130
|
+
if name.eq_ignore_ascii_case(property) {
|
|
131
|
+
found = Some(value);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
found
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/// Pick the cascade-effective value between an inline `style` declaration and a stylesheet rule.
|
|
138
|
+
/// Precedence (high to low): inline `!important`, stylesheet `!important`, inline, stylesheet.
|
|
139
|
+
fn effective_dimension<'a>(
|
|
140
|
+
inline: Option<&'a str>,
|
|
141
|
+
stylesheet: Option<&'a str>,
|
|
142
|
+
) -> Option<&'a str> {
|
|
143
|
+
let important = |v: &str| v.trim_end().ends_with("!important");
|
|
144
|
+
if inline.is_some_and(important) {
|
|
145
|
+
inline
|
|
146
|
+
} else if stylesheet.is_some_and(important) {
|
|
147
|
+
stylesheet
|
|
148
|
+
} else {
|
|
149
|
+
inline.or(stylesheet)
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
122
153
|
#[allow(clippy::too_many_arguments, clippy::fn_params_excessive_bools)]
|
|
123
154
|
pub(crate) fn serialize_to<W: Write>(
|
|
124
155
|
document: &Document,
|
|
@@ -398,7 +429,7 @@ impl<'a, W: Write> HtmlSerializer<'a, W> {
|
|
|
398
429
|
self.styles.get_mut(node_id.get()).and_then(|slot| {
|
|
399
430
|
slot.take().map(|mut styles| {
|
|
400
431
|
// Sort by specificity for consistent output order
|
|
401
|
-
styles.
|
|
432
|
+
styles.sort_unstable_by_key(|a| a.1);
|
|
402
433
|
styles
|
|
403
434
|
})
|
|
404
435
|
})
|
|
@@ -418,11 +449,14 @@ impl<'a, W: Write> HtmlSerializer<'a, W> {
|
|
|
418
449
|
if let Some(ref html_name) = html_name {
|
|
419
450
|
if supports_dimension_attrs(html_name) {
|
|
420
451
|
let allow_percent = is_table_element(html_name);
|
|
452
|
+
// Resolve the cascade-effective value across the inline `style` and stylesheet.
|
|
453
|
+
let style_attr = attrs.get(local_name!("style"));
|
|
421
454
|
if apply_width_attributes && !attrs.contains(local_name!("width")) {
|
|
422
|
-
if let Some(dim) =
|
|
423
|
-
.
|
|
424
|
-
.and_then(|s| find_style_value(s, "width"))
|
|
425
|
-
|
|
455
|
+
if let Some(dim) = effective_dimension(
|
|
456
|
+
style_attr.and_then(|s| find_inline_style_value(s, "width")),
|
|
457
|
+
styles.as_ref().and_then(|s| find_style_value(s, "width")),
|
|
458
|
+
)
|
|
459
|
+
.and_then(|v| extract_dimension_value(v, allow_percent))
|
|
426
460
|
{
|
|
427
461
|
self.writer.write_all(b" width=\"")?;
|
|
428
462
|
dim.write_to(&mut self.writer)?;
|
|
@@ -430,10 +464,11 @@ impl<'a, W: Write> HtmlSerializer<'a, W> {
|
|
|
430
464
|
}
|
|
431
465
|
}
|
|
432
466
|
if apply_height_attributes && !attrs.contains(local_name!("height")) {
|
|
433
|
-
if let Some(dim) =
|
|
434
|
-
.
|
|
435
|
-
.and_then(|s| find_style_value(s, "height"))
|
|
436
|
-
|
|
467
|
+
if let Some(dim) = effective_dimension(
|
|
468
|
+
style_attr.and_then(|s| find_inline_style_value(s, "height")),
|
|
469
|
+
styles.as_ref().and_then(|s| find_style_value(s, "height")),
|
|
470
|
+
)
|
|
471
|
+
.and_then(|v| extract_dimension_value(v, allow_percent))
|
|
437
472
|
{
|
|
438
473
|
self.writer.write_all(b" height=\"")?;
|
|
439
474
|
dim.write_to(&mut self.writer)?;
|
|
@@ -589,6 +589,14 @@ impl<'a> CSSInliner<'a> {
|
|
|
589
589
|
|
|
590
590
|
/// Inline CSS into an HTML fragment.
|
|
591
591
|
///
|
|
592
|
+
/// Unlike [`inline`](CSSInliner::inline), this method does not wrap the output in `<html>` and
|
|
593
|
+
/// `<body>` tags. Structural tags (`<html>`, `<head>`, `<body>`) are stripped from the output;
|
|
594
|
+
/// only their contents are preserved. CSS from `<style>` tags within the input is also
|
|
595
|
+
/// processed and inlined.
|
|
596
|
+
///
|
|
597
|
+
/// If you need to preserve the full HTML document structure, use [`inline`](CSSInliner::inline)
|
|
598
|
+
/// instead.
|
|
599
|
+
///
|
|
592
600
|
/// # Errors
|
|
593
601
|
///
|
|
594
602
|
/// Inlining might fail for the following reasons:
|
|
@@ -609,6 +617,8 @@ impl<'a> CSSInliner<'a> {
|
|
|
609
617
|
|
|
610
618
|
/// Inline CSS into an HTML fragment and write the result to a generic writer.
|
|
611
619
|
///
|
|
620
|
+
/// See [`inline_fragment`](CSSInliner::inline_fragment) for details on fragment handling.
|
|
621
|
+
///
|
|
612
622
|
/// # Errors
|
|
613
623
|
///
|
|
614
624
|
/// Inlining might fail for the following reasons:
|
|
@@ -939,6 +949,8 @@ pub fn inline_to<W: Write>(html: &str, target: &mut W) -> Result<()> {
|
|
|
939
949
|
|
|
940
950
|
/// Shortcut for inlining CSS into an HTML fragment with default parameters.
|
|
941
951
|
///
|
|
952
|
+
/// See [`CSSInliner::inline_fragment`] for details on fragment handling.
|
|
953
|
+
///
|
|
942
954
|
/// # Errors
|
|
943
955
|
///
|
|
944
956
|
/// Inlining might fail for the following reasons:
|
|
@@ -16,7 +16,6 @@ classifiers=[
|
|
|
16
16
|
"Operating System :: Microsoft :: Windows",
|
|
17
17
|
"Operating System :: POSIX",
|
|
18
18
|
"Programming Language :: Python :: 3",
|
|
19
|
-
"Programming Language :: Python :: 3.9",
|
|
20
19
|
"Programming Language :: Python :: 3.10",
|
|
21
20
|
"Programming Language :: Python :: 3.11",
|
|
22
21
|
"Programming Language :: Python :: 3.12",
|
|
@@ -27,7 +26,7 @@ classifiers=[
|
|
|
27
26
|
"Programming Language :: Rust",
|
|
28
27
|
]
|
|
29
28
|
dependencies = []
|
|
30
|
-
requires-python = ">=3.
|
|
29
|
+
requires-python = ">=3.10"
|
|
31
30
|
|
|
32
31
|
[project.urls]
|
|
33
32
|
homepage = "https://github.com/Stranger6667/css-inline/tree/master/bindings/python"
|
|
@@ -35,7 +34,7 @@ repository = "https://github.com/Stranger6667/css-inline"
|
|
|
35
34
|
|
|
36
35
|
[tool.ruff]
|
|
37
36
|
line-length = 120
|
|
38
|
-
target-version = "
|
|
37
|
+
target-version = "py310"
|
|
39
38
|
|
|
40
39
|
[tool.ruff.lint.isort]
|
|
41
40
|
known-first-party = ["css_inline"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|