general: minor cleanup

- 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)
This commit is contained in:
Dima Gerasimov 2022-05-31 19:08:39 +01:00 committed by karlicoss
parent 5799c062a5
commit 2025d7ad1a
10 changed files with 20 additions and 58 deletions

View file

@ -3,6 +3,7 @@
''' '''
REQUIRES = ['ijson', 'cffi'] REQUIRES = ['ijson', 'cffi']
# NOTE likely also needs libyajl2 from apt or elsewhere?
from pathlib import Path from pathlib import Path

View file

View file

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from my.config import codeforces as config from my.config import codeforces as config
from datetime import datetime from datetime import datetime, timezone
from typing import NamedTuple from typing import NamedTuple
import json import json
from typing import Dict, Iterator from typing import Dict, Iterator
@ -10,10 +10,6 @@ from ..core import get_files, Res, unwrap
from ..core.compat import cached_property from ..core.compat import cached_property
from ..core.konsume import ignore, wrap from ..core.konsume import ignore, wrap
from kython import fget
# TODO remove
from kython.kdatetime import as_utc
Cid = int Cid = int
@ -25,7 +21,7 @@ class Contest(NamedTuple):
def make(cls, j) -> 'Contest': def make(cls, j) -> 'Contest':
return cls( return cls(
cid=j['id'], cid=j['id'],
when=as_utc(j['startTimeSeconds']), when=datetime.fromtimestamp(j['startTimeSeconds'], tz=timezone.utc),
) )
Cmap = Dict[Cid, Contest] Cmap = Dict[Cid, Contest]
@ -91,23 +87,4 @@ def iter_data() -> Iterator[Res[Competition]]:
def get_data(): def get_data():
return list(sorted(iter_data(), key=fget(Competition.when))) return list(sorted(iter_data(), key=Competition.when.fget))
def test():
assert len(get_data()) > 10
def main():
for d in iter_data():
try:
d = unwrap(d)
except Exception as e:
print(f'ERROR! {d}')
else:
print(f'{d.when}: {d.summary}')
if __name__ == '__main__':
main()

View file

@ -6,18 +6,14 @@ from typing import NamedTuple
import json import json
from typing import Dict, Iterator from typing import Dict, Iterator
from ..core import get_files, Res, unwrap from ..core import get_files, Res, unwrap, Json
from ..core.compat import cached_property from ..core.compat import cached_property
from ..core.error import Res, unwrap from ..core.error import Res, unwrap
# TODO get rid of fget?
from kython import fget
from ..core.konsume import zoom, wrap, ignore from ..core.konsume import zoom, wrap, ignore
# TODO json type?? def _get_latest() -> Json:
def _get_latest() -> Dict: pp = max(get_files(config.export_path))
pp = max(get_files(config.export_path, glob='*.json'))
return json.loads(pp.read_text()) return json.loads(pp.read_text())
@ -82,21 +78,5 @@ def iter_data() -> Iterator[Res[Competition]]:
def get_data(): def get_data():
return list(sorted(iter_data(), key=fget(Competition.when))) return list(sorted(iter_data(), key=Competition.when.fget))
def test():
assert len(get_data()) > 10
def main():
for d in iter_data():
try:
d = unwrap(d)
except Exception as e:
print(f'ERROR! {d}')
else:
print(d.summary)
if __name__ == '__main__':
main()

View file

@ -53,3 +53,7 @@ if legacy:
REQUIRES = [ REQUIRES = [
'git+https://github.com/karlicoss/fbmessengerexport', 'git+https://github.com/karlicoss/fbmessengerexport',
] ]
# to prevent it from apprearing in modules list/doctor
from ..core import __NOT_HPI_MODULE__

View file

@ -17,7 +17,7 @@ logger = LazyLogger(__name__)
def inputs(): def inputs():
return get_files(config.export_path, '*.json') return get_files(config.export_path)
class Checkin: class Checkin:
@ -61,7 +61,7 @@ class Place:
def get_raw(fname=None): def get_raw(fname=None):
if fname is None: if fname is None:
fname = max(inputs()) fname = max(inputs())
j = json.loads(Path(fname).read_text()) j = json.loads(fname.read_text())
assert isinstance(j, list) assert isinstance(j, list)
for chunk in j: for chunk in j:

View file

@ -110,7 +110,7 @@ def pre_dataframe() -> Iterable[Res[SleepEntry]]:
sleeps = load_sleeps() sleeps = load_sleeps()
# todo emit error if graph doesn't exist?? # todo emit error if graph doesn't exist??
sleeps = [s for s in sleeps if s.graph.exists()] # TODO careful.. sleeps = [s for s in sleeps if s.graph.exists()] # TODO careful..
from ..common import group_by_key from ..core.common import group_by_key
for dd, group in group_by_key(sleeps, key=lambda s: s.date_).items(): for dd, group in group_by_key(sleeps, key=lambda s: s.date_).items():
if len(group) == 1: if len(group) == 1:
yield group[0] yield group[0]

View file

@ -3,12 +3,12 @@ import csv
from datetime import datetime from datetime import datetime
from typing import Iterator, List, NamedTuple from typing import Iterator, List, NamedTuple
from ..common import get_files from ..core import get_files
from my.config import imdb as config from my.config import imdb as config
def _get_last(): def _get_last():
return max(get_files(config.export_path, glob='*.csv')) return max(get_files(config.export_path))
class Movie(NamedTuple): class Movie(NamedTuple):

View file

@ -17,7 +17,7 @@ logger = LazyLogger(__name__)
def last() -> Path: def last() -> Path:
return max(get_files(config.export_path, '*.json')) return max(get_files(config.export_path))
class Keys: class Keys:

View file

@ -3,9 +3,9 @@ NOTE: Sigh. it's nice to be able to define the tests next to the source code (so
However, if you run 'pytest --pyargs my.core', it detects 'core' package name (because there is no my/__init__.py) However, if you run 'pytest --pyargs my.core', it detects 'core' package name (because there is no my/__init__.py)
(see https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code) (see https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code)
This results in relative imports failing (e.g. from ..kython import...). This results in relative imports failing (e.g. from ..core import...).
By using this helper file, pytest can detect the package name properly. A bit meh, but perhaps after kython is moved into the core, By using this helper file, pytest can detect the package name properly. A bit meh, but perhaps later,
we can run against the tests in my.core directly. we can run against the tests in my.core directly.
''' '''