Watch the live stream:
Watch on YouTube
About the show
Sponsored by us:
- Check out the courses over at Talk Python
- And Brian’s book too!
Special guest: Will McGugan
Michael #1: Wrapping C++ with Cython
- By Anton Zhdan-Pushkin
- A small series showcasing the implementation of a Cython wrapper over a C++ library.
- C library: yaacrl - Yet Another Audio Recognition Library is a small Shazam-like library, which can recognize songs using a small recorded fragment.
- For Cython to consume yaacrl correctly, we need to “teach” it about the API using `cdef extern
- It is convenient to put such declarations in *.pxd files.
- One of the first features of Cython that I find extremely useful — aliasing. With aliasing, we can use names like Storage or Fingerprint for Python classes without shadowing original C++ classes.
- Implementing a wrapper: pyaacrl - The most common way to wrap a C++ class is to use Extension types. As an extension type a just a C struct, it can have an underlying C++ class as a field and act as a proxy to it.
- Cython documentation has a whole page dedicated to the pitfalls of “Using C++ in Cython.”
- Distribution is hard, but there is a tool that is designed specifically for such needs: scikit-build.
- PyBind11 too
Brian #2: tbump : bump software releases
- suggested by Sephi Berry
- limits the manual process of updating a project version
- tbump init 1.2.2 initializes a tbump.toml file with customizable settings
- --pyproject will append to pyproject.toml instead
- tbump 1.2.3 will
- patch files: wherever the version listed
- (optional) run configured commands before commit
- failing commands stop the bump.
- commit the changes with a configurable message
- add a version tag
- push code
- push tag
- (optional) run post publish command
- Tell you what it’s going to do before it does it. (can opt out of this check)
- pretty much everything is customizable and configurable.
- I tried this on a flit based project. Only required one change
# For each file to patch, add a [[file]] config
# section containing the path of the file, relative to the
# tbump.toml location.
[[file]]
src = "pytest_srcpaths.py"
search = '__version__ = "{current_version}"'
- cool example of a pre-commit check:
# [[before_commit]]
# name = "check changelog"
# cmd = "grep -q {new_version} Changelog.rst"
Will #3: Closember by Matthias Bussonnier
Michael #4: scikit learn goes 1.0
- via Brian Skinn
- The library has been stable for quite some time, releasing version 1.0 is recognizing that and signalling it to our users.
- Features:
- Keyword and positional arguments - To improve the readability of code written based on scikit-learn, now users have to provide most parameters with their names, as keyword arguments, instead of positional arguments.
- Spline Transformers - One way to add nonlinear terms to a dataset’s feature set is to generate spline basis functions for continuous/numerical features with the new SplineTransformer.
- Quantile Regressor - Quantile regression estimates the median or other quantiles of Y conditional on X
- Feature Names Support - When an estimator is passed a pandas’ dataframe during fit, the estimator will set a feature_names_in_ attribute containing the feature names.
- A more flexible plotting API
- Online One-Class SVM
- Histogram-based Gradient Boosting Models are now stable
- Better docs
Brian #5: Using devpi as an offline PyPI cache
- Jason R. Coombs
- This is the devpi tutorial I’ve been waiting for.
- Single machine local server mirror of PyPI (mirroring needs primed), usable in offline mode.
$ pipx install devpi-server
$ devpi-init
$ devpi-server
- now in another window, prime the cache by grabbing whatever you need, with the index redirected
(venv) $ export PIP_INDEX_URL=http://localhost:3141/root/pypi/
(venv) $ pip install pytest, ...
- then you can restart the server anytime, or even offline
$ devpi-server --offline
- tutorial includes examples, proving how simple this is.
Will #6: PyPi command line
Extras
Brian:
- I’ve started using pyenv on my Mac just for downloading Python versions. Verdict still out if I like it better than just downloading from pytest.org.
- Also started using Starship with no customizations so far. I’d like to hear from people if they have nice Starship customizations I should try.
- vscode.dev is a thing, announcement just today
Michael:
- PyCascades Call for Proposals is currently open
- Got your M1 Max?
- Prediction: Tools like Crossover for Windows apps will become more of a thing.
Will:
- GIL removal
- https://docs.google.com/document/u/0/d/18CXhDb1ygxg-YXNBJNzfzZsDFosB5e6BfnXLlejd9l0/mobilebasic?urp=gmail_link
- https://lwn.net/SubscriberLink/872869/0e62bba2db51ec7a/
- vscode.dev
Joke:
- The torture never stops
- IE (“Safari”) Eating Glue