django-esi 5.1.0__py3-none-any.whl → 5.3.0b1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of django-esi might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: django-esi
3
- Version: 5.1.0
3
+ Version: 5.3.0b1
4
4
  Summary: Django app for accessing the EVE Swagger Interface (ESI).
5
5
  Author-email: Alliance Auth <adarnof@gmail.com>
6
6
  Requires-Python: >=3.8
@@ -11,6 +11,7 @@ Classifier: Framework :: Django :: 3.2
11
11
  Classifier: Framework :: Django :: 4.0
12
12
  Classifier: Framework :: Django :: 4.1
13
13
  Classifier: Framework :: Django :: 4.2
14
+ Classifier: Framework :: Django :: 5.0
14
15
  Classifier: Intended Audience :: Developers
15
16
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
16
17
  Classifier: Operating System :: OS Independent
@@ -20,11 +21,12 @@ Classifier: Programming Language :: Python :: 3.8
20
21
  Classifier: Programming Language :: Python :: 3.9
21
22
  Classifier: Programming Language :: Python :: 3.10
22
23
  Classifier: Programming Language :: Python :: 3.11
24
+ Classifier: Programming Language :: Python :: 3.12
23
25
  Classifier: Topic :: Internet :: WWW/HTTP
24
26
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
25
27
  Requires-Dist: bravado>=10.6.0,<11.0
26
28
  Requires-Dist: celery>=4.0.2
27
- Requires-Dist: django>=2.2,<5
29
+ Requires-Dist: django>=2.2,<5.1
28
30
  Requires-Dist: jsonschema<4.0.0
29
31
  Requires-Dist: python-jose>=3.3.0
30
32
  Requires-Dist: requests>=2.26.0
@@ -64,6 +66,11 @@ Django-esi adds the following main functionalities to a Django site:
64
66
  - Support for adding EVE SSO to authenticate characters and retrieve tokens
65
67
  - Control over which ESI endpoint versions are used
66
68
 
69
+ ## Python Support
70
+
71
+ Django-esi follows the Django Python support schedule, The supported version of Python will differ based on the version of Django used.
72
+ <https://docs.djangoproject.com/en/5.0/faq/install/#what-python-version-can-i-use-with-django>
73
+
67
74
  ## History of this app
68
75
 
