Skip to content

Commit d46bdc8

Browse files
committed
Removes python 2.7 support and adjusts the test matrix to account
1 parent 7b53068 commit d46bdc8

File tree

11 files changed

+71
-107
lines changed

11 files changed

+71
-107
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,15 @@ on:
77
jobs:
88
build:
99

10-
runs-on: ubuntu-20.04
10+
runs-on: ubuntu-22.04
1111
strategy:
1212
matrix:
1313
python:
14-
- "3.6"
15-
- "3.7"
1614
- "3.8"
1715
- "3.9"
1816
- "3.10"
1917
- "3.11"
2018
- "3.12"
21-
- pypy-3.6
22-
- pypy-3.7
2319
- pypy-3.8
2420
- pypy-3.9
2521
- pypy-3.10

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,6 @@ htmlcov
2828
*.log
2929
*.bak
3030
*.backup
31+
32+
# Environments
33+
.venv

compression_middleware/br.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- encoding: utf-8 -*-
21
#
32
# This Source Code Form is subject to the terms of the Mozilla Public
43
# License, v. 2.0. If a copy of the MPL was not distributed with this

compression_middleware/middleware.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- encoding: utf-8 -*-
21
#
32
# This Source Code Form is subject to the terms of the Mozilla Public
43
# License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -79,7 +78,7 @@ def encoding_name(s):
7978
def compressor(accept_encoding):
8079
# We don't want to process extremely long headers. It might be an attack:
8180
accept_encoding = accept_encoding[:200]
82-
client_encodings = set(encoding_name(e) for e in accept_encoding.split(","))
81+
client_encodings = {encoding_name(e) for e in accept_encoding.split(",")}
8382
if "*" in client_encodings:
8483
# Our first choice:
8584
return compressors[0]

compression_middleware/zstd.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- encoding: utf-8 -*-
21
#
32
# This Source Code Form is subject to the terms of the Mozilla Public
43
# License, v. 2.0. If a copy of the MPL was not distributed with this

