openrewrite-migrate-python 0.6.0.dev20260420172236__tar.gz → 0.7.0.dev20260421234111__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 (131) hide show
  1. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/PKG-INFO +1 -1
  2. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/pyproject.toml +1 -1
  3. openrewrite_migrate_python-0.7.0.dev20260421234111/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +99 -0
  4. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
  5. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_sys_last_deprecations.py +6 -6
  6. openrewrite_migrate_python-0.6.0.dev20260420172236/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -121
  7. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/setup.cfg +0 -0
  8. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/__init__.py +0 -0
  9. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
  10. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
  11. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
  12. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
  13. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
  14. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
  15. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
  16. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
  17. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
  18. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
  19. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
  20. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/__init__.py +0 -0
  21. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
  22. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
  23. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
  24. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
  25. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
  26. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
  27. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
  28. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
  29. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
  30. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
  31. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
  32. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
  33. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
  34. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
  35. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
  36. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
  37. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
  38. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
  39. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
  40. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
  41. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
  42. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
  43. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
  44. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
  45. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
  46. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
  47. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
  48. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
  49. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
  50. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
  51. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
  52. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
  53. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
  54. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
  55. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
  56. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
  57. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
  58. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
  59. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
  60. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/string_formatting.py +0 -0
  61. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
  62. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
  63. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
  64. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
  65. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
  66. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
  67. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
  68. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +0 -0
  69. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +0 -0
  70. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
  71. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
  72. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
  73. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
  74. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
  75. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
  76. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
  77. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
  78. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
  79. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
  80. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
  81. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
  82. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
  83. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
  84. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +0 -0
  85. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
  86. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
  87. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
  88. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
  89. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_aifc_migrations.py +0 -0
  90. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_array_deprecations.py +0 -0
  91. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_ast_deprecations.py +0 -0
  92. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_asyncio_coroutine_to_async.py +0 -0
  93. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_asyncio_deprecations.py +0 -0
  94. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_calendar_deprecations.py +0 -0
  95. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_cgi_parse_deprecations.py +0 -0
  96. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_change_import_recipes.py +0 -0
  97. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_collections_abc_migrations.py +0 -0
  98. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_configparser_deprecations.py +0 -0
  99. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_datetime_utc.py +0 -0
  100. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_distutils_deprecations.py +0 -0
  101. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_future_imports.py +0 -0
  102. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_gettext_deprecations.py +0 -0
  103. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_html_parser_deprecations.py +0 -0
  104. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_imp_migrations.py +0 -0
  105. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_langchain_classic_imports.py +0 -0
  106. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_langchain_community_imports.py +0 -0
  107. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_langchain_provider_imports.py +0 -0
  108. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_locale_deprecations.py +0 -0
  109. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
  110. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_macpath_deprecations.py +0 -0
  111. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_os_deprecations.py +0 -0
  112. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_pep594_migrations.py +0 -0
  113. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_pep594_system_migrations.py +0 -0
  114. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_pkgutil_deprecations.py +0 -0
  115. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_platform_deprecations.py +0 -0
  116. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_re_deprecations.py +0 -0
  117. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_removed_modules_312.py +0 -0
  118. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_shutil_deprecations.py +0 -0
  119. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_ssl_deprecations.py +0 -0
  120. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_string_formatting.py +0 -0
  121. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_sys_deprecations.py +0 -0
  122. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_tarfile_deprecations.py +0 -0
  123. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_threading_deprecations.py +0 -0
  124. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_threading_extended.py +0 -0
  125. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_threading_is_alive_deprecation.py +0 -0
  126. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_typing_callable.py +0 -0
  127. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_typing_deprecations.py +0 -0
  128. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_typing_union_to_pipe.py +0 -0
  129. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_unittest_deprecations.py +0 -0
  130. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_upgrade_recipes.py +0 -0
  131. {openrewrite_migrate_python-0.6.0.dev20260420172236 → openrewrite_migrate_python-0.7.0.dev20260421234111}/tests/test_xml_deprecations.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrewrite-migrate-python
