openrewrite-migrate-python 0.17.0.dev20261015170646__tar.gz → 0.17.0.dev20261016170653__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 (196) hide show
  1. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/PKG-INFO +1 -1
  2. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/pyproject.toml +1 -1
  3. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +12 -14
  4. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
  5. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_typing_union_to_pipe.py +68 -0
  6. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/setup.cfg +0 -0
  7. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/__init__.py +0 -0
  8. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/__init__.py +0 -0
  9. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/_literals.py +0 -0
  10. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/assign_return.py +0 -0
  11. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/attr_access.py +0 -0
  12. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/boolean_simplification.py +0 -0
  13. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/collection_literals.py +0 -0
  14. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/comparison_simplification.py +0 -0
  15. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/complex_transforms.py +0 -0
  16. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/comprehension_cleanup.py +0 -0
  17. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/conditionals.py +0 -0
  18. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/datetime_cleanup.py +0 -0
  19. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/dict_cleanup.py +0 -0
  20. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/exception_cleanup.py +0 -0
  21. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/expression_simplification.py +0 -0
  22. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/logger_warn.py +0 -0
  23. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/loop_cleanup.py +0 -0
  24. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/merge_nested_with.py +0 -0
  25. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/merge_startswith_endswith.py +0 -0
  26. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/naming_conventions.py +0 -0
  27. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/negated_operators.py +0 -0
  28. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/none_and_identity.py +0 -0
  29. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/object_inheritance.py +0 -0
  30. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/pandas_cleanup.py +0 -0
  31. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/python_best_practices.py +0 -0
  32. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/range_cleanup.py +0 -0
  33. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/redundant_code.py +0 -0
  34. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/remove_trailing_return_none.py +0 -0
  35. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/string_cleanup.py +0 -0
  36. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/unreachable_code.py +0 -0
  37. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/use_items.py +0 -0
  38. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/use_list_clear.py +0 -0
  39. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/cleanup/yoda_conditions.py +0 -0
  40. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
  41. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/_reindent.py +0 -0
  42. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
  43. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/_side_effects.py +0 -0
  44. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/_trivia.py +0 -0
  45. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/_truth_value.py +0 -0
  46. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
  47. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
  48. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/code_quality.py +0 -0
  49. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
  50. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/find_suspicious_chained_comparison.py +0 -0
  51. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
  52. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
  53. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
  54. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
  55. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
  56. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
  57. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/__init__.py +0 -0
  58. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
  59. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/_decorators.py +0 -0
  60. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/_langchain_tables.py +0 -0
  61. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
  62. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/_method_renames.py +0 -0
  63. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/_module_imports.py +0 -0
  64. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/_slots.py +0 -0
  65. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
  66. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
  67. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
  68. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
  69. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
  70. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/avro_migrations.py +0 -0
  71. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/backoff_to_tenacity.py +0 -0
  72. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
  73. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
  74. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
  75. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
  76. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
  77. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
  78. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
  79. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
  80. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
  81. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
  82. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
  83. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
  84. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
  85. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
  86. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
  87. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
  88. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
  89. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
  90. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
  91. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
  92. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
  93. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
  94. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
  95. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
  96. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
  97. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
  98. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
  99. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/pydantic_deprecations.py +0 -0
  100. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/pydantic_fields.py +0 -0
  101. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/pydantic_model_fields.py +0 -0
  102. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
  103. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
  104. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
  105. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
  106. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
  107. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/string_formatting.py +0 -0
  108. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
  109. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -0
  110. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
  111. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
  112. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
  113. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
  114. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
  115. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
  116. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +0 -0
  117. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
  118. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
  119. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
  120. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_pandas.py +0 -0
  121. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_pydantic.py +0 -0
  122. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
  123. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
  124. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
  125. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
  126. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
  127. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
  128. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
  129. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
  130. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
  131. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
  132. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
  133. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +0 -0
  134. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
  135. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
  136. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
  137. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
  138. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_aifc_migrations.py +0 -0
  139. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_array_deprecations.py +0 -0
  140. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_ast_deprecations.py +0 -0
  141. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_asyncio_coroutine_to_async.py +0 -0
  142. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_asyncio_deprecations.py +0 -0
  143. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_avro_migrations.py +0 -0
  144. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_backoff_to_tenacity.py +0 -0
  145. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_calendar_deprecations.py +0 -0
  146. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_cgi_parse_deprecations.py +0 -0
  147. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_change_import_recipes.py +0 -0
  148. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_collections_abc_migrations.py +0 -0
  149. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_configparser_deprecations.py +0 -0
  150. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_datetime_utc.py +0 -0
  151. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_distutils_deprecations.py +0 -0
  152. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_distutils_migrations.py +0 -0
  153. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_functools_deprecations.py +0 -0
  154. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_future_imports.py +0 -0
  155. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_gettext_deprecations.py +0 -0
  156. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_html_parser_deprecations.py +0 -0
  157. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_imp_migrations.py +0 -0
  158. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_langchain_classic_imports.py +0 -0
  159. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_langchain_community_imports.py +0 -0
  160. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_langchain_provider_imports.py +0 -0
  161. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_locale_deprecations.py +0 -0
  162. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
  163. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_macpath_deprecations.py +0 -0
  164. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_mailcap_migrations.py +0 -0
  165. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_markers.py +0 -0
  166. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_os_deprecations.py +0 -0
  167. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_pathlib_deprecations.py +0 -0
  168. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_pep594_migrations.py +0 -0
  169. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_pep594_system_migrations.py +0 -0
  170. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_pkgutil_deprecations.py +0 -0
  171. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_platform_deprecations.py +0 -0
  172. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_pydantic_deprecations.py +0 -0
  173. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_pydantic_fields.py +0 -0
  174. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_pydantic_model_fields.py +0 -0
  175. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_re_deprecations.py +0 -0
  176. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_removed_modules_312.py +0 -0
  177. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_shutil_deprecations.py +0 -0
  178. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_socket_deprecations.py +0 -0
  179. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_ssl_deprecations.py +0 -0
  180. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_string_formatting.py +0 -0
  181. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_sys_deprecations.py +0 -0
  182. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_sys_last_deprecations.py +0 -0
  183. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_tarfile_deprecations.py +0 -0
  184. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_tempfile_deprecations.py +0 -0
  185. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_threading_deprecations.py +0 -0
  186. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_threading_extended.py +0 -0
  187. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_threading_is_alive_deprecation.py +0 -0
  188. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_typing_alias_moves.py +0 -0
  189. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_typing_callable.py +0 -0
  190. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_typing_deprecations.py +0 -0
  191. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_unittest_deprecations.py +0 -0
  192. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_upgrade_recipes.py +0 -0
  193. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_upgrade_to_pydantic.py +0 -0
  194. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_urllib_deprecations.py +0 -0
  195. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/tests/test_xdrlib_migrations.py +0 -0
  196. {openrewrite_migrate_python-0.17.0.dev20261015170646 → openrewrite_migrate_python-0.17.0.dev20261016170653}/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.17.0.dev20261015170646