69
76
  This app is a fork from [adarnauth-esi](https://gitlab.com/Adarnof/adarnauth-esi). Since this app is an important component of the [Alliance Auth](https://gitlab.com/allianceauth/allianceauth) system and Adarnof - the original author - was no longer able to maintain it the AA dev team has decided in December 2019 to take over maintenance and further developing for this app within the Alliance Auth project.
@@ -1,32 +1,34 @@
1
- esi/__init__.py,sha256=ryikBUloJ7Atd77Nurso9nfMWQMFLXIL5oSbBzW9mIY,155
1
+ esi/__init__.py,sha256=e2a8pk9JZ2i5PGZ9dauTYBgJCKnI8w7ldFspjYDhS30,157
2
2
  esi/admin.py,sha256=vfpTW1WOLmAxQKAAW8d_Nrkn1MvVRO9raQrHGXpW2l4,1100
3
- esi/app_settings.py,sha256=_9LoM-Gwv8e29deZBN7m7-htGbKrmta-KFTyqlhmSpY,3629
3
+ esi/app_settings.py,sha256=O8TkKonK2zdF7RjMem1vMhEMulAtjvksxKgchrI8jME,3783
4
4
  esi/apps.py,sha256=RXDeRh62DO8NcKEzpiQovOay9wmb7MoVyC1W-cc-Aqc,272
5
5
  esi/checks.py,sha256=o3ka-Ux3QqTaf0u-oFGCPxwuG7DNJ3XYXiC7_2rQ1Ic,1154
6
- esi/clients.py,sha256=tPhPSalwSqn2au8QNrlLFrc7yujMUV5JyxzIJu-DPbM,21231
6
+ esi/clients.py,sha256=gkkJVZ9xqcd0TOI-5VduqYLaave1LjI16ucckr3UX9o,21303
7
7
  esi/decorators.py,sha256=USqGaIrVoyMpKlUB_ddZPe7QK0fBrFqAnoZDj8MMlSI,8081
8
8
  esi/errors.py,sha256=KfFtgX8Mys4uMoQtco0n_pQeaM83yVrRSyW6StXuUjo,308
9
- esi/managers.py,sha256=JfsUhAxB7oI9msr-1TS9FklgsQfwLBjOKbBHVFTgdg4,11144
9
+ esi/managers.py,sha256=VEob7SGDq1AMn8i8Rw5zLQrHSmi_rHN9KNHq2nA-mgo,11455
10
10
  esi/models.py,sha256=fJJu8rLDMGW3ChxwFAZtFBWKB7PgMuDBatTuT06gWiA,11412
11
11
  esi/tasks.py,sha256=6wOqlANbQ83uvOt0L4_QHaLz0YZe1jtrQyr7zmxKY6g,1516
12
12
  esi/urls.py,sha256=RV_ZirfB3oEElPGXfj33m6FqwVdFRADDW9bN1WwJU2E,161
13
13
  esi/views.py,sha256=ytfCILjz1rzITGgAGPyCY9bkFpE3KUfnii2UpHu6Bmc,3916
14
- esi/locale/de/LC_MESSAGES/django.mo,sha256=Z4fCcLmYciCm7oy040UUSUkrL3DMe154AYygXUFYdic,820
15
- esi/locale/de/LC_MESSAGES/django.po,sha256=Moyf4mTvnM_G51mxx_Da-zPHiafZiQYcs_ryk4EqH7Q,1503
14
+ esi/locale/de/LC_MESSAGES/django.mo,sha256=9_Fc_R8oZpT_CojH8gBxdSqj2K84EMEMn4wkvmOr7Dg,820
15
+ esi/locale/de/LC_MESSAGES/django.po,sha256=2NQVGYzLroHPPrWgmACSnb2d3nwlkMBLxA1uWU3K0FA,1503
16
16
  esi/locale/en/LC_MESSAGES/django.mo,sha256=N1pb17IfLd0ASiKO8d68-B4ygSpDkhKOCs8YTzMXQo0,380
17
17
  esi/locale/en/LC_MESSAGES/django.po,sha256=yju3ikn-Ezszj75i4ohwOgxnBQR1LY3MMga90FSCyeo,1305
18
- esi/locale/es/LC_MESSAGES/django.mo,sha256=OMeiPjjdkHAdJc8F_FNWMgea51rj1kXQbYbPKtka0jE,737
19
- esi/locale/es/LC_MESSAGES/django.po,sha256=jf0KgsUrwBChNif5va3tMVVPqKwX85ha2fkevJ8AeX8,1504
18
+ esi/locale/es/LC_MESSAGES/django.mo,sha256=dtCivRk6vD0mT2Wx9kcBRtMhU41bdqERHkBYPLoI5qg,737
19
+ esi/locale/es/LC_MESSAGES/django.po,sha256=KvCk4FLdPl_SMEcEWL6KAr870ScmsL5jnyCJvpglOB4,1504
20
20
  esi/locale/fr_FR/LC_MESSAGES/django.mo,sha256=CG7EL6JGYoSVaAggmIvwerXuzf55b6VWmcOSK_1okik,643
21
21
  esi/locale/fr_FR/LC_MESSAGES/django.po,sha256=Tbzu6dMnnpILbMCUdzNC2VP4cOmrI8k0pWXGcNMqxZ0,1357
22
- esi/locale/ja/LC_MESSAGES/django.mo,sha256=Hv1VF_yg_fRhc_kEvjQIGidU_dLv23srV4usCSJ80c0,707
23
- esi/locale/ja/LC_MESSAGES/django.po,sha256=3QR81DdOTqO3AfvpsV53Ps99JvHM7-UiE-32Q9tfGfk,1476
24
- esi/locale/ko_KR/LC_MESSAGES/django.mo,sha256=CIeRE7EsfEmR-3r2Ug8WN_sklWULQC8fFqmyfmBWvlA,706
25
- esi/locale/ko_KR/LC_MESSAGES/django.po,sha256=lZUGKT0s0_IehrUEIv2_mq1Dxn69Z-ORPQ01evTm4tw,1511
26
- esi/locale/ru/LC_MESSAGES/django.mo,sha256=_zNp37NHx5COnbQXG3gbb0hWPn8ilhRMDCg-eGDw18E,915
27
- esi/locale/ru/LC_MESSAGES/django.po,sha256=out4zzOZH4zcrmFPjHgb2ZDxZNL0yLkEyX4-SUGEUDQ,1703
28
- esi/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=pJ5_gk0Bfe4XtcurPqKd-Xjk3cLOsXWuX2bQfpkPP7U,681
29
- esi/locale/zh_Hans/LC_MESSAGES/django.po,sha256=yesMV0-kqsFq3WDT_cSnB3kFVz5l6Gk8Dhte_Omq9qo,1451
22
+ esi/locale/it_IT/LC_MESSAGES/django.mo,sha256=uxEHOVorXW8JVcXmQwfUdfZAKZuQjnJLtJfc5v7EHVQ,877
23
+ esi/locale/it_IT/LC_MESSAGES/django.po,sha256=SFWEDp_hRVrm1mIW6I8IgOfSQ8kNMX6q8jZeYzZMuRU,1560
24
+ esi/locale/ja/LC_MESSAGES/django.mo,sha256=ogBCpZ3zBBiA10Ceu2rd8LnE8h3y6zgcKUCGNosUoo0,707
25
+ esi/locale/ja/LC_MESSAGES/django.po,sha256=uWDpo_f8YyTn6VIH1S87PbGvQnsCiKe_i9LYmiJPy3Q,1476
26
+ esi/locale/ko_KR/LC_MESSAGES/django.mo,sha256=-GXsBq-bhlghnrxsuNfS2rirCJn9sPQi1whTvRCvGV4,746
27
+ esi/locale/ko_KR/LC_MESSAGES/django.po,sha256=gjPHlrraWxVBS-H4n88y-5a2n7PbwvwZzeaZdP5aquc,1511
28
+ esi/locale/ru/LC_MESSAGES/django.mo,sha256=WbKkLTav0kXvfTadQ6fccwh0T7iI_1wmPVu_LjQaYMo,915
29
+ esi/locale/ru/LC_MESSAGES/django.po,sha256=_pMs3mMOGMiHGpk27p8ykllpGnw20l5sSDg-N27RNDY,1703
30
+ esi/locale/zh_Hans/LC_MESSAGES/django.mo,sha256=hPSO7wlU9cN8f32Qo1Dztq6AHUm2hZfL1hHIDW1R1F4,681
31
+ esi/locale/zh_Hans/LC_MESSAGES/django.po,sha256=fZhif8jOUvY22xurl7eBYsHNKoqf7obtkW5L3894hk4,1451
30
32
  esi/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
33
  esi/management/commands/migrate_to_ssov2.py,sha256=x9W4xaefrNoG_dNscHIWrWTRk4SuVGIW0s44q2QBN9k,6427
32
34
  esi/migrations/0001_initial.py,sha256=ItZOyyCRyfyxUhxCG1P08oylCY355gqOKGF3cJTQmcM,3396
@@ -56,7 +58,7 @@ esi/tests/factories.py,sha256=6I5Z9CKBtP26MwUwWEE8vSh_HFCvKGIGO-BLPoJeo7g,1368
56
58
  esi/tests/factories_2.py,sha256=25NqVe9zzHkl4U1EN3R7pjdN2ahIBXxrrJhQzZhvw58,1972
57
59
  esi/tests/jwt_factory.py,sha256=1Ilg99V7Nc_jtUFrYVNm6GfnJ2f5ev0vhpnDhRur8zo,4944
58
60
  esi/tests/test_checks.py,sha256=ntq2ijuJ-6pxGruNh21rM4GlXDLVm-o3sy8DrFbjwEM,1846
59
- esi/tests/test_clients.py,sha256=Vj7q19a-3530YtN4uXDMZyVKpQsZbD8KtXHWHCxZp2g,36061
61
+ esi/tests/test_clients.py,sha256=eaB0DniNrpaQiAQGokLMmcwWYq0H1iswz3fdKvuf3E4,36037
60
62
  esi/tests/test_decorators.py,sha256=I5MhcLKhN5xD4PxgEQqOWQ2kiXquDqQIEve9dbTOsho,15069
61
63
  esi/tests/test_management_command.py,sha256=mtxfBtG6CHP1bTy1tJEO-djX4SQwMT3T_mqGnUIM6qs,9863
62
64
  esi/tests/test_managers.py,sha256=V9KAnVnyXk2oHyy26aVm5FN5UTSG6Y63fU3FSGt7IHE,24548
@@ -67,7 +69,7 @@ esi/tests/test_tasks.py,sha256=P3vtqSno92DywNYu38nIo-_UiSicRAbun1AAsav0EBo,2104
67
69
  esi/tests/test_templatetags.py,sha256=b68JWE3HvOlr2aUisJHsTsDS4e7IMjDeqTuzMqC7Re4,517
68
70
  esi/tests/test_views.py,sha256=Kj_f2yIpmPG0kx-lAX_sfkaHlIpgbkm02ieA1V3o-k4,13073
69
71
  esi/tests/threading_pilot.py,sha256=ax_dEdnTNibA-UQHqbZle_2dh_3jcHKRyrYSOKuE_6U,1931
70
- django_esi-5.1.0.dist-info/LICENSE,sha256=WJ7YI-moTFb-uVrFjnzzhGJrnL9P2iqQe8NuED3hutI,35141
71
- django_esi-5.1.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
72
- django_esi-5.1.0.dist-info/METADATA,sha256=XIJWyP9QBkr6W3ATllpiA6KQuMQCtCkHdzT9VOf6Nhg,3930
73
- django_esi-5.1.0.dist-info/RECORD,,
72
+ django_esi-5.3.0b1.dist-info/LICENSE,sha256=WJ7YI-moTFb-uVrFjnzzhGJrnL9P2iqQe8NuED3hutI,35141
73
+ django_esi-5.3.0b1.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
74
+ django_esi-5.3.0b1.dist-info/METADATA,sha256=jgQw9_H0egqTGExUm43ipgEKgVcv4w_tHt7e5zWvVY4,4275
75
+ django_esi-5.3.0b1.dist-info/RECORD,,
esi/__init__.py CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  default_app_config = 'esi.apps.EsiConfig'
4
4
 
5
- __version__ = '5.1.0'
5
+ __version__ = '5.3.0b1'
6
6
  __title__ = 'django-esi'
esi/app_settings.py CHANGED
@@ -31,6 +31,8 @@ ESI_INFO_LOGGING_ENABLED = getattr(settings, 'ESI_INFO_LOGGING_ENABLED', False)
31
31
  ESI_LOG_LEVEL_LIBRARIES = str(getattr(settings, 'ESI_LOG_LEVEL_LIBRARIES', 'INFO'))
32
32
  """Set log level for libraries like bravado and urlib3."""
33
33
 
34
+ ESI_DEBUG_RESPONSE_CONTENT_LOGGING = getattr(settings, 'ESI_DEBUG_RESPONSE_CONTENT_LOGGING', True)
35
+ """Enable/Disable logging of ESI response contents."""
34
36
 
35
37
  ESI_USER_CONTACT_EMAIL = getattr(settings, 'ESI_USER_CONTACT_EMAIL', None)
36
38
  """Contact email address of server owner.
esi/clients.py CHANGED
@@ -263,7 +263,8 @@ class CachingHttpFuture(HttpFuture):
263
263
  result, response = super().result(**kwargs)
264
264
  logger.debug('ESI response status code: %s', response.status_code)
265
265
  logger.debug('ESI response headers: %s', response.headers)
266
- logger.debug('ESI response content: %s', response.text)
266
+ if app_settings.ESI_DEBUG_RESPONSE_CONTENT_LOGGING:
267
+ logger.debug('ESI response content: %s', response.text)
267
268
  break
268
269
  except (HTTPBadGateway, HTTPGatewayTimeout, HTTPServiceUnavailable) as ex:
269
270
  if retries < max_retries:
Binary file
@@ -12,7 +12,7 @@ msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2023-10-08 23:42+1000\n"
15
- "PO-Revision-Date: 2023-10-08 09:37+0000\n"
15
+ "PO-Revision-Date: 2023-10-25 11:04+0000\n"
16
16
  "Last-Translator: Peter Pfeufer, 2023\n"
17
17
  "Language-Team: German (https://app.transifex.com/alliance-auth/teams/107430/de/)\n"
18
18
  "MIME-Version: 1.0\n"
Binary file
@@ -12,7 +12,7 @@ msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2023-10-08 23:42+1000\n"
15
- "PO-Revision-Date: 2023-10-08 09:37+0000\n"
15
+ "PO-Revision-Date: 2023-10-25 11:04+0000\n"
16
16
  "Last-Translator: trenus, 2023\n"
17
17
  "Language-Team: Spanish (https://app.transifex.com/alliance-auth/teams/107430/es/)\n"
18
18
  "MIME-Version: 1.0\n"
Binary file
@@ -0,0 +1,57 @@
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+ # This file is distributed under the same license as the PACKAGE package.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+ #
6
+ # Translators:
7
+ # Thomas Turini, 2024
8
+ #
9
+ #, fuzzy
10
+ msgid ""
11
+ msgstr ""
12
+ "Project-Id-Version: PACKAGE VERSION\n"
13
+ "Report-Msgid-Bugs-To: \n"
14
+ "POT-Creation-Date: 2023-10-08 23:42+1000\n"
15
+ "PO-Revision-Date: 2023-10-25 11:04+0000\n"
16
+ "Last-Translator: Thomas Turini, 2024\n"
17
+ "Language-Team: Italian (Italy) (https://app.transifex.com/alliance-auth/teams/107430/it_IT/)\n"
18
+ "MIME-Version: 1.0\n"
19
+ "Content-Type: text/plain; charset=UTF-8\n"
20
+ "Content-Transfer-Encoding: 8bit\n"
21
+ "Language: it_IT\n"
22
+ "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
23
+
24
+ #: esi/models.py:72
25
+ msgid "Character"
26
+ msgstr "Personaggio"
27
+
28
+ #: esi/models.py:73
29
+ msgid "Corporation"
30
+ msgstr "Corporazione"
31
+
32
+ #: esi/templates/esi/select_token.html:13
33
+ msgid "ESI Token Selection"
34
+ msgstr "Selezione dei Token ESI"
35
+
36
+ #: esi/templates/esi/select_token.html:44
37
+ msgid "Select Character"
38
+ msgstr "Selezione Personaggio"
39
+
40
+ #: esi/templates/esi/select_token.html:48
41
+ msgid "Scopes Requested"
42
+ msgstr "Ambito Richiesto"
43
+
44
+ #: esi/templates/esi/select_token.html:61
45
+ #: esi/templates/esi/select_token.html:98
46
+ msgid "New Character"
47
+ msgstr "Nuovo Personaggio"
48
+
49
+ #: esi/templates/esi/select_token.html:71
50
+ #: esi/templates/esi/select_token.html:107
51
+ msgid "Add Token"
52
+ msgstr "Agg. Token"
53
+
54
+ #: esi/templates/esi/select_token.html:88
55
+ #: esi/templates/esi/select_token.html:89
56
+ msgid "Select"
57
+ msgstr "Seleziona"
Binary file
@@ -12,7 +12,7 @@ msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2023-10-08 23:42+1000\n"
15
- "PO-Revision-Date: 2023-10-08 09:37+0000\n"
15
+ "PO-Revision-Date: 2023-10-25 11:04+0000\n"
16
16
  "Last-Translator: kotaneko, 2023\n"
17
17
  "Language-Team: Japanese (https://app.transifex.com/alliance-auth/teams/107430/ja/)\n"
18
18
  "MIME-Version: 1.0\n"
Binary file
@@ -12,7 +12,7 @@ msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2023-10-08 23:42+1000\n"
15
- "PO-Revision-Date: 2023-10-08 09:37+0000\n"
15
+ "PO-Revision-Date: 2023-10-25 11:04+0000\n"
16
16
  "Last-Translator: Seowon Jung <seowon@hawaii.edu>, 2023\n"
17
17
  "Language-Team: Korean (Korea) (https://app.transifex.com/alliance-auth/teams/107430/ko_KR/)\n"
18
18
  "MIME-Version: 1.0\n"
Binary file
@@ -12,7 +12,7 @@ msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2023-10-08 23:42+1000\n"
15
- "PO-Revision-Date: 2023-10-08 09:37+0000\n"
15
+ "PO-Revision-Date: 2023-10-25 11:04+0000\n"
16
16
  "Last-Translator: Filipp Chertiev <f@fzfx.ru>, 2023\n"
17
17
  "Language-Team: Russian (https://app.transifex.com/alliance-auth/teams/107430/ru/)\n"
18
18
  "MIME-Version: 1.0\n"
Binary file
@@ -12,7 +12,7 @@ msgstr ""
12
12
  "Project-Id-Version: PACKAGE VERSION\n"
13
13
  "Report-Msgid-Bugs-To: \n"
14
14
  "POT-Creation-Date: 2023-10-08 23:42+1000\n"
15
- "PO-Revision-Date: 2023-10-08 09:37+0000\n"
15
+ "PO-Revision-Date: 2023-10-25 11:04+0000\n"
16
16
  "Last-Translator: heguyChen, 2023\n"
17
17
  "Language-Team: Chinese Simplified (https://app.transifex.com/alliance-auth/teams/107430/zh-Hans/)\n"
18
18
  "MIME-Version: 1.0\n"
esi/managers.py CHANGED
@@ -76,9 +76,25 @@ class TokenQueryset(models.QuerySet):
76
76
  All tokens which are still valid.
77
77
  """
78
78
  expired = self.get_expired()
79
- valid = self.exclude(pk__in=expired)
80
- valid_expired = expired.bulk_refresh()
81
- return valid_expired | valid
79
+ valid = list(
80
+ self.exclude(
81
+ pk__in=expired
82
+ ).values_list(
83
+ "pk",
84
+ flat=True
85
+ )
86
+ )
87
+ valid_expired = list(
88
+ expired.bulk_refresh(
89
+ ).values_list(
90
+ "pk",
91
+ flat=True
92
+ )
93
+ )
94
+ _qs = self.filter(
95
+ pk__in=(valid + valid_expired)
96
+ )
97
+ return _qs
82
98
 
83
99
  def require_scopes(self, scope_string: Union[str, list]) -> models.QuerySet:
84
100
  """Filter tokens which have at least a subset of given scopes.
esi/tests/test_clients.py CHANGED
@@ -1,4 +1,4 @@
1
- from datetime import datetime, timedelta
1
+ from datetime import datetime, timedelta, timezone
2
2
  import os
3
3
  from unittest.mock import patch, Mock
4
4
  import json
@@ -12,7 +12,6 @@ import requests_mock
12
12
  import django
13
13
  from django.contrib.auth.models import User
14
14
  from django.core.cache import cache
15
- from django.utils import timezone
16
15
 
17
16
  from . import _generate_token, _store_as_Token, NoSocketsTestCase
18
17
  from .factories import create_http_error