openrewrite-migrate-python 0.6.0.dev20260420171522__tar.gz → 0.7.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.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/pyproject.toml +1 -1
- openrewrite_migrate_python-0.7.0/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +99 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_sys_last_deprecations.py +6 -6
- openrewrite_migrate_python-0.6.0.dev20260420171522/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -121
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/setup.cfg +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/string_formatting.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_change_import_recipes.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_future_imports.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_pep594_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_string_formatting.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_threading_extended.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_typing_callable.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_typing_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_upgrade_recipes.py +0 -0
- {openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/tests/test_xml_deprecations.py +0 -0
{openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.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.7.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
|
|
@@ -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.7.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"
|
openrewrite_migrate_python-0.7.0/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Recipe for replacing deprecated sys.last_type/last_value/last_traceback
|
|
3
|
+
with sys.last_exc equivalents.
|
|
4
|
+
|
|
5
|
+
sys.last_type, sys.last_value, and sys.last_traceback were deprecated in
|
|
6
|
+
Python 3.12 in favor of sys.last_exc:
|
|
7
|
+
|
|
8
|
+
- sys.last_value -> sys.last_exc
|
|
9
|
+
- sys.last_type -> type(sys.last_exc)
|
|
10
|
+
- sys.last_traceback -> sys.last_exc.__traceback__
|
|
11
|
+
|
|
12
|
+
See: https://docs.python.org/3/whatsnew/3.12.html#deprecated
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from typing import Any, List, Optional, cast
|
|
16
|
+
|
|
17
|
+
from rewrite import ExecutionContext, Recipe, TreeVisitor
|
|
18
|
+
from rewrite.category import CategoryDescriptor
|
|
19
|
+
from rewrite.decorators import categorize
|
|
20
|
+
from rewrite.marketplace import Python
|
|
21
|
+
from rewrite.python.visitor import PythonVisitor
|
|
22
|
+
from rewrite.python.template import pattern, template
|
|
23
|
+
from rewrite.java.tree import FieldAccess, J
|
|
24
|
+
|
|
25
|
+
# Define category path: Python > Migrate > Python 3.12
|
|
26
|
+
_Python312 = [
|
|
27
|
+
*Python,
|
|
28
|
+
CategoryDescriptor(display_name="Migrate"),
|
|
29
|
+
CategoryDescriptor(display_name="Python 3.12"),
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
_last_value_pattern = pattern("sys.last_value")
|
|
33
|
+
_last_type_pattern = pattern("sys.last_type")
|
|
34
|
+
_last_traceback_pattern = pattern("sys.last_traceback")
|
|
35
|
+
|
|
36
|
+
_last_exc_template = template("sys.last_exc")
|
|
37
|
+
_type_last_exc_template = template("type(sys.last_exc)")
|
|
38
|
+
_last_exc_traceback_template = template("sys.last_exc.__traceback__")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@categorize(_Python312)
|
|
42
|
+
class ReplaceSysLastExcInfo(Recipe):
|
|
43
|
+
"""
|
|
44
|
+
Replace `sys.last_type`, `sys.last_value`, and `sys.last_traceback` with
|
|
45
|
+
their `sys.last_exc`-based equivalents.
|
|
46
|
+
|
|
47
|
+
These attributes were deprecated in Python 3.12 in favor of `sys.last_exc`
|
|
48
|
+
which provides the exception object directly.
|
|
49
|
+
|
|
50
|
+
Example:
|
|
51
|
+
Before:
|
|
52
|
+
import sys
|
|
53
|
+
exc_type = sys.last_type
|
|
54
|
+
exc_value = sys.last_value
|
|
55
|
+
exc_tb = sys.last_traceback
|
|
56
|
+
|
|
57
|
+
After:
|
|
58
|
+
import sys
|
|
59
|
+
exc_type = type(sys.last_exc)
|
|
60
|
+
exc_value = sys.last_exc
|
|
61
|
+
exc_tb = sys.last_exc.__traceback__
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def name(self) -> str:
|
|
66
|
+
return "org.openrewrite.python.migrate.ReplaceSysLastExcInfo"
|
|
67
|
+
|
|
68
|
+
@property
|
|
69
|
+
def display_name(self) -> str:
|
|
70
|
+
return "Replace `sys.last_type` / `sys.last_value` / `sys.last_traceback` with `sys.last_exc`"
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def description(self) -> str:
|
|
74
|
+
return (
|
|
75
|
+
"`sys.last_type`, `sys.last_value`, and `sys.last_traceback` were "
|
|
76
|
+
"deprecated in Python 3.12. Replace them with their `sys.last_exc`-"
|
|
77
|
+
"based equivalents: `type(sys.last_exc)`, `sys.last_exc`, and "
|
|
78
|
+
"`sys.last_exc.__traceback__` respectively."
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def tags(self) -> List[str]:
|
|
83
|
+
return ["python", "migration", "3.12", "sys"]
|
|
84
|
+
|
|
85
|
+
def editor(self) -> TreeVisitor[Any, ExecutionContext]:
|
|
86
|
+
class Visitor(PythonVisitor[ExecutionContext]):
|
|
87
|
+
def visit_field_access( # type: ignore[override]
|
|
88
|
+
self, field_access: FieldAccess, p: ExecutionContext
|
|
89
|
+
) -> Optional[J]:
|
|
90
|
+
fa = cast(FieldAccess, super().visit_field_access(field_access, p))
|
|
91
|
+
if _last_value_pattern.matches(fa, self.cursor):
|
|
92
|
+
return _last_exc_template.apply(self.cursor)
|
|
93
|
+
if _last_type_pattern.matches(fa, self.cursor):
|
|
94
|
+
return _type_last_exc_template.apply(self.cursor)
|
|
95
|
+
if _last_traceback_pattern.matches(fa, self.cursor):
|
|
96
|
+
return _last_exc_traceback_template.apply(self.cursor)
|
|
97
|
+
return fa
|
|
98
|
+
|
|
99
|
+
return Visitor()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrewrite-migrate-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.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
|
|
@@ -25,8 +25,8 @@ class TestReplaceSysLastExcInfo:
|
|
|
25
25
|
)
|
|
26
26
|
)
|
|
27
27
|
|
|
28
|
-
def
|
|
29
|
-
"""last_type
|
|
28
|
+
def test_replaces_sys_last_type(self):
|
|
29
|
+
"""last_type is rewritten to type(sys.last_exc)."""
|
|
30
30
|
spec = RecipeSpec(recipe=ReplaceSysLastExcInfo())
|
|
31
31
|
spec.rewrite_run(
|
|
32
32
|
python(
|
|
@@ -36,13 +36,13 @@ class TestReplaceSysLastExcInfo:
|
|
|
36
36
|
""",
|
|
37
37
|
"""
|
|
38
38
|
import sys
|
|
39
|
-
t =
|
|
39
|
+
t = type(sys.last_exc)
|
|
40
40
|
""",
|
|
41
41
|
)
|
|
42
42
|
)
|
|
43
43
|
|
|
44
|
-
def
|
|
45
|
-
"""last_traceback
|
|
44
|
+
def test_replaces_sys_last_traceback(self):
|
|
45
|
+
"""last_traceback is rewritten to sys.last_exc.__traceback__."""
|
|
46
46
|
spec = RecipeSpec(recipe=ReplaceSysLastExcInfo())
|
|
47
47
|
spec.rewrite_run(
|
|
48
48
|
python(
|
|
@@ -52,7 +52,7 @@ class TestReplaceSysLastExcInfo:
|
|
|
52
52
|
""",
|
|
53
53
|
"""
|
|
54
54
|
import sys
|
|
55
|
-
tb =
|
|
55
|
+
tb = sys.last_exc.__traceback__
|
|
56
56
|
""",
|
|
57
57
|
)
|
|
58
58
|
)
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Recipe for replacing deprecated sys.last_type/last_value/last_traceback
|
|
3
|
-
with sys.last_exc.
|
|
4
|
-
|
|
5
|
-
sys.last_type, sys.last_value, and sys.last_traceback were deprecated in
|
|
6
|
-
Python 3.12 in favor of sys.last_exc.
|
|
7
|
-
|
|
8
|
-
- sys.last_value is semantically equivalent to sys.last_exc (auto-replaced)
|
|
9
|
-
- sys.last_type and sys.last_traceback are not direct equivalents
|
|
10
|
-
(would need type(sys.last_exc) and sys.last_exc.__traceback__) and are
|
|
11
|
-
flagged for manual review.
|
|
12
|
-
|
|
13
|
-
See: https://docs.python.org/3/whatsnew/3.12.html#deprecated
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
from typing import Any, List, Optional
|
|
17
|
-
|
|
18
|
-
from rewrite import ExecutionContext, Recipe, TreeVisitor
|
|
19
|
-
from rewrite.category import CategoryDescriptor
|
|
20
|
-
from rewrite.decorators import categorize
|
|
21
|
-
from rewrite.marketplace import Python
|
|
22
|
-
from rewrite.python.visitor import PythonVisitor
|
|
23
|
-
from rewrite.java.tree import FieldAccess, Identifier
|
|
24
|
-
from ._markers import mark_deprecated
|
|
25
|
-
|
|
26
|
-
# Define category path: Python > Migrate > Python 3.12
|
|
27
|
-
_Python312 = [
|
|
28
|
-
*Python,
|
|
29
|
-
CategoryDescriptor(display_name="Migrate"),
|
|
30
|
-
CategoryDescriptor(display_name="Python 3.12"),
|
|
31
|
-
]
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@categorize(_Python312)
|
|
35
|
-
class ReplaceSysLastExcInfo(Recipe):
|
|
36
|
-
"""
|
|
37
|
-
Replace `sys.last_value` with `sys.last_exc` and flag `sys.last_type`
|
|
38
|
-
and `sys.last_traceback` for manual review.
|
|
39
|
-
|
|
40
|
-
These attributes were deprecated in Python 3.12 in favor of
|
|
41
|
-
`sys.last_exc` which provides the exception object directly.
|
|
42
|
-
|
|
43
|
-
Only `sys.last_value` is semantically equivalent to `sys.last_exc`.
|
|
44
|
-
`sys.last_type` would need `type(sys.last_exc)` and
|
|
45
|
-
`sys.last_traceback` would need `sys.last_exc.__traceback__`,
|
|
46
|
-
which require structural changes beyond a simple rename.
|
|
47
|
-
|
|
48
|
-
Example:
|
|
49
|
-
Before:
|
|
50
|
-
import sys
|
|
51
|
-
exc_value = sys.last_value
|
|
52
|
-
|
|
53
|
-
After:
|
|
54
|
-
import sys
|
|
55
|
-
exc_value = sys.last_exc
|
|
56
|
-
"""
|
|
57
|
-
|
|
58
|
-
@property
|
|
59
|
-
def name(self) -> str:
|
|
60
|
-
return "org.openrewrite.python.migrate.ReplaceSysLastExcInfo"
|
|
61
|
-
|
|
62
|
-
@property
|
|
63
|
-
def display_name(self) -> str:
|
|
64
|
-
return "Replace `sys.last_value` with `sys.last_exc` and flag `sys.last_type` / `sys.last_traceback`"
|
|
65
|
-
|
|
66
|
-
@property
|
|
67
|
-
def description(self) -> str:
|
|
68
|
-
return (
|
|
69
|
-
"`sys.last_type`, `sys.last_value`, and `sys.last_traceback` were "
|
|
70
|
-
"deprecated in Python 3.12. `sys.last_value` is auto-replaced with "
|
|
71
|
-
"`sys.last_exc`; `sys.last_type` and `sys.last_traceback` are flagged "
|
|
72
|
-
"for manual review."
|
|
73
|
-
)
|
|
74
|
-
|
|
75
|
-
@property
|
|
76
|
-
def tags(self) -> List[str]:
|
|
77
|
-
return ["python", "migration", "3.12", "sys"]
|
|
78
|
-
|
|
79
|
-
def editor(self) -> TreeVisitor[Any, ExecutionContext]:
|
|
80
|
-
class Visitor(PythonVisitor[ExecutionContext]):
|
|
81
|
-
def visit_field_access(
|
|
82
|
-
self, field_access: FieldAccess, p: ExecutionContext
|
|
83
|
-
) -> Optional[FieldAccess]:
|
|
84
|
-
field_access = super().visit_field_access(field_access, p)
|
|
85
|
-
|
|
86
|
-
if not isinstance(field_access.name, Identifier):
|
|
87
|
-
return field_access
|
|
88
|
-
|
|
89
|
-
attr_name = field_access.name.simple_name
|
|
90
|
-
if attr_name not in ("last_type", "last_value", "last_traceback"):
|
|
91
|
-
return field_access
|
|
92
|
-
|
|
93
|
-
target = field_access.target
|
|
94
|
-
if not isinstance(target, Identifier):
|
|
95
|
-
return field_access
|
|
96
|
-
if target.simple_name != "sys":
|
|
97
|
-
return field_access
|
|
98
|
-
|
|
99
|
-
# Only last_value is a direct semantic equivalent of last_exc
|
|
100
|
-
if attr_name == "last_value":
|
|
101
|
-
new_identifier = field_access.name.replace(_simple_name="last_exc")
|
|
102
|
-
old_padded = field_access.padding.name
|
|
103
|
-
new_padded = old_padded.replace(_element=new_identifier)
|
|
104
|
-
return field_access.padding.replace(_name=new_padded)
|
|
105
|
-
|
|
106
|
-
# last_type and last_traceback need structural changes
|
|
107
|
-
# (type(sys.last_exc) and sys.last_exc.__traceback__)
|
|
108
|
-
if attr_name == "last_type":
|
|
109
|
-
return mark_deprecated(
|
|
110
|
-
field_access,
|
|
111
|
-
"sys.last_type is deprecated in Python 3.12. "
|
|
112
|
-
"Use type(sys.last_exc) instead."
|
|
113
|
-
)
|
|
114
|
-
else: # last_traceback
|
|
115
|
-
return mark_deprecated(
|
|
116
|
-
field_access,
|
|
117
|
-
"sys.last_traceback is deprecated in Python 3.12. "
|
|
118
|
-
"Use sys.last_exc.__traceback__ instead."
|
|
119
|
-
)
|
|
120
|
-
|
|
121
|
-
return Visitor()
|
{openrewrite_migrate_python-0.6.0.dev20260420171522 → openrewrite_migrate_python-0.7.0}/setup.cfg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|