3
- Version: 0.6.0.dev20260420172236
3
+ Version: 0.7.0.dev20260421234111
4
4
  Summary: OpenRewrite recipes for migrating Python codebases to newer Python versions.
5
5
  Author-email: "Moderne Inc." <support@moderne.io>
6
6
  License: Moderne Proprietary
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "openrewrite-migrate-python"
7
7
  description = "OpenRewrite recipes for migrating Python codebases to newer Python versions."
8
- version = "0.6.0.dev20260420172236" # Updated dynamically during release
8
+ version = "0.7.0.dev20260421234111" # Updated dynamically during release
9
9
  authors = [{ name = "Moderne Inc.", email = "support@moderne.io" }]
10
10
  license = { text = "Moderne Proprietary" }
11
11
  readme = "README.md"
@@ -0,0 +1,99 @@
1
+ """
2
+ Recipe for replacing deprecated sys.last_type/last_value/last_traceback
3
+ with sys.last_exc equivalents.
4
+
5
+ sys.last_type, sys.last_value, and sys.last_traceback were deprecated in
6
+ Python 3.12 in favor of sys.last_exc:
7
+
8
+ - sys.last_value -> sys.last_exc
9
+ - sys.last_type -> type(sys.last_exc)
10
+ - sys.last_traceback -> sys.last_exc.__traceback__
11
+
12
+ See: https://docs.python.org/3/whatsnew/3.12.html#deprecated
13
+ """
14
+
15
+ from typing import Any, List, Optional, cast
16
+
17
+ from rewrite import ExecutionContext, Recipe, TreeVisitor
18
+ from rewrite.category import CategoryDescriptor
19
+ from rewrite.decorators import categorize
20
+ from rewrite.marketplace import Python
21
+ from rewrite.python.visitor import PythonVisitor
22
+ from rewrite.python.template import pattern, template
23
+ from rewrite.java.tree import FieldAccess, J
24
+
25
+ # Define category path: Python > Migrate > Python 3.12
26
+ _Python312 = [
27
+ *Python,
28
+ CategoryDescriptor(display_name="Migrate"),
29
+ CategoryDescriptor(display_name="Python 3.12"),
30
+ ]
31
+
32
+ _last_value_pattern = pattern("sys.last_value")
33
+ _last_type_pattern = pattern("sys.last_type")
34
+ _last_traceback_pattern = pattern("sys.last_traceback")
35
+
36
+ _last_exc_template = template("sys.last_exc")
37
+ _type_last_exc_template = template("type(sys.last_exc)")
38
+ _last_exc_traceback_template = template("sys.last_exc.__traceback__")
39
+
40
+
41
+ @categorize(_Python312)
42
+ class ReplaceSysLastExcInfo(Recipe):
43
+ """
44
+ Replace `sys.last_type`, `sys.last_value`, and `sys.last_traceback` with
45
+ their `sys.last_exc`-based equivalents.
46
+
47
+ These attributes were deprecated in Python 3.12 in favor of `sys.last_exc`
48
+ which provides the exception object directly.
49
+
50
+ Example:
51
+ Before:
52
+ import sys
53
+ exc_type = sys.last_type
54
+ exc_value = sys.last_value
55
+ exc_tb = sys.last_traceback
56
+
57
+ After:
58
+ import sys
59
+ exc_type = type(sys.last_exc)
60
+ exc_value = sys.last_exc
61
+ exc_tb = sys.last_exc.__traceback__
62
+ """
63
+
64
+ @property
65
+ def name(self) -> str:
66
+ return "org.openrewrite.python.migrate.ReplaceSysLastExcInfo"
67
+
68
+ @property
69
+ def display_name(self) -> str:
70
+ return "Replace `sys.last_type` / `sys.last_value` / `sys.last_traceback` with `sys.last_exc`"
71
+
72
+ @property
73
+ def description(self) -> str:
74
+ return (
75
+ "`sys.last_type`, `sys.last_value`, and `sys.last_traceback` were "
76
+ "deprecated in Python 3.12. Replace them with their `sys.last_exc`-"
77
+ "based equivalents: `type(sys.last_exc)`, `sys.last_exc`, and "
78
+ "`sys.last_exc.__traceback__` respectively."
79
+ )
80
+
81
+ @property
82
+ def tags(self) -> List[str]:
83
+ return ["python", "migration", "3.12", "sys"]
84
+
85
+ def editor(self) -> TreeVisitor[Any, ExecutionContext]:
86
+ class Visitor(PythonVisitor[ExecutionContext]):
87
+ def visit_field_access( # type: ignore[override]
88
+ self, field_access: FieldAccess, p: ExecutionContext
89
+ ) -> Optional[J]:
90
+ fa = cast(FieldAccess, super().visit_field_access(field_access, p))
91
+ if _last_value_pattern.matches(fa, self.cursor):
92
+ return _last_exc_template.apply(self.cursor)
93
+ if _last_type_pattern.matches(fa, self.cursor):
94
+ return _type_last_exc_template.apply(self.cursor)
95
+ if _last_traceback_pattern.matches(fa, self.cursor):
96
+ return _last_exc_traceback_template.apply(self.cursor)
97
+ return fa
98
+
99
+ return Visitor()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrewrite-migrate-python
3
- Version: 0.6.0.dev20260420172236
3
+ Version: 0.7.0.dev20260421234111
4
4
  Summary: OpenRewrite recipes for migrating Python codebases to newer Python versions.
