Python deprecation warnings
We should get ahead of these - they are output by pytest.  Probably will require quite a few PRs to get them all.
```
2024-01-08T13:48:44.1630256Z ============================== warnings summary ===============================
2024-01-08T13:48:44.1631670Z ..\.tox\py312\Lib\site-packages\astor\op_util.py:92
2024-01-08T13:48:44.1635091Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\astor\op_util.py:92: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1637151Z     precedence_data = dict((getattr(ast, x, None), z) for x, y, z in op_data)
2024-01-08T13:48:44.1637761Z 
2024-01-08T13:48:44.1637962Z test_cli.py: 3139 warnings
2024-01-08T13:48:44.1638440Z test_transpile_self.py: 32534 warnings
2024-01-08T13:48:44.1639000Z test_unsupported.py: 339 warnings
2024-01-08T13:48:44.1640378Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\inference.py:62: DeprecationWarning: ast.NameConstant is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1641696Z     elif isinstance(node, ast.Constant) or isinstance(node, ast.NameConstant):
2024-01-08T13:48:44.1642111Z 
2024-01-08T13:48:44.1642227Z test_cli.py: 41 warnings
2024-01-08T13:48:44.1642566Z test_transpile_self.py: 177 warnings
2024-01-08T13:48:44.1642955Z test_unsupported.py: 4 warnings
2024-01-08T13:48:44.1644268Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pycpp\transpiler.py:546: DeprecationWarning: ast.Ellipsis is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1645444Z     if isinstance(node.slice, ast.Ellipsis):
2024-01-08T13:48:44.1645740Z 
2024-01-08T13:48:44.1645855Z test_cli.py: 223 warnings
2024-01-08T13:48:44.1646196Z test_transpile_self.py: 805 warnings
2024-01-08T13:48:44.1646559Z test_unsupported.py: 117 warnings
2024-01-08T13:48:44.1647800Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\rewriters.py:250: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1648859Z     if isinstance(node, ast.Str):
2024-01-08T13:48:44.1649088Z 
2024-01-08T13:48:44.1649199Z test_cli.py: 8 warnings
2024-01-08T13:48:44.1649528Z test_transpile_self.py: 23 warnings
2024-01-08T13:48:44.1650787Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pycpp\transpiler.py:458: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1652224Z     if isinstance(node.operand, (ast.Call, ast.Num)):
2024-01-08T13:48:44.1652524Z 
2024-01-08T13:48:44.1652641Z test_cli.py: 16 warnings
2024-01-08T13:48:44.1652980Z test_transpile_self.py: 3 warnings
2024-01-08T13:48:44.1655142Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyjl\transpiler.py:226: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1656194Z     bytes_str = node.s
2024-01-08T13:48:44.1656408Z 
2024-01-08T13:48:44.1656526Z test_cli.py: 16 warnings
2024-01-08T13:48:44.1656861Z test_transpile_self.py: 3 warnings
2024-01-08T13:48:44.1658125Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyrs\transpiler.py:425: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1659643Z     bytes_str = node.s
2024-01-08T13:48:44.1659855Z 
2024-01-08T13:48:44.1660251Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1661193Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1661968Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1662685Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1663413Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1664152Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1664859Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1665580Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1666955Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyv\transpiler.py:352: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1667954Z     if not node.s:
2024-01-08T13:48:44.1668119Z 
2024-01-08T13:48:44.1668458Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1669185Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1669909Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1670614Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1671333Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1672055Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1672780Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1673474Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1674832Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyv\transpiler.py:356: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1675896Z     chars.append(f"byte({hex(node.s[0])})")
2024-01-08T13:48:44.1676148Z 
2024-01-08T13:48:44.1676483Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1677206Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1677923Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1678640Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1679337Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1680058Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1680807Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1681643Z test_cli.py::CodeGeneratorTests::test_generated__<'byte_literals', 'vlang'>
2024-01-08T13:48:44.1683004Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyv\transpiler.py:357: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1684015Z     for c in node.s[1:]:
2024-01-08T13:48:44.1684198Z 
2024-01-08T13:48:44.1684334Z test_cli.py: 4 warnings
2024-01-08T13:48:44.1684642Z test_transpile_self.py: 29 warnings
2024-01-08T13:48:44.1685895Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pydart\transpiler.py:260: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1687023Z     if isinstance(node.operand, (ast.Call, ast.Num)):
2024-01-08T13:48:44.1687314Z 
2024-01-08T13:48:44.1687453Z test_cli.py: 4 warnings
2024-01-08T13:48:44.1687752Z test_transpile_self.py: 17 warnings
2024-01-08T13:48:44.1689087Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pygo\transpiler.py:393: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1690804Z     if isinstance(node.operand, (ast.Call, ast.Num)):
2024-01-08T13:48:44.1691105Z 
2024-01-08T13:48:44.1691223Z test_cli.py: 4 warnings
2024-01-08T13:48:44.1691553Z test_transpile_self.py: 36 warnings
2024-01-08T13:48:44.1692858Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyjl\transpiler.py:294: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1693977Z     if isinstance(node.operand, (ast.Call, ast.Num)):
2024-01-08T13:48:44.1694272Z 
2024-01-08T13:48:44.1694384Z test_cli.py: 4 warnings
2024-01-08T13:48:44.1694711Z test_transpile_self.py: 30 warnings
2024-01-08T13:48:44.1695937Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pykt\transpiler.py:275: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1697033Z     if isinstance(node.operand, (ast.Call, ast.Num)):
2024-01-08T13:48:44.1697353Z 
2024-01-08T13:48:44.1697465Z test_cli.py: 4 warnings
2024-01-08T13:48:44.1697789Z test_transpile_self.py: 28 warnings
2024-01-08T13:48:44.1699027Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pynim\transpiler.py:274: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1700110Z     if isinstance(node.operand, (ast.Call, ast.Num)):
2024-01-08T13:48:44.1700420Z 
2024-01-08T13:48:44.1700530Z test_cli.py: 4 warnings
2024-01-08T13:48:44.1700853Z test_transpile_self.py: 32 warnings
2024-01-08T13:48:44.1702051Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyrs\transpiler.py:506: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1703166Z     if isinstance(node.operand, (ast.Call, ast.Num)):
2024-01-08T13:48:44.1703484Z 
2024-01-08T13:48:44.1703598Z test_cli.py: 4 warnings
2024-01-08T13:48:44.1703930Z test_transpile_self.py: 10 warnings
2024-01-08T13:48:44.1705132Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyv\transpiler.py:387: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1706235Z     if isinstance(node.operand, (ast.Call, ast.Num)):
2024-01-08T13:48:44.1706551Z 
2024-01-08T13:48:44.1706667Z test_tracer.py: 11 warnings
2024-01-08T13:48:44.1707002Z test_tracer_cpp.py: 11 warnings
2024-01-08T13:48:44.1707333Z test_transpile_self.py: 40 warnings
2024-01-08T13:48:44.1707706Z test_transpiler_cpp.py: 1 warning
2024-01-08T13:48:44.1708898Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\tracer.py:134: DeprecationWarning: Attribute n is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1709845Z     return str(node.n)
2024-01-08T13:48:44.1710048Z 
2024-01-08T13:48:44.1710417Z test_transpile_self.py::SelfTranspileTests::test_cpp_recursive
2024-01-08T13:48:44.1711790Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pycpp\transpiler.py:470: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1712854Z     and isinstance(node.right, ast.Num)
2024-01-08T13:48:44.1713105Z 
2024-01-08T13:48:44.1713338Z test_transpile_self.py::SelfTranspileTests::test_cpp_recursive
2024-01-08T13:48:44.1714619Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\clike.py:439: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1715584Z     bytes_str = node.s
2024-01-08T13:48:44.1715759Z 
2024-01-08T13:48:44.1716009Z test_transpile_self.py::SelfTranspileTests::test_cpp_recursive
2024-01-08T13:48:44.1717307Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pycpp\transpiler.py:406: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1718402Z     n = len(node.s)
2024-01-08T13:48:44.1718570Z 
2024-01-08T13:48:44.1718834Z test_transpile_self.py::SelfTranspileTests::test_dart_recursive
2024-01-08T13:48:44.1720170Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pydart\transpiler.py:272: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1721249Z     and isinstance(node.right, ast.Num)
2024-01-08T13:48:44.1721521Z 
2024-01-08T13:48:44.1721756Z test_transpile_self.py::SelfTranspileTests::test_dart_recursive
2024-01-08T13:48:44.1723089Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pydart\transpiler.py:187: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead
2024-01-08T13:48:44.1724107Z     bytes_str = "{0}".format(node.s)
2024-01-08T13:48:44.1724361Z 
2024-01-08T13:48:44.1724591Z test_transpile_self.py::SelfTranspileTests::test_go_recursive
2024-01-08T13:48:44.1725178Z test_transpile_self.py::SelfTranspileTests::test_go_recursive
2024-01-08T13:48:44.1726510Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pygo\transpiler.py:405: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1727536Z     and isinstance(node.right, ast.Num)
2024-01-08T13:48:44.1727810Z 
2024-01-08T13:48:44.1728050Z test_transpile_self.py::SelfTranspileTests::test_julia_recursive
2024-01-08T13:48:44.1729403Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyjl\transpiler.py:306: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1730464Z     and isinstance(node.right, ast.Num)
2024-01-08T13:48:44.1730708Z 
2024-01-08T13:48:44.1730955Z test_transpile_self.py::SelfTranspileTests::test_kotlin_recursive
2024-01-08T13:48:44.1732313Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pykt\transpiler.py:287: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1733363Z     and isinstance(node.right, ast.Num)
2024-01-08T13:48:44.1733608Z 
2024-01-08T13:48:44.1733864Z test_transpile_self.py::SelfTranspileTests::test_nim_recursive
2024-01-08T13:48:44.1734421Z test_transpile_self.py::SelfTranspileTests::test_nim_recursive
2024-01-08T13:48:44.1735769Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pynim\transpiler.py:286: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1736828Z     and isinstance(node.right, ast.Num)
2024-01-08T13:48:44.1737072Z 
2024-01-08T13:48:44.1737334Z test_transpile_self.py::SelfTranspileTests::test_rust_recursive
2024-01-08T13:48:44.1738635Z   D:\a\py2many\py2many\.tox\py312\Lib\site-packages\py2many\pyrs\transpiler.py:518: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead
2024-01-08T13:48:44.1740331Z     and isinstance(node.right, ast.Num)
```