feedparser-rs 0.5.3__tar.gz → 0.5.4__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.
Files changed (111) hide show
  1. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/Cargo.lock +19 -44
  2. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/Cargo.toml +3 -3
  3. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/PKG-INFO +1 -1
  4. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/threading.rs +1 -1
  5. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/parser/atom.rs +19 -10
  6. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/parser/common.rs +9 -3
  7. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/parser/rss.rs +5 -3
  8. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/parser/rss10.rs +5 -2
  9. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/pyproject.toml +1 -1
  10. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/README.md +0 -0
  11. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/Cargo.toml +0 -0
  12. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/README.md +0 -0
  13. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/benches/parsing.rs +0 -0
  14. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/benches/types.rs +0 -0
  15. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/error_handling.rs +0 -0
  16. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/feeds/malformed_feed.xml +0 -0
  17. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/feeds/sample_atom.xml +0 -0
  18. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/feeds/sample_podcast.xml +0 -0
  19. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/feeds/sample_rss.xml +0 -0
  20. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/parse_file.rs +0 -0
  21. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/parse_url.rs +0 -0
  22. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/podcast_feed.rs +0 -0
  23. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/examples/profile_memory.rs +0 -0
  24. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/compat/mod.rs +0 -0
  25. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/error.rs +0 -0
  26. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/http/client.rs +0 -0
  27. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/http/mod.rs +0 -0
  28. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/http/response.rs +0 -0
  29. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/http/validation.rs +0 -0
  30. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/lib.rs +0 -0
  31. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/limits.rs +0 -0
  32. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/cc.rs +0 -0
  33. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/content.rs +0 -0
  34. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/dublin_core.rs +0 -0
  35. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/georss.rs +0 -0
  36. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/media_rss.rs +0 -0
  37. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/mod.rs +0 -0
  38. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/slash.rs +0 -0
  39. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/namespace/syndication.rs +0 -0
  40. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/options.rs +0 -0
  41. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/parser/detect.rs +0 -0
  42. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/parser/json.rs +0 -0
  43. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/parser/mod.rs +0 -0
  44. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/parser/namespace_detection.rs +0 -0
  45. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/types/common.rs +0 -0
  46. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/types/entry.rs +0 -0
  47. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/types/feed.rs +0 -0
  48. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/types/generics.rs +0 -0
  49. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/types/mod.rs +0 -0
  50. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/types/podcast.rs +0 -0
  51. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/types/thread.rs +0 -0
  52. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/types/version.rs +0 -0
  53. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/util/base_url.rs +0 -0
  54. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/util/date.rs +0 -0
  55. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/util/encoding.rs +0 -0
  56. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/util/mod.rs +0 -0
  57. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/util/sanitize.rs +0 -0
  58. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/src/util/text.rs +0 -0
  59. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/encoding_integration.rs +0 -0
  60. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/fixtures/rss10/rss10_channel_selfclosing_refs.xml +0 -0
  61. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/guid_entity_tests.rs +0 -0
  62. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/http_integration.rs +0 -0
  63. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/integration_tests.rs +0 -0
  64. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/issue45_test.rs +0 -0
  65. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/namespace_edge_cases.rs +0 -0
  66. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/namespace_integration.rs +0 -0
  67. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_adversarial_input.rs +0 -0
  68. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_author_detail.rs +0 -0
  69. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_entry_author_precedence.rs +0 -0
  70. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_georss_cc_namespaces.rs +0 -0
  71. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_media_namespace.rs +0 -0
  72. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_parser_limits.rs +0 -0
  73. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_podcast_namespace.rs +0 -0
  74. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_rss10.rs +0 -0
  75. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_rss_optional_elements.rs +0 -0
  76. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_slash_wfw_namespaces.rs +0 -0
  77. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_thr_namespace.rs +0 -0
  78. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_threading_namespace.rs +0 -0
  79. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_timezone_preservation.rs +0 -0
  80. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_truncated_feeds.rs +0 -0
  81. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_url_resolution.rs +0 -0
  82. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-core/tests/test_url_security.rs +0 -0
  83. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/Cargo.toml +0 -0
  84. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/README.md +0 -0
  85. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/error.rs +0 -0
  86. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/lib.rs +0 -0
  87. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/limits.rs +0 -0
  88. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/common.rs +0 -0
  89. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/compat.rs +0 -0
  90. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/datetime.rs +0 -0
  91. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/entry.rs +0 -0
  92. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/feed_meta.rs +0 -0
  93. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/geo.rs +0 -0
  94. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/media.rs +0 -0
  95. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/mod.rs +0 -0
  96. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/parsed_feed.rs +0 -0
  97. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/podcast.rs +0 -0
  98. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/syndication.rs +0 -0
  99. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/src/types/thread.rs +0 -0
  100. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_basic.py +0 -0
  101. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_bindings.py +0 -0
  102. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_compat.py +0 -0
  103. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_dict_methods.py +0 -0
  104. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_guid_entities.py +0 -0
  105. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_integration.py +0 -0
  106. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_itunes_flat_keys.py +0 -0
  107. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_subscriptable.py +0 -0
  108. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/tests/test_syndication.py +0 -0
  109. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/crates/feedparser-rs-py/uv.lock +0 -0
  110. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/python/feedparser_rs/__init__.py +0 -0
  111. {feedparser_rs-0.5.3 → feedparser_rs-0.5.4}/python/feedparser_rs/py.typed +0 -0
