03:35 < bridge> > Why the limit of MAX_CLIENTS many target switches that can be hit? The number of clients seems unrelated to the number of target switches. We should pick a reasonable maximum value and define a separate constant for it. 03:35 < bridge> 03:35 < bridge> any opinions? 03:37 < bridge> 1024 switches 03:38 < bridge> 1 byte seems logical? 256? 03:38 < bridge> same as the other tiles? 03:38 < bridge> 65536 switches 03:38 < bridge> double the bytes is double betterer 03:40 < bridge> ye i proposed 256 03:40 < bridge> but idk maybe it should consolidate into some max_non_character_entities and be a big number 03:41 < bridge> i dont think theres a performance hit at all, i assume it just stops scanning after it hits the max 03:46 < bridge> I thought that there's a limit to how much data we can store in a tile anyway? 03:54 < bridge> hm 03:54 < bridge> in a maptile yes i think 04:06 < bridge> almost forgot 06:02 < bridge> good bot 06:02 < bridge> :3 06:29 < bridge> bad bot 06:29 < bridge> :C 06:44 < bridge> ChillerDragon: HELP 06:45 < bridge> i merged louis's PR and then i accidentally hit a `git add . && git commit --amend --no-edit && git push --force` on my terminal where the master with the pr was not pulled yet. no the pr is gone 06:45 < bridge> wth 06:46 < bridge> i merged louis's PR (rebase) and then i accidentally hit a `git add . && git commit --amend --no-edit && git push --force` on my terminal where the master with the pr was not pulled yet. no the pr is gone 06:48 < bridge> i should really have done --force-with-lease 06:48 < bridge> man 06:49 < bridge> okay, cherry pick saves the day once again 06:50 < bridge> okay, cherry picking saves the day once again 07:45 < bridge> `git reflog` is useful btw 08:16 < bridge> github got worse for me. I'm regularly hitting 08:16 < bridge> > Too many requests 08:16 < bridge> > 08:16 < bridge> > You have exceeded a secondary rate limit. 08:16 < bridge> with just browsing PRs 08:23 < bridge> good morning 08:24 < bridge> good morning ๐Ÿ™‚ 08:35 < bridge> do you have any plugins installed? 08:35 < bridge> do you have any github related plugins installed? 09:29 < bridge> it does the same thing for me 09:29 < bridge> it's a new bug or something 10:33 < bridge> i didn't have that commit locally so reflog wasn't showing it 10:33 < bridge> since i force pushed before pulling 10:33 < bridge> since i force pushed before pulling/fetching 10:35 < bridge> force push always a good idea 10:35 < bridge> yea 10:35 < bridge> keeping the commit history clean ๐Ÿ˜ 10:38 < bridge> aka. hiding embarrassing errors xD 10:38 < bridge> naah, this doesnt exist 10:38 < bridge> every time i set up some CI workflow i need at least 8 commits/force pushes 10:38 < bridge> mostly because msvc 10:39 < bridge> but CI workflows are crap to debug 10:39 < bridge> gitlab, github, gitea, forgejo 10:39 < bridge> all bs debugging 10:40 < bridge> Have you tried Codeberg once? 10:40 < bridge> I really enjoy their speed 10:40 < bridge> if only there was a proper way to test them locally. without setting up some docker container 11:10 < bridge> they rather focus on ai than a good service xd 11:11 < bridge> Use bash scripts or whatever shell you're using, so that you can simply run them on local 11:11 < bridge> can't wait for the bubble to burst 11:12 < bridge> i would switch to it but as always the world is ruled by social stuff, if ur on codeberg u barely can contribute to projects and they have 0 discovery unless ur zig 11:12 < bridge> same reason we use discord 11:17 < bridge> I hear codeberg has terrible uptime, is it true? 11:18 < bridge> https://status.codeberg.org/status/codeberg 11:19 < bridge> Its not good, not bad 11:20 < bridge> uptime.is/97.39 11:20 < bridge> https://uptime.is/97.39 11:20 < bridge> https://uptime.is/97.39 11:20 < bridge> https://uptime.is/97.39 11:20 < bridge> idk ig that's okish, 2 weeks isn't the largest window 11:21 < bridge> I have codeberg which mirrors to GitHub simply for contribution 11:21 < bridge> Thats what I thought as well 11:21 < bridge> Using Codeberg mainly to browse through repos, but Github for uptime ๐Ÿ˜„ 11:22 < bridge> no, local is not the same as a github CI lol, different hardware, different OS, different versions of everything 11:22 < bridge> And no Github Environment variables ๐Ÿ™ 11:23 < bridge> Or functions 11:23 < bridge> yea 11:23 < bridge> maybe i can set up a local github CI server on some home server or something 11:23 < bridge> maybe that can work 11:32 < ws-client> **** @heinrich5991 as soon as i contribute to a pr I can no longer merge it right? https://github.com/ddnet/ddnet/pull/11232 so i can not speed up merges by helping out the pr author? Can kebs now approve my changes and then i can merge it? 11:33 < ws-client> **** @learath2 i think someone forgot to merge my approved bugfix from june https://github.com/ddnet/ddnet/pull/10399 12:27 < bridge> I think I merged a PR, that I "contributed" to once, but it was just a straight forward rebase without touching any code, so the new pipeline was run 14:07 < ws-client> **** @Assa thanks for the review but honestly such bs findings :p 14:32 < bridge> generally, you shouldn't merge PRs you've contributed to 14:40 < bridge> what if you are the only maintainer... 14:41 < bridge> then you force push to master directly and don't open prs, next question 14:51 < bridge> nah, just nitpicks, and one finding that is not bs 14:51 < bridge> I would relax that for stuff like rebasing something for someone, or renaming stuff 14:52 < bridge> I don't want to be killed when this breaks something else, how sure are you? 14:55 < bridge> I am sure, I approved it ages ago 14:55 < bridge> If you were really sure, you'd have merged it ๐Ÿ˜› 15:02 < bridge> in that case ping another maintainer and say that you just rebased, or just renamed the variable and have already reviewed? 15:06 < bridge> I would do that probably, but you know these young'uns they don't like waiting around 15:19 < bridge> @heinrich5991 this piece of code also can't work as epected: 15:19 < bridge> 15:19 < bridge> ``` 15:19 < bridge> try: 15:19 < bridge> id_, param = input_queue.get(timeout=timeout) 15:19 < bridge> except queue.Empty: 15:19 < bridge> output_queue.put(Timeout(id_, param.description)) 15:19 < bridge> param = None 15:19 < bridge> del id_ 15:19 < bridge> ``` 15:19 < bridge> 15:19 < bridge> If the queue throws empty, then you have no id_ 15:19 < bridge> I wonder if it tries to delete None, or deletes the last entry 15:20 < bridge> but id_ is out of scope, so what's the purpose 15:21 < ws-client> **** @Assa ayo vanessa 15:21 < ws-client> **** u still got ddnet on your phone? 15:21 < bridge> yes? 15:21 < ws-client> **** epic 15:21 < ws-client> **** can u join a server for me real quick? 15:22 < bridge> yes please join it and I'll find you 15:22 < ws-client> **** nice 15:22 < ws-client> **** i will be on 88.198.96.203:8308 once the server is online 15:22 < ws-client> **** ETA 30s 15:23 < ws-client> **** 26& 15:23 < ws-client> **** 27% 15:23 < ws-client> **** 28% 15:24 < bridge> What would happen if a PR is contributed by every maintainers. 15:24 < bridge> :thonk: 15:24 < ws-client> **** then it can be merged by a non maintainer 15:25 < bridge> Can't be merged, it'll sit there forever 15:25 < bridge> the we close the PR, make another maintainer do a new PR and he claims authorship /s 15:26 < bridge> or we add a new maintainer 15:26 < bridge> ๐Ÿค” 15:26 < ws-client> **** for example kebso 15:26 < bridge> temp maintainer, lol 15:26 < ws-client> **** kebso for maintainer 15:26 < ws-client> **** 83% 15:26 < ws-client> **** fakin -DCLIENT=ON by default bloatware 15:27 < ws-client> **** i burned down two rainforests by compiling clients i never launched already 15:27 < bridge> why does your bootup take so long 15:27 < bridge> i don't get it 15:27 < ws-client> **** yea idk i thought i do quick server reboot xd 15:27 < ws-client> **** and it decided to compile client 15:27 < ws-client> **** 90% 15:28 < ws-client> **** ok im there @Assa 15:30 < ws-client> **** ddnet://88.198.96.203:8308 15:30 < ws-client> **** can u click ddnet links on android? 15:30 < bridge> you have the id from the previous iteration. I can't tell you if that's expected 15:30 < bridge> make DDNet-Server 15:31 < ws-client> **** @teero777 yea i did -DCLIENT=OFF now 15:31 < bridge> @essigautomat honestly, I'd have no problem calling variables in C++ `map`, `vector`, `list` etc. 15:31 < bridge> I don't think having the same name as a global is actually that bad 15:31 < bridge> btw @heinrich5991 did you read my dm? 15:32 < ws-client> **** @Assa u comin? 15:33 < bridge> not yet 15:35 < bridge> I am finding straight up bugs in the python code 15:35 < ws-client> **** asssaaaa 15:35 < bridge> idk how to handle this 15:36 < ws-client> **** thanks a lot <:heartw:395753947396046850> @Assa 15:36 < bridge> idk which version this was @chillerdragon 15:36 < ws-client> **** all good i got it all 15:37 < bridge> but I am fully skillchecked with android 15:37 < ws-client> **** i noticed 15:38 < bridge> you find bugs, you fix bugs 15:38 < bridge> can sb explain this regex?: 15:38 < bridge> 15:39 < bridge> ``` 15:39 < bridge> matches = re.findall(r"(Localize|Localizable)\s*\(\s*\"((?:(?:\\\")|[^\"])+)\"(?:\s*,\s*\"((?:(?:\\\")|[^\"])+)\")?\s*\)", fileobj.read()) 15:39 < bridge> ``` 15:39 < bridge> 15:39 < bridge> My ide complains about it 15:39 < bridge> like it contains "unnecessary capturing groups" 15:39 < ws-client> **** just write a unit test for it and then refactor it :D 15:39 < ws-client> **** and then rerun it and make sure it doesnt change behavior on the actual code base 15:40 < bridge> my regex game is on the same level as my rust skills 15:40 < bridge> I tried understanding the code, and I think it is correct 15:40 < bridge> it could use a comment though 15:41 < bridge> it is indeed wanted to use the `id` from the previous iteration 15:41 < bridge> and the `except queue.Empty` cannot happen before the second iteration 15:41 < bridge> then id_ should be placed above the loop and be initialized as None and checked against, same as param 15:42 < bridge> this is a "should" as in "I want it that way", not a "it's buggy otherwise", right? 15:42 < bridge> I guess we can then skip the check if this can't be, but this is in theory a scoped variable inside the loop 15:42 < bridge> python doesn't have scoped variables 15:43 < bridge> only function scopeยน 15:43 < bridge> it's a should as in "I can imagine this causing UB in future python versions" 15:43 < bridge> it won't 15:43 < bridge> (ยนand in `except Exception as e`, for funny reasons) 15:43 < bridge> python won't change away from function scope 15:44 < bridge> can you take a look at my new changes? I found actual bugs 15:44 < bridge> and B001 should be enabled, as we are probably doing this _really wrong_ 15:44 < bridge> where can I find these bugs? 15:44 < bridge> https://regex101.com/ may help 15:44 < bridge> same PR 15:45 < bridge> and here we have a buildin getting put into a function instead of the correct variable for example 15:45 < bridge> I've scrolled through the comments and didn't find something obvious 15:46 < bridge> can you point me to it? 15:46 < bridge> (for the final PR, it'd probably be good to separate out manual changes from automated ones) 15:46 < bridge> (for the final PR, it'd probably be good to separate out manual changes from automated ones, in separate commits) 15:46 < bridge> extract_identifiers only contains bugfixes 15:46 < bridge> extract_identifiers.py only contains bugfixes (how do I copy links to PR lines? 15:46 < bridge> extract_identifiers.py only contains bugfixes (how do I copy links to PR lines)? 15:48 < bridge> and I mean B006, then you understand why we want to do 15:48 < bridge> 15:48 < bridge> ``` 15:48 < bridge> if extra_args is None: 15:48 < bridge> extra_args = [] 15:48 < bridge> ``` 15:48 < bridge> ``` 15:48 < bridge> def add_to_list(item, some_list=[]): 15:48 < bridge> some_list.append(item) 15:48 < bridge> return some_list 15:48 < bridge> 15:48 < bridge> 15:48 < bridge> l1 = add_to_list(0) # [0] 15:48 < bridge> l2 = add_to_list(1) # [0, 1] 15:48 < bridge> ``` 15:48 < bridge> ^ this example is really bad, you should not use [] as a default argument 15:48 < bridge> it's fine if you don't mutate the list ๐Ÿคทโ€โ™€๏ธ 15:49 < bridge> the lint should flag mutating the list, not the default parameter 15:49 < bridge> why do these tools have so many false positives? 15:51 < bridge> I am not so sure about this, because we are calling the parent constructor with the list 15:51 < bridge> I find it weird, that you want to protect your code here, instead of preventing future bugs 15:52 < bridge> because it is far harder to detect the correct thing, so usually they instead just detect something easier to detect that can lead to it 15:52 < bridge> like B006 is also very easy to overread as a reviewer 15:52 < bridge> and if we ever introduce new code, we might run into it 15:53 < bridge> can you link that stuff? it's not easy to find 15:53 < bridge> https://docs.astral.sh/ruff/rules/mutable-argument-default/ 15:54 < bridge> IMO this is python beeing weird 15:54 < bridge> the problem here is the append btw, not the default argument 15:54 < bridge> you shouldn't modify your arguments 15:55 < bridge> this would still be a problem with the modification 15:55 < bridge> this would not be a problem, if you set it to none and initialize it as empty if it's none 15:55 < bridge> it would 15:55 < bridge> the user passes in a list 15:55 < bridge> suddenly it's modified 15:56 < bridge> note how the user passes no list in in the example 15:56 < bridge> yes. there will be no more bug if the user doesn't pass in a list 15:56 < bridge> the same example would work with the None check 15:56 < bridge> but if they decide to pass in a list they have, they have a bug again 15:56 < bridge> the problem is the modification of parameters 15:57 < bridge> can you show me an example where this would bug? 15:57 < bridge> can you show me an example where this would bug? this meaning with the None check 15:59 < bridge> ```py 15:59 < bridge> def execute_pe(args=None): 15:59 < bridge> if args is None: 15:59 < bridge> args = ["calc.exe"] 15:59 < bridge> args.insert(0, "/usr/bin/wine") 15:59 < bridge> return subprocess.Popen(args) 15:59 < bridge> 15:59 < bridge> command = ["echo", "twice!"] 15:59 < bridge> execute_pe(command) 15:59 < bridge> execute_pe(command) 15:59 < bridge> ``` 16:03 < bridge> true, command is modified twice. The difference is, that we have control over command and it's not hidden in some default parameter 16:03 < bridge> I guess if you insist I'll remove it again 16:04 < bridge> I think it creates busywork 16:04 < bridge> you can't use default parameters for lists anymore, you have to type out two lines for every list default parameter 16:05 < bridge> I agree that this is a deficiency of python โ€” it should just evaluate defualt parameters every time 16:05 < bridge> but it does not 16:08 < bridge> I see how this could have been an undetected bug, which would fail loudly if we used `id_` instead of `id` 16:08 < bridge> are you fine if I define id_ above the loop with -1? 16:08 < bridge> this should do the trick 16:09 < bridge> if you define it, the potential bug would not be caught again 16:09 < bridge> currently, `id_` is only defined when it is meaningful 16:09 < bridge> if you define it as `-1`, that might leak into `output_queue` 16:09 < bridge> I can also define it as None, then it would keep crashing 16:10 < bridge> `None` can also be passed into the output queue, no? 16:11 < bridge> can None be deleted? if id_ is not defined before, is it set to None or something else? 16:11 < bridge> I see that I've already ignored the warning before with pylint, mutable arguments โ€” perhaps you could do the same instead of trying to appease the lint (and still activate it globally for reviewers)? 16:11 < bridge> if `id_` is not defined, it'll raise an exception when it's used 16:12 < bridge> but that wouldn't work for `id` because the global exists 16:12 < bridge> I see how renaming it to `id_` mitigates a potential bug 16:13 < bridge> how about this: 16:13 < bridge> 1) introduce `"A"` by appending an underscore to variables 16:13 < bridge> 2) introduce `"B006"` but ignore it in our safe cases 16:13 < bridge> 3) (and keep `"BLE"`) 16:14 < bridge> ๐Ÿ‘ I am almost there, I only need to ignore the safe cases 16:15 < bridge> could you ignore them with `# noqa: B006 mutable-default-arguments`? 16:15 < bridge> so it's clear what you ignore? 16:15 < bridge> okay 16:18 < bridge> are you fine with the `lines` ? 16:21 < bridge> @chillerdragon is the teeworlds crashbug a teeworlds bug or does the server **additionally** send bad data to the client so it crashes? 16:22 < bridge> I don't understand, we have at unique some playeres who insist on playing with 0.7 and they didn't complain to me about crashes yet 16:29 < bridge> @chillerdragon what about this discussion? Do you want to change something? 19:16 < bridge> !ping 19:16 < chillerbot12> pong 19:17 < bridge> !remind 3600 check if the server saved your time on run_Jellyfish_Fields 19:17 < chillerbot12> Helo Assa I will remind you at Sun Dec 21 2025 07:17:21 GMT+0100 (Central European Standard Time) about your matter again. 19:36 < bridge> !remindme 60 sleep 19:36 < chillerbot12> Helo teero777 I will remind you at Thu Dec 18 2025 20:36:01 GMT+0100 (Central European Standard Time) about your matter again. 19:39 < bridge> @heinrich5991 what is the status of the communities and their tokens btw? 19:52 < bridge> https://heinrich5991.de/teeworlds/ddnet/2025-10-05-missing-community-server-updates-pr-9565.html?community=ddnet there is this 19:53 < bridge> (iirc everyone migrated) 20:22 < bridge> what about these: https://github.com/ddnet/ddnet/issues?q=is%3Aissue%20state%3Aopen%20label%3Acommunity 20:22 < bridge> at least 2 of them are communities that want to get registered 20:24 < bridge> Still waiting for the community rules (https://github.com/ddnet/ddnet-web/pull/343) to be merged, then I'll close the related issues and refer them to the new rules/process 20:25 < bridge> my inner child already wants to press merge 20:36 < chillerbot12> Elo @teero777 I just wanted to remind you that: sleep 20:36 < bridge> monkey see big green button, monkey click 20:48 < bridge> :zzzz: 20:48 < bridge> but im not done yettt