#dev-contrib

1 messages ยท Page 124 of 1

vale ibex
#

it doesn't make a new channel object right?

vale ibex
#

The issue is this call ```py
# We use d.py's method to ensure our request is processed by d.py's rate limit manager
await bot.instance.http.bulk_channel_update(category.guild.id, payload)

#

doesn't update the channel in cache with the changes

static canyon
#

Can you not do channel.edit(position=x) instead? (which would return the new channel object)

vale ibex
#

I think we did before

#

and this change was due to issues with that

#

from the doc string ```
To ensure "stable sorting", we use the bulk_channel_update endpoint and provide the current
positions of the other channels in the category as-is. This should make sure that the channel
really ends up at the bottom of the category.

#

I'm guessing that has a story behind it

static canyon
#

Presumably some sort of bug with dpy

vale ibex
#
new_raw_channel = await bot.instance.http.bulk_channel_update(category.guild.id, payload)
channel._update(channel.guild, new_raw_channel)
#

seems dirty

viscid coral
#

Why not do channel.category again?

static canyon
viscid coral
#

Why isn't it updated?

static canyon
#

Because we don't update it ๐Ÿคท

viscid coral
#

Doesn't dpy already does that?

vale ibex
#

we call the http method of d.py directly

#

skipping the cache update

static canyon
#

Gimme few minutes, gonna try look for something

brisk brook
#

What are you talking about?

#

The .move method?

vale ibex
#

It's probably just easier to do the same as what we have for available_category

#

for the dormant category

vale ibex
#

which calls the http build edit endpoint directly

#

which skips updating the channel in cache

#

which led to my review comment on the pr in #dev-log

static canyon
#

Doesn't changing the category automatically move it to the bottom?

viscid coral
#

Pretty sure it does

#

So just channel.edit(category=CategoryChannel) no?

#

I am not really good in dpy stuff honestly

static canyon
brazen charm
#

the whole category moving was a mess so I don't think it's using that method for nothing

static canyon
#

I personally don't see the issue with await channel.edit(category=dormant_category)

#

But then at that point we're getting the dormant_category object which kinda defeats the purpose of doing that in the first place

viscid coral
#

Okay there is a problem

#

I tested it in my bot and it moved it to the top of the category

static canyon
#

welp there goes that idea

#

What happens if you do position=-1 out of interest? @viscid coral

viscid coral
#

It says it can't be under 0

#

I am trying somehting with len(category.channels)

static canyon
#

Tbh this defeats the entire purpose

viscid coral
#

But don't know if it's possible

static canyon
#

The purpose of doing this was to not have to get the category object

viscid coral
#

Yeah

static canyon
#

I can just try_get_channel(constants.Categories.help_dormant) or whatever it is and do .name

vale ibex
#

That's a beautiful commit

short snow
#

very beautiful

static canyon
#

Thanks Chrisjl ๐Ÿ‘

brazen charm
#

pass in --author="whatever", what do you need it for?

#

amend it with the flag set then, although I'm not sure what you mean with signing in as the author is just a normal field of the commit

static canyon
#

bot#1736 doesn't seem to have closed even though bot#1738 was merged

static canyon
#

I suppose I should've done "Closes" or something rather than "Solves"

vale ibex
#

yea, only these words work close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved

static canyon
#

Right, makes sense. Thanks

gritty wind
#

Fixed

static canyon
vale ibex
#

the line break is annoying, but oh well

static canyon
vale ibex
#

yea, I guess its just the emoji being a part of it now makes it look off to me

#

since before the text was bold, so it seems part of the same thing

static canyon
#

I'm not following

#

It's still bold

#

Or do you mean the emoji isn't bold?

vale ibex
#

Since the emoji barely looks any different when it's bold or not, it doesn't look connected to the line below at a glance

#

whereas before you could tell the two parts of the category name were the same thing, since they were bold

#

I don't think it's a huge issue though

static canyon
#

Right, yeah

#

There's not much we can do about that other than moving the entire name onto the next line, but then you'd have a weird gap

vale ibex
#

I guess we could replace the spaces with non break space chars

#

in the category name

#

!charinfo

stable mountainBOT
#
Missing required argument

characters

#
Command Help

!charinfo <characters>
Shows you information on up to 50 unicode characters.

static canyon
#

Non break space chars? So forces it to not change line?

vale ibex
#

!charinfo non-breaking space

stable mountainBOT
static canyon
#

lol

vale ibex
#

oh, the discord editor changes it

#

in client

static canyon
#

!charinfo

stable mountainBOT
#
Missing required argument

characters

#
Command Help

!charinfo <characters>
Shows you information on up to 50 unicode characters.

static canyon
#

yeah

vale ibex
#

\u00a0

static canyon
#

If discord changes it would it even make a difference?

vale ibex
#

i think it's a client side change in the text editor

#

I'll check with my bot

static canyon
#

๐Ÿ‘

#

If it does make a difference then I can PR that

vale ibex
#

oh

#

there aren't spaces

#

it uses a \uff5c : FULLWIDTH VERTICAL LINE - ๏ฝœ

#

which i guess is a line breaking char

stable mountainBOT
#

You are not allowed to use that command here. Please use the #bot-commands channel instead.

static canyon
#

Also for bot#1739 do we just want like ```py
content = reminder['content']
if not content.endswith(("?", "!", ".")):
content += "."

send content

short snow
#

don't punctuate it imo

#

let it be what the user had kept originally

static canyon
#

I mean at the moment we take the stance of punctuating it for them

#

Is that something we want to change?

#

If so we can just get rid of the "." in the string

cold island
#

I'd rather just not add punctuation

dim pelican
#

Silly question, how would one create a new branch? For example I recently wrote the Real Python Issue and PR, but I could not figure out how to create a branch from Sir-Lancebot (I made one on my local forked repo but is it possible to do the same for the main?)

patent pivot
#

You don't make a branch on our copy of the repo, you PR from your repo to ours

dim pelican
#

Sweet, so I followed the workflow I was supposed to ๐Ÿ‘

patent pivot
#

Branches get made on our repos when a staff member contribute, for regular contributors your changes come from the fork

#

yep

#

you can make a branch on your repo and PR to ours or you can PR directly from your main to our main

dim pelican
#

Thanks joe!

static canyon
cold island
static canyon
#

If there's no strong argument against I'll go for it

green oriole
#

I'd just remove automatic punctuation

static canyon
#

Yeah

#

I'll go ahead and do that ๐Ÿ‘

