openrewrite-migrate-python 0.14.0.dev20260903170551__tar.gz → 0.14.0.dev20260903174925__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.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/pyproject.toml +1 -1
- openrewrite_migrate_python-0.14.0.dev20260903174925/src/openrewrite_migrate_python/migrate/_slots.py +14 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +37 -25
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/string_formatting.py +4 -2
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +1 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_asyncio_coroutine_to_async.py +52 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_string_formatting.py +20 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/setup.cfg +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/_reindent.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/_trivia.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/find_suspicious_chained_comparison.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/_from_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/_import_hygiene.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/_langchain_tables.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/_typing_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/avro_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/pydantic_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/pydantic_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/pydantic_model_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_pydantic.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_avro_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_change_import_recipes.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_future_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_pep594_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_pydantic_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_pydantic_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_pydantic_model_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_threading_extended.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_typing_alias_moves.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_typing_callable.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_typing_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_upgrade_recipes.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/tests/test_upgrade_to_pydantic.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260903170551 → openrewrite_migrate_python-0.14.0.dev20260903174925}/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.
|
|
3
|
+
Version: 0.14.0.dev20260903174925
|
|
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.
|
|
8
|
+
version = "0.14.0.dev20260903174925" # 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"
|
openrewrite_migrate_python-0.14.0.dev20260903174925/src/openrewrite_migrate_python/migrate/_slots.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""Keeping a replacement node in the slot kind its original occupied."""
|
|
2
|
+
|
|
3
|
+
from rewrite import Cursor
|
|
4
|
+
from rewrite.java.tree import Block, Expression, J
|
|
5
|
+
from rewrite.python.tree import CompilationUnit, ExpressionStatement
|
|
6
|
+
from rewrite.utils import random_id
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def as_slot_of(cursor: Cursor, expression: Expression) -> J:
|
|
10
|
+
"""Wrap ``expression`` as an ``ExpressionStatement`` when the tree at
|
|
11
|
+
``cursor`` is its own statement, so the replacement stays a Statement."""
|
|
12
|
+
if isinstance(cursor.parent_tree_cursor().value, (Block, CompilationUnit)):
|
|
13
|
+
return ExpressionStatement(random_id(), expression)
|
|
14
|
+
return expression
|
|
@@ -27,11 +27,13 @@ from rewrite.marketplace import Python
|
|
|
27
27
|
from rewrite.python.preconditions import uses_import
|
|
28
28
|
from rewrite.markers import Markers
|
|
29
29
|
from rewrite.python.visitor import PythonVisitor
|
|
30
|
-
from rewrite.python.tree import Await, YieldFrom
|
|
30
|
+
from rewrite.python.tree import Await, StatementExpression, YieldFrom
|
|
31
31
|
from rewrite.java.tree import (
|
|
32
32
|
Annotation,
|
|
33
33
|
FieldAccess,
|
|
34
34
|
Identifier,
|
|
35
|
+
J,
|
|
36
|
+
Lambda,
|
|
35
37
|
MethodDeclaration,
|
|
36
38
|
Modifier,
|
|
37
39
|
Space,
|
|
@@ -39,6 +41,8 @@ from rewrite.java.tree import (
|
|
|
39
41
|
)
|
|
40
42
|
from rewrite.utils import random_id
|
|
41
43
|
|
|
44
|
+
from ._slots import as_slot_of
|
|
45
|
+
|
|
42
46
|
# Define category path: Python > Migrate > Python 3.11
|
|
43
47
|
_Python311 = [
|
|
44
48
|
*Python,
|
|
@@ -127,33 +131,41 @@ def _add_async_modifier(method: MethodDeclaration, has_remaining_decorators: boo
|
|
|
127
131
|
|
|
128
132
|
|
|
129
133
|
class _YieldFromToAwaitVisitor(PythonVisitor[ExecutionContext]):
|
|
130
|
-
"""
|
|
131
|
-
|
|
132
|
-
In Python's AST, 'yield from expr' is represented as:
|
|
133
|
-
J.Yield(value=Py.YieldFrom(expression=expr))
|
|
134
|
+
"""Replaces ``yield from expr`` with ``await expr``.
|
|
134
135
|
|
|
135
|
-
|
|
136
|
+
The parser represents ``yield from expr`` as
|
|
137
|
+
``StatementExpression(Yield(YieldFrom(expr)))`` whether it is used as an
|
|
138
|
+
expression or as its own statement, so the wrapper is the node to replace.
|
|
136
139
|
"""
|
|
137
140
|
|
|
138
|
-
def
|
|
139
|
-
self,
|
|
140
|
-
) -> Optional[
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
141
|
+
def visit_statement_expression(
|
|
142
|
+
self, stmt_expr: StatementExpression, p: ExecutionContext
|
|
143
|
+
) -> Optional[J]:
|
|
144
|
+
stmt_expr = super().visit_statement_expression(stmt_expr, p)
|
|
145
|
+
if not isinstance(stmt_expr, StatementExpression):
|
|
146
|
+
return stmt_expr
|
|
147
|
+
|
|
148
|
+
yield_stmt = stmt_expr.statement
|
|
149
|
+
if not isinstance(yield_stmt, Yield) or not isinstance(yield_stmt.value, YieldFrom):
|
|
150
|
+
return stmt_expr
|
|
151
|
+
|
|
152
|
+
yield_from = yield_stmt.value
|
|
153
|
+
await_ = Await(
|
|
154
|
+
_id=random_id(),
|
|
155
|
+
_prefix=yield_stmt.prefix,
|
|
156
|
+
_markers=yield_stmt.markers,
|
|
157
|
+
_expression=yield_from.expression,
|
|
158
|
+
_type=yield_from.type,
|
|
159
|
+
)
|
|
160
|
+
return as_slot_of(self.cursor, await_)
|
|
161
|
+
|
|
162
|
+
# Started on the migrated function's body block, so any def or lambda met
|
|
163
|
+
# here is a nested function whose ``yield from`` must stay.
|
|
164
|
+
def visit_method_declaration(self, method: MethodDeclaration, p: ExecutionContext) -> J:
|
|
165
|
+
return method
|
|
166
|
+
|
|
167
|
+
def visit_lambda(self, lambda_: Lambda, p: ExecutionContext) -> J:
|
|
168
|
+
return lambda_
|
|
157
169
|
|
|
158
170
|
|
|
159
171
|
@categorize(_Python311)
|
|
@@ -31,6 +31,8 @@ from rewrite.python.tree import (
|
|
|
31
31
|
)
|
|
32
32
|
from rewrite.utils import random_id
|
|
33
33
|
|
|
34
|
+
from ._slots import as_slot_of
|
|
35
|
+
|
|
34
36
|
# Define category path: Python > Migrate > Python 3.6
|
|
35
37
|
_Python36 = [
|
|
36
38
|
*Python,
|
|
@@ -354,7 +356,7 @@ class ReplaceStrFormatWithFString(Recipe):
|
|
|
354
356
|
class Visitor(PythonVisitor[ExecutionContext]):
|
|
355
357
|
def visit_method_invocation(
|
|
356
358
|
self, method: MethodInvocation, p: ExecutionContext
|
|
357
|
-
) -> Optional[
|
|
359
|
+
) -> Optional[J]:
|
|
358
360
|
method = super().visit_method_invocation(method, p)
|
|
359
361
|
|
|
360
362
|
if not isinstance(method, MethodInvocation):
|
|
@@ -373,7 +375,7 @@ class ReplaceStrFormatWithFString(Recipe):
|
|
|
373
375
|
|
|
374
376
|
result = _convert_format_to_fstring(method)
|
|
375
377
|
if result is not None:
|
|
376
|
-
return result
|
|
378
|
+
return as_slot_of(self.cursor, result)
|
|
377
379
|
|
|
378
380
|
return method
|
|
379
381
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrewrite-migrate-python
|
|
3
|
-
Version: 0.14.0.
|
|
3
|
+
Version: 0.14.0.dev20260903174925
|
|
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
|
|
@@ -26,6 +26,7 @@ src/openrewrite_migrate_python/migrate/_from_imports.py
|
|
|
26
26
|
src/openrewrite_migrate_python/migrate/_import_hygiene.py
|
|
27
27
|
src/openrewrite_migrate_python/migrate/_langchain_tables.py
|
|
28
28
|
src/openrewrite_migrate_python/migrate/_markers.py
|
|
29
|
+
src/openrewrite_migrate_python/migrate/_slots.py
|
|
29
30
|
src/openrewrite_migrate_python/migrate/_typing_imports.py
|
|
30
31
|
src/openrewrite_migrate_python/migrate/aifc_migrations.py
|
|
31
32
|
src/openrewrite_migrate_python/migrate/array_deprecations.py
|
|
@@ -4,10 +4,35 @@ from rewrite.test import RecipeSpec, python
|
|
|
4
4
|
from openrewrite_migrate_python.migrate.asyncio_coroutine_to_async import (
|
|
5
5
|
MigrateAsyncioCoroutine,
|
|
6
6
|
)
|
|
7
|
+
from tests.tree_checks import assert_statement_slots_hold_statements
|
|
7
8
|
|
|
8
9
|
class TestMigrateAsyncioCoroutine:
|
|
9
10
|
"""Tests for the MigrateAsyncioCoroutine recipe."""
|
|
10
11
|
|
|
12
|
+
def test_await_lands_in_the_slot_its_yield_from_occupied(self):
|
|
13
|
+
"""A statement-level `yield from` becomes an `await` statement; an expression-level one a bare `await`."""
|
|
14
|
+
spec = RecipeSpec(recipe=MigrateAsyncioCoroutine())
|
|
15
|
+
spec.rewrite_run(
|
|
16
|
+
python(
|
|
17
|
+
"""
|
|
18
|
+
import asyncio
|
|
19
|
+
|
|
20
|
+
@asyncio.coroutine
|
|
21
|
+
def run():
|
|
22
|
+
yield from step()
|
|
23
|
+
result = yield from step()
|
|
24
|
+
""",
|
|
25
|
+
"""
|
|
26
|
+
import asyncio
|
|
27
|
+
|
|
28
|
+
async def run():
|
|
29
|
+
await step()
|
|
30
|
+
result = await step()
|
|
31
|
+
""",
|
|
32
|
+
after_recipe=assert_statement_slots_hold_statements,
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
|
|
11
36
|
def test_migrates_simple_coroutine(self):
|
|
12
37
|
"""Test migration of a simple @asyncio.coroutine function."""
|
|
13
38
|
spec = RecipeSpec(recipe=MigrateAsyncioCoroutine())
|
|
@@ -130,3 +155,30 @@ class TestMigrateAsyncioCoroutine:
|
|
|
130
155
|
""",
|
|
131
156
|
)
|
|
132
157
|
)
|
|
158
|
+
|
|
159
|
+
def test_leaves_yield_from_in_nested_def_alone(self):
|
|
160
|
+
"""A nested def or lambda keeps its yield from; await is a SyntaxError there."""
|
|
161
|
+
spec = RecipeSpec(recipe=MigrateAsyncioCoroutine())
|
|
162
|
+
spec.rewrite_run(
|
|
163
|
+
python(
|
|
164
|
+
"""
|
|
165
|
+
import asyncio
|
|
166
|
+
|
|
167
|
+
@asyncio.coroutine
|
|
168
|
+
def outer():
|
|
169
|
+
def gen():
|
|
170
|
+
yield from range(3)
|
|
171
|
+
g = lambda: (yield from range(3))
|
|
172
|
+
yield from step()
|
|
173
|
+
""",
|
|
174
|
+
"""
|
|
175
|
+
import asyncio
|
|
176
|
+
|
|
177
|
+
async def outer():
|
|
178
|
+
def gen():
|
|
179
|
+
yield from range(3)
|
|
180
|
+
g = lambda: (yield from range(3))
|
|
181
|
+
await step()
|
|
182
|
+
""",
|
|
183
|
+
)
|
|
184
|
+
)
|
|
@@ -6,6 +6,7 @@ from openrewrite_migrate_python.migrate.string_formatting import (
|
|
|
6
6
|
ReplacePercentFormatWithFString,
|
|
7
7
|
ReplaceStrFormatWithFString,
|
|
8
8
|
)
|
|
9
|
+
from tests.tree_checks import assert_statement_slots_hold_statements
|
|
9
10
|
|
|
10
11
|
def _assert_idempotent(recipe: Recipe):
|
|
11
12
|
"""Return an after_recipe callback that asserts running the recipe again produces no change."""
|
|
@@ -25,6 +26,25 @@ def _assert_idempotent(recipe: Recipe):
|
|
|
25
26
|
class TestReplaceStrFormatWithFString:
|
|
26
27
|
"""Tests for the ReplaceStrFormatWithFString recipe."""
|
|
27
28
|
|
|
29
|
+
def test_bare_format_call_statement_stays_a_statement(self):
|
|
30
|
+
"""'{}'.format(x) as its own statement → an f-string statement, not a bare f-string"""
|
|
31
|
+
spec = RecipeSpec(recipe=ReplaceStrFormatWithFString())
|
|
32
|
+
spec.rewrite_run(
|
|
33
|
+
python(
|
|
34
|
+
"""
|
|
35
|
+
"{}".format(x)
|
|
36
|
+
def f():
|
|
37
|
+
"{}".format(y)
|
|
38
|
+
""",
|
|
39
|
+
"""
|
|
40
|
+
f"{x}"
|
|
41
|
+
def f():
|
|
42
|
+
f"{y}"
|
|
43
|
+
""",
|
|
44
|
+
after_recipe=assert_statement_slots_hold_statements,
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
|
|
28
48
|
def test_simple_auto_numbered(self):
|
|
29
49
|
"""'Hello {}'.format(name) → f'Hello {name}'"""
|
|
30
50
|
spec = RecipeSpec(recipe=ReplaceStrFormatWithFString())
|
|
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
|