Gå frakoblet med Player FM -appen!
#412 Closing the loop
Manage episode 453264984 series 1305988
- Loop targets
- asyncstdlib
- Bagels: TUI Expense Tracker
- rloop: An AsyncIO event loop implemented in Rust
- Extras
- Joke
About the show
Sponsored by us! Support our work through:
Connect with the hosts
- Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)
- Brian: @brianokken@fosstodon.org / @brianokken.bsky.social
- Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky)
Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.
Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.
Brian #1: Loop targets
- Ned Batchelder
- I don’t think I would have covered this had it not been the surprising opposition to Ned’s code.
Here’s the snippet:
params = { "query": QUERY, "page_size": 100, } *# Get page=0, page=1, page=2, ...* **for** params["page"] in itertools.count(): data = requests.get(SEARCH_URL, params).json() **if** not data["results"]: **break** ...
Ned is utilizing the assignment in the for loop to use the value of count() and store it into the params["page"].
- The article includes another version with a temp variable page_num, which I think the naysayers would prefer.
- But frankly, I think both are fine. Why not put the value right where you want it?
Michael #2: asyncstdlib
- The asyncstdlib library re-implements functions and classes of the Python standard library to make them compatible with async callables, iterables and context managers.
- It is fully agnostic to async event loops and seamlessly works with asyncio, third-party libraries such as trio, as well as any custom async event loop.
- Full set of async versions of advantageous standard library helpers, such as zip, map, enumerate, functools.reduce, itertools.tee, itertools.groupby and many others.
- Safe handling of async iterators to ensure prompt cleanup, as well as various helpers to simplify safely using custom async iterators.
- Small but powerful toolset to seamlessly integrate existing sync code into async programs and libraries.
Brian #3: Bagels: TUI Expense Tracker
- Jax Tam
“Bagels expense tracker is a TUI application where you can track and analyse your money flow, with convenience oriented features and a complete interface.
Why an expense tracker in the terminal? I found it easier to build a habit and keep an accurate track of my expenses if I do it at the end of the day, instead of on the go. So why not in the terminal where it's fast, and I can keep all my data locally?”
Who hasn’t wanted to write their own expense tracker?
- This implementation is fun for lots of reasons
- It’s still new and pretty small, so forking it for your own uses should be easy
- Built on textual is fun
- install instructions based on uv tool seems to be the new normal:
- uv tool install --python 3.13 bagels
- test suite started
- pretty useful as is, actually
- Nice that it includes a roadmap of future goals
- Would be a fun project to help out with for anyone looking for anyone looking for a shiny new codebase to contribute to.
Michael #4: rloop: An AsyncIO event loop implemented in Rust
- An AsyncIO event loop implemented in Rust
- From Giovanni Barillari, Creator of Granian
- RLoop is an AsyncIO event loop implemented in Rust on top of the mio crate.
- Disclaimer: This is a work in progress and definitely not ready for production usage.
- Run asyncio.set_event_loop_policy(rloop.EventLoopPolicy()) and done.
- Similar to uvloop.
Extras
Brian:
- I’m currently listening to Four Thousand Weeks - Time Management for Mortals by Oliver Burkeman for the second time. Highly recommend.
- Development Advent Calendars for 2024 - Adrian Roselli
- Black Friday at PythonTest.com
Michael:
- Docker cluster monitor
- Compare engagement across Mastodon / Bsky / Twitter
- https://bsky.app/profile/pythonbytes.fm/post/3lbseqgr5m22z
- https://fosstodon.org/@pythonbytes/113545509565796190
- https://x.com/pythonbytes/status/1861166179236319288
- Back on #277 we talked about StrEnum. Got a nice chance to use it this weekend.
- Maybe Finance
- Go sponsor a bunch of projects on GitHub
- Black Friday at Talk Python
Joke: CTRL + X onion
417 episoder
Manage episode 453264984 series 1305988
- Loop targets
- asyncstdlib
- Bagels: TUI Expense Tracker
- rloop: An AsyncIO event loop implemented in Rust
- Extras
- Joke
About the show
Sponsored by us! Support our work through:
Connect with the hosts
- Michael: @mkennedy@fosstodon.org / @mkennedy.codes (bsky)
- Brian: @brianokken@fosstodon.org / @brianokken.bsky.social
- Show: @pythonbytes@fosstodon.org / @pythonbytes.fm (bsky)
Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Monday at 10am PT. Older video versions available there too.
Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it.
Brian #1: Loop targets
- Ned Batchelder
- I don’t think I would have covered this had it not been the surprising opposition to Ned’s code.
Here’s the snippet:
params = { "query": QUERY, "page_size": 100, } *# Get page=0, page=1, page=2, ...* **for** params["page"] in itertools.count(): data = requests.get(SEARCH_URL, params).json() **if** not data["results"]: **break** ...
Ned is utilizing the assignment in the for loop to use the value of count() and store it into the params["page"].
- The article includes another version with a temp variable page_num, which I think the naysayers would prefer.
- But frankly, I think both are fine. Why not put the value right where you want it?
Michael #2: asyncstdlib
- The asyncstdlib library re-implements functions and classes of the Python standard library to make them compatible with async callables, iterables and context managers.
- It is fully agnostic to async event loops and seamlessly works with asyncio, third-party libraries such as trio, as well as any custom async event loop.
- Full set of async versions of advantageous standard library helpers, such as zip, map, enumerate, functools.reduce, itertools.tee, itertools.groupby and many others.
- Safe handling of async iterators to ensure prompt cleanup, as well as various helpers to simplify safely using custom async iterators.
- Small but powerful toolset to seamlessly integrate existing sync code into async programs and libraries.
Brian #3: Bagels: TUI Expense Tracker
- Jax Tam
“Bagels expense tracker is a TUI application where you can track and analyse your money flow, with convenience oriented features and a complete interface.
Why an expense tracker in the terminal? I found it easier to build a habit and keep an accurate track of my expenses if I do it at the end of the day, instead of on the go. So why not in the terminal where it's fast, and I can keep all my data locally?”
Who hasn’t wanted to write their own expense tracker?
- This implementation is fun for lots of reasons
- It’s still new and pretty small, so forking it for your own uses should be easy
- Built on textual is fun
- install instructions based on uv tool seems to be the new normal:
- uv tool install --python 3.13 bagels
- test suite started
- pretty useful as is, actually
- Nice that it includes a roadmap of future goals
- Would be a fun project to help out with for anyone looking for anyone looking for a shiny new codebase to contribute to.
Michael #4: rloop: An AsyncIO event loop implemented in Rust
- An AsyncIO event loop implemented in Rust
- From Giovanni Barillari, Creator of Granian
- RLoop is an AsyncIO event loop implemented in Rust on top of the mio crate.
- Disclaimer: This is a work in progress and definitely not ready for production usage.
- Run asyncio.set_event_loop_policy(rloop.EventLoopPolicy()) and done.
- Similar to uvloop.
Extras
Brian:
- I’m currently listening to Four Thousand Weeks - Time Management for Mortals by Oliver Burkeman for the second time. Highly recommend.
- Development Advent Calendars for 2024 - Adrian Roselli
- Black Friday at PythonTest.com
Michael:
- Docker cluster monitor
- Compare engagement across Mastodon / Bsky / Twitter
- https://bsky.app/profile/pythonbytes.fm/post/3lbseqgr5m22z
- https://fosstodon.org/@pythonbytes/113545509565796190
- https://x.com/pythonbytes/status/1861166179236319288
- Back on #277 we talked about StrEnum. Got a nice chance to use it this weekend.
- Maybe Finance
- Go sponsor a bunch of projects on GitHub
- Black Friday at Talk Python
Joke: CTRL + X onion
417 episoder
Alle episoder
×Velkommen til Player FM!
Player FM scanner netter for høykvalitets podcaster som du kan nyte nå. Det er den beste podcastappen og fungerer på Android, iPhone og internett. Registrer deg for å synkronisere abonnement på flere enheter.