Closed Bug 1597737 Opened 5 years ago Closed 5 years ago

[py3] ImportError: cannot import name 'urlparse'

Categories

(Remote Protocol :: Marionette, defect)

70 Branch
defect
Not set
normal

Tracking

(firefox72 fixed)

RESOLVED FIXED
mozilla72
Tracking Status
firefox72 --- fixed

People

(Reporter: rgpt, Assigned: rgpt, Mentored)

References

Details

(Whiteboard: [lang=py])

User Story

To get started with contributing please check the following documentation:
https://firefox-source-docs.mozilla.org/testing/marionette/Contributing.html

Attachments

(2 files)

User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:70.0) Gecko/20100101 Firefox/70.0

Steps to reproduce:

Tried to run marionette harness on py3

Actual results:

import urlparse
does not work on py3

Expected results:

should be working on py3 keeping it compatible to py2
ImportError: cannot import name 'urlparse'

in testing/marionette/harness/marionette_harness/runner/httpd.py

Depends on: 1355537
Attached file Detailed Error Log

Rishi, feel free to add the full stack trace as comment inside of triple-backticks. That way it is formatted as code and is query-able in Bugzilla.

ImportError: No module named 'urlparse'

  File "/home/rgpt/Desktop/mozilla/mozilla-unified/python/mach/mach/main.py", line 360, in run
    return self._run(argv)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/python/mach/mach/main.py", line 415, in _run
    args = parser.parse_args(argv)
  File "/usr/lib/python3.5/argparse.py", line 1735, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/usr/lib/python3.5/argparse.py", line 1767, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "/usr/lib/python3.5/argparse.py", line 1976, in _parse_known_args
    stop_index = consume_positionals(start_index)
  File "/usr/lib/python3.5/argparse.py", line 1932, in consume_positionals
    take_action(action, args)
  File "/usr/lib/python3.5/argparse.py", line 1841, in take_action
    action(self, namespace, argument_values, option_string)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/python/mach/mach/dispatcher.py", line 179, in __call__
    if handler.parser:
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/python/mach/mach/decorators.py", line 77, in parser
    self._parser = self._parser()
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/testing/marionette/mach_commands.py", line 26, in create_parser_tests
    from marionette_harness.runtests import MarionetteArguments
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/testing/marionette/harness/marionette_harness/__init__.py", line 23, in <module>
    from .runner import (
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/testing/marionette/harness/marionette_harness/runner/__init__.py", line 7, in <module>
    from .base import (
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/testing/marionette/harness/marionette_harness/runner/base.py", line 34, in <module>
    from . import serve
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/testing/marionette/harness/marionette_harness/runner/serve.py", line 21, in <module>
    from . import httpd
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/testing/marionette/harness/marionette_harness/runner/httpd.py", line 19, in <module>
    import urlparse
  File "/home/rgpt/Desktop/mozilla/mozilla-unified/build/mach_bootstrap.py", line 431, in __call__
    module = self._original_import(name, globals, locals, fromlist, level)

Fixing the dependency given that it blocks the Marionette harness but not the driver.

Blocks: 1597773
Status: UNCONFIRMED → NEW
No longer depends on: 1355537
Ever confirmed: true
Summary: ImportError: cannot import name 'urlparse' → [py3] ImportError: cannot import name 'urlparse'

I will follow that from next time.

Mentor: hskupin
User Story: (updated)
Whiteboard: [lang=py]

Hi Rishi ~
The python3.x version has merged urllib2, urlparse, and robotparser into the urllib module, which contains 5 submodules, as follows:
urllib.error, urllib.parse, urllib.request, urllib.response, urllib.robotparser.
Solution:
import urlparse
my_url = urlparse.urlparse(url)
change to
from urllib import parse
my_url = parse.urlparse(url)

or you just change the import line base on your codes like
from urllib.parse import urlparse

I hope that helps you!

Thanks guow10. We are most likely going to make use of six here, which would allow to import the module via: import six.moves.urllib.

Assignee: nobody → rishigpt2009
Status: NEW → ASSIGNED
Pushed by hskupin@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/5fe975a91529
Importing urlparse from six to keep py2, py3 compatible r=whimboo,marionette-reviewers
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla72
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: