Valentin Lorentz
f409111872
callbacks: Fix interference between Scheduler.repeat, Anonymous, and nested commands
...
Specifically, the issue is with Anonymous using irc.noReply() in
the first call, preventing nested commands' result from being used.
Before this commit, the second and third responses in the test would be
only "1" and "2" instead of "1 ['foo']" and "2 ['foo']".
2023-01-19 10:19:01 +01:00
Valentin Lorentz
b42596a021
Regenerate READMEs
2023-01-12 22:24:16 +01:00
Valentin Lorentz
02a0204f80
Services: Improve doc of plugins.Services.nicks
2023-01-12 22:24:16 +01:00
Val Lorentz
f5d39b0be2
Skip irctest on pypy-3.9
...
For some reason, it takes a whole hour to run
2022-12-28 23:15:30 +01:00
Valentin Lorentz
ef960befa3
Add test for registry reloading
2022-12-28 17:06:02 +01:00
Valentin Lorentz
64b1469a23
ci: Bump Python versions
2022-12-28 15:12:54 +01:00
Valentin Lorentz
501770e544
Fediverse: Add support for missing host-meta document
2022-12-28 15:12:18 +01:00
James Lu
21a2ace7a1
Services: allow adjusting GHOST command
...
Anope 2.x has renamed this to /ns recover
Closes GH-1510
2022-12-24 08:53:26 +01:00
Valentin Lorentz
d372d55c05
ci: Make Ubuntu versions explicit
...
Github just migrated us to Ubuntu 22.04, but it can't run Python 3.6 on it
2022-12-23 22:33:59 +01:00
Valentin Lorentz
1a7c14f4b3
Web: Decode using the charset advertized in response headers
...
And fall back to the sniffing when not present
2022-11-26 09:06:47 +01:00
Valentin Lorentz
e6c4da0fff
Channel: Fix and re-enable disabled tests
2022-11-23 19:25:22 +01:00
Valentin Lorentz
985ca23f71
Add tests for nicksToHostmasks
2022-11-23 19:25:12 +01:00
Valentin Lorentz
314fad36eb
Modernize tests
...
Thanks to https://pypi.org/project/teyit/
2022-11-20 19:33:23 +01:00
Valentin Lorentz
fd248dc521
Channel: Fix documentation, --exact cannot be combined
2022-11-20 19:07:44 +01:00
Valentin Lorentz
d7d97d3b93
Google: Remove broken commands
2022-11-10 01:48:49 +01:00
James Lu
73a23e220f
IrcState: fix typo in attribute docs
...
capabilities_acq -> capabilities_ack
2022-11-06 18:38:24 -08:00
Valentin Lorentz
4da1291876
URL: Lazily deserialize records from the end in @last
...
Before this commit, the plugin first fetched a list of all
(deserialized) records in a list, then reversed the list, and iterated
on the reverse list.
This proved to be slow, with most of the time being spent in
`dbi.DB._newRecord` (which essentially deserializes one list of CSV).
After this commit, the list is reversed first, then the plugin iterates
on its generator, which calls `_newRecord` on records as they are
requested.
This means that when there are many URLs in the database, `@last` does
not need to waste time deserializing most records, when the result is
near the end (and if the result is the first record, then it does
exactly as much work as before).
2022-10-30 20:46:35 +01:00
Valentin Lorentz
f4ac7f88fe
RSS: Don't crash on invalid variable name
...
It's confusing not to have feedback on IRC when a variable name
is typoed.
2022-10-28 22:41:43 +02:00
Valentin Lorentz
77805ff36e
irclib: Abort authentication when server fails SCRAM challenge
...
Will be tested by irctest:
https://github.com/progval/irctest/pull/179
2022-10-28 15:00:58 +02:00
Valentin Lorentz
e9a29e9159
irclib: Fix crashes on ecdsa/scram signature failures
2022-10-28 14:57:57 +02:00
Valentin Lorentz
b0525bcf42
Double default peekSize
...
We bumped it to 8kB in 2015, but it is starting to be an issue again.
2022-10-28 14:22:44 +02:00
Valentin Lorentz
2cfc821203
Web: Allow configuring higher peekSize on Youtube
2022-10-28 14:18:52 +02:00
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