|      |     |      |                       Web Scraping in Python: Tools, Techniques, and Legality  Do you want to get started with web scraping using Python? Are you concerned about the potential legal implications? What are the tools required and what are some of the best practices? This week Kimberly Fessel is a guest on the Real Python Podcast to discuss her excellent tutorial created for PyCon 2020 online titled “It’s Officially Legal so Let’s Scrape the Web.”  REAL PYTHON podcast 
   Pedantic Configuration Management with Pydantic  Dealing with multiple configuration files for a Python application can be stressful. Learn how to take the edge off with a custom workflow centered around the Pydantic library.  REDOWAN NAFI • Shared by Redowan Delowar 
   Find Performance Bottlenecks in Python Code    “We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.” - Donald Knuth Blackfire is built to let you find the 3%. Quick install, appealing and user-friendly UI. →  BLACKFIREsponsor 
   How Async Should Have Been  Sometimes synchronous and asynchronous code can look very similar. The only difference might be the use of async and await keywords. In this opinion piece, Nikita Sobolev argues that the potential for repeated code is a design fault of Python’s asyncio framework, and describes a solution that allows synchronous Python to execute asynchronous code.  NIKITA SOBOLEV • Shared by Nikita Sobolev opinion 
   Our Python Monorepo  Opendoor, a residential real-estate startup, has quite a few Python services. These services were spread across several git repositories, but Opendoor’s engineering team recently moved them all into a single monorepo. Learn about the challenges the team faced with many repositories and how they set-up their monorepo to solve their problems.  DAN HIPSCHMAN 
   Fastest Way to Flatten a List in Python  Explore six different was to flatten a list of lists in Python and how their performance compares. The fastest of the six methods mentioned might surprise you!  CHRIS CONLAN 
   Nominees for 2020 Python Software Foundation Board Election  Ballots were sent out on June 8th.  PYTHON.ORG 
   
 Discussions  Classifying Values Based on Ranges That Contain Them  Avoid big if/else blocks by using the bisect module!  STACK OVERFLOW 
   Can You Change the Value of the Integer 1 in Python?  Spoiler alert: yes! But you probably shouldn’t do that.  STACK OVERFLOW 
   
 Python Jobs  Senior Python Engineer  GORGIAS 📍 REMOTE
   Software Engineer Python  NETIZEN CORPORATION 📍 REMOTE
   Senior Backend Engineer Python/Django/PostgreSQL  CYBERCODERS 📍 REMOTE
   More Python Jobs >>>
   
 Articles & Tutorials  Python Wheels Crosses 90% Adoption  Wheels are the new standard of Python distribution and are intended to replace “eggs.” This site shows the top 360 most-downloaded packages on PyPI showing which have been uploaded as wheel archives. As of today, 90% of the top Python packages are now available as wheels on PyPI.  PYTHONWHEELS.COM 
   15 Amazing pytest Plugins  pytest plugins are an amazing way to supercharge your test suites, leveraging great solutions from people solving test problems all over the world. In this episode of the Test & Code Podcast, Michael Kennedy and Brian Okken discuss 15 favorite plugins that you should know about.  TESTANDCODE.COM podcast 
   Python 2 to 3 Migration: A Developer’s Experience    Still haven’t migrated your Python 2 application to Python 3? This article provides guidelines, strategies and tips to make the process as easy as possible, along with a ready-to-use Python 2-to-3 runtime containing the most relevant packages. Check it out! →  ACTIVESTATEsponsor 
   Regular Expressions: Regexes in Python (Part 2)  In the previous tutorial in this series, you learned how to perform sophisticated pattern matching using regular expressions, or regexes, in Python. This tutorial explores more regex tools and techniques that are available in Python.  REAL PYTHON 
   Getting the Most Out of a Python Traceback  Learn how to read and understand the information you can get from a Python stack traceback. You’ll walk through several examples and see some of the most common tracebacks in Python.  REAL PYTHON video 
   Python Community Interview With Kattni Rembor  Kattni Rembor is a creative engineer at Adafruit Industries. In this interview, she talks about her work developing CircuitPython and the role mentorship has played in her career to date. She also shares her advice for anyone looking to start their first hardware project using CircuitPython.  REAL PYTHON 
   Combining Flask and Vue  Learn about three ways to combine Flask and Vue, the pros and cons of each, and some guidelines for when to use each method.  JACE MEDLIN • Shared by Jace Medlin 
   What is Python Redis? Enhance Python with Redis – The Fastest In-Memory Cloud Database  Install redis-py & Python Redis Client. Explore how Redis can enhance Python capabilities. Learn how to use Connection Pooling, SSL, Reading & Writing, & Opening a Connection with redis-py.  REDIS LABSsponsor 
   Django Stripe Tutorial  Learn how to configure a new Django website from scratch to accept one-time payments with Stripe Checkout.  MICHAEL HERMAN • Shared by Michael Herman 
   Why You Should Use More Enums in Python  Learn about Python’s Enum type and why you should consider using them in your own programs.  FLORIAN DAHLITZ • Shared by Florian Dahlitz 
   Python Debugging Tips  MARTIN HEINZ 
   
 Projects & Code  pydantic: Data Parsing and Validation Using Python Type Hints  GITHUB.COM/SAMUELCOLVIN 
   altair: Declarative Statistical Visualization Library for Python  GITHUB.COM/ALTAIR-VIZ 
   pyinfra: Automate Infrastructure Super Fast at Massive Scale  GITHUB.COM/FIZZADAR 
   falcon: The No-Nonsense, Minimalist Web Services and App Backend Framework  GITHUB.COM/FALCONRY 
   icl: An Interactive Memory Aid for One-Liners  GITHUB.COM/PLAINAS 
   falconify: Falcon Microservice Template for Quick Bootstrapping  GITLAB.COM/RAPHACOSTA 
    |          |        |       |       |        |  
  |      |