#310: Calling All Tools for Readmes
Published Tue, Nov 15, 2022,
recorded Tue, Nov 15, 2022
About the show
Sponsored by Microsoft for Startups Founders Hub.
Special guest:
Brian #1: Tips for clean code in Python
- Bob Belderbos
- Generally some great tips to think about to keep code maintainable:
- Smaller units. Break things up into single responsibility. SRP: Single Responsibility Principle
- Move magic numbers into constants or parameters.
- Avoid global scope. (even though it’s not really global)
- Use linters and auto-formatters.
- Use very narrow try/except blocks.
- Idiomatic Python. (Although I agree, this is a weird one as it’s hard for new people to follow).
- Pay attention to data structure choice and learn to utilize standard structures and those in collections.
- Use the standard libary.
- Use mappings
- Flat is better than nested.
- But I’m gonna focus on the “smaller units” because it applies to modules as well.
- Try to keep modules organized such that you can keep relevant and related code concepts in your head.
Michael #2: Mastodon is picking up speed
- @pythonbytes@fosstodon.org
- @mkennedy@fosstodon.org
- @brianokken@fosstodon.org
- @admhpkns@fosstodon.org
- I’m calling this a “Mastodon First” strategy rather than “Let’s burn down Twitter and scatter”
- Just did a Talk Python about it
- Money in mouth: I became a patreon of Fosstodon and Mastodon’s company
- Mastodon is open source, find it here
- Twitter’s potential collapse could wipe out vast records of recent human history
- Python’s API for Mastodon: toot
- Download a proper Twitter archive with this Python script
- Integrated the API into stream deck
- You can install it as a PWA:
Adam #3: Correction to Sanic Worker Manager in v22.9
- Episode #308 covered a recent article published on a new feature in Sanic v22.9
- Blog article: Pushing work to the background of your Sanic app
- The segment focused on the celery-like job queue in Sanic
- Clarification:
- Goal of the feature is to bring a consistent development experience from dev thru prod
- Enables usage of multiprocessing-safe shared objects
- Simple pattern for managing multiple long-running processes
- Release notes for Sanic v22.9
- Sanic documentation on the Worker Manager
Brian #4: Some FastAPI news, and some great READMEs.
- FastAPI 0.87.0 has some interesting notes
- Upgraded Starlette, which includes TestClient based on HTTPX instead of Requests
- Since that might break some peoples use of TestClient, someone named Kludex built bump-testclient to help automatically convert test code to the new interface. That’s so cool!
- Use Ruff for linting
- Add a Help Maintain FastAPI section to the docs that emphasizes that it’s super helpful to:
- Help others with issues
- Review PRs
- Both of those sections have other expanded sections to describe what that means.
- The FastAPI commitment to great documentation is amazing and worth emulating.
- It also has a really good README.
- Interesting sponsors section. Cool way for a popular project to get maintenance funding.
- Testimonials. It’s like a sales landing page, which really, a README kinda is.
- Other common good practices and cool items
- Images
- Some use of collapsable sections.
- Other notable READMEs
- pytest
- short example right away to show how simple it can be to use.
- textual and rich
- great use of images and short examples
- highlighting often missed features, such as pretty and inspect
- Utilizing expandable/collapsable sections for longer examples
- httpx
- like pytest, shows a small example quickly,
- redirects many other sections to more thorough docs.
- pytest
Michael #5: Closevember
- An annual event focused on sustainable open source development practices and maintainer well-being.
- Let's support open source maintainers by helping them close issues and pull requests throughout November.
- Over at closember.org
- Contributing to a project carries a number of responsibilities, in order to make it as easy as possible for a project to receive that contribution.
- For Maintainers: How to Get Ready (see site)
- If you only want assistance with closing some issues and PRs, then tag your repo with
closember
and you’re all set. - One thing that we often find helpful is to declutter our physical and digital environment: tidying our desks a bit, decluttering our computers’ desktops, unsubscribing from some email lists ... that sort of thing.
- I did this this month actually. Spent 6 hours completely rebuilding my desk to have zero wires and look tidy and clean (hint: 3m of industrial velcro and things stuck upside down) and formatted my computer to a fresh OS after two years.
- If you only want assistance with closing some issues and PRs, then tag your repo with
- For the Community: How to Participate (see site)
- If you’ve never used GitHub before, your first step is going to be signing up for a free account.
- Also, if you’re super new to git: talkpython.fm/git
- If you’ve opened issues or PRs on projects in the past, you can start by taking a look at your own GitHub issues and your own PRs to see if any of them are outdated or have already been fixed—if so, close them!
- After that, start browsing projects: take a look at your favorite projects and see if they’ve been tagged with
closember
, or browse the list of closember projects.
- Check out the close boards (on the site)
Adam #6: Super simple “Cache with async power” using Cashews
- Recently popped up in my GitHub Explore
- Cashews: Async cache framework with simple API to build fast and reliable applications
- Super simple out-of-the-box API
- supports in memory, Redis, DiskCache (local sqlite)
- one-line setup then implemented as a decorator
- Human-friendly TTL values: example “3h”
- Client-side caching - For example, if you are using Redis backend you do not need to make a network call on every cache request
- Strategies for common cache issues
- cache hits, early recalculation, soft TTL, resource locking, rate limiting!, circuit breaker
- Has its own interface for middleware
Extras
Michael:
Adam:
- Voting season is upon us: Python Steering Council nominations are open