openrewrite-migrate-python 0.8.0.dev20260602181751__tar.gz → 0.9.0__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.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/PKG-INFO +3 -2
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/pyproject.toml +9 -2
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/__init__.py +35 -0
- openrewrite_migrate_python-0.9.0/src/openrewrite_migrate_python/migrate/_markers.py +22 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/array_deprecations.py +6 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +5 -6
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +5 -12
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +6 -1
- openrewrite_migrate_python-0.9.0/src/openrewrite_migrate_python/migrate/pydantic_deprecations.py +752 -0
- openrewrite_migrate_python-0.9.0/src/openrewrite_migrate_python/migrate/pydantic_fields.py +155 -0
- openrewrite_migrate_python-0.9.0/src/openrewrite_migrate_python/migrate/pydantic_model_fields.py +164 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +22 -8
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +6 -2
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +21 -0
- openrewrite_migrate_python-0.9.0/src/openrewrite_migrate_python/migrate/upgrade_to_pydantic.py +276 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python.egg-info/PKG-INFO +3 -2
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +8 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python.egg-info/requires.txt +2 -1
- openrewrite_migrate_python-0.9.0/tests/test_array_deprecations.py +102 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_ast_deprecations.py +40 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_calendar_deprecations.py +37 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_platform_deprecations.py +19 -0
- openrewrite_migrate_python-0.9.0/tests/test_pydantic_deprecations.py +577 -0
- openrewrite_migrate_python-0.9.0/tests/test_pydantic_fields.py +148 -0
- openrewrite_migrate_python-0.9.0/tests/test_pydantic_model_fields.py +233 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_threading_deprecations.py +29 -2
- openrewrite_migrate_python-0.9.0/tests/test_threading_extended.py +216 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_threading_is_alive_deprecation.py +29 -2
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_typing_union_to_pipe.py +60 -35
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_upgrade_recipes.py +40 -0
- openrewrite_migrate_python-0.9.0/tests/test_upgrade_to_pydantic.py +95 -0
- openrewrite_migrate_python-0.8.0.dev20260602181751/src/openrewrite_migrate_python/migrate/_markers.py +0 -16
- openrewrite_migrate_python-0.8.0.dev20260602181751/tests/test_array_deprecations.py +0 -44
- openrewrite_migrate_python-0.8.0.dev20260602181751/tests/test_threading_extended.py +0 -94
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/setup.cfg +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/string_formatting.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_change_import_recipes.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_future_imports.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_pep594_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_string_formatting.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_typing_callable.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_typing_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/tests/test_xml_deprecations.py +0 -0
{openrewrite_migrate_python-0.8.0.dev20260602181751 → openrewrite_migrate_python-0.9.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrewrite-migrate-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.0
|
|
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
|
|
@@ -21,7 +21,8 @@ Classifier: Typing :: Typed
|
|
|
21
21
|
Requires-Python: >=3.10
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
23
|
Provides-Extra: dev
|
|
24
|
-
Requires-Dist: openrewrite>=8.
|
|
24
|
+
Requires-Dist: openrewrite>=8.84.3; extra == "dev"
|
|
25
|
+
Requires-Dist: pydantic>=2.11; extra == "dev"
|
|
25
26
|
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
26
27
|
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
27
28
|
Requires-Dist: black>=24.0.0; extra == "dev"
|
|
@@ -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.
|
|
8
|
+
version = "0.9.0" # 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"
|
|
@@ -30,7 +30,14 @@ dependencies = []
|
|
|
30
30
|
|
|
31
31
|
[project.optional-dependencies]
|
|
32
32
|
dev = [
|
|
33
|
-
|
|
33
|
+
# 8.84.3 brings ty external-type resolution (cross-package supertype chains),
|
|
34
|
+
# J.MethodInvocation.type, sorted insertion in maybe_add_import, and the
|
|
35
|
+
# type_utils comparison helpers — all of which the recipes rely on for
|
|
36
|
+
# type-aware matching. openrewrite is host-provided at runtime, so this floor
|
|
37
|
+
# only affects dev/CI.
|
|
38
|
+
"openrewrite>=8.84.3",
|
|
39
|
+
# Needed so type-attribution tests can resolve `pydantic` types.
|
|
40
|
+
"pydantic>=2.11",
|
|
34
41
|
"pytest>=8.0.0",
|
|
35
42
|
"pytest-cov>=4.0.0",
|
|
36
43
|
"black>=24.0.0",
|
|
@@ -63,6 +63,17 @@ from .pep594_system_migrations import (
|
|
|
63
63
|
)
|
|
64
64
|
from .pipes_migrations import FindPipesModule
|
|
65
65
|
from .pkgutil_deprecations import ReplacePkgutilFindLoader, ReplacePkgutilGetLoader
|
|
66
|
+
from .pydantic_deprecations import (
|
|
67
|
+
FindDeprecatedJsonEncoders,
|
|
68
|
+
FindDeprecatedSchemaGenerator,
|
|
69
|
+
FindEvalTypeBackportUsage,
|
|
70
|
+
FindModelValidatorAfterClassmethod,
|
|
71
|
+
FindSerializeAsAnyUsage,
|
|
72
|
+
ReplaceFinalFieldWithClassVar,
|
|
73
|
+
ReplacePopulateByNameWithValidateByName,
|
|
74
|
+
)
|
|
75
|
+
from .pydantic_fields import RemoveEllipsisFromField
|
|
76
|
+
from .pydantic_model_fields import ReplaceModelFieldsInstanceAccess
|
|
66
77
|
from .re_deprecations import ReplaceReTemplate
|
|
67
78
|
from .removed_modules_312 import FindRemovedModules312
|
|
68
79
|
from .shutil_deprecations import FindShutilRmtreeOnerror
|
|
@@ -105,6 +116,13 @@ from .upgrade_to_python311 import UpgradeToPython311
|
|
|
105
116
|
from .upgrade_to_python312 import UpgradeToPython312
|
|
106
117
|
from .upgrade_to_python313 import UpgradeToPython313
|
|
107
118
|
from .upgrade_to_python314 import UpgradeToPython314
|
|
119
|
+
from .upgrade_to_pydantic import (
|
|
120
|
+
UpgradeToPydantic210,
|
|
121
|
+
UpgradeToPydantic211,
|
|
122
|
+
UpgradeToPydantic212,
|
|
123
|
+
UpgradeToPydantic213,
|
|
124
|
+
UpgradeToPydantic214,
|
|
125
|
+
)
|
|
108
126
|
from .urllib_deprecations import FindUrllibParseSplitFunctions, FindUrllibParseToBytes
|
|
109
127
|
from .uu_migrations import FindUuModule
|
|
110
128
|
from .xdrlib_migrations import FindXdrlibModule
|
|
@@ -230,4 +248,21 @@ __all__ = [
|
|
|
230
248
|
"UpgradeToPython312",
|
|
231
249
|
"UpgradeToPython313",
|
|
232
250
|
"UpgradeToPython314",
|
|
251
|
+
# Auto-fix: Pydantic
|
|
252
|
+
"ReplaceModelFieldsInstanceAccess",
|
|
253
|
+
"ReplaceFinalFieldWithClassVar",
|
|
254
|
+
"ReplacePopulateByNameWithValidateByName",
|
|
255
|
+
"RemoveEllipsisFromField",
|
|
256
|
+
# Detection: Pydantic
|
|
257
|
+
"FindDeprecatedSchemaGenerator",
|
|
258
|
+
"FindDeprecatedJsonEncoders",
|
|
259
|
+
"FindSerializeAsAnyUsage",
|
|
260
|
+
"FindModelValidatorAfterClassmethod",
|
|
261
|
+
"FindEvalTypeBackportUsage",
|
|
262
|
+
# Composite upgrade recipes: Pydantic
|
|
263
|
+
"UpgradeToPydantic210",
|
|
264
|
+
"UpgradeToPydantic211",
|
|
265
|
+
"UpgradeToPydantic212",
|
|
266
|
+
"UpgradeToPydantic213",
|
|
267
|
+
"UpgradeToPydantic214",
|
|
233
268
|
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Shared marker utilities for deprecation recipes."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, Optional
|
|
4
|
+
|
|
5
|
+
from rewrite.markers import Markers, MarkupWarn
|
|
6
|
+
from rewrite.utils import random_id
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def mark_deprecated(tree: Any, message: str, detail: Optional[str] = None) -> Any:
|
|
10
|
+
"""Attach a ``MarkupWarn`` warning marker flagging a deprecation.
|
|
11
|
+
|
|
12
|
+
``MarkupWarn`` is OpenRewrite's warning-markup marker (the intended marker
|
|
13
|
+
for deprecations that need manual attention), as opposed to ``SearchResult``
|
|
14
|
+
which denotes a plain search hit. It renders the same comment in printed
|
|
15
|
+
output but surfaces as a warning diagnostic in the tooling.
|
|
16
|
+
"""
|
|
17
|
+
full_message = f"{message}: {detail}" if detail else message
|
|
18
|
+
warn_marker = MarkupWarn(random_id(), full_message)
|
|
19
|
+
current_markers = tree.markers
|
|
20
|
+
new_markers_list = list(current_markers.markers) + [warn_marker]
|
|
21
|
+
new_markers = Markers(current_markers.id, new_markers_list)
|
|
22
|
+
return tree.replace(_markers=new_markers)
|
|
@@ -18,6 +18,8 @@ from rewrite.python.preconditions import uses_method
|
|
|
18
18
|
from rewrite.python.visitor import PythonVisitor
|
|
19
19
|
from rewrite.java.tree import Identifier, MethodInvocation
|
|
20
20
|
|
|
21
|
+
from rewrite.python.type_utils import is_assignable_to
|
|
22
|
+
|
|
21
23
|
# Define category path: Python > Migrate > Python 3.14
|
|
22
24
|
_Python314 = [
|
|
23
25
|
*Python,
|
|
@@ -72,6 +74,8 @@ class ReplaceArrayTostring(Recipe):
|
|
|
72
74
|
return method
|
|
73
75
|
if method.name.simple_name != "tostring":
|
|
74
76
|
return method
|
|
77
|
+
if method.select is None or not is_assignable_to("array.array", method.select.type):
|
|
78
|
+
return method
|
|
75
79
|
|
|
76
80
|
# Replace tostring with tobytes
|
|
77
81
|
new_name = method.name.replace(_simple_name="tobytes")
|
|
@@ -126,6 +130,8 @@ class ReplaceArrayFromstring(Recipe):
|
|
|
126
130
|
return method
|
|
127
131
|
if method.name.simple_name != "fromstring":
|
|
128
132
|
return method
|
|
133
|
+
if method.select is None or not is_assignable_to("array.array", method.select.type):
|
|
134
|
+
return method
|
|
129
135
|
|
|
130
136
|
# Replace fromstring with frombytes
|
|
131
137
|
new_name = method.name.replace(_simple_name="frombytes")
|
|
@@ -23,6 +23,8 @@ from rewrite.marketplace import Python
|
|
|
23
23
|
from rewrite.python.visitor import PythonVisitor
|
|
24
24
|
from rewrite.java.tree import Identifier, FieldAccess
|
|
25
25
|
|
|
26
|
+
from rewrite.python.type_utils import is_of_class_type
|
|
27
|
+
|
|
26
28
|
# Define category path: Python > Migrate > Python 3.8
|
|
27
29
|
_Python38 = [
|
|
28
30
|
*Python,
|
|
@@ -44,12 +46,9 @@ def _is_ast_attribute(field_access: FieldAccess, attr_name: str) -> bool:
|
|
|
44
46
|
if field_access.name.simple_name != attr_name:
|
|
45
47
|
return False
|
|
46
48
|
|
|
47
|
-
#
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return True
|
|
51
|
-
|
|
52
|
-
return False
|
|
49
|
+
# Confirm the target resolves to the `ast` module (by type, so aliased
|
|
50
|
+
# imports work and a same-named variable is not rewritten).
|
|
51
|
+
return is_of_class_type(field_access.target.type, "ast")
|
|
53
52
|
|
|
54
53
|
|
|
55
54
|
def _replace_ast_attribute(field_access: FieldAccess, new_name: str) -> FieldAccess:
|
|
@@ -20,6 +20,8 @@ from rewrite.marketplace import Python
|
|
|
20
20
|
from rewrite.python.visitor import PythonVisitor
|
|
21
21
|
from rewrite.java.tree import Identifier, FieldAccess
|
|
22
22
|
|
|
23
|
+
from rewrite.python.type_utils import is_of_class_type
|
|
24
|
+
|
|
23
25
|
# Define category path: Python > Migrate > Python 3.12
|
|
24
26
|
_Python312 = [
|
|
25
27
|
*Python,
|
|
@@ -53,16 +55,6 @@ CALENDAR_CONSTANTS: Dict[str, str] = {
|
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
|
|
56
|
-
def _is_calendar_access(identifier: Identifier) -> bool:
|
|
57
|
-
"""
|
|
58
|
-
Check if this identifier looks like a calendar module constant access.
|
|
59
|
-
|
|
60
|
-
Without full type attribution, we check for common patterns.
|
|
61
|
-
"""
|
|
62
|
-
# The identifier itself should be a known calendar constant name
|
|
63
|
-
return identifier.simple_name in CALENDAR_CONSTANTS
|
|
64
|
-
|
|
65
|
-
|
|
66
58
|
@categorize(_Python312)
|
|
67
59
|
class ReplaceCalendarConstants(Recipe):
|
|
68
60
|
"""
|
|
@@ -118,9 +110,10 @@ class ReplaceCalendarConstants(Recipe):
|
|
|
118
110
|
if const_name not in CALENDAR_CONSTANTS:
|
|
119
111
|
return field_access
|
|
120
112
|
|
|
121
|
-
#
|
|
113
|
+
# Confirm the target resolves to the `calendar` module (by type,
|
|
114
|
+
# so aliases work and same-named variables are excluded).
|
|
122
115
|
target = field_access.target
|
|
123
|
-
if
|
|
116
|
+
if is_of_class_type(target.type, "calendar"):
|
|
124
117
|
# Replace with uppercase version
|
|
125
118
|
new_name_str = CALENDAR_CONSTANTS[const_name]
|
|
126
119
|
new_identifier = name.replace(_simple_name=new_name_str)
|
|
@@ -16,6 +16,8 @@ from rewrite.marketplace import Python
|
|
|
16
16
|
from rewrite.markers import Markers
|
|
17
17
|
from rewrite.python.preconditions import uses_method
|
|
18
18
|
from rewrite.python.visitor import PythonVisitor
|
|
19
|
+
|
|
20
|
+
from rewrite.python.type_utils import is_of_class_type
|
|
19
21
|
from rewrite.java.support_types import JLeftPadded, JRightPadded, Space
|
|
20
22
|
from rewrite.java.tree import Identifier, Literal, MethodInvocation
|
|
21
23
|
from rewrite.python.tree import NamedArgument
|
|
@@ -81,7 +83,10 @@ class ReplacePlatformPopen(Recipe):
|
|
|
81
83
|
select = method.select
|
|
82
84
|
if not isinstance(select, Identifier):
|
|
83
85
|
return method
|
|
84
|
-
|
|
86
|
+
# Confirm the receiver resolves to the `platform` module (by
|
|
87
|
+
# type, so an aliased import works and a same-named variable is
|
|
88
|
+
# not rewritten into a destructive `subprocess.check_output`).
|
|
89
|
+
if not is_of_class_type(select.type, "platform"):
|
|
85
90
|
return method
|
|
86
91
|
|
|
87
92
|
# Replace platform with subprocess
|