1313@pytest .mark .filterwarnings ("ignore:ast.NameConstant is deprecated:DeprecationWarning" )
1414@pytest .mark .filterwarnings ("ignore:ast.Ellipsis is deprecated:DeprecationWarning" )
1515def test_type_nodes ():
16+ if sys .version_info >= (3 , 14 ):
17+ pytest .skip ('Deprecated AST types removed in Python 3.14' )
1618 assert is_constant_node (ast .Str ('a' ), ast .Str )
1719
1820 if hasattr (ast , 'Bytes' ):
@@ -42,6 +44,8 @@ def test_constant_nodes():
4244 # only test on python 3.8+
4345 if sys .version_info < (3 , 8 ):
4446 pytest .skip ('Constant not available' )
47+ if sys .version_info >= (3 , 14 ):
48+ pytest .skip ('Deprecated AST types removed in Python 3.14' )
4549
4650 assert is_constant_node (ast .Constant ('a' ), ast .Str )
4751 assert is_constant_node (ast .Constant (b'a' ), ast .Bytes )
@@ -51,3 +55,39 @@ def test_constant_nodes():
5155 assert is_constant_node (ast .Constant (False ), ast .NameConstant )
5256 assert is_constant_node (ast .Constant (None ), ast .NameConstant )
5357 assert is_constant_node (ast .Constant (ast .literal_eval ('...' )), ast .Ellipsis )
58+
59+
60+ def test_ast_compat_types_python314 ():
61+ """Test that ast_compat provides the removed AST types in Python 3.14+"""
62+ if sys .version_info < (3 , 14 ):
63+ pytest .skip ('ast_compat types test only for Python 3.14+' )
64+
65+ import python_minifier .ast_compat as ast_compat
66+
67+ # Test that ast_compat provides the removed types
68+ assert is_constant_node (ast_compat .Str ('a' ), ast_compat .Str )
69+ assert is_constant_node (ast_compat .Bytes (b'a' ), ast_compat .Bytes )
70+ assert is_constant_node (ast_compat .Num (1 ), ast_compat .Num )
71+ assert is_constant_node (ast_compat .Num (0 ), ast_compat .Num )
72+ assert is_constant_node (ast_compat .NameConstant (True ), ast_compat .NameConstant )
73+ assert is_constant_node (ast_compat .NameConstant (False ), ast_compat .NameConstant )
74+ assert is_constant_node (ast_compat .NameConstant (None ), ast_compat .NameConstant )
75+ assert is_constant_node (ast_compat .Ellipsis (), ast_compat .Ellipsis )
76+
77+
78+ def test_ast_compat_constant_nodes_python314 ():
79+ """Test that ast_compat works with Constant nodes in Python 3.14+"""
80+ if sys .version_info < (3 , 14 ):
81+ pytest .skip ('ast_compat constant test only for Python 3.14+' )
82+
83+ import python_minifier .ast_compat as ast_compat
84+
85+ # Test that Constant nodes work with ast_compat types
86+ assert is_constant_node (ast .Constant ('a' ), ast_compat .Str )
87+ assert is_constant_node (ast .Constant (b'a' ), ast_compat .Bytes )
88+ assert is_constant_node (ast .Constant (1 ), ast_compat .Num )
89+ assert is_constant_node (ast .Constant (0 ), ast_compat .Num )
90+ assert is_constant_node (ast .Constant (True ), ast_compat .NameConstant )
91+ assert is_constant_node (ast .Constant (False ), ast_compat .NameConstant )
92+ assert is_constant_node (ast .Constant (None ), ast_compat .NameConstant )
93+ assert is_constant_node (ast .Constant (...), ast_compat .Ellipsis )
0 commit comments