Skip to content

JackMcKew/awesome-python-bytes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

awesome-python-bytes

😎 🐍 Awesome lists about Python Bytes https://pythonbytes.fm/

Python Bytes is a weekly, short & sweet podcast by Michael Kennedy & Brian Okken.

Python Bytes Image

This repository is intended to list the awesome packages mentioned on the podcast. Pull requests are open to anyone to add packages mentioned on the podcast that are awesome!

Format

Each package is listed in the following format:

[Package Name](link/to/package)

*Link to show notes where mentioned*

Short package description

[![IMAGE IF APPLICABLE]](link/to/package)

Table of Contents

Web Development

https://pythonbytes.fm/episodes/show/70/have-you-seen-my-log-it-s-cute

Wagtail is a content management system (CMS) (like Wordpress), written in Python, based off Django.

Gallery of sites made with wagtail

https://pythonbytes.fm/episodes/show/62/wooey-and-gooey-are-simple-python-guis

A Django app that creates automatic web UIs for Python scripts.

Live example at: https://wooey.herokuapp.com/

Wooey Example

https://pythonbytes.fm/episodes/show/106/fluent-query-apis-on-python-collections

Full stack web apps with nothing but Python.

https://pythonbytes.fm/episodes/show/140/becoming-a-10x-developer-sorta

use Vue.js with pure Python

vue.py provides Python bindings for Vue.js. It uses brython to run Python in the browser.

Live example at: https://stefanhoelzl.github.io/vue.py/examples/todo_mvc/

Vue.py Example

https://pythonbytes.fm/episodes/show/183/need-a-beautiful-database-editor-look-to-the-bees

An easy to use blogging platform, with enhanced support for Jupyter Notebooks.

  • Uses GitHub actions to Jekyll blog posts on GitHub Pages.
  • Create posts with code, output of code, formatted text, directory from Jupyter Notebooks.
  • Altair interactive visualizations
  • Collapsible code cells that can be open or closed by default.

fastpages

Data Science

https://pythonbytes.fm/episodes/show/169/jupyter-notebooks-natively-on-your-ipad

D-Tale is a Flask/React client for visualizing pandas data structures. Live Demo

D-Tale Screenshots

Why the Deets?

  • Integrates easily into any python console or jupyter notebook
  • Works with Google Colab & Kaggle
  • Quickly explore large dataframes with our grid using sorting, filtering & show/hide/move columns
  • Browse column information & statistics with "Describe"
  • View correlation matrices
  • Quick histograms, value counts & category breakdowns using "Column Analysis"
  • Easy chart builder built on top of plotly/dash (export your charts to take them on the go as well πŸ˜„)

https://pythonbytes.fm/episodes/show/115/dataclass-csv-reader-and-nina-drops-by

Great Expectations is a leading tool for validating, documenting, and profiling, your data to maintain quality and improve communication between teams.

https://pythonbytes.fm/episodes/show/26/how-have-you-automated-your-life-or-cli-with-python

Plumb a PDF for detailed information about each char, rectangle, line, et cetera β€” and easily extract text and tables.

PDF Plumb Example

https://pythonbytes.fm/episodes/show/108/spilled-data-call-the-pyjanitor

pyjanitor is a project that extends Pandas with a verb-based API, providing convenient data cleaning routines for repetitive tasks.

https://pythonbytes.fm/episodes/show/167/cheating-at-kaggle-and-uwsgi-in-prod

pandas-vet is a plugin for flake8 that provides opinionated linting for pandas code.

https://github.com/ideonate/nb2xls

Convert Jupyter notebooks to Excel Spreadsheets (xlsx), through a new 'Download As' option or via nbconvert on the command line.

NB2XLS Preview

https://pythonbytes.fm/episodes/show/165/ranges-as-dictionary-keys-oh-my

A light weight, zero dependency (only standard libs used), to the point (no bells and whistles) Microsoft Excel reader/writer python 2.7-3+ library.

Example Code

