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.
Files changed (104) hide show
  1. {errbot-6.2.0 → errbot-6.2.1}/CHANGES.rst +52 -1
  2. {errbot-6.2.0/errbot.egg-info → errbot-6.2.1}/PKG-INFO +90 -24
  3. {errbot-6.2.0 → errbot-6.2.1}/README.rst +2 -2
  4. {errbot-6.2.0 → errbot-6.2.1}/errbot/__init__.py +7 -8
  5. {errbot-6.2.0 → errbot-6.2.1}/errbot/backend_plugin_manager.py +1 -1
  6. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/base.py +3 -3
  7. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/irc.py +6 -6
  8. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/telegram_messenger.py +1 -1
  9. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/test.py +18 -7
  10. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/xmpp.py +2 -3
  11. {errbot-6.2.0 → errbot-6.2.1}/errbot/botplugin.py +3 -2
  12. {errbot-6.2.0 → errbot-6.2.1}/errbot/cli.py +3 -5
  13. {errbot-6.2.0 → errbot-6.2.1}/errbot/config-template.py +1 -1
  14. {errbot-6.2.0 → errbot-6.2.1}/errbot/core.py +49 -25
  15. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/chatRoom.py +1 -1
  16. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/flows.py +3 -3
  17. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/help.py +11 -13
  18. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/plugins.py +2 -2
  19. {errbot-6.2.0 → errbot-6.2.1}/errbot/plugin_manager.py +32 -13
  20. {errbot-6.2.0 → errbot-6.2.1}/errbot/rendering/xhtmlim.py +1 -1
  21. {errbot-6.2.0 → errbot-6.2.1}/errbot/repo_manager.py +24 -33
  22. {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/__init__.py +1 -2
  23. {errbot-6.2.0 → errbot-6.2.1}/errbot/templating.py +31 -11
  24. {errbot-6.2.0 → errbot-6.2.1}/errbot/utils.py +11 -6
  25. {errbot-6.2.0 → errbot-6.2.1}/errbot/version.py +1 -1
  26. {errbot-6.2.0 → errbot-6.2.1/errbot.egg-info}/PKG-INFO +90 -24
  27. {errbot-6.2.0 → errbot-6.2.1}/errbot.egg-info/SOURCES.txt +72 -0
  28. errbot-6.2.1/errbot.egg-info/requires.txt +39 -0
  29. {errbot-6.2.0 → errbot-6.2.1}/setup.py +26 -25
  30. errbot-6.2.0/errbot.egg-info/requires.txt +0 -36
  31. {errbot-6.2.0 → errbot-6.2.1}/CHANGES-4x.rst +0 -0
  32. {errbot-6.2.0 → errbot-6.2.1}/CHANGES-5x.rst +0 -0
  33. {errbot-6.2.0 → errbot-6.2.1}/CHANGES-pre-v4.rst +0 -0
  34. {errbot-6.2.0 → errbot-6.2.1}/COPYING +0 -0
  35. {errbot-6.2.0 → errbot-6.2.1}/MANIFEST.in +0 -0
  36. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/__init__.py +0 -0
  37. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/images/errbot-bg.svg +0 -0
  38. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/images/errbot.svg +0 -0
  39. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/images/prompt.svg +0 -0
  40. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/irc.plug +0 -0
  41. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/null.plug +0 -0
  42. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/null.py +0 -0
  43. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/styles/style-demo.css +0 -0
  44. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/styles/style.css +0 -0
  45. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/telegram_messenger.plug +0 -0
  46. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/test.plug +0 -0
  47. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/text.plug +0 -0
  48. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/text.py +0 -0
  49. {errbot-6.2.0 → errbot-6.2.1}/errbot/backends/xmpp.plug +0 -0
  50. {errbot-6.2.0 → errbot-6.2.1}/errbot/bootstrap.py +0 -0
  51. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/__init__.py +0 -0
  52. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/acls.plug +0 -0
  53. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/acls.py +0 -0
  54. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/backup.plug +0 -0
  55. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/backup.py +0 -0
  56. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/chatRoom.plug +0 -0
  57. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/cnf_filter.plug +0 -0
  58. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/cnf_filter.py +0 -0
  59. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/flows.plug +0 -0
  60. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/health.plug +0 -0
  61. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/health.py +0 -0
  62. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/help.plug +0 -0
  63. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/plugins.plug +0 -0
  64. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/about.md +0 -0
  65. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/plugin_info.md +0 -0
  66. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/repos.md +0 -0
  67. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/repos2.md +0 -0
  68. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/status.md +0 -0
  69. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/status_gc.md +0 -0
  70. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/status_load.md +0 -0
  71. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/status_plugins.md +0 -0
  72. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/webserver.md +0 -0
  73. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/templates/webstatus.md +0 -0
  74. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/test.md +0 -0
  75. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/textcmds.plug +0 -0
  76. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/textcmds.py +0 -0
  77. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/utils.plug +0 -0
  78. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/utils.py +0 -0
  79. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/vcheck.plug +0 -0
  80. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/vcheck.py +0 -0
  81. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/webserver.plug +0 -0
  82. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/webserver.py +0 -0
  83. {errbot-6.2.0 → errbot-6.2.1}/errbot/core_plugins/wsview.py +0 -0
  84. {errbot-6.2.0 → errbot-6.2.1}/errbot/flow.py +0 -0
  85. {errbot-6.2.0 → errbot-6.2.1}/errbot/logs.py +0 -0
  86. {errbot-6.2.0 → errbot-6.2.1}/errbot/plugin_info.py +0 -0
  87. {errbot-6.2.0 → errbot-6.2.1}/errbot/plugin_wizard.py +0 -0
  88. {errbot-6.2.0 → errbot-6.2.1}/errbot/rendering/__init__.py +0 -0
  89. {errbot-6.2.0 → errbot-6.2.1}/errbot/rendering/ansiext.py +0 -0
  90. {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/base.py +0 -0
  91. {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/memory.plug +0 -0
  92. {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/memory.py +0 -0
  93. {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/shelf.plug +0 -0
  94. {errbot-6.2.0 → errbot-6.2.1}/errbot/storage/shelf.py +0 -0
  95. {errbot-6.2.0 → errbot-6.2.1}/errbot/streaming.py +0 -0
  96. {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/card.md +0 -0
  97. {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/initdir/config.py.tmpl +0 -0
  98. {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/initdir/example.plug +0 -0
  99. {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/initdir/example.py +0 -0
  100. {errbot-6.2.0 → errbot-6.2.1}/errbot/templates/new_plugin.py.tmpl +0 -0
  101. {errbot-6.2.0 → errbot-6.2.1}/errbot.egg-info/dependency_links.txt +0 -0
  102. {errbot-6.2.0 → errbot-6.2.1}/errbot.egg-info/entry_points.txt +0 -0
  103. {errbot-6.2.0 → errbot-6.2.1}/errbot.egg-info/top_level.txt +0 -0
  104. {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
1
+ Metadata-Version: 2.4
2
2
  Name: errbot
3
- Version: 6.2.0
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.0
23
- Requires-Dist: setuptools==68.1.2
24
- Requires-Dist: flask==2.3.3
25
- Requires-Dist: requests==2.31.0
26
- Requires-Dist: jinja2==3.1.2
27
- Requires-Dist: pyOpenSSL==23.2.0
28
- Requires-Dist: colorlog==6.7.0
29
- Requires-Dist: markdown==3.4.4
30
- Requires-Dist: ansi==0.3.6
31
- Requires-Dist: Pygments==2.16.1
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==0.21.5
34
- Requires-Dist: deepmerge==1.1.0
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.1; extra == "slack"
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.3.0; extra == "irc"
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.8.4; extra == "xmpp"
47
- Requires-Dist: pyasn1==0.5.0; extra == "xmpp"
48
- Requires-Dist: pyasn1-modules==0.3.0; extra == "xmpp"
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.im/>`_ (See `instructions <https://github.com/errbotio/err-backend-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.6+ on Linux, Windows and Mac. For some chatting systems you'll need a key or a login for your bot to access it.
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.im/>`_ (See `instructions <https://github.com/errbotio/err-backend-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.6+ on Linux, Windows and Mac. For some chatting systems you'll need a key or a login for your bot to access it.
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, List, Optional, Tuple
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 WebView, route
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 *args: The regular expression a message should match against in order to
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
- args[0]
525
- if args[0] == "/"
526
- else args[0].rstrip("/"), # trailing / is also be stripped on incoming.
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, None, 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 *args:
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("\x1D"),
53
- fx_underline=NSC("\x1F"),
54
- fx_not_italic=NSC("\x0F"),
55
- fx_not_underline=NSC("\x0F"),
56
- fx_normal=NSC("\x0F"),
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 \*args:
318
+ :param args:
319
319
  One or more nicks to invite into the room.
320
320
  """
321
321
  for nick in args:
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  import sys
3
- from typing import Any, BinaryIO, List, Optional, Union
3
+ from typing import Any, BinaryIO, Optional, Union
4
4
 
5
5
  from errbot.backends.base import (
6
6
  ONLINE,
@@ -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 abspath, sep
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 and extra_test_file is not None:
621
- extra_plugin_dir = sep.join(abspath(extra_test_file).split(sep)[:-2])
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
- :*args:
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 arg_botcmd, update_wrapper
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'You can use the template {os.path.realpath(os.path.join(__file__, os.pardir, "config-template.py"))}'
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() -> 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.im/ (follow instructions from https://github.com/errbotio/err-backend-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