Recently new version djangorestframework 3.12.0 is release, from then onwards getting the error
Traceback (most recent call last):
15:52:18 File "/usr/local/lib/python3.7/site-packages/rest_framework/settings.py", line 177, in import_from_string
15:52:18 return import_string(val)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/utils/module_loading.py", line 17, in import_string
15:52:18 module = import_module(module_path)
15:52:18 File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
15:52:18 return _bootstrap._gcd_import(name[level:], package, level)
15:52:18 File "
15:52:18 File "
15:52:18 File "
15:52:18 File "
15:52:18 File "
15:52:18 File "
15:52:18 File "/usr/local/lib/python3.7/site-packages/drf_yasg/generators.py", line 11, in
15:52:18 from rest_framework.compat import URLPattern, URLResolver, get_original_route
15:52:18 ImportError: cannot import name 'URLPattern' from 'rest_framework.compat' (/usr/local/lib/python3.7/site-packages/rest_framework/compat.py)
15:52:18
15:52:18 During handling of the above exception, another exception occurred:
15:52:18
15:52:18 Traceback (most recent call last):
15:52:18 File "manage.py", line 8, in
15:52:18 execute_from_command_line(sys.argv)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
15:52:18 utility.execute()
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
15:52:18 self.fetch_command(subcommand).run_from_argv(self.argv)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/commands/test.py", line 23, in run_from_argv
15:52:18 super().run_from_argv(argv)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
15:52:18 self.execute(args, cmd_options)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
15:52:18 output = self.handle(args, *options)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/commands/test.py", line 53, in handle
15:52:18 failures = test_runner.run_tests(test_labels)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/test/runner.py", line 632, in run_tests
15:52:18 self.run_checks()
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/test/runner.py", line 570, in run_checks
15:52:18 call_command('check', verbosity=self.verbosity)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 148, in call_command
15:52:18 return command.execute(args, *defaults)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute
15:52:18 output = self.handle(args, **options)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/commands/check.py", line 64, in handle
15:52:18 fail_level=getattr(checks, options['fail_level']),
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 390, in check
15:52:18 include_deployment_checks=include_deployment_checks,
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 377, in _run_checks
15:52:18 return checks.run_checks(kwargs)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/checks/registry.py", line 72, in run_checks
15:52:18 new_errors = check(app_configs=app_configs)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/checks/urls.py", line 13, in check_url_config
15:52:18 return check_resolver(resolver)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/core/checks/urls.py", line 23, in check_resolver
15:52:18 return check_method()
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 399, in check
15:52:18 for pattern in self.url_patterns:
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__
15:52:18 res = instance.__dict__[self.name] = self.func(instance)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 584, in url_patterns
15:52:18 patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__
15:52:18 res = instance.__dict__[self.name] = self.func(instance)
15:52:18 File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 577, in urlconf_module
15:52:18 return import_module(self.urlconf_name)
15:52:18 File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
15:52:18 return _bootstrap._gcd_import(name[level:], package, level)
15:52:18 File "
15:52:18 File "
15:52:18 File "
15:52:18 File "
15:52:18 File "
15:52:18 File "
15:52:18 File "/home/jenkins/workspace/ta-dashboard-db-migration_PR-159/settings/urls.py", line 38, in
15:52:18 permission_classes=(permissions.AllowAny,),
15:52:18 File "/usr/local/lib/python3.7/site-packages/drf_yasg/views.py", line 67, in get_schema_view
15:52:18 _generator_class = generator_class or swagger_settings.DEFAULT_GENERATOR_CLASS
15:52:18 File "/usr/local/lib/python3.7/site-packages/drf_yasg/app_settings.py", line 122, in __getattr__
15:52:18 val = perform_import(val, attr)
15:52:18 File "/usr/local/lib/python3.7/site-packages/rest_framework/settings.py", line 166, in perform_import
15:52:18 return import_from_string(val, setting_name)
15:52:18 File "/usr/local/lib/python3.7/site-packages/rest_framework/settings.py", line 180, in import_from_string
15:52:18 raise ImportError(msg)
15:52:18 ImportError: Could not import 'drf_yasg.generators.OpenAPISchemaGenerator' for API setting 'DEFAULT_GENERATOR_CLASS'. ImportError: cannot import name 'URLPattern' from 'rest_framework.compat' (/usr/local/lib/python3.7/site-packages/rest_framework/compat.py).
Faced this issue also
Patched with #642
Patched with #642
build failed?
It's not needed to write a local compat.py, I've just patched it by fixing imports into generators.py and copying from compat.py the old get_original_route. Or we can just put the get_original_route into the local compat.py to temporary patch it.
I will open a PR with my patch and we'll check tests
PR #648, green build
Also reported in #641
Faced this issue also
@MidoAhmed Please see they newly released, updated fork drf-yasg2: https://github.com/axnsan12/drf-yasg/issues/641#issuecomment-704327697
Fixed now in master, thanks for the report.
@axnsan12 great work thanks
Most helpful comment
Fixed now in master, thanks for the report.