Why pylightxl over pandas/openpyxl

  • (compatibility +1, small lib +1) pylightxl has no external dependencies (only uses python built-in standard libs). (compatibility +1) pylightxl was written to be compatible for python 2.7-3+ under one single pylightxl version. It does not impose rules on users to switch versions.
  • (small lib +1) pylightxl was written to simply read/write, thereby making the library small without any bells or whistles which makes it easy to compile with PyInstaller and other packagers
  • (user friendly +1) pylightxl was written to be as pythonic and easy to use as possible. Core developers actively survey Stack Overflow questions on working with excel files to tailor the API for most common problems.
  • (see xlrd before pylightxl) Note that the xlrd library is very similar in values to pylightxl, but with much more functionality! Please take a look at xlrd to see if it is a good fit for your project. So why pick pylightxl over xlrd that has much more to offer? Currently, xlrd does not have any active developers. Pylightxl is a new library aimed to help solve current excel data issues (as surveyed by Stack Overflow), please submit your suggestions to help improve this library together.

https://pythonbytes.fm/episodes/show/181/it-s-time-to-interrogate-your-python-code

The fastest way to build data apps.

Streamlit’s open-source app framework is the easiest way for data scientists and machine learning engineers to create beautiful, performant apps in only a few hours! All in pure Python. All for free.

Streamlit Demo

Mimesis is fast and extremely easy to use Python package, which helps generate big volumes of fake data for a variety of purposes in a variety of languages.

The fake data can be particularly useful during software development and testing. For example, it could be used to populate a testing database, create beautiful JSON and XML files, anonymize data taken from a production service and etc.

https://pythonbytes.fm/episodes/show/186/the-treebeard-will-guard-your-notebook

Makes it easy to build a frequency table and simple summary of missing values in a DataFrame. A useful tool when starting data exploration on a new data set At its core, sidetable is a super-charged version of pandas value_counts with a little bit of crosstab mixed in. With sidetable is imported, you have a new accessor on all your DataFrames - stb that you can use to build summary tables.

SideTable Preview

https://pythonbytes.fm/episodes/show/186/the-treebeard-will-guard-your-notebook

Pretty-print tabular data in Python, a library and a command-line utility.

from tabulate import tabulate

table = [["Sun",696000,1989100000],
          ["Earth",6371,5973.6],
          ["Moon",1737,73.5],
          ["Mars",3390,641.85]]
headers=["Planet","R (km)", "mass (x 10^29 kg)"]
table_str = tabulate(table, headers=headers)
print(table_str)
    Planet      R (km)    mass (x 10^29 kg)
    --------  --------  -------------------
    Sun         696000           1.9891e+09
    Earth         6371        5973.6
    Moon          1737          73.5
    Mars          3390         641.85

https://pythonbytes.fm/episodes/show/191/live-from-the-manning-python-conference

Data Version Control (DVC) tracks machine learning models and data sets.

DVC is built to make machine learning models shareable and reproducible. It is designed to handle large files, data sets, machine learning models, and metrics as well as code.

DVC

https://pythonbytes.fm/episodes/show/204/take-the-psf-survey-and-will-carlton-drop-by

MovingPandas is a Python library for handling movement data based on Pandas and GeoPandas. It provides trajectory data structures and functions for analysis and visualization.

MovingPandas Example

https://pythonbytes.fm/episodes/show/211/will-a-black-hole-devour-this-episode

VisiData is an interactive multitool for tabular data. It combines the clarity of a spreadsheet, the efficiency of the terminal, and the power of Python, into a lightweight utility which can handle millions of rows with ease.

Visidata lightning demo

Data Visualization

https://pythonbytes.fm/episodes/show/137/advanced-python-testing-and-big-time-diffs

Pylustrator offers an interactive interface to find the best way to present your data in a figure for publication. Added formatting an styling can be saved by automatically generated code. To compose multiple figures to panels, pylustrator can compose different subfigures to a single figure.

pylustrator demonstration

https://pythonbytes.fm/episodes/show/109/cpython-byte-code-explorer

Chartify is a Python library that makes it easy for data scientists to create charts.

Chartify Example

https://pythonbytes.fm/episodes/show/178/build-a-pypi-package-from-a-jupyter-notebook

Pandas-Bokeh provides a Bokeh plotting backend for Pandas, GeoPandas and Pyspark DataFrames, similar to the already existing Visualization feature of Pandas. Importing the library adds a complementary plotting method plot_bokeh() on DataFrames and Series.

