jazzband / django-push-notifications

Send push notifications to mobile devices through GCM or APNS in Django.
MIT License
2.23k stars 605 forks source link

Migrating to FCM v1 API causes dependency issues with apns2 #729

Open kbunarjo opened 2 weeks ago

kbunarjo commented 2 weeks ago

When I try to install the firebase-admin package in order to migrate to FCM v1 API (https://github.com/jazzband/django-push-notifications/blob/master/docs/FCM.rst), I get this error (I am using Poetry to handle dependencies)

Because no versions of pyjwt match >2.5.0,<2.6.0 || >2.6.0,<2.7.0 || >2.7.0,<2.8.0 || >2.8.0
 and pyjwt (2.5.0) depends on pyjwt (2.5.0), pyjwt (>=2.5.0,<2.6.0 || >2.6.0,<2.7.0 || >2.7.0,<2.8.0 || >2.8.0) requires pyjwt (2.5.0).
And because pyjwt (2.6.0) depends on pyjwt (2.6.0), pyjwt (>=2.5.0,<2.7.0 || >2.7.0,<2.8.0 || >2.8.0) requires pyjwt (2.5.0 || 2.6.0).
And because pyjwt (2.7.0) depends on pyjwt (2.7.0)
 and pyjwt (2.8.0) depends on pyjwt (2.8.0), pyjwt (>=2.5.0) requires pyjwt (2.5.0 || 2.6.0 || 2.7.0 || 2.8.0).
Because no versions of firebase-admin match >6.5.0,<7.0.0
 and firebase-admin (6.5.0) depends on pyjwt (>=2.5.0), firebase-admin (>=6.5.0,<7.0.0) requires pyjwt (>=2.5.0).
Thus, firebase-admin (>=6.5.0,<7.0.0) requires pyjwt (2.5.0 || 2.6.0 || 2.7.0 || 2.8.0).
So, because doter-server depends on both PyJWT (1.7.1) and firebase-admin (^6.5.0), version solving failed.

It looks like the apns2 package (which is used for APNS service in this package) requires pyjwt that's less than v2.5.0 but firebase-admin requires one that is >=2.5.0

FWIW, it looks like this is actually an issue with apns2 referencing the wrong version: https://github.com/Pr0Ger/PyAPNs2/issues/133

Does anyone know how to get around this? Am I doing something wrong?

martinrlilja commented 2 weeks ago

We seem to run into the same issue, just that poetry never finishes/hangs when creating the lock file.

kbunarjo commented 2 weeks ago

@martinrlilja how are you guys going about updating the package to account for FCM's move to the new API? is there an older version that supports the new FCM API but doesn't conflict with apns2?

kbunarjo commented 2 weeks ago

For those trying to get this to work, I had to remove apns2 and then re-add the package to use the github version (not the pypi version). The github version uses the correct version of pyjwt, but it was never released to pypi.

Using poetry:

poetry remove apns2
poetry add "git+https://github.com/Pr0Ger/PyAPNs2@master"

After that, upgrading this package works.