3
+ Version: 0.17.0.dev20261016170653
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.17.0.dev20261015170646" # Updated dynamically during release
8
+ version = "0.17.0.dev20261016170653" # 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"
@@ -10,7 +10,7 @@ PEP 604 (Python 3.10+) introduced the `X | Y` syntax for union types:
10
10
  See: https://peps.python.org/pep-0604/
11
11
  """
12
12
 
13
- from typing import Any, List, Optional, Sequence, Set
13
+ from typing import Any, List, Sequence, Set
14
14
 
15
15
  from rewrite import Cursor, ExecutionContext, Preconditions, Recipe, TreeVisitor
16
16
  from rewrite.category import CategoryDescriptor
@@ -105,13 +105,11 @@ def _create_none_literal(prefix: Space) -> Literal:
105
105
  )
106
106
 
107
107
 
108
- def _create_union_type(
109
- types: List[Expression], prefix: Space, type_: Optional[JavaType]
110
- ) -> UnionType:
111
- """Create a UnionType node (X | Y | Z).
108
+ def _create_union_type(types: List[Expression], replaced: Expression) -> UnionType:
109
+ """A UnionType (X | Y | Z) in place of the subscript `replaced`.
112
110
 
113
- The UnionType node represents the PEP 604 union syntax.
114
- Each type in the list is separated by ' | '.
111
+ It takes over the subscript's prefix, type and markers, so a `Quoted`
112
+ subscript keeps its quotes.
115
113
  """
116
114
  # Create JRightPadded list with ' | ' after each type except the last
117
115
  padded_types = []