green oriole
#

Sounds good, thank you

static canyon
#

Done, bot#1740

dusky shoreBOT
static canyon
#

If someone has time can they confirm/deny my comment I made on bot#1681? I think it's just a case of refactoring some old code that's redundant now but want to make sure before I change stuff

green oriole
#

@static canyon about the discord.User converter won't fail, we are talking even if the user isn't in the guild, right?

static canyon
#

Even if the user isn't in the server, it'll work (as of v1.6)

#

Which tbf makes sense since discord.User isn't guild-dependant

#

As long as it's a valid user id, it'll always fetch the user

green oriole
#

Cool, cool

#

Yeah, in that case it sounds good ๐Ÿ‘

static canyon
#

Alright ๐Ÿ‘

#

I'll start work on this

#

@green oriole do we want to keep redefining a Union for Union[discord.Member, discord.User] each time or use a variable from bot.converters?

green oriole
#

Hmmmm

static canyon
#

Currently we're doing a mixture of both so thought I'd ask

green oriole
#

Probably a constant

static canyon
#

Alright

#

Something like DiscordAccount = Union[discord.Member, discord.User]?

fervent sage
#

if a user is fine for a function why do we even need member?

green oriole
#

Yeah, sounds good

static canyon
fervent sage
#

in that case it would be logical to only use member, since user wouldnt have a guild

static canyon
#

But you might still want to run even if they aren't in the guild

#

I'll look into it and see

fervent sage
#

but if you have Member|User surely User will always suffice since its the lowerst common thing

static canyon
#

It probably is redundant

green oriole
#

We gate some features behind a member isintance check I think

static canyon
#

This is gonna be painful to see if it's redundant or not because each file calls the Union something different lol

#

In fact, the only times .guild are joined where it's on a Member is on on_member_join so it should be fine

#

Since that's the only think a Member has that a User doesn't

#

Or I guess joined_at and nick / display_name

gritty wind
#

What about performing guild operations such as bans and role applying

static canyon
#

Okay I found a case where it might be an issue

#
async def create_user_embed(self, ctx: Context, user: FetchedMember) -> Embed:
        """Creates an embed containing information on the `user`."""
        on_server = bool(ctx.guild.get_member(user.id))
        ...
        if on_server and user.nick:
            name = f"{user.nick} ({name})"

        ...

        if on_server:
            joined = discord_timestamp(user.joined_at, TimestampFormats.RELATIVE)
            ...
        ...```here different things are done depending on whether it's a Member or User
gritty wind
#

Cache a concern?

static canyon
#

So this is an example where we need user: Union[discord.Member, discord.User] @fervent sage

static canyon
gritty wind
#

Can we end up in a situation where we donโ€™t get a member object for someone who is actually on server

static canyon
#

No

#

The MemberConverter will fetch_member, which always get the Member, even if not in cache

gritty wind
#

I also feel like Iโ€™m missing context here, why is this refractor happening?

static canyon
viscid coral
#

bot#1681 I think?

stable mountainBOT
#

bot/converters.py lines 483 to 492

class FetchedUser(UserConverter):
    """
    Converts to a `โ€‹discord.User`โ€‹ or, if it fails, a `โ€‹discord.Object`โ€‹.

    Unlike the default `โ€‹UserConverter`โ€‹, which only does lookups via the global user cache, this
    converter attempts to fetch the user via an API call to Discord when the using the cache is
    unsuccessful.

    If the fetch also fails and the error doesn't imply the user doesn't exist, then a
    `โ€‹discord.Object`โ€‹ is returned via the `โ€‹user_proxy`โ€‹ converter.```
static canyon
#

That fetches from API but UserConverter will automatically do it

viscid coral
#

Oh yeah

static canyon
#

Can I please get reviews on bot#1740 by the way? It's literally just removing a "." that we decided we don't want

dusky shoreBOT
viscid coral
#

I'll do it now for bot#1740

#

Sad green check mark, without the green lmfao

static canyon
#

Probably the hardest review for you yet :p

#

Am I able to change query: t.Union[UserMention, Snowflake, str]) to query: FetchedMember here? @green oriole

green oriole
#

.... Excellent question

static canyon
#

Ah wait no

green oriole
#

We still want string search

static canyon
#

Yeah

#

So t.Union[FetchedMember, str] I guess

green oriole
#

So FetchedMember | str

#

Yup

viscid coral
green oriole
#

What should I be looking at?

viscid coral
#

There is no . at the end it's good lol

green oriole
#

Oh nice

molten perch
#

Btw. Instead of linking to the original message where the reminder was invoked, can't we just reply to the original message? ๐Ÿ™‚

viscid coral
#

We do have the message jump url, and to get the message object would mean we will have to make an API call

#

I feel like I am wrong

green oriole
#

That sounds doable. I feel like a partial message is enough for replies, isn't it?

#

One api call is nothing either way

#

!source remind

stable mountainBOT
#
Command: remind

Commands for managing your reminders.

Source Code
green oriole
#

Yeah we guarantee to be in the same channel

#

Do you wanna open an issue for this @molten perch?

viscid coral
#

!d discord.TextChannel.get_partial_message right?

stable mountainBOT
#

get_partial_message(message_id)```
Creates a [`PartialMessage`](https://discordpy.readthedocs.io/en/stable/api.html#discord.PartialMessage "discord.PartialMessage") from the message ID.

This is useful if you want to work with a message and only have its ID without doing an unnecessary API call.

New in version 1.6.
molten perch
viscid coral
#

Why not a PR with the solution right away?

molten perch
#

I feel like that's not the convention ๐Ÿ˜„

green oriole
viscid coral
#

Oh ok

#

There is ont problem tho

#

If you do discord.TextChannel.get_partial_message(1), it'll really create a PartialMessage, and if you try to reference it, it'll error

green oriole
#

Yes, we need the right try/except in case the message has been deleted

molten perch
#

So here

        reminder = await self.bot.api_client.post(
            'bot/reminders',
            json={
                'author': ctx.author.id,
                'channel_id': ctx.message.channel.id,
                'jump_url': ctx.message.jump_url,
                'content': content,
                'expiration': expiration.isoformat(),
                'mentions': mention_ids,
            }
        )```
Instead of sending the jump_url, send the message_id? I feel like that should work, and the channel ID is already there.
viscid coral
#

Get the channel using Bot.get_channel, and than get_partial_message

green oriole
#

Yeah, I guess we can change that but we need to update the site toooooo.. and I'm not sure if we should