5
5
  Author-email: "Moderne Inc." <support@moderne.io>
6
6
  License: Moderne Proprietary
@@ -25,8 +25,8 @@ class TestReplaceSysLastExcInfo:
25
25
  )
26
26
  )
27
27
 
28
- def test_flags_sys_last_type(self):
29
- """last_type needs type(sys.last_exc) — flagged for manual review."""
28
+ def test_replaces_sys_last_type(self):
29
+ """last_type is rewritten to type(sys.last_exc)."""
30
30
  spec = RecipeSpec(recipe=ReplaceSysLastExcInfo())
31
31
  spec.rewrite_run(
32
32
  python(
@@ -36,13 +36,13 @@ class TestReplaceSysLastExcInfo:
36
36
  """,
37
37
  """
38
38
  import sys
39
- t = /*~~(sys.last_type is deprecated in Python 3.12. Use type(sys.last_exc) instead.)~~>*/sys.last_type
39
+ t = type(sys.last_exc)
40
40
  """,
41
41
  )
42
42
  )
43
43
 
44
- def test_flags_sys_last_traceback(self):
45
- """last_traceback needs sys.last_exc.__traceback__ — flagged for manual review."""
44
+ def test_replaces_sys_last_traceback(self):
45
+ """last_traceback is rewritten to sys.last_exc.__traceback__."""
46
46
  spec = RecipeSpec(recipe=ReplaceSysLastExcInfo())
47
47
  spec.rewrite_run(
48
48
  python(
@@ -52,7 +52,7 @@ class TestReplaceSysLastExcInfo:
52
52
  """,
53
53
  """
54
54
  import sys
55
- tb = /*~~(sys.last_traceback is deprecated in Python 3.12. Use sys.last_exc.__traceback__ instead.)~~>*/sys.last_traceback
55
+ tb = sys.last_exc.__traceback__
56
56
  """,
57
57
  )
58
58
  )
