autopkgtest is broken on Noble, due to `python3-pytz` not being renamed
yet from `python3-tz`. I'll upload version 0.15.1-1~24.04.2 to fix that
(it had autopkgtest successfully pass locally on Noble).

** Description changed:

  [ Impact ]
  The package is completely unusable. You can see the original description's bug
  reproducer, where even a dead-simple empty Django app using tastypie would not
  even start to run.
  
  I've tried to see if some minimal patching of the existing version to make it
  work with modern Django would work, without success. I always end-up hitting
  some wall, and at this point, I much better trust backporting the latest
  upstream version that is already in both Debian and Resolute.
  This is what this SRU is about, backporting the full version from Resolute.
  
- 
  [ Test Plan ]
  
- With the attached `tastytest.tar` file, that contains a dead simple Tastypie
- application example.
+ This new backported version includes way more relevant autopkgtest, so
+ if those are green, that means the whole upstream test suite is passing,
+ which is at least something.
+ 
+ Also, with the attached `tastytest.tar` file, that contains a dead simple 
Tastypie application example:
  ```
  $ tar xvf tastytest.tar
  $ cd tastytest
  $ ./manage.py migrate
  $ ./manage.py loaddata ./fixtures.json
  $ ./manage.py runserver &
  $ curl "http://127.0.0.1:8000/api/v1/entry/?format=json"; | jq
  ```
  The Django development server should start successfully and the last `curl` 
call
  should yield meaningful results.
  
  Additionally, the Ubuntu Error Tracker is a nice real-world use-case of
  Tastypie: https://github.com/ubuntu/error-tracker
  One should be able to run its web part using the fixed `django-tastypie` 
package
  (it should at least start, but it's known to be quite broken currently on 
modern
  Python stack).
  
- 
  [ Where problems could occur ]
  
  Well, the biggest risk I see would be if someone would make use of Django
  Tastypie from the system, with a Django version not from the system, but being
  compatible. In that case they might end-up with a working setup, and would
  thus be at risk of having regressions possibly coming with the newer version
  of `django-tastypie`.
  However I see multiple mitigations of that risk:
-   * django-tastypie's release notes[1] show that the changes are mostly 
bugfixes
-     and support for newer Django versions. I can't spot any deprecated 
feature,
-     so that's a really good sign that the risk of regression should be fairly
-     small.
-   * The mixed setup I just described is hopefully not something people do in
-     real life. Given how broken django-tastypie currently is, my guess is that
-     people simply tend to move away from using distro-provided packages like
-     that, despite the supposed improvement in security that the distro brings.
-     Otherwise, I hope we would have already received a bug report.
+   * django-tastypie's release notes[1] show that the changes are mostly 
bugfixes
+     and support for newer Django versions. I can't spot any deprecated 
feature,
+     so that's a really good sign that the risk of regression should be fairly
+     small.
+   * The mixed setup I just described is hopefully not something people do in
+     real life. Given how broken django-tastypie currently is, my guess is that
+     people simply tend to move away from using distro-provided packages like
+     that, despite the supposed improvement in security that the distro brings.
+     Otherwise, I hope we would have already received a bug report.
  
  [1]: https://github.com/django-tastypie/django-tastypie/releases
- 
  
  [ Other Info ]
  
  See below for the original description from the associated Debian bug.
  
- 
  [ Original description ]
- 
  
  Imported from Debian bug http://bugs.debian.org/1122968:
  
  Source: django-tastypie
  Version: 0.14.3-1
  Severity: grave
  Justification: renders package unusable
  X-Debbugs-Cc: [email protected]
  
  Hello there, dear maintainers,
  
  Since the release of Django 4, many breaking changes are affecting 
django-tastypie, making it pretty much unusable.
  See the following session in an up-to-date `sid` container:
  
  root@sid:/tmp# dpkg-query -W python3-django
  python3-django        3:4.2.26-1
  root@sid:/tmp# dpkg-query -W python3-django-tastypie
  python3-django-tastypie       0.14.3-1
  root@sid:/tmp# django-admin startproject tastytest
  root@sid:/tmp# cd tastytest/
  root@sid:/tmp/tastytest# cat - >tastytest/urls.py <<EOF
  from django.urls.conf import re_path, include
  from tastypie.api import Api
  from myapp.api import EntryResource
  
  v1_api = Api(api_name='v1')
  v1_api.register(EntryResource())
  
  urlpatterns = [
       # The normal jazz here then...
       re_path(r'^api/', include(v1_api.urls)),
  ]
  EOF
  root@sid:/tmp/tastytest# ./manage.py runserver
  Watching for file changes with StatReloader
  Performing system checks...
  
  Exception in thread django-main-thread:
  Traceback (most recent call last):
     File "/usr/lib/python3.13/threading.py", line 1044, in _bootstrap_inner
       self.run()
       ~~~~~~~~^^
     File "/usr/lib/python3.13/threading.py", line 995, in run
       self._target(*self._args, **self._kwargs)
       ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     File "/usr/lib/python3/dist-packages/django/utils/autoreload.py", line 64, 
