aboutsummaryrefslogtreecommitdiffstats
path: root/tests/helpers.py (unfollow)
Commit message (Collapse)AuthorLines
2020-07-22Fix handling of elements when fetching signatures.Gravatar Numerlor-1/+1
After the change to `find_elements_until_tag`, the text contentsneed to be extracted from the tags instead of passing them directly to re.
2020-07-22Remove conversion to str when finding elements.Gravatar Numerlor-2/+2
The tags need to be processed down the line, which is not viable on strings.
2020-07-20Create a function for collecting signatures.Gravatar Numerlor-36/+10
By getting the signatures without the description we get more flexibility of parsing different symbol groups and decouple the logic from the description which can be parsed directly with the new `find_elements_until_tag` based function.
2020-07-20Simplify module parsing method.Gravatar Numerlor-9/+10
Instead of returning None and multiple values, the method now only returns the string of the description. Previously the parsing returned None and quit when appropriate tags for shortening the description were not found, but the new implementation simply defaults to the provided start tag if a better alternative is not found.
2020-07-20Add function for finding tags until a matching tagGravatar Numerlor-0/+35
This will allow flexibility in the future when collecting tags for the description and signature of symbols. The base is a function which accepts a callable which is called and iterated over, but 3 names with a partial function that has the callable supplied are provided to keep the outside interface neater.
2020-07-20Simplify cutoff text.Gravatar Numerlor-3/+4
"read more" seemed out of place with no permalink over it.
2020-07-20Remove permalink from truncated markdown.Gravatar Numerlor-3/+3
The permalink serves no functional purpose in the embed, as it is already included in the title. But it does add the complexity of passing in the url to the parser.
2020-07-20Rename parser.py to parsing.py.Gravatar Numerlor-1/+1
Parser is a stdlib module name, a rename avoids shadowing it.
2020-07-19Move markdown truncation into parser moduleGravatar Numerlor-25/+31
2020-07-18Move main parsing methods into a new moduleGravatar Numerlor-96/+108
2020-07-18Move async_cache into a separate moduleGravatar Numerlor-31/+34
2020-07-18Create a package for the Doc cog.Gravatar Numerlor-6/+8
2020-07-14Rename inventories to doc_symbols.Gravatar Numerlor-10/+10
2020-07-14Change docstrings to use suffixed command names.Gravatar Numerlor-3/+3
2020-07-14Change package name converter to only accept _a-z.Gravatar Numerlor-15/+13
Package names are now directly used for stats, where the lowercase a-z characters and _ are used.
2020-07-14Make the symbol parameter optional.Gravatar Numerlor-2/+2
The commands were changed to be greedy, this however made them required arguments breaking the access to the default listing of the available inventories
2020-07-14Add doc suffix to doc commands.Gravatar Numerlor-4/+4
The `set` command shadowed the `set` symbol, causing the command to seemingly not work. A suffix was added to all commands to keep them consistent and future proof; the shorthands were kept unchanged
2020-07-10Remove codeblock from symbol embed title.Gravatar Numerlor-1/+1
The code block caused the url to not highlight the title text on mobile
2020-07-07Use the group attribute instead of checking the symbol name.Gravatar Numerlor-1/+1
2020-07-07Create method to fetch and create a BeautifulSoup object from an url.Gravatar Numerlor-6/+11
Moving this part of the logic into a separate method allows us to put a cache on it, which caches the whole HTML document from the given url, removing the need to do requests to the same URL for every symbol behind it.
2020-07-06Intern `group_names`Gravatar Numerlor-1/+4
2020-06-29Add option for user to delete the not found message before it's auto deleted.Gravatar Numerlor-4/+11
2020-06-29Trigger typing in converter instead of command.Gravatar Numerlor-4/+2
The converter does a web request so triggering typing in the command itself left out a period where the bot seemed inactive.
2020-06-29Add stat for packages of fetched symbols.Gravatar Numerlor-10/+13
An additional variable is added to the DocItem named tuple to accommodate this. The `_package_name` is separated from `api_package_name` it previously overwrote and is now used for the stats and renamed symbols because the names are in a friendlier format.
2020-06-28Only update added inventory instead of all.Gravatar Numerlor-1/+1
2020-06-27Only include one newline for `p` tags in `li` elements.Gravatar Numerlor-0/+7
2020-06-27Redesign `find_all_text_until_tag` to search through all direct children.Gravatar Numerlor-27/+12
The previous approach didn't work for arbitrary tags with text.
2020-06-21Strip backticks from symbol input.Gravatar Numerlor-0/+1
This allows the user to wrap symbols in codeblocks to avoid markdown.
2020-06-21Correct return when a module symbol could not be parsed.Gravatar Numerlor-9/+8
2020-06-21Fix typehint.Gravatar Numerlor-1/+1
2020-06-21Renamed existing symbols from `NO_OVERRIDE_GROUPS` instead of replacing.Gravatar Numerlor-7/+12
Before, when a symbol from the group shared the name with a symbol outside of it the symbol was simply replaced and lost. The new implementation renames the old symbols to the group_name.symbol format before the new symbol takes their place.
2020-06-21Add symbol group name to symbol inventory entries.Gravatar Numerlor-10/+17
2020-06-21Remove unnecessary join.Gravatar Numerlor-1/+1
`find_all_text_until_tag` already returns a string so a join is not needed.
2020-06-21Also check signatures before selected symbol when collecting 3 signatures.Gravatar Numerlor-1/+5
2020-06-21Account for `NavigableString`s when gathering text.Gravatar Numerlor-3/+9
`find_next()` only goes to tags, leaving out text outside of them when parsing.
2020-06-18Make sure only class contents are included, without methods.Gravatar Numerlor-13/+42
When parsing classes, methods would sometimes get included causing bad looking markdown to be included in the description, this is solved by collecting all text *up to* the next dt tag. fixes: #990
2020-06-18Move symbol parsing into separate methods.Gravatar Numerlor-23/+43
2020-06-17Skip symbols with slashes in them.Gravatar Numerlor-0/+2
The symbols mostly point to autogenerated pages, and do not link to specific symbols on their pages and are thus unreachable with the current implementation.
2020-06-17Make doc get greedy.Gravatar Numerlor-5/+6
This allows us to find docs for symbols with spaces in them.
2020-06-17Resolve relative href urls in a html elements.Gravatar Numerlor-3/+13
Most docs will use relative urls to link across their pages, without resolving them ourselves the links remain unusable in discord's markdown and break out of codeblocks on mobile.
2020-05-30Tags: explicitly use UTF-8 to read filesGravatar MarkKoz-1/+1
Not all operating systems use UTF-8 as the default encoding. For systems that don't, reading tag files with Unicode would cause an unhandled exception. (cherry picked from commit adc75ff9bbcf8b905bd78c78f253522ae5e42fc3)
2020-05-29Reduce the number of help channel name changesGravatar Sebastiaan Zeeff-29/+3
Discord has introduced a new, strict rate limit for individual channel edits that reduces the number of allow channel name/channel topic changes to 2 per 10 minutes per channel. Unfortunately, our help channel system frequently goes over that rate limit as it edits the name and topic of a channel on all three "move" actions we have: to available, to occupied, and to dormant. In addition, our "unanswered" feature adds another channel name change on top of the move-related edits. That's why I've removed the topic/emoji changing features from the help channel system. This means we now have a generic topic that fits all three categories and no status emojis in the channel names.
2020-05-29Fix `check_for_answer` breaking on missing cacheGravatar Sebastiaan Zeeff-2/+5
The `check_for_answer` method of the HelpChannels cog relies on the channel->claimant cache being available. However, as this cache is (currently) lost during bot restarts, this method may fail with a KeyError exception. I've used `dict.get` with an `if not claimant: return` to circumvent this issue.
2020-05-29Ignore response when posting python newsGravatar Matteo Bertucci-0/+1
Sometimes a mailing list user doesn't press respond correctly to the email, and so a response is sent as a separate thread. To keep only new threads in the channel, we need to ignore those.
2020-05-28Move the `self.redis_closed` into session create.Gravatar Leon Sandøy-1/+1
2020-05-28Prevent a state where a coro could wait forever.Gravatar Leon Sandøy-2/+6
This addresses a review comment by @aeros.
2020-05-28Add custom exceptions for each error state.Gravatar Leon Sandøy-8/+21
The bot can get into trouble in three distinct ways: - It has no Bot instance - It has no namespace - It has no parent instance. These happen only if you're using it wrong. To make the test more precise, and to add a little bit more readability (RuntimeError could be anything!), we'll introduce some custom exceptions for these three states. This addresses a review comment by @aeros.
2020-05-28Make prefix consts private and more precise.Gravatar Leon Sandøy-9/+9
2020-05-28Reduce complexity on some of the typestring stuff.Gravatar Leon Sandøy-31/+9
- Refactor error messages in _to_typestring and _from_typestring to just print the prefix tuples instead of that custom error string. - Create a RedisKeyOrValue type to simplify some annotations. - Simplify partialmethod calls. - Make the signatures for _to_typestring and _from_typestring one-liners - Fix a typo in the errors.
2020-05-27Fix ATROCIOUS comment.Gravatar Leon Sandøy-3/+5
I should be shot.