setup.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,28 +22,22 @@
2222
author_email='friedel@translate.org.za',
2323
packages=['compression_middleware'],
2424
install_requires=install_requires,
25+
python_requires=">=3.8",
2526
include_package_data=True,
2627
zip_safe=True,
2728
classifiers=[
2829
'Development Status :: 4 - Beta',
2930
'Framework :: Django',
30-
'Framework :: Django :: 1.11',
31-
'Framework :: Django :: 2.0',
32-
'Framework :: Django :: 2.1',
33-
'Framework :: Django :: 2.2',
34-
'Framework :: Django :: 3.0',
35-
'Framework :: Django :: 3.1',
3631
'Framework :: Django :: 3.2',
3732
'Framework :: Django :: 4.0',
3833
'Framework :: Django :: 4.1',
3934
'Framework :: Django :: 4.2',
4035
'Framework :: Django :: 5.0',
36+
'Framework :: Django :: 5.1',
4137
'Intended Audience :: Developers',
4238
'License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)',
4339
'Natural Language :: English',
4440
'Operating System :: OS Independent',
45-
'Programming Language :: Python :: 3.6',
46-
'Programming Language :: Python :: 3.7',
4741
'Programming Language :: Python :: 3.8',
4842
'Programming Language :: Python :: 3.9',
4943
'Programming Language :: Python :: 3.10',

tests/test_decorator.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
# -*- encoding: utf-8 -*-
2-
from __future__ import unicode_literals
3-
41
import brotli
52

63
from django.http import HttpRequest, HttpResponse, StreamingHttpResponse

tests/test_interactions.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# -*- coding: utf-8 -*-
2-
from __future__ import unicode_literals
3-
4-
51
# This tests if the middleware works as Django expects from its own
62
# GZipMiddleware. This way we test the expected interactions with other parts
73
# of Django, such as ConditionalGetMiddleware, which relies on certain parts
@@ -13,6 +9,7 @@
139

1410
import gzip
1511
import random
12+
import struct
1613
from io import BytesIO
1714

1815
from django.http import (
@@ -24,15 +21,7 @@
2421
from django.middleware.http import ConditionalGetMiddleware
2522
from django.test import RequestFactory, SimpleTestCase, override_settings
2623

27-
try:
28-
# Python 2
29-
range = xrange
30-
int2byte = chr
31-
except NameError:
32-
# Python 3
33-
import struct
34-
35-
int2byte = struct.Struct(">B").pack
24+
int2byte = struct.Struct(">B").pack
3625

3726

3827
class GZipMiddlewareTest(SimpleTestCase):

tests/test_middleware.py

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
# -*- encoding: utf-8 -*-
2-
31
# partially based on tests in django and django-brotli
42

53
from io import BytesIO
64
import gzip
75
import random
86
from unittest import TestCase
7+
import struct
98

109
import brotli
1110
import zstandard as zstd
@@ -17,38 +16,31 @@
1716

1817
from django.middleware.gzip import GZipMiddleware
1918
from django.test import RequestFactory, SimpleTestCase
20-
try:
21-
# Python 2
22-
range = xrange
23-
int2byte = chr
24-
except NameError:
25-
# Python 3
26-
import struct
27-
int2byte = struct.Struct(">B").pack
2819

2920
from compression_middleware.middleware import CompressionMiddleware, compressor
3021
from .utils import UTF8_LOREM_IPSUM_IN_CZECH
3122

23+
int2byte = struct.Struct(">B").pack
3224

33-
class FakeRequestAcceptsZstd(object):
25+
class FakeRequestAcceptsZstd:
3426
META = {
3527
"HTTP_ACCEPT_ENCODING": "gzip, deflate, sdch, br, zstd"
3628
}
3729

3830

39-
class FakeRequestAcceptsBrotli(object):
31+
class FakeRequestAcceptsBrotli:
4032
META = {
4133
"HTTP_ACCEPT_ENCODING": "gzip, deflate, sdch, br"
4234
}
4335

4436

45-
class InvalidAcceptEcondingRequest(object):
37+
class InvalidAcceptEcondingRequest:
4638
META = {
4739
"HTTP_ACCEPT_ENCODING": "text/plain,*/*; charset=utf-8"
4840
}
4941

5042

51-
class FakeLegacyRequest(object):
43+
class FakeLegacyRequest:
5244
META = {
5345
}
5446

@@ -58,7 +50,7 @@ def gzip_decompress(gzipped_string):
5850
return f.read()
5951

6052

61-
class FakeResponse(object):
53+
class FakeResponse:
6254
streaming = False
6355

6456
def __init__(self, content, headers=None, streaming=None):
@@ -255,7 +247,7 @@ class StreamingTest(SimpleTestCase):
255247
int2byte(random.randint(0, 255)) for _ in range(500)
256248
)
257249
sequence = [b"a" * 500, b"b" * 200, b"a" * 300]
258-
sequence_unicode = [u"a" * 500, u"é" * 200, u"a" * 300]
250+
sequence_unicode = ["a" * 500, "é" * 200, "a" * 300]
259251
request_factory = RequestFactory()
260252

261253
def setUp(self):

tests/utils.py

Lines changed: 44 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,45 @@
1-
# -*- encoding: utf-8 -*-
2-
from __future__ import unicode_literals
1+
from typing import Final
32

4-
# Dummy text (aka Lorem ipsum) in Czech (credits: http://cs.blabot.net/) for testing compression
5-
UTF8_LOREM_IPSUM_IN_CZECH = """S úsilí kdepak využívat současníků test pivo ovcím šimpanze. silnějšímu, tj. a
6-
nezadal odeženou hlavu bránil do neúspěšné, silnějšímu, tj. zní ke svítí proběhl
7-
lo podmínkách ústní i nepravděpodobné chytré. Výskyt laně postupu nežli aktivity
8-
kousek výbavy prostředí pepřem, čím já jeden, 195. Patří tam moři propracovanoua
9-
nahrubo míst orgánu pohroma svého epidemií stehny hlídá lidem geny o mnohdy, tea
10-
chnologie já vynesl krása i zástupcům opačně letišti stavba. O provoz další opra
11-
covaných vážilo z chemical staly, tam víkendu z plyne. Snad nádherným, stranu je
12-
zdí pomezí pohřbeného epidemií mi u 540 ve volně kyčle nový mezi budov přirozené
13-
a přáteli polarizovaný parazitů svahy. Vážit je den mamutí americký slovníky nad
14-
plánoval důkaz, sloučení význam v požírají, ulice ale za všech blíž minulosti. o
15-
U domů polonica kanále – čem já zahrada silou člověka EU touto začaly chodily mr
16-
azy? Podepsala vláken postupně ve podél procházejí výjimky minimum, u naproti po
17-
vinné Moravy vermontu domněnku odhadů střediskem k činu, můj avšak ty lokalizova
18-
nému pravdou 570 něm zažijete podrobili odvětví nešlo. Dlouhou šimpanz vítejte g
19-
enerací se brázdit doplňuje podobná té uměle dobrá. Tříkilometrové kategorií, by
20-
480 a pokroku potom k čekala lokální. Kanadského, nálezů, jestli, něm poloostroa
21-
vě, v Platón čeští duhový, nálezů z projev.\n\nObčany skotu kterých s ho stopami
22-
pravdu ze desetiletí centimetrů jeví šest a místních důležitou, plná slonice nik
23-
dy já spořádaně stavu naplaveninách prostředky profesorka. 1591 odstřihne, nebyl
24-
y tento erupce odpočinout osluněné 1 v něm je temna popis malá sága týmem astero
25-
idu z poznala standardních obeplutí názvy. Nejenže ke je hermeticky fyzici, dese
26-
t kam migrační křídla úhrnem. Již ta učí šimpanzů stádech ať boky i přispívá int
27-
ernetová k 500 ně se polohu teorii tady. Osmi po kampaň analyzovány jiná z alarm
28-
ující další tlupa.\n\nKaždý 1921 připlouváte čemž pevnosti, hornina Moravy násle
29-
y špatných, dnů ta. U ohňové v respirátorem spíš od závěru, má lidem 2005 již sv
30-
aly, běžně matky i větry výška. Demenci globálního vyvraždila jí na překvapení s
31-
lovácku bojem softwarových ty i strany půdy útěk svým s musí, 360° a vypráví šan
32-
ci s narušení. Prací nepřešlapuje 3000 krásy cihlová, víkendu s a tu z zemském c
33-
ítit větší. Vlna a uvádí kterou fatální divný společné – války zdravotním dané m
34-
ířil. O nejpalčivější skoro rodilí o tato nemohou EU zvířat připomínalo činná pl
35-
ná u rozbuška nechci tkví rozhovor roku široký. Toho dolní dopluli, či otevírá b
36-
uňky mj. viry životní středověké klimatizační zachytit chřipkou.\n\nProvází změn
37-
dravý ta svezení než takového vykreslují zemím níž ideálním pasivitou – plné mír
38-
u neon strany membránou a jel, té stromů kameni ve bílý dobrovolníků v naději mě
39-
ní o kuliček ta draci skoro ideální. Podobu vlny sérií tohle agrese restauraci z
40-
a sněžilo dávných činila, nebyl ostrova s ředitelka ředitelka, nepřestaneme, pen
41-
zionovaného k budoucnostzačne některé. Až horským zásad mé prokletých. Nobel dět
42-
i zákonů emise. Klidné příčinou tradic plně vyvodíme doplňují a nejméně specific
43-
kého tvrdí. Jí smrt při umělé objevováním.""" # type: str
3+
# Dummy text (aka Lorem ipsum) in Czech (credits: http://cs.blabot.net/) for
4+
# testing compression
5+
UTF8_LOREM_IPSUM_IN_CZECH : Final[str] = (
6+
"S úsilí kdepak využívat současníků test pivo ovcím šimpanze. silnějšímu, tj. a"
7+
"nezadal odeženou hlavu bránil do neúspěšné, silnějšímu, tj. zní ke svítí proběhl"
8+
"lo podmínkách ústní i nepravděpodobné chytré. Výskyt laně postupu nežli aktivity"
9+
"kousek výbavy prostředí pepřem, čím já jeden, 195. Patří tam moři propracovanoua"
10+
"nahrubo míst orgánu pohroma svého epidemií stehny hlídá lidem geny o mnohdy, tea"
11+
"chnologie já vynesl krása i zástupcům opačně letišti stavba. O provoz další opra"
12+
"covaných vážilo z chemical staly, tam víkendu z plyne. Snad nádherným, stranu je"
13+
"zdí pomezí pohřbeného epidemií mi u 540 ve volně kyčle nový mezi budov přirozené"
14+
"a přáteli polarizovaný parazitů svahy. Vážit je den mamutí americký slovníky nad"
15+
"plánoval důkaz, sloučení význam v požírají, ulice ale za všech blíž minulosti. o"
16+
"U domů polonica kanále – čem já zahrada silou člověka EU touto začaly chodily mr"
17+
"azy? Podepsala vláken postupně ve podél procházejí výjimky minimum, u naproti po"
18+
"vinné Moravy vermontu domněnku odhadů střediskem k činu, můj avšak ty lokalizova"
19+
"nému pravdou 570 něm zažijete podrobili odvětví nešlo. Dlouhou šimpanz vítejte g"
20+
"enerací se brázdit doplňuje podobná té uměle dobrá. Tříkilometrové kategorií, by"
21+
"480 a pokroku potom k čekala lokální. Kanadského, nálezů, jestli, něm poloostroa"
22+
"vě, v Platón čeští duhový, nálezů z projev.\n\nObčany skotu kterých s ho stopami"
23+
"pravdu ze desetiletí centimetrů jeví šest a místních důležitou, plná slonice nik"
24+
"dy já spořádaně stavu naplaveninách prostředky profesorka. 1591 odstřihne, nebyl"
25+
"y tento erupce odpočinout osluněné 1 v něm je temna popis malá sága týmem astero"
26+
"idu z poznala standardních obeplutí názvy. Nejenže ke je hermeticky fyzici, dese"
27+
"t kam migrační křídla úhrnem. Již ta učí šimpanzů stádech ať boky i přispívá int"
28+
"ernetová k 500 ně se polohu teorii tady. Osmi po kampaň analyzovány jiná z alarm"
29+
"ující další tlupa.\n\nKaždý 1921 připlouváte čemž pevnosti, hornina Moravy násle"
30+
"y špatných, dnů ta. U ohňové v respirátorem spíš od závěru, má lidem 2005 již sv"
31+
"aly, běžně matky i větry výška. Demenci globálního vyvraždila jí na překvapení s"
32+
"lovácku bojem softwarových ty i strany půdy útěk svým s musí, 360° a vypráví šan"
33+
"ci s narušení. Prací nepřešlapuje 3000 krásy cihlová, víkendu s a tu z zemském c"
34+
"ítit větší. Vlna a uvádí kterou fatální divný společné – války zdravotním dané m"
35+
"ířil. O nejpalčivější skoro rodilí o tato nemohou EU zvířat připomínalo činná pl"
36+
"ná u rozbuška nechci tkví rozhovor roku široký. Toho dolní dopluli, či otevírá b"
37+
"uňky mj. viry životní středověké klimatizační zachytit chřipkou.\n\nProvází změn"
38+
"dravý ta svezení než takového vykreslují zemím níž ideálním pasivitou – plné mír"
39+
"u neon strany membránou a jel, té stromů kameni ve bílý dobrovolníků v naději mě"
40+
"ní o kuliček ta draci skoro ideální. Podobu vlny sérií tohle agrese restauraci z"
41+
"a sněžilo dávných činila, nebyl ostrova s ředitelka ředitelka, nepřestaneme, pen"
42+
"zionovaného k budoucnostzačne některé. Až horským zásad mé prokletých. Nobel dět"
43+
"i zákonů emise. Klidné příčinou tradic plně vyvodíme doplňují a nejméně specific"
44+
"kého tvrdí. Jí smrt při umělé objevováním."
45+
)

0 commit comments

Comments
 (0)