Skip to content

Commit 8cbdfa8

Browse files
committed
Merge branch 'master' into antonpirker/better-aws-tests
2 parents 2271253 + 7deebf0 commit 8cbdfa8

File tree

5 files changed

+62
-34
lines changed

5 files changed

+62
-34
lines changed

sentry_sdk/integrations/arq.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,12 +199,13 @@ def _sentry_create_worker(*args, **kwargs):
199199
if isinstance(settings_cls, dict):
200200
if "functions" in settings_cls:
201201
settings_cls["functions"] = [
202-
_get_arq_function(func) for func in settings_cls["functions"]
202+
_get_arq_function(func)
203+
for func in settings_cls.get("functions", [])
203204
]
204205
if "cron_jobs" in settings_cls:
205206
settings_cls["cron_jobs"] = [
206207
_get_arq_cron_job(cron_job)
207-
for cron_job in settings_cls["cron_jobs"]
208+
for cron_job in settings_cls.get("cron_jobs", [])
208209
]
209210

210211
if hasattr(settings_cls, "functions"):
@@ -218,11 +219,11 @@ def _sentry_create_worker(*args, **kwargs):
218219

219220
if "functions" in kwargs:
220221
kwargs["functions"] = [
221-
_get_arq_function(func) for func in kwargs["functions"]
222+
_get_arq_function(func) for func in kwargs.get("functions", [])
222223
]
223224
if "cron_jobs" in kwargs:
224225
kwargs["cron_jobs"] = [
225-
_get_arq_cron_job(cron_job) for cron_job in kwargs["cron_jobs"]
226+
_get_arq_cron_job(cron_job) for cron_job in kwargs.get("cron_jobs", [])
226227
]
227228

228229
return old_create_worker(*args, **kwargs)

sentry_sdk/integrations/starlette.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,13 +362,13 @@ def patch_middlewares():
362362

363363
if not_yet_patched:
364364

365-
def _sentry_middleware_init(self, cls, **options):
366-
# type: (Any, Any, Any) -> None
365+
def _sentry_middleware_init(self, cls, *args, **kwargs):
366+
# type: (Any, Any, Any, Any) -> None
367367
if cls == SentryAsgiMiddleware:
368-
return old_middleware_init(self, cls, **options)
368+
return old_middleware_init(self, cls, *args, **kwargs)
369369

370370
span_enabled_cls = _enable_span_for_middleware(cls)
371-
old_middleware_init(self, span_enabled_cls, **options)
371+
old_middleware_init(self, span_enabled_cls, *args, **kwargs)
372372

373373
if cls == AuthenticationMiddleware:
374374
patch_authentication_middleware(cls)

sentry_sdk/tracing.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,7 +1052,7 @@ def set_measurement(self, name, value, unit=""):
10521052
self._measurements[name] = {"value": value, "unit": unit}
10531053

