openrewrite-migrate-python 0.16.0.dev20260925124012__tar.gz → 0.16.0.dev20260926165430__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.
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/pyproject.toml +1 -1
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/string_formatting.py +27 -26
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_string_formatting.py +48 -13
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/setup.cfg +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/_reindent.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/_trivia.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/find_suspicious_chained_comparison.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/_from_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/_import_hygiene.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/_langchain_tables.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/_slots.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/_typing_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/avro_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/pydantic_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/pydantic_fields.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/pydantic_model_fields.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_pydantic.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_avro_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_change_import_recipes.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_distutils_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_functools_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_future_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_mailcap_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_markers.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_pathlib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_pep594_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_pydantic_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_pydantic_fields.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_pydantic_model_fields.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_socket_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_tempfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_threading_extended.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_typing_alias_moves.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_typing_callable.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_typing_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_upgrade_recipes.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_upgrade_to_pydantic.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_urllib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/tests/test_xdrlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.16.0.dev20260925124012 → openrewrite_migrate_python-0.16.0.dev20260926165430}/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.
|
|
3
|
+
Version: 0.16.0.dev20260926165430
|
|
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.
|
|
8
|
+
version = "0.16.0.dev20260926165430" # 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"
|
|
@@ -21,10 +21,9 @@ from rewrite.markers import Markers
|
|
|
21
21
|
from rewrite.python.visitor import PythonVisitor
|
|
22
22
|
from rewrite.java.support_types import JRightPadded, Space
|
|
23
23
|
from rewrite.java.tree import Binary, Expression, FieldAccess, Identifier, J, Literal, MethodInvocation, Parentheses
|
|
24
|
+
from rewrite.python.printer import PrintOutputCapture, PythonPrinter
|
|
24
25
|
from rewrite.python.tree import (
|
|
25
26
|
CollectionLiteral,
|
|
26
|
-
ComprehensionExpression,
|
|
27
|
-
DictLiteral,
|
|
28
27
|
FormattedString,
|
|
29
28
|
NamedArgument,
|
|
30
29
|
Star,
|
|
@@ -74,17 +73,6 @@ def _get_fstring_delimiter(value_source: str) -> Optional[str]:
|
|
|
74
73
|
return 'f' + quote if quote else None
|
|
75
74
|
|
|
76
75
|
|
|
77
|
-
def _opens_with_brace(expr: Any) -> bool:
|
|
78
|
-
"""Whether ``expr`` prints with a leading ``{`` that the field's own brace makes into ``{{``."""
|
|
79
|
-
if isinstance(expr, DictLiteral):
|
|
80
|
-
return True
|
|
81
|
-
if isinstance(expr, CollectionLiteral):
|
|
82
|
-
return expr.kind == CollectionLiteral.Kind.SET
|
|
83
|
-
if isinstance(expr, ComprehensionExpression):
|
|
84
|
-
return expr.kind in (ComprehensionExpression.Kind.SET, ComprehensionExpression.Kind.DICT)
|
|
85
|
-
return False
|
|
86
|
-
|
|
87
|
-
|
|
88
76
|
def _breaks_replacement_field(expr: Any, quote: str) -> bool:
|
|
89
77
|
"""Whether ``expr`` holds anything a replacement field cannot carry.
|
|
90
78
|
|
|
@@ -124,11 +112,11 @@ def _unsafe_to_interpolate(expr: Any, delimiter: str) -> bool:
|
|
|
124
112
|
"""Whether substituting ``expr`` into a replacement field spoils the f-string.
|
|
125
113
|
|
|
126
114
|
A literal argument nests a string in a string, a rewrite worth declining however it
|
|
127
|
-
is quoted.
|
|
128
|
-
recipes run for -- cannot parse the result.
|
|
115
|
+
is quoted. Other expressions are declined only where 3.8 -- the earliest target
|
|
116
|
+
these recipes run for -- cannot parse the result.
|
|
129
117
|
"""
|
|
130
118
|
value = expr.value if isinstance(expr, NamedArgument) else expr
|
|
131
|
-
if
|
|
119
|
+
if _is_string_literal(value):
|
|
132
120
|
return True
|
|
133
121
|
return _breaks_replacement_field(value, delimiter[1:])
|
|
134
122
|
|
|
@@ -151,6 +139,23 @@ def _has_backslash(value_source: str) -> bool:
|
|
|
151
139
|
return '\\' in content
|
|
152
140
|
|
|
153
141
|
|
|
142
|
+
def _field_expression(arg_expr: Expression, delimiter: str) -> Optional[JRightPadded]:
|
|
143
|
+
"""The argument as a replacement field, or None when it cannot sit inside this f-string."""
|
|
144
|
+
expr = arg_expr.replace(_prefix=Space.EMPTY)
|
|
145
|
+
source = PythonPrinter().print(expr, PrintOutputCapture(None))
|
|
146
|
+
# Only legal in a replacement field from 3.12 (PEP 701)
|
|
147
|
+
if any(c in source for c in (delimiter[1], '\\', '#', '\n')):
|
|
148
|
+
return None
|
|
149
|
+
# A leading or trailing brace would fuse with the field's own and read as an escaped brace
|
|
150
|
+
if source.startswith('{'):
|
|
151
|
+
expr = expr.replace(_prefix=Space.SINGLE_SPACE)
|
|
152
|
+
return JRightPadded(
|
|
153
|
+
_element=expr,
|
|
154
|
+
_after=Space.SINGLE_SPACE if source.endswith('}') else Space.EMPTY,
|
|
155
|
+
_markers=Markers.EMPTY,
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
|
|
154
159
|
def _convert_format_to_fstring(method: MethodInvocation) -> Optional[FormattedString]:
|
|
155
160
|
"""Convert a ``"...".format(...)`` MethodInvocation to a FormattedString.
|
|
156
161
|
|
|
@@ -267,11 +272,9 @@ def _convert_format_to_fstring(method: MethodInvocation) -> Optional[FormattedSt
|
|
|
267
272
|
return None
|
|
268
273
|
arg_expr = named_args[field_name]
|
|
269
274
|
|
|
270
|
-
padded_expr =
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
_markers=Markers.EMPTY,
|
|
274
|
-
)
|
|
275
|
+
padded_expr = _field_expression(arg_expr, delimiter)
|
|
276
|
+
if padded_expr is None:
|
|
277
|
+
return None
|
|
275
278
|
|
|
276
279
|
# Map conversion flag
|
|
277
280
|
conversion_enum = None
|
|
@@ -498,11 +501,9 @@ def _convert_percent_to_fstring(binary: Binary) -> Optional[FormattedString]:
|
|
|
498
501
|
arg_expr = args[arg_index]
|
|
499
502
|
arg_index += 1
|
|
500
503
|
|
|
501
|
-
padded_expr =
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
_markers=Markers.EMPTY,
|
|
505
|
-
)
|
|
504
|
+
padded_expr = _field_expression(arg_expr, delimiter)
|
|
505
|
+
if padded_expr is None:
|
|
506
|
+
return None
|
|
506
507
|
|
|
507
508
|
conversion_enum = None
|
|
508
509
|
if part_value == 'r':
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrewrite-migrate-python
|
|
3
|
-
Version: 0.16.0.
|
|
3
|
+
Version: 0.16.0.dev20260926165430
|
|
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
|
|
@@ -249,6 +249,31 @@ class TestReplaceStrFormatWithFString:
|
|
|
249
249
|
)
|
|
250
250
|
)
|
|
251
251
|
|
|
252
|
+
def test_set_literal_argument_is_spaced_from_the_field_braces(self):
|
|
253
|
+
"""A brace of the argument's own must not fuse with the field's into an escaped brace."""
|
|
254
|
+
spec = RecipeSpec(recipe=ReplaceStrFormatWithFString())
|
|
255
|
+
spec.rewrite_run(
|
|
256
|
+
python(
|
|
257
|
+
"""
|
|
258
|
+
message = "{} outside {} block".format(op, {'for', 'while'})
|
|
259
|
+
""",
|
|
260
|
+
"""
|
|
261
|
+
message = f"{op} outside { {'for', 'while'} } block"
|
|
262
|
+
""",
|
|
263
|
+
)
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
def test_no_change_argument_contains_the_delimiter_quote(self):
|
|
267
|
+
"""The quote is only legal inside a replacement field from 3.12."""
|
|
268
|
+
spec = RecipeSpec(recipe=ReplaceStrFormatWithFString())
|
|
269
|
+
spec.rewrite_run(
|
|
270
|
+
python(
|
|
271
|
+
"""
|
|
272
|
+
message = "{} outside {} block".format(op, {"for", "while"})
|
|
273
|
+
""",
|
|
274
|
+
)
|
|
275
|
+
)
|
|
276
|
+
|
|
252
277
|
def test_no_change_backslash_in_string(self):
|
|
253
278
|
"""'hello\\n{}'.format(name) — backslash escape, no change."""
|
|
254
279
|
spec = RecipeSpec(recipe=ReplaceStrFormatWithFString())
|
|
@@ -326,19 +351,6 @@ class TestReplaceStrFormatWithFString:
|
|
|
326
351
|
)
|
|
327
352
|
)
|
|
328
353
|
|
|
329
|
-
def test_no_change_brace_opening_argument(self):
|
|
330
|
-
"""A brace-opening argument's own brace would read as an escaped `{{`."""
|
|
331
|
-
spec = RecipeSpec(recipe=ReplaceStrFormatWithFString())
|
|
332
|
-
spec.rewrite_run(
|
|
333
|
-
python(
|
|
334
|
-
"""
|
|
335
|
-
keywords = "{}".format({1, 2})
|
|
336
|
-
mapping = "{}".format({1: 2})
|
|
337
|
-
squares = "{}".format({n: n * n for n in sizes})
|
|
338
|
-
"""
|
|
339
|
-
)
|
|
340
|
-
)
|
|
341
|
-
|
|
342
354
|
def test_idempotent(self):
|
|
343
355
|
"""Running the recipe twice produces the same result."""
|
|
344
356
|
recipe = ReplaceStrFormatWithFString()
|
|
@@ -485,6 +497,29 @@ class TestReplacePercentFormatWithFString:
|
|
|
485
497
|
)
|
|
486
498
|
)
|
|
487
499
|
|
|
500
|
+
def test_dict_literal_argument_is_spaced_from_the_field_braces(self):
|
|
501
|
+
spec = RecipeSpec(recipe=ReplacePercentFormatWithFString())
|
|
502
|
+
spec.rewrite_run(
|
|
503
|
+
python(
|
|
504
|
+
"""
|
|
505
|
+
message = "config: %s" % ({'a': 1},)
|
|
506
|
+
""",
|
|
507
|
+
"""
|
|
508
|
+
message = f"config: { {'a': 1} }"
|
|
509
|
+
""",
|
|
510
|
+
)
|
|
511
|
+
)
|
|
512
|
+
|
|
513
|
+
def test_no_change_argument_contains_the_delimiter_quote(self):
|
|
514
|
+
spec = RecipeSpec(recipe=ReplacePercentFormatWithFString())
|
|
515
|
+
spec.rewrite_run(
|
|
516
|
+
python(
|
|
517
|
+
"""
|
|
518
|
+
message = "name: %s" % d["name"]
|
|
519
|
+
""",
|
|
520
|
+
)
|
|
521
|
+
)
|
|
522
|
+
|
|
488
523
|
def test_no_change_backslash(self):
|
|
489
524
|
r"""'%s\n' % x — backslash in string, no change."""
|
|
490
525
|
spec = RecipeSpec(recipe=ReplacePercentFormatWithFString())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|