Update to v2.13.0 (fedora#2301207, fedora#2301991, fedora#2302923, fedora#2304029, fedora#2304047, fedora#2304128)
This commit is contained in:
parent
868b174920
commit
30fb39586a
10 changed files with 17 additions and 430 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -27,3 +27,4 @@
|
||||||
/sentry-python-2.0.1.tar.gz
|
/sentry-python-2.0.1.tar.gz
|
||||||
/sentry-python-2.1.1.tar.gz
|
/sentry-python-2.1.1.tar.gz
|
||||||
/sentry-python-2.7.1.tar.gz
|
/sentry-python-2.7.1.tar.gz
|
||||||
|
/sentry-python-2.13.0.tar.gz
|
||||||
|
|
|
@ -1,107 +0,0 @@
|
||||||
From 667d94ce9a4432a252fd2281bd5ad176919f4efb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Roman Inflianskas <rominf@pm.me>
|
|
||||||
Date: Mon, 1 Apr 2024 15:50:22 +0300
|
|
||||||
Subject: [PATCH] Reorder forked tests
|
|
||||||
|
|
||||||
---
|
|
||||||
tests/test_client.py | 80 ++++++++++++++++++++++----------------------
|
|
||||||
1 file changed, 40 insertions(+), 40 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tests/test_client.py b/tests/test_client.py
|
|
||||||
index 0954a8c5..038debeb 100644
|
|
||||||
--- a/tests/test_client.py
|
|
||||||
+++ b/tests/test_client.py
|
|
||||||
@@ -1236,6 +1236,46 @@ class IssuesSamplerTestConfig:
|
|
||||||
raise self.exception_to_raise()
|
|
||||||
|
|
||||||
|
|
||||||
+@pytest.mark.forked
|
|
||||||
+@pytest.mark.parametrize(
|
|
||||||
+ "opt,missing_flags",
|
|
||||||
+ [
|
|
||||||
+ # lazy mode with enable-threads, no warning
|
|
||||||
+ [{"enable-threads": True, "lazy-apps": True}, []],
|
|
||||||
+ [{"enable-threads": "true", "lazy-apps": b"1"}, []],
|
|
||||||
+ # preforking mode with enable-threads and py-call-uwsgi-fork-hooks, no warning
|
|
||||||
+ [{"enable-threads": True, "py-call-uwsgi-fork-hooks": True}, []],
|
|
||||||
+ [{"enable-threads": b"true", "py-call-uwsgi-fork-hooks": b"on"}, []],
|
|
||||||
+ # lazy mode, no enable-threads, warning
|
|
||||||
+ [{"lazy-apps": True}, ["--enable-threads"]],
|
|
||||||
+ [{"enable-threads": b"false", "lazy-apps": True}, ["--enable-threads"]],
|
|
||||||
+ [{"enable-threads": b"0", "lazy": True}, ["--enable-threads"]],
|
|
||||||
+ # preforking mode, no enable-threads or py-call-uwsgi-fork-hooks, warning
|
|
||||||
+ [{}, ["--enable-threads", "--py-call-uwsgi-fork-hooks"]],
|
|
||||||
+ [{"processes": b"2"}, ["--enable-threads", "--py-call-uwsgi-fork-hooks"]],
|
|
||||||
+ [{"enable-threads": True}, ["--py-call-uwsgi-fork-hooks"]],
|
|
||||||
+ [{"enable-threads": b"1"}, ["--py-call-uwsgi-fork-hooks"]],
|
|
||||||
+ [
|
|
||||||
+ {"enable-threads": b"false"},
|
|
||||||
+ ["--enable-threads", "--py-call-uwsgi-fork-hooks"],
|
|
||||||
+ ],
|
|
||||||
+ [{"py-call-uwsgi-fork-hooks": True}, ["--enable-threads"]],
|
|
||||||
+ ],
|
|
||||||
+)
|
|
||||||
+def test_uwsgi_warnings(sentry_init, recwarn, opt, missing_flags):
|
|
||||||
+ uwsgi = mock.MagicMock()
|
|
||||||
+ uwsgi.opt = opt
|
|
||||||
+ with mock.patch.dict("sys.modules", uwsgi=uwsgi):
|
|
||||||
+ sentry_init(profiles_sample_rate=1.0)
|
|
||||||
+ if missing_flags:
|
|
||||||
+ assert len(recwarn) == 1
|
|
||||||
+ record = recwarn.pop()
|
|
||||||
+ for flag in missing_flags:
|
|
||||||
+ assert flag in str(record.message)
|
|
||||||
+ else:
|
|
||||||
+ assert not recwarn
|
|
||||||
+
|
|
||||||
+
|
|
||||||
@mock.patch("sentry_sdk.client.random.random", return_value=0.618)
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
"test_config",
|
|
||||||
@@ -1316,43 +1356,3 @@ def test_error_sampler(_, sentry_init, capture_events, test_config):
|
|
||||||
|
|
||||||
# Ensure two arguments (the event and hint) were passed to the sampler function
|
|
||||||
assert len(test_config.sampler_function_mock.call_args[0]) == 2
|
|
||||||
-
|
|
||||||
-
|
|
||||||
-@pytest.mark.forked
|
|
||||||
-@pytest.mark.parametrize(
|
|
||||||
- "opt,missing_flags",
|
|
||||||
- [
|
|
||||||
- # lazy mode with enable-threads, no warning
|
|
||||||
- [{"enable-threads": True, "lazy-apps": True}, []],
|
|
||||||
- [{"enable-threads": "true", "lazy-apps": b"1"}, []],
|
|
||||||
- # preforking mode with enable-threads and py-call-uwsgi-fork-hooks, no warning
|
|
||||||
- [{"enable-threads": True, "py-call-uwsgi-fork-hooks": True}, []],
|
|
||||||
- [{"enable-threads": b"true", "py-call-uwsgi-fork-hooks": b"on"}, []],
|
|
||||||
- # lazy mode, no enable-threads, warning
|
|
||||||
- [{"lazy-apps": True}, ["--enable-threads"]],
|
|
||||||
- [{"enable-threads": b"false", "lazy-apps": True}, ["--enable-threads"]],
|
|
||||||
- [{"enable-threads": b"0", "lazy": True}, ["--enable-threads"]],
|
|
||||||
- # preforking mode, no enable-threads or py-call-uwsgi-fork-hooks, warning
|
|
||||||
- [{}, ["--enable-threads", "--py-call-uwsgi-fork-hooks"]],
|
|
||||||
- [{"processes": b"2"}, ["--enable-threads", "--py-call-uwsgi-fork-hooks"]],
|
|
||||||
- [{"enable-threads": True}, ["--py-call-uwsgi-fork-hooks"]],
|
|
||||||
- [{"enable-threads": b"1"}, ["--py-call-uwsgi-fork-hooks"]],
|
|
||||||
- [
|
|
||||||
- {"enable-threads": b"false"},
|
|
||||||
- ["--enable-threads", "--py-call-uwsgi-fork-hooks"],
|
|
||||||
- ],
|
|
||||||
- [{"py-call-uwsgi-fork-hooks": True}, ["--enable-threads"]],
|
|
||||||
- ],
|
|
||||||
-)
|
|
||||||
-def test_uwsgi_warnings(sentry_init, recwarn, opt, missing_flags):
|
|
||||||
- uwsgi = mock.MagicMock()
|
|
||||||
- uwsgi.opt = opt
|
|
||||||
- with mock.patch.dict("sys.modules", uwsgi=uwsgi):
|
|
||||||
- sentry_init(profiles_sample_rate=1.0)
|
|
||||||
- if missing_flags:
|
|
||||||
- assert len(recwarn) == 1
|
|
||||||
- record = recwarn.pop()
|
|
||||||
- for flag in missing_flags:
|
|
||||||
- assert flag in str(record.message)
|
|
||||||
- else:
|
|
||||||
- assert not recwarn
|
|
||||||
--
|
|
||||||
2.44.0
|
|
||||||
|
|
|
@ -1,102 +0,0 @@
|
||||||
From da4ce6fe9d4cfde58bca5255fc501714f3a286e6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Roman Inflianskas <rominf@pm.me>
|
|
||||||
Date: Wed, 3 Jul 2024 16:33:31 +0300
|
|
||||||
Subject: [PATCH] ref(tests): Unhardcode integration list
|
|
||||||
|
|
||||||
Benefits of unhardcoding integration list and disabling auto
|
|
||||||
integrations:
|
|
||||||
1. It becomes possible to successfully run tests in environments where
|
|
||||||
certain extra integrations get enabled.
|
|
||||||
2. There is no need to update hardcoded list when new default
|
|
||||||
integrations are introduced.
|
|
||||||
---
|
|
||||||
tests/test_new_scopes_compat_event.py | 38 +++++++++++----------------
|
|
||||||
1 file changed, 16 insertions(+), 22 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tests/test_new_scopes_compat_event.py b/tests/test_new_scopes_compat_event.py
|
|
||||||
index 53eb095b..91bfab43 100644
|
|
||||||
--- a/tests/test_new_scopes_compat_event.py
|
|
||||||
+++ b/tests/test_new_scopes_compat_event.py
|
|
||||||
@@ -4,6 +4,7 @@ from unittest import mock
|
|
||||||
|
|
||||||
import sentry_sdk
|
|
||||||
from sentry_sdk.hub import Hub
|
|
||||||
+from sentry_sdk.integrations import iter_default_integrations
|
|
||||||
from sentry_sdk.scrubber import EventScrubber, DEFAULT_DENYLIST
|
|
||||||
|
|
||||||
|
|
||||||
@@ -18,7 +19,17 @@ This makes sure that we are backwards compatible. (on a best effort basis, there
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
-def expected_error():
|
|
||||||
+def integrations():
|
|
||||||
+ return [
|
|
||||||
+ integration.identifier
|
|
||||||
+ for integration in iter_default_integrations(
|
|
||||||
+ with_auto_enabling_integrations=False
|
|
||||||
+ )
|
|
||||||
+ ]
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+@pytest.fixture
|
|
||||||
+def expected_error(integrations):
|
|
||||||
def create_expected_error_event(trx, span):
|
|
||||||
return {
|
|
||||||
"level": "warning-X",
|
|
||||||
@@ -122,16 +133,7 @@ def expected_error():
|
|
||||||
"name": "sentry.python",
|
|
||||||
"version": mock.ANY,
|
|
||||||
"packages": [{"name": "pypi:sentry-sdk", "version": mock.ANY}],
|
|
||||||
- "integrations": [
|
|
||||||
- "argv",
|
|
||||||
- "atexit",
|
|
||||||
- "dedupe",
|
|
||||||
- "excepthook",
|
|
||||||
- "logging",
|
|
||||||
- "modules",
|
|
||||||
- "stdlib",
|
|
||||||
- "threading",
|
|
||||||
- ],
|
|
||||||
+ "integrations": integrations,
|
|
||||||
},
|
|
||||||
"platform": "python",
|
|
||||||
"_meta": {
|
|
||||||
@@ -149,7 +151,7 @@ def expected_error():
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
|
||||||
-def expected_transaction():
|
|
||||||
+def expected_transaction(integrations):
|
|
||||||
def create_expected_transaction_event(trx, span):
|
|
||||||
return {
|
|
||||||
"type": "transaction",
|
|
||||||
@@ -220,16 +222,7 @@ def expected_transaction():
|
|
||||||
"name": "sentry.python",
|
|
||||||
"version": mock.ANY,
|
|
||||||
"packages": [{"name": "pypi:sentry-sdk", "version": mock.ANY}],
|
|
||||||
- "integrations": [
|
|
||||||
- "argv",
|
|
||||||
- "atexit",
|
|
||||||
- "dedupe",
|
|
||||||
- "excepthook",
|
|
||||||
- "logging",
|
|
||||||
- "modules",
|
|
||||||
- "stdlib",
|
|
||||||
- "threading",
|
|
||||||
- ],
|
|
||||||
+ "integrations": integrations,
|
|
||||||
},
|
|
||||||
"platform": "python",
|
|
||||||
"_meta": {
|
|
||||||
@@ -328,6 +321,7 @@ def _init_sentry_sdk(sentry_init):
|
|
||||||
),
|
|
||||||
send_default_pii=False,
|
|
||||||
traces_sample_rate=1.0,
|
|
||||||
+ auto_enabling_integrations=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
2.45.2
|
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
From 7defd4e239cd4fe1749b74487bf5b52328e2c23e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Roman Inflianskas <rominf@pm.me>
|
|
||||||
Date: Thu, 4 Jul 2024 22:34:14 +0300
|
|
||||||
Subject: [PATCH] fix(tests): Fix exception on copying `frame.f_locals` (Python
|
|
||||||
3.13)
|
|
||||||
|
|
||||||
Starting from Python 3.13, `frame.f_locals` is not `dict` anymore, but
|
|
||||||
`FrameLocalsProxy`, that cannot be copied using `copy.copy()`. In Python
|
|
||||||
3.13 and later, it should be copied using a method `.copy()`. The new way
|
|
||||||
of copying works the same as the old one for versions of Python prior to
|
|
||||||
3.13, according to the documentation (both copying methods produce a
|
|
||||||
shallow copy).
|
|
||||||
|
|
||||||
Since Python 3.13, `FrameLocalsProxy` skips items of `locals()` that have
|
|
||||||
non-`str` keys; this is a CPython implementation detail. Disable
|
|
||||||
`test_non_string_variables` test on Python 3.13.
|
|
||||||
|
|
||||||
See:
|
|
||||||
https://peps.python.org/pep-0667/
|
|
||||||
https://github.com/python/cpython/issues/118921
|
|
||||||
https://github.com/python/cpython/pull/118923
|
|
||||||
https://docs.python.org/3.13/whatsnew/3.13.html#porting-to-python-3-13
|
|
||||||
https://docs.python.org/3/library/copy.html
|
|
||||||
https://github.com/python/cpython/blame/7b413952e817ae87bfda2ac85dd84d30a6ce743b/Objects/frameobject.c#L148
|
|
||||||
---
|
|
||||||
sentry_sdk/utils.py | 3 +--
|
|
||||||
tests/test_client.py | 7 +++++++
|
|
||||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/sentry_sdk/utils.py b/sentry_sdk/utils.py
|
|
||||||
index a84f2eb3..64bbd383 100644
|
|
||||||
--- a/sentry_sdk/utils.py
|
|
||||||
+++ b/sentry_sdk/utils.py
|
|
||||||
@@ -11,7 +11,6 @@ import sys
|
|
||||||
import threading
|
|
||||||
import time
|
|
||||||
from collections import namedtuple
|
|
||||||
-from copy import copy
|
|
||||||
from datetime import datetime
|
|
||||||
from decimal import Decimal
|
|
||||||
from functools import partial, partialmethod, wraps
|
|
||||||
@@ -618,7 +617,7 @@ def serialize_frame(
|
|
||||||
)
|
|
||||||
|
|
||||||
if include_local_variables:
|
|
||||||
- rv["vars"] = copy(frame.f_locals)
|
|
||||||
+ rv["vars"] = frame.f_locals.copy()
|
|
||||||
|
|
||||||
return rv
|
|
||||||
|
|
||||||
diff --git a/tests/test_client.py b/tests/test_client.py
|
|
||||||
index 0464f32b..447359a1 100644
|
|
||||||
--- a/tests/test_client.py
|
|
||||||
+++ b/tests/test_client.py
|
|
||||||
@@ -31,6 +31,12 @@ if TYPE_CHECKING:
|
|
||||||
from sentry_sdk._types import Event
|
|
||||||
|
|
||||||
|
|
||||||
+maximum_python_312 = pytest.mark.skipif(
|
|
||||||
+ sys.version_info > (3, 12),
|
|
||||||
+ reason="Since Python 3.13, `FrameLocalsProxy` skips items of `locals()` that have non-`str` keys; this is a CPython implementation detail: https://github.com/python/cpython/blame/7b413952e817ae87bfda2ac85dd84d30a6ce743b/Objects/frameobject.c#L148",
|
|
||||||
+)
|
|
||||||
+
|
|
||||||
+
|
|
||||||
class EnvelopeCapturedError(Exception):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@@ -879,6 +885,7 @@ def test_errno_errors(sentry_init, capture_events):
|
|
||||||
assert exception["mechanism"]["meta"]["errno"]["number"] == 69
|
|
||||||
|
|
||||||
|
|
||||||
+@maximum_python_312
|
|
||||||
def test_non_string_variables(sentry_init, capture_events):
|
|
||||||
"""There is some extremely terrible code in the wild that
|
|
||||||
inserts non-strings as variable names into `locals()`."""
|
|
||||||
--
|
|
||||||
2.45.2
|
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
From a87d055571b0ae496b60d4e833f64b925e5f9563 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Roman Inflianskas <rominf@pm.me>
|
|
||||||
Date: Fri, 5 Jul 2024 16:38:32 +0300
|
|
||||||
Subject: [PATCH] fix(utils): Handle `partialmethod` in qualname_from_function
|
|
||||||
(CPython 3.13)
|
|
||||||
|
|
||||||
`_partialmethod` attribute of methods wrapped with `partialmethod()` was
|
|
||||||
renamed to `__partialmethod__` in CPython 3.13:
|
|
||||||
https://github.com/python/cpython/pull/16600
|
|
||||||
---
|
|
||||||
sentry_sdk/utils.py | 14 ++++++++------
|
|
||||||
1 file changed, 8 insertions(+), 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/sentry_sdk/utils.py b/sentry_sdk/utils.py
|
|
||||||
index 64bbd383..262f4f97 100644
|
|
||||||
--- a/sentry_sdk/utils.py
|
|
||||||
+++ b/sentry_sdk/utils.py
|
|
||||||
@@ -1329,14 +1329,16 @@ def qualname_from_function(func):
|
|
||||||
|
|
||||||
prefix, suffix = "", ""
|
|
||||||
|
|
||||||
- if hasattr(func, "_partialmethod") and isinstance(
|
|
||||||
- func._partialmethod, partialmethod
|
|
||||||
- ):
|
|
||||||
- prefix, suffix = "partialmethod(<function ", ">)"
|
|
||||||
- func = func._partialmethod.func
|
|
||||||
- elif isinstance(func, partial) and hasattr(func.func, "__name__"):
|
|
||||||
+ if isinstance(func, partial) and hasattr(func.func, "__name__"):
|
|
||||||
prefix, suffix = "partial(<function ", ">)"
|
|
||||||
func = func.func
|
|
||||||
+ else:
|
|
||||||
+ # _partialmethod attribute of methods wrapped with partialmethod() was renamed to __partialmethod__ in CPython 3.13:
|
|
||||||
+ # https://github.com/python/cpython/pull/16600
|
|
||||||
+ partial_method = getattr(func, "_partialmethod", None) or getattr(func, "__partialmethod__", None)
|
|
||||||
+ if isinstance(partial_method, partialmethod):
|
|
||||||
+ prefix, suffix = "partialmethod(<function ", ">)"
|
|
||||||
+ func = partial_method.func
|
|
||||||
|
|
||||||
if hasattr(func, "__qualname__"):
|
|
||||||
func_qualname = func.__qualname__
|
|
||||||
--
|
|
||||||
2.45.2
|
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
From 08fc215667b4b85dd791ac4d1f0dd188f3ec575f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Roman Inflianskas <rominf@pm.me>
|
|
||||||
Date: Thu, 11 Jul 2024 17:29:00 +0300
|
|
||||||
Subject: [PATCH] test: Allow passing of PostgreSQL port
|
|
||||||
|
|
||||||
In some environments, port `5432` might be already opened by some other
|
|
||||||
process. Allow passing an arbitrary port via the
|
|
||||||
`SENTPY_PYTHON_TEST_POSTGRES_PORT` environmental variable.
|
|
||||||
---
|
|
||||||
tests/integrations/asyncpg/test_asyncpg.py | 2 +-
|
|
||||||
tests/integrations/django/myapp/settings.py | 2 +-
|
|
||||||
tests/integrations/django/test_basic.py | 4 +++-
|
|
||||||
3 files changed, 5 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/tests/integrations/asyncpg/test_asyncpg.py b/tests/integrations/asyncpg/test_asyncpg.py
|
|
||||||
index 94b02f4c..e36d15c5 100644
|
|
||||||
--- a/tests/integrations/asyncpg/test_asyncpg.py
|
|
||||||
+++ b/tests/integrations/asyncpg/test_asyncpg.py
|
|
||||||
@@ -13,7 +13,7 @@ import os
|
|
||||||
|
|
||||||
|
|
||||||
PG_HOST = os.getenv("SENTRY_PYTHON_TEST_POSTGRES_HOST", "localhost")
|
|
||||||
-PG_PORT = 5432
|
|
||||||
+PG_PORT = int(os.getenv("SENTRY_PYTHON_TEST_POSTGRES_PORT", "5432"))
|
|
||||||
PG_USER = os.getenv("SENTRY_PYTHON_TEST_POSTGRES_USER", "postgres")
|
|
||||||
PG_PASSWORD = os.getenv("SENTRY_PYTHON_TEST_POSTGRES_PASSWORD", "sentry")
|
|
||||||
PG_NAME = os.getenv("SENTRY_PYTHON_TEST_POSTGRES_NAME", "postgres")
|
|
||||||
diff --git a/tests/integrations/django/myapp/settings.py b/tests/integrations/django/myapp/settings.py
|
|
||||||
index 8956357a..0678762b 100644
|
|
||||||
--- a/tests/integrations/django/myapp/settings.py
|
|
||||||
+++ b/tests/integrations/django/myapp/settings.py
|
|
||||||
@@ -122,7 +122,7 @@ try:
|
|
||||||
DATABASES["postgres"] = {
|
|
||||||
"ENGINE": db_engine,
|
|
||||||
"HOST": os.environ.get("SENTRY_PYTHON_TEST_POSTGRES_HOST", "localhost"),
|
|
||||||
- "PORT": 5432,
|
|
||||||
+ "PORT": int(os.environ.get("SENTRY_PYTHON_TEST_POSTGRES_PORT", "5432")),
|
|
||||||
"USER": os.environ.get("SENTRY_PYTHON_TEST_POSTGRES_USER", "postgres"),
|
|
||||||
"PASSWORD": os.environ.get("SENTRY_PYTHON_TEST_POSTGRES_PASSWORD", "sentry"),
|
|
||||||
"NAME": os.environ.get(
|
|
||||||
diff --git a/tests/integrations/django/test_basic.py b/tests/integrations/django/test_basic.py
|
|
||||||
index f79c6e13..1505204f 100644
|
|
||||||
--- a/tests/integrations/django/test_basic.py
|
|
||||||
+++ b/tests/integrations/django/test_basic.py
|
|
||||||
@@ -626,7 +626,9 @@ def test_db_connection_span_data(sentry_init, client, capture_events):
|
|
||||||
assert data.get(SPANDATA.SERVER_ADDRESS) == os.environ.get(
|
|
||||||
"SENTRY_PYTHON_TEST_POSTGRES_HOST", "localhost"
|
|
||||||
)
|
|
||||||
- assert data.get(SPANDATA.SERVER_PORT) == "5432"
|
|
||||||
+ assert data.get(SPANDATA.SERVER_PORT) == os.environ.get(
|
|
||||||
+ "SENTRY_PYTHON_TEST_POSTGRES_PORT", "5432"
|
|
||||||
+ )
|
|
||||||
|
|
||||||
|
|
||||||
def test_set_db_data_custom_backend():
|
|
||||||
--
|
|
||||||
2.45.2
|
|
||||||
|
|
|
@ -10,11 +10,13 @@
|
||||||
# no_chalice: chalice is not packaged.
|
# no_chalice: chalice is not packaged.
|
||||||
# no_clickhouse_driver: clickhouse_driver is not packaged.
|
# no_clickhouse_driver: clickhouse_driver is not packaged.
|
||||||
# no_cohere: cohere is not packaged.
|
# no_cohere: cohere is not packaged.
|
||||||
|
# no_dramatiq: dramatiq is not packaged.
|
||||||
# no_fakeredis: fakeredis is not packaged.
|
# no_fakeredis: fakeredis is not packaged.
|
||||||
# no_gql: gql is not packaged.
|
# no_gql: gql is not packaged.
|
||||||
# no_huey: huey is not packaged.
|
# no_huey: huey is not packaged.
|
||||||
# no_huggingface_hub: huggingface_hub is not packaged.
|
# no_huggingface_hub: huggingface_hub is not packaged.
|
||||||
# no_langchain: langchain is not packaged.
|
# no_langchain: langchain is not packaged.
|
||||||
|
# no_litestar: litestar is not packaged.
|
||||||
# no_loguru: loguru is not packaged.
|
# no_loguru: loguru is not packaged.
|
||||||
# no_mockupdb: mockupdb is not packaged. It is unmaintained: https://github.com/mongodb-labs/mongo-mockup-db.
|
# no_mockupdb: mockupdb is not packaged. It is unmaintained: https://github.com/mongodb-labs/mongo-mockup-db.
|
||||||
# no_newrelic: newrelic is not packaged.
|
# no_newrelic: newrelic is not packaged.
|
||||||
|
@ -22,6 +24,7 @@
|
||||||
# no_potel: opentelemetry-experimental is not packaged.
|
# no_potel: opentelemetry-experimental is not packaged.
|
||||||
# no_pyspark: pyspark is not packaged.
|
# no_pyspark: pyspark is not packaged.
|
||||||
# no_quart: quart is not packaged.
|
# no_quart: quart is not packaged.
|
||||||
|
# no_ray: ray is not packaged.
|
||||||
# no_sanic: sanic is not packaged.
|
# no_sanic: sanic is not packaged.
|
||||||
# no_starlite: starlite is not packaged.
|
# no_starlite: starlite is not packaged.
|
||||||
# no_strawberry: strawberry is not packaged.
|
# no_strawberry: strawberry is not packaged.
|
||||||
|
@ -41,7 +44,7 @@
|
||||||
%bcond network_tests 0
|
%bcond network_tests 0
|
||||||
|
|
||||||
%global forgeurl https://github.com/getsentry/sentry-python
|
%global forgeurl https://github.com/getsentry/sentry-python
|
||||||
Version: 2.7.1
|
Version: 2.13.0
|
||||||
%global tag %{version}
|
%global tag %{version}
|
||||||
%forgemeta
|
%forgemeta
|
||||||
|
|
||||||
|
@ -51,28 +54,10 @@ Summary: The new Python SDK for Sentry.io
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: https://sentry.io/for/python/
|
URL: https://sentry.io/for/python/
|
||||||
Source0: %{forgesource}
|
Source0: %{forgesource}
|
||||||
# Tests fail with:
|
|
||||||
# `AssertionError: previous item was not torn down properly`
|
|
||||||
# because of the bug in pytest-forked, reorder them to make them pass.
|
|
||||||
# See https://github.com/pytest-dev/pytest-forked/issues/67#issuecomment-1964718720
|
|
||||||
# for the explanation.
|
|
||||||
# Upstream issue: https://github.com/getsentry/sentry-python/issues/3035
|
|
||||||
Patch0: 0001-Reorder-forked-tests.patch
|
|
||||||
# Tests fail because they are expected to be executed in a clean environment.
|
|
||||||
# Upstream PR: https://github.com/getsentry/sentry-python/pull/3240
|
|
||||||
Patch1: 0002-ref-tests-Unhardcode-integration-list.patch
|
|
||||||
# Patches for Python 3.13 support
|
|
||||||
# Upstream PR: https://github.com/getsentry/sentry-python/pull/3271
|
|
||||||
Patch2: 0003-fix-tests-Fix-exception-on-copying-frame.f_locals-Py.patch
|
|
||||||
# Upstream PR: https://github.com/getsentry/sentry-python/pull/3272
|
|
||||||
Patch3: 0004-fix-utils-Handle-partialmethod-in-qualname_from_func.patch
|
|
||||||
# Patch for non-default PostgreSQL port
|
|
||||||
# Upstream PR: https://github.com/getsentry/sentry-python/pull/3281
|
|
||||||
Patch4: 0005-test-Allow-passing-of-PostgreSQL-port.patch
|
|
||||||
# Patches for testing and fixing logic for handling `in_app_include` in `add_query_source`
|
# Patches for testing and fixing logic for handling `in_app_include` in `add_query_source`
|
||||||
# Upstream PR: https://github.com/getsentry/sentry-python/pull/3313
|
# Upstream PR: https://github.com/getsentry/sentry-python/pull/3313
|
||||||
Patch5: 0006-test-tracing-Test-add_query_source-with-modules-outs.patch
|
Patch0: 0000-test-tracing-Test-add_query_source-with-modules-outs.patch
|
||||||
Patch6: 0007-fix-tracing-Fix-add_query_source-with-modules-outsid.patch
|
Patch1: 0001-fix-tracing-Fix-add_query_source-with-modules-outsid.patch
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
BuildRequires: python3-devel
|
BuildRequires: python3-devel
|
||||||
|
@ -151,6 +136,7 @@ Summary: %{summary}
|
||||||
# huey: no_huey
|
# huey: no_huey
|
||||||
# huggingface_hub: no_huggingface_hub
|
# huggingface_hub: no_huggingface_hub
|
||||||
# langchain: no_langchain
|
# langchain: no_langchain
|
||||||
|
# litestar: no_litestar
|
||||||
# loguru: no_loguru
|
# loguru: no_loguru
|
||||||
# openai: no_openai
|
# openai: no_openai
|
||||||
# quart: no_quart
|
# quart: no_quart
|
||||||
|
@ -165,6 +151,7 @@ Summary: %{summary}
|
||||||
huggingface_hub
|
huggingface_hub
|
||||||
langchain
|
langchain
|
||||||
loguru
|
loguru
|
||||||
|
litestar
|
||||||
openai
|
openai
|
||||||
quart
|
quart
|
||||||
sanic
|
sanic
|
||||||
|
@ -215,6 +202,7 @@ Summary: %{summary}
|
||||||
# bottle: new_werkzeug
|
# bottle: new_werkzeug
|
||||||
# clickhouse_driver: no_clickhouse_driver
|
# clickhouse_driver: no_clickhouse_driver
|
||||||
# cohere: no_cohere
|
# cohere: no_cohere
|
||||||
|
# dramatiq: no_dramatiq
|
||||||
# flask: new_werkzeug
|
# flask: new_werkzeug
|
||||||
# gcp: python 3.7 only
|
# gcp: python 3.7 only
|
||||||
# gevent: no_py313_support_gevent
|
# gevent: no_py313_support_gevent
|
||||||
|
@ -224,6 +212,7 @@ Summary: %{summary}
|
||||||
# potel: no_potel
|
# potel: no_potel
|
||||||
# pymongo: no_mockupdb
|
# pymongo: no_mockupdb
|
||||||
# pyramid: new_werkzeug
|
# pyramid: new_werkzeug
|
||||||
|
# ray: no_ray
|
||||||
# redis: no_fakeredis
|
# redis: no_fakeredis
|
||||||
# redis_py_cluster_legacy: no_fakeredis
|
# redis_py_cluster_legacy: no_fakeredis
|
||||||
# requests: require network
|
# requests: require network
|
||||||
|
@ -241,6 +230,7 @@ Summary: %{summary}
|
||||||
%{toxenv}-bottle
|
%{toxenv}-bottle
|
||||||
%{toxenv}-clickhouse_driver
|
%{toxenv}-clickhouse_driver
|
||||||
%{toxenv}-cohere
|
%{toxenv}-cohere
|
||||||
|
%{toxenv}-dramatiq
|
||||||
%{toxenv}-flask
|
%{toxenv}-flask
|
||||||
%{toxenv}-gcp
|
%{toxenv}-gcp
|
||||||
%{toxenv}-gevent
|
%{toxenv}-gevent
|
||||||
|
@ -250,6 +240,7 @@ Summary: %{summary}
|
||||||
%{toxenv}-potel
|
%{toxenv}-potel
|
||||||
%{toxenv}-pymongo
|
%{toxenv}-pymongo
|
||||||
%{toxenv}-pyramid
|
%{toxenv}-pyramid
|
||||||
|
%{toxenv}-ray
|
||||||
%{toxenv}-redis
|
%{toxenv}-redis
|
||||||
%{toxenv}-redis_py_cluster_legacy
|
%{toxenv}-redis_py_cluster_legacy
|
||||||
%{toxenv}-rq
|
%{toxenv}-rq
|
||||||
|
@ -286,21 +277,6 @@ sed -r -i 's/(anyio)<4\.0\.0/\1/' tox.ini
|
||||||
# no_newrelic
|
# no_newrelic
|
||||||
sed -r -i '/(newrelic)/d' tox.ini
|
sed -r -i '/(newrelic)/d' tox.ini
|
||||||
|
|
||||||
# ipdb is not used.
|
|
||||||
# https://github.com/getsentry/sentry-python/pull/3237
|
|
||||||
sed -r -i '/(ipdb)/d' requirements-testing.txt
|
|
||||||
|
|
||||||
# These opentelemetry-instrumentation Python packages are not packaged.
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-aio-pika)/d' setup.py
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-cassandra)/d' setup.py
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-confluent-kafka)/d' setup.py
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-falcon)/d' setup.py
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-grpc)/d' setup.py
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-remoulade)/d' setup.py
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-sklearn)/d' setup.py
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-starlette)/d' setup.py
|
|
||||||
sed -r -i '/(opentelemetry-instrumentation-tortoiseorm)/d' setup.py
|
|
||||||
|
|
||||||
# These Python packages needed for linting are not packaged.
|
# These Python packages needed for linting are not packaged.
|
||||||
sed -r -i '/(mypy-protobuf)/d' tox.ini
|
sed -r -i '/(mypy-protobuf)/d' tox.ini
|
||||||
sed -r -i '/(types-protobuf)/d' tox.ini
|
sed -r -i '/(types-protobuf)/d' tox.ini
|
||||||
|
@ -333,13 +309,16 @@ skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.celery_redbe
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.chalice" # no_chalice
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.chalice" # no_chalice
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.clickhouse_driver" # no_clickhouse_driver
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.clickhouse_driver" # no_clickhouse_driver
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.cohere" # no_cohere
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.cohere" # no_cohere
|
||||||
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.dramatiq" # no_dramatiq
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.gql" # no_gql
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.gql" # no_gql
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.huey" # no_huey
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.huey" # no_huey
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.huggingface_hub" # no_huggingface_hub
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.huggingface_hub" # no_huggingface_hub
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.langchain" # no_langchain
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.langchain" # no_langchain
|
||||||
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.litestar" # no_litestar
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.loguru" # no_loguru
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.loguru" # no_loguru
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.openai" # no_openai
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.openai" # no_openai
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.quart" # no_quart
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.quart" # no_quart
|
||||||
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.ray" # no_ray
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.sanic" # no_sanic
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.sanic" # no_sanic
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.starlite" # no_starlite
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.starlite" # no_starlite
|
||||||
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.strawberry" # no_strawberry
|
skip_import_check="${skip_import_check-} -e sentry_sdk.integrations.strawberry" # no_strawberry
|
||||||
|
@ -462,11 +441,6 @@ export SENTRY_PYTHON_TEST_POSTGRES_PORT=$PGTESTS_PORT
|
||||||
psql -c "CREATE ROLE $SENTRY_PYTHON_TEST_POSTGRES_USER WITH LOGIN SUPERUSER PASSWORD '$SENTRY_PYTHON_TEST_POSTGRES_PASSWORD';"
|
psql -c "CREATE ROLE $SENTRY_PYTHON_TEST_POSTGRES_USER WITH LOGIN SUPERUSER PASSWORD '$SENTRY_PYTHON_TEST_POSTGRES_PASSWORD';"
|
||||||
createdb $SENTRY_PYTHON_TEST_POSTGRES_NAME --owner $SENTRY_PYTHON_TEST_POSTGRES_USER
|
createdb $SENTRY_PYTHON_TEST_POSTGRES_NAME --owner $SENTRY_PYTHON_TEST_POSTGRES_USER
|
||||||
|
|
||||||
# TODO: Determine why this test is not compatible with tox macro.
|
|
||||||
pytest_test="tests/integrations/opentelemetry/test_experimental.py::test_post_patching"
|
|
||||||
deselect="${deselect-} --deselect=${pytest_test}"
|
|
||||||
%pytest $pytest_test
|
|
||||||
|
|
||||||
DJANGO_SETTINGS_MODULE=tests.integrations.django.myapp.settings %tox -e %{toxenvs_csv} -- -- ${deselect-} ${ignore-}
|
DJANGO_SETTINGS_MODULE=tests.integrations.django.myapp.settings %tox -e %{toxenvs_csv} -- -- ${deselect-} ${ignore-}
|
||||||
|
|
||||||
# Terminate redis-server.
|
# Terminate redis-server.
|
||||||
|
|
2
sources
2
sources
|
@ -1 +1 @@
|
||||||
SHA512 (sentry-python-2.7.1.tar.gz) = afe034553ddb5eeefa00db26e13cebe82d946f990eb62f8cfde670ad5d9d5c93c0ffb2d0ed5f01f55ac533dca66ab6f53553e5b8f011e08705213cb515146516
|
SHA512 (sentry-python-2.13.0.tar.gz) = 4dd48d8acd1a132d93e08bb44028b7ec88b75bb821acbc3376391527e113c38abd74b4bc535b9a1f79fa3647bbafb22de85a6a553dc2c61fbd6095ffb39c6f32
|
||||||
|
|
Loading…
Add table
Reference in a new issue