mastodontech.de ist einer von vielen unabhängigen Mastodon-Servern, mit dem du dich im Fediverse beteiligen kannst.
Offen für alle (über 16) und bereitgestellt von Markus'Blog

Serverstatistik:

1,5 Tsd.
aktive Profile

#hatchling

0 Beiträge0 Beteiligte0 Beiträge heute
~meoralis~There are only great hair days for our black redstart <a href="https://pixelfed.social/discover/tags/hatchlings?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#hatchlings</a>! 🐣 💅🏼<br> <br> By the way, there are five of them! 🤯 One fell out of the nest the day before yesterday, but we put it back in (but not really thinking it would survive because it must have been hours). It's hard to see, but I thought I saw five bodies wiggling in there earlier? I don't want to climb up there too often because the parents are not big fans of us.<br> <br> <br> <a href="https://pixelfed.social/discover/tags/Hausrotschwanz?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Hausrotschwanz</a> <a href="https://pixelfed.social/discover/tags/Hausrotschwänzchen?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Hausrotschwänzchen</a> <a href="https://pixelfed.social/discover/tags/Vogelnest?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Vogelnest</a> <a href="https://pixelfed.social/discover/tags/birdsNest?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#birdsNest</a> <a href="https://pixelfed.social/discover/tags/hatchling?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#hatchling</a> <a href="https://pixelfed.social/discover/tags/Nestling?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Nestling</a> <a href="https://pixelfed.social/discover/tags/Nestlinge?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Nestlinge</a> <a href="https://pixelfed.social/discover/tags/Nesthocker?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Nesthocker</a> <a href="https://pixelfed.social/discover/tags/Vogelbaby?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Vogelbaby</a> <a href="https://pixelfed.social/discover/tags/Vogelbabys?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Vogelbabys</a> <a href="https://pixelfed.social/discover/tags/babyBirds?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#babyBirds</a> <a href="https://pixelfed.social/discover/tags/babyBird?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#babyBird</a> <a href="https://pixelfed.social/discover/tags/Küken?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Küken</a> <a href="https://pixelfed.social/discover/tags/Vogelküken?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Vogelküken</a> <a href="https://pixelfed.social/discover/tags/blackRedstart?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#blackRedstart</a> <a href="https://pixelfed.social/discover/tags/blackRedstarts?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#blackRedstarts</a> <a href="https://pixelfed.social/discover/tags/birds?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#birds</a> <a href="https://pixelfed.social/discover/tags/birdsOfMastodon?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#birdsOfMastodon</a> <a href="https://pixelfed.social/discover/tags/birdsOfPixelfed?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#birdsOfPixelfed</a>
~meoralis~Our black redstarts pulled it off!! I became an auntie yesterday (I think)!!! 😍 The female must have laid new eggs (or added one more) because there are four <a href="https://pixelfed.social/discover/tags/hatchlings?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#hatchlings</a> now 🐣<br> <br> Previously: <a href="https://pixelfed.social/p/meoralis/834443544039365729" rel="nofollow noopener" target="_blank">https://pixelfed.social/p/meoralis/834443544039365729</a><br> <br> <br> <a href="https://pixelfed.social/discover/tags/Hausrotschwanz?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Hausrotschwanz</a> <a href="https://pixelfed.social/discover/tags/Hausrotschwänzchen?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Hausrotschwänzchen</a> <a href="https://pixelfed.social/discover/tags/Vogelnest?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Vogelnest</a> <a href="https://pixelfed.social/discover/tags/birdsNest?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#birdsNest</a> <a href="https://pixelfed.social/discover/tags/hatchling?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#hatchling</a> <a href="https://pixelfed.social/discover/tags/Nestling?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Nestling</a> <a href="https://pixelfed.social/discover/tags/Nestlinge?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Nestlinge</a> <a href="https://pixelfed.social/discover/tags/Nesthocker?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Nesthocker</a> <a href="https://pixelfed.social/discover/tags/Vogelbaby?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Vogelbaby</a> <a href="https://pixelfed.social/discover/tags/Vogelbabys?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#Vogelbabys</a> <a href="https://pixelfed.social/discover/tags/babyBirds?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#babyBirds</a> <a href="https://pixelfed.social/discover/tags/babyBird?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#babyBird</a> <a href="https://pixelfed.social/discover/tags/blackRedstart?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#blackRedstart</a> <a href="https://pixelfed.social/discover/tags/blackRedstarts?src=hash" class="u-url hashtag" rel="nofollow noopener" target="_blank">#blackRedstarts</a>
LotharMucki 🦄<p>Es wurden auf der <a href="https://norden.social/tags/Tandem" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Tandem</span></a> -Tour <a href="https://norden.social/tags/Schwan" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Schwan</span></a> -nen- <a href="https://norden.social/tags/K%C3%BCken" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Küken</span></a> fotografiert! 😍 <a href="https://norden.social/tags/Schwanenk%C3%BCken" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Schwanenküken</span></a> <a href="https://norden.social/tags/Swan" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Swan</span></a> <a href="https://norden.social/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> <a href="https://norden.social/tags/BirdsOfFediverse" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdsOfFediverse</span></a> <a href="https://norden.social/tags/Vogelfotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vogelfotografie</span></a> <a href="https://norden.social/tags/BirdPhotography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdPhotography</span></a> <a href="https://norden.social/tags/Fotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Fotografie</span></a> <a href="https://norden.social/tags/Photography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Photography</span></a> <a href="https://norden.social/tags/Naturfotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Naturfotografie</span></a> <a href="https://norden.social/tags/NaturePhotography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NaturePhotography</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>What's worse than <a href="https://social.treehouse.systems/tags/setuptools" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>setuptools</span></a>? A package switching over to <a href="https://social.treehouse.systems/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a>, then internally calling setuptools in an awful way to build a C extension, completely bypassing out-of-tree builds.</p><p><a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a> <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a></p>
LotharMucki 🦄<p>Bonus: Ein kurzes Videos davon zusätzlich. 🥰</p><p><a href="https://norden.social/tags/Photographie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Photographie</span></a> <a href="https://norden.social/tags/Fotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Fotografie</span></a> <a href="https://norden.social/tags/Vogelfotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vogelfotografie</span></a> <a href="https://norden.social/tags/BirdPhotography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdPhotography</span></a> <a href="https://norden.social/tags/Mallard" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Mallard</span></a> <a href="https://norden.social/tags/Duck" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Duck</span></a> <a href="https://norden.social/tags/Chick" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Chick</span></a> <a href="https://norden.social/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> <a href="https://norden.social/tags/BirdsOfFediverse" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdsOfFediverse</span></a> <a href="https://norden.social/tags/Stockente" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Stockente</span></a> <a href="https://norden.social/tags/K%C3%BCken" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Küken</span></a> <a href="https://norden.social/tags/NakNak" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NakNak</span></a></p>
LotharMucki 🦄<p>3/3 <a href="https://norden.social/tags/Photographie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Photographie</span></a> <a href="https://norden.social/tags/Fotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Fotografie</span></a> <a href="https://norden.social/tags/Vogelfotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vogelfotografie</span></a> <a href="https://norden.social/tags/BirdPhotography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdPhotography</span></a> <a href="https://norden.social/tags/Mallard" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Mallard</span></a> <a href="https://norden.social/tags/Duck" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Duck</span></a> <a href="https://norden.social/tags/Chick" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Chick</span></a> <a href="https://norden.social/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> <a href="https://norden.social/tags/BirdsOfFediverse" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdsOfFediverse</span></a> <a href="https://norden.social/tags/Stockente" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Stockente</span></a> <a href="https://norden.social/tags/NakNak" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NakNak</span></a> <a href="https://norden.social/tags/K%C3%BCken" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Küken</span></a></p>
LotharMucki 🦄<p>2/3<br><a href="https://norden.social/tags/Photographie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Photographie</span></a> <a href="https://norden.social/tags/Fotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Fotografie</span></a> <a href="https://norden.social/tags/Vogelfotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vogelfotografie</span></a> <a href="https://norden.social/tags/BirdPhotography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdPhotography</span></a> <a href="https://norden.social/tags/Mallard" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Mallard</span></a> <a href="https://norden.social/tags/Duck" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Duck</span></a> <a href="https://norden.social/tags/Chick" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Chick</span></a> <a href="https://norden.social/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> <a href="https://norden.social/tags/BirdsOfFediverse" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdsOfFediverse</span></a> <a href="https://norden.social/tags/Stockente" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Stockente</span></a> <a href="https://norden.social/tags/NakNak" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NakNak</span></a> <a href="https://norden.social/tags/K%C3%BCken" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Küken</span></a></p>
LotharMucki 🦄<p>Das Entenhaus im <a href="https://norden.social/tags/BotanischerGartenRostock" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BotanischerGartenRostock</span></a> war schon länger unter Beobachtung. Heute konnte ich direkt miterleben, wie die <a href="https://norden.social/tags/Stockente" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Stockente</span></a> n -Mama mit ihren 13 <a href="https://norden.social/tags/K%C3%BCken" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Küken</span></a> den 1. Ausflug gemacht hat. Ich habe direkt erlebt, wie die Lütten ins Wasser des Teichs geplumpst sind! 😍 1/3<br><a href="https://norden.social/tags/Photographie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Photographie</span></a> <a href="https://norden.social/tags/Fotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Fotografie</span></a> <a href="https://norden.social/tags/Vogelfotografie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Vogelfotografie</span></a> <a href="https://norden.social/tags/BirdPhotography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdPhotography</span></a> <a href="https://norden.social/tags/Mallard" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Mallard</span></a> <a href="https://norden.social/tags/Duck" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Duck</span></a> <a href="https://norden.social/tags/Chick" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Chick</span></a> <a href="https://norden.social/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> <a href="https://norden.social/tags/BirdsOfFediverse" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BirdsOfFediverse</span></a> <a href="https://norden.social/tags/NakNak" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NakNak</span></a></p>
LordWoolamaloo<p>Close up of the tiny cygnet emerging from its egg <a href="https://www.flickr.com/photos/woolamaloo_gazette/54506491283/in/photostream/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">flickr.com/photos/woolamaloo_g</span><span class="invisible">azette/54506491283/in/photostream/</span></a></p><p>Remarkable &amp; quite wonderful to witness this tiny miracle.</p><p><a href="https://mastodon.scot/tags/Edinburgh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Edinburgh</span></a> <a href="https://mastodon.scot/tags/Edimbourg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Edimbourg</span></a> <a href="https://mastodon.scot/tags/photography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>photography</span></a> <a href="https://mastodon.scot/tags/photographie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>photographie</span></a> <a href="https://mastodon.scot/tags/Nature" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Nature</span></a> <a href="https://mastodon.scot/tags/hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hatchling</span></a> <a href="https://mastodon.scot/tags/cygne" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cygne</span></a> <a href="https://mastodon.scot/tags/cygnet" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cygnet</span></a> <a href="https://mastodon.scot/tags/swan" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>swan</span></a> <a href="https://mastodon.scot/tags/birth" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>birth</span></a> <a href="https://mastodon.scot/tags/wildlife" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>wildlife</span></a> <a href="https://mastodon.scot/tags/UnionCanal" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UnionCanal</span></a></p>
LordWoolamaloo<p>Mama Swan &amp; wee Attenborough encouraging the second cygnet to emerge from its egg <a href="https://www.flickr.com/photos/woolamaloo_gazette/54506220106/in/photostream/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://www.</span><span class="ellipsis">flickr.com/photos/woolamaloo_g</span><span class="invisible">azette/54506220106/in/photostream/</span></a><br>This was literally the first moments of life for this tiny fella. Welcome to the planet, little one. Can't believe how fortunate I was to witness this little miracle happening.</p><p><a href="https://mastodon.scot/tags/Edinburgh" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Edinburgh</span></a> <a href="https://mastodon.scot/tags/Edimbourg" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Edimbourg</span></a> <a href="https://mastodon.scot/tags/photography" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>photography</span></a> <a href="https://mastodon.scot/tags/photographie" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>photographie</span></a> <a href="https://mastodon.scot/tags/nature" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>nature</span></a> <a href="https://mastodon.scot/tags/NestFest" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NestFest</span></a> <a href="https://mastodon.scot/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> <a href="https://mastodon.scot/tags/birth" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>birth</span></a> <a href="https://mastodon.scot/tags/swans" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>swans</span></a> <a href="https://mastodon.scot/tags/cygnes" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cygnes</span></a> <a href="https://mastodon.scot/tags/cygnets" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cygnets</span></a> <a href="https://mastodon.scot/tags/Wildlife" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Wildlife</span></a> <a href="https://mastodon.scot/tags/UnionCanal" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UnionCanal</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>Oh, I forgot to post that: there's a bug in <a href="https://social.treehouse.systems/tags/hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hatchling</span></a> that makes it randomly install the wrong files if you're building in a path that just happens to match one of the gitignore entries.</p><p>Say, if upstream ignores "var/", and you happen to be building inside /var/tmp…</p><p><a href="https://github.com/pypa/hatch/issues/1964" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypa/hatch/issues/1</span><span class="invisible">964</span></a></p><p><a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a> <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>I suppose I could use my experience to give some <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a> build system recommendations.</p><p>For pure <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a> packages:</p><p>1. <a href="https://social.treehouse.systems/tags/flit_core" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>flit_core</span></a> (<a href="https://pypi.org/project/flit-core/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/flit-core/</span><span class="invisible"></span></a>) — it's lightweight and simple, and has no dependencies (in modern Python versions, for older Pythons it vendors tomli).</p><p>2. <a href="https://social.treehouse.systems/tags/hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hatchling</span></a> (<a href="https://pypi.org/project/hatchling/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/hatchling/</span><span class="invisible"></span></a>) — it's popular and quite powerful, but has many vendored dependencies and no stand-alone test suite (which makes it painful to maintain in <a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a>).</p><p>For Python packages with C extensions: <a href="https://social.treehouse.systems/tags/meson" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>meson</span></a>-python (<a href="https://pypi.org/project/meson-python/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/meson-python/</span><span class="invisible"></span></a>) — which combines the power and correctness of meson build system with good very Python integration.</p><p>For Python packages with Rust extensions: <a href="https://social.treehouse.systems/tags/maturin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>maturin</span></a> (<a href="https://pypi.org/project/maturin/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/maturin/</span><span class="invisible"></span></a>) — which is simply a good builder for precisely that kind of packages.</p><p>Now, I strongly discourage:</p><p>A. <a href="https://social.treehouse.systems/tags/setuptools" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>setuptools</span></a> — lots of vendored NIH dependencies (that can alternatively be unvendored for cyclic deps), lots of deprecations over time (we're still seeing tons of deprecation warnings all over the place), many unsolved bugs (e.g. parallel C extension builds are broken in a few ways), a lot of technical debt, and if all that wasn't enough, it's slow.</p><p>B. <a href="https://social.treehouse.systems/tags/poetry" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>poetry</span></a>-core — a very tricky build system with lots of pitfalls (I've reported a lot of mistakes done when migrating to it).</p><p>C. Practically any other build system — writing new backends is trivial, so everyone and their grandmother must have one. And then, they often carry a lot of NIH dependencies (if you're reinventing a build system, you may reinvent everything else), lack experience and reintroduce the same bugs. And if that wasn't enough, packaging them in distributions is a lot of work for no real benefit to anyone.</p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>W sumie mogę dać parę rekomendacji systemów budowania <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a>.</p><p>Dla paczek w samym Pythonie:</p><p>1. <a href="https://pol.social/tags/flit_core" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>flit_core</span></a> (<a href="https://pypi.org/project/flit-core/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/flit-core/</span><span class="invisible"></span></a>) — leciutki, prosty, i nie ma zależności (za wyjątkiem włączonego tomli dla starszych wersji Pythona).</p><p>2. <a href="https://pol.social/tags/hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>hatchling</span></a> (<a href="https://pypi.org/project/hatchling/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/hatchling/</span><span class="invisible"></span></a>) — popularny, duża funkcjonalność, ale ma sporo włączonych zależności, a testy są zależne od reszty projektu hatch (przez co w <a href="https://pol.social/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a> się mocno z tym męczymy).</p><p>Dla paczek z rozszerzeniami w C: <a href="https://pol.social/tags/meson" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>meson</span></a>-python (<a href="https://pypi.org/project/meson-python/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/meson-python/</span><span class="invisible"></span></a>) — połączenie szerokiej funkcjonalności i poprawności mesona z dobrą integracją z Pythonem.</p><p>Dla paczek z rozserzeniami w Ruście: <a href="https://pol.social/tags/maturin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>maturin</span></a> (<a href="https://pypi.org/project/maturin/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">pypi.org/project/maturin/</span><span class="invisible"></span></a>) — po prostu dobry system budowania dla tego typu paczek.</p><p>Stanowczo odradzam:</p><p>A. <a href="https://pol.social/tags/setuptools" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>setuptools</span></a> — mnóstwo włączonych do projektu zależności, które wynajdują koło na nowo (które można zastąpić zewnętrznymi, które z kolei mają cykliczną zależność od setuptools), ciągłe wycofywanie starej funkcjonalności (której wciąż używa mnóstwo paczek), wiele nierozwiązanych problemów (np. równoległe budowanie plików C jest częściowo popsute), sporo długu technicznego, a jeżeli to nie wystarcza, to do tego strasznie powolny.</p><p>B. <a href="https://pol.social/tags/poetry" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>poetry</span></a>-core — trudny do poprawnego użycia system budowania, w którym bardzo łatwo popełnić błąd (a zgłaszałem już wiele pomyłek, które ludzie robili migrując swoje projekty).</p><p>C. Praktycznie każdy inny system budowania — pisanie nowych backendów stało się banalne, więc każdy musi mieć swój. Do tego często mają mnóstwo zależności, które wynajdują koło na nowo (jak już ktoś chce wynaleźć własny system budowania, to może równie dobrze pójść&nbsp;na całość i wynaleźć&nbsp;wszystko), brak doświadczenia i tym samym powtarzają te same błędy przeszłości. A jeżeli tego nie wystarczy, to dodawanie pod nie paczek do dystrybucji to tylko kupa roboty bez żadnej realnej korzyści.</p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>Some time ago two <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a> build systems introduced <a href="https://social.treehouse.systems/tags/PyPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PyPI</span></a> trove classifier verification. At a first glance, it makes sense. After all, if you made a mistake somewhere, you'd rather know early than when you try to upload the package. The problem is, that the verification fires for people building packages locally too — including <a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a> users.</p><p>Now, this function was based on the <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a> "trove-classifiers" package. Whenever a new classifier is introduced, a new release of the package is made. When you're building a package using tools such as `build` or `pip` (isolated build), the newest version of this package is being installed from the Internet. On the other, a Gentoo user may have an old version, unless we enforce an upgrade via package dependencies. Then building packages that use newer classifiers will fail, and with a confusing message too. Confusing because: 1) contrary to the message, the classifier is valid; and 2) even if it weren't, it doesn't affect us in any way.</p><p>And so we asked for an ability to disable this. While it took some time, the <a href="https://social.treehouse.systems/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> showed understanding and eventually merged my patch. On the other hand, the <a href="https://social.treehouse.systems/tags/setuptools" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>setuptools</span></a> maintainer… well, started a long and tedious debate that resulted in ignoring the trivial solution to the actual problem (as "unnecessary complexity"). Instead, we were given another option: we could entirely disable `pyproject.toml` validation. It's not really acceptable, for two reasons: 1) because setuptools actually rely on this validation (so removing it could result in broken package installs instead of an error, if the file is not valid), and 2) because it produces an awful warning on every package build. So we'd end up bullying Gentoo users with false warnings, and some of them would probably end up filing invalid bugs to various upstreams.</p><p>The bottom line is: don't use setuptools.</p><p><a href="https://github.com/pypa/hatch/issues/1368" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypa/hatch/issues/1</span><span class="invisible">368</span></a><br><a href="https://github.com/pypa/setuptools/issues/4459" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypa/setuptools/iss</span><span class="invisible">ues/4459</span></a></p>
mgorny-nyan (on) :autism:🙀🚂🐧<p>Jakiś czas temu dwa systemy budowania <a href="https://pol.social/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a> dorobiły się funkcji weryfikacji klasyfikatorów <a href="https://pol.social/tags/PyPI" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PyPI</span></a> ("trove classifiers"). Na pierwszy rzut oka, ma to sens: wszak warto poinformować autorów paczek od razu, jeżeli gdzieś popełniono błąd i paczka zostanie odrzucona. Problem stanowi jednak fakt, że ta weryfikacja dotyczy również budowania paczek lokalnie — a więc użytkowników <a href="https://pol.social/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a>.</p><p>Funkcję zbudowano w oparciu o paczkę "trove-classifiers". Ilekroć nowy klasyfikator dodawany jest do PyPI, wydawana jest nowa wersja tej paczki. Jeżeli używamy narzędzi takich jak `build` czy `pip`, każdorazowo z sieci instalowana jest najnowsza wersja tej paczki. Na Gentoo natomiast, o ile nie wymusimy tego zależnościami, użytkownik może mieć przestarzałą. Jeżeli wówczas spróbuje zainstalować paczkę Pythona, która używa nowszych klasyfikatorów, otrzyma mylący błąd o błędnym klasyfikatorze. Mylący, bowiem: 1) wbrew komunikatowi, klasyfikator jest poprawny; 2) nawet gdyby nie był, to problem nas w ogóle nie dotyczy.</p><p>Dlatego też wystąpiliśmy z prośbą o możliwości wyłączenia tej funkcji. Choć zajęło to trochę czasu, opiekun paczki <a href="https://pol.social/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> wykazał zrozumienie dla naszego problemu i zaakceptował moją łatkę. Z kolei opiekun <a href="https://pol.social/tags/setuptools" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>setuptools</span></a>… no cóż, podjął się długiej i bezowocnej debaty, która poskutkowała zignorowaniem trywialnego rozwiązania głównego problemu ("niepotrzebna komplikacja"). Zamiast tego, zaproponowano nam rozwiązanie dosyć wątpliwe — całkowite wyłączenie weryfikacji poprawności pliku `pyproject.toml`. Rozwiązanie nieakceptowalne z dwóch powodów: 1) dlatego, że setuptools polega na tej weryfikacji (a więc przy błędach w pliku moglibyśmy dostać zepsutą instalację zamiast błędu); 2) dlatego, że przy budowaniu każdej paczki rzuca paskudnym ostrzeżeniem. W praktyce więc znęcalibyśmy się nad użytkownikami Gentoo, zarzucając ich fałszywymi ostrzeżeniami, i niektórzy z nich prawdopodobnie niepotrzebnie zgłaszaliby problem autorom właściwej paczki.</p><p>Nie używajcie setuptools.</p><p><a href="https://github.com/pypa/hatch/issues/1368" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypa/hatch/issues/1</span><span class="invisible">368</span></a><br><a href="https://github.com/pypa/setuptools/issues/4459" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypa/setuptools/iss</span><span class="invisible">ues/4459</span></a></p><p><a href="https://pol.social/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a></p>
Hugo van Kemenade<p><span class="h-card" translate="no"><a href="https://hachyderm.io/@ofek" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>ofek</span></a></span> Hello and welcome to Mastodon!</p><p><a href="https://mastodon.social/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a> people: give <span class="h-card" translate="no"><a href="https://hachyderm.io/@ofek" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>ofek</span></a></span> a follow, he's the author of the <a href="https://mastodon.social/tags/Hatch" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatch</span></a> project manager and the <a href="https://mastodon.social/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> build backend, plus cool tools like <a href="https://github.com/ofek/pypinfo" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">github.com/ofek/pypinfo</span><span class="invisible"></span></a>, and wrote <a href="https://mastodon.social/tags/PEP723" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP723</span></a> "Inline script metadata"!</p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>How to politely point out that somebody's <a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a> build system is utter <a href="https://social.treehouse.systems/tags/NIH" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NIH</span></a>? Here's one whey… err, way:</p><p><a href="https://github.com/repo-helper/whey/issues/52" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/repo-helper/whey/is</span><span class="invisible">sues/52</span></a></p><p>And yes, it's complete NIH, with a dependency on ConsoleKit (seriously?!), a bunch of NIH packages, and a stale bot. On top of that, it's practically used only by its author.</p><p>So why do I care? Because the same person also made hatch-requirements-txt <a href="https://social.treehouse.systems/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> plugin, and said plugin depends on NIH packages (of course it does) using whey. So yeah, another case of making one potentially useful package (actually, I don't consider it useful, but random projects depend on it now) and using it to force your NIH projects on everyone.</p><p><a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a> <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>Essentially, distro developers are firefighters, putting out fires made by careless upstreams.</p><p>What I've wasted time on, today:</p><p>- making the non-standalone test suite of <a href="https://social.treehouse.systems/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> (sigh) work without <a href="https://social.treehouse.systems/tags/UV" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UV</span></a> again, so that a critical build dependency of a growing number of <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a> packages could be tested everywhere</p><p><a href="https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cc6e54e1df5e0802198c793f39107a9028b8698f" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitweb.gentoo.org/repo/gentoo.</span><span class="invisible">git/commit/?id=cc6e54e1df5e0802198c793f39107a9028b8698f</span></a><br><a href="https://bugs.gentoo.org/930662" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">bugs.gentoo.org/930662</span><span class="invisible"></span></a></p><p>- fixing effectively dead (but with a promise of revival) <a href="https://social.treehouse.systems/tags/PassLib" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PassLib</span></a> not to break random stuff via printing warnings when using newer <a href="https://social.treehouse.systems/tags/BCrypt" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>BCrypt</span></a> versions</p><p><a href="https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c1e015b65b74283a51893672739c5e4784b95273" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitweb.gentoo.org/repo/gentoo.</span><span class="invisible">git/commit/?id=c1e015b65b74283a51893672739c5e4784b95273</span></a><br><a href="https://bugs.gentoo.org/925289" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">bugs.gentoo.org/925289</span><span class="invisible"></span></a></p><p>- hacking the test suite of <a href="https://social.treehouse.systems/tags/ImageIO" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ImageIO</span></a> work using an offline copy of test data, rather than cloning its git repository at the beginning of tests</p><p><a href="https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=77ff4bc09d68067f2c635d43d446f308990e0873" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">gitweb.gentoo.org/repo/gentoo.</span><span class="invisible">git/commit/?id=77ff4bc09d68067f2c635d43d446f308990e0873</span></a></p><p>I really wish people would consider donating to distro developers more often, rather than to projects that create this thankless work for us.</p><p><a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>After getting yet another bug report about <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a> package (this time <a href="https://social.treehouse.systems/tags/VirtualEnv" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>VirtualEnv</span></a>) failing to build, because the user did not have new enough <a href="https://social.treehouse.systems/tags/TroveClassifiers" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>TroveClassifiers</span></a> installed, I've filed a bug asking <a href="https://social.treehouse.systems/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a> to make trove classifier validation either optional or non-fatal.</p><p>Right now this simply is not feasible. Technically, every package would need to specify a *minimal* `trove-classifiers` package dependency based on the classifiers they used, and we would have to keep these versions in every <a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a> ebuild. However, that's unlikely to ever happen, so we'd actually have to check all listed trove classifiers and map them back to package versions. Or, more realistically, just always depend on the newest trove-classifiers available and hope we don't forget to update the dependency.</p><p><a href="https://github.com/pypa/hatch/issues/1368" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">github.com/pypa/hatch/issues/1</span><span class="invisible">368</span></a><br><a href="https://bugs.gentoo.org/928447" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">bugs.gentoo.org/928447</span><span class="invisible"></span></a></p><p><a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a> <a href="https://social.treehouse.systems/tags/packaging" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>packaging</span></a></p>
mgorny-nyan (he) :autism:🙀🚂🐧<p>To quote myself:</p><p>"""<br>Honestly, I think the biggest problem here is that <a href="https://social.treehouse.systems/tags/Python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Python</span></a> <a href="https://social.treehouse.systems/tags/packaging" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>packaging</span></a> is infinitely complex and counter-intuitive, which means that anyone involved on either end is surprised to find a very high barrier of entry. The <a href="https://social.treehouse.systems/tags/Gentoo" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Gentoo</span></a> Python Guide has already 300 KiB of .rst files, and it is by no means comprehensive. At this point, distribution developers pretty much can't really package anything written in Python without getting a special training and/or senior developer review, and even senior developers have a hard time following the constantly changing landscape.</p><p>At the same time, Python framework in Gentoo has already a bunch of safety checks included to detect the most common pitfalls. Again, it is by no means comprehensive and I keep extending it whenever we discover yet another counterintuitive pitfall. This thread makes me think that we will need to add another check to make sure that PKG-INFO is dealt with when pyproject.toml is patched.<br>"""</p><p><a href="https://discuss.python.org/t/respecting-core-metadata-2-2-when-building-from-source-distributions/48886/47" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">discuss.python.org/t/respectin</span><span class="invisible">g-core-metadata-2-2-when-building-from-source-distributions/48886/47</span></a></p><p><a href="https://social.treehouse.systems/tags/PEP517" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PEP517</span></a> <a href="https://social.treehouse.systems/tags/Hatchling" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Hatchling</span></a></p>