errbot 6.1.9__tar.gz → 6.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 (108) hide show
  1. {errbot-6.1.9 → errbot-6.2.0}/CHANGES-4x.rst +1 -1
  2. {errbot-6.1.9 → errbot-6.2.0}/CHANGES-5x.rst +2 -2
  3. {errbot-6.1.9 → errbot-6.2.0}/CHANGES-pre-v4.rst +7 -7
  4. {errbot-6.1.9 → errbot-6.2.0}/CHANGES.rst +50 -1
  5. {errbot-6.1.9/errbot.egg-info → errbot-6.2.0}/PKG-INFO +85 -17
  6. {errbot-6.1.9 → errbot-6.2.0}/README.rst +7 -8
  7. {errbot-6.1.9 → errbot-6.2.0}/errbot/__init__.py +0 -3
  8. {errbot-6.1.9 → errbot-6.2.0}/errbot/backend_plugin_manager.py +3 -2
  9. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/base.py +7 -6
  10. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/irc.py +1 -1
  11. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/telegram_messenger.py +1 -1
  12. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/test.py +8 -6
  13. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/text.py +0 -1
  14. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/xmpp.py +2 -0
  15. {errbot-6.1.9 → errbot-6.2.0}/errbot/bootstrap.py +21 -16
  16. {errbot-6.1.9 → errbot-6.2.0}/errbot/botplugin.py +1 -3
  17. {errbot-6.1.9 → errbot-6.2.0}/errbot/cli.py +8 -4
  18. {errbot-6.1.9 → errbot-6.2.0}/errbot/config-template.py +5 -4
  19. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/chatRoom.py +0 -1
  20. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/cnf_filter.py +1 -1
  21. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/flows.py +2 -1
  22. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/help.py +5 -5
  23. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/plugins.py +1 -2
  24. errbot-6.2.0/errbot/core_plugins/templates/webserver.md +5 -0
  25. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/textcmds.py +0 -2
  26. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/utils.py +0 -1
  27. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/vcheck.py +1 -4
  28. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/webserver.py +7 -8
  29. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/wsview.py +0 -1
  30. {errbot-6.1.9 → errbot-6.2.0}/errbot/flow.py +3 -1
  31. {errbot-6.1.9 → errbot-6.2.0}/errbot/plugin_manager.py +4 -4
  32. {errbot-6.1.9 → errbot-6.2.0}/errbot/repo_manager.py +3 -1
  33. {errbot-6.1.9 → errbot-6.2.0}/errbot/streaming.py +2 -2
  34. {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/initdir/config.py.tmpl +1 -0
  35. {errbot-6.1.9 → errbot-6.2.0}/errbot/utils.py +9 -0
  36. {errbot-6.1.9 → errbot-6.2.0}/errbot/version.py +1 -1
  37. {errbot-6.1.9 → errbot-6.2.0/errbot.egg-info}/PKG-INFO +85 -17
  38. {errbot-6.1.9 → errbot-6.2.0}/errbot.egg-info/SOURCES.txt +2 -4
  39. errbot-6.2.0/errbot.egg-info/requires.txt +36 -0
  40. {errbot-6.1.9 → errbot-6.2.0}/setup.cfg +1 -6
  41. {errbot-6.1.9 → errbot-6.2.0}/setup.py +26 -24
  42. errbot-6.1.9/errbot/backends/slack.plug +0 -6
  43. errbot-6.1.9/errbot/backends/slack.py +0 -1410
  44. errbot-6.1.9/errbot/backends/slack_rtm.plug +0 -6
  45. errbot-6.1.9/errbot/backends/slack_rtm.py +0 -1361
  46. errbot-6.1.9/errbot.egg-info/requires.txt +0 -33
  47. {errbot-6.1.9 → errbot-6.2.0}/COPYING +0 -0
  48. {errbot-6.1.9 → errbot-6.2.0}/MANIFEST.in +0 -0
  49. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/__init__.py +0 -0
  50. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/images/errbot-bg.svg +0 -0
  51. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/images/errbot.svg +0 -0
  52. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/images/prompt.svg +0 -0
  53. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/irc.plug +0 -0
  54. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/null.plug +0 -0
  55. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/null.py +0 -0
  56. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/styles/style-demo.css +0 -0
  57. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/styles/style.css +0 -0
  58. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/telegram_messenger.plug +0 -0
  59. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/test.plug +0 -0
  60. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/text.plug +0 -0
  61. {errbot-6.1.9 → errbot-6.2.0}/errbot/backends/xmpp.plug +0 -0
  62. {errbot-6.1.9 → errbot-6.2.0}/errbot/core.py +0 -0
  63. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/__init__.py +0 -0
  64. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/acls.plug +0 -0
  65. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/acls.py +0 -0
  66. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/backup.plug +0 -0
  67. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/backup.py +0 -0
  68. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/chatRoom.plug +0 -0
  69. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/cnf_filter.plug +0 -0
  70. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/flows.plug +0 -0
  71. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/health.plug +0 -0
  72. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/health.py +0 -0
  73. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/help.plug +0 -0
  74. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/plugins.plug +0 -0
  75. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/about.md +0 -0
  76. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/plugin_info.md +0 -0
  77. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/repos.md +0 -0
  78. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/repos2.md +0 -0
  79. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/status.md +0 -0
  80. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/status_gc.md +0 -0
  81. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/status_load.md +0 -0
  82. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/status_plugins.md +0 -0
  83. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/templates/webstatus.md +0 -0
  84. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/test.md +0 -0
  85. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/textcmds.plug +0 -0
  86. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/utils.plug +0 -0
  87. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/vcheck.plug +0 -0
  88. {errbot-6.1.9 → errbot-6.2.0}/errbot/core_plugins/webserver.plug +0 -0
  89. {errbot-6.1.9 → errbot-6.2.0}/errbot/logs.py +0 -0
  90. {errbot-6.1.9 → errbot-6.2.0}/errbot/plugin_info.py +0 -0
  91. {errbot-6.1.9 → errbot-6.2.0}/errbot/plugin_wizard.py +0 -0
  92. {errbot-6.1.9 → errbot-6.2.0}/errbot/rendering/__init__.py +0 -0
  93. {errbot-6.1.9 → errbot-6.2.0}/errbot/rendering/ansiext.py +0 -0
  94. {errbot-6.1.9 → errbot-6.2.0}/errbot/rendering/xhtmlim.py +0 -0
  95. {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/__init__.py +0 -0
  96. {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/base.py +0 -0
  97. {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/memory.plug +0 -0
  98. {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/memory.py +0 -0
  99. {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/shelf.plug +0 -0
  100. {errbot-6.1.9 → errbot-6.2.0}/errbot/storage/shelf.py +0 -0
  101. {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/card.md +0 -0
  102. {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/initdir/example.plug +0 -0
  103. {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/initdir/example.py +0 -0
  104. {errbot-6.1.9 → errbot-6.2.0}/errbot/templates/new_plugin.py.tmpl +0 -0
  105. {errbot-6.1.9 → errbot-6.2.0}/errbot/templating.py +0 -0
  106. {errbot-6.1.9 → errbot-6.2.0}/errbot.egg-info/dependency_links.txt +0 -0
  107. {errbot-6.1.9 → errbot-6.2.0}/errbot.egg-info/entry_points.txt +0 -0
  108. {errbot-6.1.9 → errbot-6.2.0}/errbot.egg-info/top_level.txt +0 -0
@@ -71,7 +71,7 @@ features:
71
71
 
72
72
  fixes:
73
73
 
74
- - fixed imporlib/use pip as process (#835) (thx Raphael Wouters)
74
+ - fixed importlib/use pip as process (#835) (thx Raphael Wouters)
75
75
  - if pip is not found, don’t crash errbot
76
76
  - build_identifier to send message to IRC channels (thx mr Shu)
77
77
 
@@ -19,7 +19,7 @@ features:
19
19
  Honig)
20
20
  - Add support for specifying a custom log formatter (Thx Oz Linden)
21
21
  - Add Sentry transport support (thx Dylan Page)
22
- - File transfert support (send_stream_request) on the Hipchat backend
22
+ - File transfer support (send_stream_request) on the Hipchat backend
23
23
  (thx Brad Payne)
24
24
  - Show user where they are in a flow (thx Elijah Roberts)
25
25
  - Help commands are sorted alphabetically (thx Fabian Chong)
@@ -35,7 +35,7 @@ fixes:
35
35
  - Windows: Config directories as raw string (Thx defAnfaenger)
36
36
  - Windows: Repo Manager first time update (Thx Jake Shadle)
37
37
  - Slack: fix Slack identities to be hashable
38
- - Hipchat: fix HicpChat Server XMPP namespace (Thx Antti Palsola)
38
+ - Hipchat: fix HipChat Server XMPP namespace (Thx Antti Palsola)
39
39
  - Hipchat: more aggressive cashing of user list to avoid API quota
40
40
  exceeds (thx Roman)
41
41
 
@@ -180,7 +180,7 @@ Minor improvements
180
180
  ~~~~~~~~~~~~~~~~~~
181
181
 
182
182
  - hipchat endpoint can be used (#348)
183
- - XMPP server parameter can be overriden
183
+ - XMPP server parameter can be overridden
184
184
  - deep internal reorganisation of the bot: the most visible change is that internal commands have been split into internal plugins.
185
185
  - IRC backend: we have now a reconnection logic on disconnect and on kick (see ``IRC_RECONNECT_ON_DISCONNECT`` in the config file for example)
186
186
 
@@ -269,7 +269,7 @@ features:
269
269
  - third party backends (they are plugins too)
270
270
  - completely revamped backup/restore feature.
271
271
  - hipchat endpoint can be used (#348)
272
- - XMPP server parameter can be overriden
272
+ - XMPP server parameter can be overridden
273
273
  - Identifiers are now generic (not tight to XMPP anymore)
274
274
 
275
275
  fixes:
@@ -308,7 +308,7 @@ features:
308
308
 
309
309
  - New serverless tox backend (see http://tox.im for more info)
310
310
  - New Presence callbacks with status messages etc.
311
- - New file transfert support (upload and downloads) for selected backends
311
+ - New file transfer support (upload and downloads) for selected backends
312
312
  - New MUC management API
313
313
  - added err-githubhook to the official repo list (thx Daniele Sluijters)
314
314
  - added err-linksBot to the official repo list (thx Arnaud Vazard)
@@ -402,7 +402,7 @@ features:
402
402
  - Added the !room create command for adhoc room creation (google talk)
403
403
  - Added sedbot to the official repos
404
404
  - Added support for plugin based webviews
405
- - Add err-agressive-keepalive to the official repos
405
+ - Add err-aggressive-keepalive to the official repos
406
406
  - Allow botcmd's to yield values
407
407
  - Allow configuration of MESSAGE_SIZE_LIMIT
408
408
 
@@ -430,7 +430,7 @@ features:
430
430
  - SSL support for webhook callbacks
431
431
  - JID unicode support
432
432
  - Per user command history (Thanks to Leonid S. Usov https://github.com/leonid-s-usov)
433
- - HIDE_RESTRICTED_COMMANDS option added to filter out the non accessoble commands from the help (Thanks to Leonid S. Usov https://github.com/leonid-s-usov)
433
+ - HIDE_RESTRICTED_COMMANDS option added to filter out the non accessible commands from the help (Thanks to Leonid S. Usov https://github.com/leonid-s-usov)
434
434
  - err-markovbot has been added to the official plugins list (Thanks to Max Wagner https://github.com/MaxWagner)
435
435
  - the version parsing now supports beta, alpha, rc etc ... statuses
436
436
 
@@ -508,7 +508,7 @@ fixes:
508
508
 
509
509
  - bot initiated messages were not correctly callbacked on jabber backend
510
510
  - !apropos was generating an unicode error thx to https://github.com/zoni for the fix
511
- - corrected a serie of issues related to the sharedmiddleware on flask
511
+ - corrected a series of issues related to the sharedmiddleware on flask
512
512
  - fixed a regression on the IRC backend thx to https://github.com/nvdk for helping on those
513
513
 
514
514
  features:
@@ -597,7 +597,7 @@ fixes:
597
597
  - corrected a threading issue that was preventing err to quit
598
598
  - the python shebangs lines where not generic
599
599
  - the config path is not inserted first so we don't conflict with other installs
600
- - corrected a corruption of the configs on some persistance stores on shutdown
600
+ - corrected a corruption of the configs on some persistence stores on shutdown
601
601
 
602
602
  features:
603
603
 
@@ -1,3 +1,52 @@
1
+ v6.2.0 (2024-01-01)
2
+ -------------------
3
+
4
+ breaking:
5
+
6
+ - backend/slack: remove slack and slack_rtm built-in backends (#1581)
7
+ - core/logging: deprecate SENTRY_TRANSPORT config (#1604)
8
+ - core: removing py37 support (#1652)
9
+
10
+ features:
11
+
12
+ - core/plugins: detect plugins using entrypoints (#1590)
13
+ - core/logging: add new SENTRY_OPTIONS config (#1597)
14
+ - core/plugins: make slack, mattermost and discord backends available as install requirements (#1611)
15
+
16
+ fixes:
17
+
18
+ - docs: add unreleased section (#1576)
19
+ - docs: update broken URL for Markdown Extra (#1572)
20
+ - chore: bump actions/setup-python version (#1575, #1593, #1609, #1626, #1642, #1650, #1659, #1674)
21
+ - backend/telegram: fix missing imports (#1574)
22
+ - chore: ci improvements (#1577, #1583)
23
+ - chore: add docs build to ci (#1582)
24
+ - backend/xmpp: fix forward type references (#1578)
25
+ - chore: remove campfire references (#1584)
26
+ - chore/setup: fix exception when installing on python <3.7 (#1585)
27
+ - docs: typos (#1589, #1594)
28
+ - chore: simplify isort config using black (#1595)
29
+ - fix: detecting entrypoint module paths (#1603)
30
+ - chore: fix Docker build to use local tree (#1608)
31
+ - chore: bump actions/checkout version (#1610, #1625, #1637, #1644, #1653, #1656, #1658, #1663)
32
+ - docs: link to external Discord plugin documentation (#1615)
33
+ - chore: add ARG to Dockerfile and add proper stop signal (#1613)
34
+ - fix: update module versions and build (#1627)
35
+ - chore: update setuptools version (#1628)
36
+ - refactor: detecting entry point plugins (#1630)
37
+ - chore: bump mr-smithers-excellent/docker-build-push version (#1633)
38
+ - docs: fix example code in the testing section (#1643)
39
+ - chore: update all core dependencies (#1651)
40
+ - fix: use template file for webserver plugin echo output (#1654)
41
+ - chore: update repos.json (#1660)
42
+ - docs: add readthedocs yaml config (#1661)
43
+ - fix: broken integration tests (#1668)
44
+ - style: replace format() with f-strings (#1667)
45
+ - migrate from external mock package to stdlib unittest.mock (#1673)
46
+ - fix: import of Mapping from collections.abc (#1675)
47
+ - backend: update irc, telegram and xmpp dependencies (#1655)
48
+
49
+
1
50
  v6.1.9 (2022-06-11)
2
51
  -------------------
3
52
 
@@ -52,7 +101,7 @@ features:
52
101
  fixes:
53
102
 
54
103
  - core/cli: failure when passing relative directory during --init (#1511)
55
- - backend/xmpp: include message delayed for send/recieved messages (#1270)
104
+ - backend/xmpp: include message delayed for send/received messages (#1270)
56
105
  - backend/xmpp: "unexpected keyword argument 'wait'" when connecting (#1507)
57
106
  - docs: update broken readme link to plugin development docs (#1504)
58
107
  - close threadpool on exit (#1486)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: errbot
3
- Version: 6.1.9
3
+ Version: 6.2.0
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,17 +14,39 @@ 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.7
18
17
  Classifier: Programming Language :: Python :: 3.8
19
18
  Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Description-Content-Type: text/x-rst
22
- Provides-Extra: IRC
21
+ 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
32
+ Requires-Dist: pygments-markdown-lexer==0.1.0.dev39
33
+ Requires-Dist: dulwich==0.21.5
34
+ Requires-Dist: deepmerge==1.1.0
23
35
  Provides-Extra: slack
24
- Provides-Extra: slack-rtm
36
+ Requires-Dist: errbot-backend-slackv3==0.2.1; extra == "slack"
37
+ Provides-Extra: discord
38
+ Requires-Dist: err-backend-discord==3.0.1; extra == "discord"
39
+ Provides-Extra: mattermost
40
+ Requires-Dist: err-backend-mattermost==3.0.0; extra == "mattermost"
41
+ Provides-Extra: irc
42
+ Requires-Dist: irc==20.3.0; extra == "irc"
25
43
  Provides-Extra: telegram
26
- Provides-Extra: XMPP
27
- License-File: COPYING
44
+ Requires-Dist: python-telegram-bot==13.15; extra == "telegram"
45
+ 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"
49
+ Requires-Dist: daemonize==2.5.0; sys_platform != "win32"
28
50
 
29
51
  .. image:: https://errbot.readthedocs.org/en/latest/_static/errbot.png
30
52
  :target: http://errbot.io
@@ -71,16 +93,15 @@ Chat servers support
71
93
  **Built-in**
72
94
 
73
95
  - IRC support
74
- - `Slack support <https://slack.com/>`_
75
96
  - `Telegram support <https://www.telegram.org/>`_
76
97
  - `XMPP support <http://xmpp.org>`_
77
98
 
78
99
  **With add-ons**
79
100
 
80
- - `CampFire <https://campfirenow.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-campfire>`__)
81
- - `Webex <https://www.webex.com/>`_ (See `instructions <https://github.com/marksull/err-backend-cisco-webex-teams>`__)
82
- - `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/gbin/err-backend-discord>`__)
101
+ - `Slack support <https://slack.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-slackv3>`__)
102
+ - `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-discord>`__)
83
103
  - `Gitter support <https://gitter.im/>`_ (See `instructions <https://github.com/errbotio/err-backend-gitter>`__)
104
+ - `Webex <https://www.webex.com/>`_ (See `instructions <https://github.com/marksull/err-backend-cisco-webex-teams>`__)
84
105
  - `Mattermost <https://about.mattermost.com/>`_ (See `instructions <https://github.com/Vaelor/errbot-mattermost-backend>`__)
85
106
  - `RocketChat <https://rocket.chat/>`_ (See `instructions <https://github.com/cardoso/errbot-rocketchat>`__)
86
107
  - `Skype <https://www.skype.com/>`_ (See `instructions <https://github.com/errbotio/errbot-backend-skype>`__)
@@ -108,7 +129,7 @@ Developer features
108
129
  - Presetup storage for every plugin i.e. ``self['foo'] = 'bar'`` persists the value.
109
130
  - Conversation flows to track conversation states from users.
110
131
  - Webhook callbacks support
111
- - supports `markdown extras <https://pythonhosted.org/Markdown/extensions/extra.html>`_ formatting with tables, embedded images, links etc.
132
+ - supports `markdown extras <https://markdown-extra.readthedocs.io/>`_ formatting with tables, embedded images, links etc.
112
133
  - configuration helper to allow your plugin to be configured by chat
113
134
  - Text development/debug consoles
114
135
  - Self-documenting: your docstrings become help automatically
@@ -159,12 +180,12 @@ It will show you a prompt `>>>` so you can talk to your bot directly! Try `!help
159
180
  Adding support for a chat system
160
181
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
161
182
 
162
- For the built-ins, just use one of those options `slack, telegram, IRC, XMPP` with pip, you can still do it
183
+ For the built-ins, just use one of those options `telegram, IRC, XMPP` with pip, you can still do it
163
184
  after the initial installation to add the missing support for example ::
164
185
 
165
- $ pip install "errbot[slack]"
186
+ $ pip install "errbot[irc]"
166
187
 
167
- For the external ones (Skype, Gitter, Discord etc ...), please follow their respective github pages for instructions.
188
+ For the external ones (Slack, Discord, Gitter, Skype, etc ...), please follow their respective github pages for instructions.
168
189
 
169
190
  Configuration
170
191
  ~~~~~~~~~~~~~
@@ -256,6 +277,55 @@ Contribution to Errbot itself
256
277
  Feel free to fork and propose changes on `github <https://www.github.com/errbotio/errbot>`_
257
278
 
258
279
 
280
+ v6.2.0 (2024-01-01)
281
+ -------------------
282
+
283
+ breaking:
284
+
285
+ - backend/slack: remove slack and slack_rtm built-in backends (#1581)
286
+ - core/logging: deprecate SENTRY_TRANSPORT config (#1604)
287
+ - core: removing py37 support (#1652)
288
+
289
+ features:
290
+
291
+ - core/plugins: detect plugins using entrypoints (#1590)
292
+ - core/logging: add new SENTRY_OPTIONS config (#1597)
293
+ - core/plugins: make slack, mattermost and discord backends available as install requirements (#1611)
294
+
295
+ fixes:
296
+
297
+ - docs: add unreleased section (#1576)
298
+ - docs: update broken URL for Markdown Extra (#1572)
299
+ - chore: bump actions/setup-python version (#1575, #1593, #1609, #1626, #1642, #1650, #1659, #1674)
300
+ - backend/telegram: fix missing imports (#1574)
301
+ - chore: ci improvements (#1577, #1583)
302
+ - chore: add docs build to ci (#1582)
303
+ - backend/xmpp: fix forward type references (#1578)
304
+ - chore: remove campfire references (#1584)
305
+ - chore/setup: fix exception when installing on python <3.7 (#1585)
306
+ - docs: typos (#1589, #1594)
307
+ - chore: simplify isort config using black (#1595)
308
+ - fix: detecting entrypoint module paths (#1603)
309
+ - chore: fix Docker build to use local tree (#1608)
310
+ - chore: bump actions/checkout version (#1610, #1625, #1637, #1644, #1653, #1656, #1658, #1663)
311
+ - docs: link to external Discord plugin documentation (#1615)
312
+ - chore: add ARG to Dockerfile and add proper stop signal (#1613)
313
+ - fix: update module versions and build (#1627)
314
+ - chore: update setuptools version (#1628)
315
+ - refactor: detecting entry point plugins (#1630)
316
+ - chore: bump mr-smithers-excellent/docker-build-push version (#1633)
317
+ - docs: fix example code in the testing section (#1643)
318
+ - chore: update all core dependencies (#1651)
319
+ - fix: use template file for webserver plugin echo output (#1654)
320
+ - chore: update repos.json (#1660)
321
+ - docs: add readthedocs yaml config (#1661)
322
+ - fix: broken integration tests (#1668)
323
+ - style: replace format() with f-strings (#1667)
324
+ - migrate from external mock package to stdlib unittest.mock (#1673)
325
+ - fix: import of Mapping from collections.abc (#1675)
326
+ - backend: update irc, telegram and xmpp dependencies (#1655)
327
+
328
+
259
329
  v6.1.9 (2022-06-11)
260
330
  -------------------
261
331
 
@@ -310,7 +380,7 @@ features:
310
380
  fixes:
311
381
 
312
382
  - core/cli: failure when passing relative directory during --init (#1511)
313
- - backend/xmpp: include message delayed for send/recieved messages (#1270)
383
+ - backend/xmpp: include message delayed for send/received messages (#1270)
314
384
  - backend/xmpp: "unexpected keyword argument 'wait'" when connecting (#1507)
315
385
  - docs: update broken readme link to plugin development docs (#1504)
316
386
  - close threadpool on exit (#1486)
@@ -518,5 +588,3 @@ features:
518
588
  - Added a default parameter to the storage context manager
519
589
 
520
590
  .. v9.9.9 (leave that there so master doesn't complain)
521
-
522
-
@@ -43,16 +43,15 @@ Chat servers support
43
43
  **Built-in**
44
44
 
45
45
  - IRC support
46
- - `Slack support <https://slack.com/>`_
47
46
  - `Telegram support <https://www.telegram.org/>`_
48
47
  - `XMPP support <http://xmpp.org>`_
49
48
 
50
49
  **With add-ons**
51
50
 
52
- - `CampFire <https://campfirenow.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-campfire>`__)
53
- - `Webex <https://www.webex.com/>`_ (See `instructions <https://github.com/marksull/err-backend-cisco-webex-teams>`__)
54
- - `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/gbin/err-backend-discord>`__)
51
+ - `Slack support <https://slack.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-slackv3>`__)
52
+ - `Discord <https://www.discordapp.com/>`_ (See `instructions <https://github.com/errbotio/err-backend-discord>`__)
55
53
  - `Gitter support <https://gitter.im/>`_ (See `instructions <https://github.com/errbotio/err-backend-gitter>`__)
54
+ - `Webex <https://www.webex.com/>`_ (See `instructions <https://github.com/marksull/err-backend-cisco-webex-teams>`__)
56
55
  - `Mattermost <https://about.mattermost.com/>`_ (See `instructions <https://github.com/Vaelor/errbot-mattermost-backend>`__)
57
56
  - `RocketChat <https://rocket.chat/>`_ (See `instructions <https://github.com/cardoso/errbot-rocketchat>`__)
58
57
  - `Skype <https://www.skype.com/>`_ (See `instructions <https://github.com/errbotio/errbot-backend-skype>`__)
@@ -80,7 +79,7 @@ Developer features
80
79
  - Presetup storage for every plugin i.e. ``self['foo'] = 'bar'`` persists the value.
81
80
  - Conversation flows to track conversation states from users.
82
81
  - Webhook callbacks support
83
- - supports `markdown extras <https://pythonhosted.org/Markdown/extensions/extra.html>`_ formatting with tables, embedded images, links etc.
82
+ - supports `markdown extras <https://markdown-extra.readthedocs.io/>`_ formatting with tables, embedded images, links etc.
84
83
  - configuration helper to allow your plugin to be configured by chat
85
84
  - Text development/debug consoles
86
85
  - Self-documenting: your docstrings become help automatically
@@ -131,12 +130,12 @@ It will show you a prompt `>>>` so you can talk to your bot directly! Try `!help
131
130
  Adding support for a chat system
132
131
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
133
132
 
134
- For the built-ins, just use one of those options `slack, telegram, IRC, XMPP` with pip, you can still do it
133
+ For the built-ins, just use one of those options `telegram, IRC, XMPP` with pip, you can still do it
135
134
  after the initial installation to add the missing support for example ::
136
135
 
137
- $ pip install "errbot[slack]"
136
+ $ pip install "errbot[irc]"
138
137
 
139
- For the external ones (Skype, Gitter, Discord etc ...), please follow their respective github pages for instructions.
138
+ For the external ones (Slack, Discord, Gitter, Skype, etc ...), please follow their respective github pages for instructions.
140
139
 
141
140
  Configuration
142
141
  ~~~~~~~~~~~~~
@@ -377,9 +377,7 @@ def arg_botcmd(
377
377
  argparse_args = args[1:]
378
378
 
379
379
  def decorator(func):
380
-
381
380
  if not hasattr(func, "_err_command"):
382
-
383
381
  err_command_parser = ArgumentParser(
384
382
  prog=name or func.__name__,
385
383
  description=func.__doc__,
@@ -387,7 +385,6 @@ def arg_botcmd(
387
385
 
388
386
  @wraps(func)
389
387
  def wrapper(self, msg, args):
390
-
391
388
  # Attempt to sanitize arguments of bad characters
392
389
  try:
393
390
  sanitizer_re = re.compile(
@@ -5,7 +5,7 @@ from typing import Any, Iterator, List, Type, Union
5
5
 
6
6
  from errbot.plugin_info import PluginInfo
7
7
 
8
- from .utils import collect_roots
8
+ from .utils import collect_roots, entry_point_plugins
9
9
 
10
10
  log = logging.getLogger(__name__)
11
11
 
@@ -44,7 +44,8 @@ class BackendPluginManager:
44
44
  self._base_class = base_class
45
45
 
46
46
  self.plugin_info = None
47
- all_plugins_paths = collect_roots((base_search_dir, extra_search_dirs))
47
+ ep = entry_point_plugins(group="errbot.backend_plugins")
48
+ all_plugins_paths = collect_roots((base_search_dir, extra_search_dirs, ep))
48
49
 
49
50
  for potential_plugin in enumerate_backend_plugins(all_plugins_paths):
50
51
  if potential_plugin.name == plugin_name:
@@ -11,11 +11,12 @@ log = logging.getLogger(__name__)
11
11
 
12
12
  class Identifier(ABC):
13
13
  """This is just use for type hinting representing the Identifier contract,
14
+
14
15
  NEVER TRY TO SUBCLASS IT OUTSIDE OF A BACKEND, it is just here to show you what you can expect from an Identifier.
15
16
  To get an instance of a real identifier, always use the properties from Message (to, from) or self.build_identifier
16
- to make an identifier from a String.
17
+ to make an identifier from a String.
17
18
 
18
- The semantics is anything you can talk to: Person, Room, RoomOccupant etc.
19
+ The semantics is anything you can talk to: Person, Room, RoomOccupant etc.
19
20
  """
20
21
 
21
22
  pass
@@ -23,9 +24,10 @@ class Identifier(ABC):
23
24
 
24
25
  class Person(Identifier):
25
26
  """This is just use for type hinting representing the Identifier contract,
27
+
26
28
  NEVER TRY TO SUBCLASS IT OUTSIDE OF A BACKEND, it is just here to show you what you can expect from an Identifier.
27
29
  To get an instance of a real identifier, always use the properties from Message (to, from) or self.build_identifier
28
- to make an identifier from a String.
30
+ to make an identifier from a String.
29
31
  """
30
32
 
31
33
  @property
@@ -221,7 +223,7 @@ class Room(Identifier):
221
223
  """
222
224
  Invite one or more people into the room.
223
225
 
224
- :*args:
226
+ :param *args:
225
227
  One or more identifiers to invite into the room.
226
228
  """
227
229
  raise NotImplementedError(
@@ -389,7 +391,7 @@ class Message:
389
391
  return self._extras
390
392
 
391
393
  @property
392
- def flow(self) -> "Flow":
394
+ def flow(self) -> "errbot.Flow":
393
395
  """
394
396
  Get the conversation flow for this message.
395
397
 
@@ -590,7 +592,6 @@ class Reaction:
590
592
  reaction_name: str = None,
591
593
  reacted_to: Mapping = None,
592
594
  ):
593
-
594
595
  if reactor is None:
595
596
  raise ValueError("Reaction: reactor is None")
596
597
  if reaction_name is None:
@@ -315,7 +315,7 @@ class IRCRoom(Room):
315
315
  """
316
316
  Invite one or more people into the room.
317
317
 
318
- :*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, Optional, Union
3
+ from typing import Any, BinaryIO, List, Optional, Union
4
4
 
5
5
  from errbot.backends.base import (
6
6
  ONLINE,
@@ -565,12 +565,14 @@ class TestBot:
565
565
  def inject_mocks(self, plugin_name: str, mock_dict: dict):
566
566
  """Inject mock objects into the plugin
567
567
 
568
- mock_dict = {
569
- 'field_1': obj_1,
570
- 'field_2': obj_2,
571
- }
572
- testbot.inject_mocks(HelloWorld, mock_dict)
573
- assert 'blah' in testbot.exec_command('!hello')
568
+ Example::
569
+
570
+ mock_dict = {
571
+ 'field_1': obj_1,
572
+ 'field_2': obj_2,
573
+ }
574
+ testbot.inject_mocks(HelloWorld, mock_dict)
575
+ assert 'blah' in testbot.exec_command('!hello')
574
576
  """
575
577
  plugin = self.bot.plugin_manager.get_plugin_obj_by_name(plugin_name)
576
578
 
@@ -282,7 +282,6 @@ class TextBackend(ErrBot):
282
282
 
283
283
  try:
284
284
  while True:
285
-
286
285
  if self._inroom:
287
286
  frm = TextOccupant(self.user, self.rooms()[0])
288
287
  to = self.rooms()[0]
@@ -1,3 +1,5 @@
1
+ from __future__ import annotations
2
+
1
3
  import logging
2
4
  import sys
3
5
  from datetime import datetime
@@ -1,6 +1,7 @@
1
1
  import importlib
2
2
  import logging
3
3
  import sys
4
+ import warnings
4
5
  from os import makedirs, path
5
6
  from typing import Callable, Optional
6
7
 
@@ -131,25 +132,29 @@ def setup_bot(
131
132
 
132
133
  sentry_integrations.append(FlaskIntegration())
133
134
 
134
- try:
135
- if hasattr(config, "SENTRY_TRANSPORT") and isinstance(
136
- config.SENTRY_TRANSPORT, tuple
137
- ):
135
+ sentry_options = getattr(config, "SENTRY_OPTIONS", {})
136
+ if hasattr(config, "SENTRY_TRANSPORT") and isinstance(
137
+ config.SENTRY_TRANSPORT, tuple
138
+ ):
139
+ warnings.warn(
140
+ "SENTRY_TRANSPORT is deprecated. Please use SENTRY_OPTIONS instead.",
141
+ DeprecationWarning,
142
+ )
143
+ try:
138
144
  mod = importlib.import_module(config.SENTRY_TRANSPORT[1])
139
145
  transport = getattr(mod, config.SENTRY_TRANSPORT[0])
140
-
141
- sentry_sdk.init(
142
- dsn=config.SENTRY_DSN,
143
- integrations=sentry_integrations,
144
- transport=transport,
146
+ sentry_options["transport"] = transport
147
+ except ImportError:
148
+ log.exception(
149
+ f"Unable to import selected SENTRY_TRANSPORT - {config.SENTRY_TRANSPORT}"
145
150
  )
146
- else:
147
- sentry_sdk.init(dsn=config.SENTRY_DSN, integrations=sentry_integrations)
148
- except ImportError:
149
- log.exception(
150
- f"Unable to import selected SENTRY_TRANSPORT - {config.SENTRY_TRANSPORT}"
151
- )
152
- exit(-1)
151
+ exit(-1)
152
+ # merge options dict with dedicated SENTRY_DSN setting
153
+ sentry_kwargs = {
154
+ **sentry_options,
155
+ **{"dsn": config.SENTRY_DSN, "integrations": sentry_integrations},
156
+ }
157
+ sentry_sdk.init(**sentry_kwargs)
153
158
 
154
159
  logger.setLevel(config.BOT_LOG_LEVEL)
155
160
 
@@ -134,9 +134,7 @@ class Command:
134
134
  update_wrapper(self.definition, args, kwargs)
135
135
  else:
136
136
  log.warning(
137
- "Attempting to append arguments to {} isn't supported.".format(
138
- self.definition
139
- )
137
+ f"Attempting to append arguments to {self.definition} isn't supported."
140
138
  )
141
139
 
142
140
 
@@ -27,7 +27,7 @@ from typing import Optional, Union
27
27
  from errbot.bootstrap import CORE_BACKENDS
28
28
  from errbot.logs import root_logger
29
29
  from errbot.plugin_wizard import new_plugin_wizard
30
- from errbot.utils import collect_roots
30
+ from errbot.utils import collect_roots, entry_point_plugins
31
31
  from errbot.version import VERSION
32
32
 
33
33
  log = logging.getLogger(__name__)
@@ -83,10 +83,10 @@ def get_config(config_path: str):
83
83
 
84
84
 
85
85
  def _read_dict() -> dict:
86
- import collections
86
+ from collections.abc import Mapping
87
87
 
88
88
  new_dict = ast.literal_eval(sys.stdin.read())
89
- if not isinstance(new_dict, collections.Mapping):
89
+ if not isinstance(new_dict, Mapping):
90
90
  raise ValueError(
91
91
  f"A dictionary written in python is needed from stdin. "
92
92
  f"Type={type(new_dict)}, Value = {repr(new_dict)}."
@@ -95,7 +95,6 @@ def _read_dict() -> dict:
95
95
 
96
96
 
97
97
  def main() -> None:
98
-
99
98
  execution_dir = getcwd()
100
99
 
101
100
  # By default insert the execution path (useful to be able to execute Errbot from
@@ -209,6 +208,7 @@ def main() -> None:
209
208
 
210
209
  data_dir = base_dir / "data"
211
210
  extra_plugin_dir = base_dir / "plugins"
211
+ extra_backend_plugin_dir = base_dir / "backend-plugins"
212
212
  example_plugin_dir = extra_plugin_dir / "err-example"
213
213
  log_path = base_dir / "errbot.log"
214
214
 
@@ -220,6 +220,7 @@ def main() -> None:
220
220
 
221
221
  data_dir.mkdir(exist_ok=True)
222
222
  extra_plugin_dir.mkdir(exist_ok=True)
223
+ extra_backend_plugin_dir.mkdir(exist_ok=True)
223
224
  example_plugin_dir.mkdir(exist_ok=True)
224
225
 
225
226
  with open(base_dir / "config.py", "w") as f:
@@ -227,6 +228,7 @@ def main() -> None:
227
228
  config_template.render(
228
229
  data_dir=str(data_dir),
229
230
  extra_plugin_dir=str(extra_plugin_dir),
231
+ extra_backend_plugin_dir=str(extra_backend_plugin_dir),
230
232
  log_path=str(log_path),
231
233
  )
232
234
  )
@@ -281,6 +283,8 @@ def main() -> None:
281
283
  extra_backend = getattr(config, "BOT_EXTRA_BACKEND_DIR", [])
282
284
  if isinstance(extra_backend, str):
283
285
  extra_backend = [extra_backend]
286
+ ep = entry_point_plugins(group="errbot.backend_plugins")
287
+ extra_backend.extend(ep)
284
288
 
285
289
  if args["list"]:
286
290
  from errbot.backend_plugin_manager import enumerate_backend_plugins