debugbundle-python 0.1.9__tar.gz → 1.0.0__tar.gz

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.
Files changed (42) hide show
  1. {debugbundle_python-0.1.9/src/debugbundle_python.egg-info → debugbundle_python-1.0.0}/PKG-INFO +2 -2
  2. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/pyproject.toml +2 -2
  3. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/core.py +1 -1
  4. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0/src/debugbundle_python.egg-info}/PKG-INFO +2 -2
  5. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle_python.egg-info/SOURCES.txt +1 -0
  6. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_repository_metadata.py +1 -1
  7. debugbundle_python-1.0.0/tests/test_smoke_script.py +60 -0
  8. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/LICENSE +0 -0
  9. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/README.md +0 -0
  10. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/setup.cfg +0 -0
  11. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/__init__.py +0 -0
  12. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/config.py +0 -0
  13. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/integrations/__init__.py +0 -0
  14. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/integrations/common.py +0 -0
  15. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/integrations/django.py +0 -0
  16. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/integrations/fastapi.py +0 -0
  17. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/integrations/flask.py +0 -0
  18. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/integrations/relay_django.py +0 -0
  19. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/integrations/relay_fastapi.py +0 -0
  20. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/integrations/relay_flask.py +0 -0
  21. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/logger_integrations.py +0 -0
  22. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/py.typed +0 -0
  23. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/redaction.py +0 -0
  24. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/relay.py +0 -0
  25. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/relay_delivery.py +0 -0
  26. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/suppression.py +0 -0
  27. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/transport.py +0 -0
  28. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle/trigger_token.py +0 -0
  29. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle_python.egg-info/dependency_links.txt +0 -0
  30. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle_python.egg-info/requires.txt +0 -0
  31. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/src/debugbundle_python.egg-info/top_level.txt +0 -0
  32. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_contracts.py +0 -0
  33. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_framework_integrations.py +0 -0
  34. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_hooks.py +0 -0
  35. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_http_integration.py +0 -0
  36. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_optional_imports.py +0 -0
  37. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_relay.py +0 -0
  38. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_relay_delivery.py +0 -0
  39. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_remote_config.py +0 -0
  40. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_schema_validation.py +0 -0
  41. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_sdk.py +0 -0
  42. {debugbundle_python-0.1.9 → debugbundle_python-1.0.0}/tests/test_trigger_token.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: debugbundle-python
3
- Version: 0.1.9
3
+ Version: 1.0.0
4
4
  Summary: DebugBundle SDK for Python
5
5
  Author: DebugBundle
6
6
  License-Expression: AGPL-3.0-only
@@ -8,7 +8,7 @@ Project-URL: Homepage, https://debugbundle.com/docs/sdks/python
8
8
  Project-URL: Repository, https://github.com/debugbundle/debugbundle-python
9
9
  Project-URL: Issues, https://github.com/debugbundle/debugbundle-python/issues
10
10
  Keywords: debugbundle,debugging,ai-agent,error-tracking
11
- Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Framework :: Django
13
13
  Classifier: Framework :: FastAPI
14
14
  Classifier: Framework :: Flask
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "debugbundle-python"
7
- version = "0.1.9"
7
+ version = "1.0.0"
8
8
  description = "DebugBundle SDK for Python"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -12,7 +12,7 @@ license = "AGPL-3.0-only"
12
12
  authors = [{ name = "DebugBundle" }]
13
13
  keywords = ["debugbundle", "debugging", "ai-agent", "error-tracking"]