in wrapper
       fn(*args, **kwargs)
       ~~^^^^^^^^^^^^^^^^^
     File 
"/usr/lib/python3/dist-packages/django/core/management/commands/runserver.py", 
line 133, in inner_run
       self.check(display_num_errors=True)
       ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
     File "/usr/lib/python3/dist-packages/django/core/management/base.py", line 
485, in check
       all_issues = checks.run_checks(
           app_configs=app_configs,
       ...<2 lines>...
           databases=databases,
       )
     File "/usr/lib/python3/dist-packages/django/core/checks/registry.py", line 
88, in run_checks
       new_errors = check(app_configs=app_configs, databases=databases)
     File "/usr/lib/python3/dist-packages/django/core/checks/urls.py", line 14, 
in check_url_config
       return check_resolver(resolver)
     File "/usr/lib/python3/dist-packages/django/core/checks/urls.py", line 24, 
in check_resolver
       return check_method()
     File "/usr/lib/python3/dist-packages/django/urls/resolvers.py", line 494, 
in check
       for pattern in self.url_patterns:
                      ^^^^^^^^^^^^^^^^^
     File "/usr/lib/python3/dist-packages/django/utils/functional.py", line 57, 
in __get__
       res = instance.__dict__[self.name] = self.func(instance)
                                            ~~~~~~~~~^^^^^^^^^^
     File "/usr/lib/python3/dist-packages/django/urls/resolvers.py", line 715, 
in url_patterns
       patterns = getattr(self.urlconf_module, "urlpatterns", 
self.urlconf_module)
                          ^^^^^^^^^^^^^^^^^^^
     File "/usr/lib/python3/dist-packages/django/utils/functional.py", line 57, 
in __get__
       res = instance.__dict__[self.name] = self.func(instance)
                                            ~~~~~~~~~^^^^^^^^^^
     File "/usr/lib/python3/dist-packages/django/urls/resolvers.py", line 708, 
in urlconf_module
       return import_module(self.urlconf_name)
     File "/usr/lib/python3.13/importlib/__init__.py", line 88, in import_module
       return _bootstrap._gcd_import(name[level:], package, level)
              ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
     File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
     File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
     File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
     File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
     File "<frozen importlib._bootstrap_external>", line 1023, in exec_module
     File "<frozen importlib._bootstrap>", line 488, in 
_call_with_frames_removed
     File "/tmp/tastytest/tastytest/urls.py", line 2, in <module>
       from tastypie.api import Api
     File "/usr/lib/python3/dist-packages/tastypie/api.py", line 3, in <module>
       from django.conf.urls import url, include
  ImportError: cannot import name 'url' from 'django.conf.urls' 
(/usr/lib/python3/dist-packages/django/conf/urls/__init__.py). Did you mean: 
'urls'?
  ^Croot@sid:/tmp/tastytest#
  
  This can be fixed by simply packaging a newer upstream release, as they
  support Django up to 5.2.
  
  A branch fixing this can be found here: https://salsa.debian.org/python-
  team/packages/django-tastypie/-/merge_requests/2
  
  Thanks
  Skia
  
  -- System Information:
  Debian Release: forky/sid
     APT prefers resolute
     APT policy: (500, 'resolute'), (500, 'questing-updates'), (500, 
'questing'), (200, 'noble-updates'), (200, 'noble-backports'), (200, 'noble'), 
(100, 'resolute-proposed'), (100, 'questing-proposed')
  Architecture: amd64 (x86_64)
  Foreign Architectures: i386
  
  Kernel: Linux 6.17.0-7-generic (SMP w/12 CPU threads; PREEMPT)
  Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_WARN, TAINT_OOT_MODULE
  Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not 
set
  Shell: /bin/sh linked to /usr/bin/dash
  Init: systemd (via /run/systemd/system)
  LSM: AppArmor: enabled

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2136109

Title:
  [SRU] django-tastypie: tastypie is completely broken against Django 4+

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/django-tastypie/+bug/2136109/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to