Watch the live stream:
Watch on YouTube
About the show
Special guest: Yael Mintz
Sponsored by us:
Michael #1: awesome-htmx
- An awesome list of resources about htmx such as articles, posts, videos, talks and more.
- Good for all sorts of examples and multiple languages
- We get a few nice shoutouts, thanks
Brian #2: Python 3.10 is here !!!!
- As of Monday. Of course I have it installed on Mac and Windows. Running like a charm.
- You can watch the Release Party recording. It’s like 3 hours. And starts with hats. Pablo’s is my fav.
- Also a What’s New video which aired before that with Brandt Bucher, Lukasz Llanga ,and Sebastian Ramirez (33 min)
- Includes a deep dive into structural pattern matching that I highly recommend.
- Reminder of new features:
- PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
- PEP 604 -- Allow writing union types as X | Y
- PEP 612 -- Parameter Specification Variables
- PEP 626 -- Precise line numbers for debugging and other tools.
- PEP 618 -- Add Optional Length-Checking To zip.
- bpo-12782: Parenthesized context managers are now officially allowed.
- PEP 632 -- Deprecate distutils module.
- PEP 613 -- Explicit Type Aliases
- PEP 634 -- Structural Pattern Matching: Specification
- PEP 635 -- Structural Pattern Matching: Motivation and Rationale
- PEP 636 -- Structural Pattern Matching: Tutorial
- PEP 644 -- Require OpenSSL 1.1.1 or newer
- PEP 624 -- Remove Py_UNICODE encoder APIs
- PEP 597 -- Add optional EncodingWarning
- Takeaway I wasn’t expecting:
black doesn’t handle Structural Pattern Matching yet.
Yael #3: Prospector (almost) All Python analysis tools together
- Instead of running pylint, pycodestyle, mccabe and other separately, prospector allows you to bundle them all together
- Includes the common Pylint and Pydocstyle / Pep257, but also some other less common goodies, such as Mccabe, Dodgy, Vulture, Bandit, Pyroma and many others
- Relatively easy configuration that supports profiles, for different cases
- Built-in support for celery, Flask and Django frameworks
Michael #4: Rich Pandas DataFrames
- via Avi Perl, by Khuyen Tran
- Create animated and pretty Pandas Dataframe or Pandas Series (in the terminal, using Rich)
- I just had Will over on Talk Python last week BTW: Terminal magic with Rich and Textual
- Can limit rows, control the animation speed, show head or tail, go “full screen” with clear, etc.
from sklearn.datasets import fetch_openml
from rich_dataframe import prettify
speed_dating = fetch_openml(name='SpeedDating', version=1)['frame']
table = prettify(speed_dating)
Brian #5: Union types, baby!
- From Python 3.10: “PEP 604 -- Allow writing union types as X | Y”
- Use as possibly not intended, to avoid Optional:
def foo(x: str | None = None) -> None:
from typing import Optional
def foo(x: Optional[str] = None) -> None:
- But here’s the issue. I need to support Python 3.9 at least, and probably early, what should I do?
- For 3.7 and above, you can use
from __future__ import annotations.
- And of course Anthony Sottile worked this into
pyupgrade and Adam Johnson wrote about it:
- This article covers:
- PEP 585 added generic syntax to builtin types. This allows us to write e.g.
list[int] instead of using
- PEP 604 added the
| operator as union syntax. This allows us to write e.g.
int | str instead of
typing.Union[int, str], and
int | None instead of
- How to use these. What they look like. And how to use
pyupgrade to just convert your code for you if you’ve already written it the old way. Awesome.
Yael #6: Make your code darker - Improving Python code incrementally
- The idea behind Darker is to reformat code using Black (and optionally isort), but only apply new formatting to regions which have been modified by the developer
- Instead of having one huge PR, darker allows you to reformat the code gradually, when you're touching the code for other reasons..
- Every modified line, will be black formatted
- Once added to Git pre-commit-hook, or added to PyCharm **/ VScode the formatting will happen automatically
- I got a couple PRs accepted into pytest. So that’s fun:
- data-oriented-programming - an innovative approach to coding without OOP, with an emphasis on code and data separation, which simplifies state management and eases concurrency
- Help us to make Cornell awesome 🙂 - contributors are warmly welcomed
Joke: Pair CAPTCHAing