😎 🐍 Awesome lists about Python Bytes https://pythonbytes.fm/
😎 🐍 Awesome lists about Python Bytes https://pythonbytes.fm/
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!
Each package is listed in the following format:
Link to show notes where mentioned
Short package description
Table of Contents
Wagtailis a content management system (CMS) (like Wordpress), written in
Python, based off
Djangoapp that creates automatic web UIs for
Live example at: https://wooey.herokuapp.com/
Full stack web apps with nothing but
Vue.js. It uses
Pythonin the browser.
Live example at: https://stefanhoelzl.github.io/vue.py/examples/todo_mvc/
An easy to use blogging platform, with enhanced support for Jupyter Notebooks.
D-Taleis a Flask/React client for visualizing pandas data structures. Live Demo
Why the Deets?
Great Expectationsis a leading tool for validating, documenting, and profiling, your data to maintain quality and improve communication between teams.
Plumb a PDF for detailed information about each char, rectangle, line, et cetera — and easily extract text and tables.
pyjanitoris a project that extends Pandas with a verb-based API, providing convenient data cleaning routines for repetitive tasks.
pandas-vetis a plugin for
flake8that provides opinionated linting for pandas code.
Jupyternotebooks to Excel Spreadsheets (xlsx), through a new 'Download As' option or via
nbconverton the command line.
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.
Why pylightxl over pandas/openpyxl
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.
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.
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,
sidetableis a super-charged version of pandas
value_countswith a little bit of
crosstabmixed in. With
sidetableis imported, you have a new accessor on all your DataFrames -
stbthat you can use to build summary tables.
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
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.
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.
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.
Pylustratoroffers 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.
Pythonlibrary that makes it easy for data scientists to create charts.
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:
Messy data sets? Missing values?
missingnoprovides 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
missingnoto get started.
HoloViz is a coordinated effort to make browser-based data visualization in Python easier to use, easier to learn, and more powerful.
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.
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/
Pandas_Aliveis intended to provide a plotting backend for animated matplotlib charts for Pandas DataFrames, similar to the already existing Visualization feature of Pandas.
Pandas_Alive, creating stunning, animated visualisations is as easy as calling:
Tensors and Dynamic neural networks in
Pythonwith strong GPU acceleration
Scikit-LearnAPI to make model selection and hyperparameter tuning easier. Under the hood, it’s using
A refreshing functional take on deep learning, compatible with your favorite libraries. From the makers of
Python framework for adversarial attacks and data augmentation for natural language processing
SQLAlchemywith Spatial Databases.
GeoAlchemy 2provides extensions to
SQLAlchemyfor working with spatial databases.
GeoAlchemy 2focuses on
PostGIS 2are 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).
Python Fireis a library for automatically generating command line interfaces (CLIs) from absolutely any
Clizeis an argument parser for
Python. You can use
Clizeas an alternative to
argparseif you want an even easier way to create command-line interfaces.
Typer, build great CLIs. Easy to code. Based on
Rich is a Python library for rich text and beautiful formatting in the terminal.
invokeis a task execution tool & library. Replacement for Makefiles.
I personally love
Gooeyand have it installed in almost every project lately.
Gooeyturns (almost) any
Pythoncommand 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
Eelis a little
Pythonlibrary for making simple Electron-like offline HTML/JS GUI apps, with full access to
Pythoncapabilities and libraries.
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
A photo and video colorizer: https://github.com/PySimpleGUI/PySimpleGUI-Photo-Colorizer
A real quick GUI generator for
click. Inspired by
Gooey, the GUI generator for classical
argparse-based command line programs.
PythonClasses Without Boilerplate
PyOxidizeris a utility for producing binaries that embed
Python. The over-arching goal of
PyOxidizeris 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.
dateutilmodule provides powerful extensions to the standard datetime module, available in
A library for compiling excel spreadsheets to
Pythoncode & visualizing them as a graph
Data validation and settings management using python type annotations.
Simplifies creation of data classes from dictionaries. Converting from dict to dataclass is trivial for trivial cases:
x = MyClass(**data_as_dict).
The strictest and most opinionated python linter ever. wemake-python-styleguide is actually a flake8 plugin with some other plugins as dependencies.
nbdevis 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
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.
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
with safer.open(filename, 'w') as fp: json.dump(data, fp) # If an exception is raised, the file is unchanged.
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.
interrogatechecks 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.
interrogatewill tell you which methods, functions, classes, and modules have docstrings, and which do not. Use interrogate to:
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
Unsync makes functions asynchronous and parallelized with a single decorator
A simple sleeping example with
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 async def unsync_async(): await asyncio.sleep(0.1) return 'I like decorators'
Pylance has the ability to supercharge your Python IntelliSense experience with rich type information, helping you write better code faster.
Introduced in version 3.4,
pathlibis 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
pathlibblog post mentioned in episode 191 can be found at: https://everydaysuperpowers.dev/articles/stop-working-so-hard-paths-get-started-pathlib/.
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.
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'
_fieldsmappings to access object attributes.
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
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:
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.
IPython magic command to format python code in cell using black.
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.
This extension reformats/prettifies code in a notebook's code cell by black.
Run any standard Python code quality tool on a Jupyter Notebook.
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.
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.
Prettifies Python exception output to make it legible.
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.
Panda3Dis an open-source, completely free-to-use engine for real time 3D games, visualizations, simulations, experiments
python weeks = dt / timedelta(days=7) hours = dt / timedelta(hours=1)- Flyweight design pattern for memory management https://pythonbytes.fm/episodes/show/196/version-your-sql-schemas-with-git-automatically-migrate-them - Optimal Peanut Butter and Banana Sandwiches https://www.ethanrosenthal.com/2020/08/25/optimal-peanut-butter-and-banana-sandwiches/ https://pythonbytes.fm/episodes/show/197/structured-concurrency-in-python