Skip to content

Commit a133dff

Browse files
authored
Update from jazz (#53)
* Jazz Update: removed usages of datetime.utcnow() and datetime.utcfromtimestamp() by @kozlek * Drop Black: Removed black for ruff * Missing CI dependency: Fixed freezegun package missing in CI test * EOL Python: Removed EOL python * more on CI test
1 parent a589419 commit a133dff

File tree

5 files changed

+39
-34
lines changed

5 files changed

+39
-34
lines changed

.github/workflows/test_full.yml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,17 @@ jobs:
1111
runs-on: ubuntu-latest
1212
strategy:
1313
matrix:
14-
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11']
15-
django-version: ['<2.1', '<2.2', '<3.0', '<3.1', '<3.2', '<3.3', '<4.1', '<4.2']
14+
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
15+
django-version: ['<3.2', '<3.3', '<4.1', '<4.2']
16+
exclude:
17+
- python-version: '3.8'
18+
django-version: '<5.1'
19+
- python-version: '3.9'
20+
django-version: '<5.1'
21+
- python-version: '3.12'
22+
django-version: '<3.2'
23+
- python-version: '3.12'
24+
django-version: '<3.3'
1625

1726
steps:
1827
- uses: actions/checkout@v4
@@ -23,7 +32,7 @@ jobs:
2332
- name: Install core
2433
run: pip install "Django${{ matrix.django-version }}"
2534
- name: Install tests
26-
run: pip install pytest pytest-asyncio pytest-django django-ninja-extra python-jose==3.3.0 pyjwt[crypto]
35+
run: pip install pytest pytest-asyncio pytest-django django-ninja-extra 'python-jose==3.3.0' 'pyjwt[crypto]' freezegun
2736
- name: Test
2837
run: pytest
2938
codestyle:
@@ -39,7 +48,5 @@ jobs:
3948
run: pip install flit
4049
- name: Install Dependencies
4150
run: flit install --symlink
42-
- name: Black
43-
run: black --check ninja_jwt tests
4451
- name: Ruff Linting Check
4552
run: ruff check ninja_jwt tests

Makefile

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,28 @@ clean: ## Removing cached python compiled files
99
find . -name \*pyo | xargs rm -fv
1010
find . -name \*~ | xargs rm -fv
1111
find . -name __pycache__ | xargs rm -rfv
12+
find . -name .ruff_cache | xargs rm -rfv
1213

13-
install: ## Install dependencies
14-
make clean
14+
install:clean ## Install dependencies
1515
flit install --deps develop --symlink
1616
pre-commit install -f
1717

18-
lint: ## Run code linters
19-
make clean
20-
black --check ninja_jwt tests
18+
lint:fmt ## Run code linters
2119
ruff check ninja_jwt tests
2220
# mypy ninja_jwt
2321

24-
fmt format: ## Run code formatters
25-
make clean
26-
black ninja_jwt tests
22+
fmt format:clean ## Run code formatters
23+
ruff format ninja_jwt tests
2724
ruff check --fix ninja_jwt tests
2825

29-
test: ## Run tests
30-
make clean
26+
test:clean ## Run tests
3127
pytest .
3228

33-
test-cov: ## Run tests with coverage
34-
make clean
29+
test-cov:clean ## Run tests with coverage
3530
pytest --cov=ninja_jwt --cov-report term-missing tests
3631

37-
doc-deploy: ## Run Deploy Documentation
38-
make clean
32+
doc-deploy:clean ## Run Deploy Documentation
3933
mkdocs gh-deploy --force
4034

41-
doc-serve: ## Run Deploy Documentation
42-
make clean
35+
doc-serve:clean ## Run Deploy Documentation
4336
mkdocs serve

ninja_jwt/utils.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,23 @@ def make_utc(dt):
5151

5252

5353
def aware_utcnow():
54-
return make_utc(datetime.utcnow())
54+
dt = datetime.now(tz=timezone.utc)
55+
if not settings.USE_TZ:
56+
dt = dt.replace(tzinfo=None)
57+
58+
return dt
5559

5660

5761
def datetime_to_epoch(dt):
5862
return timegm(dt.utctimetuple())
5963

6064

6165
def datetime_from_epoch(ts):
62-
return make_utc(datetime.utcfromtimestamp(ts))
66+
dt = datetime.fromtimestamp(ts, tz=timezone.utc)
67+
if not settings.USE_TZ:
68+
dt = dt.replace(tzinfo=None)
69+
70+
return dt
6371

6472

6573
def format_lazy(s, *args, **kwargs):

pyproject.toml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,10 @@ classifiers = [
3333
"Programming Language :: Python :: 3.8",
3434
"Programming Language :: Python :: 3.9",
3535
"Programming Language :: Python :: 3.10",
36+
"Programming Language :: Python :: 3.11",
37+
"Programming Language :: Python :: 3.12",
3638
"Programming Language :: Python :: 3 :: Only",
3739
"Framework :: Django",
38-
"Framework :: Django :: 2.1",
39-
"Framework :: Django :: 2.2",
40-
"Framework :: Django :: 3.0",
4140
"Framework :: Django :: 3.1",
4241
"Framework :: Django :: 3.2",
4342
"Framework :: Django :: 4.0",
@@ -66,11 +65,11 @@ test = [
6665
"pytest-cov",
6766
"pytest-django",
6867
"pytest-asyncio",
69-
"black ==23.10.1",
70-
"ruff ==0.1.4",
68+
"ruff ==0.1.7",
7169
"django-stubs",
7270
"python-jose==3.3.0",
73-
"click==8.1.7"
71+
"click==8.1.7",
72+
"freezegun"
7473
]
7574

7675
crypto = [

tests/test_utils.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from datetime import datetime, timedelta
2-
from unittest.mock import patch
32

43
from django.test.utils import override_settings
54
from django.utils import timezone
5+
from freezegun import freeze_time
66

77
from ninja_jwt.utils import (
88
aware_utcnow,
@@ -34,11 +34,9 @@ def test_it_should_return_the_correct_values(self):
3434

3535
class TestAwareUtcnow:
3636
def test_it_should_return_the_correct_value(self):
37-
now = datetime.utcnow()
38-
39-
with patch("ninja_jwt.utils.datetime") as fake_datetime:
40-
fake_datetime.utcnow.return_value = now
37+
now = datetime.now(tz=timezone.utc).replace(tzinfo=None)
4138

39+
with freeze_time(now):
4240
# Should return aware utcnow if USE_TZ == True
4341
with override_settings(USE_TZ=True):
4442
assert timezone.make_aware(now, timezone=timezone.utc) == aware_utcnow()

0 commit comments

Comments
 (0)