With Pandas-Bokeh, creating stunning, interactive, HTML-based visualization is as easy as calling:

df.plot_bokeh()

PandasBokeh Example

https://pythonbytes.fm/episodes/show/179/guido-van-rossum-drops-in-on-python-bytes

Messy data sets? Missing values? missingno provides a small tool set of flexible and easy-to-use missing data visualizations and utilities that allows you to get a quick visual summary of the completeness (or lack thereof) of your data set. Just pip install missingno to get started.

Missingno Example

https://pythonbytes.fm/episodes/show/181/it-s-time-to-interrogate-your-python-code

HoloViz is a coordinated effort to make browser-based data visualization in Python easier to use, easier to learn, and more powerful.

Holoviz Example

https://pythonbytes.fm/episodes/show/181/it-s-time-to-interrogate-your-python-code

Panel is announced as a high-level app and dashboarding solution for Python. I think the terms powerful and full of features should be added to that.

The purpose of the Awesome Panel Project is to share knowledge on how Awesome Panel is and can become.

Awesome Panel Example

https://pythonbytes.fm/episodes/show/189/what-does-str.strip-do-are-you-sure

Datapane is an open source framework which makes it easy to turn scripts and notebooks into interactive reports.

Examples gallery at: https://datapane.com/explore/

https://pythonbytes.fm/episodes/show/196/version-your-sql-schemas-with-git-automatically-migrate-them

Pandas_Alive is intended to provide a plotting backend for animated matplotlib charts for Pandas DataFrames, similar to the already existing Visualization feature of Pandas.

With Pandas_Alive, creating stunning, animated visualisations is as easy as calling:

df.plot_animated()

Pandas Alive Example

Machine Learning

https://pythonbytes.fm/episodes/show/80/dan-bader-drops-by-and-we-found-30-new-python-projects

Tensors and Dynamic neural networks in Python with strong GPU acceleration

https://pythonbytes.fm/episodes/show/74/contributing-to-open-source-effectively

Yellowbrick extends the Scikit-Learn API to make model selection and hyperparameter tuning easier. Under the hood, it’s using Matplotlib.

Yellow Brick Preview

https://pythonbytes.fm/episodes/show/167/cheating-at-kaggle-and-uwsgi-in-prod

A refreshing functional take on deep learning, compatible with your favorite libraries. From the makers of spaCy, Prodigy & FastAPI

https://pythonbytes.fm/episodes/show/191/live-from-the-manning-python-conference

Python framework for adversarial attacks and data augmentation for natural language processing

TextAttack

Databases

https://pythonbytes.fm/episodes/show/77/you-don-t-have-to-be-a-workaholic-to-win

Using SQLAlchemy with Spatial Databases.

GeoAlchemy 2 provides extensions to SQLAlchemy for working with spatial databases.

GeoAlchemy 2 focuses on PostGIS. PostGIS 1.5 and PostGIS 2 are supported.

Use Beekeeper Studio to query and manage your relational databases, like MySQL, Postgres, SQLite, and SQL Server. Runs on all the things (Windows, Linux, macOS).

Features:

  • Auto complete SQL query editor with syntax highlighting
  • Tabbed interface, so you can multitask
  • Sort and filter table data to find just what you need
  • Sensible keyboard-shortcuts
  • Save queries for later
  • Query run-history, so you can find that one query you got working 3 days ago
  • Default dark theme

Beekeeper Studio

Command Line Interfaces (CLIs)

https://pythonbytes.fm/episodes/show/17/google-s-python-is-on-fire-and-simon-says-you-have-cpu-load-pythonically

Python Fire is a library for automatically generating command line interfaces (CLIs) from absolutely any Python object.

https://pythonbytes.fm/episodes/show/167/cheating-at-kaggle-and-uwsgi-in-prod

Clize is an argument parser for Python. You can use Clize as an alternative to argparse if you want an even easier way to create command-line interfaces.

https://pythonbytes.fm/episodes/show/164/use-type-hints-to-build-your-next-cli-app

Typer, build great CLIs. Easy to code. Based on Python type hints.

https://pythonbytes.fm/episodes/show/176/how-python-implements-super-long-integers

Rich is a Python library for rich text and beautiful formatting in the terminal.

Rich Example