10541054
def set_context(self, key, value):
1055-
# type: (str, Any) -> None
1055+
# type: (str, dict[str, Any]) -> None
10561056
"""Sets a context. Transactions can have multiple contexts
10571057
and they should follow the format described in the "Contexts Interface"
10581058
documentation.
@@ -1287,7 +1287,7 @@ def set_measurement(self, name, value, unit=""):
12871287
pass
12881288

12891289
def set_context(self, key, value):
1290-
# type: (str, Any) -> None
1290+
# type: (str, dict[str, Any]) -> None
12911291
pass
12921292

12931293
def init_span_recorder(self, maxlen):

tests/integrations/starlette/test_starlette.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
from starlette.middleware.authentication import AuthenticationMiddleware
3232
from starlette.middleware.trustedhost import TrustedHostMiddleware
3333
from starlette.testclient import TestClient
34-
3534
from tests.integrations.conftest import parametrize_test_configurable_status_codes
3635

3736

@@ -238,6 +237,12 @@ async def do_stuff(message):
238237
await self.app(scope, receive, do_stuff)
239238

240239

240+
class SampleMiddlewareWithArgs(Middleware):
241+
def __init__(self, app, bla=None):
242+
self.app = app
243+
self.bla = bla
244+
245+
241246
class SampleReceiveSendMiddleware:
242247
def __init__(self, app):
243248
self.app = app
@@ -862,6 +867,22 @@ def test_middleware_partial_receive_send(sentry_init, capture_events):
862867
idx += 1
863868

864869

870+
@pytest.mark.skipif(
871+
STARLETTE_VERSION < (0, 35),
872+
reason="Positional args for middleware have been introduced in Starlette >= 0.35",
873+
)
874+
def test_middleware_positional_args(sentry_init):
875+
sentry_init(
876+
traces_sample_rate=1.0,
877+
integrations=[StarletteIntegration()],
878+
)
879+
_ = starlette_app_factory(middleware=[Middleware(SampleMiddlewareWithArgs, "bla")])
880+
881+
# Only creating the App with an Middleware with args
882+
# should not raise an error
883+
# So as long as test passes, we are good
884+
885+
865886
def test_legacy_setup(
866887
sentry_init,
867888
capture_events,

tox.ini

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# The file (and all resulting CI YAMLs) then need to be regenerated via
1111
# "scripts/generate-test-files.sh".
1212
#
13-
# Last generated: 2025-02-19T13:16:21.819887+00:00
13+
# Last generated: 2025-03-10T11:46:25.287445+00:00
1414

1515
[tox]
1616
requires =
@@ -178,7 +178,7 @@ envlist =
178178
{py3.6}-pymongo-v3.5.1
179179
{py3.6,py3.10,py3.11}-pymongo-v3.13.0
180180
{py3.6,py3.9,py3.10}-pymongo-v4.0.2
181-
{py3.9,py3.12,py3.13}-pymongo-v4.11.1
181+
{py3.9,py3.12,py3.13}-pymongo-v4.11.2
182182

183183
{py3.6}-redis_py_cluster_legacy-v1.3.6
184184
{py3.6,py3.7}-redis_py_cluster_legacy-v2.0.0
@@ -199,42 +199,45 @@ envlist =
199199

200200
{py3.7,py3.12,py3.13}-statsig-v0.55.3
201201
{py3.7,py3.12,py3.13}-statsig-v0.56.0
202+
{py3.7,py3.12,py3.13}-statsig-v0.57.1
202203

203204
{py3.8,py3.12,py3.13}-unleash-v6.0.1
204205
{py3.8,py3.12,py3.13}-unleash-v6.1.0
206+
{py3.8,py3.12,py3.13}-unleash-v6.2.0
205207

206208

207209
# ~~~ GraphQL ~~~
208210
{py3.8,py3.10,py3.11}-ariadne-v0.20.1
209211
{py3.8,py3.11,py3.12}-ariadne-v0.22
210212
{py3.8,py3.11,py3.12}-ariadne-v0.24.0
211-
{py3.9,py3.12,py3.13}-ariadne-v0.26.0
213+
{py3.9,py3.12,py3.13}-ariadne-v0.26.1
212214

213215
{py3.6,py3.9,py3.10}-gql-v3.4.1
214-
{py3.7,py3.11,py3.12}-gql-v3.5.0
216+
{py3.7,py3.11,py3.12}-gql-v3.5.2
215217
{py3.9,py3.12,py3.13}-gql-v3.6.0b4
216218

217219
{py3.6,py3.9,py3.10}-graphene-v3.3
218220
{py3.8,py3.12,py3.13}-graphene-v3.4.3
219221

220222
{py3.8,py3.10,py3.11}-strawberry-v0.209.8
221-
{py3.8,py3.11,py3.12}-strawberry-v0.226.2
222-
{py3.8,py3.11,py3.12}-strawberry-v0.243.1
223-
{py3.9,py3.12,py3.13}-strawberry-v0.260.2
223+
{py3.8,py3.11,py3.12}-strawberry-v0.227.7
224+
{py3.8,py3.11,py3.12}-strawberry-v0.245.0
225+
{py3.9,py3.12,py3.13}-strawberry-v0.262.1
224226

225227

226228
# ~~~ Network ~~~
227229
{py3.7,py3.8}-grpc-v1.32.0
228230
{py3.7,py3.9,py3.10}-grpc-v1.44.0
229231
{py3.7,py3.10,py3.11}-grpc-v1.58.3
230232
{py3.8,py3.12,py3.13}-grpc-v1.70.0
233+
{py3.9,py3.12,py3.13}-grpc-v1.71.0rc2
231234

232235

233236
# ~~~ Tasks ~~~
234237
{py3.6,py3.7,py3.8}-celery-v4.4.7
235238
{py3.6,py3.7,py3.8}-celery-v5.0.5
236239
{py3.8,py3.11,py3.12}-celery-v5.4.0
237-
{py3.8,py3.12,py3.13}-celery-v5.5.0rc4
240+
{py3.8,py3.12,py3.13}-celery-v5.5.0rc5
238241

239242
{py3.6,py3.7}-dramatiq-v1.9.0
240243
{py3.6,py3.8,py3.9}-dramatiq-v1.12.3
@@ -244,7 +247,7 @@ envlist =
244247
{py3.8,py3.9}-spark-v3.0.3
245248
{py3.8,py3.9}-spark-v3.2.4
246249
{py3.8,py3.10,py3.11}-spark-v3.4.4
247-
{py3.8,py3.10,py3.11}-spark-v3.5.4
250+
{py3.8,py3.10,py3.11}-spark-v3.5.5
248251

249252

250253
# ~~~ Web 1 ~~~
@@ -256,7 +259,7 @@ envlist =
256259
{py3.6,py3.9,py3.10}-starlette-v0.16.0
257260
{py3.7,py3.10,py3.11}-starlette-v0.26.1
258261
{py3.8,py3.11,py3.12}-starlette-v0.36.3
259-
{py3.9,py3.12,py3.13}-starlette-v0.45.3
262+
{py3.9,py3.12,py3.13}-starlette-v0.46.1
260263

261264

262265
# ~~~ Web 2 ~~~
@@ -291,9 +294,9 @@ envlist =
291294
{py3.6,py3.7,py3.8}-trytond-v5.8.16
292295
{py3.8,py3.10,py3.11}-trytond-v6.8.17
293296
{py3.8,py3.11,py3.12}-trytond-v7.0.9
294-
{py3.8,py3.11,py3.12}-trytond-v7.4.6
297+
{py3.8,py3.11,py3.12}-trytond-v7.4.7
295298

296-
{py3.7,py3.11,py3.12}-typer-v0.15.1
299+
{py3.7,py3.12,py3.13}-typer-v0.15.2
297300

298301

299302

@@ -564,7 +567,7 @@ deps =
564567
pymongo-v3.5.1: pymongo==3.5.1
565568
pymongo-v3.13.0: pymongo==3.13.0
566569
pymongo-v4.0.2: pymongo==4.0.2
567-
pymongo-v4.11.1: pymongo==4.11.1
570+
pymongo-v4.11.2: pymongo==4.11.2
568571
pymongo: mockupdb
569572

570573
redis_py_cluster_legacy-v1.3.6: redis-py-cluster==1.3.6
@@ -586,23 +589,25 @@ deps =
586589

587590
statsig-v0.55.3: statsig==0.55.3
588591
statsig-v0.56.0: statsig==0.56.0
592+
statsig-v0.57.1: statsig==0.57.1
589593
statsig: typing_extensions
590594

591595
unleash-v6.0.1: UnleashClient==6.0.1
592596
unleash-v6.1.0: UnleashClient==6.1.0
597+
unleash-v6.2.0: UnleashClient==6.2.0
593598

594599

595600
# ~~~ GraphQL ~~~
596601
ariadne-v0.20.1: ariadne==0.20.1
597602
ariadne-v0.22: ariadne==0.22
598603
ariadne-v0.24.0: ariadne==0.24.0
599-
ariadne-v0.26.0: ariadne==0.26.0
604+
ariadne-v0.26.1: ariadne==0.26.1
600605
ariadne: fastapi
601606
ariadne: flask
602607
ariadne: httpx
603608

604609
gql-v3.4.1: gql[all]==3.4.1
605-
gql-v3.5.0: gql[all]==3.5.0
610+
gql-v3.5.2: gql[all]==3.5.2
606611
gql-v3.6.0b4: gql[all]==3.6.0b4
607612

608613
graphene-v3.3: graphene==3.3
@@ -614,9 +619,9 @@ deps =
614619
py3.6-graphene: aiocontextvars
615620

616621
strawberry-v0.209.8: strawberry-graphql[fastapi,flask]==0.209.8
617-
strawberry-v0.226.2: strawberry-graphql[fastapi,flask]==0.226.2
618-
strawberry-v0.243.1: strawberry-graphql[fastapi,flask]==0.243.1
619-
strawberry-v0.260.2: strawberry-graphql[fastapi,flask]==0.260.2
622+
strawberry-v0.227.7: strawberry-graphql[fastapi,flask]==0.227.7
623+
strawberry-v0.245.0: strawberry-graphql[fastapi,flask]==0.245.0
624+
strawberry-v0.262.1: strawberry-graphql[fastapi,flask]==0.262.1
620625
strawberry: httpx
621626

622627

@@ -625,6 +630,7 @@ deps =
625630
grpc-v1.44.0: grpcio==1.44.0
626631
grpc-v1.58.3: grpcio==1.58.3
627632
grpc-v1.70.0: grpcio==1.70.0
633+
grpc-v1.71.0rc2: grpcio==1.71.0rc2
628634
grpc: protobuf
629635
grpc: mypy-protobuf
630636
grpc: types-protobuf
@@ -635,7 +641,7 @@ deps =
635641
celery-v4.4.7: celery==4.4.7
636642
celery-v5.0.5: celery==5.0.5
637643
celery-v5.4.0: celery==5.4.0
638-
celery-v5.5.0rc4: celery==5.5.0rc4
644+
celery-v5.5.0rc5: celery==5.5.0rc5
639645
celery: newrelic
640646
celery: redis
641647
py3.7-celery: importlib-metadata<5.0
@@ -648,7 +654,7 @@ deps =
648654
spark-v3.0.3: pyspark==3.0.3
649655
spark-v3.2.4: pyspark==3.2.4
650656
spark-v3.4.4: pyspark==3.4.4
651-
spark-v3.5.4: pyspark==3.5.4
657+
spark-v3.5.5: pyspark==3.5.5
652658

653659

654660
# ~~~ Web 1 ~~~
@@ -664,7 +670,7 @@ deps =
664670
starlette-v0.16.0: starlette==0.16.0
665671
starlette-v0.26.1: starlette==0.26.1
666672
starlette-v0.36.3: starlette==0.36.3
667-
starlette-v0.45.3: starlette==0.45.3
673+
starlette-v0.46.1: starlette==0.46.1
668674
starlette: pytest-asyncio
669675
starlette: python-multipart
670676
starlette: requests
@@ -722,12 +728,12 @@ deps =
722728
trytond-v5.8.16: trytond==5.8.16
723729
trytond-v6.8.17: trytond==6.8.17
724730
trytond-v7.0.9: trytond==7.0.9
725-
trytond-v7.4.6: trytond==7.4.6
731+
trytond-v7.4.7: trytond==7.4.7
726732
trytond: werkzeug
727733
trytond-v4.6.9: werkzeug<1.0
728734
trytond-v4.8.18: werkzeug<1.0
729735

730-
typer-v0.15.1: typer==0.15.1
736+
typer-v0.15.2: typer==0.15.2
731737

732738

733739

0 commit comments

Comments
 (0)