Sean Breckenridge
b242d94be9
compat: fix version check to include 3.9
2023-02-27 00:57:08 -08:00
Sean Breckenridge
8d503783aa
compat: import callable
2023-02-27 00:38:03 -08:00
Sean Breckenridge
2e780ac455
vendorize bisect_left from python src
...
doesnt have a 'key' parameter till python3.10
2023-02-27 00:32:15 -08:00
seanbreckenridge
f05e81cee5
Merge branch 'master' into location-fallback
2023-02-22 23:02:37 -08:00
Sean Breckenridge
6d4724ffbc
denylist docs/installation instructions
2023-02-21 16:27:55 -08:00
Sean Breckenridge
8971a3915e
fatally erro if pyfzf not installed
2023-02-21 16:11:39 -08:00
Sean Breckenridge
90f7dd2ac8
remove REQUIRES from denylist
2023-02-21 02:51:24 -08:00
Sean Breckenridge
cdc5a9a537
add pyfzf_iter install to tox
2023-02-21 02:25:38 -08:00
Sean Breckenridge
2fa0b5cef8
add denylist implementation
2023-02-21 01:28:53 -08:00
Dima Gerasimov
6493859ba5
my.telegram: initial module from telegram_backup
2023-02-19 01:20:38 +00:00
Dima Gerasimov
0e884fe166
core/modules: switch away from using override_config to tmp_config in some tests & faka data generators
2023-02-09 02:35:09 +00:00
Dima Gerasimov
5ac5636e7f
core: better support for ad-hoc configs
...
properly reload/unload the relevant modules so hopefully no more weird hacks should be required
relevant
- https://github.com/karlicoss/promnesia/issues/340
- https://github.com/karlicoss/HPI/issues/46
2023-02-09 02:35:09 +00:00
Dima Gerasimov
bb5ad2b6ac
core: make hpi install more defensive, just warn on no requirements
...
this is useful for backwards compatibility if modules remove their requirements
2023-02-07 01:57:00 +00:00
Dima Gerasimov
5c82d0faa9
switch from using dataset to raw sqlite3 module
...
dataset is kinda unmaintaned and currently broken due to sqlalchemy 2.0 changes
resolves https://github.com/karlicoss/HPI/issues/264
2023-02-07 01:57:00 +00:00
Sean Breckenridge
54e6fe6ab5
ci: try disabling parallel pip installs on windows
2022-12-17 21:07:30 +00:00
Sean Breckenridge
716a2c82ba
core/serialize: serialize stdlib Decimal class
2022-10-19 00:07:30 +01:00
Dima Gerasimov
7098d6831f
fix mypy in _identity
...
seems easier to just ignore considering it's "internal" function
also a couple of tests to make sure it infers types correctly
2022-10-19 00:06:23 +01:00
Dima Gerasimov
119b295d71
core: allow legacy modules to be used in 'hpi module install' for backwards compatibility
...
but show warning
kinda hacky, but hopefully we will simplify it further when we have more such legacy modules
2022-06-07 22:59:08 +01:00
Sean Breckenridge
dbd15a7ee8
source: propogate help url for config errors
2022-06-07 21:33:38 +01:00
Dima Gerasimov
f0397b00ff
core/main: experimental --parallel flag for hpi module install
2022-06-06 09:49:15 +01:00
Dima Gerasimov
5f0231c5ee
core/main: allow passing multiple packages to 'module install'/'module requires' subcommands
2022-06-06 09:49:15 +01:00
Dima Gerasimov
016f28250b
general: initial flake8 checks (for now manual)
...
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
2022-06-05 22:28:38 +01:00
Dima Gerasimov
bf3dd6e931
core/sqlite: experiment at typing SELECT query (to some extent)
...
ideally would be cool to use TypedDict here somehow, but perhaps it'd only be possible after variadic generics https://peps.python.org/pep-0646
2022-06-03 23:49:27 +01:00
Dima Gerasimov
7a1b7b1554
core/general: add assert_never + typing annotations for dataset
2022-06-03 23:49:27 +01:00
Dima Gerasimov
3faebdd629
core: add Protocol/TypedDict to compat
2022-06-02 14:21:21 +01:00
Dima Gerasimov
186f561018
core: some cleanup for core/init and doctor; fix issue with compileall
2022-06-02 14:21:21 +01:00
Dima Gerasimov
9461df6aa5
general: extract the hack to warn of legacy imports and fallback to core/legacy.py
...
use it both in my.fbmessenger and my.reddit
if in the future any new modules need to be switched to namespace package structure with all.py it should make it easy to do
related:
- https://github.com/karlicoss/HPI/issues/12
- https://github.com/karlicoss/HPI/issues/89
- https://github.com/karlicoss/HPI/issues/102
2022-06-01 23:27:34 +01:00
Dima Gerasimov
4e59a65f9a
core/general: move cached_property into compat, use standard implementation from python3.8
2022-05-31 14:08:50 +01:00
Dima Gerasimov
d65e1b5245
twitter.twint: localize timestamps correctly
...
same issue as discussed here https://memex.zulipchat.com/#narrow/stream/279610-data/topic/google.20takeout.20timestamps
also see corresponding changes for google_takeout_parser
- https://github.com/seanbreckenridge/google_takeout_parser/pull/28/files
- https://github.com/seanbreckenridge/google_takeout_parser/pull/30/files
2022-05-31 01:28:11 +01:00
karlicoss
76a497f2bb
general,ci: fix python 3.10 issues, add to CI ( #242 )
2022-05-03 19:11:23 +01:00
Dima Gerasimov
64a4782f0e
core/ci: fix windows-specific issues
...
- 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
2022-05-03 10:16:01 +01:00
seanbreckenridge
0ce44bf0d1
doctor: better quick option propogation for stats ( #239 )
...
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
2022-05-02 00:13:05 +01:00
Dima Gerasimov
78f6ae96d1
my.youtube: use new my.google.takeout.parser module for its data
...
- 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
2022-04-20 22:22:30 +01:00
Dima Gerasimov
915cfe69b3
kompress.ZipPath: support stat().st_mtime
2022-04-19 21:08:06 +01:00
Dima Gerasimov
f9f73dda24
my.google.takeout.parser: new takeout parser, using https://github.com/seanbreckenridge/google_takeout_parser
...
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
2022-04-16 08:31:40 +01:00
Dima Gerasimov
6e921627d3
compat: workaround for Literal to work in runtime in python<3.8
...
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"]' )
2022-04-16 08:31:40 +01:00
Dima Gerasimov
599a8b0dd7
ZipPath: support hash, iterdir and proper / operator
2022-04-15 14:24:01 +01:00
Dima Gerasimov
706ec03a3f
instagram.gdpr: use ZipPath instead of adhoc zipfile methods
...
this allows using the module more agnostic whether the gpdr archive is packed or unpacked
2022-04-15 12:36:11 +01:00
karlicoss
7c0f304f94
core: add ZipPath encapsulating compressed zip files ( #227 )
...
* core: add ZipPath encapsulating compressed zip files
this way you don't have to unpack it first and can work as if it's a 'virtual' directory
related: https://github.com/karlicoss/HPI/issues/20
2022-04-14 10:06:13 +01:00
Sean Breckenridge
444ec1c450
core/source: make help URL configurable
2022-04-10 16:51:15 +01:00
Sean Breckenridge
16c777b45a
my.config: catch possible nested config errors
2022-04-10 16:51:15 +01:00
Sean Breckenridge
3fd6c81511
pass args to wrapped function
2022-03-15 00:00:12 +00:00
Sean Breckenridge
07b0c0cbef
core/source: fix error message, force kwargs for decorator
2022-03-15 00:00:12 +00:00
Sean Breckenridge
6185942f78
core/cli: autocomplete module names
2022-02-23 12:15:00 -01:00
Sean Breckenridge
f1b18beef7
core/structure: use logger, warn leftover files
2022-02-14 19:34:03 +00:00
Sean Breckenridge
a791b25650
core/cli: add --debug flag, add HPI_LOGS to docs
2022-02-11 09:31:10 +00:00
seanbreckenridge
7bf316eb9a
core/source: use import error ( #211 )
...
core/source: use import error
uses the more broad ImportError
instead of ModuleNotFoundError
reasoning being if some submodule
(the one I'm configuring currently is
my.twitter.twint) doesn't have additional
imports from another parser/DAL, but it
still has a config block, the user would
have to create a stub-config block in their
config to use the all.py file
2022-02-10 08:57:52 +00:00
seanbreckenridge
bea2c6a201
core/structure: add partial matching ( #212 )
...
* core/structure: add partial matching
2022-02-10 08:49:13 +00:00
Dima Gerasimov
f78b12f005
ci: fix pytest.warns type error
...
use warnings.catch_warnings to suppress instead
https://docs.pytest.org/en/7.0.x/how-to/capture-warnings.html?highlight=warnings#additional-use-cases-of-warnings-in-tests
likely due to pytest update to version 7
2022-02-04 23:38:50 +00:00
Dima Gerasimov
0e891a267f
doctor: suggest config documentation in case of ImportError from config
...
doesn't help in all cases but perhaps helpful anyway
relevant: https://github.com/karlicoss/HPI/issues/109
2022-02-02 23:46:46 +00:00