https://pythonbytes.fm/episodes/show/188/will-there-be-a-switch-in-python-the-language

invoke is a task execution tool & library. Replacement for Makefiles.

Graphical User Interfaces (GUIs)

https://pythonbytes.fm/episodes/show/62/wooey-and-gooey-are-simple-python-guis

I personally love Gooey and have it installed in almost every project lately. Gooey turns (almost) any Python command line program into a full GUI application with one line.

I have also done a tutorial blog post on Gooey as well at: https://jackmckew.dev/making-executable-guis-with-python-gooey-pyinstaller.html

Gooey Example

https://pythonbytes.fm/episodes/show/61/on-being-a-senior-engineer

Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries.

Eel Demo

https://pythonbytes.fm/episodes/show/90/a-django-async-roadmap

https://pythonbytes.fm/episodes/show/104/api-evolution-the-right-way

PySimpleGUI enables anyone with a week of PySimpleGUI education or more to develop an entirely custom desktop GUI application. The underlying GUI frameworks supported include tkinter, Qt, WxPython and Remi. PySimpleGUI code can be run on any of these underlying frameworks with little or often no modification to the source code.

Unlike other simplified GUI packages, PySimpleGUI has a rich palette of widgets that are not dumbed down and can be assembled into any configuration desired, resulting in applications that look and operate as if written directly in tkinter, Qt, etc. Simple defines the ease of writing the programs, not the class of problems that are capable of being solved. 100's of demo programs are provided to give programmers a jump start on integrating with other packages such as OpenCV, Matplotlib. There are over 500 GitHub projects currently using PySimpleGUI.

A couple recent projects include:

A series of Rainmeter-style "Desktop Widgets": https://github.com/PySimpleGUI/PySimpleGUI-Widgets

PSG CPU Cores Scrolling

A photo and video colorizer: https://github.com/PySimpleGUI/PySimpleGUI-Photo-Colorizer

SNAG-0628

https://pythonbytes.fm/episodes/show/166/misunderstanding-software-clocks-and-time

A real quick GUI generator for click. Inspired by Gooey, the GUI generator for classical Python argparse-based command line programs.

QUICK Example

Python Development

https://pythonbytes.fm/episodes/show/11/django-2.0-is-dropping-python-2-entirely-pipenv-for-profile-functionality-and-pythonic-home-automation

Python Classes Without Boilerplate

https://pythonbytes.fm/episodes/show/114/what-should-be-in-the-python-standard-library

PyOxidizer is a utility for producing binaries that embed Python. The over-arching goal of PyOxidizer is to make complex packaging and distribution problems simple so application maintainers can focus on building applications instead of toiling with build systems and packaging tools.

https://pythonbytes.fm/episodes/show/136/a-python-kernel-rather-than-cleaning-the-batteries

The dateutil module provides powerful extensions to the standard datetime module, available in Python.

https://pythonbytes.fm/episodes/show/171/chilled-out-python-decorators-with-pep-614

A library for compiling excel spreadsheets to Python code & visualizing them as a graph

https://pythonbytes.fm/episodes/show/174/happy-developers-use-python-3

Data validation and settings management using python type annotations.

https://pythonbytes.fm/episodes/show/174/happy-developers-use-python-3

Simplifies creation of data classes from dictionaries. Converting from dict to dataclass is trivial for trivial cases: x = MyClass(**data_as_dict).

https://pythonbytes.fm/episodes/show/155/guido-van-rossum-retires

The strictest and most opinionated python linter ever. wemake-python-styleguide is actually a flake8 plugin with some other plugins as dependencies.

https://pythonbytes.fm/episodes/show/178/build-a-pypi-package-from-a-jupyter-notebook

nbdev is a library that allows you to fully develop a library in Jupyter Notebooks, putting all your code, tests and documentation in one place. That is: you now have a true literate programming environment, as envisioned by Donald Knuth back in 1983!

Using the interactive environment, you can easily debug and refactor your code. Add #export flags to the cells that define the functions you want to include in your python modules. Here, for instance, is how combined_cos is defined and documented in the fastai library:

NBDev Example

  • Creates Python packages out of a notebook
  • Creates documentation from the notebook
  • Solves the git perma-conflict issues with git pre-commit hooks
  • Use #export to declare a cell should become a function in the package
  • Manages the boilerplate issues for creating Python packages (setup.py, etc)
  • Makes testing possible inside notebooks
  • Navigate and edit your code in a standard text editor or IDE, and sync any changes automatically back into your notebooks (reverse basically)

https://pythonbytes.fm/episodes/show/30/you-are-not-google-and-other-ruminations

Hypothesis is a Python library for creating unit tests which are simpler to write and more powerful when run, finding edge cases in your code you wouldn’t have thought to look for. It is stable, powerful and easy to add to any existing test suite.

It works by letting you write tests that assert that something should be true for every case, not just the ones you happen to think of.

https://pythonbytes.fm/episodes/show/180/transactional-file-io-with-python-and-safer

safer: a safer file opener

No more partial writes or corruption! For file streams, sockets or any callable.

# dangerous
with open(filename, 'w') as fp:
    json.dump(data, fp)
    # If an exception is raised, the file is empty or partly written

# safer
with safer.open(filename, 'w') as fp:
    json.dump(data, fp)
    # If an exception is raised, the file is unchanged.

https://pythonbytes.fm/episodes/show/180/transactional-file-io-with-python-and-safer

Fix common misspellings in text files. It's designed primarily for checking misspelled words in source code, but it can be used with other files as well.

https://pythonbytes.fm/episodes/show/181/it-s-time-to-interrogate-your-python-code

interrogate checks your code base for missing docstrings.

Documentation should be as important as code itself. And it should live within code. Python standardized docstrings, allowing for developers to navigate libraries as simply as calling help() on objects, and with powerful tools like Sphinx, pydoc, and Docutils to automatically generate HTML, LaTeX, PDFs, etc.

Enter: interrogate.

interrogate will tell you which methods, functions, classes, and modules have docstrings, and which do not. Use interrogate to:

  • Get an understanding of how well your code is documented;
  • Add it to CI/CD checks to enforce documentation on newly-added code;
  • Assess a new code base for (one aspect of) code quality and maintainability.

https://pythonbytes.fm/episodes/show/181/it-s-time-to-interrogate-your-python-code

A new kind of Progress Bar, with real-time throughput, eta and very cool animations!

from alive_progress import alive_bar
items = range(1000)                  # retrieve your set of items
with alive_bar(len(items)) as bar:   # declare your expected total
    for item in items:               # iterate as usual
        # process each item
        bar()                        # call after consuming one item

Alive-Progress Example

https://pythonbytes.fm/episodes/show/188/will-there-be-a-switch-in-python-the-language

Unsync makes functions asynchronous and parallelized with a single decorator @unsync.

A simple sleeping example with asyncio:

async def sync_async():
    await asyncio.sleep(0.1)
    return 'I hate event loops'

result = asyncio.run(sync_async())
print(result)

Same example with unsync:

@unsync
async def unsync_async():
    await asyncio.sleep(0.1)
    return 'I like decorators'

print(unsync_async().result())

Tutorial β€” making a trading bot asynchronous using Python’s β€œunsync” library

https://pythonbytes.fm/episodes/show/190/you-will-now-be-notified-if-the-python-zipper-is-broken

Pylance has the ability to supercharge your Python IntelliSense experience with rich type information, helping you write better code faster.

  • Features docstring automation, Signature help, parameter suggestions, code completion (better than existing)
  • Supports auto-imports, if you start typing from a namespace, like a standard library module, it will add the import for you.
  • Go to Reference, Go to Implementation shortcuts
  • Uses the pyright type checker (an alternative to MyPy (Dropbox), Pyre (Facebook) and Pytype (Google))
  • If you have pyright extension installed, remove it first!

Pylance GIF

https://pythonbytes.fm/episodes/show/191/live-from-the-manning-python-conference

Introduced in version 3.4, pathlib is a module in the standard library for dealing with paths for you! From the documentation itself This module offers classes representing filesystem paths with semantics appropriate for different operating systems.

An intro to pathlib blog post mentioned in episode 191 can be found at: https://everydaysuperpowers.dev/articles/stop-working-so-hard-paths-get-started-pathlib/.

https://pythonbytes.fm/episodes/show/192/calculations-by-hand-but-in-the-compter-with-handcalcs

