openrewrite-migrate-python 0.14.0.dev20260909084854__tar.gz → 0.14.0.dev20260909100643__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.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/pyproject.toml +1 -1
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +45 -1
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_typing_deprecations.py +37 -33
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/setup.cfg +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/_reindent.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/_trivia.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/find_suspicious_chained_comparison.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/_from_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/_import_hygiene.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/_langchain_tables.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/_slots.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/_typing_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/avro_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/pydantic_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/pydantic_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/pydantic_model_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/string_formatting.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_pydantic.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_avro_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_change_import_recipes.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_distutils_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_functools_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_future_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_mailcap_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_markers.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_pathlib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_pep594_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_pydantic_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_pydantic_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_pydantic_model_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_socket_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_string_formatting.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_tempfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_threading_extended.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_typing_alias_moves.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_typing_callable.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_upgrade_recipes.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_upgrade_to_pydantic.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_urllib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/tests/test_xdrlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260909084854 → openrewrite_migrate_python-0.14.0.dev20260909100643}/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.dev20260909100643
|
|
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.dev20260909100643" # 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"
|
|
@@ -20,12 +20,15 @@ handled with `ChangeImport` in `upgrade_to_python39`.
|
|
|
20
20
|
See: https://peps.python.org/pep-0585/
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
+
import ast
|
|
23
24
|
from typing import Any, ClassVar, Optional, Set, cast
|
|
24
25
|
|
|
25
26
|
from rewrite import ExecutionContext, Recipe, Tree, TreeVisitor
|
|
26
27
|
from rewrite.category import CategoryDescriptor
|
|
27
28
|
from rewrite.decorators import categorize
|
|
28
29
|
from rewrite.marketplace import Python
|
|
30
|
+
from rewrite.python.import_utils import referenced_names
|
|
31
|
+
from rewrite.python.markers import Quoted
|
|
29
32
|
from rewrite.python.scope_utils import LocalBindings
|
|
30
33
|
from rewrite.visitor import Cursor
|
|
31
34
|
|
|
@@ -132,6 +135,44 @@ def _in_annotation(cursor: Cursor) -> bool:
|
|
|
132
135
|
return False
|
|
133
136
|
|
|
134
137
|
|
|
138
|
+
def _rename_in_quoted_body(body: str, old_name: str, new_name: str) -> Optional[str]:
|
|
139
|
+
"""`body` with each name lookup of `old_name` renamed, or None when it holds none.
|
|
140
|
+
|
|
141
|
+
A quoted annotation carries a whole expression in one identifier, so the
|
|
142
|
+
rename has to land on its `ast.Name` nodes. Only parsing separates those
|
|
143
|
+
from a string constant the body encloses, where the name is a value:
|
|
144
|
+
renaming in `Literal['Text', 'Binary']` would change the type.
|
|
145
|
+
"""
|
|
146
|
+
stripped = body.strip()
|
|
147
|
+
try:
|
|
148
|
+
expression = ast.parse(stripped, mode="eval")
|
|
149
|
+
except (SyntaxError, ValueError):
|
|
150
|
+
return None
|
|
151
|
+
matches = [
|
|
152
|
+
node
|
|
153
|
+
for node in ast.walk(expression)
|
|
154
|
+
if isinstance(node, ast.Name) and node.id == old_name
|
|
155
|
+
]
|
|
156
|
+
if not matches:
|
|
157
|
+
return None
|
|
158
|
+
|
|
159
|
+
# `col_offset` counts UTF-8 bytes, so the splice has to happen in bytes.
|
|
160
|
+
source = stripped.encode()
|
|
161
|
+
line_starts = [0]
|
|
162
|
+
for line in source.split(b"\n"):
|
|
163
|
+
line_starts.append(line_starts[-1] + len(line) + 1)
|
|
164
|
+
for node in sorted(matches, key=lambda n: (n.lineno, n.col_offset), reverse=True):
|
|
165
|
+
line = line_starts[node.lineno - 1]
|
|
166
|
+
source = (
|
|
167
|
+
source[: line + node.col_offset]
|
|
168
|
+
+ new_name.encode()
|
|
169
|
+
+ source[line + cast(int, node.end_col_offset) :]
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
leading = len(body) - len(body.lstrip())
|
|
173
|
+
return body[:leading] + source.decode() + body[leading + len(stripped) :]
|
|
174
|
+
|
|
175
|
+
|
|
135
176
|
def _make_builtin_alias_editor(
|
|
136
177
|
old_name: str, new_name: str, annotations_only: bool
|
|
137
178
|
) -> "TreeVisitor[Any, ExecutionContext]":
|
|
@@ -200,7 +241,7 @@ def _make_builtin_alias_editor(
|
|
|
200
241
|
|
|
201
242
|
def visit_identifier(self, ident: Identifier, p: ExecutionContext) -> J:
|
|
202
243
|
ident = cast(Identifier, super().visit_identifier(ident, p))
|
|
203
|
-
if self._bare_ref is None or
|
|
244
|
+
if self._bare_ref is None or self._bare_ref not in referenced_names(ident):
|
|
204
245
|
return ident
|
|
205
246
|
|
|
206
247
|
# Skip identifiers that are part of import statements
|
|
@@ -224,6 +265,9 @@ def _make_builtin_alias_editor(
|
|
|
224
265
|
if annotations_only and not _in_annotation(self.cursor):
|
|
225
266
|
return ident
|
|
226
267
|
|
|
268
|
+
if ident.markers.find_first(Quoted) is not None:
|
|
269
|
+
renamed = _rename_in_quoted_body(ident.simple_name, self._bare_ref, new_name)
|
|
270
|
+
return ident if renamed is None else ident.replace(_simple_name=renamed)
|
|
227
271
|
return ident.replace(_simple_name=new_name)
|
|
228
272
|
|
|
229
273
|
return BuiltinAliasVisitor()
|
|
@@ -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.dev20260909100643
|
|
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
|
|
@@ -410,26 +410,6 @@ class TestPep585CornerCases:
|
|
|
410
410
|
)
|
|
411
411
|
)
|
|
412
412
|
|
|
413
|
-
def test_keeps_import_used_by_string_annotation(self):
|
|
414
|
-
"""The import stays while a string annotation still references it."""
|
|
415
|
-
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
416
|
-
spec.rewrite_run(
|
|
417
|
-
python(
|
|
418
|
-
"""
|
|
419
|
-
from typing import List
|
|
420
|
-
x: List[int] = []
|
|
421
|
-
def f() -> "List[int]":
|
|
422
|
-
return x
|
|
423
|
-
""",
|
|
424
|
-
"""
|
|
425
|
-
from typing import List
|
|
426
|
-
x: list[int] = []
|
|
427
|
-
def f() -> "List[int]":
|
|
428
|
-
return x
|
|
429
|
-
""",
|
|
430
|
-
)
|
|
431
|
-
)
|
|
432
|
-
|
|
433
413
|
def test_removes_import_when_only_a_docstring_mentions_the_name(self):
|
|
434
414
|
"""Prose that happens to spell the name is not a reference to it."""
|
|
435
415
|
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
@@ -457,35 +437,59 @@ class TestPep585CornerCases:
|
|
|
457
437
|
)
|
|
458
438
|
)
|
|
459
439
|
|
|
460
|
-
def
|
|
461
|
-
"""A quoted annotation
|
|
440
|
+
def test_renames_inside_quoted_annotations(self):
|
|
441
|
+
"""A quoted annotation holds an expression; every lookup of the alias in it is renamed."""
|
|
462
442
|
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
463
443
|
spec.rewrite_run(
|
|
464
444
|
python(
|
|
465
445
|
"""
|
|
466
|
-
from typing import List
|
|
467
|
-
|
|
468
|
-
|
|
446
|
+
from typing import Dict, List
|
|
447
|
+
a: "List" = []
|
|
448
|
+
b: "List[int]" = []
|
|
449
|
+
c: "Dict[str, List[int]]" = {}
|
|
450
|
+
d: " List[int] " = []
|
|
451
|
+
e: "dict[Café, List[int]]" = {}
|
|
469
452
|
""",
|
|
470
453
|
"""
|
|
471
|
-
from typing import
|
|
472
|
-
|
|
473
|
-
|
|
454
|
+
from typing import Dict
|
|
455
|
+
a: "list" = []
|
|
456
|
+
b: "list[int]" = []
|
|
457
|
+
c: "Dict[str, list[int]]" = {}
|
|
458
|
+
d: " list[int] " = []
|
|
459
|
+
e: "dict[Café, list[int]]" = {}
|
|
474
460
|
""",
|
|
475
461
|
)
|
|
476
462
|
)
|
|
477
463
|
|
|
478
|
-
def
|
|
479
|
-
"""
|
|
464
|
+
def test_leaves_quoted_names_that_are_not_a_lookup_alone(self):
|
|
465
|
+
"""In a quoted body only an `ast.Name` is a lookup of the alias."""
|
|
480
466
|
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
481
467
|
spec.rewrite_run(
|
|
482
468
|
python(
|
|
483
469
|
"""
|
|
484
|
-
from typing import List
|
|
485
|
-
|
|
470
|
+
from typing import List, Literal
|
|
471
|
+
|
|
472
|
+
alias = List
|
|
473
|
+
a: "MyList" = []
|
|
474
|
+
b: "ListLike[int]" = []
|
|
475
|
+
c: "mod.List[int]" = []
|
|
476
|
+
d: "Literal['List', 'Tuple']" = "List"
|
|
477
|
+
"""
|
|
478
|
+
)
|
|
479
|
+
)
|
|
480
|
+
|
|
481
|
+
def test_leaves_quoted_annotated_metadata_alone(self):
|
|
482
|
+
"""The parser quotes `Annotated` metadata like a type; only its first argument is one."""
|
|
483
|
+
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
484
|
+
spec.rewrite_run(
|
|
485
|
+
python(
|
|
486
|
+
"""
|
|
487
|
+
from typing import Annotated, List
|
|
488
|
+
x: Annotated["List[int]", "List"] = []
|
|
486
489
|
""",
|
|
487
490
|
"""
|
|
488
|
-
|
|
491
|
+
from typing import Annotated, List
|
|
492
|
+
x: Annotated["list[int]", "List"] = []
|
|
489
493
|
""",
|
|
490
494
|
)
|
|
491
495
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|