openrewrite-migrate-python 0.14.0.dev20260830170445__tar.gz → 0.14.0.dev20260901133827__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 (144) hide show
  1. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/PKG-INFO +1 -1
  2. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/pyproject.toml +1 -1
  3. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/string_formatting.py +16 -0
  4. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
  5. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_string_formatting.py +29 -0
  6. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/setup.cfg +0 -0
  7. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/__init__.py +0 -0
  8. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
  9. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
  10. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
  11. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
  12. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
  13. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/find_suspicious_chained_comparison.py +0 -0
  14. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
  15. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
  16. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
  17. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
  18. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
  19. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
  20. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/__init__.py +0 -0
  21. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
  22. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/_import_hygiene.py +0 -0
  23. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
  24. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/_typing_imports.py +0 -0
  25. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
  26. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
  27. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
  28. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
  29. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
  30. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/avro_migrations.py +0 -0
  31. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
  32. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
  33. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
  34. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
  35. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
  36. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
  37. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
  38. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
  39. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
  40. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
  41. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
  42. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
  43. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
  44. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
  45. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
  46. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
  47. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
  48. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
  49. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
  50. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
  51. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
  52. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
  53. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
  54. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
  55. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
  56. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
  57. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
  58. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/pydantic_deprecations.py +0 -0
  59. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/pydantic_fields.py +0 -0
  60. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/pydantic_model_fields.py +0 -0
  61. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
  62. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
  63. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
  64. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
  65. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
  66. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
  67. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -0
  68. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
  69. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
  70. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
  71. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
  72. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
  73. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
  74. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +0 -0
  75. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +0 -0
  76. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
  77. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
  78. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
  79. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_pydantic.py +0 -0
  80. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
  81. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
  82. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
  83. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
  84. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
  85. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
  86. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
  87. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
  88. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
  89. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
  90. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
  91. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +0 -0
  92. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
  93. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
  94. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
  95. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
  96. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_aifc_migrations.py +0 -0
  97. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_array_deprecations.py +0 -0
  98. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_ast_deprecations.py +0 -0
  99. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_asyncio_coroutine_to_async.py +0 -0
  100. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_asyncio_deprecations.py +0 -0
  101. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_avro_migrations.py +0 -0
  102. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_calendar_deprecations.py +0 -0
  103. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_cgi_parse_deprecations.py +0 -0
  104. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_change_import_recipes.py +0 -0
  105. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_collections_abc_migrations.py +0 -0
  106. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_configparser_deprecations.py +0 -0
  107. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_datetime_utc.py +0 -0
  108. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_distutils_deprecations.py +0 -0
  109. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_future_imports.py +0 -0
  110. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_gettext_deprecations.py +0 -0
  111. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_html_parser_deprecations.py +0 -0
  112. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_imp_migrations.py +0 -0
  113. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_langchain_classic_imports.py +0 -0
  114. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_langchain_community_imports.py +0 -0
  115. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_langchain_provider_imports.py +0 -0
  116. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_locale_deprecations.py +0 -0
  117. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
  118. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_macpath_deprecations.py +0 -0
  119. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_os_deprecations.py +0 -0
  120. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_pep594_migrations.py +0 -0
  121. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_pep594_system_migrations.py +0 -0
  122. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_pkgutil_deprecations.py +0 -0
  123. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_platform_deprecations.py +0 -0
  124. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_pydantic_deprecations.py +0 -0
  125. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_pydantic_fields.py +0 -0
  126. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_pydantic_model_fields.py +0 -0
  127. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_re_deprecations.py +0 -0
  128. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_removed_modules_312.py +0 -0
  129. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_shutil_deprecations.py +0 -0
  130. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_ssl_deprecations.py +0 -0
  131. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_sys_deprecations.py +0 -0
  132. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_sys_last_deprecations.py +0 -0
  133. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_tarfile_deprecations.py +0 -0
  134. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_threading_deprecations.py +0 -0
  135. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_threading_extended.py +0 -0
  136. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_threading_is_alive_deprecation.py +0 -0
  137. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_typing_alias_moves.py +0 -0
  138. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_typing_callable.py +0 -0
  139. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_typing_deprecations.py +0 -0
  140. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_typing_union_to_pipe.py +0 -0
  141. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_unittest_deprecations.py +0 -0
  142. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_upgrade_recipes.py +0 -0
  143. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/tests/test_upgrade_to_pydantic.py +0 -0
  144. {openrewrite_migrate_python-0.14.0.dev20260830170445 → openrewrite_migrate_python-0.14.0.dev20260901133827}/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.14.0.dev20260830170445
3
+ Version: 0.14.0.dev20260901133827
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.14.0.dev20260830170445" # Updated dynamically during release
8
+ version = "0.14.0.dev20260901133827" # 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"
@@ -72,6 +72,16 @@ def _get_fstring_delimiter(value_source: str) -> Optional[str]:
72
72
  return None
73
73
 
74
74
 
75
+ def _interpolates_string_literal(expr: Any) -> bool:
76
+ """Whether substituting ``expr`` would nest a string literal inside the f-string.
77
+
78
+ Reusing the outer quote inside a replacement field is PEP 701, so the result needs
79
+ 3.12 -- newer than the 3.8 target these recipes first run for.
80
+ """
81
+ value = expr.value if isinstance(expr, NamedArgument) else expr
82
+ return _is_string_literal(value)
83
+
84
+
75
85
  def _is_side_effect_free(expr: Any) -> bool:
76
86
  """Check if an expression is safe to duplicate (no side effects)."""
77
87
  return isinstance(expr, (Identifier, Literal, FieldAccess))
@@ -124,6 +134,9 @@ def _convert_format_to_fstring(method: MethodInvocation) -> Optional[FormattedSt
124
134
  if isinstance(arg, Star):
125
135
  return None
126
136
 
137
+ if any(_interpolates_string_literal(arg) for arg in raw_args):
138
+ return None
139
+
127
140
  # Parse format string
128
141
  try:
129
142
  parsed = list(_string_module.Formatter().parse(format_string))
@@ -410,6 +423,9 @@ def _convert_percent_to_fstring(binary: Binary) -> Optional[FormattedString]:
410
423
  if len(args) != spec_count:
411
424
  return None
412
425
 
426
+ if any(_interpolates_string_literal(arg) for arg in args):
427
+ return None
428
+
413
429
  # Build f-string parts
414
430
  parts: List[Expression] = []
415
431
  arg_index = 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrewrite-migrate-python
3
- Version: 0.14.0.dev20260830170445
3
+ Version: 0.14.0.dev20260901133827
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
@@ -185,6 +185,24 @@ class TestReplaceStrFormatWithFString:
185
185
  )
186
186
  )
187
187
 
188
+ def test_no_change_string_literal_argument(self):
189
+ """'{}'.format("a") — a literal argument would nest quotes, no change."""
190
+ spec = RecipeSpec(recipe=ReplaceStrFormatWithFString())
191
+ spec.rewrite_run(
192
+ python(
193
+ """
194
+ url = "http://{}:{}".format("host", "80")
195
+ """
196
+ )
197
+ )
198
+ spec.rewrite_run(
199
+ python(
200
+ """
201
+ label = "{} = {}".format(name, "literal")
202
+ """
203
+ )
204
+ )
205
+
188
206
  def test_no_change_repeated_side_effect(self):
189
207
  """'{0} {0}'.format(func()) — repeated + side effect, no change."""
190
208
  spec = RecipeSpec(recipe=ReplaceStrFormatWithFString())
@@ -322,6 +340,17 @@ class TestReplacePercentFormatWithFString:
322
340
  )
323
341
  )
324
342
 
343
+ def test_no_change_string_literal_argument(self):
344
+ """'%s' % ("a",) — a literal argument would nest quotes, no change."""
345
+ spec = RecipeSpec(recipe=ReplacePercentFormatWithFString())
346
+ spec.rewrite_run(
347
+ python(
348
+ """
349
+ pair = "%s=%s" % ("key", "value")
350
+ """
351
+ )
352
+ )
353
+
325
354
  def test_no_change_unsupported_specifier(self):
326
355
  """'%d' % x — unsupported specifier, no change."""
327
356
  spec = RecipeSpec(recipe=ReplacePercentFormatWithFString())