errbot 6.2.0__tar.gz → 6.2.1__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.
- {errbot-6.2.0 → errbot-6.2.1}/CHANGES.rst +52 -1
- {errbot-6.2.0/errbot.egg-info → errbot-6.2.1}/PKG-INFO +90 -24
- {errbot-6.2.0 → errbot-6.2.1}/README.rst +2 -2
- {errbot-6.2.0 → errbot-6.2.1}/errbot/__init__.py +7 -8
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backend_plugin_manager.py +1 -1
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/base.py +3 -3
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/irc.py +6 -6
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/telegram_messenger.py +1 -1
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/test.py +18 -7
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/xmpp.py +2 -3
- {errbot-6.2.0 → errbot-6.2.1}/errbot/botplugin.py +3 -2
- {errbot-6.2.0 → errbot-6.2.1}/errbot/cli.py +3 -5
- {errbot-6.2.0 → errbot-6.2.1}/errbot/config-template.py +1 -1
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core.py +49 -25
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/chatRoom.py +1 -1
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/flows.py +3 -3
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/help.py +11 -13
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/plugins.py +2 -2
- {errbot-6.2.0 → errbot-6.2.1}/errbot/plugin_manager.py +32 -13
- {errbot-6.2.0 → errbot-6.2.1}/errbot/rendering/xhtmlim.py +1 -1
- {errbot-6.2.0 → errbot-6.2.1}/errbot/repo_manager.py +24 -33
- {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/__init__.py +1 -2
- {errbot-6.2.0 → errbot-6.2.1}/errbot/templating.py +31 -11
- {errbot-6.2.0 → errbot-6.2.1}/errbot/utils.py +11 -6
- {errbot-6.2.0 → errbot-6.2.1}/errbot/version.py +1 -1
- {errbot-6.2.0 → errbot-6.2.1/errbot.egg-info}/PKG-INFO +90 -24
- {errbot-6.2.0 → errbot-6.2.1}/errbot.egg-info/SOURCES.txt +72 -0
- errbot-6.2.1/errbot.egg-info/requires.txt +39 -0
- {errbot-6.2.0 → errbot-6.2.1}/setup.py +26 -25
- errbot-6.2.0/errbot.egg-info/requires.txt +0 -36
- {errbot-6.2.0 → errbot-6.2.1}/CHANGES-4x.rst +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/CHANGES-5x.rst +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/CHANGES-pre-v4.rst +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/COPYING +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/MANIFEST.in +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/__init__.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/images/errbot-bg.svg +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/images/errbot.svg +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/images/prompt.svg +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/irc.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/null.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/null.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/styles/style-demo.css +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/styles/style.css +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/telegram_messenger.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/test.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/text.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/text.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/xmpp.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/bootstrap.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/__init__.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/acls.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/acls.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/backup.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/backup.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/chatRoom.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/cnf_filter.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/cnf_filter.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/flows.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/health.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/health.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/help.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/plugins.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/about.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/plugin_info.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/repos.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/repos2.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/status.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/status_gc.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/status_load.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/status_plugins.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/webserver.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/webstatus.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/test.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/textcmds.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/textcmds.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/utils.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/utils.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/vcheck.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/vcheck.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/webserver.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/webserver.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/wsview.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/flow.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/logs.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/plugin_info.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/plugin_wizard.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/rendering/__init__.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/rendering/ansiext.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/base.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/memory.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/memory.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/shelf.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/shelf.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/streaming.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/card.md +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/initdir/config.py.tmpl +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/initdir/example.plug +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/initdir/example.py +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/new_plugin.py.tmpl +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot.egg-info/dependency_links.txt +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot.egg-info/entry_points.txt +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/errbot.egg-info/top_level.txt +0 -0
- {errbot-6.2.0 → errbot-6.2.1}/setup.cfg +0 -0
|
@@ -1,3 +1,54 @@
|
|
|
1
|
+
v6.2.1 (2026-06-06)
|
|
2
|
+
-------------------
|
|
3
|
+
|
|
4
|
+
fixes:
|
|
5
|
+
|
|
6
|
+
- docs: add unreleased section (#1681)
|
|
7
|
+
- fix: check only activate plugins listed in CORE_PLUGINS (#1601)
|
|
8
|
+
- chore: bump jinja to 3.1.3 (#1684)
|
|
9
|
+
- chore: bump actions/setup-python version (#1686, #1700, #1708, #1738, #1751)
|
|
10
|
+
- chore: bump actions/checkout version (#1696, #1704, #1737, #1750, #1765)
|
|
11
|
+
- chore: optimize Dockerfile (#1679)
|
|
12
|
+
- docs: fix telegram install command (#1697)
|
|
13
|
+
- chore: add python versions to test (#1705)
|
|
14
|
+
- chore: remove python 3.8 support (#1707)
|
|
15
|
+
- chore: use ruff for formatting (#1706)
|
|
16
|
+
- chore: bump setuptools to 75.7.0 (#1709)
|
|
17
|
+
- chore: bump pyOpenSSL to 24.3.0 (#1710)
|
|
18
|
+
- chore: bump jinja2 to 3.1.5 and requests to 2.32.0 (#1714)
|
|
19
|
+
- Fix: situationally broken apropos command (#1711)
|
|
20
|
+
- chore: bump requests to 2.32.3 (#1715)
|
|
21
|
+
- Fix: Newlines replaced with spaces in botcmd args (#1716)
|
|
22
|
+
- chore: bump jinja2 to 3.1.6 (#1723)
|
|
23
|
+
- chore: update errbot-backend-slackv3 version to 0.3.1 (#1725)
|
|
24
|
+
- fix: Close and join thread pools between tests (#1724)
|
|
25
|
+
- fix: type hints (#1698)
|
|
26
|
+
- fix: update plugin config message (#1727)
|
|
27
|
+
- docs: add example on how to use threaded replies (#1728)
|
|
28
|
+
- fix: add extra_plugin_dir support to FullStackTest (#1726)
|
|
29
|
+
- fix: add missing py 3.13 in tox (#1731)
|
|
30
|
+
- fix: add filter to tar extract (#1730)
|
|
31
|
+
- refactor: use importlib to find plugins in entry_points (#1669, #1733)
|
|
32
|
+
- chore: bump setuptools to >=78.1.1 (#1734)
|
|
33
|
+
- docs: update tox chat server URLs (#1739)
|
|
34
|
+
- chore: update Dockerfile python version (#1744)
|
|
35
|
+
- chore: update errbot-backend-slackv3 version to 0.3.2 (#1743)
|
|
36
|
+
- fix: allow webtest to work on python 3.13 (#1729)
|
|
37
|
+
- fix: add command in logged when blocked by cmdfilter (#1631)
|
|
38
|
+
- chore: bump pyasn1 version (#1752)
|
|
39
|
+
- chore: remove python 3.9 support (#1755)
|
|
40
|
+
- chore: bump all dependencies (#1754)
|
|
41
|
+
- feat: Add LXC image build (#1756)
|
|
42
|
+
- chore: bump docker/setup-buildx-action version (#1758)
|
|
43
|
+
- chore: bump docker/build-push-action version (#1759)
|
|
44
|
+
- chore: bump docker/login-action version (#1760)
|
|
45
|
+
- chore: bump docker/setup-qemu-action version (#1761)
|
|
46
|
+
- docs: add command parameter section and minor doc edits (#1740)
|
|
47
|
+
- chore: bump actions/upload-artifact version (#1762)
|
|
48
|
+
- docs: add positional argument with default example (#1763)
|
|
49
|
+
- feat: unique template names (#1764)
|
|
50
|
+
|
|
51
|
+
|
|
1
52
|
v6.2.0 (2024-01-01)
|
|
2
53
|
-------------------
|
|
3
54
|
|
|
@@ -38,7 +89,7 @@ fixes:
|
|
|
38
89
|
- docs: fix example code in the testing section (#1643)
|
|
39
90
|
- chore: update all core dependencies (#1651)
|
|
40
91
|
- fix: use template file for webserver plugin echo output (#1654)
|
|
41
|
-
- chore: update repos.json (#1660)
|
|
92
|
+
- chore: update repos.json (#1660, #1741)
|
|
42
93
|
- docs: add readthedocs yaml config (#1661)
|
|
43
94
|
- fix: broken integration tests (#1668)
|
|
44
95
|
- style: replace format() with f-strings (#1667)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: errbot
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.1
|
|
4
4
|
Summary: Errbot is a chatbot designed to be simple to extend with plugins written in Python.
|
|
5
5
|
Home-page: http://errbot.io/
|
|
6
6
|
Author: errbot.io
|
|
@@ -14,39 +14,54 @@ Classifier: Topic :: Communications :: Chat :: Internet Relay Chat
|
|
|
14
14
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
15
|
Classifier: Operating System :: OS Independent
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
19
17
|
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
21
|
Description-Content-Type: text/x-rst
|
|
21
22
|
License-File: COPYING
|
|
22
|
-
Requires-Dist: webtest==3.0.
|
|
23
|
-
Requires-Dist: setuptools
|
|
24
|
-
Requires-Dist: flask==
|
|
25
|
-
Requires-Dist: requests==2.
|
|
26
|
-
Requires-Dist: jinja2==3.1.
|
|
27
|
-
Requires-Dist: pyOpenSSL==
|
|
28
|
-
Requires-Dist: colorlog==6.
|
|
29
|
-
Requires-Dist: markdown==3.
|
|
30
|
-
Requires-Dist: ansi==0.3.
|
|
31
|
-
Requires-Dist: Pygments==2.
|
|
23
|
+
Requires-Dist: webtest==3.0.7
|
|
24
|
+
Requires-Dist: setuptools>=78.1.1
|
|
25
|
+
Requires-Dist: flask==3.1.3
|
|
26
|
+
Requires-Dist: requests==2.32.5
|
|
27
|
+
Requires-Dist: jinja2==3.1.6
|
|
28
|
+
Requires-Dist: pyOpenSSL==26.1.0
|
|
29
|
+
Requires-Dist: colorlog==6.10.1
|
|
30
|
+
Requires-Dist: markdown==3.10.2
|
|
31
|
+
Requires-Dist: ansi==0.3.7
|
|
32
|
+
Requires-Dist: Pygments==2.20.0
|
|
32
33
|
Requires-Dist: pygments-markdown-lexer==0.1.0.dev39
|
|
33
|
-
Requires-Dist: dulwich==
|
|
34
|
-
Requires-Dist: deepmerge==
|
|
34
|
+
Requires-Dist: dulwich==1.2.1
|
|
35
|
+
Requires-Dist: deepmerge==2.0
|
|
36
|
+
Requires-Dist: legacy-cgi==2.6.4; python_version >= "3.13"
|
|
35
37
|
Provides-Extra: slack
|
|
36
|
-
Requires-Dist: errbot-backend-slackv3==0.2
|
|
38
|
+
Requires-Dist: errbot-backend-slackv3==0.3.2; extra == "slack"
|
|
37
39
|
Provides-Extra: discord
|
|
38
40
|
Requires-Dist: err-backend-discord==3.0.1; extra == "discord"
|
|
39
41
|
Provides-Extra: mattermost
|
|
40
42
|
Requires-Dist: err-backend-mattermost==3.0.0; extra == "mattermost"
|
|
41
43
|
Provides-Extra: irc
|
|
42
|
-
Requires-Dist: irc==20.
|
|
44
|
+
Requires-Dist: irc==20.5.0; extra == "irc"
|
|
43
45
|
Provides-Extra: telegram
|
|
44
46
|
Requires-Dist: python-telegram-bot==13.15; extra == "telegram"
|
|
45
47
|
Provides-Extra: xmpp
|
|
46
|
-
Requires-Dist: slixmpp==1.
|
|
47
|
-
Requires-Dist: pyasn1==0.
|
|
48
|
-
Requires-Dist: pyasn1-modules==0.
|
|
48
|
+
Requires-Dist: slixmpp==1.15.0; extra == "xmpp"
|
|
49
|
+
Requires-Dist: pyasn1==0.6.3; extra == "xmpp"
|
|
50
|
+
Requires-Dist: pyasn1-modules==0.4.2; extra == "xmpp"
|
|
49
51
|
Requires-Dist: daemonize==2.5.0; sys_platform != "win32"
|
|
52
|
+
Dynamic: author
|
|
53
|
+
Dynamic: author-email
|
|
54
|
+
Dynamic: classifier
|
|
55
|
+
Dynamic: description
|
|
56
|
+
Dynamic: description-content-type
|
|
57
|
+
Dynamic: home-page
|
|
58
|
+
Dynamic: keywords
|
|
59
|
+
Dynamic: license
|
|
60
|
+
Dynamic: license-file
|
|
61
|
+
Dynamic: platform
|
|
62
|
+
Dynamic: provides-extra
|
|
63
|
+
Dynamic: requires-dist
|
|
64
|
+
Dynamic: summary
|
|
50
65
|
|
|
51
66
|
.. image:: https://errbot.readthedocs.org/en/latest/_static/errbot.png
|
|
52
67
|
:target: http://errbot.io
|
|
@@ -105,7 +120,7 @@ Chat servers support
|
|
|
105
120
|
- `Mattermost <https://about.mattermost.com/>`_ (See `instructions <https://github.com/Vaelor/errbot-mattermost-backend>`__)
|
|
106
121
|
- `RocketChat <https://rocket.chat/>`_ (See `instructions <https://github.com/cardoso/errbot-rocketchat>`__)
|
|
107
122
|
- `Skype <https://www.skype.com/>`_ (See `instructions <https://github.com/errbotio/errbot-backend-skype>`__)
|
|
108
|
-
- `TOX <https://tox.
|
|
123
|
+
- `TOX <https://tox.chat/>`_ (See `instructions <https://github.com/errbotio/err-backend-tox>`__)
|
|
109
124
|
- `VK <https://vk.com/>`_ (See `instructions <https://github.com/Ax3Effect/errbot-vk>`__)
|
|
110
125
|
- `Zulip <https://zulipchat.com/>`_ (See `instructions <https://github.com/zulip/errbot-backend-zulip>`__)
|
|
111
126
|
|
|
@@ -156,7 +171,7 @@ Installation
|
|
|
156
171
|
Prerequisites
|
|
157
172
|
~~~~~~~~~~~~~
|
|
158
173
|
|
|
159
|
-
Errbot runs under Python 3.
|
|
174
|
+
Errbot runs under Python 3.10+ on Linux, Windows and Mac. For some chatting systems you'll need a key or a login for your bot to access it.
|
|
160
175
|
|
|
161
176
|
Quickstart
|
|
162
177
|
~~~~~~~~~~
|
|
@@ -277,6 +292,57 @@ Contribution to Errbot itself
|
|
|
277
292
|
Feel free to fork and propose changes on `github <https://www.github.com/errbotio/errbot>`_
|
|
278
293
|
|
|
279
294
|
|
|
295
|
+
v6.2.1 (2026-06-06)
|
|
296
|
+
-------------------
|
|
297
|
+
|
|
298
|
+
fixes:
|
|
299
|
+
|
|
300
|
+
- docs: add unreleased section (#1681)
|
|
301
|
+
- fix: check only activate plugins listed in CORE_PLUGINS (#1601)
|
|
302
|
+
- chore: bump jinja to 3.1.3 (#1684)
|
|
303
|
+
- chore: bump actions/setup-python version (#1686, #1700, #1708, #1738, #1751)
|
|
304
|
+
- chore: bump actions/checkout version (#1696, #1704, #1737, #1750, #1765)
|
|
305
|
+
- chore: optimize Dockerfile (#1679)
|
|
306
|
+
- docs: fix telegram install command (#1697)
|
|
307
|
+
- chore: add python versions to test (#1705)
|
|
308
|
+
- chore: remove python 3.8 support (#1707)
|
|
309
|
+
- chore: use ruff for formatting (#1706)
|
|
310
|
+
- chore: bump setuptools to 75.7.0 (#1709)
|
|
311
|
+
- chore: bump pyOpenSSL to 24.3.0 (#1710)
|
|
312
|
+
- chore: bump jinja2 to 3.1.5 and requests to 2.32.0 (#1714)
|
|
313
|
+
- Fix: situationally broken apropos command (#1711)
|
|
314
|
+
- chore: bump requests to 2.32.3 (#1715)
|
|
315
|
+
- Fix: Newlines replaced with spaces in botcmd args (#1716)
|
|
316
|
+
- chore: bump jinja2 to 3.1.6 (#1723)
|
|
317
|
+
- chore: update errbot-backend-slackv3 version to 0.3.1 (#1725)
|
|
318
|
+
- fix: Close and join thread pools between tests (#1724)
|
|
319
|
+
- fix: type hints (#1698)
|
|
320
|
+
- fix: update plugin config message (#1727)
|
|
321
|
+
- docs: add example on how to use threaded replies (#1728)
|
|
322
|
+
- fix: add extra_plugin_dir support to FullStackTest (#1726)
|
|
323
|
+
- fix: add missing py 3.13 in tox (#1731)
|
|
324
|
+
- fix: add filter to tar extract (#1730)
|
|
325
|
+
- refactor: use importlib to find plugins in entry_points (#1669, #1733)
|
|
326
|
+
- chore: bump setuptools to >=78.1.1 (#1734)
|
|
327
|
+
- docs: update tox chat server URLs (#1739)
|
|
328
|
+
- chore: update Dockerfile python version (#1744)
|
|
329
|
+
- chore: update errbot-backend-slackv3 version to 0.3.2 (#1743)
|
|
330
|
+
- fix: allow webtest to work on python 3.13 (#1729)
|
|
331
|
+
- fix: add command in logged when blocked by cmdfilter (#1631)
|
|
332
|
+
- chore: bump pyasn1 version (#1752)
|
|
333
|
+
- chore: remove python 3.9 support (#1755)
|
|
334
|
+
- chore: bump all dependencies (#1754)
|
|
335
|
+
- feat: Add LXC image build (#1756)
|
|
336
|
+
- chore: bump docker/setup-buildx-action version (#1758)
|
|
337
|
+
- chore: bump docker/build-push-action version (#1759)
|
|
338
|
+
- chore: bump docker/login-action version (#1760)
|
|
339
|
+
- chore: bump docker/setup-qemu-action version (#1761)
|
|
340
|
+
- docs: add command parameter section and minor doc edits (#1740)
|
|
341
|
+
- chore: bump actions/upload-artifact version (#1762)
|
|
342
|
+
- docs: add positional argument with default example (#1763)
|
|
343
|
+
- feat: unique template names (#1764)
|
|
344
|
+
|
|
345
|
+
|
|
280
346
|
v6.2.0 (2024-01-01)
|
|
281
347
|
-------------------
|
|
282
348
|
|
|
@@ -317,7 +383,7 @@ fixes:
|
|
|
317
383
|
- docs: fix example code in the testing section (#1643)
|
|
318
384
|
- chore: update all core dependencies (#1651)
|
|
319
385
|
- fix: use template file for webserver plugin echo output (#1654)
|
|
320
|
-
- chore: update repos.json (#1660)
|
|
386
|
+
- chore: update repos.json (#1660, #1741)
|
|
321
387
|
- docs: add readthedocs yaml config (#1661)
|
|
322
388
|
- fix: broken integration tests (#1668)
|
|
323
389
|
- style: replace format() with f-strings (#1667)
|
|
@@ -55,7 +55,7 @@ Chat servers support
|
|
|
55
55
|
- `Mattermost <https://about.mattermost.com/>`_ (See `instructions <https://github.com/Vaelor/errbot-mattermost-backend>`__)
|
|
56
56
|
- `RocketChat <https://rocket.chat/>`_ (See `instructions <https://github.com/cardoso/errbot-rocketchat>`__)
|
|
57
57
|
- `Skype <https://www.skype.com/>`_ (See `instructions <https://github.com/errbotio/errbot-backend-skype>`__)
|
|
58
|
-
- `TOX <https://tox.
|
|
58
|
+
- `TOX <https://tox.chat/>`_ (See `instructions <https://github.com/errbotio/err-backend-tox>`__)
|
|
59
59
|
- `VK <https://vk.com/>`_ (See `instructions <https://github.com/Ax3Effect/errbot-vk>`__)
|
|
60
60
|
- `Zulip <https://zulipchat.com/>`_ (See `instructions <https://github.com/zulip/errbot-backend-zulip>`__)
|
|
61
61
|
|
|
@@ -106,7 +106,7 @@ Installation
|
|
|
106
106
|
Prerequisites
|
|
107
107
|
~~~~~~~~~~~~~
|
|
108
108
|
|
|
109
|
-
Errbot runs under Python 3.
|
|
109
|
+
Errbot runs under Python 3.10+ on Linux, Windows and Mac. For some chatting systems you'll need a key or a login for your bot to access it.
|
|
110
110
|
|
|
111
111
|
Quickstart
|
|
112
112
|
~~~~~~~~~~
|
|
@@ -3,9 +3,8 @@ import inspect
|
|
|
3
3
|
import logging
|
|
4
4
|
import re
|
|
5
5
|
import shlex
|
|
6
|
-
import sys
|
|
7
6
|
from functools import wraps
|
|
8
|
-
from typing import Any, Callable,
|
|
7
|
+
from typing import Any, Callable, Optional, Tuple
|
|
9
8
|
|
|
10
9
|
from .backends.base import AWAY, DND, OFFLINE, ONLINE, Message # noqa
|
|
11
10
|
from .botplugin import ( # noqa
|
|
@@ -16,7 +15,7 @@ from .botplugin import ( # noqa
|
|
|
16
15
|
ShlexArgParser,
|
|
17
16
|
ValidationException,
|
|
18
17
|
)
|
|
19
|
-
from .core_plugins.wsview import
|
|
18
|
+
from .core_plugins.wsview import route
|
|
20
19
|
from .flow import FLOW_END, BotFlow, Flow, FlowRoot
|
|
21
20
|
|
|
22
21
|
__all__ = [
|
|
@@ -259,7 +258,7 @@ def botmatch(*args, **kwargs):
|
|
|
259
258
|
"""
|
|
260
259
|
Decorator for regex-based message match.
|
|
261
260
|
|
|
262
|
-
:param
|
|
261
|
+
:param args: The regular expression a message should match against in order to
|
|
263
262
|
trigger the command.
|
|
264
263
|
:param flags: The `flags` parameter which should be passed to :func:`re.compile()`. This
|
|
265
264
|
allows the expression's behaviour to be modified, such as making it case-insensitive
|
|
@@ -521,9 +520,9 @@ def webhook(
|
|
|
521
520
|
if isinstance(args[0], str): # first param is uri_rule.
|
|
522
521
|
return lambda func: _tag_webhook(
|
|
523
522
|
func,
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
523
|
+
(
|
|
524
|
+
args[0] if args[0] == "/" else args[0].rstrip("/")
|
|
525
|
+
), # trailing / is also be stripped on incoming.
|
|
527
526
|
methods=methods,
|
|
528
527
|
form_param=form_param,
|
|
529
528
|
raw=raw,
|
|
@@ -563,7 +562,7 @@ def cmdfilter(*args, **kwargs):
|
|
|
563
562
|
command is authorized or not.
|
|
564
563
|
\"\"\"
|
|
565
564
|
# If wishing to block the incoming command:
|
|
566
|
-
return None,
|
|
565
|
+
return None, cmd, args
|
|
567
566
|
# Otherwise pass data through to the (potential) next filter:
|
|
568
567
|
return msg, cmd, args
|
|
569
568
|
|
|
@@ -15,7 +15,7 @@ class PluginNotFoundException(Exception):
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def enumerate_backend_plugins(
|
|
18
|
-
all_plugins_paths: List[Union[str, Path]]
|
|
18
|
+
all_plugins_paths: List[Union[str, Path]],
|
|
19
19
|
) -> Iterator[PluginInfo]:
|
|
20
20
|
plugin_places = [Path(root) for root in all_plugins_paths]
|
|
21
21
|
for path in plugin_places:
|
|
@@ -4,7 +4,7 @@ import random
|
|
|
4
4
|
import time
|
|
5
5
|
from abc import ABC, abstractmethod
|
|
6
6
|
from collections import defaultdict, deque
|
|
7
|
-
from typing import Any, BinaryIO, List, Mapping, Optional, Sequence, Tuple
|
|
7
|
+
from typing import Any, BinaryIO, List, Mapping, Optional, Sequence, Tuple, Type
|
|
8
8
|
|
|
9
9
|
log = logging.getLogger(__name__)
|
|
10
10
|
|
|
@@ -223,7 +223,7 @@ class Room(Identifier):
|
|
|
223
223
|
"""
|
|
224
224
|
Invite one or more people into the room.
|
|
225
225
|
|
|
226
|
-
:param
|
|
226
|
+
:param args:
|
|
227
227
|
One or more identifiers to invite into the room.
|
|
228
228
|
"""
|
|
229
229
|
raise NotImplementedError(
|
|
@@ -391,7 +391,7 @@ class Message:
|
|
|
391
391
|
return self._extras
|
|
392
392
|
|
|
393
393
|
@property
|
|
394
|
-
def flow(self) -> "errbot.Flow":
|
|
394
|
+
def flow(self) -> Type["errbot.Flow"]: # noqa: F821
|
|
395
395
|
"""
|
|
396
396
|
Get the conversation flow for this message.
|
|
397
397
|
|
|
@@ -49,11 +49,11 @@ IRC_CHRS = CharacterTable(
|
|
|
49
49
|
bg_default=NSC("\x03,"),
|
|
50
50
|
fx_reset=NSC("\x03"),
|
|
51
51
|
fx_bold=NSC("\x02"),
|
|
52
|
-
fx_italic=NSC("\
|
|
53
|
-
fx_underline=NSC("\
|
|
54
|
-
fx_not_italic=NSC("\
|
|
55
|
-
fx_not_underline=NSC("\
|
|
56
|
-
fx_normal=NSC("\
|
|
52
|
+
fx_italic=NSC("\x1d"),
|
|
53
|
+
fx_underline=NSC("\x1f"),
|
|
54
|
+
fx_not_italic=NSC("\x0f"),
|
|
55
|
+
fx_not_underline=NSC("\x0f"),
|
|
56
|
+
fx_normal=NSC("\x0f"),
|
|
57
57
|
fixed_width="",
|
|
58
58
|
end_fixed_width="",
|
|
59
59
|
inline_code="",
|
|
@@ -315,7 +315,7 @@ class IRCRoom(Room):
|
|
|
315
315
|
"""
|
|
316
316
|
Invite one or more people into the room.
|
|
317
317
|
|
|
318
|
-
:param
|
|
318
|
+
:param args:
|
|
319
319
|
One or more nicks to invite into the room.
|
|
320
320
|
"""
|
|
321
321
|
for nick in args:
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import importlib
|
|
2
2
|
import logging
|
|
3
|
+
import pathlib
|
|
3
4
|
import sys
|
|
4
5
|
import textwrap
|
|
5
6
|
import unittest
|
|
6
|
-
from os.path import
|
|
7
|
+
from os.path import sep
|
|
7
8
|
from queue import Empty, Queue
|
|
8
9
|
from tempfile import mkdtemp
|
|
9
10
|
from threading import Thread
|
|
@@ -521,6 +522,10 @@ class TestBot:
|
|
|
521
522
|
log.info("Main bot thread quits")
|
|
522
523
|
self.bot.zap_queues()
|
|
523
524
|
self.bot.reset_rooms()
|
|
525
|
+
self.bot.thread_pool.close()
|
|
526
|
+
self.bot.thread_pool.join()
|
|
527
|
+
self.bot.flow_executor._pool.close()
|
|
528
|
+
self.bot.flow_executor._pool.join()
|
|
524
529
|
self.bot_thread = None
|
|
525
530
|
|
|
526
531
|
def pop_message(self, timeout: int = 5, block: bool = True):
|
|
@@ -600,25 +605,31 @@ class FullStackTest(unittest.TestCase, TestBot):
|
|
|
600
605
|
self.assertIn('Err version', self.pop_message())
|
|
601
606
|
"""
|
|
602
607
|
|
|
608
|
+
def __init__(
|
|
609
|
+
self,
|
|
610
|
+
methodName,
|
|
611
|
+
extra_plugin_dir=None,
|
|
612
|
+
loglevel=logging.DEBUG,
|
|
613
|
+
extra_config=None,
|
|
614
|
+
):
|
|
615
|
+
self.bot_thread = None
|
|
616
|
+
super().__init__(methodName)
|
|
617
|
+
|
|
603
618
|
def setUp(
|
|
604
619
|
self,
|
|
605
620
|
extra_plugin_dir=None,
|
|
606
|
-
extra_test_file=None,
|
|
607
621
|
loglevel=logging.DEBUG,
|
|
608
622
|
extra_config=None,
|
|
609
623
|
) -> None:
|
|
610
624
|
"""
|
|
611
625
|
:param extra_plugin_dir: Path to a directory from which additional
|
|
612
626
|
plugins should be loaded.
|
|
613
|
-
:param extra_test_file: [Deprecated but kept for backward-compatibility,
|
|
614
|
-
use extra_plugin_dir instead]
|
|
615
|
-
Path to an additional plugin which should be loaded.
|
|
616
627
|
:param loglevel: Logging verbosity. Expects one of the constants
|
|
617
628
|
defined by the logging module.
|
|
618
629
|
:param extra_config: Piece of extra bot config in a dict.
|
|
619
630
|
"""
|
|
620
|
-
if extra_plugin_dir is None
|
|
621
|
-
extra_plugin_dir =
|
|
631
|
+
if extra_plugin_dir is None:
|
|
632
|
+
extra_plugin_dir = str(pathlib.Path(".").resolve().parent.parent.absolute())
|
|
622
633
|
|
|
623
634
|
self.setup(
|
|
624
635
|
extra_plugin_dir=extra_plugin_dir,
|
|
@@ -5,7 +5,7 @@ import sys
|
|
|
5
5
|
from datetime import datetime
|
|
6
6
|
from functools import lru_cache
|
|
7
7
|
from time import sleep
|
|
8
|
-
from typing import Callable, List, Optional, Tuple
|
|
8
|
+
from typing import Callable, List, Optional, Tuple, Union
|
|
9
9
|
|
|
10
10
|
from errbot.backends.base import (
|
|
11
11
|
AWAY,
|
|
@@ -28,7 +28,6 @@ log = logging.getLogger(__name__)
|
|
|
28
28
|
try:
|
|
29
29
|
from slixmpp import JID, ClientXMPP
|
|
30
30
|
from slixmpp.exceptions import IqError
|
|
31
|
-
from slixmpp.xmlstream import cert, resolver
|
|
32
31
|
|
|
33
32
|
except ImportError:
|
|
34
33
|
log.exception("Could not start the XMPP backend")
|
|
@@ -274,7 +273,7 @@ class XMPPRoom(XMPPIdentifier, Room):
|
|
|
274
273
|
"""
|
|
275
274
|
Invite one or more people into the room.
|
|
276
275
|
|
|
277
|
-
|
|
276
|
+
:param args:
|
|
278
277
|
One or more JID's to invite into the room.
|
|
279
278
|
"""
|
|
280
279
|
room = str(self)
|
|
@@ -44,7 +44,7 @@ def recurse_check_structure(sample: Any, to_check: Any) -> None:
|
|
|
44
44
|
recurse_check_structure(sample[0], element)
|
|
45
45
|
return
|
|
46
46
|
|
|
47
|
-
if sample_type == dict:
|
|
47
|
+
if sample_type == dict: # noqa: E721
|
|
48
48
|
for key in sample:
|
|
49
49
|
if key not in to_check:
|
|
50
50
|
raise ValidationException(f"{to_check} doesn't contain the key {key}.")
|
|
@@ -128,7 +128,7 @@ class Command:
|
|
|
128
128
|
self.definition = cmd_type(*((function,) + cmd_args), **cmd_kwargs)
|
|
129
129
|
|
|
130
130
|
def append_args(self, args, kwargs):
|
|
131
|
-
from errbot import
|
|
131
|
+
from errbot import update_wrapper
|
|
132
132
|
|
|
133
133
|
if hasattr(self.definition, "_err_command_parser"):
|
|
134
134
|
update_wrapper(self.definition, args, kwargs)
|
|
@@ -701,6 +701,7 @@ class BotPlugin(BotPluginBase):
|
|
|
701
701
|
template_parameters=template_parameters,
|
|
702
702
|
in_reply_to=in_reply_to,
|
|
703
703
|
groupchat_nick_reply=groupchat_nick_reply,
|
|
704
|
+
plugin_name=self.name,
|
|
704
705
|
)
|
|
705
706
|
|
|
706
707
|
def build_identifier(self, txtrep: str) -> Identifier:
|
|
@@ -19,10 +19,10 @@ import ast
|
|
|
19
19
|
import logging
|
|
20
20
|
import os
|
|
21
21
|
import sys
|
|
22
|
+
from collections.abc import Mapping
|
|
22
23
|
from os import W_OK, access, getcwd, path, sep
|
|
23
24
|
from pathlib import Path
|
|
24
25
|
from platform import system
|
|
25
|
-
from typing import Optional, Union
|
|
26
26
|
|
|
27
27
|
from errbot.bootstrap import CORE_BACKENDS
|
|
28
28
|
from errbot.logs import root_logger
|
|
@@ -65,7 +65,7 @@ def get_config(config_path: str):
|
|
|
65
65
|
log.error(f"I cannot find the config file {config_path}.")
|
|
66
66
|
log.error("You can change this path with the -c parameter see --help")
|
|
67
67
|
log.info(
|
|
68
|
-
f
|
|
68
|
+
f"You can use the template {os.path.realpath(os.path.join(__file__, os.pardir, 'config-template.py'))}"
|
|
69
69
|
f" as a base and copy it to {config_path}."
|
|
70
70
|
)
|
|
71
71
|
log.info("You can then customize it.")
|
|
@@ -82,9 +82,7 @@ def get_config(config_path: str):
|
|
|
82
82
|
exit(-1)
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
def _read_dict() ->
|
|
86
|
-
from collections.abc import Mapping
|
|
87
|
-
|
|
85
|
+
def _read_dict() -> Mapping:
|
|
88
86
|
new_dict = ast.literal_eval(sys.stdin.read())
|
|
89
87
|
if not isinstance(new_dict, Mapping):
|
|
90
88
|
raise ValueError(
|
|
@@ -35,7 +35,7 @@ import logging
|
|
|
35
35
|
# "Gitter" - see https://gitter.im/ (follow instructions from https://github.com/errbotio/err-backend-gitter)
|
|
36
36
|
|
|
37
37
|
# Open protocols:
|
|
38
|
-
# "TOX" - see https://tox.
|
|
38
|
+
# "TOX" - see https://tox.chat/ (follow instructions from https://github.com/errbotio/err-backend-tox)
|
|
39
39
|
# "IRC" - for classic IRC or bridged services like https://gitter.im
|
|
40
40
|
# "XMPP" - the Extensible Messaging and Presence Protocol (https://xmpp.org/)
|
|
41
41
|
# "Telegram" - cloud-based mobile and desktop messaging app with a focus
|