watchdock-errors 0.1.2__tar.gz → 0.2.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 (22) hide show
  1. watchdock_errors-0.2.0/.github/workflows/ci.yml +56 -0
  2. watchdock_errors-0.2.0/.github/workflows/release.yml +41 -0
  3. watchdock_errors-0.2.0/.gitignore +33 -0
  4. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/PKG-INFO +105 -104
  5. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/README.md +85 -85
  6. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/pyproject.toml +43 -40
  7. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/setup.cfg +4 -4
  8. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors/__init__.py +132 -127
  9. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors/client.py +93 -93
  10. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors/config.py +34 -25
  11. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors/event.py +81 -81
  12. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors/integrations/django.py +85 -85
  13. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors/integrations/fastapi.py +68 -68
  14. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors/utils.py +33 -33
  15. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors.egg-info/PKG-INFO +105 -104
  16. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors.egg-info/SOURCES.txt +3 -0
  17. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors.egg-info/requires.txt +1 -0
  18. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/tests/test_client.py +45 -45
  19. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/tests/test_event.py +78 -78
  20. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors/integrations/__init__.py +0 -0
  21. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors.egg-info/dependency_links.txt +0 -0
  22. {watchdock_errors-0.1.2 → watchdock_errors-0.2.0}/src/watchdock_errors.egg-info/top_level.txt +0 -0