handcalcs is a library to render Python calculation code automatically in Latex, but in a manner that mimics how one might format their calculation if it were written with a pencil: write the symbolic formula, followed by numeric substitutions, and then the result.

Handcalcs Demo

https://pythonbytes.fm/episodes/show/194/events-and-callbacks-in-the-python-language

The littletable module provides a low-overhead, schema-less, in-memory database access to a collection of user objects. littletable provides a DataObject class for ad hoc creation of semi-immutable objects that can be stored in a littletable Table. Tables can also contain user-defined objects, using those objects' __dict__, __slots__, or _fields mappings to access object attributes.

https://pythonbytes.fm/episodes/show/194/events-and-callbacks-in-the-python-language

The C# language provides a handy way to declare, subscribe to and fire events. Technically, an event is a β€œslot” where callback functions (event handlers) can be attached to - a process referred to as subscribing to an event. Here is a handy package that encapsulates the core to event subscription and event firing and feels like a β€œnatural” part of the language.

>>> def something_changed(reason):
...     print "something changed because %s" % reason
...

>>> from events import Events
>>> events = Events()
>>> events.on_change += something_changed

https://pythonbytes.fm/episodes/show/185/this-code-is-snooping-on-you-a-good-thing

Fil is a new open source Python memory profiler (currently hosted on GitHub), designed for code that processes large amounts of data: the kind of code written by data scientists, data engineers, and scientists.

Some features highlighted in episode 185:

  • If your Python data pipeline is using too much memory, it can be very difficult to figure where exactly all that memory is going.
  • What you need is some way to know exactly where peak memory usage is, and what code was responsible for memory at that point. And that’s exactly what the Fil memory profiler does.
  • Many tools track just Python memory. Fil capturesall allocations going to the standard C memory allocation APIs.

https://pythonbytes.fm/episodes/show/198/there-s-a-beaver-in-your-database-and-anna-lena-drops-by

PyInstaller Extractor is a Python script to extract the contents of a PyInstaller generated Windows executable file. The contents of the pyz file (usually pyc files) present inside the executable are also extracted.

https://pythonbytes.fm/episodes/show/200/no-dog-piling-please-it-s-episode-200

IPython magic command to format python code in cell using black.

blackcellmagic example

https://pythonbytes.fm/episodes/show/201/understand-git-by-rebuilding-it-in-python

ugit: DIY Git in Python

Welcome aboard! We're going to implement Git in Python to learn more about how Git works on the inside.

https://pythonbytes.fm/episodes/show/202/jupyter-is-back-in-black

This extension reformats/prettifies code in a notebook's code cell by black.

jupyterblack example

https://pythonbytes.fm/episodes/show/204/take-the-psf-survey-and-will-carlton-drop-by

Run any standard Python code quality tool on a Jupyter Notebook.

nbQA Example

https://pythonbytes.fm/episodes/show/208/dependencies-out-of-control-just-pip-chill.

PIP Chill - Make requirements with only the packages you need. Like pip freeze but lists only the packages that are not dependencies of installed packages.

pipchill example

https://pythonbytes.fm/episodes/show/211/will-a-black-hole-devour-this-episode

airspeed velocity (asv) is a tool for benchmarking Python packages over their lifetime.

It is primarily designed to benchmark a single project over its lifetime using a given suite of benchmarks. The results are displayed in an interactive web frontend that requires only a basic static webserver to host.

Example airspeed velocity site

https://pythonbytes.fm/episodes/show/215/a-visual-introduction-to-numpy

Prettifies Python exception output to make it legible.

PrettyErrors Example

https://pythonbytes.fm/episodes/show/215/a-visual-introduction-to-numpy

Scalene is a high-performance CPU, GPU and memory profiler for Python that does a number of things that other Python profilers do not and cannot do. It runs orders of magnitude faster than other profilers while delivering far more detailed information.

Game Development

https://pythonbytes.fm/episodes/show/116/so-you-want-python-in-a-3d-graphics-engine

Panda3D is an open-source, completely free-to-use engine for real time 3D games, visualizations, simulations, experiments

Panda3D Example

Interesting Tidbits

About

😎 🐍 Awesome lists about Python Bytes https://pythonbytes.fm/

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages