mastodon.gamedev.place is one of the many independent Mastodon servers you can use to participate in the fediverse.
Mastodon server focused on game development and related topics.

Server stats:

5.1K
active users

#pep517

4 posts4 participants0 posts today
mgorny-nyan (on) :autism:🙀🚂🐧<p>Więc uważacie, że wasz instalator do pythonowych paczek "wheel" jest spoko?</p><p>A czy obsługuje tworzenie dowiązań symbolicznych pomiędzy plikami `.pyc` na różnych poziomach optymalizacji, żeby zaoszczędzić przestrzeń dyskową, kiedy są identyczne?</p><p>A czy obsługuje tworzenie dowiązań symbolicznych pomiędzy wszystkimi plikami w różnych lokalizacjach (np. site-packages dla różnych implementacji Pythona), żeby zaoszczędzić sporo przestrzeni, kiedy instaluje się 6 identycznych kopii tej samej paczki?</p><p>Rzecz jasna, dopiero się przekonam, ile to psuje, ale <a href="https://pol.social/tags/gpep517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gpep517</span></a> 19 wyszedł z tymi funkcjami, i mam gotowe łatki dla <a href="https://pol.social/tags/Gentoo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Gentoo</span></a>.</p><p><a href="https://pypi.org/project/gpep517/19/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/gpep517/19/</span><span class="invisible"></span></a><br><a href="https://github.com/gentoo/gentoo/pull/41905" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/gentoo/gentoo/pull/</span><span class="invisible">41905</span></a></p><p><a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> <a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>So you think your <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a> wheel installer is cool?</p><p>And does it support symlinking `.pyc` files across optimization levels, so that you can save space when they are identical?</p><p>And does it support symlinking all files across different install locations (e.g. site-packages for different Python implementations), so that you can save lots of space when you are installing 6 identical copies of the same package?</p><p>Of course, I am about to find out how much these symlinks break, but <a href="https://social.treehouse.systems/tags/gpep517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>gpep517</span></a> 19 is out with support for all this, and <a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Gentoo</span></a> eclass patches are ready.</p><p><a href="https://pypi.org/project/gpep517/19/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/gpep517/19/</span><span class="invisible"></span></a><br><a href="https://github.com/gentoo/gentoo/pull/41905" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/gentoo/gentoo/pull/</span><span class="invisible">41905</span></a></p><p><a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>Uwaga: <a href="https://pol.social/tags/setuptools" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>setuptools</span></a> ogłosiło, że `setup.py install` wyleci 2025-10-31.</p><p><a href="https://setuptools.pypa.io/en/latest/history.html#v80-1-0" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">setuptools.pypa.io/en/latest/h</span><span class="invisible">istory.html#v80-1-0</span></a></p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a> <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>PSA: <a href="https://social.treehouse.systems/tags/setuptools" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>setuptools</span></a> added a deadline for `setup.py install` removal: 2025-10-31.</p><p><a href="https://setuptools.pypa.io/en/latest/history.html#v80-1-0" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">setuptools.pypa.io/en/latest/h</span><span class="invisible">istory.html#v80-1-0</span></a></p><p><a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a> <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> <a href="https://social.treehouse.systems/tags/packaging" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>packaging</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p><a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a>: let's split build system backend from frontend.</p><p>Practically all PEP517 build systems: bringing their own frontend.</p><p><a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p><a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a>: rozdzielmy część backendową systemu budowania od frontendów.</p><p>Praktycznie wszystkie backendy PEP517: mają własny frontend.</p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p><a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Gentoo</span></a> is also going "full <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a>" now, or to be more precise, we are going to rip out the legacy code paths that used `setup.py install`. However, that doesn't mean that PEP517 support is a solved problem.</p><p>1. There are still packages that require `setup.py install`, and either outright reject or ignore PEP517. And I'm not talking of dead packages but actively maintained projects. <a href="https://social.treehouse.systems/tags/Fail2Ban" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fail2Ban</span></a> is a particularly notorious example (the way I see it, it's going to stop working sooner or later).</p><p>2. Some packages that do work with PEP517 builds, still require some hacks to install correctly. Sometimes it means moving files around, sometimes installing some files manually, sometimes patching stuff.</p><p>3. There are many packages that use the legacy setuptools backend to workaround their broken PEP517 port. Fortunately, these are at least easy to fix, provided you can convince upstream that actually altering sys.path is the correct solution.</p><p>4. Finally, we have removed a fair bunch of "hopeless" packages.</p><p><a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p><a href="https://pol.social/tags/Gentoo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Gentoo</span></a> przechodzi na "100% <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a>", a dokładniej, to usuwamy kod wspierający `setup.py install`. Nie oznacza to jednak, że ekosystem doczekał się bezproblemowego wsparcia dla tego standardu.</p><p>1. Nadal mamy paczki, które wymagają `setup.py install`, i albo odrzucają, albo ignorują, PEP517. I nie mówię tu o nierozwijanych starociach, lecz aktywnych projektach. <a href="https://pol.social/tags/Fail2Ban" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Fail2Ban</span></a> jest tu przykładem wartym nagany (jestem przekonany, że prędzej czy później przestanie działać).</p><p>2. Niektóre paczki działają, ale wymagają obejść. Czasem trzeba przerzucić pliki po instalacji, czasem trzeba doinstalować jakiś brakujący plik, a czasem coś połatać.</p><p>3. Wiele paczek nadal wymaga przestarzałego ("legacy") backendu setuptools, by obejść problemy z portem na PEP517. Szczęśliwie, z reguły łatwo się je naprawia, o ile uda się przekonać autorów, że modyfikacja sys.path to właściwe rozwiązanie.</p><p>4. No i sporo paczek, dla których "nie było nadziei", wyleciało.</p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>Skoro już ugaszono te największe pożary, porozmawiajmy o innych fajnych rzeczach, które dzieją się&nbsp;z <a href="https://pol.social/tags/setuptools" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>setuptools</span></a>.</p><p>Na ten przykład, setuptools niedawno zaimplementowało PEP 639 (nowe metadane, dotyczące licencji). Przy okazji oznaczyli swoje poprzednie pole `license-field` jako przestarzałe, dając ludziom czas do 2026-02-18 na podmianę. Ostrzeżenie podpowiada też, że nowe pole wymaga setputools w wersji 77, którą&nbsp;wydano… tydzień temu.</p><p>No więc setuptools praktycznie mówi nam, że mamy do wyboru: albo używać&nbsp;starego rozwiązania, które oznacza, że wszystkie używające go wersje paczki przestaną się budować w lutym przyszłego roku, albo nowego rozwiązania, które wymagać będzie wersji setuptools sprzed tygodnia (i pozbawi was możliwości wsparcia starszych wersji Pythona, które najwyraźniej obchodzą jeszcze parę projektów).</p><p>No i rzecz jasna społeczność pythonowa podpowie: przypnij konkretną wersję zależności. Możecie sobie wyobrazić, jaka to będzie wielka frajda, kiedy jedne projekty zaczną arbitralnie przypinać wersję&nbsp;setuptools (np. do &lt;77), żeby pozbyć&nbsp;się&nbsp;ostrzeżeń, a inne będą wymagać &gt;=77 ze względu na nową konfigurację.</p><p>W takim razie… może mają państwo ochotę porozmawiać o systemie budowania flit? Albo o hatchling?</p><p>PS. A najśmieszniejsze w tym wszystkim to, że ostrzeżenie odnosi się do instrukcji, której jeszcze nawet nie zaktualizowano i która nadal twierdzi, że setuptools nie obsługują PEP 639.</p><p><a href="https://github.com/pypa/setuptools/blob/6ead555c5fb29bc57fe6105b1bffc163f56fd558/setuptools/config/_apply_pyprojecttoml.py#L100-L106" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypa/setuptools/blo</span><span class="invisible">b/6ead555c5fb29bc57fe6105b1bffc163f56fd558/setuptools/config/_apply_pyprojecttoml.py#L100-L106</span></a><br><a href="https://web.archive.org/web/20250324035753/https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license-files" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">web.archive.org/web/2025032403</span><span class="invisible">5753/https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license-files</span></a></p><p><a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> <a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>So, now that the urgent fires have been put out for the time being, let's talk what other fun stuff <a href="https://social.treehouse.systems/tags/setuptools" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>setuptools</span></a> are doing these days.</p><p>For example, they have implemented PEP 639 recently (new license metadata). While doing that, they immediately deprecated their previous `license-field` field, giving people until 2026-02-18 to update their projects. The deprecation warnings also gives a helpful hint that you need setuptools 77 for the new field, which was released… a week ago.</p><p>So yeah, setuptools pretty much tells you that you need to choose between the old solution that means that all the versions of your package using it will stop building next February, or the new solution which means that your package will now require a week-old setuptools release (and effectively kill support for EOL Python versions, for which some projects apparently still care).</p><p>And of course the <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a> community will tell you to solve the problem by pinning dependencies. And guess what happens when people put arbitrary pins (say, &lt;77) to silence this deprecation warning, and other people have &gt;=77 dependency, because they use the new variant.</p><p>So… would you like to talk about flit, perhaps? Or hatchling?</p><p>PS. The best joke is that they're pointing at a packaging guide that hasn't even been updated yet and still states that setuptools do not implement PEP 639.</p><p><a href="https://github.com/pypa/setuptools/blob/6ead555c5fb29bc57fe6105b1bffc163f56fd558/setuptools/config/_apply_pyprojecttoml.py#L100-L106" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypa/setuptools/blo</span><span class="invisible">b/6ead555c5fb29bc57fe6105b1bffc163f56fd558/setuptools/config/_apply_pyprojecttoml.py#L100-L106</span></a><br><a href="https://web.archive.org/web/20250324035753/https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license-files" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">web.archive.org/web/2025032403</span><span class="invisible">5753/https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license-files</span></a></p><p><a href="https://social.treehouse.systems/tags/packaging" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>packaging</span></a> <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>&gt; Nowy system budowania <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> zbudowany na "dziesiątkach lat doświadczenia w ekosystemie i pracy z oprogramowaniem enterprise w skali światowej." [tłum. własne]</p><p>Sprawdza.</p><p>&gt; Cykliczne zależność od samego siebie, przez co w ogóle tego nie da się zbudować.</p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>&gt; A new <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> build system built on "decades of experience in the ecosystem and working on enterprise software at a global scale."</p><p>Looks inside.</p><p>&gt; A cyclic dependency on itself, making bootstrap impossible.</p><p><a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>Porównajmy backendy <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> dla paczek napisanych w samym Pythonie:</p><p><a href="https://pol.social/tags/flit" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>flit</span></a>-core: 51 KiB archiwum źródłowe, bez zależności, instaluje się 0,05 s, ~150 KiB po zainstalowaniu, działa wszedzie<br><a href="https://pol.social/tags/UvBuild" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>UvBuild</span></a>: 300 KiB archiwum, wymaga ~250 zależności crate (54 MiB pobierania, ~600 MiB w .cargo), buduje się 1 min 20 s (na 12-wątkowym procesorze), 4,2 MiB po zainstalowaniu, wspiera kilkanaście platform</p><p>I oczywiście, że flit-core ma szerszą funkcjonalność. Ale jestem przekonany, że gdzieś ktoś potrzebuje zaoszczędzić te kilka milisekund budowania paczek Pythona.</p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a> <a href="https://pol.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RustLang</span></a> <a href="https://pol.social/tags/uv" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>uv</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>Let's compare <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> backends for pure <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a> packages:</p><p><a href="https://social.treehouse.systems/tags/flit" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>flit</span></a>-core: 51 KiB sdist, no dependencies, 0.05 s to install, ~150 KiB after installing, works everywhere<br><a href="https://social.treehouse.systems/tags/UvBuild" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>UvBuild</span></a>: 300 KiB sdist, requires ~250 crates (54 MiB download, ~600 MiB .cargo directory), 1 min 20 s to install (on a 12-thread system), 4.2 MiB after installing, supports a dozen platforms</p><p>And yes, you guessed right, flit-core has more functionality. But I'm sure that there are performance-critical wheel building workflows that will benefit from these few milliseconds shaved off wheel building time.</p><p><a href="https://social.treehouse.systems/tags/RustLang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RustLang</span></a> <a href="https://social.treehouse.systems/tags/uv" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>uv</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>Jakby ktoś nie śledził, to informuję, że <a href="https://pol.social/tags/UvBuild" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>UvBuild</span></a> jednak powstaje — i to straszna wiadomość dla wszystkich tych, których system nie jest wspierany przez <a href="https://pol.social/tags/RustLang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RustLang</span></a>.</p><p>O co chodzi? Otóż, uv-build to system budowania <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> dla projektów w "czystym" Pythonie (znaczy, bez kompilowanych rozszerzeń), który jest napisany w Ruście. Tak, dobrze wnioskujecie: budowanie niektórych paczek, które zawierają *wyłącznie pliki Pythona*, będzie teraz wymagało programu skompilowanego w Ruście.</p><p>Co to oznacza dla mnie? Czeka ma tłumaczenie ludziom, raz po raz, że wybrali "zły" backend, i ich paczka teraz nie jest przenośna, i niektórzy użytkownicy <a href="https://pol.social/tags/Gentoo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Gentoo</span></a> nie będą mogli już jej używać. Użeranie się z większą liczbą toksycznych ludzi, których po prostu nie obchodzą problemy innych, albo wprost wykorzystają sytuację, by kopnąć leżącego.</p><p>Oczywiście, zawsze jest nadzieja, że ktoś napisze wersję w Pythonie, której będzie można używać w miejsce standardowej. Ale nie będzie to nic przyjemnego, bo mówimy o projekcie "z szybkim tempem rozwoju" — który wprost odrzucił utrzymanie dodatkowej wersji w Pythonie, "ze względu na ograniczenia czasowe i, jak wspominano w wątku, fundamentalne różnice zachowania pomiędzy bibliotekami standardowymi Rusta I Pythona" [tłum. własne].</p><p><a href="https://github.com/astral-sh/uv/issues/3957#issuecomment-2657825266" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/astral-sh/uv/issues</span><span class="invisible">/3957#issuecomment-2657825266</span></a></p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>In case you aren't following the threads, <a href="https://social.treehouse.systems/tags/UvBuild" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>UvBuild</span></a> is happening after all — and that's horrible news for anyone whose platform isn't supported by <a href="https://social.treehouse.systems/tags/RustLang" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>RustLang</span></a>.</p><p>What's that all about? Well, uv-build is a <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> backend for pure <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a> packages, that's written in Rust. Yes, that's what you think it means — building some *pure Python* packages will now require using a binary written in Rust now.</p><p>What does that mean for me? Having to repeatedly explain to people that their build backend decision is a problem for the portability of their package, and that some of <a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Gentoo</span></a> users can't use it anymore. Having to deal even more with toxic people who are not interested in our problems, or who will even deliberately use this backend as an excuse to remove platform support.</p><p>Though, there is always some hope that someone will write a drop-in pure Python replacement for the backend, though it's going to be a pain since we're talking of following a project with high "rate of development" — a project that explicitly rejected maintaining a pure Python fallback "due to time constraints and, as mentioned by some, foundational differences in behavior between the Rust and Python standard libraries".</p><p><a href="https://github.com/astral-sh/uv/issues/3957#issuecomment-2657825266" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/astral-sh/uv/issues</span><span class="invisible">/3957#issuecomment-2657825266</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>Today I'm posting on the company blog:</p><p>"""<br>In 2017, <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> changed the <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a> <a href="https://social.treehouse.systems/tags/packaging" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>packaging</span></a> landscape forever. Prior to it, the setuptools build system held a de facto monopoly. If you were to publish a Python package on PyPI, you either used setuptools, extended it or had to create something reasonably compatible with it. And given how many different options setuptools provided, and how various users used different combinations of these options, you were likely to spend a lot of effort implementing what you believed to be necessary, and still learn that someone's workflow does not work.</p><p>PEP 517 enabled a ‘black box’ approach to building Python packages. A package needed only to name the backend it wished to use, and the backend implemented a few predefined functions to run the build process and create a source or binary distribution. This interface is well-defined and relatively simple. There are only two mandatory functions, and currently up to five optional — compared to 28 commands in setuptools (each with its own list of options).</p><p>Unsurprisingly, many new build systems were created. Some of them focused on pure Python packages, others on integration with other build systems such as CMake, Meson or Cargo. It is clear that you can now choose between many new build systems. But how popular are they today? In this post, I would like to explore that.<br>"""</p><p><a href="https://labs.quansight.org/blog/pep-517-build-system-popularity" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">labs.quansight.org/blog/pep-51</span><span class="invisible">7-build-system-popularity</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>Okej, sprecyzujmy coś. <a href="https://pol.social/tags/PEP621" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP621</span></a> to nie jest końcowy standard, który unifikuje systemy budowania <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a>.</p><p>Tak, to dobry standard. Tak, dostarcza jednolitą&nbsp;specyfikację dla metadanych paczek. Jednakże, pomijając już opcję "dynamicznych metadanych", które zależą&nbsp;od implementacji, to PEP 621 nie specyfikuje, w jaki sposób mają tworzone być paczki źródłowe albo binarne — na przykład, skąd należy brać kod Pythona do paczki. To wszystko jest nadal wyborem konkretnej implementacji.</p><p>Dobra wiadomość: jeżeli paczka jest prosta jak konstrukcja cepa, i w miarę typowa, to najpewniej można w niej podmienić system budowania na inny zgodny z PEP 621, i będzie działać. Zła wiadomość: nie ma żadnej gwarancji. Rezultatem może być&nbsp;wszystko, od jakiś minimalnych różnic, do całkowicie dysfunkcyjnych paczek.</p><p><a href="https://peps.python.org/pep-0621" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">peps.python.org/pep-0621</span><span class="invisible"></span></a></p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>Okay, let's get things clear. <a href="https://social.treehouse.systems/tags/PEP621" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP621</span></a> isn't the ultimate standard to unify <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a> build systems.</p><p>Yes, it's a good standard. Yes, it specifies a uniform format for specifying baseline package metadata. However, besides allowing for implementation-defined dynamic metadata, it does not specify anything related to how the source distributions and wheels are actually created — where to take Python packages from, for example. All these things are still implementation-defined.</p><p>Good news is, if your package has a trivial and common enough layout, then you can probably switch between different PEP 621-compliant build systems and things will just work. Bad news is, there's no guarantee of that. You may as well get anything from slight packaging differences to completely dysfunctional wheels and/or sdists.</p><p><a href="https://peps.python.org/pep-0621" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">peps.python.org/pep-0621</span><span class="invisible"></span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>A tak na marginesie, zdaje się, że jedyny powód, dla którego <a href="https://pol.social/tags/setuptools" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>setuptools</span></a> jeszcze istnieje, to dawanie ludziom wymówek, żeby tworzyli nowe backendy <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PEP517</span></a>. No, bo w porównaniu z setuptools to każdy wydaje się znacznie lepszy.</p><p><a href="https://pol.social/tags/Gentoo" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Gentoo</span></a> <a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Python</span></a></p>