#

I'd have to ask Sebastiaan but he is on vacations for now

#

You can get a partial channel too iirc

viscid coral
green oriole
#

Let's put that on an halt until we know if we can modify the site schema to be a message ID instead. Or we continue to use the jump url but that sounds a bit silly.

molten perch
#

I guess.. a message ID can qualify as a "jump_url" I agree.

#

But I'll open the issue anyways, so that I won't forget it.

viscid coral
molten perch
#

bot#1741
Here it is.

green oriole
#

!remind 5d Ask Sebastiaan if he is back from vacations

stable mountainBOT
#
Okay.

Your reminder will arrive <t:1629131778:R>!

static canyon
#

@green oriole FetchedMember = Union[discord.Member, discord.User] do you think this is a good enough converter name? I'm wondering since it's not strictly a Member that it's fetching. Thought maybe like DiscordAccount of something but that seemed weird. NIR suggested BaseUser earlier which may be good

viscid coral
#

I suggested BaseUser because it's the parent class( I think this is what it's called) of User and Member

green oriole
#

If it was just me I'd call it MemberOrUser haha

static canyon
#

lol

viscid coral
#
class Member(BaseUser):```
That means the `Member` parent class is `BaseUser` right?
static canyon
#

Yeah

#

Parent/base class

viscid coral
#

Yeah ok thanks

#

So that is why I suggested it

static canyon
viscid coral
#

Ohh ok

static canyon
#

So in dpy it's actually Member(User) and then User(BaseUser) I believe

viscid coral
#

Yeah I just checked the docs

#

The source*

static canyon
#

I mean I'm surprisingly tempted by MemberOrUser lol

viscid coral
#

It subclasses Messageable and _UserTag

viscid coral
static canyon
#

Maybe wait for someone else's feedback

celest charm
#

@static canyon If Member is a subclass of User, then Union[Member, User] is the same as User

#

right?

celest charm
#

wait, there are two different User classes?

static canyon
#

What you're thinking of would be Union[User, Member]

#

A Member will match Member, but User won't

#

Member will match User
User will NOT match Member

celest charm
#

Union[User, Member] is the same as Union[User, Member]

#

wait... I'm misunderstanding a bit

static canyon
#

It's like doing Union[float, int]

celest charm
#

I didn't realize you were talking about converters, sorry

static canyon
#

All floats are integers, but not all integers are floats

#

So it works

green oriole
#

Yeah, that's a d.py thing

#

For typing User is enough

celest charm
#

yeah I'm already used to d.py being weird

static canyon
#

Oh right

#

I learnt typehints through dpy so didn't realise that

viscid coral
#

Lol everyone here is a Moderator the entire chat is orange

static canyon
viscid coral
celest charm
viscid coral
#

lol

celest charm
#

I mean... it's the most clear and unambiguous way

static canyon
#

Yeah

viscid coral
static canyon
#

I like it too to be honest

celest charm
#

this is not an English writing class

static canyon
#

MemberOrUser though since tries to convert to Member first

celest charm
#

if you name your class FuckingMess and it's the most descriptive name, then you're good to go

static canyon
#

rofl

celest charm
static canyon
#

I'm gonna go with MemberOrUser, thanks everyone

celest charm
#

MemberOrUser ^

static canyon
#

Yeah

green oriole
#

Since it is in converters.py it should make sense I think, but a comment doesn't hurt

static canyon
#

time to rename all the stuff that I literally just renamed

green oriole
#

Well at least your IDE can do the work now

static canyon
#

Erm

celest charm
#

yeah, most editors have a rename function

static canyon
#

Definitely not editing from GitHub website

celest charm
green oriole
static canyon
#

rofl

green oriole
#

The poor commit history

celest charm
#

yeah, testing is for losers

#

YOLO

static canyon
#

Linting + Chris has always done the testing for me xD

green oriole
#

Smh

celest charm
#

do you need to spin up docker to run tests?

#

also, what's our test coverage?

static canyon
#

Time to make 57 rename commits ducky_bike

celest charm
#

AAAAAAAaaaaaaaaaaaaaa

green oriole
#

Are you in the github codespaces preview Tizzy lol

static canyon
#

As an example

#

Literally just doing it on GitHub because I can't remember how to do git

green oriole
#

lol

#

Need help?

#

Get help!

dim pelican
#

He gits it

static canyon
#

I got dinner first but I'll @ you when I get back if that's okay lol

#

I will try and do in IDE for the 57 edits because otherwise the commit history is going to die lemon_cut

static canyon
#

@green oriole are you free?

green oriole
#

Hmmmmmmmm

#

Maybe, let's try

#

Do you have the repo cloned yet?

static canyon
#

Nope

#

git clone url but I don't know how to do a specific branch @green oriole

green oriole
#

Yes, you need to clone the whole repository

#

When you have the repository you work inside of branches

#

You have many branch per local repo

static canyon
#

Right okay

#

So the url would be GitHub.com/python-discord/bot?

viscid coral
#

This seem weird... Wasn't it just edited before?

green oriole
viscid coral
#

Like this

green oriole
vale ibex
#

Do you have an ssh key setup tizzy?

static canyon
static canyon
vale ibex
#

Ah alright, only mention it as it's easier to use ssh (no need for a password every time)

static canyon
#

How would I do that? @vale ibex

vale ibex
#

What os?

green oriole
#

I think password auth is disabled now

static canyon
#

Win10

vale ibex
#

open terminal

#

and run ssh-keygen

green oriole
#

Well, seems like Chris is handling it

vale ibex
#

and accept all the defaults

green oriole
#

The defaults suck though

vale ibex
#

I've never used PAT actually lol

static canyon
vale ibex
#

cat out ~/.ssh/id_rsa.pub

viscid coral
#

What is ssh? What are you even talking about lol

vale ibex
static canyon
vale ibex
#

cat works on powershell too

#

or are you on cmd?

wise oriole
#

works on cmd also

static canyon
#

old one

vale ibex
#

use type

static canyon
vale ibex
#

try type C:\Users\tizzy\.ssh\id_rsa.pub

#

maybe cmd doesn't like ~ for home

static canyon
#

Yep, that works

vale ibex
#

Once that's done you can click the code button on the repo and choose the ssh tab

static canyon
#

Including the @tizzy-DEVICE_NAME?

vale ibex
#

yup

thorny obsidian
static canyon
#

Because I opened command prompt first ๐Ÿคท

vale ibex
#

you're public key shouldlook like ```
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBYx/b++w2CpKyhSl0mY9lL6c093ghb5eD0uNPkgQTa5cCIaYy73q0w3uTmqoIDuaQk3eHVu0Jk2DvUH16u9f5jLXrMIAbeiQv6giPqyGdulqqJ4LsMCXT8xIV1myTpkXwlzJs6R48byOiupALTkO47MUGFMT+dUsKKSYQqZxdXr5EPxYLM0iziYuIvu2D8wF5Hc9HmL86/E6ScxO4iGGEq452k38hH7appQ9BIJDhDKnsxMm/povO7EBwm9q45b7ifnbiDKO+G041hYwpWx78b+ryUrvHoDv9jUjAHc2HDnN95fbXvbYPKRg2naf1A4Ra+4CKywE3sc/u3oZ9UJUHB3fEXir/MgviztrbSkxhMFwWckxEt6l6H3y71HQx0rFXnzYSuj1T647ntxZBeZZUnHw6DkKYbovLzXiOL4wMr9Xq/9tr7kGxEoKgvTYwk69Win8cQfncXyWfacV3311GNOPx6SCFYnWCVNODyPb+s8R8L+6GfGGRy0V8mEwSJu0= chris@DESKTOP-FEC9JN0