@@ -0,0 +1,56 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ name: Test
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ matrix:
15
+ python-version: ["3.10", "3.11", "3.12"]
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+
20
+ - name: Install Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: ${{ matrix.python-version }}
24
+
25
+ - name: Install dependencies
26
+ run: pip install -e ".[dev]"
27
+
28
+ - name: Run ruff
29
+ run: ruff check .
30
+
31
+ - name: Run tests
32
+ run: pytest --cov=watchdock_errors
33
+
34
+ build:
35
+ name: Build
36
+ runs-on: ubuntu-latest
37
+ needs: test
38
+
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+
42
+ - name: Install Python
43
+ uses: actions/setup-python@v5
44
+ with:
45
+ python-version: "3.12"
46
+
47
+ - name: Install build
48
+ run: pip install build
49
+
50
+ - name: Build package
51
+ run: python -m build
52
+
53
+ - name: Check package
54
+ run: |
55
+ python -m pip install dist/*.whl --target /tmp/check-install
56
+ python -c "import watchdock_errors; print(watchdock_errors.__version__)"
@@ -0,0 +1,41 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ jobs:
9
+ release:
10
+ name: Publish to PyPI
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ contents: write
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ with:
18
+ fetch-depth: 0
19
+
20
+ - name: Install Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.12"
24
+
25
+ - name: Install build
26
+ run: pip install build
27
+
28
+ - name: Build package
29
+ run: python -m build
30
+
31
+ - name: Publish to PyPI
32
+ uses: pypa/gh-action-pypi-publish@release/v1
33
+ with:
34
+ password: ${{ secrets.PYPI_API_TOKEN }}
35
+
36
+ - name: Create GitHub Release
37
+ uses: softprops/action-gh-release@v1
38
+ with:
39
+ files: dist/*
40
+ env:
41
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,33 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # Distribution / packaging
7
+ build/
8
+ dist/
9
+ *.egg-info/
10
+
11
+ # Virtual environments
12
+ .env
13
+ .venv
14
+ env/
15
+ venv/
16
+
17
+
18
+ # IDE
19
+ .idea/
20
+ .vscode/
21
+ *.swp
22
+ *.swo
23
+
24
+ # Testing
25
+ .pytest_cache/
26
+ .coverage
27
+ htmlcov/
28
+
29
+ # mypy
30
+ .mypy_cache/
31
+
32
+ # ruff
33
+ .ruff_cache/
@@ -1,104 +1,105 @@
1
- Metadata-Version: 2.4
2
- Name: watchdock-errors
3
- Version: 0.1.2
4
- Summary: Application error tracking SDK for the Watchdock platform
5
- License: MIT
6
- Keywords: error-tracking,observability,watchdock
7
- Requires-Python: >=3.10
8
- Description-Content-Type: text/markdown
9
- Requires-Dist: requests>=2.28
10
- Provides-Extra: django
11
- Requires-Dist: django>=3.2; extra == "django"
12
- Provides-Extra: fastapi
13
- Requires-Dist: fastapi>=0.95; extra == "fastapi"
14
- Requires-Dist: starlette>=0.27; extra == "fastapi"
15
- Provides-Extra: dev
16
- Requires-Dist: pytest>=7.0; extra == "dev"
17
- Requires-Dist: pytest-mock>=3.0; extra == "dev"
18
- Requires-Dist: responses>=0.23; extra == "dev"
19
-
20
- # watchdock-errors
21
-
22
- Python SDK for application-level error tracking on the [Watchdock](https://watchdock.cc) platform.
23
-
24
- ## Installation
25
-
26
- ```bash
27
- pip install watchdock-errors
28
- ```
29
-
30
- With framework extras:
31
-
32
- ```bash
33
- pip install "watchdock-errors[django]"
34
- pip install "watchdock-errors[fastapi]"
35
- ```
36
-
37
- ## Quickstart
38
-
39
- ```python
40
- import watchdock_errors
41
-
42
- watchdock_errors.init(
43
- api_key="wdk_xxx",
44
- environment="production",
45
- release="1.0.0",
46
- )
47
- ```
48
-
49
- ### Django
50
-
51
- ```python
52
- # settings.py
53
- MIDDLEWARE = [
54
- ...
55
- "watchdock_errors.integrations.django.DjangoErrorMiddleware",
56
- ]
57
- ```
58
-
59
- Or via `INSTALLED_APPS` for automatic registration:
60
-
61
- ```python
62
- INSTALLED_APPS = [
63
- ...
64
- "watchdock_errors.integrations.django",
65
- ]
66
- ```
67
-
68
- ### FastAPI
69
-
70
- ```python
71
- from watchdock_errors.integrations.fastapi import setup_watchdock
72
-
73
- setup_watchdock(app)
74
- ```
75
-
76
- ## Manual capture
77
-
78
- ```python
79
- # Capture the current exception
80
- try:
81
- process_payment()
82
- except Exception:
83
- watchdock_errors.capture_exception()
84
-
85
- # Capture a specific exception
86
- watchdock_errors.capture_exception(exc)
87
-
88
- # Capture a message
89
- watchdock_errors.capture_message("Stripe webhook signature invalid")
90
- ```
91
-
92
- ## PII scrubbing
93
-
94
- By default, `Authorization`, `Cookie`, and `X-Api-Key` headers are stripped and the request body is not sent. Set `send_pii=True` to disable scrubbing.
95
-
96
- Use the `before_send` hook for custom scrubbing:
97
-
98
- ```python
99
- def scrub(event):
100
- event["request"]["headers"].pop("X-Internal-Token", None)
101
- return event # return None to drop the event entirely
102
-
103
- watchdock_errors.init(api_key="wdk_xxx", before_send=scrub)
104
- ```
1
+ Metadata-Version: 2.4
2
+ Name: watchdock-errors
3
+ Version: 0.2.0
4
+ Summary: Application error tracking SDK for the Watchdock platform
5
+ License: MIT
6
+ Keywords: error-tracking,observability,watchdock
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: requests>=2.28
10
+ Provides-Extra: django
11
+ Requires-Dist: django>=3.2; extra == "django"
12
+ Provides-Extra: fastapi
13
+ Requires-Dist: fastapi>=0.95; extra == "fastapi"
14
+ Requires-Dist: starlette>=0.27; extra == "fastapi"
15
+ Provides-Extra: dev
16
+ Requires-Dist: pytest>=7.0; extra == "dev"
17
+ Requires-Dist: pytest-mock>=3.0; extra == "dev"
18
+ Requires-Dist: responses>=0.23; extra == "dev"
19
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
20
+
21
+ # watchdock-errors
22
+
23
+ Python SDK for application-level error tracking on the [Watchdock](https://watchdock.cc) platform.
24
+
25
+ ## Installation
26
+
27
+ ```bash
28
+ pip install watchdock-errors
29
+ ```
30
+
31
+ With framework extras:
32
+
33
+ ```bash
34
+ pip install "watchdock-errors[django]"
35
+ pip install "watchdock-errors[fastapi]"
36
+ ```
37
+
38
+ ## Quickstart
39
+
40
+ ```python
41
+ import watchdock_errors
42
+
43
+ watchdock_errors.init(
44
+ api_key="wdk_xxx",
45
+ environment="production",
46
+ release="1.0.0",
47
+ )
48
+ ```
49
+
50
+ ### Django
51
+
52
+ ```python
53
+ # settings.py
54
+ MIDDLEWARE = [
55
+ ...
56
+ "watchdock_errors.integrations.django.DjangoErrorMiddleware",
57
+ ]
58
+ ```
59
+
60
+ Or via `INSTALLED_APPS` for automatic registration:
61
+
62
+ ```python
63
+ INSTALLED_APPS = [
64
+ ...
65
+ "watchdock_errors.integrations.django",
66
+ ]
67
+ ```
68
+
69
+ ### FastAPI
70
+
71
+ ```python
72
+ from watchdock_errors.integrations.fastapi import setup_watchdock
73
+
74
+ setup_watchdock(app)
75
+ ```
76
+
77
+ ## Manual capture
78
+
79
+ ```python
80
+ # Capture the current exception
81
+ try:
82
+ process_payment()
83
+ except Exception:
84
+ watchdock_errors.capture_exception()
85
+
86
+ # Capture a specific exception
87
+ watchdock_errors.capture_exception(exc)
88
+
89
+ # Capture a message
90
+ watchdock_errors.capture_message("Stripe webhook signature invalid")
91
+ ```
92
+
93
+ ## PII scrubbing
94
+
95
+ By default, `Authorization`, `Cookie`, and `X-Api-Key` headers are stripped and the request body is not sent. Set `send_pii=True` to disable scrubbing.
96
+
97
+ Use the `before_send` hook for custom scrubbing:
98
+
99
+ ```python
100
+ def scrub(event):
101
+ event["request"]["headers"].pop("X-Internal-Token", None)
102
+ return event # return None to drop the event entirely
103
+
104
+ watchdock_errors.init(api_key="wdk_xxx", before_send=scrub)
105
+ ```
@@ -1,85 +1,85 @@
1
- # watchdock-errors
2
-
3
- Python SDK for application-level error tracking on the [Watchdock](https://watchdock.cc) platform.
4
-
5
- ## Installation
6
-
7
- ```bash
8
- pip install watchdock-errors
9
- ```
10
-
11
- With framework extras:
12
-
13
- ```bash
14
- pip install "watchdock-errors[django]"
15
- pip install "watchdock-errors[fastapi]"
16
- ```
17
-
18
- ## Quickstart
19
-
20
- ```python
21
- import watchdock_errors
22
-
23
- watchdock_errors.init(
24
- api_key="wdk_xxx",
25
- environment="production",
26
- release="1.0.0",
27
- )
28
- ```
29
-
30
- ### Django
31
-
32
- ```python
33
- # settings.py
34
- MIDDLEWARE = [
35
- ...
36
- "watchdock_errors.integrations.django.DjangoErrorMiddleware",
37
- ]
38
- ```
39
-
40
- Or via `INSTALLED_APPS` for automatic registration:
41
-
42
- ```python
43
- INSTALLED_APPS = [
44
- ...
45
- "watchdock_errors.integrations.django",
46
- ]
47
- ```
48
-
49
- ### FastAPI
50
-
51
- ```python
52
- from watchdock_errors.integrations.fastapi import setup_watchdock
53
-
54
- setup_watchdock(app)
55
- ```
56
-
57
- ## Manual capture
58
-
59
- ```python
60
- # Capture the current exception
61
- try:
62
- process_payment()
63
- except Exception:
64
- watchdock_errors.capture_exception()
65
-
66
- # Capture a specific exception
67
- watchdock_errors.capture_exception(exc)
68
-
69
- # Capture a message
70
- watchdock_errors.capture_message("Stripe webhook signature invalid")
71
- ```
72
-
73
- ## PII scrubbing
74
-
75
- By default, `Authorization`, `Cookie`, and `X-Api-Key` headers are stripped and the request body is not sent. Set `send_pii=True` to disable scrubbing.
76
-
77
- Use the `before_send` hook for custom scrubbing:
78
-
79
- ```python
80
- def scrub(event):
81
- event["request"]["headers"].pop("X-Internal-Token", None)
82
- return event # return None to drop the event entirely
83
-
84
- watchdock_errors.init(api_key="wdk_xxx", before_send=scrub)
85
- ```
1
+ # watchdock-errors
2
+
3
+ Python SDK for application-level error tracking on the [Watchdock](https://watchdock.cc) platform.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install watchdock-errors
9
+ ```
10
+
11
+ With framework extras:
12
+
13
+ ```bash
14
+ pip install "watchdock-errors[django]"
15
+ pip install "watchdock-errors[fastapi]"
16
+ ```
17
+
18
+ ## Quickstart
19
+
20
+ ```python
21
+ import watchdock_errors
22
+
23
+ watchdock_errors.init(
24
+ api_key="wdk_xxx",
25
+ environment="production",
26
+ release="1.0.0",
27
+ )
28
+ ```
29
+
30
+ ### Django
31
+
32
+ ```python
33
+ # settings.py
34
+ MIDDLEWARE = [
35
+ ...
36
+ "watchdock_errors.integrations.django.DjangoErrorMiddleware",
37
+ ]
38
+ ```
39
+
40
+ Or via `INSTALLED_APPS` for automatic registration:
41
+
42
+ ```python
43
+ INSTALLED_APPS = [
44
+ ...
45
+ "watchdock_errors.integrations.django",
46
+ ]
47
+ ```
48
+
49
+ ### FastAPI
50
+
51
+ ```python
52
+ from watchdock_errors.integrations.fastapi import setup_watchdock
53
+
54
+ setup_watchdock(app)
55
+ ```
56
+
57
+ ## Manual capture
58
+
59
+ ```python
60
+ # Capture the current exception
61
+ try:
62
+ process_payment()
63
+ except Exception:
64
+ watchdock_errors.capture_exception()
65
+
66
+ # Capture a specific exception
67
+ watchdock_errors.capture_exception(exc)
68
+
69
+ # Capture a message
70
+ watchdock_errors.capture_message("Stripe webhook signature invalid")
71
+ ```
72
+
73
+ ## PII scrubbing
74
+
75
+ By default, `Authorization`, `Cookie`, and `X-Api-Key` headers are stripped and the request body is not sent. Set `send_pii=True` to disable scrubbing.
76
+
77
+ Use the `before_send` hook for custom scrubbing:
78
+
79
+ ```python
80
+ def scrub(event):
81
+ event["request"]["headers"].pop("X-Internal-Token", None)
82
+ return event # return None to drop the event entirely
83
+
84
+ watchdock_errors.init(api_key="wdk_xxx", before_send=scrub)
85
+ ```
@@ -1,40 +1,43 @@
1
- [build-system]
2
- requires = ["setuptools>=68", "wheel"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "watchdock-errors"
7
- version = "0.1.2"
8
- description = "Application error tracking SDK for the Watchdock platform"
9
- readme = "README.md"
10
- requires-python = ">=3.10"
11
- license = { text = "MIT" }
12
- keywords = ["error-tracking", "observability", "watchdock"]
13
- dependencies = ["requests>=2.28"]
14
-
15
- [project.optional-dependencies]
16
- django = ["django>=3.2"]
17
- fastapi = ["fastapi>=0.95", "starlette>=0.27"]
18
- dev = [
19
- "pytest>=7.0",
20
- "pytest-mock>=3.0",
21
- "responses>=0.23",
22
- ]
23
-
24
- [tool.setuptools.packages.find]
25
- where = ["src"]
26
-
27
- [tool.ruff]
28
- line-length = 120
29
- target-version = "py310"
30
-
31
- [tool.ruff.lint]
32
- select = ["E", "W", "F", "I", "B", "UP"]
33
- ignore = ["E501", "B008"]
34
-
35
- [tool.ruff.format]
36
- quote-style = "double"
37
- indent-style = "space"
38
-
39
- [tool.pytest.ini_options]
40
- testpaths = ["tests"]
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel", "setuptools-scm[toml]>=8"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "watchdock-errors"
7
+ dynamic = ["version"]
8
+ description = "Application error tracking SDK for the Watchdock platform"
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = { text = "MIT" }
12
+ keywords = ["error-tracking", "observability", "watchdock"]
13
+ dependencies = ["requests>=2.28"]
14
+
15
+ [project.optional-dependencies]
16
+ django = ["django>=3.2"]
17
+ fastapi = ["fastapi>=0.95", "starlette>=0.27"]
18
+ dev = [
19
+ "pytest>=7.0",
20
+ "pytest-mock>=3.0",
21
+ "responses>=0.23",
22
+ "ruff>=0.1.0",
23
+ ]
24
+
25
+ [tool.setuptools.packages.find]
26
+ where = ["src"]
27
+
28
+ [tool.setuptools_scm]
29
+
30
+ [tool.ruff]
31
+ line-length = 120
32
+ target-version = "py310"
33
+
34
+ [tool.ruff.lint]
35
+ select = ["E", "W", "F", "I", "B", "UP"]
36
+ ignore = ["E501", "B008"]
37
+
38
+ [tool.ruff.format]
39
+ quote-style = "double"
40
+ indent-style = "space"
41
+
42
+ [tool.pytest.ini_options]
43
+ testpaths = ["tests"]
@@ -1,4 +1,4 @@
1
- [egg_info]
2
- tag_build =
3
- tag_date = 0
4
-
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+