@@ -137,10 +135,10 @@ def _create_union_type(
137
135
 
138
136
  return UnionType(
139
137
  _id=random_id(),
140
- _prefix=prefix,
141
- _markers=Markers.EMPTY,
138
+ _prefix=replaced.prefix,
139
+ _markers=replaced.markers,
142
140
  _types=padded_types,
143
- _type=type_,
141
+ _type=replaced.type,
144
142
  )
145
143
 
146
144
 
@@ -211,7 +209,7 @@ class ReplaceTypingOptionalWithUnion(Recipe):
211
209
 
212
210
  # Create X | None using UnionType
213
211
  none_literal = _create_none_literal(Space.EMPTY)
214
- return _create_union_type([type_arg, none_literal], param_type.prefix, param_type.type)
212
+ return _create_union_type([type_arg, none_literal], param_type)
215
213
 
216
214
  def visit_array_access(
217
215
  self, array_access: ArrayAccess, p: ExecutionContext
@@ -238,7 +236,7 @@ class ReplaceTypingOptionalWithUnion(Recipe):
238
236
 
239
237
  # Create X | None using UnionType
240
238
  none_literal = _create_none_literal(Space.EMPTY)
241
- return _create_union_type([index, none_literal], array_access.prefix, array_access.type)
239
+ return _create_union_type([index, none_literal], array_access)
242
240
 
243
241
  return Preconditions.check(uses_import("typing"), Visitor())
244
242
 
@@ -308,7 +306,7 @@ class ReplaceTypingUnionWithPipe(Recipe):
308
306
  self._remove_source_import(param_type.clazz, "Union")
309
307
 
310
308
  # Create union type with all type parameters
311
- return _create_union_type(list(type_params), param_type.prefix, param_type.type)
309
+ return _create_union_type(list(type_params), param_type)
312
310
 
313
311
  def visit_array_access(
314
312
  self, array_access: ArrayAccess, p: ExecutionContext
@@ -340,6 +338,6 @@ class ReplaceTypingUnionWithPipe(Recipe):
340
338
  self._remove_source_import(array_access.indexed, "Union")
341
339
 
342
340
  # Create union type with all elements
343
- return _create_union_type(elements, array_access.prefix, array_access.type)
341
+ return _create_union_type(elements, array_access)
344
342
 
345
343
  return Preconditions.check(uses_import("typing"), Visitor())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrewrite-migrate-python
3
- Version: 0.17.0.dev20261015170646
3
+ Version: 0.17.0.dev20261016170653
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
@@ -1,5 +1,6 @@
1
1
  """Tests for typing.Optional and typing.Union to PEP 604 migration recipes."""
2
2
 
3
+ from rewrite import InMemoryExecutionContext, InMemoryLargeSourceSet, Recipe
3
4
  from rewrite.python.visitor import PythonVisitor
4
5
  from rewrite.test import RecipeSpec, python
5
6
  from openrewrite_migrate_python.migrate.typing_union_to_pipe import (
@@ -8,6 +9,18 @@ from openrewrite_migrate_python.migrate.typing_union_to_pipe import (
8
9
  )
9
10
 
10
11
 
12
+ def _assert_idempotent(recipe: Recipe):
13
+ """Return an after_recipe callback that asserts running the recipe again produces no change."""
14
+ def check(source_file):
15
+ for r in recipe.run(InMemoryLargeSourceSet([source_file]), InMemoryExecutionContext()):
16
+ if r._after is not None and r._after is not r._before:
17
+ assert False, (
18
+ f"Recipe is not idempotent. A second run changed\n"
19
+ f"{source_file.print_all()!r}\ninto\n{r._after.print_all()!r}"
20
+ )
21
+ return check
22
+
23
+
11
24
  def _assert_built_nodes_typed(source_file):
12
25
  """``after_recipe`` hook: fail on a node the recipe left untyped, which a parse types."""
13
26
  untyped = []
@@ -450,3 +463,58 @@ class TestTypeCheckingBlocks:
450
463
  """,
451
464
  )
452
465
  )
466
+
467
+
468
+ class TestQuotedAnnotations:
469
+ """A quoted annotation parses to type nodes marked `Quoted`, which print the quotes back."""
470
+
471
+ def test_rewrites_quoted_optional(self):
472
+ recipe = ReplaceTypingOptionalWithUnion()
473
+ spec = RecipeSpec(recipe=recipe)
474
+ spec.rewrite_run(
475
+ python(
476
+ """
477
+ import typing
478
+ from typing import Dict, Optional
479
+ a: "Optional[int]" = None
480
+ b: "Dict[str, Optional[int]]" = {}
481
+ c: "typing.Optional[int]" = None
482
+ """,
483
+ """
484
+ from typing import Dict
485
+ a: "int | None" = None
486
+ b: "Dict[str, int | None]" = {}
487
+ c: "int | None" = None
488
+ """,
489
+ after_recipe=_assert_idempotent(recipe),
490
+ )
491
+ )
492
+
493
+ def test_rewrites_quoted_union(self):
494
+ spec = RecipeSpec(recipe=ReplaceTypingUnionWithPipe())
495
+ spec.rewrite_run(
496
+ python(
497
+ """
498
+ from typing import Union
499
+ a: "Union[int, str, bytes]" = 1
500
+ """,
501
+ """
502
+ a: "int | str | bytes" = 1
503
+ """,
504
+ )
505
+ )
506
+
507
+ def test_treats_quoted_annotated_metadata_as_data_not_a_type(self):
508
+ spec = RecipeSpec(recipe=ReplaceTypingOptionalWithUnion())
509
+ spec.rewrite_run(
510
+ python(
511
+ """
512
+ from typing import Annotated, Optional
513
+ x: Annotated["Optional[int]", "Optional[str]"] = None
514
+ """,
515
+ """
516
+ from typing import Annotated
517
+ x: Annotated["int | None", "Optional[str]"] = None
518
+ """,
519
+ )
520
+ )