#244: vendorizing your Python podcast
Published Fri, Jul 30, 2021,
recorded Fri, Jul 30, 2021
Watch the live stream:
About the show
Sponsored by us:
- Check out the courses over at Talk Python
- And Brian’s book too!
Special guest: Brandon Braner
Brian #1: pip Environmental Variables
- The problem with snakes on a plane → no internet
- Situation:
- want to work on some code on a plane
- project set up to use tox, which creates venvs, and pip installs dependencies from pypi.org.
- but… no internet
- Preflight work:
- run tox with an internet connection
- copy everything from all of the “site-packages” directories under “.tox” into a “wheels” directory or whatever you want to call it.
- set environmental variables:
- PIP_FIND_LINKS=file:/Users/okken/wheels
- PIP_NO_INDEX=1
- Try this out first BEFORE getting on the plane, to make sure you didn’t miss anything.
- In flight:
- tox works fine now, using local dir as index
- Thanks Paul Ganssle for helping with this.
- All command line flags for pip are available as env variables:
- “pip’s command line options can be set with environment variables using the format
PIP_[HTML_REMOVED]
. Dashes (-
) have to be replaced with underscores (_
).”
- “pip’s command line options can be set with environment variables using the format
Michael #2: Extra, Extra, 6x Extra, hear all about it
- Michael’s Pydantic talk
- Little Automation Tools in Python episode
- A Day in Code- Python: Learn to Code in Python through an Illustrated Story Released by Shari Eskenas
- TabNine AI complete
- macOS photos follow up
- jinja-partials
- chameleon-partials
- fastapi-chameleon
Brandon #3: Kaggle 30 Days of Machine Learning
- What is Kaggle
- Find and publish data sets
- Explore and build models in a web-based data-science environment(Jupyter Notebooks)
- Work with other data scientists and machine learning engineers
- Enter competitions to solve data science challenges.
- Starts August 2nd, 2021
- Has an introduction to Python and covers basic and intermediate machine learning concepts
- Get some completion certificates
- Kaggle competition at the end with teams of 3
Brian #4: Building and testing Python with GitHub Actions
- GitHub Docs
- This is an incredible resource
- I suggest starting with Running tests with tox, as it’s a super simple setup.
- And, you can test all of the tox environments locally.
name: Python package on: [push, pull_request] jobs: build: runs-on: ubuntu-latest strategy: matrix: python: [3.7, 3.8, 3.9, 3.10-dev] steps: - uses: actions/checkout@v2 - name: Setup Python uses: actions/setup-python@v2 with: python-version: ${{ matrix.python }} - name: Install Tox and any other packages run: pip install tox - name: Run Tox run: tox -e py
Michael #5: python-vendorize
- via Patrick Park
- Vendoring a dependency means basically copying it into your package or your app rather than installing and importing it externally.
- Here’s a simple way to do that.
python-vendorize
allows pure-Python dependencies to be vendorizedvendorize.toml
might look something like:target = "your_app/_vendor" packages = [ "six", ]
run
python-vendorize
in the same directory asvendorize.toml
- In
your_app.py
,six
can be imported from_vendor
:from ._vendor import six
Brandon #6: Supabase and the new Python library
- Supabase is an open source Firebase Alternative
- Postgres Database, Authentication, instant APIs, realtime subscriptions and Storage
- uses:
- https://postgrest.org/en/stable/ for rest api access to your database
- GoTrue from Netlify for handling user authentication https://github.com/netlify/gotrue
- Realtime client built in Elixir to listen to Postgres changes. https://github.com/supabase/realtime
- Supabase local so you don’t need internet to develop your project https://supabase.io/docs/guides/local-development
Extras
- The Baked Data architectural pattern
- Simon Willison
- “Baked Data: bundling a read-only copy of your data alongside the code for your application, as part of the same deployment”
- Released service - released.sh
Joke