#

(it's fine to share public keys, that's the point)

#

Do not share id_rsa though

#

that's your private key

static canyon
#

aight

vale ibex
#

id_rsa=private id_rsa.pub=public

#

ok once it's all in git, you should be able to clone it with ssh

static canyon
vale ibex
#

yup

static canyon
#

What do I do with that?

vale ibex
#

git clone git@github.com:python-discord/bot.git

static canyon
vale ibex
#

type yes and enter

#

you'll need to do that as it's the first time you've connected to github using ssh

vale ibex
#

cool

#

you should have a bot/ folder in that dir now

static canyon
#

Yep

vale ibex
#

nice

#

all that's left to do is set your git name and email

#
git config --global user.name "Mona Lisa"
git config --global user.email "email@example.com"
viscid coral
#

Mona Lisa lol

vale ibex
#

there is a private email addr you can use via github if you don't want to use your personal one

#

I know a lot of people recommend git kraken for managing things locally

#

it's seems a lot more approachable than the command line

#

@thorny obsidian was a strong advocate for that ๐Ÿ˜›

thorny obsidian
#

:D GitKraken is fantastic for dealing with repos, especially with the student github pack thing

viscid coral
#

lol github doesn't believe the I am a student

vale ibex
static canyon
#

I generally use PyCharm

#

So I guess that

vale ibex
#

sure, someone else might need to take over here, I don't use pycharm

#

probably best to stick with what you know rather than change now

static canyon
#

I mean I've used loads of stuff

vale ibex
#

it seems like jetbrains have a nice guide for it acutally

vale ibex
#

you can probably skip a few steps since we've already done it

vale ibex
static canyon
#

Wait I've downloaded the repo but I want my branch @vale ibex

#

I've already created the branch and edited stuff from GitHub website

green oriole
vale ibex
#

you'll find it under remote branches

viscid coral
#

Can anyone review bot#1717 ? I opened it a week ago, just looking for opinion

dusky shoreBOT
static canyon
#

That seems to have worked

#

Thank you very much ๐Ÿ‘

green oriole
#

I'm surprised Chris didn't try to ssh yet lol

vale ibex
#

I did, it timed out lol

#
PS C:\Users\Chris> ssh root@ssh.akarys.me
PS C:\Users\Chris> ssh chris@ssh.akarys.me
PS C:\Users\Chris> ssh ssh.akarys.me
PS C:\Users\Chris> ssh akarys@ssh.akarys.me
PS C:\Users\Chris>
green oriole
#

lol

#

Now try to open the url in your browser

fallen patrol
static canyon
#

I think I can PR my thing now actually

vale ibex
#

vsc

green oriole
#

Hehe

static canyon
#

GitHub web be like

#

Lovely commit history

vale ibex
#

lol probably want to squash that

static canyon
#

No clue how

green oriole
#

Someone wrote a page on this

#

He writes okay stuff at best though

#

I don't like him

vale ibex
#

lol

#

wasn't it you

#

yes, yes it was

green oriole
#

I wouldn't speak like that of everyone but Akarys

fallen patrol
green oriole
#

Hmmmm

#

Let me check nobody else contributed to the page

#

And obviously Chris just edited it

vale ibex
#

lmfao

#

we tend not to make pages public, since it leaks contributors emails

#

but only me and AK have edited it, so if Ak is alright with it then we can make this one public

fallen patrol
#

commit messages are great 10/10 Tizzy
(You can change the commit message at the bottom of the github pages before commiting them)
((I used to do this for a long while))

vale ibex
#

lol actually, Ak leaks his email in the page itself anyway

green oriole
#

Yeah I'm fine with it

vale ibex
green oriole
#

My email is public on github lol

fallen patrol
#

yeah ak uses his email-- ^

fallen patrol
#

oh.

static canyon
#

A commit message just highlights what you did, in the imperative mood (which is what those do)

vale ibex
#

it be public

fallen patrol
#

wait that's actually a useful guide @green oriole

green oriole
#

I would like y'all to take half a second to appreciate that I found the image of an industrial press to use as the page cover. Thank you.

fallen patrol
#

i thought it was just gonna be press the squash merge button ๐Ÿ˜‚

vale ibex
#

you sound surprised lol

fallen patrol
#

I am lol

vale ibex
#

Ak is a verified Python speaker now

green oriole
#

lol

#

Yeah I actually make non shitposting content

vale ibex
#

need to balance it out somehow lol

fallen patrol
#

makes sense

vale ibex
# viscid coral ?

I'm not ignoring you, I just don't have strong feelings either way. (Others may be the same)

cosmic moat
#

hey guys, i have an old version of sir lancebot on my fork that uses pipenv and running pipenv run start gives socket.gaierror: [Errno -2] Name or service not known, any ideas? i have all of the env vars properly setup

vale ibex
#

could you paste some more of the error?

fallen patrol
#

easiest solution is to update lance and then try to fix it

vale ibex
#

specifically what it's trying to connect to

#

you also have the option to rebase your fork

#

but you will likely be in merge conflict hell

fallen patrol
#

or just go to github and press fetch from upstream ๐Ÿ˜

viscid coral
fallen patrol
#

ah yes

#

hm

#

