openrewrite-migrate-python 0.16.0.dev20261005084151__tar.gz → 0.16.0.dev20261005095013__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 (159) hide show
  1. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/PKG-INFO +1 -1
  2. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/pyproject.toml +1 -1
  3. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/_reindent.py +16 -0
  4. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +56 -4
  5. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
  6. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/setup.cfg +0 -0
  7. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/__init__.py +0 -0
  8. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
  9. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
  10. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/_trivia.py +0 -0
  11. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
  12. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
  13. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/code_quality.py +0 -0
  14. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/find_suspicious_chained_comparison.py +0 -0
  15. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
  16. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
  17. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
  18. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
  19. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
  20. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
  21. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/__init__.py +0 -0
  22. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
  23. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/_from_imports.py +0 -0
  24. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/_import_hygiene.py +0 -0
  25. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/_langchain_tables.py +0 -0
  26. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
  27. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/_slots.py +0 -0
  28. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/_typing_imports.py +0 -0
  29. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
  30. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
  31. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
  32. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
  33. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
  34. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/avro_migrations.py +0 -0
  35. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
  36. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
  37. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
  38. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
  39. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
  40. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
  41. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
  42. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
  43. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
  44. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
  45. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
  46. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
  47. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
  48. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
  49. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
  50. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
  51. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
  52. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
  53. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
  54. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
  55. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
  56. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
  57. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
  58. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
  59. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
  60. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
  61. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
  62. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/pydantic_deprecations.py +0 -0
  63. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/pydantic_fields.py +0 -0
  64. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/pydantic_model_fields.py +0 -0
  65. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
  66. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
  67. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
  68. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
  69. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
  70. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/string_formatting.py +0 -0
  71. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
  72. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -0
  73. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
  74. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
  75. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
  76. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
  77. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
  78. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
  79. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +0 -0
  80. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +0 -0
  81. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
  82. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
  83. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
  84. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_pydantic.py +0 -0
  85. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
  86. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
  87. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
  88. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
  89. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
  90. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
  91. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
  92. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
  93. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
  94. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
  95. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
  96. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +0 -0
  97. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
  98. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
  99. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
  100. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
  101. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_aifc_migrations.py +0 -0
  102. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_array_deprecations.py +0 -0
  103. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_ast_deprecations.py +0 -0
  104. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_asyncio_coroutine_to_async.py +0 -0
  105. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_asyncio_deprecations.py +0 -0
  106. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_avro_migrations.py +0 -0
  107. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_calendar_deprecations.py +0 -0
  108. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_cgi_parse_deprecations.py +0 -0
  109. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_change_import_recipes.py +0 -0
  110. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_collections_abc_migrations.py +0 -0
  111. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_configparser_deprecations.py +0 -0
  112. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_datetime_utc.py +0 -0
  113. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_distutils_deprecations.py +0 -0
  114. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_distutils_migrations.py +0 -0
  115. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_functools_deprecations.py +0 -0
  116. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_future_imports.py +0 -0
  117. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_gettext_deprecations.py +0 -0
  118. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_html_parser_deprecations.py +0 -0
  119. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_imp_migrations.py +0 -0
  120. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_langchain_classic_imports.py +0 -0
  121. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_langchain_community_imports.py +0 -0
  122. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_langchain_provider_imports.py +0 -0
  123. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_locale_deprecations.py +0 -0
  124. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
  125. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_macpath_deprecations.py +0 -0
  126. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_mailcap_migrations.py +0 -0
  127. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_markers.py +0 -0
  128. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_os_deprecations.py +0 -0
  129. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_pathlib_deprecations.py +0 -0
  130. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_pep594_migrations.py +0 -0
  131. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_pep594_system_migrations.py +0 -0
  132. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_pkgutil_deprecations.py +0 -0
  133. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_platform_deprecations.py +0 -0
  134. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_pydantic_deprecations.py +0 -0
  135. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_pydantic_fields.py +0 -0
  136. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_pydantic_model_fields.py +0 -0
  137. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_re_deprecations.py +0 -0
  138. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_removed_modules_312.py +0 -0
  139. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_shutil_deprecations.py +0 -0
  140. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_socket_deprecations.py +0 -0
  141. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_ssl_deprecations.py +0 -0
  142. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_string_formatting.py +0 -0
  143. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_sys_deprecations.py +0 -0
  144. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_sys_last_deprecations.py +0 -0
  145. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_tarfile_deprecations.py +0 -0
  146. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_tempfile_deprecations.py +0 -0
  147. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_threading_deprecations.py +0 -0
  148. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_threading_extended.py +0 -0
  149. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_threading_is_alive_deprecation.py +0 -0
  150. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_typing_alias_moves.py +0 -0
  151. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_typing_callable.py +0 -0
  152. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_typing_deprecations.py +0 -0
  153. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_typing_union_to_pipe.py +0 -0
  154. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_unittest_deprecations.py +0 -0
  155. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_upgrade_recipes.py +0 -0
  156. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_upgrade_to_pydantic.py +0 -0
  157. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_urllib_deprecations.py +0 -0
  158. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/tests/test_xdrlib_migrations.py +0 -0
  159. {openrewrite_migrate_python-0.16.0.dev20261005084151 → openrewrite_migrate_python-0.16.0.dev20261005095013}/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.16.0.dev20261005084151
