`time tox -e mypy-misc` (removed the actual mypy call)
before (each module in a separate 'hpi install' command)
```
real 1m45.901s
user 1m19.555s
sys 0m5.491s
```
in a single 'hpi install' command (multiple modules)
```
real 1m31.252s
user 1m6.028s
sys 0m5.065s
```
single 'hpi install' command with --parallel
```
real 0m15.674s
user 0m50.986s
sys 0m3.249s
```
fix fairly uncontroversial stuff in my.core like
- line spacing, which isn't too annoying (e.g. unlike many inline whitespace checks that break vertical formatting)
- unused imports/variables
- too broad except
- get rid of unnecessary globs in get_files (they should be in config if the user wishes)
- get rid of some old kython imports
- do not convert Path twice in foursquare (so CPath works correctly)
- use portable separators
- paths should be prepended with r' (so backwards slash isn't treated as escaping)
- sqlite connections should be closed (otherwise windows fails to remove the underlying db file)
- workaround for emojis via PYTHONUTF8=1 test for now
- make ZipPath portable
- properly use tox python environment everywhere
this was causing issues on Windows
e.g.
WARNING: test command found but not installed in testenv
cmd: C:\hostedtoolcache\windows\Python\3.9.12\x64\python3.EXE
doctor: better quick option propogation for stats
* use contextmanager for quick stats instead of editing global state
directly
* send quick to lots of stat related functions, so they
could possibly be used without doctor, if someone wanted to
* if a stats function has a 'quick' kwarg, send the value
there as well
* add an option to sort locations in my.time.tz.via_location
- fallback on the old logic if google_takeout_parser isn't available
- move to my.youtube.takeout (possibly mixing in other sources later)
- keep my.media.youtube, but issue deprecation warning
currently used in orger etc, so doesn't hurt to keep
- also fixes https://github.com/karlicoss/HPI/issues/113
adapted from https://github.com/seanbreckenridge/HPI/blob/master/my/google_takeout.py
additions:
- pass my.core.time.user_forced() to google_takeout_parser
without it, BST gets weird results for me, e.g. US/Aleutian
- support ZipPath via a config switch
- flexible error handling via a config switch
previously it would crash with:
SyntaxError: Forward reference must be an expression -- got 'yield'
(reproducible via python3 -c 'from typing import Union; Union[int, "yield"]' )