uh

fallen patrol
viscid coral
#

Got my hopes up.. jk lol I knew it wasn't for me

green oriole
#

Most core devs are on vacations right now - including me - and not able to review much. I would just wait for a bit :)

viscid coral
#

Ok, thank you!

static canyon
#

@vale ibex are you able to assist?

vocal wolf
#

failed unit tests

#

try running the tests locally to see exactly what's going on

static canyon
vocal wolf
#

I think it's poetry run task test?

static canyon
#

It's doing something

#

Holy sh*t lol

vocal wolf
vocal wolf
static canyon
#

Most of them are KeyError: 'token'

#

So... how do I fix that? @vocal wolf

vocal wolf
#

uhhhhhh

#

I haven't had that error before, and I don't have access to my dev environment rn because am on windows

static canyon
#

I'd say like 90% of the errors are that

brazen charm
#

you need the env set up with a bot token, a dummy val should work

static canyon
#

How would I set a dummy env?

vocal wolf
#

oh that token, I thought you said 'token' as a placeholder for a different error, such as a class name.

dim pelican
brazen charm
static canyon
#

Would setting it as a system env var work?

dim pelican
#

The difference between Sir and Bot are the .env variables and the tests? (for the setup) Nevermind there is a decent amount of differences

brazen charm
#

maybe worth looking into what tests depend on configuration like that, but then again for local dev you'd have everything set up in most cases

fallen patrol
brazen charm
static canyon
#
FAILED tests/bot/exts/moderation/infraction/test_utils.py::TestPostInfraction::test_first_fail_second_success_user_post_infraction - TypeError: Subscripted generics cannot be used with...
FAILED tests/bot/exts/moderation/infraction/test_utils.py::TestPostInfraction::test_normal_post_infraction - TypeError: Subscripted generics cannot be used with class and instance checks
FAILED tests/bot/exts/moderation/infraction/test_utils.py::TestPostInfraction::test_unknown_error_post_infraction - TypeError: Subscripted generics cannot be used with class and instan...
FAILED tests/bot/exts/moderation/infraction/test_utils.py::TestPostInfraction::test_user_not_found_none_post_infraction - TypeError: Subscripted generics cannot be used with class and ...
```now got this (same error 4 times)
green oriole
#

Looks like an actual error due to to the new typing alias

brazen charm
stable mountainBOT
#

bot/exts/moderation/infraction/_utils.py line 82

if isinstance(user, MemberOrUser) and user.bot:```
static canyon
#

Right

#

Really the test should be edited then surely?

brazen charm
#

that isn't from a test

static canyon
#

Huh

#

It is?

#

tests\bot\exts\moderation\infraction\test_utils.py:358: this is a test dir

#

nvm

