Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion 10 Doc/library/2to3.rst
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,13 @@ and off individually. They are described here in more detail.
Handles other modules renames in the standard library. It is separate from

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Handles other modules renames in the standard library. It is separate from
Handles other module renames in the standard library. It is separate from

the :2to3fixer:`imports` fixer only because of technical limitations.

.. 2to3fixer:: imports3

Handles other modules renames in the standard library. It is separate from

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Handles other modules renames in the standard library. It is separate from
Handles other module renames in the standard library. It is separate from

the :2to3fixer:`imports` and :2to3fixer:`imports2` fixers only because of
technical limitations. :2to3fixer:`renames` needs to run afterwards to

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are these technical limitations?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test_imports() would fail, because this fix uses 2 steps. fix_renames does a second change after fix_imports.

rename :data:`http.cookies.Cookie` to :data:`http.cookies.SimpleCookie`.

.. 2to3fixer:: input

Converts ``input(prompt)`` to ``eval(input(prompt))``.
Expand Down Expand Up @@ -389,7 +396,8 @@ and off individually. They are described here in more detail.

.. 2to3fixer:: renames

Changes :data:`sys.maxint` to :data:`sys.maxsize`.
Changes :data:`sys.maxint` to :data:`sys.maxsize` and
:data:`http.cookies.Cookie` to :data:`http.cookies.SimpleCookie`.

.. 2to3fixer:: repr

Expand Down
7 changes: 5 additions & 2 deletions 7 Lib/lib2to3/fixes/fix_imports.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
'httplib': 'http.client',
'htmlentitydefs' : 'html.entities',
'HTMLParser' : 'html.parser',
'Cookie': 'http.cookies',
#'Cookie': 'http.cookies', is handled by fix_imports3 + renames

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you can remove this line.

'cookielib': 'http.cookiejar',
'BaseHTTPServer': 'http.server',
'SimpleHTTPServer': 'http.server',
Expand Down Expand Up @@ -139,7 +139,10 @@ def transform(self, node, results):
self.transform(node, results)
else:
# Replace usage of the module.
bare_name = results["bare_with_attr"][0]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does this change do? (when is results["bare_with_attr"] not a list?)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When there is only 1 key/value in MAPPING like in fix_imports3.

if isinstance(results["bare_with_attr"],list):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if isinstance(results["bare_with_attr"],list):
if isinstance(results["bare_with_attr"], list):

bare_name = results["bare_with_attr"][0]
else:
bare_name = results["bare_with_attr"]
new_name = self.replace.get(bare_name.value)
if new_name:
bare_name.replace(Name(new_name, prefix=bare_name.prefix))
16 changes: 16 additions & 0 deletions 16 Lib/lib2to3/fixes/fix_imports3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"""Fix incompatible imports and module references that get fix_renames after
fix_imports.
"""
from . import fix_imports


MAPPING = {
'Cookie': 'http.cookies',

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you format indentation in this file?

}


class FixImports3(fix_imports.FixImports):

run_order = 7

mapping = MAPPING
3 changes: 2 additions & 1 deletion 3 Lib/lib2to3/fixes/fix_renames.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
from .. import fixer_base
from ..fixer_util import Name, attr_chain

MAPPING = {"sys": {"maxint" : "maxsize"},
MAPPING = {"sys": {"maxint": "maxsize"},
"http.cookies": {"Cookie": "SimpleCookie"},
}
LOOKUP = {}

Expand Down
17 changes: 17 additions & 0 deletions 17 Lib/lib2to3/tests/test_fixers.py
Original file line number Diff line number Diff line change
Expand Up @@ -1815,6 +1815,23 @@ class Test_imports2(FixerTestCase, ImportsFixerTests):
from ..fixes.fix_imports2 import MAPPING as modules


class Test_imports3(FixerTestCase):

def setUp(self):
super(Test_imports3, self).setUp(['imports3', 'renames'])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you only include imports3 in this test class? You can make a separate test class for the combination of imports3 and renames.


def test_cookie(self):
b = """
import Cookie
c = Cookie.Cookie('abc')
"""
a = """
import http.cookies
c = http.cookies.SimpleCookie('abc')
"""
self.check(b, a)


class Test_imports_fixer_order(FixerTestCase, ImportsFixerTests):

def setUp(self):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2to3 convert Cookie.Cookie properly. Patch by Aldwin Pollefeyt
Morty Proxy This is a proxified and sanitized view of the page, visit original site.