3
+ Version: 0.16.0.dev20261005095013
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.16.0.dev20261005084151" # Updated dynamically during release
8
+ version = "0.16.0.dev20261005095013" # 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"
@@ -6,7 +6,9 @@ to a shallower nesting level means rewriting every line it spans.
6
6
 
7
7
  from typing import Optional, TypeVar
8
8
 
9
+ from rewrite.java.markers import TrailingComma
9
10
  from rewrite.java.support_types import Space
11
+ from rewrite.markers import Marker
10
12
  from rewrite.python.visitor import PythonVisitor
11
13
 
12
14
  T = TypeVar("T")
@@ -65,6 +67,20 @@ class _Reindent(PythonVisitor[None]):
65
67
  return space
66
68
  return Space(_comments=comments, _whitespace=whitespace)
67
69
 
70
+ def visit_marker(self, marker: Marker, p: None) -> Marker:
71
+ # The line break before the bracket closing a trailing-comma list
72
+ # lives on the comma.
73
+ if isinstance(marker, TrailingComma):
74
+ suffix = self.visit_space(marker.suffix, p)
75
+ if suffix is not marker.suffix:
76
+ return marker.replace(_suffix=suffix)
77
+ return marker
78
+
79
+
80
+ def reindent_space(space: Space, old_base: str, new_base: str) -> Space:
81
+ """:func:`reindent` for trivia that has no tree to travel with."""
82
+ return _Reindent(old_base, new_base).visit_space(space, None)
83
+
68
84
 
69
85
  def reindent(tree: T, old_base: str, new_base: str) -> T:
70
86
  """Re-base every line in *tree* that is indented at least to *old_base*.
@@ -18,7 +18,7 @@ from rewrite.marketplace import Python
18
18
  from rewrite.markers import Markers
19
19
  from rewrite.python.tree import StatementExpression
20
20
  from rewrite.python.visitor import PythonVisitor
21
- from rewrite.java.support_types import JLeftPadded, JRightPadded, Space
21
+ from rewrite.java.support_types import Comment, JLeftPadded, JRightPadded, Space
22
22
  from rewrite.java.tree import (
23
23
  Assignment,
24
24
  Binary as JBinary,
@@ -26,6 +26,7 @@ from rewrite.java.tree import (
26
26
  ControlParentheses,
27
27
  Expression,
28
28
  If,
29
+ J,
29
30
  Lambda,
30
31
  Parentheses,
31
32
  Ternary,
@@ -33,10 +34,13 @@ from rewrite.java.tree import (
33
34
  from rewrite.utils import random_id
34
35
 
35
36
  from openrewrite_code_quality_python.codequality._reindent import (
36
- inherited_prefix,
37
37
  line_indent,
38
38
  reindent,
39
+ reindent_space,
39
40
  )
41
+ from openrewrite_code_quality_python.codequality._trivia import concat, split_line
42
+
43
+ _HOISTED_COMMENTS = "collapsible_if_statements.hoisted_comments"
40
44
 
41
45
  _CodeQuality = [
42
46
  *Python,
@@ -56,6 +60,14 @@ def _binds_looser_than_and(expr: Expression) -> bool:
56
60
  return isinstance(expr, (Ternary, Lambda, Assignment, StatementExpression))
57
61
 
58
62
 
63
+ def _with_comments_above(prefix: Space, comments: List[Comment]) -> Space:
64
+ """*prefix* with *comments* on their own lines just before the token it
65
+ leads into. Each comment's suffix must already end at that token's indent."""
66
+ if not comments:
67
+ return prefix
68
+ return Space(_comments=[*prefix.comments, *comments], _whitespace=prefix.whitespace)
69
+
70
+
59
71
  def _operand(expr: Expression, prefix: Space) -> Expression:
60
72
  """Prepare *expr* as an operand of the merged ``and``, parenthesizing it
