#dev-contrib
1 messages · Page 11 of 1
There it is
Found it, thank you 😄
Post was marked dormant but not closed/locked: https://discord.com/channels/267624335836053506/1046715214332170310
Possibly because the initial message was deleted?
Ah, no
Because the context of that command is not within an interaction ?
As otherwise, it could be sent as an ephemeral message, no ?
Well the thing is due to the nature of the command we need to show the topic embed to everyone
can scipy or opencv be added to snekbox? it's missing a 2d convolve
Thanks. Will try to take a look some time this week. The reason you couldn't reply on GH is because my comment is a response to a comment from a previous review. If you went to that original comment you'd be able to reply.
yeah I do second scipy, the convolve is useful for examples along with some other stuff numpy is missing
the test server should have forum channels now
About time lol
I'm curious, do we ever use dev-voice?
I think we used it few times but as you can imagine, since it is real-time chat, its bit hard to coordinate and use it frequently
Thank you 😁
Suppose it could be useful for ppl that would be willing to run "sprints"
I just thought it'd be interesting to discuss dev topics concerning our projects by voice
Theres one problem with that imo and its history, since its VC, people in future wont be aware of the discussion
We did a few sessions like this though, internally though iirc
Well of course a fix would be for someone to write what is said, but might be hard finding someone unfortunatelly
Clarifying ideas os easier through voice
And some sort of a live interaction
Is*
Suppose so, in such cases any individuals can always choose to hop in VC and talk about it
I honestly just think it's somewhat''heavy'' to say : hey I'd like to talk about this in VC
I feel like thats unfortunately how VCs are
True!
Actually, after a second thought, that's debatable
But not a topic suitable for this channel
@wild prism @trim cradle
bot#2350 might interest you
gɪf gɪf gɪf gɪf gɪf gɪf gɪf
bot#2326 should be ready for review now if anyone is interested
currently pending snekbox PR for it to work, the branch https://github.com/python-discord/snekbox/tree/bytes-output can be used for testing
otherwise general suggestions and comments are welcome as well
can I open a pull request to update the version of fishhook in snekbox? I just released a major rewrite that fixed a lot of issues with it.
Sure. For package updates go ahead an open a PR. No need to ask beforehand.
made a pull request here https://github.com/python-discord/snekbox/pull/161, should I also make one here? https://github.com/python-discord/snekbox-deploy/blob/main/roles/snekbox/defaults/main.yml
I'm not familiar with what the devops teams plans are with that but I don't believe it is in use yet.
ok, thanks
Hullo! While not super-duper urgent (we can always unload the cog), I would like to get this PR reviewed and merged in as soon as possible: sir-lancebot#1155
Lance's current AoC cog will break if the env vars are updated and/or when it's past Dec 1. The PR to move it to Sir Robin is merged, so we should be good to rip this out of lance.
I am thinking to work on Issue #2331.How to get started?Is there any wiki on creating a new Command or file structure of repo?
you can check this for an example tag addition https://github.com/python-discord/bot/pull/2230/files
you just need to make a new .md file in bot/resources/tags/, it's quite simple
the bot automatically parses that to make the command itself
thanks
https://github.com/python-discord/bot/issues/2331 please assign me this issue
@hoary haven, and anyone else who's interested
For site#807, do you think we should keep on calling them help channels, or shall we adopt the new "post" naming ?
is divyanshubist your gh username? just checking
I'd change "General Help Channels" to "The Help Forum" and "How to Claim a Channel" to "How to Make a New Post" or something along those lines
and change the rest accordingly
The overall title is still "help channels" because it includes the topical channels
using the word "post" over channel or thread still sounds weird to me, but i think that's probably because i'm not used to it yet
but this sgtm
That's what I thought too.
Alright then, I'll do that
Btw zig, bot#2341 is ready for your review
@tawdry vapor uh, do you have any idea why this test is failing on ubuntu 20.04 but works on 22.04 https://github.com/python-discord/snekbox/actions/runs/3611326153/jobs/6085740492
I can't replicate this error locally
# test_integration.test_memory_limit_separate_per_process
File "/usr/local/lib/python3.11/socket.py", line 705, in readinto
return self._sock.recv_into(b)
^^^^^^^^^^^^^^^^^^^^^^^
TimeoutError: timed out
fixed itself on a second run
yes
never seen that before and dont have a clue. it is concerning that tests can intermittently fail
Doesn't seem related to your changes
I'm not sure if it's related to the fact I did a lot of pushes
did we get rate limited by github or something
we also had a previous build job fail: https://github.com/python-discord/snekbox/actions/runs/3611049427/jobs/6085262603
Error: buildx failed with: ERROR: failed to solve: error writing layer blob: Patch "https://artifactcache.actions.githubusercontent.com/Rlhqe5dcYww1CQyMjix3SqMRt195YzCuV6HB1vb8qt4x2K3u3J/_apis/artifactcache/caches/710": read tcp 172.17.0.2:56896->185.199.109.154:443: use of closed network connection
Never seen that either
But for the socket error I think that's just trying to connect to the local gunicorn server
how did y'all make #1035199133436354600 break discord?
I got 403s when trying to change the name of the thread that i created
secret behavioural change opt-in? 👀
like
i should be able to change tags after creating the thread
yet somehow i cannot
oho it might be related to the post cooldown role
in which case its a discord bug
yep, that's it
thanks, assigned!
can anyone help in pre-hook & flake8 linting?How to do that?
Sure, what's not working ?
Or, what are you having trouble with ?
Ah
Did you install the pre-commit hook in your local repo ?
Those need to run on your machine first
ok
A guide to setting up and configuring Bot.
That will show you how to install that hook locally
can you quickly explain difference between pre commit hook,flake8,poetry? what are they used for
linting also
Poetry is a tool that allows you to mange your application's dependencies, and to package it
Flake8 is a tool that runs an analysis on your code to check for styling rules
It enforces some styling rules that you, as a project owner, put in place
A pre-commit hook now, is a feature that git offers you to run certain commands/script before it executes the commit command
The point of our pre-commit hook is to run the flake8 check & a few others, to make sure that before you push, your code style abides to the those rules
So,I have to run only the flake8 check?
You only need to install the hook
& it will run everything for you
& i highly recommend you do that
So the errors you see in the build, will now exist locally
& it will tell you where & why it's happening
and thus, you'll need to fix them locally, commit & push them
ok Thanks for helping.
Sure !
I am getting this output.Is flake8 skipped because I have added a markdown file not a python file?
AFAIK, flake8 works only on .py files
There's an extension that allows it to run on markdown files
So yes, it's normal that you get that
thanks linting is passed.Now for the second part
Review requirements: main .do I have to do something or reviewers will do?
Reviewers
Comments for bot#2341 are resolved @cold island !
Might take me a bit, but hopefully I can get to it this week. Just to clarify, I commented on one, but referred to both methods that used a double underscore
That must be the cosy sunday couch effect that led me to missing it xD
Fixed !
Hey,
I'm afraid this isn't the appropriate channel to post this
This channel is for contribution discussions regarding one of our projects
@clever wraith where can i post
You can talk about it in #python-discussion I suppose
has anyone considered ruff for linting instead of flake8?
/pypi ruff
-pypi ruff
!pypi ruff
it's like, really really fast
mypyc compiled (I think mine is, anyways) black takes longer than ruff to format less files
my pre commit config can finish in under a second now if I'm just modifying a few files rather than having to wait for flake8
like, 20s used to be spent when I'd run pre commit on the whole repo
it's now around a single second, if that
We’d be losing half (like 3.5 out of 7, one is partially implemented) our plug-ins, lose access to custom or new plugins, and be locked into black style imports (not what we use)
If they expose flake8’s API they’d have full access to flake8’s plugins
!cban 1016075879207686215 troll
:incoming_envelope: :ok_hand: applied ban to @chrome quiver permanently.
🫥
you use isort itself in pre-commit so the plugin is just extra, you could get rid of it without degrading code quality
the same API likely won't be exposed as that's what makes ruff so fast but they do plan to make a plugin system
That wasn’t one of the plug-ins I counted, but it does bump us up to 3.5/6
I understand that they can’t easily introduce a python API without trading off speed
But that misses how crucial plug-ins are to making flake8 a good tool
I’d argue it wouldn’t have gained as much popularity had it not allowed people to introduce rules that fit their own codebases
originally posted this to #community-meta, but i figure it fits more here instead:
working on fork of Lancebot to do reactions for more than just October. Some keywords have strong enough emoji competitors that I'm considering a split-the-baby approach of ask random to choose:
r"\bsnowman\"as one of {⛄, ☃️}r"\bearth|planet\b"as one of {🌍, 🌎, 🌏}r"\beaster|bunny|rabbit\b"as one of {🐰, 🐇}, (but I'm leaning towards just 🐇)
Any opinions on the choices?
has anyone use codespace for contribution in bot or sir lancebot or other repo?
Maybe the snowman with the snow can be a little easter egg that's reacted like once an hour or something. That would be pretty cool.
The @stable mountain bot can't use the trashcan emoji (#python-discussion message)
Rapptz/discord.py#9116
Tl;Dr; Discord made a breaking change to their API, seemingly without any notice, causing all bots that send custom emojis to break
It's anything with custom emojis
Well the error seems to say it expects a snowflake and not a string I think
Because Discord changed the API
The issue is Discord made a breaking change without telling people 
It'll be fixed soon™️ once people update their code for API interaction
Is rolling back to the previous API version endpoints a solution
The solution is in the issue I linked above
Ig we just have to wait for the PR to be merged, a new dpy version to be released, & for us to update to it
It seems people solved this by removing the first colon
Hi! Is it possible to contribute to @dusky shore , if so, does anyone kow how to? 
!contributing
Contribute to Python Discord's Open Source Projects
Looking to contribute to Open Source Projects for the first time? Want to add a feature or fix a bug on the bots on this server? We have on-going projects that people can contribute to, even if you've never contributed to open source before!
Projects to Contribute to
• Sir Lancebot - our fun, beginner-friendly bot
• Python - our utility & moderation bot
• Site - resources, guides, and more
Where to start
- Read our contribution guide
- Chat with us in #dev-contrib if you're ready to jump in or have any questions
- Open an issue or ask to be assigned to an issue to work on
This tries to explain most of the useful stuff
if you get stuck feel free to message here
Alright, thanks!
I tried Gitpod, but it doesn't automaticly install the packages, and when I type poetry install it says: The currently activated Python version 3.8.13 is not supported by the project (3.10.*). Trying to find and use a compatible version. Using python3 (3.10.7) Installing dependencies from lock file After that it doesn't say anything else, I suppose that it might take some time to install everything since the poetry file is 2000 lines, but I don't know. Anyone know how to make it automaticlly install everything? Also I'm trying to set up a fork of @dusky shore so that I can contribute.
it usually takes a minute or two if they aren't present in poetry's cache
I don't have any experience running gitpod though, so not sure if there are more things you need for it to work in there
I need to run the bot online, since I only have access to a chromebook at the moment.
I tried using it on replit.com too, but found that even harder since it doesn't support .env or anything. Do you know any other online ways to test the bot?
I'm not aware of what the best tools to develop in browser are right now, no
CodeSpaces!!
🥺 Can I get a staff/contributor review on sir-robin#71
(If you need help getting Sir Robin set-up, especially the env vars then lmk!)
can we add a dummy . command to lance to get him to shut up about leading ellipses
.....maybe
... we were talking about this a while ago
people were really pissed about it lol
i think it would be a pretty simple change
@bot.event
async def on_message(m: discord.Message) -> None:
if len(message.content) >= 2 and message.content[0] == "." and message.content[1] != "."
or something like that
i was thinking of literally just making a command called . with pass # shut up, Lance
I think it would make most sense to fix it where the issue is, just add in a check wherever the logic for that message is
There is an issue btw https://github.com/python-discord/sir-lancebot/issues/1135
Probably just here https://github.com/python-discord/sir-lancebot/blob/main/bot/exts/core/error_handler.py#L68-L70, check not message.content.startswith(smth.prefix * 2) or w/e
bot/exts/core/error_handler.py lines 68 to 70
if isinstance(error, commands.CommandNotFound):
await self.send_command_suggestion(ctx, ctx.invoked_with)
return```
yeah, or even positively check that the first character is alpha
oh yeah probably should jus fix it right here
(╯°□°)╯︵ ┻━┻
Which privileged gateway intents do unverified versions of the pybots require? Is it just Message Content?
Depends on what the bot does. At minimum message content. I don't think we have presence on any of them, but Python does require server members intent iirc
a little teaser of the Christmas section of the fork I'm developing. It moves SpookyReact to a unified HolidayReact class currently supporting Valentine's, Easter, Earth day, Pride, Halloween, Hanukkah, and Christmas (though only Easter, Halloween, and Christmas have more than one trigger/reaction, and Easter has only 2).
(i gave @dusky shore 's fork a different name here)
Did 3.10 execution lose all its modules 
Your 3.10 eval job has completed with return code 1.
001 | Traceback (most recent call last):
002 | File "<string>", line 1, in <module>
003 | ModuleNotFoundError: No module named 'numpy'
Yes that is the case
3.10 offers functionally no difference from 3.11 and will probably be removed eventually
I've copied @dusky shore , but when I run it I get a total of 26 problems, is it anything that I should care about?
Are those IDE warnings or actual errors
Solved it, thanks.
Would I be able to, for example, create a weather command to @dusky shore ? If I used an API from like rapidapi.com? If I would be allowed, where should I put the credentials? In the .env?
So long as we can reasonably use the API, it’s fine. Just please follow the contribution guidelines (found here https://pythondiscord.com/pages/guides/pydis-guides/contributing/) and create an issue first
The .env file is local to you and not checked into the git repo. When we merge your PR, we’ll document the new environment variable on the website, and we’ll generate and set a token for @dusky shore
Assumed thats what was happening, thanks
guys when are we getting /commands for this bot to lookup certain docs and other stuff?
Uhhhh review site#709 thanks
i gotchu
thanks
which docs? we do have a docs command btw
if there's a library you think we should have available but don't, let us know and we can see about adding it
!docs
oh slash commands you're asking about
sorry, i'm not sure. i think we'll probably be adding some hybrid commands and fully slash commands in time, as the need arises
@rapid swallow thanks
check issue #2362 it has an example image attached, you may like it
@sharp crag thing site#733
Helleew,
bot#2319 and site#792 are getting a bit rusty and need some love
How to take vertical array as input??
Hey 👋
This channel is for contribution purposes to one of our open source projects
Can you please post this question using our help forum ?
Have a look at #❓|how-to-get-help for more details
@vocal wolf suggested some changes in the pull request bot#2354.Is there any way to commit all suggestions at once?
yeah in the review tab you can batch commit
which is just shoving multiple commits together
"add suggestion to batch" on any review in the Files changed tab is the correct place, mb
and what is difference between resolve conversation and commit suggestion?
Resolve conversation dismisses whatever the suggestion was, collapsing into a "resolved conversation" block.
Commit suggestion takes the diff (suggestion) and applies it to the code.
failing lint tests
https://github.com/python-discord/bot-core/pull/151 is now ready for review
Do you understand why?
No,I am checking rn
if you run poetry run task lint locally it will tell you, and auto-fix in some circumstances.
yes I will do that
I think this is the problem
Yea, you've got a trailing white space there
It's a shame that Discord doesn't allow one to retrieve their posts easily
That's because if people don't allow people to DM them, they won't get a reference of their help post from @stable mountain
Which makes retrieving these posts harder than they should
Not sure whether you're talking about the old or the new help system, but in both cases you can just use the Discord search feature and search for messages from yourself in all help channels like this: from:yourid in:#help-x
Or for the new help system:
from:yourid in:#python-help
That still isn't quite satisfactory IMO.
Because it'll include ones that I participated in, but what I'm talking about is just listing all the posts that I have created
Doesn't the search feature do just that? Or am I still misunderstanding your question?
Discord search shows all messages
however, shtlrs just wants a list of posts that a person has opened
Exactly
Actually, it looks like there is a search feature inside the forum but it only works for looking up the title and/or content of the post and not posts specifically created by a user
Yep, that's why I said it's a shame
I feel it's only natural for one to filter out their own posts
But hey, classic discord move i guess ahahhaah ¯_(ツ)_/¯
Yeah
Does anyone know why is the first image the only one who has started a formatting rebellion in the preview ?
It seems it's related to resolution but I don't quite understand.
If you look at the markdown file, they're all the same
would it work if you added a newline between 1. and the image?
I think I get it, let me try something out
I tried that, and it works.
It's just that I'm unhappy with the indentation level
ah, is the first image flushed to the left now?
do you have a branch I can play around with?
should be site#814
!remind 4d try to get site docker working with podman
Your reminder will arrive on <t:1671120070:F>!
1. Navigate to the **Python Help System** category.<br>

same for other items
That does it indeed
Thanks !
But I'm wondering why was it breaking earlier ?
And only for the first image
yep, I'll add to the page contribution guide
because markdown is a subpar format and parsers are weird
You mean you'll push those changes ?
Fair enough ahahhahah
no haha, you can do that, I meant I'll update https://www.pythondiscord.com/pages/guides/pydis-guides/how-to-contribute-a-page/ to have some troubleshooting tips
if you haven't seen that page yet, there's some neat stuff
Oh no I haven't, I'll check it out rn!
That did it perfectly, pushed 😄
Thanks again !
good job me not doing something I said I would do in april
donezo
thank
Is the bot able to change thread titles that contain `? I was trying to add a @ into a title (#1051586993928278088), but it stopped working.
Or was it just throttled?
I think discord doesn't allow certain characters in post titles. @ might be one of them
Like : isn't allowed
ratelimits?
probably
there's a 10 minute gap between the name changes
yea it's 2/3 channel edits per 10 minutes
2
probably worth mentioning that in the command output
https://github.com/python-discord/site/actions/runs/3670589286/jobs/6205230075 @vocal wolf site didnt redeploy because of this
pythondiscord.com - A Django and Bulma web application. - Merge pull request #733 from Ash-02014/main · python-discord/site@adb61c5

httpx.HTTPStatusError: Client error '403 rate limit exceeded' for url 'https://api.github.com/repos/python-discord/bot/contents/bot/resources'
Should it not be 429 lol?
@vale ibex do we still want to make bot-core#30 happen ?
I'd be VERY interested in working on this
Yea! I've updated the issue description with what we want out ofthat
feel free to self-assign
We want a base class that can be used by int-e, snekbox and latex
since they all do similar
I see
What is the similarly?
I'm asking because ionite's work changes how the snekbox output is parsed
I can't remember the original discussion, but I think it was the whole get input, parse input, post job somewhere, wait_for edits to post an updated job
Wasn't tizzy working on something like that?
not sure, if they were it's not mentioned on the issue
@clever wraith thing https://github.com/python-discord/site/pull/709
Maybe @static canyon can tell us ? (Sorry for the ping)
Errr
My thing to do with snekbox is bot-core#137
It's just slightly changing the rerun logic of it
Doesn't change internals of snekbox
C'est bon ! :B
need core dev approval
@vale ibex
Beautiful !
approved
thanks
Does it matter if we include screenshots of a concrete user in our guides on site ?
The user = me
not really
Oki, I'll include it then
Our new help forum channel guide is ready to be reviewed in site#814
@vale ibex should we go with :feature: or :bug ? I'm thinking feature
True, since it's a patch 🤦♂️
I'll go with feature
Thanks !
And we usually just put the issue or the PR's name ? Or can I describe it differently ?
You can describe it however you want, the number in the line is for the PR number so we can find that later
So just have the changelog describe the change the best way you can think of
Alright, thank you !
This is what it renders as https://bot-core.pythondiscord.com/main/changelog.html
The number linking to the PR nicely
you can run poetry run task docs to generate these docs locally
https://github.com/python-discord/bot/pull/2354#discussion_r1046231280
are you asking article link only for name mangling or for all of them @clever wraith
I was asking mostly for name mangling
Because it doesn't explain it, and people could make use of examples, or at least good references to what it really means/does
ok
Thanks @clever wraith! Pushed the update to pypi :)
Sure thing! 😄
https://github.com/python-discord/bot/pull/2354#discussion_r1046239604
this is for Ignore Values , not for store expression value .right?
@clever wraith
For both actually, what I meant to say is:
- Underscore can store values indeed, but it's not common to use it like that, it's only common to store values we want to ignore, e.g not needed inside that scope
- In the python REPL, it stores the value of the last evaluated expression/latest output from a function, as long as it initially didn't have a value, otherwise wouldn't work anymore
please check this
@vale ibex I was wondering, wouldn't it be helpful to have real E2E tests for Snekbox ? Or are the mocked ones in bot enough ?
They likely would be good yea
I have no experience with snekbox, outside of adding extra packages to our production version, though
Me neither, but I could inspire myself a bit for the tests we have in bot
But I'm wondering where would they belong, because I thought we had a preview of the deployed snekbox instance but we don't
The point of the entire thing was brought by the new API wrapper I'm working on, and I thought it would be beneficial to test it
But it would only work in a real E2E test, otherwise we'd need a mock of the client as well
!e print("yo")
The .challenge command seems to be borked...
.challenge
Your input was invalid: No katas could be found with the filters provided.
Usage:```
.challenge [language=python] [query=None]
.src challenge
The challenge command pulls a random kata (challenge) from codewars.com.
looks like it hits here with no katas foudn https://github.com/python-discord/sir-lancebot/blob/main/bot/exts/utilities/challenges.py#L123
bot/exts/utilities/challenges.py line 123
if not first_kata_div:```
my guess is the format of the website changed, since we don't use an API, and now it can't extract them
I might have time tonight to open an issue, and if it is productive a possible PR
sir-lancebot#1169
Here's your reminder: try to get site docker working with podman
[Jump back to when you created the reminder](#dev-contrib message)
Can we modify the snekbox cog so that if a program raises a name error because np or pd are missing, it prepends the code with those import statements and tries again before erroring on the user side?
Would be quite hacky, although doable, but some issues are it
- Makes it so code blocks are no longer "fully contained" so they run as-is locally (and may be confusing for those reading that don't know what pd or np are)
- Could mess up things like line numbers for errors
- Is not great if people rely on it as there has to be a failed request every time it's used
- Would be confusing to only do for specific modules, and difficult to do for all
I don't think it's that hard to write the import yourself, what's the use case?
QoL, because they're so common in data science code that they're easy to forget.
but I understand the issues you've raised
We could have a separate command that always imports common data science packages. Thoughts on that?
We could even make that the default eval command in the data science channel. That could be seen as unintuitive though
it's already unintuitive that python is the language of data science, so I don't see this as a problem.
Well I mean that it might be confusing that in one channel it auto imports and in another it doesn't
People might get used to that and then get surprised when the imports are missing elsewhere
I do like the separate command idea, but yeah I’d keep them separate to keep behavior consistent
Even with a separate command there would be line numbering issues...
Just import it all in sitecustomize.py or however that works
Set the PYTHONSTARTUP environment variable
I’m not sure if you can import things into the running script in sitecustomize, but it wouldn’t help anyway since snekbox does not import site for other reasons (and we can’t write to that directory in snekbox)
PYTHONSTARTUP makes more sense but it doesn’t apply to the -c option or running files
Which are what we have now and what we’ll have in the future respectively
It's all well until you get a traceback for the first line 👀
hey has anyone worked with gdal , rasterio and geopandas?
This is not the right channel for that, you could ask in #python-discussion or open your own help post in #1035199133436354600
what is this discord file size formatting 🥴
beautiful
are we not allowed to able to use any pytest features like pytest.mark.parametrize in our bot codebase?
seems a bit strange that we're using the unittest style while requiring and running pytest
@tawdry vapor should we consider the length of unicode characters at all for truncation? This is the printout of 85 characters with max screen-width characters:
We’ve been using unittest for a long time, and didn’t have a compelling reason to migrate
The pytest runner allowed us to make some things better, particularly adding test parallelization to make them not so slow
You can use subtests
Yes, if possible. Did you have any ideas for that already? Mine is to just use the same filter check we use on the stuff in the codeblock. I think we already have a filter for noisy characters
you mean this line?
await filter_cog.filter_snekbox_output(msg, ctx.message)
Yes.
I don't think it did anything
I'm not sure if it covers that case but least it will prevent bad words in file names
it should be applied right now anyways (since it is called after the failed files message is appended to msg)
also we don't have a filter on the actual file names before uploading, should we?
Do those file names show up anywhere
we could also only print the normalized discord file name for failed files (which is a subset of ascii)
What does that name get normalised to
Could someone reasonably make a connection that it refers to the original name?
discord file names only allow A-Z, a-z, 0-9, underscores, dashes, and dots
any other character will be removed
if the resulting name is empty discord seems to provide a UUID file name
and some characters in the file names like forward slashes and new line characters will cause a 400 error, so I added local substitution for that
I don't think displaying normalised names for failed files is a good user experience. It sounds like the normalised names could be unrecognizable compared to the original. If that was the case we may as well not had shown any names at all and just shown a count.
I feel like we can leave this as is. I think chance and impact of abuse is minimal.
We can revisit it later if it becomes a problem
yeah it seems fine
But this doesn't sound straight forward to solve
even the longest utf-8 character at 85 chars isn't that bad
what's amazing is that this was never documented and I discovered it by accident
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
Good find
and they only reference it in something else
Images can also be referenced in embeds using the attachment://filename URL. The filename for these URLs must be ASCII alphanumeric with underscores, dashes, or dots. An example payload is provided below.
in practice:
\1 -> UUID file name
\n -> 400 error
a\nb -> replaced with underscore ("a_b")
behavior is literally so random no idea who came up with this
Plz hold one moment plz
I was busy before didn't get a chance to look at it and it got lost lol
bot#2365
I know it's bad

I think that the get_channel call might not be needed
If you use the raw mention format along with channel id, it'd work, if i remember correctly
Shoot, let me have a look
I just don't know what the best way to do it would be
I kind of wanted f"[...] in <#{Channels.bot_commands}">, but I copied and pasted what I used from another cog for consistency
Why is it not async BTW?
Since it's cached ?
It's a dict lookup
ic
Internally there's a mapping of IDs to object
All the get_* objects are strictly cache lookups
The initial handshake when discord sends all of your servers and server members
So it's guaranteed to hit ?
Not always there are a few reasons why it may not
If you don't have the proper intents for instance
The initial handshake payload is massive and some people will disable it
[...] And server members
Wat
Really?
Everytime the bot starts it has to process all 350k members?
Yup
OUF.
Y?
Ask discord engineers
O?
How do I do this?
The goal is to not have big bots restart often
It's a one time heavy operation
From then on update the cache for instance when a new member joins the server
Can you restart individual shards for theoretical 100% uptime?
Can you run multiple instances on different servers?
They can service anywhere from 1500 to 2000 guilds
That's sort of the point of sharding
Horizontal scaling
fuck
!d discord.ext.commands.AutoShardedBot
class discord.ext.commands.AutoShardedBot(command_prefix, *, help_command=<default-help-command>, tree_cls=<class 'discord.app_commands.tree.CommandTree'>, description=None, intents, **options)```
This is similar to [`Bot`](https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#discord.ext.commands.Bot "discord.ext.commands.Bot") except that it is inherited from [`discord.AutoShardedClient`](https://discordpy.readthedocs.io/en/latest/api.html#discord.AutoShardedClient "discord.AutoShardedClient") instead.
async with x Asynchronously initialises the bot and automatically cleans.
New in version 2.0.
Most people don't get to

Given the nature of discord bots it takes a lot before you really need to start sharding
Ok then ignore my message
Shouldn't have invited me birdo
@sharp crag, is there a case where the get_* call would miss in our bot ? You got me curious
I dont think we use any gets anymore
We have functions for getting or fetching to avoid cache misses
Not in these cases
That goes mainly for members though
There are a few but not in our case
That's my point, if we can avoid falling in that case at first, it's even better
Can you list them/tell me where to find them ?
The primary cases are user errors...:
- Using a string instead of ints:
bot.get_channel("635950537262759947")(most discord api wrapper libraries in other languages use strings, python is a bit special) - Incorrect ID
- Bot is not in the server with channel ID
Other than that, the most prevalent technical issue: - server member intents are off by default, without this enabled both in your code and in the developer portal, your bot won't see any members so even valid IDs will return
Nonefor.get_member()
If you're careful with how you approach .get_* methods you can almost guarantee yourself a 100% hit
Sure I'd love to answer
You said, python is a bit special, why is that ? Is it really python or just dpy ?
Why wouldn't python be able to use strings for ids as well ?
It's a python thing, since we can have arbitrary length ints with exact precision
We actually had issues with this on #1020761012611325952 a while back because the python FastAPI was returning discord users as integers over JSON but our javascript frontend couldn't parse out the number because it was too big
if you're gonna send big numbers like IDs over json please please please for the love of god stringify it and don't be like our backend guys
... aren't you one of our backend guys?
They are crabs and alchemists
At least partly Glorious Rust BTW
i bet rust's u64 does well with ints
Is alchemy worth the research?
ill have to look into how serenity.rs manages it
Elixir for most stuff and recently (2 years ago?) They rewrote hot paths in rust iirc
So by using a string in python for ids, dpy will doubly stringify it, resulting in an invalid one ?
It is
I'll have to give it a try
D.py uses ints, it doesnt stringify it
Given that str cant really be compared to int it just fails the lookup
!e This example explains it pretty well:
cache = {
432643355634171905: "Robin",
393678585413500939: "Shtlrs",
431861021968302108: "Senjan21",
285152779465654272: "🐕",
}
print(cache.get("432643355634171905"))
@sharp crag :white_check_mark: Your 3.11 eval job has completed with return code 0.
None
I was looking in another direction
Passing in string vs int to a fetch_* method shouldn't be an issue
I was thinking more at HTTP level, don't know why i went there
Do keep in mind that I havent brewed any elixirs yet so ymmv
But those who did say its good for apis and whatnot 
But I understood once Senjan explained it, and confirmed it with your example
Thank you 🙇♂️
There's a distinction to be made:
fetch_*- always HTTPget_*- Always cache
Understood !
ChrisLovering published GHSA-j8c3-8x46-8pp6 on Nov 5, 2021
It's already been open for a year? 
Do CVEs ever get closed?
Is anyone aware of some changes to HTTPSConnection in py312? While trying to test ansible with it I seen an unexpected exception HTTPSConnection.__init__() got an unexpected keyword argument 'cert_file'
!positional-keyword
Positional vs. Keyword arguments
Functions can take two different kinds of arguments. A positional argument is just the object itself. A keyword argument is a name assigned to an object.
Example
>>> print('Hello', 'world!', sep=', ')
Hello, world!
The first two strings 'Hello' and world!' are positional arguments.
The sep=', ' is a keyword argument.
Note
A keyword argument can be passed positionally in some cases.
def sum(a, b=1):
return a + b
sum(1, b=5)
sum(1, 5) # same as above
Somtimes this is forced, in the case of the pow() function.
The reverse is also true:
>>> def foo(a, b):
... print(a, b)
...
>>> foo(a=1, b=2)
1 2
>>> foo(b=1, a=2)
2 1
More info
• Keyword only arguments
• Positional only arguments
• !tags param-arg (Parameters vs. Arguments)
Somtimes this is forced, in the case of the
pow()function.
Ignoring the grammatical errors, I'm not sure what this is trying to say / whatpow()has to do with this tag? There's no kwarg-only or positional-only parts topow().
Based on the link it looks like it's referencing that pre 3.8 the the z param (renamed mod in 3.8) was positional-only, but I think it should be made clearer that this is an old thing that's no longer the case (or we change it to a new example where it is positional only)
hey what's that kind of command called where you right click a message and you can invoke a command thru the UI?
the lance .bookmark feature might work well for that
@sharp crag and I made an issue for that
There's also an issue for !eval, so you can run it on other people's codeblocks
Context menu is the Google-fu you're looking for
No I swear
You did
I literally made the code for this but I can't find it
It's stalled
Link pls
Blocked by... something
checking
Thank
@hoary haven we can go ahead with it then?
Don't know if we had explicit permission last time
Looks like you only worked on !eval - bot#2269

sir-lancebot#1089
cc: @sharp crag - It's already approved BTW
Oh ok
I was thinking of eval
Don't think it's really needed
Eval I mean
It's good as is
and does the context menu command have proper support on both android and iOS?
Ye
but yeah the bm issue is approved, so if you like feel free to assign yourself
You got this birdo
I don't even know how
I remember you talking about it
Isn't it like just a decorator or something?
Issue
You can't have context menus in cogs
But I figured it out when doing the eval
So you know how discordpy does weird shit with the function decorators
Like using inspect to figure out types and crap
It breaks when inside a class with self as first parameter
Seems like a simple PR
See this for more detail
See Danny's description as to why
Pretty simple workaround
@clever wraith
re: https://github.com/python-discord/sir-lancebot/issues/1089#issuecomment-1362161417
See here
We had discussed all this several months ago, but it was blocked by
... stuff, and then just stalled.
I think it's all unblocked now.
I'll let you and @sharp crag discuss the implementation
I saw the discussion indeed, and it seemed like there was only one PR blocking it, but like you said it's all settled now.
@sharp crag I think it's ready to be tackled now, isn't it?
@outer oasis @clever wraith I think we may have to debate ephemeral message a bit more: https://github.com/python-discord/sir-lancebot/issues/1089#issuecomment-1362185320
I'm OK with whichever (it's a really simple change to make it ephemeral vs not) but just proposing my 2c on it
anyone know why we aren't using ansi formatting for eval?
I know it doesn't work on mobile but surely working on desktop is still better than plain text for either platform?
What would the difference be?
It would look exactly the same unless users spent the time to add ANSI control characters to what they print out, wouldn't it?
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
File <ipython-input-6-200bde36fdd5>:2
1 x = 5
----> 2 y = (x // 0).real
ZeroDivisionError: integer division or modulo by zero
[0;31m---------------------------------------------------------------------------[0m
[0;31mZeroDivisionError[0m Traceback (most recent call last)
File [0;32m<ipython-input-6-200bde36fdd5>:2[0m
[1;32m 1[0m x [38;5;241m=[39m [38;5;241m5[39m
[0;32m----> 2[0m y [38;5;241m=[39m ([43mx[49m[43m [49m[38;5;241;43m/[39;49m[38;5;241;43m/[39;49m[43m [49m[38;5;241;43m0[39;49m)[38;5;241m.[39mreal
[0;31mZeroDivisionError[0m: integer division or modulo by zero
Not sure many users would do that
Though if it doesn't break anything for those who don't, then there's no reason not to
Hello
Am on mobile
Thanks
😔
if we implement ipython eval it has colored tracebacks by default
Wait how
I must admit, that looks way better
Nice, nice, nice
otherwise you can do something like rich.tracebacks.install()
I suggest you open an issue for it, and we'll see what everyone has to say about it.
It's a pretty nice addition TBH, too bad it doesn't work on mobile. (Anyone care to explain why ?)
because Discord
When it first came out, for mobile, it would display the ansi code itself. So it would be a giant unreadable block
It looked like this, so we decided against using it
If we were to do it I think it should be using something like pygments to format the output rather than modifying the actual traceback text. I'd rather we keep the traceback matching the one Python would give you.
yeah I'm just talking about a theoretical support for ipython, since their tracebacks are colored by default
also it might be neat for people to print colored text via ansi and for it to be actually colored
I guess it wouldn't hurt to add the formatting to the output
It wouldn't make any changes to anything other than ansi escape codes right?
I remember we used to add python formatting to eval output
@fossil veldt :white_check_mark: Your 3.11 eval job has completed with return code 0.
[0;31mhello
@sharp crag, sir-lancebot#1176 needs you
However, i've added a comment to the linked issue, and i think we should reflect upon it
The commits are also "atomic", so you can view them one by one
@outer oasis you as well, since you originally wanted to make this happen
(I do agree with the idea, but I just made the issue for Robin - FYI, I don't actually know anything about Discord bots so my review isn't worth much)
Also the tests failed
Oh no wait that's just a transient error
Will look at it when I'm back home, thanks!
Just a heads up, it looks like when a mod opens up a dormant help post that it doesn't automatically close from inactivity anymore
https://discord.com/channels/267624335836053506/1055561836315029596
(i closed it just about now after UC let us know)
Worth a code fix or just let mods know not to type in dormant posts?
i think we should fix it
@outer oasis @clever wraith I have come up with an idea in the original issue sir-lancebot#1089
Please leave your thoughts & ideas
Like you mentioned it would be a shame to lose that functionality
Hey @timber pelican!
It looks like you tried to attach a Python file - please use a code-pasting service such as https://paste.pythondiscord.com
We already do, it doesn't happen for helpers
can you also do it for other users?
for example, it user have sent >100 messages, or is on this server for >1 month, or something else
python files cannot be malicious if you are not running them
Posting a python file makes it trivial for a person to accidentally execute it. Also, we want to encourage people to send minimum viable examples of code they're having trouble with, not just dump their whole thing
how is it trivial???
- download
- open console
- run
python filename.py
you can just double click it to run
ok
regardless, I'd suggest searching in #community-meta for the many times we have previously discussed this
if you still feel strongly after doing so, feel free to bringing it up in there again
@clever wraith regarding the latest developments in sir-lancebot#1089
I don't think GitHub is the right place but if you need help with the modal stuff please do let me know here, as I believe this could get a bit more complex :P
I will certainly ask for help if I will be needing it, and you'll be the one to ask this from 😄
I'll have a crack at it tomorrow probably, I'll let you know.
Thanks for offering to help!
i think chris's idea feels a lot more natural, to me
fair enough
FWIW discord modals allow optional fields
class MyModal(discord.ui.Modal, title="Title"):
title = discord.ui.TextInput(
label="Title",
required=False,
)
Pls pls pls review https://github.com/python-discord/sir-robin/pull/74
Am I understanding right that this is going to request data every 10 minutes?
if so then I think we should make it like once 30 minutes to an hour
It's going to fetch from the cache every 10 minutes, but that does mean there will be requests every 30 min to the leaderboard
ah ok
Happy to increase that to whatever time you think is appropriate. I'm happy up to 12 hours tbh
It's whatever then, but what the cache means is that the task will run two extra times for no reason, since it's not going to use any new data
I'll get it merged now and before the new year change it to a higher threshold and create a stop/start thing for it
sure
Would appreciate some reviews on this PR https://github.com/python-discord/bot-core/pull/171 mostly to see if people think this is a good approach.
we'll be using guild commands, not global commands?
this PR would cover the case where we want to use either
oh
I don’t think it’s a good approach because it makes startups rather expensive
During dev we probably should not sync unless the developer requests it
Its async after all cogs are loaded
So shouldn't delay anything
I’m talking expensive in terms of rate limits and whatnot
Could easily add a kwarg to the list extensions function to allow disabling the app command load
It's the same api route
I don’t understand
One uses a post, the other latch and delete
I implemented it by hand a while back, you’d still make a request on startup to get registered commands and check their args
So startup would cost that request + the cost of registering the commands + the cost of updating (which is free?)
Assuming d.py does do something like that instead of creating everything
Ahh right I think the sync func handles that
I looked into the impl a while ago and didn't get worried by rate limits at leaf
Alright
Don't remember the exact logic
This is probably good enough
We can choose per bot whether to sync based on dev flag
btw if anyone would like to have a look over bot#2326
you can get a free cookie after leaving any PR review by going to
https://t.ionite.io/freecookies

I fell for that, shoot.
lies
I've not had access to a pc so I've not been able to properly review, sorry.
👍 np, we'll need another review anyways so
we technically can merge the snekbox one before bot since it's compatible but it won't really do anything feature wise
the snekbox pr does need to be merged before the bot pr deploys though, since it assumes the new keys exist
what keys need adding?
I can add them now
or do you not mean keys in the sense of env vars?
no the additional dict entries / keys in the snekbox api response
ah alright
like files
sir-lancebot#1178 thanks
I ended up making a modal for sir-lancebot#1089
So please feel free to review it whenever you want @sharp crag @vale ibex @hoary haven
The PR is sir-lancebot#1176
Also, I see that we still use botcore in Sir Lancebot, is there a reason we didn't bump it to the new version ?
What version is it on?
v8
Ah bot core is on 9 now
Yep
Can't remember the breaking change
How would you usually test this ?
Because I've bumped the version locally, and the imports are all the same.
I guess I'd need to verify the signatures and see if there are any new changed params?
Yes, that I'm aware of
But I thought there might be something else
Well, nice
Shall we bump this then ?
Agreed
Alright, I'll bump it to the latest one and send it your way
There's no rush anyway
Here it is @vale ibex, have a look at it whenever you can
sir-lancebot#1180
Might as well go up to 9.3.1
That needs python 3.11
So i thought that maybe we'd do that separately? Idk
Bot core supports 3.10 and 3.11
Dropping 3.10 would be a breaking change
What's the error you get installing 9.3.1?
Tbh, it just couldn't find the 9.3.1, so i directly assumed that it was related to the python version.
But maybe it isn't?
Lol nope
Woops
Will do when I get home
Ahahahaha
Bug with .quiz stop found here: #sir-lancebot-playground message
(It doesn't stop, and multiple iterations of quiz run concurrently, which isn't expected behavior.)
Ill just merge 9.4.0 when I get in and push both
Alright!
Lol that looks fun
Did you want to look into the issue yourself, or were you just reporting it?
9.3.1 should be available now
just noticed the 9.4.0 PR isn't approved yet, so we won't use that one just yet
Nice, I'll update the one in the PR
I tried testing the beta one, but I noticed sthg strange.
Didn't verify tho, I'll have another look later
bot#2341 needs one more staff/contributor review
Would you be interested in looking at bot#2319 @cold island?
It's about to die alone in there :p
It should be then Merged with site#792
Just reporting
Super slammed lately 😅
No problem at all, just didn't want to let some else work on it if you wanted to yourself

Any core devs around who want to get us rid of sir-lancebot#1180 ? 😄
@clever wraith fix conflicts pls https://github.com/python-discord/bot/pull/2319
thanks
bruh we hit ratelimit on most recent commit to site rip
done
Thank you!
Will do tomorrow morning!
Done !
Tests are running, but the conflict was just due to the breaking change when it comes to renaming botcore to pydis_core
Thanks!
Sure thing !
morning sure arrives quickly
lol nice
Shall we remove the do not merge tag for site#792
and merge it along with bot#2319 ?
yep
I'll leave that to you chief !
We wait for deployment before we deploy bot
yep
Such a relief to see the number of my pending PRs go down ahahahha
Let me know if you're up for another review :p
:D
ya after this I'll take a look at PRs
this winter break has given me too much time lol
ahahahha
I haven't written a PR to bot, site, or sir lance in a while
I should do one
it's just been all reviews
ok site is deployed
merging bot
alright
bot merged
As it should !
@clever wraith why is the do not merge label here? https://github.com/python-discord/sir-lancebot/pull/1176
oh nevermind
it relies on another pr
any thoughts on bot#2368 bot#2369
not super urgent since still waiting on file pr
2368 would be the simpler of the two, adding a way to send arbitrary arguments to snekbox, like
!e -m mypy
x = 5
reveal_type(x)
!e -m pytest
def test():
assert True
@timid sentinel what you said is true, alot of the work went away 😒
That's strange, i only had one conflict related to the botcore import, so I never doubted such thing would happen.
What's best to do here?
Revert, or fix that in a new PR?
I don't think anything that was previously working is now broken so probably no need to revert, I think a new PR would be easiest
I'm not sure either. No worries anyway, it's easy to make mistakes with merges, and it's nothing that can't be fixed.
Sure, I just want to understand whether this is something I did, or that's just git.
Even though a merge is a merge, that's quite straightforward.
And usually git is smart enough to include the new changes, otherwise what's the use of it :p

hey @sharp crag how are you doing with bot#2316
I think it's fine other than the flake8 error about the unused import
site#824
I cant see why the deploy preview workflow failed because the logs don't load for me
re-running it might fix it
@timid sentinel @vocal wolf
The mistake that happened was because of something I did.
bot#2373 fixes that
I'm used to resolving conflicts with visual studio at work, and I never resolved ones using Pycharm.
So my expectations were wrong when it comes to how to use this feature in Pycharm, but lesson is learned now
Ok, this happened automatically, and I'm confused
I reopened the issue last night since the merge issue happened, but the old site PR somehow closed it again ??
I approve
Thanks !
However, I still don't get why the issue was automatically closed through site's PR
@vale ibex Hello good sir 🫡
We need your input in bot-core#30
And we also need your review in bot#2323
Thank you !
left a comment on the issue, there are still a few open comments on that PR, i'll take a look when they're actioned/resolved
Which comments exactly ? I did action them and linked the relevant commits
I didn't mark them as resolved to make sure that we don't fall in the same case that happened before, unless you want me to resolve them
...
It appears that I'm not a close friend of GitHub just yet
I did now, sorry for that
Hah no worries, I'll take a look
https://github.com/python-discord/bot/commit/154c51da840631341e4a8660f1c79ebd2c335512 where is this commit?
you linked it in he PR review, but that commit isn't part of the PR
Ah, it must have been a merge commit or a rebase or something
the change is there, just under a different commit hash
Indeed, that's what I was looking into
Because I also can't find that exact commit
6. Do not post unapproved advertising.
9. Do not offer or ask for paid work of any kind.
AH right, kind of forgot about that.
Will get back to that soon :P
!remind 15h see what needs doing with 2316
Your reminder will arrive on <t:1672785111:F>!
Here's your reminder: see what needs doing with 2316
[Jump back to when you created the reminder](#dev-contrib message)
crazy
!remind 132y discord snowflake overflows 42 bits
Your reminder will arrive on <t:5838344825:F>!
I think bot#2124 can be closed now that we have the new system, right?
Just wondering -- why was #763406158522220544 unlocked? Guessing there was a meeting last night or something?
It shows the unlocked symbol but when I click it it doesn't join? 
Interestingly, the channel mention in the message I'm replying to shows a locked symbol
that's not an unlocked symbol
that's the lock symbol, which indicates a non-public channel
I'm confused. If it's non-public, why am I seeing it? I remember it used to be locked so only contributors/coredevs could join but the general public could see the people in the channel
Or maybe Discord changed the symbol?
Cuz that's not what it used to look like for me but ok
voice channels are shown as locked if the everyone role doesn't have access to view/connect
Even if you have access to the channel, it shows the locked symbol
It's just to indicate that the everyone role doesn't have access to it
Ohhh ok that makes more sense. Thanks!
Hey @vale ibex
Your comments in bot#2323 have been addressed, please have a look when you get the chance.
Also, I was trying to test bot-core#171, but when I change the core version in sir-lancebot to the beta release, and step into the code that loads the extensions, I don't see the same code that I see in your PR, which is quite strange.
I'll try to have another go at it
I really don't understand what I'm missing here
Here's the diff from Chris' PR (1st image)
When I run poetry show, I get this (2nd image)
And when I look at the installed package, I only see part of it (3rd image)
Does anyone have an idea on what this might be happening ? I can only come up with theories, but I also want to understand
could you try poetry install --sync --no-cache
I think I pushed the most recent changes with the same version number to pypi, so the old version might be cached
One of the doubts was the cache, but then, you see that there's only a part of it that's missing
Which made me wonder why it'd done it like that
...... You can't do that?
You'll just get the "file already exists" error?
That didn't do it
Did you push it to pypi ?
yea
That happens to me for the first few minutes after I release my packages
You might try clearing Poetry's cache
That did it !
Thanks folks
would be good to get a helper/contrib review on https://github.com/python-discord/bot/pull/2375
Thanks!
Since we're doing reviews
@sharp crag sir-lacebot#1176 is now ready since Chris' PR that syncs commands has been merged.
and bot#2341 has been sitting alone for a while, it needs one more review !
sir-lancebot#1176 *
.remind 1h Review
!remind 1h review
Your reminder will arrive on <t:1673643623:F>!
I appreciate you 🙂
😊
Here's your reminder: review
[Jump back to when you created the reminder](#dev-contrib message)
How can I contribute to python bot?
!contribute
Contribute to Python Discord's Open Source Projects
Looking to contribute to Open Source Projects for the first time? Want to add a feature or fix a bug on the bots on this server? We have on-going projects that people can contribute to, even if you've never contributed to open source before!
Projects to Contribute to
• Sir Lancebot - our fun, beginner-friendly bot
• Python - our utility & moderation bot
• Site - resources, guides, and more
Where to start
- Read our contribution guide
- Chat with us in #dev-contrib if you're ready to jump in or have any questions
- Open an issue or ask to be assigned to an issue to work on
Specifically for bot, you can ask to be assigned to one of these issues if you fancy developing the solution: https://github.com/python-discord/bot/issues?q=is%3Aissue+is%3Aopen+label%3A"status%3A+approved"+no%3Aassignee
@static canyon doesnt look like there are any issues
it says 9 are open and 9 are closed
There's 9 there. If you're not interested in any of them that's a different matter
ohhh
then what did it mean by 9 are closed
There's 9 that are open, and 9 that are closed
Closed meaning it's already been implemented (or was rejected)
So you can choose one of the open ones
i just implemented that into my bot
But make sure to get assigned etc. before actually working on it -- otherwise you might end up working on stuff for nothing
oh
wait how do u get assigned
Just send a message on the issue saying you'd like to implement it & wait for a response (may take a few days, depending on how busy core devs are)
Yeah, that's good. Just gotta wait to be formally assigned
In the mean time you can download the project etc.
You should also install pre-commit hooks (poetry install pre-commit)
what are those?
Runs the changes against some linting stuff so you don't commit stuff that will fail the build pipeline
E.g. unused variables etc. will be flagged
@midnight jasper ^
ah i see that is interesting


