promnesia 1.1.20230129__py3-none-any.whl → 1.2.20240810__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- promnesia/__main__.py +58 -50
- promnesia/cannon.py +4 -4
- promnesia/common.py +57 -38
- promnesia/compare.py +3 -2
- promnesia/compat.py +6 -65
- promnesia/config.py +4 -2
- promnesia/database/common.py +66 -0
- promnesia/database/dump.py +187 -0
- promnesia/{read_db.py → database/load.py} +10 -11
- promnesia/extract.py +1 -0
- promnesia/kjson.py +1 -1
- promnesia/logging.py +14 -14
- promnesia/misc/__init__.pyi +0 -0
- promnesia/misc/config_example.py +1 -2
- promnesia/misc/install_server.py +5 -4
- promnesia/server.py +24 -24
- promnesia/sources/__init__.pyi +0 -0
- promnesia/sources/auto.py +12 -7
- promnesia/sources/browser.py +80 -293
- promnesia/sources/browser_legacy.py +298 -0
- promnesia/sources/demo.py +18 -2
- promnesia/sources/filetypes.py +8 -0
- promnesia/sources/github.py +2 -2
- promnesia/sources/hackernews.py +1 -2
- promnesia/sources/hypothesis.py +1 -1
- promnesia/sources/markdown.py +15 -15
- promnesia/sources/org.py +7 -3
- promnesia/sources/plaintext.py +3 -1
- promnesia/sources/reddit.py +2 -2
- promnesia/sources/rss.py +5 -1
- promnesia/sources/shellcmd.py +6 -2
- promnesia/sources/signal.py +29 -20
- promnesia/sources/smscalls.py +8 -1
- promnesia/sources/stackexchange.py +2 -2
- promnesia/sources/takeout.py +132 -12
- promnesia/sources/takeout_legacy.py +10 -2
- promnesia/sources/telegram.py +79 -123
- promnesia/sources/telegram_legacy.py +117 -0
- promnesia/sources/vcs.py +1 -1
- promnesia/sources/viber.py +6 -15
- promnesia/sources/website.py +1 -1
- promnesia/sqlite.py +42 -0
- promnesia/tests/__init__.py +0 -0
- promnesia/tests/common.py +137 -0
- promnesia/tests/server_helper.py +64 -0
- promnesia/tests/sources/__init__.py +0 -0
- promnesia/tests/sources/test_auto.py +66 -0
- promnesia/tests/sources/test_filetypes.py +42 -0
- promnesia/tests/sources/test_hypothesis.py +39 -0
- promnesia/tests/sources/test_org.py +65 -0
- promnesia/tests/sources/test_plaintext.py +26 -0
- promnesia/tests/sources/test_shellcmd.py +22 -0
- promnesia/tests/sources/test_takeout.py +58 -0
- promnesia/tests/test_cannon.py +325 -0
- promnesia/tests/test_cli.py +42 -0
- promnesia/tests/test_compare.py +30 -0
- promnesia/tests/test_config.py +290 -0
- promnesia/tests/test_db_dump.py +223 -0
- promnesia/tests/test_extract.py +61 -0
- promnesia/tests/test_extract_urls.py +43 -0
- promnesia/tests/test_indexer.py +245 -0
- promnesia/tests/test_server.py +292 -0
- promnesia/tests/test_traverse.py +41 -0
- promnesia/tests/utils.py +35 -0
- {promnesia-1.1.20230129.dist-info → promnesia-1.2.20240810.dist-info}/METADATA +14 -19
- promnesia-1.2.20240810.dist-info/RECORD +83 -0
- {promnesia-1.1.20230129.dist-info → promnesia-1.2.20240810.dist-info}/WHEEL +1 -1
- {promnesia-1.1.20230129.dist-info → promnesia-1.2.20240810.dist-info}/entry_points.txt +0 -1
- promnesia/dump.py +0 -105
- promnesia-1.1.20230129.dist-info/RECORD +0 -55
- {promnesia-1.1.20230129.dist-info → promnesia-1.2.20240810.dist-info}/LICENSE +0 -0
- {promnesia-1.1.20230129.dist-info → promnesia-1.2.20240810.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
promnesia/__init__.py,sha256=rxVINCLqxpZFknz9QeMA6McpnzR8Hi0zhZdoyYCGUlM,367
|
2
|
+
promnesia/__main__.py,sha256=5HVE6tyBCzTKs19rDGZIkotrmaoeTRBVtTCgRnKluh8,15251
|
3
|
+
promnesia/cannon.py,sha256=dRfRk4bnII5D0rxKnimZiN727imYuyR2Kfw3pWEOxLs,24596
|
4
|
+
promnesia/common.py,sha256=iMBdyYHzjma1mGP02-ugDpkN-WoyBE6Uku4Il8fuWzc,19546
|
5
|
+
promnesia/compare.py,sha256=XjhleEzl_hzSvuinDR_I9oin5U65HkAbNCJRJQ6BwM8,4639
|
6
|
+
promnesia/compat.py,sha256=SP1Nj3jwFoKKYLnx5qVirHdsufehcb42DShqS3PPzR4,389
|
7
|
+
promnesia/config.py,sha256=JFLY28C11tpvwBnPYT-VfdbsD1hivPvZMzojOh5tSJs,4743
|
8
|
+
promnesia/extract.py,sha256=JIVCxCvkn02YnGoUvLL0pAGPHXpepq-C_2brYbtN4ts,2804
|
9
|
+
promnesia/kjson.py,sha256=9hMw-sY-avA99aWV8cG03HL2AlfvlzE5YfWw1_5LwM4,3313
|
10
|
+
promnesia/logging.py,sha256=s_dhobXuTl8tibcpKCxktGduECKWIiEkYe0atcAToIQ,5923
|
11
|
+
promnesia/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
+
promnesia/server.py,sha256=42sByMUialuZQoKRF_zgxky7ykc9d-cNMwKBJAEaH68,14636
|
13
|
+
promnesia/sqlite.py,sha256=lB7YZ9jdALbo_gblmVn7z3Dn5M6FJg7Nz2y51Z0pl1c,1353
|
14
|
+
promnesia/database/common.py,sha256=HRw47RhxqN6Wfb5LVfbc1eRzT8LSJus1colY_S9ijm8,1814
|
15
|
+
promnesia/database/dump.py,sha256=JV3j8J5pJJmPocRZalJqq0zz1532p9lVxW7_lcXbvx4,6101
|
16
|
+
promnesia/database/load.py,sha256=Q2TLyV0rzvfvq8kkAhIIvcCC4D-eEbCH5wmsZL6jYg0,1353
|
17
|
+
promnesia/misc/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
+
promnesia/misc/config_example.py,sha256=MXxJCVjm9MrEwPR8SHTwkJRDcqWcqJWtfJg_M6yhRMo,364
|
19
|
+
promnesia/misc/install_server.py,sha256=-dPTJjM-jktVf25mcrXRL6Uj6Pji72lPnC3iyg_m8Gk,4820
|
20
|
+
promnesia/sources/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
+
promnesia/sources/auto.py,sha256=MhOesdn2YfPPepNkOBSihT_CDoGXfyTIA0y8wxcKqn0,11710
|
22
|
+
promnesia/sources/auto_logseq.py,sha256=eXOHIOx9MladhyD1IyLd90lyqO6gG2F5uObnuHFQrZA,439
|
23
|
+
promnesia/sources/auto_obsidian.py,sha256=PLWPHj9U3pnwLWw7-fzEk12F4Xdigq0VrvSAn_yS-yw,213
|
24
|
+
promnesia/sources/browser.py,sha256=BzdVVMm6N-U0F8_sng51deara9maY1TzMF6e7s8VCXg,2992
|
25
|
+
promnesia/sources/browser_legacy.py,sha256=3vARw78yXWvp3RQzfPbkXgtZB5iWSbXIKgadMIG4gGs,10400
|
26
|
+
promnesia/sources/demo.py,sha256=-5vADo4S-fDNEEPHGrh9pYoIIW_tzApRl6hIy8K3b2Q,1041
|
27
|
+
promnesia/sources/fbmessenger.py,sha256=_QdM3-vLutN-dh4vxfQlQkRDiorWA2EwixL49AH7lbM,969
|
28
|
+
promnesia/sources/filetypes.py,sha256=W0OVmhtvJKbWk2dju8Uwbo0TfNHye--cKrCPfL_DfBw,3593
|
29
|
+
promnesia/sources/github.py,sha256=hHTlJZvxe6TzzALX_z8R9FUQgVw39n22XYWPc62oPfo,2753
|
30
|
+
promnesia/sources/guess.py,sha256=-km2_hsrznYrws1lA3ZN5L6ixJunEsgQBFDU7juqPpM,776
|
31
|
+
promnesia/sources/hackernews.py,sha256=ReI362AKjZ79Lu99qJNPZtCoyHr6AycghvQrmDFRKgw,1228
|
32
|
+
promnesia/sources/hpi.py,sha256=yQIOT-OQ4Rhs7xXbszkNWjj46jvLDgP-xt7bSQV9wRk,361
|
33
|
+
promnesia/sources/html.py,sha256=FOLcXzV3J5VEHMkpuF4Q0rrht5zdGsDNQZJMu2WWYZ8,1108
|
34
|
+
promnesia/sources/hypothesis.py,sha256=PNuYKV-G7o8trMtgEzK3qX2NcBOhlZuf5Yg71FpWoQY,1359
|
35
|
+
promnesia/sources/instapaper.py,sha256=K2feGkgiFp6pNJoDYlyLs9m8MkDizoXy2QUg-Fjm-O0,969
|
36
|
+
promnesia/sources/markdown.py,sha256=acI2FwkawcAZX21i4kK44ligKKbj7TZDB5c0a9ihZOk,3762
|
37
|
+
promnesia/sources/org.py,sha256=oiZsNdW-oxq4a2D5_TYBUXPdPkPguSosaoyEp9dnyvc,5499
|
38
|
+
promnesia/sources/plaintext.py,sha256=aiMwd7WWtE65iTWiLFIow-RBDqozbjGfPgTdkzuMjaI,3259
|
39
|
+
promnesia/sources/pocket.py,sha256=4JCNrYs23Nq0c0hw_UxaxaIJbiqF2JVu5GAql-hfNZM,1105
|
40
|
+
promnesia/sources/reddit.py,sha256=DIEWQoWGpuQXGOmcZ9lANkPYuLhB9rzq1u23HllqLF4,5623
|
41
|
+
promnesia/sources/roamresearch.py,sha256=Su-2ykyjdylvDMogQjAgiGpLkh4Inw-K8yeAhGv678E,1068
|
42
|
+
promnesia/sources/rss.py,sha256=5-DmUesDv_GCOF5Qo7e7P3QrS6WdryZpFidazfI24Wg,870
|
43
|
+
promnesia/sources/shellcmd.py,sha256=m2tT8RSoOjXz7eC-OOXGGKleod-1A_XtWFlOucO3so0,2644
|
44
|
+
promnesia/sources/signal.py,sha256=iTU9z3hFiWjuGr5noLl8Vy3TlKj8zIMFlhNj2741h00,14728
|
45
|
+
promnesia/sources/smscalls.py,sha256=HHM8SGDx9qS5tZfpIn_iUcKYQIyryQMZvIkqUNZKHtk,755
|
46
|
+
promnesia/sources/stackexchange.py,sha256=vlidNoqWNUtR8dyHya9D7ZlHX5a2OIfoZq951M_V8c8,630
|
47
|
+
promnesia/sources/takeout.py,sha256=jDhpJkjtzC7OIlBASXHw0QNwwincBkEMgqyAhuboL7o,7918
|
48
|
+
promnesia/sources/takeout_legacy.py,sha256=ZuaP9jOuxKrbm03IOudeneWHlgT95Qr86fcGqvplKeE,4040
|
49
|
+
promnesia/sources/telegram.py,sha256=HCft7kWHdkBJiVI8OR6Wg34k4nW1vhb3tMAEJwGO1QA,2947
|
50
|
+
promnesia/sources/telegram_legacy.py,sha256=E4izRfxJWy25R0Rm-E78Op2lxcl2w6Rq5XUeYfXw2wc,4468
|
51
|
+
promnesia/sources/twitter.py,sha256=8vtLKyhtqioMmp_IKKVozLZC32TIQKjs_toB5cU2_6Q,1848
|
52
|
+
promnesia/sources/vcs.py,sha256=K2rRopKlwiNQ2_2TMWSHrwpsd5nYtPMUjHvnpNBvzBg,1609
|
53
|
+
promnesia/sources/viber.py,sha256=uFBtiJGWwuEE-gFIV0GV7eLExc0ddt3U3F_Wnkh1XKA,5948
|
54
|
+
promnesia/sources/website.py,sha256=Ii0Xka3PZk2_KJHJy9l3EYvGgSKkUehhHSmWI9tXec4,1781
|
55
|
+
promnesia/sources/zulip.py,sha256=s1bhYmx26VKC35CJF_2yiO4jdYHH0QwRYtAD3Ss6tt8,742
|
56
|
+
promnesia/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
|
+
promnesia/tests/common.py,sha256=eOFyfOLBUM8hK0gJ7JTXdjAMwRL6QN5DlRsZYAudMOM,4026
|
58
|
+
promnesia/tests/server_helper.py,sha256=W76vmwozoqJEPrlxQB0azklR28gf2RzimTHAJWOgclg,2181
|
59
|
+
promnesia/tests/test_cannon.py,sha256=bvfL5foAtDm6QzqE_nqtiSF6zAQnkWU0dlMoQp9kX0s,12702
|
60
|
+
promnesia/tests/test_cli.py,sha256=YZAsqbJcka1rjlDkb925V4A97FkiQc63JF0eT4Zb5wE,1406
|
61
|
+
promnesia/tests/test_compare.py,sha256=8pxY1DPZuGnrU1p0z4VzEawJVzzmL3sNVPce1CeiSNI,945
|
62
|
+
promnesia/tests/test_config.py,sha256=zkZXQkADHhgFzoFjqTr3zv-o6hqS0eED3wuYIMvw6dw,6532
|
63
|
+
promnesia/tests/test_db_dump.py,sha256=k6FPtcuSImMdealbgNr7mCW5NG1_jG8eESNwO1TSW1o,6751
|
64
|
+
promnesia/tests/test_extract.py,sha256=Hn-4B7T_4YrUtcO6tLxYJUkXknU97i0nEGRxejRnozI,2306
|
65
|
+
promnesia/tests/test_extract_urls.py,sha256=Ybez16VdYoveL9b_50Ca9vbMogWHOvFqDOJPGZrzQJg,1961
|
66
|
+
promnesia/tests/test_indexer.py,sha256=ec5xR9whW6z6GwKjnCGrHDp9WgTebbq7qKOIXHPLGlU,8911
|
67
|
+
promnesia/tests/test_server.py,sha256=pwlXT-qU6KXjE0ftlWB9CE1FxhpTrwJRdX8r4QDctYs,10787
|
68
|
+
promnesia/tests/test_traverse.py,sha256=F2qd1vvX2u9jJ4GVksAh6Dum-XEVLg9iCyFU6H8CZhI,1352
|
69
|
+
promnesia/tests/utils.py,sha256=etNWsXIeTMaYCTN9sIlgMKHyvY_Ek3l0Btu5rIpQEcI,1117
|
70
|
+
promnesia/tests/sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
|
+
promnesia/tests/sources/test_auto.py,sha256=d9MwY8taALdT5C64u8G7uvk4iubZ3SHSCR50qmXzz3E,1855
|
72
|
+
promnesia/tests/sources/test_filetypes.py,sha256=w5uPsfzHfl8hS3BbXxkA3TR8rKqniRGWSO8zeIKOiM4,1338
|
73
|
+
promnesia/tests/sources/test_hypothesis.py,sha256=nUsfET_X0yGVdlpmvxaDGAPjznYsA0Jc04vXGl83QCU,1400
|
74
|
+
promnesia/tests/sources/test_org.py,sha256=BYJqAkI7TfgOkWk1W33MMQUDSBGpvSgGbFvb2r9qqYo,2572
|
75
|
+
promnesia/tests/sources/test_plaintext.py,sha256=O6lLrCvZpLaaWuyeKU3eZyf4Mx1rmarU689nifTw3hk,828
|
76
|
+
promnesia/tests/sources/test_shellcmd.py,sha256=4wyoFB3UzdviNdQX_dOpIlrzZSMXtPqRgTkRb3pk3go,679
|
77
|
+
promnesia/tests/sources/test_takeout.py,sha256=We0gSDpENuxoO9kInSmBExJrAqmfNZkA3cVQf876SsQ,1559
|
78
|
+
promnesia-1.2.20240810.dist-info/LICENSE,sha256=rgO9acPmnw53ZBxiXBdp8kfxmRcekhg_Q7HN65BPihs,1074
|
79
|
+
promnesia-1.2.20240810.dist-info/METADATA,sha256=7ilgQnAz53XkvjLFIZgf8cjh5qWwyyZ_i3G2dw5mfkI,1870
|
80
|
+
promnesia-1.2.20240810.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
81
|
+
promnesia-1.2.20240810.dist-info/entry_points.txt,sha256=hz1qfzQSRh4kkVkJWk4hnYqE9A1nobEbKlLG_0nNxzE,54
|
82
|
+
promnesia-1.2.20240810.dist-info/top_level.txt,sha256=7yvIpooFiuNLf9yLdu9MTADz57z0YTAqSu7aSG9ujSU,10
|
83
|
+
promnesia-1.2.20240810.dist-info/RECORD,,
|
promnesia/dump.py
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
from pathlib import Path
|
2
|
-
import shutil
|
3
|
-
from typing import List, Set, Iterable
|
4
|
-
|
5
|
-
from more_itertools import chunked
|
6
|
-
|
7
|
-
from sqlalchemy import create_engine, MetaData, Table, event, text
|
8
|
-
|
9
|
-
from cachew import NTBinder
|
10
|
-
|
11
|
-
from .common import get_logger, DbVisit, get_tmpdir, Res, now_tz, Loc
|
12
|
-
from . import config
|
13
|
-
|
14
|
-
|
15
|
-
# NOTE: I guess the main performance benefit from this is not creating too many tmp lists and avoiding overhead
|
16
|
-
# since as far as sql is concerned it should all be in the same transaction. only a guess
|
17
|
-
# not sure it's the proper way to handle it
|
18
|
-
# see test_index_many
|
19
|
-
_CHUNK_BY = 10
|
20
|
-
|
21
|
-
# I guess 1 hour is definitely enough
|
22
|
-
_CONNECTION_TIMEOUT_SECONDS = 3600
|
23
|
-
|
24
|
-
# returns critical warnings
|
25
|
-
def visits_to_sqlite(vit: Iterable[Res[DbVisit]], *, overwrite_db: bool) -> List[Exception]:
|
26
|
-
logger = get_logger()
|
27
|
-
db_path = config.get().db
|
28
|
-
|
29
|
-
now = now_tz()
|
30
|
-
ok = 0
|
31
|
-
errors = 0
|
32
|
-
def vit_ok() -> Iterable[DbVisit]:
|
33
|
-
nonlocal errors, ok
|
34
|
-
for v in vit:
|
35
|
-
if isinstance(v, DbVisit):
|
36
|
-
ok += 1
|
37
|
-
yield v
|
38
|
-
else:
|
39
|
-
errors += 1
|
40
|
-
# conform to the schema and dump. can't hurt anyway
|
41
|
-
ev = DbVisit(
|
42
|
-
norm_url='<error>',
|
43
|
-
orig_url='<error>',
|
44
|
-
dt=now,
|
45
|
-
locator=Loc.make('<errror>'),
|
46
|
-
src='error',
|
47
|
-
# todo attach backtrace?
|
48
|
-
context=repr(v),
|
49
|
-
)
|
50
|
-
yield ev
|
51
|
-
|
52
|
-
tpath = Path(get_tmpdir().name) / 'promnesia.tmp.sqlite'
|
53
|
-
if overwrite_db:
|
54
|
-
# here we don't need timeout, since it's a brand new DB
|
55
|
-
engine = create_engine(f'sqlite:///{tpath}')
|
56
|
-
else:
|
57
|
-
# here we need a timeout, othewise concurrent indexing might not work
|
58
|
-
# (note that this also needs WAL mode)
|
59
|
-
# see test_concurrent_indexing
|
60
|
-
engine = create_engine(f'sqlite:///{db_path}', connect_args={'timeout': _CONNECTION_TIMEOUT_SECONDS})
|
61
|
-
|
62
|
-
# using WAL keeps database readable while we're writing in it
|
63
|
-
# this is tested by test_query_while_indexing
|
64
|
-
def enable_wal(dbapi_con, con_record) -> None:
|
65
|
-
dbapi_con.execute('PRAGMA journal_mode = WAL')
|
66
|
-
event.listen(engine, 'connect', enable_wal)
|
67
|
-
|
68
|
-
binder = NTBinder.make(DbVisit)
|
69
|
-
meta = MetaData()
|
70
|
-
table = Table('visits', meta, *binder.columns)
|
71
|
-
|
72
|
-
cleared: Set[str] = set()
|
73
|
-
ncleared = 0
|
74
|
-
with engine.begin() as conn:
|
75
|
-
table.create(conn, checkfirst=True)
|
76
|
-
|
77
|
-
for chunk in chunked(vit_ok(), n=_CHUNK_BY):
|
78
|
-
srcs = set(v.src or '' for v in chunk)
|
79
|
-
new = srcs.difference(cleared)
|
80
|
-
|
81
|
-
for src in new:
|
82
|
-
conn.execute(table.delete().where(table.c.src == src))
|
83
|
-
cursor = conn.execute(text("SELECT changes()")).fetchone()
|
84
|
-
assert cursor is not None
|
85
|
-
ncleared += cursor[0]
|
86
|
-
cleared.add(src)
|
87
|
-
|
88
|
-
bound = [binder.to_row(x) for x in chunk]
|
89
|
-
# pylint: disable=no-value-for-parameter
|
90
|
-
conn.execute(table.insert().values(bound))
|
91
|
-
engine.dispose()
|
92
|
-
|
93
|
-
if overwrite_db:
|
94
|
-
shutil.move(str(tpath), str(db_path))
|
95
|
-
|
96
|
-
errs = '' if errors == 0 else f', {errors} ERRORS'
|
97
|
-
total = ok + errors
|
98
|
-
what = 'overwritten' if overwrite_db else 'updated'
|
99
|
-
logger.info(
|
100
|
-
'%s database "%s". %d total (%d OK%s, %d cleared, +%d more)',
|
101
|
-
what, db_path, total, ok, errs, ncleared, ok - ncleared)
|
102
|
-
res: List[Exception] = []
|
103
|
-
if total == 0:
|
104
|
-
res.append(RuntimeError('No visits were indexed, something is probably wrong!'))
|
105
|
-
return res
|
@@ -1,55 +0,0 @@
|
|
1
|
-
promnesia/__init__.py,sha256=rxVINCLqxpZFknz9QeMA6McpnzR8Hi0zhZdoyYCGUlM,367
|
2
|
-
promnesia/__main__.py,sha256=VeH9_1mUqnaTGi4cWc6bWBlEbw9OZobANERRnei3M08,14938
|
3
|
-
promnesia/cannon.py,sha256=OAHd4QopUiUB9MR_3NgUK8fxUlaJ0TMPlKqTXR_b8RQ,24638
|
4
|
-
promnesia/common.py,sha256=obDhIN5jCbgC9Ek6RmXaFVl9Qj1K47FDV2nfACW76Ik,19125
|
5
|
-
promnesia/compare.py,sha256=AIfgxEefRLAN0BXy9Q8MHeUuaTAmq1P6ZEaMYILpnE8,4635
|
6
|
-
promnesia/compat.py,sha256=i4wAYBAlSjpSQXV4LzzguaXj8Sa1dWED34DrWhO04z0,2015
|
7
|
-
promnesia/config.py,sha256=9Vs_3DCJj10KU3Ox_y19C860WgLLcf0v4-S-vXQGAjI,4667
|
8
|
-
promnesia/dump.py,sha256=-IoMD3bzjXeGESpV_PuBaJN3o2B5Z0mAYCWH6auc6tQ,3642
|
9
|
-
promnesia/extract.py,sha256=V0vvoI_hXqIInecTgPu3pJUczXTaxYmrn1V1tDXjj1M,2768
|
10
|
-
promnesia/kjson.py,sha256=EYNd87xR0hW5XrvgMcz_zzYAO41iaEQlO78juhv6t4I,3277
|
11
|
-
promnesia/logging.py,sha256=WrgEAJc3DdM__rqBIEt-YJUNtICO7povBmOVYpDfqFs,5857
|
12
|
-
promnesia/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
-
promnesia/read_db.py,sha256=gt3tzSiJmB1-m-TwfFchme3X6m0DMbwoFwJZ-fwBz0I,1404
|
14
|
-
promnesia/server.py,sha256=03oJmMOmI0alD3aHxOBi1NKqgB1-t1qqFmNY-4kJcL4,14709
|
15
|
-
promnesia/misc/config_example.py,sha256=9roxcTjPlbSmUmUU6pEo6l1WLzStqWSyisgSr2zWLqY,439
|
16
|
-
promnesia/misc/install_server.py,sha256=bp1VJoIXa59xE9UWkcAkZymfjOXqhbfU0nYq-5llN7I,4850
|
17
|
-
promnesia/sources/auto.py,sha256=AQMxrMnntxRkz8Gtdj_kE0FtK5MANsyHwv4eGyQMvP4,11303
|
18
|
-
promnesia/sources/auto_logseq.py,sha256=eXOHIOx9MladhyD1IyLd90lyqO6gG2F5uObnuHFQrZA,439
|
19
|
-
promnesia/sources/auto_obsidian.py,sha256=PLWPHj9U3pnwLWw7-fzEk12F4Xdigq0VrvSAn_yS-yw,213
|
20
|
-
promnesia/sources/browser.py,sha256=b2DZvJUN42FRRcMpLPypxVxPLEskeOQY4kaaUT6hIlM,10451
|
21
|
-
promnesia/sources/demo.py,sha256=YRnQdbnscdX6-kKthISZsLd-79NbtdqkMG8I8QM0qOw,614
|
22
|
-
promnesia/sources/fbmessenger.py,sha256=_QdM3-vLutN-dh4vxfQlQkRDiorWA2EwixL49AH7lbM,969
|
23
|
-
promnesia/sources/filetypes.py,sha256=qJ8hIlfQTtmbaNJX4Dc-SG9HNylwGqI1t9uFHPe5-CM,3302
|
24
|
-
promnesia/sources/github.py,sha256=Tiqtgtp-045s8GKJlVPhbE5nCGIoraWUjvIu21d2pas,2681
|
25
|
-
promnesia/sources/guess.py,sha256=-km2_hsrznYrws1lA3ZN5L6ixJunEsgQBFDU7juqPpM,776
|
26
|
-
promnesia/sources/hackernews.py,sha256=SRn-0FqrMbZvsQJvRUZAWA_BkPANPPsFeKL2qKDsBl8,1229
|
27
|
-
promnesia/sources/hpi.py,sha256=yQIOT-OQ4Rhs7xXbszkNWjj46jvLDgP-xt7bSQV9wRk,361
|
28
|
-
promnesia/sources/html.py,sha256=FOLcXzV3J5VEHMkpuF4Q0rrht5zdGsDNQZJMu2WWYZ8,1108
|
29
|
-
promnesia/sources/hypothesis.py,sha256=Vlsb_RHLK9humXHnOWA_jYRUFBG-S8XYLjotDhrUmwI,1363
|
30
|
-
promnesia/sources/instapaper.py,sha256=K2feGkgiFp6pNJoDYlyLs9m8MkDizoXy2QUg-Fjm-O0,969
|
31
|
-
promnesia/sources/markdown.py,sha256=1aUN5T-fAmfg6MaUJGywJ-gz-a77mZgsgN_8swkVeRk,3604
|
32
|
-
promnesia/sources/org.py,sha256=1kFPz12VJGD8uJrx_WIQskYPxoyx6ZqgBGNtvAhKHpk,5382
|
33
|
-
promnesia/sources/plaintext.py,sha256=3iHVFXwLu4ljGOBVIBBcRkZnqxoOmjjOOxgyCOShvMc,3124
|
34
|
-
promnesia/sources/pocket.py,sha256=4JCNrYs23Nq0c0hw_UxaxaIJbiqF2JVu5GAql-hfNZM,1105
|
35
|
-
promnesia/sources/reddit.py,sha256=p8mRiUTtzJbFLpOf4i7bxnxBwgE1DQzqFP6HwTwN4-M,5650
|
36
|
-
promnesia/sources/roamresearch.py,sha256=Su-2ykyjdylvDMogQjAgiGpLkh4Inw-K8yeAhGv678E,1068
|
37
|
-
promnesia/sources/rss.py,sha256=r0FhEJmnFz8BqD6jFsTavrBJFy_l02mwaIEZfA6g49E,801
|
38
|
-
promnesia/sources/shellcmd.py,sha256=2lMaQeTFfCBCRxKt44F6N4uHF0oYV2Uy_aV21LHR-pQ,2587
|
39
|
-
promnesia/sources/signal.py,sha256=5nkESmHMeu-dOZocHxSo_1w0EOrSAnx3CyQLlkKvdKQ,14600
|
40
|
-
promnesia/sources/smscalls.py,sha256=Cm7ugD1jWANkinhkevzW1KUERheuY5ab6mYZZpGUt_8,574
|
41
|
-
promnesia/sources/stackexchange.py,sha256=KGZsZGQ1PyTr7tap9Jqtg5Hm47VSlJ-JlVacXDznpOw,724
|
42
|
-
promnesia/sources/takeout.py,sha256=nwHbhxWaB0y_cknYz35-lM4G58U3EVXWRF-2jax4KBI,3172
|
43
|
-
promnesia/sources/takeout_legacy.py,sha256=GxssEfHswu4kLVGLr7fe2uBn5u9ea3It41NDQ44ZDEE,3818
|
44
|
-
promnesia/sources/telegram.py,sha256=PQGlA9frCuctLiVUe788CU20RGypWB8lBi2oztxkrBM,4892
|
45
|
-
promnesia/sources/twitter.py,sha256=8vtLKyhtqioMmp_IKKVozLZC32TIQKjs_toB5cU2_6Q,1848
|
46
|
-
promnesia/sources/vcs.py,sha256=jSoFTK8tQe92z73WJYgy5dNmaoz6xEcIIpRuAHa1noQ,1607
|
47
|
-
promnesia/sources/viber.py,sha256=B4wmmJAwmqCadgyC36k0XwLaySqW_mYdIfHtbXY6ewI,6185
|
48
|
-
promnesia/sources/website.py,sha256=XbhG1hynjY7qsQ2b88Ej-BBO2VmDA8rbh5LJMKgZ7f0,1791
|
49
|
-
promnesia/sources/zulip.py,sha256=s1bhYmx26VKC35CJF_2yiO4jdYHH0QwRYtAD3Ss6tt8,742
|
50
|
-
promnesia-1.1.20230129.dist-info/LICENSE,sha256=rgO9acPmnw53ZBxiXBdp8kfxmRcekhg_Q7HN65BPihs,1074
|
51
|
-
promnesia-1.1.20230129.dist-info/METADATA,sha256=JUJFm-_34G_w8Fxs3PpOd2ZFaBmRo14eX1QEIUguKDY,1910
|
52
|
-
promnesia-1.1.20230129.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
|
53
|
-
promnesia-1.1.20230129.dist-info/entry_points.txt,sha256=kS7r-9onvui_TELEQvolES4KfWUeraSkSZ9-DWw4WGM,55
|
54
|
-
promnesia-1.1.20230129.dist-info/top_level.txt,sha256=7yvIpooFiuNLf9yLdu9MTADz57z0YTAqSu7aSG9ujSU,10
|
55
|
-
promnesia-1.1.20230129.dist-info/RECORD,,
|
File without changes
|
File without changes
|