Valentin Lorentz
009b900100
Make TimeoutQueue.iter() actually expire items
...
It is functionally fine not to, but causes objects to never be freed
if iter() is the only method called on the queue (ie. no
enqueue/dequeue, len(), ...)
2022-10-24 23:43:52 +02:00
Valentin Lorentz
2c5dc405fc
test: Revert generic 'The Limnoria Contributors' in copyright notices
...
I forgot to include these in 63eb6672ea
(This is fine because noone but me touched these files since the initial
change in db7ef3f025
).
2022-10-24 23:41:26 +02:00
Valentin Lorentz
47253e032e
Add test for structures.TimeoutQueue.__iter__
2022-10-24 23:21:11 +02:00
Valentin Lorentz
d0a484c11c
Sort remaining nondeterministc sets of values
...
Closes GH-1516
2022-10-20 18:35:58 +02:00
Valentin Lorentz
dc94f8dc68
registry: Default to sorting sets of values
...
Not sorting them causes the config file to change when the bot writes
it, because order is nondeterministic.
This is usually fine, but can be annoying when configs are deployed
with Ansible.
Closes GH-1516
2022-10-14 23:15:11 +02:00
Valentin Lorentz
8c17505221
User: Sort output of @capabilities
...
It's more readable than a random order.
2022-10-13 21:46:50 +02:00
Valentin Lorentz
a6aa5530dd
Ensure files written with AtomicFile are read in UTF8
...
With some locale configurations (not that uncommon on CentOS), open() may
default to non-UTF8 encodings (eg. ANSI_X3.4-1968).
This is usually not an issue, because we use open() both for writing and
reading. However, AtomicFile implicitly enforces UTF8; which needs to be
mirrored when reading.
2022-10-06 09:49:42 +02:00
James Lu
b1cfb87e71
String: allow multi-character inputs in "ord" and "unicodename"
...
This allows them to support emoji ZWJ sequences, which render like one character but are actually multiple.
2022-10-06 08:31:22 +02:00
Valentin Lorentz
35bf599856
utils/web: Add <br/> to the list of block elements
...
It should always be replaced with a space.
2022-09-20 07:51:46 +02:00
Valentin Lorentz
169824a9d2
Math: make @icalc
fail early when result is too large
...
This avoids inconsistent errors between CPython 3.10.7 and older
versions; and the result would not be readable anyway.
Closes GH-1517.
2022-09-18 20:06:34 +02:00
Valentin Lorentz
acdae12bbd
Bump CI version from 3.11.0-alpha.2 to 3.11.0-rc.2
2022-09-18 20:06:34 +02:00
Valentin Lorentz
bc3a441888
Poll: Make answers case-insensitive
2022-09-18 19:25:48 +02:00
Valentin Lorentz
200acdfa93
registry: Normalize values before checking they are valid
...
Otherwise, normalization is useless, and gives a surprising error message,
such as:
```
<user> config plugins.rss.sortfeeditems oldestfirst
<bot> Error: Valid values include 'asInFeed', 'oldestFirst', 'newestFirst', 'outdatedFirst', and 'updatedFirst', not 'oldestFirst'.
```
2022-09-07 12:31:22 +02:00
Valentin Lorentz
86b389618f
MessageParser: Ignore chathistory batches
...
To be consistent with commands and PluginRegexp (snarfers)
2022-08-16 00:23:33 +02:00
Valentin Lorentz
fccb4f705b
RSS: Log feed URL when feedparser.parse raises exceptions
2022-08-07 19:17:15 +02:00
Valentin Lorentz
4db32e24a5
Ctcp: Fix 'RuntimeError: dictionary changed size during iteration'
2022-08-06 15:09:10 +02:00
Valentin Lorentz
0780624450
Time: Fix typo
2022-08-06 15:08:51 +02:00
Valentin Lorentz
b8dce0d7db
Time: Skip new assertions on Python 3.6 so testSeconds passes
2022-08-02 13:16:21 +02:00
Valentin Lorentz
8f837a676d
Time: Add support for omitting space in @seconds
2022-08-02 13:01:08 +02:00
Valentin Lorentz
cd0f9f2628
Polls: Make nick matching case-insensitive
...
This prevents the same nick from voting twice by changing
the capitalization
2022-07-31 09:04:27 +02:00
Valentin Lorentz
28c52c2818
Poll: Add @poll list command
2022-07-30 21:25:47 +02:00
Valentin Lorentz
2afa3c49a1
Fediverse: run black
2022-07-30 21:23:10 +02:00
Valentin Lorentz
ef081746b1
commands: Silence noisy logging of command evaluation
2022-07-29 10:29:48 +02:00
Valentin Lorentz
ee60431396
Add debug logging when skipping SASL mechanisms
...
It is useful to figure out what you forgot to configure
2022-07-29 10:03:39 +02:00
Valentin Lorentz
f549ec12c6
Add debug logging of SASL mechanisms
2022-07-29 09:45:09 +02:00
Valentin Lorentz
796f717d09
requirements.txt: Classify and provide a rationale for each dependency
2022-07-20 18:31:24 +02:00
Valentin Lorentz
7b9a944603
Remove dependency on 'mock'
...
It is a backport of unittest.mock for Python versions before 3.3,
which we do not support anymore.
2022-07-20 18:25:27 +02:00
Valentin Lorentz
461c091b94
Fediverse: Hide channel actor on PeerTube
2022-07-20 18:15:51 +02:00
Valentin Lorentz
34f8842273
Fediverse: Add support for descriptions with line breaks
2022-07-20 18:10:14 +02:00
Valentin Lorentz
2df2bc28d0
Fediverse: Add support for videos
2022-07-20 17:57:29 +02:00
Valentin Lorentz
d67fb2a8b2
Autocomplete, Fediverse, Geography, Poll: Run Black
2022-07-20 17:53:09 +02:00
pratyushd
5d8f59bf80
add conditional to respond acc to kick being true or not ( #1512 )
...
Co-authored-by: Pratyush Desai <pratyush.desai@liberta.casa>
2022-07-13 21:02:28 +02:00
964acac058
for #1490 extend usage examples
2022-07-13 08:56:30 +02:00
James Lu
65d88440c2
supybot-plugin-doc: default to RST
...
None of the current maintainers are sure what stx is??
2022-07-09 14:24:13 -07:00
James Lu
95f6b1698e
Aka, Alias: replace obsolete LastFM example
2022-07-09 14:15:57 -07:00
James Lu
988fe08945
.gitignore: add doc-* paths from supybot-plugin-doc
2022-07-09 14:15:33 -07:00
Valentin Lorentz
96b7f51e71
callbacks: Ignore chathistory batches in PluginRegexp
...
This is consistent with what we already do with commands; and generally
makes sense, as we don't want to re-send titles and others when cycling
on UnrealIRCd (which includes a chathistory batch when joining when
chmode +H is set, despite umode +B)
2022-07-06 22:07:37 +02:00
Valentin Lorentz
3ecb37de10
test_callbacks: Add PluginRegexpTestCase.testReply to check basic behavior
2022-07-06 22:05:30 +02:00
Valentin Lorentz
6a943b8342
test_callbacks: Fix PluginRegexpTestCase to actually check regexp callbacks
2022-07-06 22:04:33 +02:00
James Lu
d00113e92d
PluginDownloader: replace automatic 2to3 step with a simple warning
...
The previous heuristic runs into false positives when imports are merged in __init__.py
More broadly though, it's unlikely automatic 2to3 is particularly useful in 2022 - plugins that were written ~10 years ago are unlikely to work even if syntax errors are fixed.
2022-06-23 22:31:17 +02:00
James Lu
8ccf2c7175
PluginDownloader: drop legacy Python 2-only repos
...
Most of these haven't been updated in ~10 years and are unlikely to work out of the box today (obsolete web APIs, etc.)
2022-06-23 22:31:17 +02:00
Valentin Lorentz
b3443a5a4c
setup: Fix install of subpackages when pip-installed from git repositories
...
It seems setuptools needs to be explicitly told to include subpackages
in this case.
2022-06-22 20:31:59 +02:00
SamStrongTalks
d04e8161d5
Add ability to exclude channel from self censoring ( #1508 )
2022-06-17 16:44:12 +02:00
Valentin Lorentz
c333af9a44
Add alternative name 'limnoria-' in addition to 'supybot-*' for scripts
...
The 'supybot-*' variants will be deprecated in a year or two,
to give distributions time to provide the new names before updating
install/usage documentation.
2022-06-17 11:48:27 +02:00
Valentin Lorentz
0572d49988
Use setuptools 'entry_points' instead of distutils-style 'scripts'
...
A future commit will add aliases for these scripts, and using entry_points
will make them easier to set up.
2022-06-17 11:45:31 +02:00
Valentin Lorentz
52271d2e6e
setup.py: Deduplicate script list
2022-06-17 09:11:55 +02:00
Valentin Lorentz
6379a9d43a
supybot-reset-password: Update help string to match the man page
2022-06-17 09:11:35 +02:00
Valentin Lorentz
a65960bfdf
Add missing man page for supybot-reset-password.
2022-06-17 09:09:20 +02:00
Valentin Lorentz
fd04fccaec
i18n: Validate value of supybot.language
2022-06-17 00:29:38 +02:00
Valentin Lorentz
93370b6f0e
utils: Rewrite i18n initialization
...
The previous implementation was messy and needlessly complicated
This simplifies the logic and removes hackiness by making utils/str.py
handle internationalization logic itself, instead of bending over
backwards to load logic from the parent package at import time.
2022-06-17 00:05:51 +02:00