14
14
  classifiers = [
15
- "Development Status :: 3 - Alpha",
15
+ "Development Status :: 5 - Production/Stable",
16
16
  "Framework :: Django",
17
17
  "Framework :: FastAPI",
18
18
  "Framework :: Flask",
@@ -891,7 +891,7 @@ def _sdk_version() -> str:
891
891
  try:
892
892
  return metadata.version("debugbundle-python")
893
893
  except metadata.PackageNotFoundError:
894
- return "0.1.0"
894
+ return "1.0.0"
895
895
 
896
896
 
897
897
  def _sdk_config_endpoint(events_endpoint: str) -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: debugbundle-python
3
- Version: 0.1.9
3
+ Version: 1.0.0
4
4
  Summary: DebugBundle SDK for Python
5
5
  Author: DebugBundle
6
6
  License-Expression: AGPL-3.0-only
@@ -8,7 +8,7 @@ Project-URL: Homepage, https://debugbundle.com/docs/sdks/python
8
8
  Project-URL: Repository, https://github.com/debugbundle/debugbundle-python
9
9
  Project-URL: Issues, https://github.com/debugbundle/debugbundle-python/issues
10
10
  Keywords: debugbundle,debugging,ai-agent,error-tracking
11
- Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Framework :: Django
13
13
  Classifier: Framework :: FastAPI
14
14
  Classifier: Framework :: Flask
@@ -36,4 +36,5 @@ tests/test_remote_config.py
36
36
  tests/test_repository_metadata.py
37
37
  tests/test_schema_validation.py
38
38
  tests/test_sdk.py
39
+ tests/test_smoke_script.py
39
40
  tests/test_trigger_token.py
@@ -30,7 +30,7 @@ def test_standalone_changelog_and_security_policy_are_launch_ready() -> None:
30
30
  security = (REPO_ROOT / "SECURITY.md").read_text(encoding="utf-8")
31
31
 
32
32
  assert "## [Unreleased]" in changelog
33
- assert "## [0.1.0] - 2026-05-07" in changelog
33
+ assert "## [1.0.0] - 2026-05-31" in changelog
34
34
  assert "https://github.com/debugbundle/debugbundle-python/security/advisories/new" in security
35
35
 
36
36
 
@@ -0,0 +1,60 @@
1
+ from __future__ import annotations
2
+
3
+ import importlib.util
4
+ import subprocess
5
+ import sys
6
+ from pathlib import Path
7
+
8
+ REPO_ROOT = Path(__file__).resolve().parents[1]
9
+ SMOKE_SCRIPT = REPO_ROOT / "smoke" / "run_app_driven_smoke.py"
10
+ SPEC = importlib.util.spec_from_file_location("debugbundle_python_smoke", SMOKE_SCRIPT)
11
+ assert SPEC is not None and SPEC.loader is not None
12
+ SMOKE = importlib.util.module_from_spec(SPEC)
13
+ sys.modules.setdefault("debugbundle_python_smoke", SMOKE)
14
+ SPEC.loader.exec_module(SMOKE)
15
+
16
+
17
+ def test_install_with_retry_retries_until_success(monkeypatch) -> None:
18
+ calls: list[list[str]] = []
19
+ sleeps: list[int] = []
20
+ outcomes = [
21
+ subprocess.CalledProcessError(returncode=1, cmd=["pip", "install"]),
22
+ None,
23
+ ]
24
+
25
+ def fake_run_subprocess(command: list[str]) -> None:
26
+ calls.append(command)
27
+ outcome = outcomes.pop(0)
28
+ if outcome is not None:
29
+ raise outcome
30
+
31
+ monkeypatch.setattr(SMOKE, "_run_subprocess", fake_run_subprocess)
32
+ monkeypatch.setattr(SMOKE.time, "sleep", sleeps.append)
33
+
34
+ SMOKE._install_with_retry(
35
+ ["python", "-m", "pip", "install", "debugbundle-python==1.0.0"],
36
+ retries=3,
37
+ retry_delay_seconds=7,
38
+ )
39
+
40
+ assert len(calls) == 2
41
+ assert sleeps == [7]
42
+
43
+
44
+ def test_install_with_retry_raises_after_final_attempt(monkeypatch) -> None:
45
+ def fake_run_subprocess(command: list[str]) -> None:
46
+ raise subprocess.CalledProcessError(returncode=1, cmd=command)
47
+
48
+ monkeypatch.setattr(SMOKE, "_run_subprocess", fake_run_subprocess)
49
+ monkeypatch.setattr(SMOKE.time, "sleep", lambda seconds: None)
50
+
51
+ try:
52
+ SMOKE._install_with_retry(
53
+ ["python", "-m", "pip", "install", "debugbundle-python==1.0.0"],
54
+ retries=2,
55
+ retry_delay_seconds=1,
56
+ )
57
+ except subprocess.CalledProcessError as error:
58
+ assert error.returncode == 1
59
+ else:
60
+ raise AssertionError("Expected install retry helper to re-raise after the final attempt.")