1+ import sys
12from typing import Type
23
34import pytest
45
56from rss_parser import AtomParser , BaseParser , RSSParser
6- from rss_parser .models .legacy .atom import Atom as LegacyAtom
7- from rss_parser .models .legacy .rss import RSS as LegacyRSS
87
8+ if sys .version_info < (3 , 14 ):
9+ from rss_parser .models .legacy .atom import Atom as LegacyAtom
10+ from rss_parser .models .legacy .rss import RSS as LegacyRSS
911
10- class LegacyRSSParser (RSSParser ):
11- schema = LegacyRSS
12+ class LegacyRSSParser (RSSParser ):
13+ schema = LegacyRSS
1214
15+ class LegacyAtomParser (AtomParser ):
16+ schema = LegacyAtom
1317
14- class LegacyAtomParser (AtomParser ):
15- schema = LegacyAtom
18+ rss_parser_list = [RSSParser , LegacyRSSParser ]
19+ rss_ids = ["rss-v2" , "rss-legacy" ]
20+ atom_parser_list = [AtomParser , LegacyAtomParser ]
21+ atom_ids = ["atom-v2" , "atom-legacy" ]
22+ else :
23+ rss_parser_list = [RSSParser ]
24+ rss_ids = ["rss-v2" ]
25+ atom_parser_list = [AtomParser ]
26+ atom_ids = ["atom-v2" ]
1627
1728
1829class DataHelper :
@@ -32,14 +43,14 @@ def compare_parsing(sample_and_result, parser: Type[BaseParser]):
3243
3344RSS_PARSERS = pytest .mark .parametrize (
3445 "parser_cls" ,
35- [ RSSParser , LegacyRSSParser ] ,
36- ids = [ "rss-v2" , "rss-legacy" ] ,
46+ rss_parser_list ,
47+ ids = rss_ids ,
3748)
3849
3950ATOM_PARSERS = pytest .mark .parametrize (
4051 "parser_cls" ,
41- [ AtomParser , LegacyAtomParser ] ,
42- ids = [ "atom-v2" , "atom-legacy" ] ,
52+ atom_parser_list ,
53+ ids = atom_ids ,
4354)
4455
4556
@@ -74,3 +85,10 @@ class TestAtom:
7485 @ATOM_PARSERS
7586 def test_parses_all_atom_samples (self , sample_and_result , parser_cls ):
7687 DataHelper .compare_parsing (sample_and_result , parser = parser_cls )
88+
89+
90+ class TestLegacyImportError :
91+ @pytest .mark .skipif (sys .version_info < (3 , 14 ), reason = "Legacy models still work in Python 3.13 and below" )
92+ def test_legacy_import_error (self ):
93+ with pytest .raises (ImportError ):
94+ from rss_parser .models .legacy import XMLBaseModel # noqa: F401, PLC0415
0 commit comments