#240: This is GitHub, your pilot speaking...
Published Fri, Jul 2, 2021,
recorded Fri, Jul 2, 2021
Watch the live stream:
About the show
Sponsored by us:
- Check out the courses over at Talk Python
- And Brian’s book too!
Special guest: Chris Moffit
Brian #1: Subclassing in Python Redux
- Hynek Schlawack
- Prefer composition over inheritance,
- But if you must subclass, there are 3 types
- subclassing for code sharing
- bad. don’t do it.
- read the article and included linked articles if you aren’t convinced
- Interfaces / Abstract Data Types
- Can be useful, but Python has tools that make this work without subclassing
- Specialization
- Exception hierarchies
- There’s also an interesting discussion of structuring data classes with common elements
- This is the only type of subclassing that Hynek deems worthy
- This is a well written, useful, and long-ish article that I cannot summarize and do it justice.
- My summary: If you even consider sublcassing other than for exceptions, read this article first.
Michael #2: Extra, Extra, Extra*7, Hear all about it!
- New course! Python-powered chat apps with Twilio and SendGrid
- Pyodide is now an independent project
- Wow textual from Nick Mouh
- #NoFLOC for real!
- Need to protect your Python source? SourceDefender **(commercial product, but neat)
- I was a guest on A Day in a Life of a WFH Pythonista. Full episode starts here, and the studio/office tour here.
- Python 3.9.6 is out
- Python Web Conf 2021 videos are out, including mine on memory.
pip install pythonbytes
via pythonbytes package.
Chris #3: klib
- Perform automated cleaning and analyzing of data in a pandas DataFrame
- Missing value plot and correlation data plots are similar to other tools but the visualizations are nicely done and useful.
- The data cleaning functions are really nice. In some testing, the automated data type conversion can save a meaningful amount of data.
- For large data sets, you can drop columns with lots of null values or highly correlated values.
- The clean_column_names function also performs several cleanups on column names such as removing spaces, standardizing CamelCase, etc.
- You have control to use as much or as little of the automated process as possible.
Brian #4: Don’t forget about functools
- “functools — Higher-order functions and operations on callable objects”
- in English: cool decorators and other functions that act on functions
- A recent article by Martin Heinz reminded me to review functools
- We’ve talked about
singledispatch
recently, and I’m sure we’ve talked aboutlru_cache
before. These are infunctools
. functools
is an interesting library in that you kind of use it more and more as you increase your Python experience. As a new Python dev, I would have been rather lost looking at this, but as you work through different projects, come back to this and have a look, it’ll have stuff you probably could have used, and will use in the future.- What’s in there? Here’s a few:
@singledispatch
&@singledispatchmethod
- function/method overloading@wraps
- A must for creating your own decorators that makes the decorated function act just like the original function (attributes, docstring, and all, with just the added behavior you are adding.@lru_cache
- memoization made easy- LRU = least recently used. It’s what it throws away when it’s full
@cache
- like@lru_cache
but with no max size. New in 3.9@cached_property
- only run the read code once. New in 3.8del(obj.property)
to clear it. Yes this is weird, but also cool.@total_ordering
- Define__eq__()
and one other ordering function and get the other ordering functions for “free”.- not free. cost is slower execution and confusing stack traces if things go wrong. but still, when prototyping something, or when comparisons are very rare, this is cool
partial
/partialmethod
- create a new function with some of the arguments of the old function already filled in.- super cool for callbacks or defining convenience functions
Michael #5: GitHub Copilot
- Get suggestions for whole lines or entire functions right inside your editor.
- Available today as a Visual Studio Code extension.
- The technical preview does especially well for Python, JavaScript, TypeScript, Ruby, and Go, but it understands dozens of languages and can help you find your way around almost anything.
- You can cycle through alternative suggestions
- Powered by Codex, the new AI system created by OpenAI
- Based on gpt3.
Chris #6: Kats
- New tool from facebook for Time Series analysis
- Can use Facebook’s Prophet as well as other algorithms such as Sarima and Holt-Winters for prediction. Here’s my old post on prophet.
- Some controversy about how well prophet performs in real life. Very detailed article here.
- Provides utilities for analyzing time series including outlier and seasonality detection
- Offers advanced ensemble methods and access to deep learning algorithms
Extras
Chris
Jokes
Italian Aysnc (from Dean Langsam)
Q: Why aren't cryptocurrency engineers allowed to vote? A: Because they're miners!