openrewrite-migrate-python 0.14.0.dev20260902123950__tar.gz → 0.14.0.dev20260902131752__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.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/pyproject.toml +1 -1
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/typing_deprecations.py +96 -6
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python.egg-info/PKG-INFO +1 -1
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_typing_deprecations.py +92 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/setup.cfg +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/_reindent.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/_semantically_equal.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/all_branches_identical.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/boolean_checks_not_inverted.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/collapsible_if_statements.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/find_suspicious_chained_comparison.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/merge_identical_branches.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/remove_duplicate_conditions.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/remove_self_assignment.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/remove_unconditional_value_overwrite.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/simplify_boolean_literal.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_code_quality_python/codequality/simplify_redundant_logical_expression.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/__init__.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/_import_hygiene.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/_langchain_tables.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/_markers.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/_typing_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/avro_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/cgi_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/distutils_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/functools_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/future_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/mailcap_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/nntplib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/pathlib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/pipes_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/pydantic_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/pydantic_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/pydantic_model_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/socket_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/string_formatting.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/telnetlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/tempfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/typing_callable.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain02.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_langchain1.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_pydantic.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_python310.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_python311.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_python312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_python313.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_python314.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_python38.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/upgrade_to_python39.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/urllib_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/uu_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/xdrlib_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python/migrate/xml_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python.egg-info/SOURCES.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python.egg-info/dependency_links.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python.egg-info/entry_points.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python.egg-info/requires.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/src/openrewrite_migrate_python.egg-info/top_level.txt +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_aifc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_array_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_ast_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_asyncio_coroutine_to_async.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_asyncio_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_avro_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_calendar_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_cgi_parse_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_change_import_recipes.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_collections_abc_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_configparser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_datetime_utc.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_distutils_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_future_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_gettext_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_html_parser_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_imp_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_langchain_classic_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_langchain_community_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_langchain_provider_imports.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_locale_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_locale_getdefaultlocale_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_macpath_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_os_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_pep594_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_pep594_system_migrations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_pkgutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_platform_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_pydantic_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_pydantic_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_pydantic_model_fields.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_re_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_removed_modules_312.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_shutil_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_ssl_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_string_formatting.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_sys_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_sys_last_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_tarfile_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_threading_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_threading_extended.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_threading_is_alive_deprecation.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_typing_alias_moves.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_typing_callable.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_typing_union_to_pipe.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_unittest_deprecations.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_upgrade_recipes.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/tests/test_upgrade_to_pydantic.py +0 -0
- {openrewrite_migrate_python-0.14.0.dev20260902123950 → openrewrite_migrate_python-0.14.0.dev20260902131752}/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.dev20260902131752
|
|
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.dev20260902131752" # 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"
|
|
@@ -23,26 +23,39 @@ See: https://peps.python.org/pep-0585/
|
|
|
23
23
|
import ast
|
|
24
24
|
from typing import Any, ClassVar, Optional, Set, cast
|
|
25
25
|
|
|
26
|
-
from rewrite import ExecutionContext, Recipe, TreeVisitor
|
|
26
|
+
from rewrite import ExecutionContext, Recipe, Tree, TreeVisitor
|
|
27
27
|
from rewrite.category import CategoryDescriptor
|
|
28
28
|
from rewrite.decorators import categorize
|
|
29
29
|
from rewrite.marketplace import Python
|
|
30
30
|
from rewrite.python.markers import Quoted
|
|
31
31
|
from rewrite.python.scope_utils import LocalBindings
|
|
32
|
+
from rewrite.visitor import Cursor
|
|
32
33
|
|
|
33
34
|
from ._typing_imports import (
|
|
34
35
|
maybe_remove_typing_import,
|
|
35
36
|
maybe_remove_typing_module_import,
|
|
36
37
|
scan_typing_imports,
|
|
37
38
|
)
|
|
38
|
-
from rewrite.python.tree import
|
|
39
|
+
from rewrite.python.tree import (
|
|
40
|
+
CollectionLiteral,
|
|
41
|
+
CompilationUnit,
|
|
42
|
+
MultiImport,
|
|
43
|
+
NamedArgument,
|
|
44
|
+
TypeAlias,
|
|
45
|
+
TypeHint,
|
|
46
|
+
TypeHintedExpression,
|
|
47
|
+
)
|
|
39
48
|
from rewrite.python.visitor import PythonVisitor
|
|
40
49
|
from rewrite.java.tree import (
|
|
50
|
+
ArrayAccess,
|
|
51
|
+
Assignment,
|
|
41
52
|
FieldAccess,
|
|
42
53
|
Identifier,
|
|
43
54
|
Import,
|
|
44
55
|
J,
|
|
45
56
|
Literal,
|
|
57
|
+
ParameterizedType,
|
|
58
|
+
VariableDeclarations,
|
|
46
59
|
)
|
|
47
60
|
|
|
48
61
|
# Define category paths
|
|
@@ -59,7 +72,72 @@ _Python311 = [
|
|
|
59
72
|
]
|
|
60
73
|
|
|
61
74
|
|
|
62
|
-
def
|
|
75
|
+
def _bound_name(expr: Optional[Tree]) -> Optional[str]:
|
|
76
|
+
"""The name ``expr`` refers to, for a bare or module-qualified reference."""
|
|
77
|
+
if isinstance(expr, FieldAccess):
|
|
78
|
+
expr = expr.name
|
|
79
|
+
return expr.simple_name if isinstance(expr, Identifier) else None
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def _names_type_alias(target: J) -> bool:
|
|
83
|
+
"""True for the `X: TypeAlias` target of an explicit type-alias assignment."""
|
|
84
|
+
if not isinstance(target, TypeHintedExpression):
|
|
85
|
+
return False
|
|
86
|
+
return _bound_name(target.type_hint.type_tree) == "TypeAlias"
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def _annotated_type_argument(subscript: Tree) -> Optional[J]:
|
|
90
|
+
"""The lone type argument of an `Annotated[...]`, or None for another subscript.
|
|
91
|
+
|
|
92
|
+
The parser spells a subscript as `ParameterizedType` where it expects a type
|
|
93
|
+
and as `ArrayAccess` elsewhere; both reach here.
|
|
94
|
+
"""
|
|
95
|
+
if isinstance(subscript, ParameterizedType):
|
|
96
|
+
target, arguments = subscript.clazz, subscript.type_parameters
|
|
97
|
+
elif isinstance(subscript, ArrayAccess):
|
|
98
|
+
index = subscript.dimension.index
|
|
99
|
+
target = subscript.indexed
|
|
100
|
+
arguments = index.elements if isinstance(index, CollectionLiteral) else [index]
|
|
101
|
+
else:
|
|
102
|
+
return None
|
|
103
|
+
if _bound_name(target) != "Annotated" or not arguments:
|
|
104
|
+
return None
|
|
105
|
+
return arguments[0]
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def _in_annotation(cursor: Cursor) -> bool:
|
|
109
|
+
"""True when the cursor's node stands where a type expression is expected.
|
|
110
|
+
|
|
111
|
+
Annotations are the only position where a `typing` alias and its built-in
|
|
112
|
+
are interchangeable; elsewhere they are distinct objects, so a dict key or
|
|
113
|
+
a call argument spelling the alias must keep naming it.
|
|
114
|
+
"""
|
|
115
|
+
walked = [cursor.value]
|
|
116
|
+
parent_cursor = cursor.parent_tree_cursor()
|
|
117
|
+
while isinstance(parent_cursor.value, Tree):
|
|
118
|
+
parent = parent_cursor.value
|
|
119
|
+
child = walked[-1]
|
|
120
|
+
if isinstance(parent, TypeHint):
|
|
121
|
+
return True
|
|
122
|
+
if isinstance(parent, VariableDeclarations):
|
|
123
|
+
return parent.type_expression is child
|
|
124
|
+
if isinstance(parent, TypeAlias):
|
|
125
|
+
return parent.value is child
|
|
126
|
+
if isinstance(parent, Assignment):
|
|
127
|
+
return parent.assignment is child and _names_type_alias(parent.variable)
|
|
128
|
+
# `Annotated` carries a type in its first argument and runtime metadata
|
|
129
|
+
# in the rest, which a tuple wraps a level below the subscript.
|
|
130
|
+
annotated_type = _annotated_type_argument(parent)
|
|
131
|
+
if annotated_type is not None and not any(node is annotated_type for node in walked):
|
|
132
|
+
return False
|
|
133
|
+
walked.append(parent)
|
|
134
|
+
parent_cursor = parent_cursor.parent_tree_cursor()
|
|
135
|
+
return False
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
def _make_builtin_alias_editor(
|
|
139
|
+
old_name: str, new_name: str, annotations_only: bool
|
|
140
|
+
) -> "TreeVisitor[Any, ExecutionContext]":
|
|
63
141
|
"""Create a visitor that renames a typing alias to its built-in equivalent.
|
|
64
142
|
|
|
65
143
|
Handles both reference forms and cleans up imports afterwards:
|
|
@@ -69,6 +147,9 @@ def _make_builtin_alias_editor(old_name: str, new_name: str) -> "TreeVisitor[Any
|
|
|
69
147
|
- ``import typing [as alias]`` plus qualified ``typing.<old_name>``
|
|
70
148
|
attribute references
|
|
71
149
|
|
|
150
|
+
``annotations_only`` confines the rename to annotation context
|
|
151
|
+
(see `_in_annotation`).
|
|
152
|
+
|
|
72
153
|
Import removal is delegated to the SDK's `RemoveImport`, which only
|
|
73
154
|
removes imports that are no longer referenced and preserves comments.
|
|
74
155
|
"""
|
|
@@ -160,6 +241,7 @@ def _make_builtin_alias_editor(old_name: str, new_name: str) -> "TreeVisitor[Any
|
|
|
160
241
|
isinstance(field_access.target, Identifier)
|
|
161
242
|
and field_access.target.simple_name in self._module_refs
|
|
162
243
|
and field_access.name.simple_name == old_name
|
|
244
|
+
and (not annotations_only or _in_annotation(self.cursor))
|
|
163
245
|
):
|
|
164
246
|
self._rewrote_qualified = True
|
|
165
247
|
return field_access.name.replace(_simple_name=new_name).replace(
|
|
@@ -190,6 +272,8 @@ def _make_builtin_alias_editor(old_name: str, new_name: str) -> "TreeVisitor[Any
|
|
|
190
272
|
# A name bound by an enclosing scope is that local, not the import.
|
|
191
273
|
if self._local_bindings.is_bound(self.cursor, self._bare_ref):
|
|
192
274
|
return ident
|
|
275
|
+
if annotations_only and not _in_annotation(self.cursor):
|
|
276
|
+
return ident
|
|
193
277
|
|
|
194
278
|
return ident.replace(_simple_name=new_name)
|
|
195
279
|
|
|
@@ -201,6 +285,8 @@ class _ReplaceTypingAliasRecipe(Recipe):
|
|
|
201
285
|
|
|
202
286
|
old_name: ClassVar[str]
|
|
203
287
|
new_name: ClassVar[str]
|
|
288
|
+
# False only where the alias *is* the built-in, so any position is safe.
|
|
289
|
+
annotations_only: ClassVar[bool] = True
|
|
204
290
|
|
|
205
291
|
@property
|
|
206
292
|
def name(self) -> str:
|
|
@@ -217,14 +303,17 @@ class _ReplaceTypingAliasRecipe(Recipe):
|
|
|
217
303
|
def description(self) -> str:
|
|
218
304
|
return (
|
|
219
305
|
f"PEP 585 deprecated `typing.{self.old_name}` in Python 3.9. "
|
|
220
|
-
f"Replace with the built-in `{self.new_name}` type
|
|
306
|
+
f"Replace with the built-in `{self.new_name}` type in annotations. "
|
|
221
307
|
"Applies inside `if TYPE_CHECKING:` blocks as well; the built-in generic is "
|
|
222
308
|
"valid at runtime from Python 3.9 on, so no `from __future__ import "
|
|
223
|
-
"annotations` is needed."
|
|
309
|
+
"annotations` is needed. "
|
|
310
|
+
f"References outside an annotation are left alone: `typing.{self.old_name}` "
|
|
311
|
+
f"and `{self.new_name}` are distinct objects, so substituting one for the "
|
|
312
|
+
"other where the name is used as a value would change behaviour."
|
|
224
313
|
)
|
|
225
314
|
|
|
226
315
|
def editor(self) -> TreeVisitor[Any, ExecutionContext]:
|
|
227
|
-
return _make_builtin_alias_editor(self.old_name, self.new_name)
|
|
316
|
+
return _make_builtin_alias_editor(self.old_name, self.new_name, self.annotations_only)
|
|
228
317
|
|
|
229
318
|
|
|
230
319
|
@categorize(_Python39)
|
|
@@ -354,6 +443,7 @@ class ReplaceTypingText(_ReplaceTypingAliasRecipe):
|
|
|
354
443
|
|
|
355
444
|
old_name = "Text"
|
|
356
445
|
new_name = "str"
|
|
446
|
+
annotations_only = False
|
|
357
447
|
|
|
358
448
|
@property
|
|
359
449
|
def name(self) -> str:
|
|
@@ -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.dev20260902131752
|
|
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
|
|
@@ -508,6 +508,82 @@ class TestPep585CornerCases:
|
|
|
508
508
|
)
|
|
509
509
|
)
|
|
510
510
|
|
|
511
|
+
def test_leaves_value_positions_alone(self):
|
|
512
|
+
"""`typing.List` is a distinct object from `list`, so only annotations may change."""
|
|
513
|
+
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
514
|
+
spec.rewrite_run(
|
|
515
|
+
python(
|
|
516
|
+
"""
|
|
517
|
+
import typing
|
|
518
|
+
from typing import List
|
|
519
|
+
|
|
520
|
+
SEQUENCE_ORIGIN_MAP = {list: list, typing.List: list, List: list}
|
|
521
|
+
alias = List
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
def build(items: List[int], factory=List):
|
|
525
|
+
return factory()
|
|
526
|
+
""",
|
|
527
|
+
"""
|
|
528
|
+
import typing
|
|
529
|
+
from typing import List
|
|
530
|
+
|
|
531
|
+
SEQUENCE_ORIGIN_MAP = {list: list, typing.List: list, List: list}
|
|
532
|
+
alias = List
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
def build(items: list[int], factory=List):
|
|
536
|
+
return factory()
|
|
537
|
+
""",
|
|
538
|
+
)
|
|
539
|
+
)
|
|
540
|
+
|
|
541
|
+
def test_leaves_annotated_metadata_alone(self):
|
|
542
|
+
"""Only `Annotated`'s first argument is a type; the rest are runtime values."""
|
|
543
|
+
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
544
|
+
spec.rewrite_run(
|
|
545
|
+
python(
|
|
546
|
+
"""
|
|
547
|
+
from typing import Annotated, List
|
|
548
|
+
|
|
549
|
+
x: Annotated[List[int], List] = []
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
def f() -> Annotated[List[int], List]:
|
|
553
|
+
return x
|
|
554
|
+
""",
|
|
555
|
+
"""
|
|
556
|
+
from typing import Annotated, List
|
|
557
|
+
|
|
558
|
+
x: Annotated[list[int], List] = []
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
def f() -> Annotated[list[int], List]:
|
|
562
|
+
return x
|
|
563
|
+
""",
|
|
564
|
+
)
|
|
565
|
+
)
|
|
566
|
+
|
|
567
|
+
def test_rewrites_a_type_alias_right_hand_side(self):
|
|
568
|
+
"""A `TypeAlias` right-hand side is an annotation, not a value."""
|
|
569
|
+
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
570
|
+
spec.rewrite_run(
|
|
571
|
+
python(
|
|
572
|
+
"""
|
|
573
|
+
from typing import List, TypeAlias
|
|
574
|
+
|
|
575
|
+
Names: TypeAlias = List[str]
|
|
576
|
+
type Counts = List[int]
|
|
577
|
+
""",
|
|
578
|
+
"""
|
|
579
|
+
from typing import TypeAlias
|
|
580
|
+
|
|
581
|
+
Names: TypeAlias = list[str]
|
|
582
|
+
type Counts = list[int]
|
|
583
|
+
""",
|
|
584
|
+
)
|
|
585
|
+
)
|
|
586
|
+
|
|
511
587
|
def test_preserves_comment_on_removed_import(self):
|
|
512
588
|
spec = RecipeSpec(recipe=ReplaceTypingListWithList())
|
|
513
589
|
spec.rewrite_run(
|
|
@@ -570,6 +646,22 @@ class TestReplaceTypingText:
|
|
|
570
646
|
)
|
|
571
647
|
)
|
|
572
648
|
|
|
649
|
+
def test_rewrites_text_in_a_value_position(self):
|
|
650
|
+
"""`typing.Text` is `str`, so the substitution holds outside annotations too."""
|
|
651
|
+
spec = RecipeSpec(recipe=ReplaceTypingText())
|
|
652
|
+
spec.rewrite_run(
|
|
653
|
+
python(
|
|
654
|
+
"""
|
|
655
|
+
from typing import Text
|
|
656
|
+
|
|
657
|
+
COLUMN_TYPES = {Text: "text"}
|
|
658
|
+
""",
|
|
659
|
+
"""
|
|
660
|
+
COLUMN_TYPES = {str: "text"}
|
|
661
|
+
""",
|
|
662
|
+
)
|
|
663
|
+
)
|
|
664
|
+
|
|
573
665
|
def test_no_change_when_text_from_other_module(self):
|
|
574
666
|
"""A `Text` imported from another module must not be touched."""
|
|
575
667
|
spec = RecipeSpec(recipe=ReplaceTypingText())
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|