Bear Beta Fan Club: Announcing Pre-release Candidates for His and Her QA Safety #401
Replies: 13 comments 33 replies
-
|
Amazing! I'll probably setup an additional GitHub CI workflow that always runs against |
Beta Was this translation helpful? Give feedback.
-
|
this is amazing!!!! thank you!!!! your work is so inspiring <3
…On Sat, Jun 29, 2024 at 3:27 AM Cecil Curry ***@***.***> wrote:
*Welcome.* Welcome, one and all bearthonistas, to the *Bear Beta Fan
Club.* Congrats. You're reading this, so you're automatically in the
club. Everyone who has submitted an issue in the last year has been pinged
onto this announcement. If you hate @beartype
<https://github.com/beartype> *or* love @beartype
<https://github.com/beartype> but hate your codebase, simply unsubscribe
from this announcement and watch as your codebase burns against the night
sky. It's fine. "The burning means it works!", you tell your coworkers.
*Beartype 0.19.0 Release Candidate 0* is the inaugural publication of
@beartype <https://github.com/beartype>'s first of many painfully broken
well-tested pre-releases. If you or someone you love uses @beartype
<https://github.com/beartype>, consider manually upgrading to this
pre-release and reporting all painful breakage to your nearest @beartype
issue tracker <https://github.com/beartype/beartype/issues>. Note that
installing pre-release versions with pip requires manually passing the
--pre option on the command-line:
pip install --upgrade --pre beartype # <-- LET THE THUNDER AND THE HEADS ROLL
You may now be thinking:
"What is this eldritch darkness in my GitHub feed?"
Allow QA-Daddy @leycec <https://github.com/leycec> to now gently exhaust
you on a Friday evening.
<https://camo.githubusercontent.com/f9604e27521039546b73a23c2e9f7e2750f2519c729fe024fe7a00551dcd64f7/68747470733a2f2f6d65646961312e74656e6f722e636f6d2f6d2f7a6166616a42313551735541414141432f70656163682d616e642e676966>
*Bear Beta Fan Club members pass out from general excitement*
@beartype <https://github.com/beartype> Beta Releases: The Becommoning
@beartype <https://github.com/beartype> 0.18.0 broke the entire world.
@leycec <https://github.com/leycec> can now admit that to himself while
clutching his Maine Coon teddy cat. If your codebase survived @beartype
<https://github.com/beartype> 0.18.0, you deserve an "I Survived @beartype
<https://github.com/beartype> 0.18.0 and All I Got Was This Lousy Badge"
badge. The ill-fated @beartype <https://github.com/beartype> 0.18.0
release cycle that nearly broke my fingers taught me many things:
suffering, pain, agony, *blah, blah*... You know. Just the standard
stuff, really.
@beartype <https://github.com/beartype> 0.18.0 taught me that @beartype
<https://github.com/beartype> has become *a lot* bigger than me. Other
people and people-like AI that are doing meaningful things with their lives
and synthetic lives (respectively) now depend on new @beartype
<https://github.com/beartype> releases not throwing up all over everybody.
@beartype <https://github.com/beartype> ≥ 0.19.0 intends to avoid that
throw-up. Several days before releasing any new *major version* like
0.19.0, 0.20.0, or 0.21.0: *...we see the number sequence I trust*
1. I will officially publish at least one *release candidate* on PyPI.
2. Everyone in the *Bear Beta Fan Club* (*...the pro bono lawyers say
this means you*) will be encouraged to download, install, and exercise
this release candidate against your downstream use cases, codebases, apps,
APIs, workflows, and test suites. Those who fail to do this will be mocked
as their code burns against the night sky. I mock them even as I cry a
little. 🥲
3. I will wait several days for the *radioactive fallout* to subside.
4. Assuming no issues or regressions arise, ...lolbro I will
officially publish a new *major version*.
5. Else:
1. I will resolve all *issues and regressions* that arise like
red-headed dolls clutching sharp implements. Night of the Living QA: *The
Bear is Baaaaaack.*
2. I will recursively return back in time to *step 1.* by releasing
yet another *release candidate*.
6. Repeat as needed for pain.
Basically, I'm just doing *standard beta releases* now. That's all I had
to say. Instead, I laboriously enumerated a workflow that doesn't really
make sense when you squint at it. Oh, well. This too was wasted time.
The sins of the fathers must never be repeated. Never forget @beartype
<https://github.com/beartype> 0.18.0! Never forgive @leycec
<https://github.com/leycec>! Wait. *Shouldn't @leycec
<https://github.com/leycec> be forgiven already at some point!?* <-- dat
poor guy
<https://camo.githubusercontent.com/bcd9e44a9ff3f4f5527d0fd43e49333092c36b948c65501827c98c50f94afd46/68747470733a2f2f6d65646961312e74656e6f722e636f6d2f6d2f6e475956796a77516e736341414141432f7777652d7265677265742e676966>
*Bear Beta Fan Club members have no one to blame but @leycec
<https://github.com/leycec>*
@beartype <https://github.com/beartype> 0.19.0: What Broke This Time?
A whole lot, probably. @beartype <https://github.com/beartype> 0.19.0:
- *Officially supports Python 3.13,* the first official CPython
release to:
- Support *no-GIL, GIL-free multi-threading* via the PEP
703-compliant --disable-gil compile-time option
<https://peps.python.org/pep-0703>. *Yes! YES! YEEEEEEESSSSS!!!!*
Wait. Where am I? What are these fingers on this keyboard? This must be
what good dreams are typed of.
- Support *an official LLVM-based Just-in-Time (JIT) compiler* via
the PEP 744-compliant --enable-experimental-jit compile-time option
<https://peps.python.org/pep-0744>. *OMMMMMMMMMMMMMMMMG.....* It's
happening. It's really happening. My breathing is now laboured and making
awkwardly squishy noises that upset the cat.
- Embraces *PEP 517 <https://peps.python.org/pep-0517>* and *621
<https://peps.python.org/pep-0621>* by refactoring the @beartype
<https://github.com/beartype> build system from setuptools + setup.py 🤮
to *Hatch* <https://github.com/pypa/hatch> + pyproject.toml 🥂 . It
went great, actually. Thanks for asking. I highly recommend Hatch for all
projects – new and old. It's like Rust's Cargo, only Python. It actually
works, unlike everything else. Hatch: *because you're too bald to
fight with Python anymore.* Caveat emptor:
- For most users, this doesn't matter. *Celebrate.*
- For package maintainers like @harens <https://github.com/harens> (*...I'm
so sorry*), this means that all third-party @beartype
<https://github.com/beartype> packages in the wild now *need to be
manually bumped to depend on Hatch* (rather than setuptools) *at
build time.* If your packaging ecosystem also packages Hatch, this
is trivial. Else, I sympathize with your growing toothache but can do
nothing for you. Emoji man sighs. 😮💨
- *Deeply O(1) type-checks* a ton of fun containers I've loosely
categorized as *reiterables* (i.e., collections satisfying the
collections.abc.Collection protocol with guaranteed O(1) read-only
access to *only* the first collection item). Reiterables include *sets*,
*frozen sets*, *dictionary views*, *deques* (i.e., double-ended
queues), and all other containers matched by one or more of the following
PEP 484- or 585-compliant type hints:
- frozenset[...].
- set[...].
- collections.deque[...].
- collections.abc.Collection[...].
- collections.abc.KeysView[...].
- collections.abc.MutableSet[...].
- collections.abc.Set[...].
- collections.abc.ValuesView[...].
- typing.AbstractSet[...].
- typing.Collection[...].
- typing.Deque[...].
- typing.FrozenSet[...].
- typing.KeysView[...].
- typing.MutableSet[...].
- typing.Set[...].
- typing.ValuesView[...].
- Supports the ***@***.***_jit and @jax.jit decorators*. In fact,
@beartype <https://github.com/beartype> now generically supports *all* *pseudo-callable
wrapper objects* (i.e., objects defining both the __call__() and
__wrapped__ dunder attributes). The @beartype decorator may now be
chained (i.e., listed) either below or above the third-party
@equinox.filter_jit and @jax.jit decorators. Since all beartype.claw
import hooks (e.g., beartype.claw.beartype_this_package()) forcefully
chain @beartype above all other decorators, all @beartype
<https://github.com/beartype> import hooks now transparently support:
- The third-party @equinox.filter_jit decorator.
- The third-party @jax.jit decorator.
- All other third-party decorators creating and returning similar
pseudo-callable wrapper objects... *probably*. 😬
- Refactors our GitHub Actions release workflow away from its prior
usage of antiquated (and unsurprisingly insecure) tokens to *PyPI-specific
"Trusted Publishers"
<https://blog.pypi.org/posts/2023-04-20-introducing-trusted-publishers/>*
(i.e., PyPI's modern implementation of OpenID Connect (OIDC)). Therefore:
- In theory, doing so *should* resolve the current plethora of "Unverified
details" that currently pollutes @beartype's PyPI project page
<https://pypi.org/project/beartype>. We're not unverified, PyPI!
*You're* unverified.
- In practice, doing so will almost certainly change nothing and
thus have no benefit whatsoever. Indeed, doing so will probably prevent our
entire release workflow from behaving as expected – further squandering
scarce open-source volunteerism for no particularly good reason whatsoever.
Bureaucracy: "What is it good for when @leycec
<https://github.com/leycec> could just be playing video games about
robot assassins who insist they meant well instead?"
- Resolves *critical bugs,* *blah, blah*. Who cares. I'm tired. So are
you.
<https://camo.githubusercontent.com/d73e256c3b1116078fbd3147190ba32508363abe84a1bbe91f6218156844c613/68747470733a2f2f6d65646961312e74656e6f722e636f6d2f6d2f7a73356d6f4a6d4b38757741414141432f736e6c2d63687269732d6661726c65792e676966>
*Bear Beta Fan Club member after going --disable-gil +
--enable-experimental-jit*
Last but *never* least, the most important part...
GitHub Sponsors: They Scratch the Bear's Back. Now, The Bear Scratches
Back.
This release comes courtesy these proud GitHub Sponsors
<https://github.com/sponsors/leycec>, without whom @leycec
<https://github.com/leycec>'s cats would currently be eating grasshoppers:
- @sesco-llc <https://github.com/sesco-llc> (SESCO Enterprises), "The
Power of Innovation in Trading": *this inspires me to get out of the
house and do something*
https://sescollc.com
- @DylanModesitt <https://github.com/DylanModesitt> (Dylan Modesitt),
quantitative strategies energy trading associate: *...wikipedia, don't
fail me now!*
https://dylanmodesitt.com
- @tactile-metrology <https://github.com/tactile-metrology> (Tactile
Metrology), "Software and hardware that you can touch." When I want to be
touched by software and hardware, I call @tactile-metrology
<https://github.com/tactile-metrology>:
https://metrolo.gy imagine if this domain actually worked. *how cool
would that be!?*
Thanks so much, masters of fintech and metrology.
<https://camo.githubusercontent.com/e21e309fd9ee4284aceb921b80351ea1637b38e097ab9ad8bb7c04410bf0c1c5/68747470733a2f2f6d65646961312e74656e6f722e636f6d2f6d2f374a52377344386f54695541414141432f77686f2d6172652d796f752d646f2d692d6b6e6f772d796f752e676966>
The Masters of Fintech and Metrology. *That's who.*
You. Are. Bear Beta Fan Club.
Announcing the *Bear Beta Fan Club* from the ashes of our issue tracker:
@posita <https://github.com/posita>, @wesselb <https://github.com/wesselb>,
@iamrecursion <https://github.com/iamrecursion>, @patrick-kidger
<https://github.com/patrick-kidger>, @langfield
<https://github.com/langfield>, @JelleZijlstra
<https://github.com/JelleZijlstra>, @RobPasMue
<https://github.com/RobPasMue>, @GithubCamouflaged
<https://github.com/GithubCamouflaged>, @kloczek
<https://github.com/kloczek>, @uriyasama <https://github.com/uriyasama>,
@danielgafni <https://github.com/danielgafni>, @JWCS
<https://github.com/JWCS>, @rbroderi <https://github.com/rbroderi>,
@AlanCoding <https://github.com/AlanCoding>, @tvdboom
<https://github.com/tvdboom>, @crypdick <https://github.com/crypdick>,
@jvesely <https://github.com/jvesely>, @komodovaran
<https://github.com/komodovaran>, @kaparoo <https://github.com/kaparoo>,
@MaximilienLC <https://github.com/MaximilienLC>, @fleimgruber
<https://github.com/fleimgruber>, @EtaoinWu <https://github.com/EtaoinWu>,
@alexoshin <https://github.com/alexoshin>, @gabrieldemarmiesse
<https://github.com/gabrieldemarmiesse>, @James4Ever0
<https://github.com/James4Ever0>, @NLPShenanigans
<https://github.com/NLPShenanigans>, @rtbs-dev
<https://github.com/rtbs-dev>, @yurivict <https://github.com/yurivict>,
@st-- <https://github.com/st-->, @murphyk <https://github.com/murphyk>,
@dosisod <https://github.com/dosisod>, @Rogdham
<https://github.com/Rogdham>, @alisaifee <https://github.com/alisaifee>,
@denisrosset <https://github.com/denisrosset>, @damarro3
<https://github.com/damarro3>, @ruancomelli
<https://github.com/ruancomelli>, @jondequinor
<https://github.com/jondequinor>, @harshita-gupta
<https://github.com/harshita-gupta>, @jakebailey
<https://github.com/jakebailey>, @denballakh
<https://github.com/denballakh>, @jaanli <https://github.com/jaanli>,
@creatorrr <https://github.com/creatorrr>, @msvensson222
<https://github.com/msvensson222>, @avolchek <https://github.com/avolchek>,
@femtomc, @AdrienPensart, @jakelongo, @Artur-Galstyan, @ArneBachmann,
@danielward27, @WeepingClown13, @rbnhd, @radomirgr, @rwiegan, @brettc,
@spagdoon0411, @helderco, @paulwouters, @jamesbraza, @dcharatan, @kasium,
@AdrienPensart, @sunildkumar, @peske, @mentalisttraceur, @awf, @PhilipVinc,
@dcharatan, @empyrealapp, @rlkelly, @KyleKing, @skeggse, @RomainBrault
<https://camo.githubusercontent.com/a595c44fc4af580816672c5a71dac676135cb61ec6fe06be32e2d1000f459ad4/68747470733a2f2f6d656469612e74656e6f722e636f6d2f584951796870453736315141414141692f686f742d6461792e676966>
*unsure what's happening here but it kinda don't seem right*
—
Reply to this email directly, view it on GitHub
<#401>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABISE7G5M6CB7GIXM5DTS43ZJZOUTAVCNFSM6AAAAABKC7GJG2VHI2DSMVQWIX3LMV43ERDJONRXK43TNFXW4OZWHA3TKNJWHE>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
Me too! :)
…On Saturday, June 29, 2024, Ali-Akber Saifee ***@***.***> wrote:
I will do the same!
—
Reply to this email directly, view it on GitHub
<#401 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABISE7A3GMK4SFHNNCVOBYTZJ3EALAVCNFSM6AAAAABKC7GJG2VHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TSMJSGUZDA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
--
Jaan Lı 李 PhD Princeton University
Visiting Professor University of Tartu
President One Fact Foundation
Interaction interactionprinciples.org
Agency Once Upon
<https://docs.google.com/document/d/17Hk7cpUOKvn3L6KxIKE7Jrs9Qn7YgLvuho49KBP8SK8/edit?usp=sharing>
Email Guide Three Sentences
<https://matt.might.net/articles/how-to-email/> or Matt Might
<https://matt.might.net/articles/how-to-email/>
Style Guide Mailchimp
<https://styleguide.mailchimp.com/voice-and-tone/>
Parenting Guide Need help - please respond (kids next year)
|
Beta Was this translation helpful? Give feedback.
-
|
Awwwwwww! Bear hugs to the Bearythonistas. Shockingly, it looks like @beartype 0.19.0 release candidate 0 actually behaves itself. This means that @beartype 0.19.0 will be incoming in a few days. Until then, some and/or many of you may be intrigued to see that @beartype 0.19.0 will also be shipping... A First-draft Type Hint Inference API That Probably Won't Work at AllAllow our new type hint inference API to dynamically infer your type hints for you. Complex pure-Python data structures? No probs. Who you gonna call? Type Hint Busters!!! ...kk. It's just called >>> from beartype.door import infer_hint # <-- all your dreams begin here
# Show me the type hint describing a useless object, @beartype!
>>> infer_hint(object())
<class 'object'> # <-- makes sense
# Show me the type hint describing a useless type, @beartype!
>>> infer_hint(object)
type[object] # <-- so. cool.
# Show me the type hint describing a list of strings, @beartype!
>>> infer_hint(['expose', 'extreme', 'explosions!',])
list[str] # <-- hole in one
# Show me the type hint describing a tuple of crazy stuff, @beartype!
>>> infer_hint((b'heh', [0xBEEEEEEEF, 'ohnoyoudont',]))
tuple[typing.Union[list[typing.Union[int, str]], bytes], ...] # <-- no idea, but i trust it
# Show me the type hint describing something not even @Moosems understands, @beartype!
>>> from pygments.lexers import PythonLexer
>>> infer_hint(PythonLexer().tokens["root"])
list[typing.Union[tuple[typing.Union[str, pygments.token._TokenType], ...],
pygments.lexer.include, tuple[typing.Union[function, str], ...]]] # <-- i have no idea and neither do you
# Show me the type hint describing an insane recursive list, @beartype!
>>> recursive_list = ['this is fine', b'but...',]
>>> recursive_list.append(recursive_list)
>>> infer_hint(recursive_list)
list[typing.Union[<BeartypeHintInferrence.RECURSIVE: 1>, str, bytes]] # <-- just go with itThe I trust BeartypeAI™. Don't you? ...nope nope nope |
Beta Was this translation helpful? Give feedback.
-
...heh. Diabolical minds think alike. I see that you too have the super- You're in luck!
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Finally. The Big Bear has landed. @beartype 0.19.0 release candidate 1 – the second (and better-be final) beta pre-prelease of the zombified @beartype 0.19.0 release cycle that I should have released three months ago – lands in your lap with a suspicious quacking noise. You're startled. You shriek in dismay! And that's when you hear it. A knock on the door. Muffled voices from the hallway. Disconcertingly familiar, you feel like you almost understand what's going on:
@beartype pip install --upgrade --pre beartype # <-- sound of bugs panicking distantly heard@beartype
Okay. Okay. Ultros didn't do nuffin' except lie about on a raft all day and try to eat heroes. Let's try again. @beartype GitHub Sponsors: When You Befriend the Bear, You've got a Bear for LifeThis release comes courtesy these proud GitHub Sponsors, without whom @leycec's cats would currently be eating grasshoppers:
Thanks so much, masters of fintech and metrology.
|
Beta Was this translation helpful? Give feedback.
-
|
@thiswillbeyourgithub: You're most welcome! This meme party just getting started. 😉
That's... a superb question, actually! Things rapidly got out of hand when I tried to write about this here, though. Please join me in unholy debate as we take this to a new discussion thread over here. 👉 |
Beta Was this translation helpful? Give feedback.
-
Don't worry, folks. It's only ...just kidding! As if, right? This is @beartype. If we're not here for that tight lower-bound Big-Oh analysis, why are we even here?
So, the time complexity is basically equivalent to that of an Is it too late too apologize for the heart attacks, heartburn, and inflammatory bowel conditions I have just caused throughout the community? Yes? Oh, well. Anyway.
I... uhm. I think I may have just invented something. 🥵 @wesselb, @PhilipVinc: Did I just invent something? Say yes and I shall slowly eat a plum live on OnlyGitHubFans as fruit juice dribbles everywhere. 🍏 ← totally a plum
Right. Given an arbitrary object
In step 3. above, I kinda glossed over how to "decide whether this inferred type hint satisfies any of those keys." How convenient, huh? Fortunately, this is convenient. Just leverage the existing def dispatch_object(obj, *args, **kwargs):
# O(n) type hint inference, I choose you!
obj_hint = infer_hint(obj)
# Go for the O(1) short-circuit, @beartype. Do it.
dispatch_callable = dispatch_dict.get(obj_hint)
if dispatch_callable:
return dispatch_callable(*args, **kwargs)
# Oh, noes! Disaster. Fallback to the O(k) iteration. Pretend this is okay.
for dispatch_hint, dispatch_callable in dispatch_dict.items():
if is_subhint(obj_hint, dispatch_hint):
return dispatch_callable(*args, **kwargs)
raise DispatchException(f'Passed object {repr(obj)} sucks. Blowing everything up!')Something like that, maybe? I've never actually written any dispatch code before. Should I have admitted that? Let us pretend I'm not embarrassing myself here. 😰
I... I'm there with you. I don't know what I did this summer. It's all kind of a blur. I'm pretty sure a Delorean, a toilet seat, and a floating symbol that looks suspiciously like a Y were involved somewhere.
I... uhh. Yeah! Of course. Of course I realized that. That's... that's why... Oh, Gods. I have no idea what I'm doing. I was just bashing on a keyboard autistically like I always do. I didn't actually realize I was doing something cool. Wait. Doesn't everybody infer tensor types all the time? Is this cool? Am I cool? Oh, why couldn't this have happened back in high school instead of all that other stuff that happened? 🤣 I Just Realized That
|
Beta Was this translation helpful? Give feedback.
-
|
Superbness. It's a Big Boi release, folks. Even cobbling together the release notes and announcement could consume the better part of a lifetime. This is why I lie flat tonight. I should have done something else, but... so tiiiiiiired. 🥱 |
Beta Was this translation helpful? Give feedback.
-
|
(I'm just taking this opportunity to link this article, it's totally above my head but seems high quality and could be of interest here: https://ashvardanian.com/posts/discount-on-keyword-arguments-in-python/) |
Beta Was this translation helpful? Give feedback.
-
|
Finally. The Big Bear has landed... yet again!? This better be good, @beartype 0.19.0 Release Cycle from Hell. @beartype 0.19.0 release candidate 2 – the third (and seriously better-be final) beta pre-prelease of the zombified @beartype 0.19.0 release cycle that I should have released ...assuming nothing else is broke. Is anything else broke? No idea. Probably. It's @beartype 0.19.0, after all. This thing will never ship. Indeed, the struggle for your codebase is like a rugby match between death robots: pip install --upgrade --pre beartype # <-- sound of bugs panicking distantly heard@beartype GitHub Sponsors: When You Befriend the Bear, You've got a Bear for LifeThis release comes courtesy these proud GitHub Sponsors, without whom @leycec's cats would currently be eating grasshoppers:
Thanks so much, masters of fintech and metrology.
So, What Does @beartype
|
Beta Was this translation helpful? Give feedback.
-
|
We be doin' this. @beartype 0.19.0 drops tomorrow. We quietly put this venerable discussion to bed. May the @beartype 0.19.0 release cycle be remembered only for what it has given us – not how bug-filled, overdue to the breaking point, and derailed by BeartypeAI™ hype it truly was. 🤣 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Welcome. Welcome, one and all bearthonistas, to the Bear Beta Fan Club. Congrats. You're reading this, so you're automatically in the club. Everyone who has submitted an issue in the last year has been pinged onto this announcement. If you hate @beartype or love @beartype but hate your codebase, simply unsubscribe from this announcement and watch as your codebase burns against the night sky. It's fine. "The burning means it works!", you tell your coworkers.
Beartype 0.19.0 Release Candidate 0 is the inaugural publication of @beartype's first of many
painfully brokenwell-tested pre-releases. If you or someone you love uses @beartype, consider manually upgrading to this pre-release and reporting all painful breakage to your nearest @beartype issue tracker. Note that installing pre-release versions withpiprequires manually passing the--preoption on the command-line:pip install --upgrade --pre beartype # <-- LET THE THUNDER AND THE HEADS ROLLYou may now be thinking:
Allow QA-Daddy @leycec to now gently exhaust you on a Friday evening.
Bear Beta Fan Club members pass out from general excitement
@beartype Beta Releases: The Becommoning
@beartype 0.18.0 broke the entire world. @leycec can now admit that to himself while clutching his Maine Coon teddy cat. If your codebase survived @beartype 0.18.0, you deserve an "I Survived @beartype 0.18.0 and All I Got Was This Lousy Badge" badge. The ill-fated @beartype 0.18.0 release cycle that nearly broke my fingers taught me many things: suffering, pain, agony, blah, blah... You know. Just the standard stuff, really.
@beartype 0.18.0 taught me that @beartype has become a lot bigger than me. Other people and people-like AI that are doing meaningful things with their lives and synthetic lives (respectively) now depend on new @beartype releases not throwing up all over everybody.
@beartype ≥ 0.19.0 intends to avoid that throw-up. Several days before releasing any new major version like 0.19.0, 0.20.0, or 0.21.0: ...we see the number sequence I trust
Basically, I'm just doing standard beta releases now. That's all I had to say. Instead, I laboriously enumerated a workflow that doesn't really make sense when you squint at it. Oh, well. This too was wasted time.
The sins of the fathers must never be repeated. Never forget @beartype 0.18.0! Never forgive @leycec! Wait. Shouldn't @leycec be forgiven already at some point!? <-- dat poor guy
Bear Beta Fan Club members have no one to blame but @leycec
@beartype 0.19.0: What Broke This Time?
A whole lot, probably. @beartype 0.19.0:
--disable-gilcompile-time option. Yes! YES! YEEEEEEESSSSS!!!! Wait. Where am I? What are these fingers on this keyboard? This must be what good dreams are typed of.--enable-experimental-jitcompile-time option. OMMMMMMMMMMMMMMMMG..... It's happening. It's really happening. My breathing is now laboured and making awkwardly squishy noises that upset the cat.setuptools+setup.py🤮 to Hatch +pyproject.toml🥂 . It went great, actually. Thanks for asking. I highly recommend Hatch for all projects – new and old. It's like Rust's Cargo, only Python. It actually works, unlike everything else. Hatch: because you're too bald to fight with Python anymore. Caveat emptor:setuptools) at build time. If your packaging ecosystem also packages Hatch, this is trivial. Else, I sympathize with your growing toothache but can do nothing for you. Emoji man sighs. 😮💨O(1)type-checks a ton of fun containers I've loosely categorized as reiterables (i.e., collections satisfying thecollections.abc.Collectionprotocol with guaranteedO(1)read-only access to only the first collection item). Reiterables include sets, frozen sets, dictionary views, deques (i.e., double-ended queues), and all other containers matched by one or more of the following PEP 484- or 585-compliant type hints:frozenset[...].set[...].collections.deque[...].collections.abc.Collection[...].collections.abc.KeysView[...].collections.abc.MutableSet[...].collections.abc.Set[...].collections.abc.ValuesView[...].typing.AbstractSet[...].typing.Collection[...].typing.Deque[...].typing.FrozenSet[...].typing.KeysView[...].typing.MutableSet[...].typing.Set[...].typing.ValuesView[...].@equinox.filter_jitand@jax.jitdecorators. In fact, @beartype now generically supports all pseudo-callable wrapper objects (i.e., objects defining both the__call__()and__wrapped__dunder attributes). The@beartypedecorator may now be chained (i.e., listed) either below or above the third-party@equinox.filter_jitand@jax.jitdecorators. Since allbeartype.clawimport hooks (e.g.,beartype.claw.beartype_this_package()) forcefully chain@beartypeabove all other decorators, all @beartype import hooks now transparently support:@equinox.filter_jitdecorator.@jax.jitdecorator.Bear Beta Fan Club member after going
--disable-gil+--enable-experimental-jitLast but never least, the most important part...
GitHub Sponsors: They Scratch the Bear's Back. Now, The Bear Scratches Back.
This release comes courtesy these proud GitHub Sponsors, without whom @leycec's cats would currently be eating grasshoppers:
https://sescollc.com
https://dylanmodesitt.com
https://metrolo.gy imagine if this domain actually worked. how cool would that be!?
Thanks so much, masters of fintech and metrology.
The Masters of Fintech and Metrology. That's who.
You. Are. Bear Beta Fan Club.
Announcing the Bear Beta Fan Club from the ashes of our issue tracker:
@posita, @wesselb, @iamrecursion, @patrick-kidger, @langfield, @JelleZijlstra, @RobPasMue, @GithubCamouflaged, @kloczek, @uriyasama, @danielgafni, @JWCS, @rbroderi, @AlanCoding, @tvdboom, @crypdick, @jvesely, @komodovaran, @kaparoo, @MaximilienLC, @fleimgruber, @EtaoinWu, @alexoshin, @gabrieldemarmiesse, @James4Ever0, @NLPShenanigans, @rtbs-dev, @yurivict, @st--, @murphyk, @dosisod, @Rogdham, @alisaifee, @denisrosset, @damarro3, @ruancomelli, @jondequinor, @harshita-gupta, @jakebailey, @denballakh, @jaanli, @creatorrr, @msvensson222, @avolchek, @femtomc, @AdrienPensart, @jakelongo, @Artur-Galstyan, @ArneBachmann, @danielward27, @WeepingClown13, @rbnhd, @radomirgr, @rwiegan, @brettc, @spagdoon0411, @helderco, @paulwouters, @jamesbraza, @dcharatan, @kasium, @AdrienPensart, @sunildkumar, @peske, @mentalisttraceur, @awf, @PhilipVinc, @dcharatan, @empyrealapp, @rlkelly, @KyleKing, @skeggse, @RomainBrault
unsure what's happening here but it kinda don't seem right
Beta Was this translation helpful? Give feedback.
All reactions