-
- Saw wicked on broadway.
- My ranked order of all the ones I’ve seen so far:
- Book of Mormon
- Moulin Rouge
- Harry Potter
- Rock of Ages
- Lion King
- Hadestown
- Wicked
- Aladdin
- Music Man
- Six
- Remember intel is arm and apple is amd.
tail -f /dev/null
as docker entrypoint/command to keep container running.
- Properly ran pyenv on wsl2. Installed the python build deps for a clean pyenv python install. Did some cleaning with
apt autoremove
. Now running python 3.11 on wsl2, macbook, and in all containers running sbsc. For all in both pyenv and poetry env, not system env.
- Installed the
Better TOML
and Mako
vscode extensions for syntax highlighting on those configs.
- Remember that
docker down
removes volumes as well. So you’ll have to restore the database if you down
. Instead, it’s better (in most cases) to just use docker stop
.
poetry export
can be used to output a standard requirements.txt
from the lockfile.
- SBSC. Upgraded ALL package versions.
- https://gitlab.com/bmahlstedt/supercontest/-/issues/180
- https://gitlab.com/bmahlstedt/supercontest/-/issues/184
- Python 3.8 -> 3.11.
- Flask 1 -> 2.
- SQLAlchemy 1 -> 2.
- Upgraded literally every other package. All flask extensions, all utility libraries, everything. Removed bs4 and decorator. Everything is unpinned in pyproject.toml (locked by lock, of course).
- Removed flask-script and moved over to flask’s (now native) CLI.
- Got flask-monitoringdashboard working again.
- Took advantage of the new py features: enum, walrus operator, switch statements, more.
- Removed the dependence on joyzoursky/python-chromedriver, which stopping uploading a couple years ago (since py3.9). Built my own image, basing from selenium. I then layer pyenv, poetry, and my packages in.
- This was quite the chore. Chrome is not seamless to install (tried to base from py3.11 first). Details on ticket.
- So multiple layers of isolation are now working: host machine -> isolated docker env (with chrome/chromedriver/selenium) -> isolated python env (via pyenv) -> isolated project env (via poetry).
- The client js reimplemented some logic for
arePicksOpen()
and unstartedStatus/finishedStatuses. These are now ONLY serverside-defined. Single source of truth.
- Exposed week/season as an arg for the scrapers to test them outside the current week. Looks good for next season.
- Selenium has a cool element.submit() which walks up the dom and clicks the form’s submit button. Better than finding the el by xpath/whatever and
.click()
, which has “Element is not clickable” errors sometimes (viewpoint, scroll, elements over it, etc).
flask-user
is yanked. The maintainer is no longer developing on it, but I’m not sure why the yank. flask-security
was forked in 2020 and is maintained by someone else now. flask-login
doesn’t have everything I want. So I just kept flask-user for now.
- Made some lint and style improvements, corresponding to newer versions of python/stdlib/pylint/black.
- Fixed all logos in the
stack
description. Got off clearbit. Made the readmes linked, so you don’t have to keep 2 sources of truth.
- Wrote some super helpful new
gnumake
targets to drop into various shells with various contexts (active flask app, env vars, etc). This organized things a bit better too; docker compose
is now only used for targets that manage container state. Everything else just uses docker
.
- Note: upgrading the version of
flask-migrate
works on its own if you don’t already have a migrations/
folder. If you do, the site-packages update is not sufficient; your local env.py
and alembic.ini
and script.py.mako
will be out of date. I updated them manually from github src.
- Moved all constants into
supercontants.core.constants
. Much better now.
- Cleaned the explicit template argpassing, jinja globals, and jinja exposing vars to js.
- Changed DB statuses to new format.
- Linted all js.
- Made version management of the sbsc package (itself) single-source-of-truth, instead of duplicating for sentry-sdk and flask-monitoringdashboard. Now, just
pypoetry.toml
need bumping.
- Cleaned some custom functions, just used
configparser
from stdlib.