61
73
  when its own operator would otherwise be captured."""
@@ -119,6 +131,13 @@ class CollapsibleIfStatements(Recipe):
119
131
 
120
132
  def editor(self) -> TreeVisitor[Any, ExecutionContext]:
121
133
  class Visitor(PythonVisitor[ExecutionContext]):
134
+ def visit_else(self, else_: If.Else, p: ExecutionContext) -> J:
135
+ visited = super().visit_else(else_, p)
136
+ hoisted = self.cursor.get_message(_HOISTED_COMMENTS, [])
137
+ if not isinstance(visited, If.Else) or not hoisted:
138
+ return visited
139
+ return visited.replace(_prefix=_with_comments_above(visited.prefix, hoisted))
140
+
122
141
  def visit_if(
123
142
  self, if_: If, p: ExecutionContext
124
143
  ) -> Optional[If]:
@@ -164,6 +183,31 @@ class CollapsibleIfStatements(Recipe):
164
183
  ):
165
184
  return if_
166
185
 
186
+ # An `elif` starts its line at the `elif` keyword, which the
187
+ # enclosing `Else` holds.
188
+ parent = self.cursor.parent_tree_cursor()
189
+ under_elif = isinstance(parent.value, If.Else)
190
+ outer_indent = line_indent(
191
+ parent.value.prefix if isinstance(parent.value, If.Else) else if_.prefix
192
+ )
193
+ split = split_line(inner.prefix)
194
+ if (
195
+ outer_indent is None
196
+ or not header_indent.startswith(outer_indent)
197
+ or split is None
198
+ ):
199
+ return if_
200
+ # The outer header's trailing comment stays on the merged
201
+ # header. Comments on their own line before the inner `if`
202
+ # describe its condition, so they go above the merged header
203
+ # without the blank lines around them.
204
+ header_trailer, inner_leader = split
205
+ hoisted = reindent_space(
206
+ Space(_comments=inner_leader.comments, _whitespace=""),
207
+ header_indent,
208
+ outer_indent,
209
+ ).comments
210
+
167
211
  combined = JBinary(
168
212
  _id=random_id(),
169
213
  _prefix=if_.if_condition.tree.prefix,
@@ -174,7 +218,10 @@ class CollapsibleIfStatements(Recipe):
174
218
  _element=JBinary.Type.And,
175
219
  _markers=Markers.EMPTY,
176
220
  ),
177
- _right=_operand(inner.if_condition.tree, Space.SINGLE_SPACE),
221
+ _right=_operand(
222
+ reindent(inner.if_condition.tree, header_indent, outer_indent),
223
+ Space.SINGLE_SPACE,
224
+ ),
178
225
  _type=None,
179
226
  )
180
227
 
@@ -198,13 +245,18 @@ class CollapsibleIfStatements(Recipe):
198
245
  _statements=[
199
246
  first.replace(
200
247
  _element=first.element.replace(
201
- _prefix=inherited_prefix(inner.prefix, first.element.prefix)
248
+ _prefix=concat(header_trailer, first.element.prefix)
202
249
  )
203
250
  ),
204
251
  *inner_body._statements[1:],
205
252
  ]
206
253
  )
207
254
 
255
+ if under_elif:
256
+ parent.put_message(_HOISTED_COMMENTS, hoisted)
257
+ else:
258
+ if_ = if_.replace(_prefix=_with_comments_above(if_.prefix, hoisted))
259
+
208
260
  return if_.replace(
209
261
  _if_condition=new_condition,
210
262
  ).padding.replace(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrewrite-migrate-python
3
- Version: 0.16.0.dev20261005084151
3
+ Version: 0.16.0.dev20261005095013
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