@@ -500,19 +500,9 @@ dependencies = [
500
500
 
501
501
  [[package]]
502
502
  name = "ctor"
503
- version = "0.10.0"
504
- source = "registry+https://github.com/rust-lang/crates.io-index"
505
- checksum = "95d0d11eb38e7642efca359c3cf6eb7b2e528182d09110165de70192b0352775"
506
- dependencies = [
507
- "ctor-proc-macro",
508
- "dtor",
509
- ]
510
-
511
- [[package]]
512
- name = "ctor-proc-macro"
513
- version = "0.0.12"
503
+ version = "1.0.6"
514
504
  source = "registry+https://github.com/rust-lang/crates.io-index"
515
- checksum = "a7ab264ea985f1bd27887d7b21ea2bb046728e05d11909ca138d700c494730db"
505
+ checksum = "6d765eb1c0bda10d31e0ea185f5ee15da532d60b0912d2bd1441783439e749c5"
516
506
 
517
507
  [[package]]
518
508
  name = "dhat"
@@ -556,21 +546,6 @@ dependencies = [
556
546
  "dtoa",
557
547
  ]
558
548
 
559
- [[package]]
560
- name = "dtor"
561
- version = "0.7.0"
562
- source = "registry+https://github.com/rust-lang/crates.io-index"
563
- checksum = "17f72721db8027a4e96dd6fb50d2a1d32259c9d3da1b63dee612ccd981e14293"
564
- dependencies = [
565
- "dtor-proc-macro",
566
- ]
567
-
568
- [[package]]
569
- name = "dtor-proc-macro"
570
- version = "0.0.12"
571
- source = "registry+https://github.com/rust-lang/crates.io-index"
572
- checksum = "8c98b077c7463d01d22dde8a24378ddf1ca7263dc687cffbed38819ea6c21131"
573
-
574
549
  [[package]]
575
550
  name = "dunce"
576
551
  version = "1.0.5"
@@ -600,7 +575,7 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
600
575
 
601
576
  [[package]]
602
577
  name = "feedparser-rs"
603
- version = "0.5.3"
578
+ version = "0.5.4"
604
579
  dependencies = [
605
580
  "ammonia",
606
581
  "chrono",
@@ -623,7 +598,7 @@ dependencies = [
623
598
 
624
599
  [[package]]
625
600
  name = "feedparser-rs-node"
626
- version = "0.5.3"
601
+ version = "0.5.4"
627
602
  dependencies = [
628
603
  "feedparser-rs",
629
604
  "napi",
@@ -633,7 +608,7 @@ dependencies = [
633
608
 
634
609
  [[package]]
635
610
  name = "feedparser-rs-py"
636
- version = "0.5.3"
611
+ version = "0.5.4"
637
612
  dependencies = [
638
613
  "chrono",
639
614
  "feedparser-rs",
@@ -1353,9 +1328,9 @@ dependencies = [
1353
1328
 
1354
1329
  [[package]]
1355
1330
  name = "napi"
1356
- version = "3.8.5"
1331
+ version = "3.9.0"
1357
1332
  source = "registry+https://github.com/rust-lang/crates.io-index"
1358
- checksum = "fa73b028610e2b26e9e40bd2c8ff8a98e6d7ed5d67d89ebf4bfd2f992616b024"
1333
+ checksum = "f1d395473824516f38dd1071a1a37bc57daa7be65b293ebba4ead5f7abb017a2"
1359
1334
  dependencies = [
1360
1335
  "anyhow",
1361
1336
  "bitflags",
@@ -1369,15 +1344,15 @@ dependencies = [
1369
1344
 
1370
1345
  [[package]]
1371
1346
  name = "napi-build"
1372
- version = "2.3.1"
1347
+ version = "2.3.2"
1373
1348
  source = "registry+https://github.com/rust-lang/crates.io-index"
1374
- checksum = "d376940fd5b723c6893cd1ee3f33abbfd86acb1cd1ec079f3ab04a2a3bc4d3b1"
1349
+ checksum = "c9c366d2c8c60b86fa632df75f745509b52f9128f91a6bad4c796e44abb505e1"
1375
1350
 
1376
1351
  [[package]]
1377
1352
  name = "napi-derive"
1378
- version = "3.5.4"
1353
+ version = "3.5.6"
1379
1354
  source = "registry+https://github.com/rust-lang/crates.io-index"
1380
- checksum = "7430702d3cc05cf55f0a2c9e41d991c3b7a53f91e6146a8f282b1bfc7f3fd133"
1355
+ checksum = "89b3f766e04667e6da0e181e2da4f85475d5a6513b7cf6a80bea184e224a5b42"
1381
1356
  dependencies = [
1382
1357
  "convert_case",
1383
1358
  "ctor",
@@ -1389,9 +1364,9 @@ dependencies = [
1389
1364
 
1390
1365
  [[package]]
1391
1366
  name = "napi-derive-backend"
1392
- version = "5.0.3"
1367
+ version = "5.0.4"
1393
1368
  source = "registry+https://github.com/rust-lang/crates.io-index"
1394
- checksum = "1ca5a083f2c9b49a0c7d33ec75c083498849c6fcc46f5497317faa39ea77f5d5"
1369
+ checksum = "0d5af30503edf933ce7377cf6d4c877a62b0f1107ea05585f1b5e430e88d5baf"
1395
1370
  dependencies = [
1396
1371
  "convert_case",
1397
1372
  "proc-macro2",
@@ -1682,9 +1657,9 @@ dependencies = [
1682
1657
 
1683
1658
  [[package]]
1684
1659
  name = "quick-xml"
1685
- version = "0.39.2"
1660
+ version = "0.40.1"
1686
1661
  source = "registry+https://github.com/rust-lang/crates.io-index"
1687
- checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d"
1662
+ checksum = "2474bd2e5029e7ccb6abb2ba48cf2383a333851dedf495901544281590c7da7f"
1688
1663
  dependencies = [
1689
1664
  "memchr",
1690
1665
  ]
@@ -1864,9 +1839,9 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
1864
1839
 
1865
1840
  [[package]]
1866
1841
  name = "reqwest"
1867
- version = "0.13.2"
1842
+ version = "0.13.3"
1868
1843
  source = "registry+https://github.com/rust-lang/crates.io-index"
1869
- checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"
1844
+ checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0"
1870
1845
  dependencies = [
1871
1846
  "base64",
1872
1847
  "bytes",
@@ -2103,9 +2078,9 @@ dependencies = [
2103
2078
 
2104
2079
  [[package]]
2105
2080
  name = "serde_json"
2106
- version = "1.0.149"
2081
+ version = "1.0.150"
2107
2082
  source = "registry+https://github.com/rust-lang/crates.io-index"
2108
- checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
2083
+ checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
2109
2084
  dependencies = [
2110
2085
  "itoa",
2111
2086
  "memchr",
@@ -3,7 +3,7 @@ members = ["crates/feedparser-rs-core", "crates/feedparser-rs-py"]
3
3
  resolver = "2"
4
4
 
5
5
  [workspace.package]
6
- version = "0.5.3"
6
+ version = "0.5.4"
7
7
  edition = "2024"
8
8
  rust-version = "1.88.0"
9
9
  authors = ["bug-ops"]
@@ -23,11 +23,11 @@ flate2 = "1.1"
23
23
  html-escape = "0.2"
24
24
  memchr = "2.8"
25
25
  mockito = "1.7"
26
- napi = "3.8"
26
+ napi = "3.9"
27
27
  napi-derive = "3.5"
28
28
  once_cell = "1.21"
29
29
  pyo3 = "0.28"
30
- quick-xml = "0.39"
30
+ quick-xml = "0.40"
31
31
  regex = "1.12"
32
32
  reqwest = { version = "0.13", default-features = false }
33
33
  serde = "1.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: feedparser-rs
3
- Version: 0.5.3
3
+ Version: 0.5.4
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -65,7 +65,7 @@ pub fn parse_in_reply_to_from_attrs<'a>(
65
65
  if attr.value.len() > max_attr_len {
66
66
  continue;
67
67
  }
68
- let Ok(value) = attr.unescape_value() else {
68
+ let Ok(value) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0) else {
69
69
  continue;
70
70
  };
71
71
  match attr.key.as_ref() {
@@ -433,7 +433,11 @@ fn parse_feed_element(
433
433
  .flatten()
434
434
  .find(|a| a.key.as_ref() == b"scheme")
435
435
  .and_then(|a| {
436
- a.unescape_value().ok().map(|v| {
436
+ a.normalized_value(
437
+ quick_xml::XmlVersion::Implicit1_0,
438
+ )
439
+ .ok()
440
+ .map(|v| {
437
441
  truncate_to_length(
438
442
  &v,
439
443
  limits.max_attribute_length,
@@ -891,9 +895,14 @@ fn parse_entry(
891
895
  .flatten()
892
896
  .find(|a| a.key.as_ref() == b"scheme")
893
897
  .and_then(|a| {
894
- a.unescape_value().ok().map(|v| {
895
- truncate_to_length(&v, limits.max_attribute_length)
896
- })
898
+ a.normalized_value(quick_xml::XmlVersion::Implicit1_0)
899
+ .ok()
900
+ .map(|v| {
901
+ truncate_to_length(
902
+ &v,
903
+ limits.max_attribute_length,
904
+ )
905
+ })
897
906
  });
898
907
  let text = read_text_str(reader, buf, limits)?;
899
908
  media_rss::handle_entry_rating(
@@ -1186,14 +1195,14 @@ fn parse_text_construct(
1186
1195
  _ => {}
1187
1196
  },
1188
1197
  b"xml:base" | b"base" => {
1189
- if let Ok(v) = attr.unescape_value()
1198
+ if let Ok(v) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
1190
1199
  && !v.is_empty()
1191
1200
  {
1192
1201
  elem_base = base_ctx.child_with_base(&v).base().map(ToString::to_string);
1193
1202
  }
1194
1203
  }
1195
1204
  b"xml:lang" | b"lang" => {
1196
- if let Ok(v) = attr.unescape_value() {
1205
+ if let Ok(v) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0) {
1197
1206
  elem_lang = Some(v.to_string());
1198
1207
  }
1199
1208
  }
@@ -1329,14 +1338,14 @@ fn parse_content(
1329
1338
  }
1330
1339
  b"src" => src = Some(bytes_to_string(&attr.value)),
1331
1340
  b"xml:base" | b"base" => {
1332
- if let Ok(v) = attr.unescape_value()
1341
+ if let Ok(v) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
1333
1342
  && !v.is_empty()
1334
1343
  {
1335
1344
  elem_base = base_ctx.child_with_base(&v).base().map(ToString::to_string);
1336
1345
  }
1337
1346
  }
1338
1347
  b"xml:lang" | b"lang" => {
1339
- if let Ok(v) = attr.unescape_value() {
1348
+ if let Ok(v) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0) {
1340
1349
  elem_lang = Some(v.to_string());
1341
1350
  }
1342
1351
  }
@@ -1572,14 +1581,14 @@ fn parse_content_empty(
1572
1581
  }
1573
1582
  b"src" => src = Some(bytes_to_string(&attr.value)),
1574
1583
  b"xml:base" | b"base" => {
1575
- if let Ok(v) = attr.unescape_value()
1584
+ if let Ok(v) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
1576
1585
  && !v.is_empty()
1577
1586
  {
1578
1587
  elem_base = base_ctx.child_with_base(&v).base().map(ToString::to_string);
1579
1588
  }
1580
1589
  }
1581
1590
  b"xml:lang" | b"lang" => {
1582
- if let Ok(v) = attr.unescape_value() {
1591
+ if let Ok(v) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0) {
1583
1592
  elem_lang = Some(v.to_string());
1584
1593
  }
1585
1594
  }
@@ -433,7 +433,10 @@ pub fn extract_xml_base(
433
433
  key == b"xml:base" || key == b"base"
434
434
  })
435
435
  .filter(|attr| attr.value.len() <= max_attr_length)
436
- .and_then(|attr| attr.unescape_value().ok())
436
+ .and_then(|attr| {
437
+ attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
438
+ .ok()
439
+ })
437
440
  .map(|s| s.to_string())
438
441
  }
439
442
 
@@ -474,7 +477,10 @@ pub fn extract_xml_lang(
474
477
  key == b"xml:lang" || key == b"lang"
475
478
  })
476
479
  .filter(|attr| attr.value.len() <= max_attr_length)
477
- .and_then(|attr| attr.unescape_value().ok())
480
+ .and_then(|attr| {
481
+ attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
482
+ .ok()
483
+ })
478
484
  .map(|s| s.to_string())
479
485
  }
480
486
 
@@ -529,7 +535,7 @@ pub fn extract_namespaces(
529
535
  continue;
530
536
  }
531
537
 
532
- let uri = if let Ok(v) = attr.unescape_value() {
538
+ let uri = if let Ok(v) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0) {
533
539
  v.to_string()
534
540
  } else {
535
541
  feed.bozo = true;
@@ -49,7 +49,7 @@ fn collect_attributes(e: &quick_xml::events::BytesStart) -> (Vec<(Vec<u8>, Strin
49
49
  for result in e.attributes() {
50
50
  match result {
51
51
  Ok(attr) => {
52
- if let Ok(v) = attr.unescape_value() {
52
+ if let Ok(v) = attr.normalized_value(quick_xml::XmlVersion::Implicit1_0) {
53
53
  attrs.push((attr.key.as_ref().to_vec(), v.to_string()));
54
54
  } else {
55
55
  has_errors = true;
@@ -855,7 +855,8 @@ fn parse_itunes_category(
855
855
  if nesting == 1 {
856
856
  for attr in sub_e.attributes().flatten() {
857
857
  if attr.key.as_ref() == b"text"
858
- && let Ok(value) = attr.unescape_value()
858
+ && let Ok(value) =
859
+ attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
859
860
  {
860
861
  subcategory_text =
861
862
  Some(value.chars().take(limits.max_attribute_length).collect());
@@ -870,7 +871,8 @@ fn parse_itunes_category(
870
871
  {
871
872
  for attr in sub_e.attributes().flatten() {
872
873
  if attr.key.as_ref() == b"text"
873
- && let Ok(value) = attr.unescape_value()
874
+ && let Ok(value) =
875
+ attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
874
876
  {
875
877
  subcategory_text =
876
878
  Some(value.chars().take(limits.max_attribute_length).collect());
@@ -104,7 +104,8 @@ pub fn parse_rss10_with_limits(data: &[u8], limits: ParserLimits) -> Result<Pars
104
104
  for attr in e.attributes().flatten() {
105
105
  if (attr.key.as_ref() == b"rdf:about"
106
106
  || attr.key.local_name().as_ref() == b"about")
107
- && let Ok(value) = attr.unescape_value()
107
+ && let Ok(value) =
108
+ attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
108
109
  {
109
110
  feed.feed.id = Some(value.as_ref().into());
110
111
  }
@@ -138,7 +139,9 @@ pub fn parse_rss10_with_limits(data: &[u8], limits: ParserLimits) -> Result<Pars
138
139
  if attr.key.as_ref() == b"rdf:about"
139
140
  || attr.key.local_name().as_ref() == b"about"
140
141
  {
141
- attr.unescape_value().ok().map(|v| v.to_string())
142
+ attr.normalized_value(quick_xml::XmlVersion::Implicit1_0)
143
+ .ok()
144
+ .map(|v| v.to_string())
142
145
  } else {
143
146
  None
144
147
  }
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "feedparser-rs"
7
- version = "0.5.3"
7
+ version = "0.5.4"
8
8
  description = "High-performance RSS/Atom/JSON Feed parser with feedparser-compatible API"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT OR Apache-2.0" }
File without changes