@@ -1,121 +0,0 @@
1
- """
2
- Recipe for replacing deprecated sys.last_type/last_value/last_traceback
3
- with sys.last_exc.
4
-
5
- sys.last_type, sys.last_value, and sys.last_traceback were deprecated in
6
- Python 3.12 in favor of sys.last_exc.
7
-
8
- - sys.last_value is semantically equivalent to sys.last_exc (auto-replaced)
9
- - sys.last_type and sys.last_traceback are not direct equivalents
10
- (would need type(sys.last_exc) and sys.last_exc.__traceback__) and are
11
- flagged for manual review.
12
-
13
- See: https://docs.python.org/3/whatsnew/3.12.html#deprecated
14
- """
15
-
16
- from typing import Any, List, Optional
17
-
18
- from rewrite import ExecutionContext, Recipe, TreeVisitor
19
- from rewrite.category import CategoryDescriptor
20
- from rewrite.decorators import categorize
21
- from rewrite.marketplace import Python
22
- from rewrite.python.visitor import PythonVisitor
23
- from rewrite.java.tree import FieldAccess, Identifier
24
- from ._markers import mark_deprecated
25
-
26
- # Define category path: Python > Migrate > Python 3.12
27
- _Python312 = [
28
- *Python,
29
- CategoryDescriptor(display_name="Migrate"),
30
- CategoryDescriptor(display_name="Python 3.12"),
31
- ]
32
-
33
-
34
- @categorize(_Python312)
35
- class ReplaceSysLastExcInfo(Recipe):
36
- """
37
- Replace `sys.last_value` with `sys.last_exc` and flag `sys.last_type`
38
- and `sys.last_traceback` for manual review.
39
-
40
- These attributes were deprecated in Python 3.12 in favor of
41
- `sys.last_exc` which provides the exception object directly.
42
-
43
- Only `sys.last_value` is semantically equivalent to `sys.last_exc`.
44
- `sys.last_type` would need `type(sys.last_exc)` and
45
- `sys.last_traceback` would need `sys.last_exc.__traceback__`,
46
- which require structural changes beyond a simple rename.
47
-
48
- Example:
49
- Before:
50
- import sys
51
- exc_value = sys.last_value
52
-
53
- After:
54
- import sys
55
- exc_value = sys.last_exc
56
- """
57
-
58
- @property
59
- def name(self) -> str:
60
- return "org.openrewrite.python.migrate.ReplaceSysLastExcInfo"
61
-
62
- @property
63
- def display_name(self) -> str:
64
- return "Replace `sys.last_value` with `sys.last_exc` and flag `sys.last_type` / `sys.last_traceback`"
65
-
66
- @property
67
- def description(self) -> str:
68
- return (
69
- "`sys.last_type`, `sys.last_value`, and `sys.last_traceback` were "
70
- "deprecated in Python 3.12. `sys.last_value` is auto-replaced with "
71
- "`sys.last_exc`; `sys.last_type` and `sys.last_traceback` are flagged "
72
- "for manual review."
73
- )
74
-
75
- @property
76
- def tags(self) -> List[str]:
77
- return ["python", "migration", "3.12", "sys"]
78
-
79
- def editor(self) -> TreeVisitor[Any, ExecutionContext]:
80
- class Visitor(PythonVisitor[ExecutionContext]):
81
- def visit_field_access(
82
- self, field_access: FieldAccess, p: ExecutionContext
83
- ) -> Optional[FieldAccess]:
84
- field_access = super().visit_field_access(field_access, p)
85
-
86
- if not isinstance(field_access.name, Identifier):
87
- return field_access
88
-
89
- attr_name = field_access.name.simple_name
90
- if attr_name not in ("last_type", "last_value", "last_traceback"):
91
- return field_access
92
-
93
- target = field_access.target
94
- if not isinstance(target, Identifier):
95
- return field_access
96
- if target.simple_name != "sys":
97
- return field_access
98
-
99
- # Only last_value is a direct semantic equivalent of last_exc
100
- if attr_name == "last_value":
101
- new_identifier = field_access.name.replace(_simple_name="last_exc")
102
- old_padded = field_access.padding.name
103
- new_padded = old_padded.replace(_element=new_identifier)
104
- return field_access.padding.replace(_name=new_padded)
105
-
106
- # last_type and last_traceback need structural changes
107
- # (type(sys.last_exc) and sys.last_exc.__traceback__)
108
- if attr_name == "last_type":
109
- return mark_deprecated(
110
- field_access,
111
- "sys.last_type is deprecated in Python 3.12. "
112
- "Use type(sys.last_exc) instead."
113
- )
114
- else: # last_traceback
115
- return mark_deprecated(
116
- field_access,
117
- "sys.last_traceback is deprecated in Python 3.12. "
118
- "Use sys.last_exc.__traceback__ instead."
119
- )
120
-
121
- return Visitor()