#
>>> import typing
>>> isinstance(3, typing.Union[float, int])
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    isinstance(3, typing.Union[float, int])
  File "C:\Users\tizzy\AppData\Local\Programs\Python\Python39\lib\typing.py", line 703, in __instancecheck__
    return self.__subclasscheck__(type(obj))
  File "C:\Users\tizzy\AppData\Local\Programs\Python\Python39\lib\typing.py", line 706, in __subclasscheck__
    raise TypeError("Subscripted generics cannot be used with"
TypeError: Subscripted generics cannot be used with class and instance checks```this is the issue
#

You can't do isinstance like that

brazen charm
#

Yes, that's why it was using a tuple before

stable mountainBOT
#

bot/exts/moderation/infraction/_utils.py line 86

if isinstance(user, (discord.Member, discord.User)) and user.bot:```
static canyon
#

I needpy isinstance(user, MemberOrUser.__args__)

#

Or should I just revert?

brazen charm
#

Why was it changed in the first place?

static canyon
#

I just thought it was redundant

brazen charm
#

That seems like the best option

static canyon
celest charm
brazen charm
#

reverting it

static canyon
#

I guess we can just isinstance(discord.User)

celest charm
#

wait, where is discord.User defined?..

static canyon
#

It's not

#

I removed the import lol

#

It was from discord import User I think

celest charm
#

I mean, in discord's source code

#

because they do a bunch of from ... import * in __init__

brazen charm
static canyon
#

discord.user.User

celest charm
#

so User is actually a dict?

static canyon
#

class

celest charm
#

it's inherited from TypedDict

static canyon
#

It inherits a whole load of stuff

celest charm
#

No, only another TypedDict

stable mountainBOT
#

discord/types/user.py line 39

class User(PartialUser, total=False):```
static canyon
#

PartialUser

stable mountainBOT
#

discord/types/user.py line 29

class PartialUser(TypedDict):```
celest charm
#

that means it's a TypedDict, right pithink

static canyon
#

Do we want isinstance(user, (discord.Member, discord.User)) for clarity or just isinstance(user, discord.User) for simplicity?

brazen charm
#

mind that we're using the 462ba84809f43349296c44cbe6468f631a00edab rev, not master

celest charm
#

ohh

brazen charm
#

(or at least something around it but that's the tag for the version the bot uses)

celest charm
#

wait @static canyon, Member doesn't inherit from User

#

I lied to you

stable mountainBOT
#

discord/member.py line 159

class Member(discord.abc.Messageable, _BaseUser):```
celest charm
#

right?

stable mountainBOT
#

discord/user.py line 342

class User(BaseUser, discord.abc.Messageable):```
static canyon
#

User inherits BaseUser which inherits _UserTag

#

Member inherits _UserTag

#

in main

brazen charm
#

it looks like you'd have to use the User abc if you only wanted a single type in the isinstance, I think it'd be best to just leave the line alone

celest charm
#

yeah let's just do the simple thing

fallen patrol
static canyon
#

lol

celest charm
#

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

static canyon
#

lol

celest charm
static canyon
#

Do we care about lint warnings? (things like deprecations etc.)

brazen charm
#

the ones from running the project's flake8, don't think there's anything for deprecations there

static canyon
brazen charm
#

yeah ignore that it's not even from our code, the testing suite probably emits all warnings

static canyon
#

Right, okay

#

Hopefully it passes linting this time lol

#

Can I get reviews on bot#1742 please lemon_happy

viscid coral
#

I can review but what message should I do?

#

Or just leave it blank if possible?

vocal prairie
vernal prawn
#

hi everyone

vocal prairie
#

But in general, you don't always need an approval/denial message, you're just expected to look over the code

vernal prawn
#

do yo know how to user mongo wth django frame

vocal prairie
vale ibex
patent pivot
#

oh yeah that's fine to close

#

@vale ibex hello i'm going to merge the manifests for threadbot

fervent sage
#

oh also joe, my pure asgi service mmLol

patent pivot
#

vco PR me manifests mmLul

fervent sage
#

idk how to k8s lol

#

but I'll try

patent pivot
#

lmfao

vale ibex
#

(or someone else can uncomment it out if you want your name on the repo)

fallen patrol
#

@brisk belfry

fallen patrol
#

wait I don't have push so nvm

#

darnit

vale ibex
#

Lol Yea you can fork tho

#

And PR

patent pivot
fallen patrol
#

joe will do it before i do it

patent pivot
#

i can just apply it from my laptop lol

#

just waiting for linting to passss

fervent sage
#

hi yes what is 750m cpu?

#

i dont understand the resources section lol

patent pivot
#

750 millicores

fervent sage
#

ah

patent pivot
#

1000m is 1 CPU core

fervent sage
#

75% of a core

patent pivot
#

your service probably needs

#

10

#

lol

#

@brisk belfry

#

yooooooooo chris bad programmmer #EpicFail

fervent sage
#

ok how many things are wrong with this? mmLol

patent pivot
#

lgtm

#

needs svc & ingress

fervent sage
#

time to steal from quackstack mmLol

#

omg joe

#

the tls error page for quackstack is... yea

#

thats great

vale ibex
#

Oh, yea lmfao

#

Dockerignore

fervent sage
#

uh joe, my thing exposes port 8000, how do i tell k8s ingress that's the case?

#

oh is it targetPort in svc

patent pivot
#

yea

fervent sage
#

mmLol kubernetes#69 funny number

dusky shoreBOT
dim pelican
#

nice.

patent pivot
#

LMFAO we are not having a service in my cluster called solely h

#

h-asgi minimum

fervent sage
#

smh fine

twilit juniper
#

dude no you didn't

vocal prairie
#

omg this is amazing

twilit juniper
#

well I mean joe did say he could

vocal prairie
patent pivot
#

same

fervent sage
#

hahahaha

#

please type h to confirm

patent pivot
#

lmfao

twilit juniper
#

loll

fervent sage
#

should be good now

patent pivot
#

shameless plug with the mTLS error

#

I'll allow it

fervent sage
#

how common are mtls errors anyway?

patent pivot
#

providing you aren't being a naughty goomba, it'll never be seen

twilit juniper
#

wait so this is the h bot?

#

or

fervent sage
#

no

#

is a tiny asgi service

#

which just shows h for every route and method

twilit juniper
#

oh

#

lol

fervent sage
#

so like

twilit juniper
#

nice

celest charm
#

ASGI = โค๏ธ

fervent sage
#

GET /abc/def/ghi is h

#

POST /ducky is h

patent pivot
twilit juniper
#

lolll

fervent sage
#

uh oh is not happy

patent pivot
fervent sage
#

ok

patent pivot
#

works

fervent sage
#

all is good

hoary anvil
#

@patent pivot got a browser warning

patent pivot
#

lol

#

you'll live

#

tell vco

fervent sage
#

i guess i could make it specify the char encoding

#

but then again i could also not

hoary anvil
#

but why would you not if you could also yes

fervent sage
#

because i made that image in my /tmp dir and its gone because its so low effort

hoary anvil
#

bruh

fervent sage
#

but its high enough effort i cba to rewrite it lmao

hoary anvil
#

verra sad

#

it is aye peetiful

#

i

#

man

patent pivot
#

no no this is not a sign off on that at all lol

fervent sage
#

there is contextโ„ข๏ธ behind this

hoary anvil
fervent sage
#

joe, vc, late night

hoary anvil
#

Joe's Late Night Show, with Alec VCO as this week's guest:
"Why do we need to create a website for h?"

#

yes

#

most excellent

patent pivot
#

hmmmmm

#

not

#

urgently

#

I don't think

fervent sage
#

this is in such serious need of a redesign its not even funny lol

patent pivot
#

I might move away from Grafana alerting at some point

#

to Alertmanager

static canyon
#

bot#1742

patent pivot
#

lolol, hold on writing manifests, there's a bit more to it than a single container

#

need to figure out where I want to put alerts

#

maybe maybe lol, but it's a really core part of our devops, so I'm going to be figuring it out as we go along

#

it's the entire method of how alerts get checked and pushed out to Discord & OpsGenie

#

pager

fervent sage
#

better than an hour of AWS "You are not authorized to perform this operation." blob_pain

patent pivot
#

imagine using the root user

green oriole
#

Do we seriously now have a service to return the letter H? I love it

fervent sage
#

:D

vocal prairie
#

I love that

vale ibex
#

joe could you reenable @brisk belfry ?

#

Should be good now

#

I've fixed the Dockerignore and turned on the auto-deploy action

green oriole
#

If Joe isn't around I could maybe do it, I assume he brought down the number or replicas to zero?

stable mountainBOT
#

thread-bot/deployment.yaml line 6

replicas: 1```
vale ibex
#

doesn't seem like it

green oriole
#

We don't usually commit those changes to the repo

vale ibex
#

ahh

green oriole
#

But no there is a replica

#

The auto deployment should work, I don't see anything that should disable it

vale ibex
#

it suceeded

#

bot just isn't online

green oriole
#

Hmmm

vocal prairie
#

It's just /resources, not /pages/resources

vale ibex
#

Did you want to fix it?

vocal prairie
#

Ye, I can do that

vale ibex
#

Noice

#

there's a few places in that file it's referenced

#

It might be better to change the constant to a baseurl

green oriole
vocal prairie
#

The tools link too

static canyon
#

The variable has /pages in it

vocal prairie
vale ibex
#

and then add /pages to the 3 places that need it

static canyon
vocal prairie
#

I mean I can fix the wrong links, my bad explanation

static canyon
#
PAGES_URL = f"{URLs.site_schema}{URLs.site}/pages"
...
learning_url = f"{PAGES_URL}/resources"```it's correct though?
vale ibex
#

nope

vocal prairie
static canyon
#

/pages/resources redirects ๐Ÿคท

#

But yeah I suppose

green oriole
#

he doesn't care about my traceback

vale ibex
#

oh lol

#

lemme look

#

oh...yea

#

I'm not gonna fix that

#

my PR will fix it as a sideaffect

static canyon
#

@vocal prairie frequently-asked-questions is /pages/frequently-asked-questions (not just /frequently-asked-questions)

#

Same for /pages/rules and /pages/guides/pydis-guides/asking-good-questions/

vocal prairie
#

Yeah, I'll manually append /pages

static canyon
#

๐Ÿ‘

#

I think the asking-good-questions link is wrong at the moment

#

Nvm it redirects to the correct one

vocal prairie
#

Is there something special that needs to be set up when running the bot in Docker? I'm getting this error:

bot_1       | 2021-08-11 21:03:46 | bot | CRITICAL | Could not connect to site API. Is it running?
#

And afaik, compose sets up site by default

brazen charm
#

you have to change the urls

vocal prairie
#

I have them all configured properly to my knowledge

#
urls:
    # PyDis site vars
    connect_max_retries:       3
    connect_cooldown:          5
    site:        &DOMAIN       "pythondiscord.local:8000"
    site_api:    &API    !JOIN ["api.", *DOMAIN]
    site_api_schema:           "http://"
    site_paste:  &PASTE  !JOIN ["paste.", "pythondiscord.com"]
    site_schema: &SCHEMA       "http://"
    site_staff:  &STAFF  !JOIN ["staff.", *DOMAIN]

    paste_service:                      !JOIN ["https://", *PASTE, "/{key}"]
    site_logs_view:                     !JOIN [*SCHEMA, *STAFF, "/bot/logs"]
#

I haven't touched anything besides setting the BOT_TOKEN env var and the config.yml

brazen charm
#

do you have pythondiscord.local set in your hosts file?

vocal prairie
#

Yup, and when I go to http://pythondiscord.local:8000/ in the browser, it works fine

brazen charm
#

ah if it's all in docker you may need to use the docker names

#

web:8000 for the site url I think?

vocal prairie
#

Thank you, I found that part in the contrib guide now

brazen charm
#

personally I run the bot itself normally so it's easier to restart

vale ibex
#

@brisk brook I've actioned all your comments on thread-bot#1

dusky shoreBOT
static canyon
#

Can I get two more reviews on bot#1742 please?

tawdry vapor
static canyon
#

If you just use the default UserConverter it won't as of dpy 1.6

tawdry vapor
#

When the fetch API call failed for a reason other than the user not being found

static canyon
#

What would be such a scenario?

green oriole
#

Discord being broken?

static canyon
#

I mean if discord was broken then stuff would break anyway I guess (just further down the line)

tawdry vapor
#

I don't really know. I guess it was a robustness thing but I don't have stats to gauge how useful it has been in practice.

#

But it was a concern that you didn't mention this behaviour at all in your PR

static canyon
#

Can you link to the code for this?

stable mountainBOT
#

bot/converters.py lines 518 to 522

except discord.HTTPException as e:
    # If the Discord error isn't `โ€‹Unknown user`โ€‹, return a proxy instead
    if e.code != 10013:
        log.info(f"Failed to fetch user, returning a proxy instead: status {e.status}")
        return proxy_user(arg)```
static canyon
#

I don't think it's really worth having that to be honest

#

I did notice that but then forgot to comment about it

#

The only scenario I can think of where that'd actually be useful is when discord is down or something and so stuff would break anyway

static canyon
brisk brook
tawdry vapor
static canyon
#

I'll let you do that then ๐Ÿ‘

#

If it is used a fair amount then I guess keep it

tawdry vapor
#

Although I cannot tell if it is taking a long time to query or if it just found nothing...

vale ibex
static canyon
#

Since for me it says like "querying" or something then loads a blank page after

#

Yeah, if you do say "Dormant" as the search term it's a lot more obvious in comparison

#

Also get a little spinny icon when it's loading

static canyon
tawdry vapor
#

I think it's not working right

#

I don't think it's actually querying the entire 2 year range

#

Even with a query that I know should return many results, I cannot scroll farther than 5th of august

static canyon
#

I assume it only shows top 100 or whatever

#

I'm getting 1000 results tops from the looks of it

brisk brook
tawdry vapor
#

Yeah same, only 1k

#

I guess it really never triggered.

static canyon
#

Yeah

#

I mean that's definitely feasible seeing as I can't think of a scenario it would

#

So are you in agreement that it's okay to remove the proxy_user stuff? @tawdry vapor

vale ibex
#

@brisk belfry

#

pls come online

#

ty

static canyon
#

I'll make a reference to this on the PR to make it clear

vale ibex
viscid coral
#

Nice!

#

No idea what the bot does but nice

static canyon
#

@vale ibex Do you have time to review my 3rd PR today too? bot#1742

vale ibex
#

once I make a PR of my own, 2 secs

static canyon
#

๐Ÿ‘

vale ibex
#

uhhh, that's a lot of commits

#

we should probably squash those down to a few

#

I don't think it should just be 1 though

#

ehhh, actually possibly

static canyon
#

I was going to squash them but then realised I didn't know how and looking it up didn't really help much

vale ibex
#

I can squash them all into 1 commit when merging via the github interface

#

I'm just trying to parse all the changes in my head to see if that makes sense

static canyon
#

All the "Verified" ones are one-file edits

vale ibex
#

otherwise I can check it out locally and squash

static canyon
#

The verified ones are really two commits: updating converters and removing unused imports

#

Suppose can merge that into one though tbf

vale ibex
#

I'm thinking

  • 1 commit that adds the MemberOrUser converter, and changes all of the type hints, and removes unused imports
  • 1 commit that removes the redundant isinstance check
  • 1 commit that removes the FetchedUser and proxy_user things
vale ibex
#

cool, feel free to review bot#1744 in the mean time

dusky shoreBOT
vale ibex
#

not too sure of the implications, I guess try it and test things ๐Ÿ˜„

static canyon
#

Does the thread bot ping both Mods and Admins in the thread? @vale ibex

Edit: Nvm, just remembered it's open source so can check myself and it does

fallen patrol
#

๐Ÿ˜‰

static canyon
#

And I reviewed your PR

vale ibex
#

noice

#

annoyingly, since I forcepsuhed that rebase I'm actually disqualified from counting towards review bot

#

just remembered that lol

static canyon
#

lol

tawdry vapor
#

4 people reviewed bot#1738 and none of them noticed that the categories are already instance attributes of the cog ๐Ÿ˜”

dusky shoreBOT
vale ibex
#

ah crap, I even used those when I was in there a few weeks ago

static canyon
#

@tawdry vapor those issues should be fixed now ๐Ÿ‘

#

bot#1742

echo narwhal
#

Congratulation on finishing your first project! Our bot uses the discord.py library though, and can't be used to add various unneeded scripts. Please make sure to be assigned to an issue before submitting a PR, or come discuss this with us in the #dev-contrib channel.

can someone help me? i dont understand this ^^

short snow
#

context?

celest charm
dusky shoreBOT
celest charm
#

You can make a command that implements a calculator, which could be useful.

short snow
#

Scientific calculator ^

celest charm
#

maybe @green oriole can clarify their message

green oriole
#

Yes, our project is a discord bot. You are free to contribute commands that uses the discord.py library.

short snow
#

The sirlancebot is a discord bot, it contains fun commands to play with on the server, you have made a calculator which isn't using the python discord.py library which we use to add commands to the bot, so your command won't be added to the bot even if the PR is merged.

Secondly, I don't see how the command fits our needs, it is just too "simple" to be added as a command if you could make it a scientific calculator then it could have been better but it doesn't adhere our contributing guide as we need to make an issue first which would get approved by a core developer and then a PR can be made

green oriole
#

But your contribution was just a script in the root folder, it doesn't have anything to do with the bot

#

I would honestly love to see a proper calculator be added, just because parsing and interpreting a mathematical expression is quite interesting. But I don't think other core devs would agree with me haha

#

Congratulations on finishing your first project though @echo narwhal! If you want to easily share it putting the file in a gist (https://gist.github.com, basically a website for showing and sharing various script) would be a great idea!

rapid swallow
#

!e
print(23*3)

stable mountainBOT
#

@rapid swallow :white_check_mark: Your eval job has completed with return code 0.

69
rapid swallow
#

A scientific calculator is an interesting idea

green oriole
#

My bad, I thought you said it was your first project. Well, even if it isn't it is still a good achievement lemon_pleased

short snow
#

good job,m but python file has a .py extension

static canyon
#

Can I have some more reviews on bot#1742 please?

vale ibex
#

(โ•ฏยฐโ–กยฐ๏ผ‰โ•ฏ๏ธต โ”ปโ”โ”ป

#

guess this is the life of using unreleased versions lol

brazen charm
#

doesn't the lockfile lock it to a specific rev? or do you have to do that manually if wanted

short snow
#

ahh this guy opened his pr think

vale ibex
#

but I didn't so I guess this is my own doing really lol

brazen charm
#

I would do that if the lockfile doesn't do that already (which tbh I think would make more sense), always better to manually update when you know about it to fix something instead of getting a new version every time

short snow
#

i think lockfile does pin it to a specific commit, which gets changed when you relock?

#

not sure

vale ibex
#

Yea true, think I need to install git on the image now though

short snow
#

i had the same issue an hour back

vale ibex
#

small price to pay though IG

#

I think the issue is I was specifying the archive zip url, rather than the repo

#

since I didn't want to have to install git

#

and that archive zip is the latest version of master

brazen charm
#

that might be it, the lock file currently only keeps track of the version which I assume doesn't change until they go into a beta/stable

vale ibex
#

Yea

short snow
#

rm -rf /var/lib/apt/lists/* chris why did u do this?

#

I wanted to copy your approach on one bot

vale ibex
#

Since there's no need for them to be there using up image space

short snow
#

what does it contain?

vale ibex
#

that's where apt-get update things go

short snow
#

oh

#

yes

#

ok ty

vale ibex
#

๐Ÿ‘

surreal veldt
#

Anyone on bot#1724

dusky shoreBOT
green oriole
#

@surreal veldt would you like to work on it?

brazen charm
#

there's already bot#447 which I'd say overlaps with the above issue

dusky shoreBOT
surreal veldt
surreal veldt
green oriole
#

Oh, good catch num, thank you

surreal veldt
#

that was made some time ago

#

2019 lol

green oriole
#

Would you like to work on that one @brazen charm? Asking since it has been a bit since your last comment

brazen charm
#

no, not at the moment

green oriole
#

Alrighty, then if you comment on the issue @surreal veldt I can assign it to you

surreal veldt
green oriole
#

You can just say that you want to work on the issue

#

On bot#447 I mean

dusky shoreBOT
brazen charm
#

keep in mind that there are more than a 100k symbols from the loaded invs so naive fuzzy matching probably won't work very well in the majority of cases, only for things like typos

surreal veldt
#

you can change how accurate you want the results to be given your input

#

and change how many results max should it get

brazen charm
surreal veldt
#

Thats fuzzy thing?

vale ibex
#

!int e len( [s for s in bot.get_cog("DocCog").doc_symbols if "context" in s.lower()])

stable mountainBOT
#
In [2]: len( [s for s in bot.get_cog("DocCog").doc_symbols if "context" in s.lower()])
Out[2]: 792```
vocal prairie
static canyon
celest charm
vocal prairie
#

Oh wait, there were two

static canyon
#

Yeah, they submitted another one for some reason

short snow
#

oops wrong ping

#

sorry, dawn ^

vocal prairie
#

Akarys closed the first

celest charm
#

@echo narwhal Why did you submit another PR? I think we explained that we don't randomly merge other people's projects into the bot, we only merge new commands or changes to existing commands.

short snow
#

cc: @echo narwhal why did you open it again?

#

oh god

#

discord is glitching so much

#

sorry for double ping

echo narwhal
brazen charm
# surreal veldt Thats fuzzy thing?

no just a simple check for all symbols containing context, I'd imagine fuzzying would get you more matches unless you went for doing it on the whole symbols which would most likely fail because of the library namespaces before the symbols

green oriole
#

Build the containers again

surreal veldt
green oriole
#

docker-compose build

vocal prairie
#

docker compose up --build also works

green oriole
#

Huh

#

No idea

vocal prairie
#

Google says you need a version of psycopg2 below 2.9 to fix that

#

Oh hmmmm

short snow
#

whats the issue again?

#

whats your settings.p?

#

gessing it is django

#

when you said bulma

#

the TIME_ZONE variable to be specific

vale ibex
#

what changes have you made to the pyproject file?

#

just bumped bulma?

short snow
#

weird, can you confirm it is 2.8.6 in poetry.lock

vale ibex
#

to what ver?

short snow
#

maybe it can help

vale ibex
#

psycopg2-binary 2.9.1 psycopg2 - Python-PostgreSQL Database Adapter

#

in poetry show --tree

#

lol yea

#

change ~=2.8 to ~2.8

short snow
vale ibex
#

~=2.8 is the same as >=2.8, ==2.*