webchanges 3.37.0__tar.gz → 3.39.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.
- {webchanges-3.37.0/webchanges.egg-info → webchanges-3.39.0}/PKG-INFO +36 -28
- {webchanges-3.37.0 → webchanges-3.39.0}/README.rst +26 -21
- {webchanges-3.37.0 → webchanges-3.39.0}/pyproject.toml +13 -6
- {webchanges-3.37.0 → webchanges-3.39.0}/requirements.txt +0 -1
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/__init__.py +2 -2
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/_resources/config.schema.json +238 -54
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/_resources/jobs.schema.json +337 -73
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/_vendored/headers.py +3 -3
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/_vendored/packaging_version.py +39 -18
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/cli.py +162 -84
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/command.py +227 -42
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/config.py +32 -9
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/differs.py +147 -126
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/filters/_base.py +27 -10
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/filters/_document.py +121 -51
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/filters/_encoding.py +2 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/filters/_html.py +97 -35
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/filters/_shell.py +2 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/filters/_text.py +20 -17
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/handler.py +58 -28
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/jobs/__init__.py +2 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/jobs/_base.py +225 -60
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/jobs/_browser.py +74 -30
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/jobs/_exceptions.py +14 -1
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/jobs/_shell.py +46 -6
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/jobs/_url.py +276 -102
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/mailer.py +79 -14
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/main.py +8 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/reporters/__init__.py +13 -3
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/reporters/_base.py +192 -60
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/reporters/_browser.py +2 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/reporters/_chat.py +97 -72
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/reporters/_email.py +5 -2
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/reporters/_stdout.py +41 -17
- webchanges-3.39.0/webchanges/reporters/_system.py +132 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/reporters/_web.py +91 -56
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage/__init__.py +2 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage/_base.py +62 -14
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage/_config.py +78 -44
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage/_minidb.py +3 -1
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage/_redis.py +10 -7
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage/_sqlite3.py +10 -5
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage/_ssdb.py +12 -5
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage/_yaml.py +191 -49
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/util.py +75 -50
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/worker.py +28 -31
- {webchanges-3.37.0 → webchanges-3.39.0/webchanges.egg-info}/PKG-INFO +36 -28
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges.egg-info/requires.txt +15 -5
- webchanges-3.37.0/webchanges/reporters/_system.py +0 -69
- {webchanges-3.37.0 → webchanges-3.39.0}/LICENSE.md +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/MANIFEST.in +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/setup.cfg +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/setup.py +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/tools/get_manpages_parser.py +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/__main__.py +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/_resources/__init__.py +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/_vendored/__init__.py +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/_vendored/typeguard.py +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/filters/__init__.py +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/py.typed +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges/storage_minidb.py +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges.egg-info/SOURCES.txt +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges.egg-info/dependency_links.txt +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges.egg-info/entry_points.txt +0 -0
- {webchanges-3.37.0 → webchanges-3.39.0}/webchanges.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: webchanges
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.39.0
|
|
4
4
|
Summary: Web Changes Delivered. AI-Summarized. Totally Anonymous.
|
|
5
5
|
Author-email: Mike Borsetti <mike+webchanges@borsetti.com>
|
|
6
6
|
Maintainer-email: Mike Borsetti <mike+webchanges@borsetti.com>
|
|
@@ -21,10 +21,10 @@ Classifier: Operating System :: OS Independent
|
|
|
21
21
|
Classifier: Programming Language :: Python
|
|
22
22
|
Classifier: Programming Language :: Python :: 3
|
|
23
23
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
24
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
25
24
|
Classifier: Programming Language :: Python :: 3.12
|
|
26
25
|
Classifier: Programming Language :: Python :: 3.13
|
|
27
26
|
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
28
28
|
Classifier: Programming Language :: Python :: Free Threading
|
|
29
29
|
Classifier: Programming Language :: Python :: Free Threading :: 4 - Resilient
|
|
30
30
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
@@ -34,10 +34,9 @@ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
|
|
|
34
34
|
Classifier: Topic :: System :: Monitoring
|
|
35
35
|
Classifier: Topic :: Utilities
|
|
36
36
|
Classifier: Typing :: Typed
|
|
37
|
-
Requires-Python: >=3.
|
|
37
|
+
Requires-Python: >=3.12
|
|
38
38
|
Description-Content-Type: text/x-rst
|
|
39
39
|
License-File: LICENSE.md
|
|
40
|
-
Requires-Dist: colorama; sys_platform == "win32"
|
|
41
40
|
Requires-Dist: cssselect
|
|
42
41
|
Requires-Dist: h2
|
|
43
42
|
Requires-Dist: html2text
|
|
@@ -64,7 +63,7 @@ Requires-Dist: html5lib; extra == "html5lib"
|
|
|
64
63
|
Provides-Extra: ical2text
|
|
65
64
|
Requires-Dist: vobject; extra == "ical2text"
|
|
66
65
|
Provides-Extra: jq
|
|
67
|
-
Requires-Dist: jq;
|
|
66
|
+
Requires-Dist: jq; extra == "jq"
|
|
68
67
|
Provides-Extra: ocr
|
|
69
68
|
Requires-Dist: pytesseract; extra == "ocr"
|
|
70
69
|
Requires-Dist: Pillow; extra == "ocr"
|
|
@@ -75,10 +74,14 @@ Requires-Dist: pypdf; extra == "pypdf"
|
|
|
75
74
|
Provides-Extra: pypdf-crypto
|
|
76
75
|
Requires-Dist: pypdf; extra == "pypdf-crypto"
|
|
77
76
|
Requires-Dist: cryptography; extra == "pypdf-crypto"
|
|
77
|
+
Provides-Extra: xmltodict
|
|
78
|
+
Requires-Dist: xmltodict; extra == "xmltodict"
|
|
78
79
|
Provides-Extra: deepdiff
|
|
79
|
-
Requires-Dist: deepdiff>=8.0; extra == "deepdiff"
|
|
80
|
+
Requires-Dist: deepdiff>=8.0; python_version < "3.15" and extra == "deepdiff"
|
|
81
|
+
Requires-Dist: deepdiff<9,>=8.0; python_version >= "3.15" and extra == "deepdiff"
|
|
80
82
|
Provides-Extra: deepdiff-xml
|
|
81
|
-
Requires-Dist: deepdiff>=8.0; extra == "deepdiff-xml"
|
|
83
|
+
Requires-Dist: deepdiff>=8.0; python_version < "3.15" and extra == "deepdiff-xml"
|
|
84
|
+
Requires-Dist: deepdiff<9,>=8.0; python_version >= "3.15" and extra == "deepdiff-xml"
|
|
82
85
|
Requires-Dist: xmltodict; extra == "deepdiff-xml"
|
|
83
86
|
Provides-Extra: imagediff
|
|
84
87
|
Requires-Dist: Pillow; extra == "imagediff"
|
|
@@ -99,7 +102,7 @@ Requires-Dist: requests; extra == "requests"
|
|
|
99
102
|
Provides-Extra: safe-password
|
|
100
103
|
Requires-Dist: keyring; extra == "safe-password"
|
|
101
104
|
Provides-Extra: all
|
|
102
|
-
Requires-Dist: webchanges[beautify,bs4,curl_cffi,deepdiff_xml,html5lib,ical2text,imagediff,jq,matrix,ocr,pdf2text,pushbullet,pushover,pypdf_crypto,redis,requests,safe_password,use_browser,xmpp]; extra == "all"
|
|
105
|
+
Requires-Dist: webchanges[beautify,bs4,curl_cffi,deepdiff_xml,html5lib,ical2text,imagediff,jq,matrix,ocr,pdf2text,pushbullet,pushover,pypdf_crypto,redis,requests,safe_password,use_browser,xmltodict,xmpp]; extra == "all"
|
|
103
106
|
Dynamic: license-file
|
|
104
107
|
|
|
105
108
|
.. role:: underline
|
|
@@ -120,22 +123,25 @@ notifications and AI-powered summaries to your favorite `platform
|
|
|
120
123
|
|
|
121
124
|
Highlights
|
|
122
125
|
==========
|
|
123
|
-
- **
|
|
124
|
-
<https://webchanges.readthedocs.io/en/stable/
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
- **
|
|
128
|
-
<https://webchanges.readthedocs.io/en/stable/differs.html#
|
|
129
|
-
- **
|
|
130
|
-
<https://webchanges.readthedocs.io/en/stable/
|
|
131
|
-
- **
|
|
126
|
+
- **Watch anything**: web pages (in a `real browser
|
|
127
|
+
<https://webchanges.readthedocs.io/en/stable/jobs.html#use-browser>`__ if needed), APIs, local files and command
|
|
128
|
+
output.
|
|
129
|
+
- **Track only what matters** with over 30 `filters <https://webchanges.readthedocs.io/en/stable/filters.html>`__.
|
|
130
|
+
- **Read changes at a glance** in formatted HTML, side by side, word by word, as `AI summaries
|
|
131
|
+
<https://webchanges.readthedocs.io/en/stable/differs.html#ai-google-diff>`__ and more.
|
|
132
|
+
- **Get notified anywhere**: email, Telegram, Discord, ntfy, webhooks and `more
|
|
133
|
+
<https://webchanges.readthedocs.io/en/stable/reporters.html>`__.
|
|
134
|
+
- **Few false alarms**: transient errors can be held back and repeated ones reported `once
|
|
135
|
+
<https://webchanges.readthedocs.io/en/stable/jobs.html#suppress-repeated-errors>`__.
|
|
136
|
+
- **Runs on your machine**, total privacy, no account needed, and extends with Python `hooks
|
|
137
|
+
<https://webchanges.readthedocs.io/en/stable/hooks.html>`__.
|
|
132
138
|
|
|
133
139
|
|
|
134
140
|
Requirements
|
|
135
141
|
============
|
|
136
142
|
**webchanges** requires |support|. For the best experience, use the current version of `Python
|
|
137
|
-
<https://www.python.org/downloads/>`__; older Python versions are supported for 3 years after they're replaced.
|
|
138
|
-
|
|
143
|
+
<https://www.python.org/downloads/>`__; older Python versions are supported for 3 years after they're replaced.
|
|
144
|
+
Free-threaded Python is supported.
|
|
139
145
|
|
|
140
146
|
For Generative AI summaries (BETA), you need a free `API Key from Google Cloud AI Studio
|
|
141
147
|
<https://aistudio.google.com/app/apikey>`__ (see `here
|
|
@@ -158,6 +164,10 @@ or with ``pip``:
|
|
|
158
164
|
|
|
159
165
|
pip install webchanges
|
|
160
166
|
|
|
167
|
+
On Windows with Python 3.15, first run ``set PYYAML_FORCE_LIBYAML=0`` (in PowerShell:
|
|
168
|
+
``$env:PYYAML_FORCE_LIBYAML = "0"``), as explained `here
|
|
169
|
+
<https://webchanges.readthedocs.io/en/stable/introduction.html#install-windows>`__.
|
|
170
|
+
|
|
161
171
|
Other ways to run
|
|
162
172
|
-----------------
|
|
163
173
|
- In a `Docker <https://www.docker.com/>`__ container: a minimal implementation (no browser) is `here
|
|
@@ -217,7 +227,7 @@ Schedule
|
|
|
217
227
|
|
|
218
228
|
Code
|
|
219
229
|
====
|
|
220
|
-
|coveralls| |issues| |code_style|
|
|
230
|
+
|coveralls| |issues| |code_style|
|
|
221
231
|
|
|
222
232
|
The code, issues tracker, and discussions are hosted on `GitHub <https://github.com/mborsetti/webchanges>`__.
|
|
223
233
|
|
|
@@ -236,10 +246,11 @@ License
|
|
|
236
246
|
=======
|
|
237
247
|
|license|
|
|
238
248
|
|
|
239
|
-
See the `complete licenses
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
licensed under a
|
|
249
|
+
See the `complete licenses
|
|
250
|
+
<https://raw.githubusercontent.com/mborsetti/webchanges/refs/heads/main/LICENSE.md>`__ (released under the `MIT
|
|
251
|
+
License <https://opensource.org/licenses/MIT>`__ but redistributing modified source code, dated 30 July 2020, from
|
|
252
|
+
`urlwatch 2.21 <https://github.com/thp/urlwatch/tree/346b25914b0418342ffe2fb0529bed702fddc01f>`__ licensed under a
|
|
253
|
+
`BSD 3-Clause License
|
|
243
254
|
<https://raw.githubusercontent.com/thp/urlwatch/346b25914b0418342ffe2fb0529bed702fddc01f/COPYING>`__).
|
|
244
255
|
|
|
245
256
|
|
|
@@ -247,7 +258,7 @@ Relationship with **urlwatch**
|
|
|
247
258
|
==============================
|
|
248
259
|
This project is a fork of `urlwatch 2.21
|
|
249
260
|
<https://github.com/thp/urlwatch/tree/346b25914b0418342ffe2fb0529bed702fddc01f>`__ and has since added many features;
|
|
250
|
-
see the `comparison <https://webchanges.readthedocs.io/en/stable/
|
|
261
|
+
see the `comparison <https://webchanges.readthedocs.io/en/stable/upgrading.html>`__.
|
|
251
262
|
|
|
252
263
|
|
|
253
264
|
.. |support| image:: https://img.shields.io/pypi/pyversions/webchanges.svg
|
|
@@ -295,6 +306,3 @@ see the `comparison <https://webchanges.readthedocs.io/en/stable/_static/webchan
|
|
|
295
306
|
.. .. |snyk| image:: https://snyk.io/advisor/python/webchanges/badge.svg
|
|
296
307
|
.. :target: https://security.snyk.io/package/pip/webchanges
|
|
297
308
|
.. :alt: Snyk Package Health Score
|
|
298
|
-
.. |OpenSSF_Scorecard| image:: https://api.scorecard.dev/projects/github.com/mborsetti/webchanges/badge
|
|
299
|
-
:target: https://scorecard.dev/viewer/?uri=github.com/mborsetti/webchanges
|
|
300
|
-
:alt: OpenSSF Scoreard
|
|
@@ -16,22 +16,25 @@ notifications and AI-powered summaries to your favorite `platform
|
|
|
16
16
|
|
|
17
17
|
Highlights
|
|
18
18
|
==========
|
|
19
|
-
- **
|
|
20
|
-
<https://webchanges.readthedocs.io/en/stable/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
- **
|
|
24
|
-
<https://webchanges.readthedocs.io/en/stable/differs.html#
|
|
25
|
-
- **
|
|
26
|
-
<https://webchanges.readthedocs.io/en/stable/
|
|
27
|
-
- **
|
|
19
|
+
- **Watch anything**: web pages (in a `real browser
|
|
20
|
+
<https://webchanges.readthedocs.io/en/stable/jobs.html#use-browser>`__ if needed), APIs, local files and command
|
|
21
|
+
output.
|
|
22
|
+
- **Track only what matters** with over 30 `filters <https://webchanges.readthedocs.io/en/stable/filters.html>`__.
|
|
23
|
+
- **Read changes at a glance** in formatted HTML, side by side, word by word, as `AI summaries
|
|
24
|
+
<https://webchanges.readthedocs.io/en/stable/differs.html#ai-google-diff>`__ and more.
|
|
25
|
+
- **Get notified anywhere**: email, Telegram, Discord, ntfy, webhooks and `more
|
|
26
|
+
<https://webchanges.readthedocs.io/en/stable/reporters.html>`__.
|
|
27
|
+
- **Few false alarms**: transient errors can be held back and repeated ones reported `once
|
|
28
|
+
<https://webchanges.readthedocs.io/en/stable/jobs.html#suppress-repeated-errors>`__.
|
|
29
|
+
- **Runs on your machine**, total privacy, no account needed, and extends with Python `hooks
|
|
30
|
+
<https://webchanges.readthedocs.io/en/stable/hooks.html>`__.
|
|
28
31
|
|
|
29
32
|
|
|
30
33
|
Requirements
|
|
31
34
|
============
|
|
32
35
|
**webchanges** requires |support|. For the best experience, use the current version of `Python
|
|
33
|
-
<https://www.python.org/downloads/>`__; older Python versions are supported for 3 years after they're replaced.
|
|
34
|
-
|
|
36
|
+
<https://www.python.org/downloads/>`__; older Python versions are supported for 3 years after they're replaced.
|
|
37
|
+
Free-threaded Python is supported.
|
|
35
38
|
|
|
36
39
|
For Generative AI summaries (BETA), you need a free `API Key from Google Cloud AI Studio
|
|
37
40
|
<https://aistudio.google.com/app/apikey>`__ (see `here
|
|
@@ -54,6 +57,10 @@ or with ``pip``:
|
|
|
54
57
|
|
|
55
58
|
pip install webchanges
|
|
56
59
|
|
|
60
|
+
On Windows with Python 3.15, first run ``set PYYAML_FORCE_LIBYAML=0`` (in PowerShell:
|
|
61
|
+
``$env:PYYAML_FORCE_LIBYAML = "0"``), as explained `here
|
|
62
|
+
<https://webchanges.readthedocs.io/en/stable/introduction.html#install-windows>`__.
|
|
63
|
+
|
|
57
64
|
Other ways to run
|
|
58
65
|
-----------------
|
|
59
66
|
- In a `Docker <https://www.docker.com/>`__ container: a minimal implementation (no browser) is `here
|
|
@@ -113,7 +120,7 @@ Schedule
|
|
|
113
120
|
|
|
114
121
|
Code
|
|
115
122
|
====
|
|
116
|
-
|coveralls| |issues| |code_style|
|
|
123
|
+
|coveralls| |issues| |code_style|
|
|
117
124
|
|
|
118
125
|
The code, issues tracker, and discussions are hosted on `GitHub <https://github.com/mborsetti/webchanges>`__.
|
|
119
126
|
|
|
@@ -132,10 +139,11 @@ License
|
|
|
132
139
|
=======
|
|
133
140
|
|license|
|
|
134
141
|
|
|
135
|
-
See the `complete licenses
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
licensed under a
|
|
142
|
+
See the `complete licenses
|
|
143
|
+
<https://raw.githubusercontent.com/mborsetti/webchanges/refs/heads/main/LICENSE.md>`__ (released under the `MIT
|
|
144
|
+
License <https://opensource.org/licenses/MIT>`__ but redistributing modified source code, dated 30 July 2020, from
|
|
145
|
+
`urlwatch 2.21 <https://github.com/thp/urlwatch/tree/346b25914b0418342ffe2fb0529bed702fddc01f>`__ licensed under a
|
|
146
|
+
`BSD 3-Clause License
|
|
139
147
|
<https://raw.githubusercontent.com/thp/urlwatch/346b25914b0418342ffe2fb0529bed702fddc01f/COPYING>`__).
|
|
140
148
|
|
|
141
149
|
|
|
@@ -143,7 +151,7 @@ Relationship with **urlwatch**
|
|
|
143
151
|
==============================
|
|
144
152
|
This project is a fork of `urlwatch 2.21
|
|
145
153
|
<https://github.com/thp/urlwatch/tree/346b25914b0418342ffe2fb0529bed702fddc01f>`__ and has since added many features;
|
|
146
|
-
see the `comparison <https://webchanges.readthedocs.io/en/stable/
|
|
154
|
+
see the `comparison <https://webchanges.readthedocs.io/en/stable/upgrading.html>`__.
|
|
147
155
|
|
|
148
156
|
|
|
149
157
|
.. |support| image:: https://img.shields.io/pypi/pyversions/webchanges.svg
|
|
@@ -190,7 +198,4 @@ see the `comparison <https://webchanges.readthedocs.io/en/stable/_static/webchan
|
|
|
190
198
|
.. :alt: Security Status
|
|
191
199
|
.. .. |snyk| image:: https://snyk.io/advisor/python/webchanges/badge.svg
|
|
192
200
|
.. :target: https://security.snyk.io/package/pip/webchanges
|
|
193
|
-
.. :alt: Snyk Package Health Score
|
|
194
|
-
.. |OpenSSF_Scorecard| image:: https://api.scorecard.dev/projects/github.com/mborsetti/webchanges/badge
|
|
195
|
-
:target: https://scorecard.dev/viewer/?uri=github.com/mborsetti/webchanges
|
|
196
|
-
:alt: OpenSSF Scoreard
|
|
201
|
+
.. :alt: Snyk Package Health Score
|
|
@@ -16,7 +16,7 @@ dynamic = ['version', 'dependencies']
|
|
|
16
16
|
name = 'webchanges'
|
|
17
17
|
description = 'Web Changes Delivered. AI-Summarized. Totally Anonymous.'
|
|
18
18
|
readme = { file = 'README.rst', content-type = 'text/x-rst' }
|
|
19
|
-
requires-python = '>=3.
|
|
19
|
+
requires-python = '>=3.12'
|
|
20
20
|
license = "MIT AND BSD-3-Clause"
|
|
21
21
|
license-files = ['LICENSE.md']
|
|
22
22
|
authors = [{ name = 'Mike Borsetti', email = 'mike+webchanges@borsetti.com' }]
|
|
@@ -35,10 +35,10 @@ classifiers = [
|
|
|
35
35
|
'Programming Language :: Python',
|
|
36
36
|
'Programming Language :: Python :: 3',
|
|
37
37
|
'Programming Language :: Python :: 3 :: Only',
|
|
38
|
-
'Programming Language :: Python :: 3.11',
|
|
39
38
|
'Programming Language :: Python :: 3.12',
|
|
40
39
|
'Programming Language :: Python :: 3.13',
|
|
41
40
|
'Programming Language :: Python :: 3.14',
|
|
41
|
+
'Programming Language :: Python :: 3.15',
|
|
42
42
|
'Programming Language :: Python :: Free Threading',
|
|
43
43
|
'Programming Language :: Python :: Free Threading :: 4 - Resilient',
|
|
44
44
|
'Programming Language :: Python :: Implementation :: CPython',
|
|
@@ -70,15 +70,22 @@ beautify = ['beautifulsoup4', 'jsbeautifier', 'cssbeautifier']
|
|
|
70
70
|
bs4 = ['beautifulsoup4']
|
|
71
71
|
html5lib = ['html5lib']
|
|
72
72
|
ical2text = ['vobject']
|
|
73
|
-
jq = ['jq
|
|
73
|
+
jq = ['jq']
|
|
74
74
|
ocr = ['pytesseract', 'Pillow']
|
|
75
75
|
pdf2text = ['pdftotext']
|
|
76
76
|
pypdf = ['pypdf']
|
|
77
77
|
pypdf_crypto = ['pypdf', 'cryptography']
|
|
78
|
+
xmltodict = ['xmltodict'] # xmltojson and xmltoyaml filters
|
|
78
79
|
# differs
|
|
79
80
|
# deepdiff >= 8.0 is required for threshold_to_diff_deeper
|
|
80
|
-
deepdiff
|
|
81
|
-
|
|
81
|
+
# deepdiff < 9 on Python >= 3.15: deepdiff 9 requires cachebox < 6, and cachebox 5.x has no 3.15 wheels and cannot be
|
|
82
|
+
# built for 3.15 (it uses PyO3 0.27, which supports Python only up to 3.14). Keep in sync with tests/requirements_*.txt
|
|
83
|
+
deepdiff = ['deepdiff >= 8.0; python_version < "3.15"', 'deepdiff >= 8.0, < 9; python_version >= "3.15"']
|
|
84
|
+
deepdiff_xml = [
|
|
85
|
+
'deepdiff >= 8.0; python_version < "3.15"',
|
|
86
|
+
'deepdiff >= 8.0, < 9; python_version >= "3.15"',
|
|
87
|
+
'xmltodict',
|
|
88
|
+
]
|
|
82
89
|
imagediff = ['Pillow']
|
|
83
90
|
# reporters
|
|
84
91
|
matrix = ['matrix_client']
|
|
@@ -92,7 +99,7 @@ requests = ['requests']
|
|
|
92
99
|
safe_password = ['keyring']
|
|
93
100
|
# all
|
|
94
101
|
all = [
|
|
95
|
-
'webchanges[use_browser,beautify,bs4,html5lib,ical2text,jq,ocr,pdf2text,pypdf_crypto,deepdiff_xml,imagediff,matrix,pushbullet,pushover,xmpp,curl_cffi,redis,requests,safe_password]',
|
|
102
|
+
'webchanges[use_browser,beautify,bs4,html5lib,ical2text,jq,ocr,pdf2text,pypdf_crypto,xmltodict,deepdiff_xml,imagediff,matrix,pushbullet,pushover,xmpp,curl_cffi,redis,requests,safe_password]',
|
|
96
103
|
]
|
|
97
104
|
|
|
98
105
|
|
|
@@ -12,7 +12,7 @@ supported services. Can check the output of local commands as well.
|
|
|
12
12
|
|
|
13
13
|
from __future__ import annotations
|
|
14
14
|
|
|
15
|
-
__min_python_version__ = (3,
|
|
15
|
+
__min_python_version__ = (3, 12) # minimum version of Python required to run; 3.12 supported until 7 October 2027
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
__project_name__ = str(__package__)
|
|
@@ -22,7 +22,7 @@ __project_name__ = str(__package__)
|
|
|
22
22
|
# * MINOR version when you add functionality in a backwards compatible manner, and
|
|
23
23
|
# * MICRO or PATCH version when you make backwards compatible bug fixes. We no longer use '0'
|
|
24
24
|
# If unsure on increments, use pkg_resources.parse_version to parse
|
|
25
|
-
__version__ = '3.
|
|
25
|
+
__version__ = '3.39.0'
|
|
26
26
|
__description__ = (
|
|
27
27
|
'Check web (or command output) for changes since last run and notify.\n\nAnonymously alerts you of web changes.'
|
|
28
28
|
)
|