Brought to you by Michael and Brian - take a Talk Python course or get Brian's pytest book

#139: f"Yes!" for the f-strings

Published Thu, Jul 18, 2019, recorded Thu, Jul 11, 2019

Sponsored by DigitalOcean: pythonbytes.fm/digitalocean

Special guest: Ines Montani

Brian #1: Simplify Your Python Developer Environment

  • Contributed by Nils de Bruin
  • “Three tools (pyenv, pipx, pipenv) make for smooth, isolated, reproducible Python developer and production environments.”
  • The tools:
    • pyenv - install and manage multiple Python versions and flavors
    • pipx - install a Python application with it’s own virtual environment for use globally
    • pipenv - managing virtual environments, dependencies, on a per project basis
  • Brian note: I’m not sold on any of these yet, but honestly haven’t given them a fair shake either, but also didn’t really know how to try them all out. This is a really good write up to get started.

Ines #2: New fast.ai course: A Code-First Introduction to Natural Language Processing

  • fast.ai is a really popular, free course for deep learning by Rachel Thomas and Jeremy Howard
  • Also comes with a Python library and lots of notebooks
  • Some influential research developed alongside the course, e.g. ULMFiT (popular algorithm for NLP tasks like text classification)
  • New course on Natural Language Processing:
    • Practical introduction to NLP covering both modern neural network approaches and traditional techniques
    • Highlights:
      • NLP background: topic modeling and linear models
      • Rule-based approaches and real-world problem solving
      • Focus on ethics – videos on bias and disinformation

Michael #3: Cloning the human voice

Brian #4: Ab(using) pyproject.toml and stuffing pytest.ini and mypy.ini content into it

  • Contributed by Andrew Spittlemeister
  • My first reaction is horror, but this is kinda my thought process with this one
    • toml is not ini (but they look close)
    • neither pytest nor mypy support storing configuration in pyproject.toml
    • they both do support using setup.cfg (but flit and poetry projects don’t use that file, or try not to)
    • they both support passing in the config file as a command line argument
    • you can be careful and write a pyproject.toml file that is both toml and ini compliant
    • drat, this is a reasonable idea, if not a little wacky
    • no guarantee that it will keep working
  • one thing to note: use quotes for stuff you normally wouldn’t need to in ini file.

Example ini:

    [pytest]
    addopts = -ra -v

if stuffed in pyproject.toml

    [pytest]
    addopts = "-ra -v"

to run:

    > mypy --config-file pyproject.toml module_name
    > pytest -c pyproject.toml

Ines #5: *Polyaxon*

  • A platform for reproducing and managing the whole life cycle of machine learning and deep learning applications.
  • We talked to lots of research groups and everyone works with just their GPU on desktop. Super slow – you need to wait for results, schedule next job etc.
  • Polyaxon is a free open source library built on Kubernetes. Really easy to set up, especially on Google Kubernetes Engine.
  • Especially good for hyper-parameter search, where you might not need GPU experiments if you can run lots of experiments in parallel
  • Release v0.5 just came today. Big improvements:
    • Plugins system
    • Local runs, for much easier debugging
    • New workflow engine for chaining things together and run experiments with lots of steps

Michael #6: Flynt for f-strings

  • A tool to automatically convert old string literal formatting to f-strings
  • F-Strings: Not only are they more readable, more concise, and less prone to error than other ways of formatting, but they are also faster!
  • Converted over 500 lines / expressions in Talk Python Training and Python Bytes.
  • Get started with a pipx install: pipx install flynt
  • Then point it at
    • A file: flynt somefile.py
    • A directory (recursively): flynt ./
  • Converts code like this: print(``"``Greetings {}, you have found {:,} items!``"``.format(name, count))
  • To code like this: print(f"Greetings {name}, you have found {count:,} items!")
  • Beware of the digit grouping bug.
  • Good project to jumping in and contributing to open source

Extras:

Michael:

Ines:

  • Explosion (?)
  • spaCy IRL 2019
    • our very first conference held on July 6 in Berlin
    • many amazing speakers from research, applied NLP and the community
    • all talks were recorded and will be up on our YouTube channel very soon
  • FastAPI core developer Sebastián Ramírez is joining our team
    • FastAPI was presented by Brian in episode 123 of this podcast
    • we’re big fans and have been switching all our APIs over to FastAPI
    • we’ll keep supporting the project and will definitely give Sebastián enough time to keep working on it

Joke:

  • A programmer walks into a bar and orders 1.38 root beers. The bartender informs her it's a root beer float. She says 'Make it a double!’
  • What do you call a developer without a side project?
    • Well rested.

Want to go deeper? Check our projects