promnesia 1.1.20230129__tar.gz → 1.2.20240810__tar.gz
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-1.2.20240810/.ci/end2end/.dockerignore +1 -0
- promnesia-1.2.20240810/.ci/end2end/Dockerfile +19 -0
- promnesia-1.2.20240810/.ci/end2end/build_and_run.sh +20 -0
- promnesia-1.2.20240810/.ci/end2end/scripts/build_and_run_tests.sh +15 -0
- promnesia-1.2.20240810/.ci/end2end/scripts/setup_chrome.sh +40 -0
- promnesia-1.2.20240810/.ci/end2end/scripts/setup_firefox.sh +26 -0
- promnesia-1.2.20240810/.ci/end2end/scripts/setup_node.sh +7 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/.ci/release +2 -4
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/.ci/run +1 -1
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/.github/workflows/main.yml +46 -45
- promnesia-1.2.20240810/PKG-INFO +53 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/README.org +1 -1
- promnesia-1.2.20240810/benchmarks/20231115.org +17 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/doc/DEVELOPMENT.org +7 -4
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/doc/SOURCES.org +108 -47
- promnesia-1.2.20240810/doc/addons-mozilla-org.org +53 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/docker_files/Dockerfile +3 -3
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/docker_files/Dockerfile-indexer +1 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/.ci/build +0 -1
- promnesia-1.2.20240810/extension/__mocks__/browser.js +30 -0
- promnesia-1.2.20240810/extension/amo-metadata.json +47 -0
- promnesia-1.1.20230129/extension/babel.config.js → promnesia-1.2.20240810/extension/babel.config.cjs +3 -2
- promnesia-1.2.20240810/extension/build +161 -0
- promnesia-1.2.20240810/extension/eslint.config.js +31 -0
- promnesia-1.2.20240810/extension/generate_manifest.js +250 -0
- promnesia-1.1.20230129/extension/jest.config.js → promnesia-1.2.20240810/extension/jest.config.cjs +2 -1
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/old}/flow-typed/webextension-polyfill.js +14 -0
- promnesia-1.2.20240810/extension/old/webpack.config.js +380 -0
- promnesia-1.2.20240810/extension/package-lock.json +13754 -0
- promnesia-1.2.20240810/extension/package.json +61 -0
- promnesia-1.2.20240810/extension/rollup.config.js +172 -0
- promnesia-1.1.20230129/extension/src/api.js → promnesia-1.2.20240810/extension/src/api.ts +53 -58
- promnesia-1.1.20230129/extension/src/background.js → promnesia-1.2.20240810/extension/src/background.ts +291 -245
- promnesia-1.2.20240810/extension/src/background_chrome_mv2.js +5 -0
- promnesia-1.1.20230129/extension/src/common.js → promnesia-1.2.20240810/extension/src/common.ts +62 -66
- promnesia-1.2.20240810/extension/src/compat.ts +24 -0
- promnesia-1.1.20230129/extension/src/display.js → promnesia-1.2.20240810/extension/src/display.ts +30 -28
- promnesia-1.1.20230129/extension/src/filterlist.js → promnesia-1.2.20240810/extension/src/filterlist.ts +13 -14
- promnesia-1.1.20230129/extension/src/normalise.js → promnesia-1.2.20240810/extension/src/normalise.ts +9 -14
- promnesia-1.1.20230129/extension/src/notifications.js → promnesia-1.2.20240810/extension/src/notifications.ts +61 -49
- promnesia-1.1.20230129/extension/src/options.js → promnesia-1.2.20240810/extension/src/options.ts +43 -39
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/src/options_page.html +4 -4
- promnesia-1.1.20230129/extension/src/options_page.js → promnesia-1.2.20240810/extension/src/options_page.ts +30 -55
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/src/search.html +1 -4
- promnesia-1.1.20230129/extension/src/search.js → promnesia-1.2.20240810/extension/src/search.ts +15 -16
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/src/selenium_bridge.js +3 -2
- promnesia-1.2.20240810/extension/src/showvisited.css +49 -0
- promnesia-1.2.20240810/extension/src/showvisited.js +309 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/src/sidebar.css +2 -1
- promnesia-1.1.20230129/extension/src/sidebar.js → promnesia-1.2.20240810/extension/src/sidebar.ts +89 -70
- promnesia-1.1.20230129/extension/src/sources.js → promnesia-1.2.20240810/extension/src/sources.ts +30 -27
- promnesia-1.2.20240810/extension/tests/anchorme.test.js +12 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/tests/common.test.js +5 -5
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/tests/integration.test.js +27 -47
- promnesia-1.2.20240810/extension/tsconfig.json +20 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/mypy.ini +6 -4
- promnesia-1.2.20240810/ruff.toml +25 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/scripts/browser_history.py +3 -3
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/scripts/promnesia +1 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/setup.py +15 -13
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/__main__.py +58 -50
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/cannon.py +4 -4
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/common.py +57 -38
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/compare.py +3 -2
- promnesia-1.2.20240810/src/promnesia/compat.py +12 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/config.py +4 -2
- promnesia-1.2.20240810/src/promnesia/database/common.py +66 -0
- promnesia-1.2.20240810/src/promnesia/database/dump.py +187 -0
- promnesia-1.1.20230129/src/promnesia/read_db.py → promnesia-1.2.20240810/src/promnesia/database/load.py +10 -11
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/extract.py +1 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/kjson.py +1 -1
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/logging.py +14 -14
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/misc/config_example.py +1 -2
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/misc/install_server.py +5 -4
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/server.py +24 -24
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/auto.py +12 -7
- promnesia-1.2.20240810/src/promnesia/sources/browser.py +89 -0
- promnesia-1.1.20230129/src/promnesia/sources/browser.py → promnesia-1.2.20240810/src/promnesia/sources/browser_legacy.py +13 -17
- promnesia-1.2.20240810/src/promnesia/sources/demo.py +36 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/filetypes.py +8 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/github.py +2 -2
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/hackernews.py +1 -2
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/hypothesis.py +1 -1
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/markdown.py +15 -15
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/org.py +7 -3
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/plaintext.py +3 -1
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/reddit.py +2 -2
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/rss.py +5 -1
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/shellcmd.py +6 -2
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/signal.py +29 -20
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/smscalls.py +8 -1
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/stackexchange.py +2 -2
- promnesia-1.2.20240810/src/promnesia/sources/takeout.py +207 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/takeout_legacy.py +10 -2
- promnesia-1.2.20240810/src/promnesia/sources/telegram.py +84 -0
- promnesia-1.1.20230129/src/promnesia/sources/telegram.py → promnesia-1.2.20240810/src/promnesia/sources/telegram_legacy.py +12 -23
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/vcs.py +1 -1
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/viber.py +6 -15
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/website.py +1 -1
- promnesia-1.2.20240810/src/promnesia/sqlite.py +42 -0
- promnesia-1.2.20240810/src/promnesia/tests/__init__.py +0 -0
- promnesia-1.2.20240810/src/promnesia/tests/common.py +137 -0
- promnesia-1.2.20240810/src/promnesia/tests/server_helper.py +64 -0
- promnesia-1.2.20240810/src/promnesia/tests/sources/__init__.py +0 -0
- promnesia-1.1.20230129/tests/test_auto_indexer.py → promnesia-1.2.20240810/src/promnesia/tests/sources/test_auto.py +9 -10
- promnesia-1.2.20240810/src/promnesia/tests/sources/test_filetypes.py +42 -0
- promnesia-1.2.20240810/src/promnesia/tests/sources/test_hypothesis.py +39 -0
- promnesia-1.1.20230129/tests/test_org_indexer.py → promnesia-1.2.20240810/src/promnesia/tests/sources/test_org.py +16 -9
- promnesia-1.2.20240810/src/promnesia/tests/sources/test_plaintext.py +26 -0
- promnesia-1.2.20240810/src/promnesia/tests/sources/test_shellcmd.py +22 -0
- promnesia-1.2.20240810/src/promnesia/tests/sources/test_takeout.py +58 -0
- promnesia-1.1.20230129/tests/cannon.py → promnesia-1.2.20240810/src/promnesia/tests/test_cannon.py +2 -2
- promnesia-1.1.20230129/tests/cli.py → promnesia-1.2.20240810/src/promnesia/tests/test_cli.py +11 -18
- promnesia-1.2.20240810/src/promnesia/tests/test_compare.py +30 -0
- promnesia-1.1.20230129/tests/config_tests.py → promnesia-1.2.20240810/src/promnesia/tests/test_config.py +90 -71
- promnesia-1.2.20240810/src/promnesia/tests/test_db_dump.py +223 -0
- promnesia-1.2.20240810/src/promnesia/tests/test_extract.py +61 -0
- promnesia-1.2.20240810/src/promnesia/tests/test_extract_urls.py +43 -0
- promnesia-1.2.20240810/src/promnesia/tests/test_indexer.py +245 -0
- promnesia-1.2.20240810/src/promnesia/tests/test_server.py +292 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810/src/promnesia}/tests/test_traverse.py +11 -13
- promnesia-1.2.20240810/src/promnesia/tests/utils.py +35 -0
- promnesia-1.2.20240810/src/promnesia.egg-info/PKG-INFO +53 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia.egg-info/SOURCES.txt +75 -44
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia.egg-info/entry_points.txt +0 -1
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia.egg-info/requires.txt +9 -10
- promnesia-1.2.20240810/tests/addon.py +364 -0
- promnesia-1.2.20240810/tests/addon_helper.py +172 -0
- promnesia-1.2.20240810/tests/common.py +69 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/demos.py +13 -10
- promnesia-1.2.20240810/tests/end2end_test.py +837 -0
- promnesia-1.2.20240810/tests/testdata/auto/orgs/file5.org +4 -0
- promnesia-1.2.20240810/tests/webdriver_utils.py +162 -0
- promnesia-1.2.20240810/tox.ini +99 -0
- promnesia-1.1.20230129/.ci/end2end_tests.Dockerfile +0 -56
- promnesia-1.1.20230129/.circleci/config.yml +0 -41
- promnesia-1.1.20230129/PKG-INFO +0 -20
- promnesia-1.1.20230129/doc/addons-mozilla-org.org +0 -29
- promnesia-1.1.20230129/extension/.eslintrc.js +0 -44
- promnesia-1.1.20230129/extension/.flowconfig +0 -15
- promnesia-1.1.20230129/extension/build +0 -117
- promnesia-1.1.20230129/extension/package.json +0 -71
- promnesia-1.1.20230129/extension/src/manifest.json +0 -14
- promnesia-1.1.20230129/extension/src/showvisited.css +0 -70
- promnesia-1.1.20230129/extension/src/showvisited.js +0 -589
- promnesia-1.1.20230129/extension/webpack.config.js +0 -297
- promnesia-1.1.20230129/src/promnesia/compat.py +0 -71
- promnesia-1.1.20230129/src/promnesia/dump.py +0 -105
- promnesia-1.1.20230129/src/promnesia/sources/demo.py +0 -20
- promnesia-1.1.20230129/src/promnesia/sources/takeout.py +0 -87
- promnesia-1.1.20230129/src/promnesia.egg-info/PKG-INFO +0 -20
- promnesia-1.1.20230129/tests/browser_helper.py +0 -119
- promnesia-1.1.20230129/tests/common.py +0 -100
- promnesia-1.1.20230129/tests/end2end_test.py +0 -1246
- promnesia-1.1.20230129/tests/imports.py +0 -33
- promnesia-1.1.20230129/tests/indexer_test.py +0 -297
- promnesia-1.1.20230129/tests/integration_test.py +0 -291
- promnesia-1.1.20230129/tests/server_test.py +0 -257
- promnesia-1.1.20230129/tests/test_misc.py +0 -84
- promnesia-1.1.20230129/tests/webdriver_utils.py +0 -43
- promnesia-1.1.20230129/tox.ini +0 -89
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/.ci/fake-systemd/systemctl +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/.ci/github-ci-compat +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/.dockerignore +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/.gitignore +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/.gitmodules +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/CHANGELOG.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/LICENSE +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/ci/run-github-locally +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/doc/GUIDE.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/doc/PRIVACY.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/doc/TROUBLESHOOTING.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/doc/config.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/.gitignore +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/docker_files/docker-compose.yaml +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/docker_files/indexer-config.py.example +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/docker_files/indexer-entrypoint.sh +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/get-some-data.sh +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/init.sh +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/docker/start.sh +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/.editorconfig +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/MANUAL-TESTS.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/TODO.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/__mocks__/dom-form-serializer.js +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/old/patcher.js +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/generate +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/ic_blacklisted_48.png +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/ic_blue_48.png +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/ic_boring_48.png +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/ic_error.png +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/ic_not_visited_48.png +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/ic_relatives_48.png +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/ic_visited_48.png +0 -0
- {promnesia-1.1.20230129/extension → promnesia-1.2.20240810/extension/src}/images/source_48.svg +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/src/options_page.css +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/src/sidebar-outer.css +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/src/toastify.css +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/src/toastify.js +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/tests/defensify.test.js +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/extension/tests/test.html +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/pytest.ini +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/scripts/backup-phone-history.sh +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/setup.cfg +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/__init__.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/misc/__init__.pyi +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/py.typed +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/__init__.pyi +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/auto_logseq.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/auto_obsidian.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/fbmessenger.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/guess.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/hpi.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/html.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/instapaper.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/pocket.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/roamresearch.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/twitter.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia/sources/zulip.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia.egg-info/dependency_links.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia.egg-info/not-zip-safe +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/src/promnesia.egg-info/top_level.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/convert_screencast.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/install_and_run +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/record.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/auto/orgs/file.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/auto/orgs/file2.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/auto/orgs/file3.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/auto/orgs/file4.org +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/auto/pocket.json +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/custom/file1.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/custom/file2.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/logseq-graph/logseq/config.edn +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/logseq-graph/pages/Note.md +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/normalise/ff.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/obsidian-vault/.obsidian/app.json +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/obsidian-vault/Note.md +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/takeout/Takeout/My Activity/Chrome/MyActivity.html +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/takeout-20150518T000000Z.zip +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/test_config.py +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/traverse/ignoreme.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/traverse/ignoreme2/notrealignored.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/traverse/imhere.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/traverse/imhere2/real.txt +0 -0
- {promnesia-1.1.20230129 → promnesia-1.2.20240810}/tests/testdata/weird.txt +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
build_and_run.sh
|
@@ -0,0 +1,19 @@
|
|
1
|
+
FROM ubuntu:latest
|
2
|
+
|
3
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
4
|
+
|
5
|
+
COPY scripts /scripts
|
6
|
+
|
7
|
+
RUN /scripts/setup_firefox.sh \
|
8
|
+
&& /scripts/setup_chrome.sh \
|
9
|
+
&& /scripts/setup_node.sh \
|
10
|
+
&& apt install --yes tox git \
|
11
|
+
# using python docs as a source of some html test data
|
12
|
+
# need to prevent dpkg from excluding doc files...
|
13
|
+
&& sed -i '/usr.share.doc/d' /etc/dpkg/dpkg.cfg.d/excludes && apt install --yes python3-doc \
|
14
|
+
&& apt clean \
|
15
|
+
&& mkdir /promnesia
|
16
|
+
|
17
|
+
WORKDIR /promnesia
|
18
|
+
|
19
|
+
ENTRYPOINT ["/scripts/build_and_run_tests.sh"]
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -eux
|
3
|
+
|
4
|
+
# TODO assert we're running under github ci?
|
5
|
+
# since this setup is kinda elaborate and can be somewhat unsafe to run blindly
|
6
|
+
|
7
|
+
# supposed to be called from promnesia repository root
|
8
|
+
[ -e src/promnesia ]
|
9
|
+
[ -e extension/src ]
|
10
|
+
|
11
|
+
PROMNESIA_SRC="$(pwd)"
|
12
|
+
|
13
|
+
cd .ci/end2end
|
14
|
+
|
15
|
+
IMAGE='promnesia_end2end_tests'
|
16
|
+
|
17
|
+
docker build -t "$IMAGE" .
|
18
|
+
|
19
|
+
# NOTE: dev/shm mount to prevent crashes during headless chrome
|
20
|
+
docker run -v /dev/shm:/dev/shm --mount "type=bind,src=$PROMNESIA_SRC,dst=/promnesia_source,readonly=true" -e CI "$IMAGE" "$@"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -eux
|
3
|
+
|
4
|
+
# Seems wrong to keep the whole repository in docker build context.
|
5
|
+
# So instead, we mount the repository inside the container (into /promnesia_source)
|
6
|
+
# (as read only to avoid messing up host files and crapping with caches etc.)
|
7
|
+
# However to actually run tests we do need a writable directory..
|
8
|
+
# So we copy the repo to the actual working dir here
|
9
|
+
|
10
|
+
# ugh, kinda annoying -- not sure how to update source files when we change them on the host system...
|
11
|
+
cp -R -T /promnesia_source /promnesia
|
12
|
+
extension/.ci/build
|
13
|
+
|
14
|
+
git init # todo ??? otherwise setuptools-scm fails to detect the version...
|
15
|
+
python3 -m tox -e end2end -- "$@"
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -eux -o pipefail
|
3
|
+
|
4
|
+
apt update --yes
|
5
|
+
|
6
|
+
apt install --yes wget
|
7
|
+
|
8
|
+
install -d -m 0755 /etc/apt/keyrings
|
9
|
+
wget -q https://dl.google.com/linux/linux_signing_key.pub -O- | tee /etc/apt/keyrings/linux_signing_key.pub.asc > /dev/null
|
10
|
+
echo "deb [signed-by=/etc/apt/keyrings/linux_signing_key.pub.asc] https://dl.google.com/linux/chrome/deb/ stable main" | tee -a /etc/apt/sources.list.d/google-chrome.list > /dev/null
|
11
|
+
|
12
|
+
apt update
|
13
|
+
|
14
|
+
apt install --yes google-chrome-stable
|
15
|
+
|
16
|
+
# sadly latest version of chrome/chromedriver isn't working due to some bugs with iframes (see install_custom_chrome)
|
17
|
+
|
18
|
+
# remove the actual chrome to get it out of the way (we do want dependencies though)
|
19
|
+
apt remove --yes google-chrome-stable
|
20
|
+
! which google-chrome # check there is no binary (in case of virtual packages or whatever)
|
21
|
+
|
22
|
+
function install_custom_chrome() {
|
23
|
+
## this installs last revision that was actually working (1110897) or 113.0.5623.0
|
24
|
+
## see https://bugs.chromium.org/p/chromedriver/issues/detail?id=4440
|
25
|
+
apt install --yes unzip
|
26
|
+
|
27
|
+
mkdir /tmp/chrome
|
28
|
+
|
29
|
+
wget -q 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1110897%2Fchrome-linux.zip?generation=1677589092014487&alt=media' \
|
30
|
+
-O /tmp/chrome/chrome-linux.zip
|
31
|
+
unzip /tmp/chrome/chrome-linux.zip -d /tmp/chrome
|
32
|
+
ln -sf /tmp/chrome/chrome-linux/chrome /usr/bin/google-chrome
|
33
|
+
|
34
|
+
wget -q 'https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1110897%2Fchromedriver_linux64.zip?generation=1677589097630198&alt=media' \
|
35
|
+
-O /tmp/chrome/chromedriver_linux64.zip
|
36
|
+
unzip /tmp/chrome/chromedriver_linux64.zip -d /tmp/chrome
|
37
|
+
ln -sf /tmp/chrome/chromedriver_linux64/chromedriver /usr/bin/chromedriver
|
38
|
+
}
|
39
|
+
|
40
|
+
install_custom_chrome
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
set -eux -o pipefail
|
3
|
+
|
4
|
+
apt update --yes
|
5
|
+
|
6
|
+
apt install --yes wget
|
7
|
+
|
8
|
+
# NOTE: these days ubuntu provisions firefox via snap, and it's a nightmare to make it work with webdriver
|
9
|
+
# so we force it to use a regular package (following these instructions https://askubuntu.com/a/1510872/427470)
|
10
|
+
install -d -m 0755 /etc/apt/keyrings
|
11
|
+
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
|
12
|
+
echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null
|
13
|
+
|
14
|
+
# prevent snap version from overriding:
|
15
|
+
echo '
|
16
|
+
Package: *
|
17
|
+
Pin: origin packages.mozilla.org
|
18
|
+
Pin-Priority: 1000
|
19
|
+
' | tee /etc/apt/preferences.d/mozilla
|
20
|
+
# to check: -- should not show anything mentioning snap
|
21
|
+
# apt install --verbose-versions --dry-run firefox
|
22
|
+
|
23
|
+
apt update
|
24
|
+
|
25
|
+
apt install --yes firefox
|
26
|
+
# NOTE: selenium should download the corresponding geckodriver itself via selenium_manager
|
@@ -19,10 +19,8 @@ from pathlib import Path
|
|
19
19
|
from subprocess import check_call
|
20
20
|
import shutil
|
21
21
|
|
22
|
-
|
23
22
|
is_ci = os.environ.get('CI') is not None
|
24
23
|
|
25
|
-
|
26
24
|
def main() -> None:
|
27
25
|
import argparse
|
28
26
|
p = argparse.ArgumentParser()
|
@@ -31,7 +29,7 @@ def main() -> None:
|
|
31
29
|
|
32
30
|
extra = []
|
33
31
|
if args.test:
|
34
|
-
extra.extend(['--repository
|
32
|
+
extra.extend(['--repository', 'testpypi'])
|
35
33
|
|
36
34
|
root = Path(__file__).absolute().parent.parent
|
37
35
|
os.chdir(root) # just in case
|
@@ -44,7 +42,7 @@ def main() -> None:
|
|
44
42
|
if dist.exists():
|
45
43
|
shutil.rmtree(dist)
|
46
44
|
|
47
|
-
check_call('python3
|
45
|
+
check_call(['python3', '-m', 'build'])
|
48
46
|
|
49
47
|
TP = 'TWINE_PASSWORD'
|
50
48
|
password = os.environ.get(TP)
|
@@ -9,28 +9,32 @@ on:
|
|
9
9
|
pull_request: # needed to trigger on others' PRs
|
10
10
|
# Note that people who fork it need to go to "Actions" tab on their fork and click "I understand my workflows, go ahead and enable them".
|
11
11
|
workflow_dispatch: # needed to trigger workflows manually
|
12
|
+
# todo cron?
|
13
|
+
inputs:
|
14
|
+
debug_enabled:
|
15
|
+
type: boolean
|
16
|
+
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
|
17
|
+
required: false
|
18
|
+
default: false
|
12
19
|
|
13
20
|
|
14
21
|
jobs:
|
15
22
|
build:
|
16
23
|
strategy:
|
17
|
-
|
18
|
-
# fail-fast: false
|
24
|
+
fail-fast: false
|
19
25
|
matrix:
|
20
26
|
platform: [ubuntu-latest, macos-latest, windows-latest]
|
21
|
-
python-version: ['3.
|
27
|
+
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
|
22
28
|
exclude: [
|
23
|
-
# windows runners are pretty scarce, so let's only run
|
24
|
-
|
25
|
-
{platform: windows-latest, python-version: '3.
|
26
|
-
{platform: windows-latest, python-version: '3.9'},
|
27
|
-
# 3.11 on windows has this bug, lxml setup fails
|
28
|
-
#https://bugs.launchpad.net/lxml/+bug/1977998
|
29
|
+
# windows runners are pretty scarce, so let's only run lowest and highest python version
|
30
|
+
{platform: windows-latest, python-version: '3.9' },
|
31
|
+
{platform: windows-latest, python-version: '3.10'},
|
29
32
|
{platform: windows-latest, python-version: '3.11'},
|
30
33
|
|
31
|
-
#
|
32
|
-
{platform: macos-latest , python-version: '3.8' },
|
34
|
+
# same, macos is a bit too slow and ubuntu covers python quirks well
|
33
35
|
{platform: macos-latest , python-version: '3.9' },
|
36
|
+
{platform: macos-latest , python-version: '3.10'},
|
37
|
+
{platform: macos-latest , python-version: '3.11'},
|
34
38
|
]
|
35
39
|
|
36
40
|
runs-on: ${{ matrix.platform }}
|
@@ -40,31 +44,29 @@ jobs:
|
|
40
44
|
steps:
|
41
45
|
# ugh https://github.com/actions/toolkit/blob/main/docs/commands.md#path-manipulation
|
42
46
|
- run: echo "$HOME/.local/bin" >> $GITHUB_PATH
|
43
|
-
- if: ${{ matrix.platform == 'macos-latest' && matrix.python-version == '3.11' }}
|
44
|
-
# hmm somehow only seems necessary for 3.11 on osx??
|
45
|
-
run: echo "$HOME/Library/Python/${{ matrix.python-version }}/bin" >> $GITHUB_PATH
|
46
47
|
|
47
|
-
- uses: actions/setup-python@
|
48
|
+
- uses: actions/setup-python@v5
|
48
49
|
with:
|
49
50
|
python-version: ${{ matrix.python-version }}
|
50
51
|
|
51
|
-
- uses: actions/checkout@
|
52
|
+
- uses: actions/checkout@v4
|
52
53
|
with:
|
53
54
|
submodules: recursive
|
54
|
-
|
55
|
-
|
56
|
-
|
55
|
+
fetch-depth: 0 # nicer to have all git history when debugging/for tests
|
56
|
+
|
57
|
+
- uses: mxschmitt/action-tmate@v3
|
58
|
+
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
|
57
59
|
|
58
60
|
# explicit bash command is necessary for Windows CI runner, otherwise it thinks it's cmd...
|
59
61
|
- run: bash .ci/run
|
60
62
|
|
61
63
|
- if: matrix.platform == 'ubuntu-latest' # no need to compute coverage for other platforms
|
62
|
-
uses: actions/upload-artifact@
|
64
|
+
uses: actions/upload-artifact@v4
|
63
65
|
with:
|
64
66
|
name: .coverage.mypy-core_${{ matrix.platform }}_${{ matrix.python-version }}
|
65
67
|
path: .coverage.mypy-core/
|
66
68
|
- if: matrix.platform == 'ubuntu-latest' # no need to compute coverage for other platforms
|
67
|
-
uses: actions/upload-artifact@
|
69
|
+
uses: actions/upload-artifact@v4
|
68
70
|
with:
|
69
71
|
name: .coverage.mypy-misc_${{ matrix.platform }}_${{ matrix.python-version }}
|
70
72
|
path: .coverage.mypy-misc/
|
@@ -73,24 +75,22 @@ jobs:
|
|
73
75
|
end2end_tests_chrome:
|
74
76
|
runs-on: ubuntu-latest
|
75
77
|
steps:
|
76
|
-
- uses: actions/checkout@
|
78
|
+
- uses: actions/checkout@v4
|
77
79
|
with:
|
78
80
|
submodules: recursive
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
docker run -v /dev/shm:/dev/shm -e CI promnesia_end2end_tests -- -k chrome
|
81
|
+
- uses: mxschmitt/action-tmate@v3
|
82
|
+
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
|
83
|
+
- run: .ci/end2end/build_and_run.sh -k chrome
|
83
84
|
|
84
85
|
end2end_tests_firefox:
|
85
86
|
runs-on: ubuntu-latest
|
86
87
|
steps:
|
87
|
-
- uses: actions/checkout@
|
88
|
+
- uses: actions/checkout@v4
|
88
89
|
with:
|
89
90
|
submodules: recursive
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
docker run -v /dev/shm:/dev/shm -e CI promnesia_end2end_tests -- -k firefox
|
91
|
+
- uses: mxschmitt/action-tmate@v3
|
92
|
+
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
|
93
|
+
- run: .ci/end2end/build_and_run.sh -k firefox
|
94
94
|
|
95
95
|
install_and_run_test:
|
96
96
|
# todo use setup-python thing?
|
@@ -98,7 +98,7 @@ jobs:
|
|
98
98
|
runs-on: ubuntu-latest
|
99
99
|
|
100
100
|
steps:
|
101
|
-
- uses: actions/checkout@
|
101
|
+
- uses: actions/checkout@v4
|
102
102
|
with:
|
103
103
|
submodules: recursive
|
104
104
|
|
@@ -119,11 +119,11 @@ jobs:
|
|
119
119
|
# ugh https://github.com/actions/toolkit/blob/main/docs/commands.md#path-manipulation
|
120
120
|
- run: echo "$HOME/.local/bin" >> $GITHUB_PATH
|
121
121
|
|
122
|
-
- uses: actions/setup-python@
|
122
|
+
- uses: actions/setup-python@v5
|
123
123
|
with:
|
124
|
-
python-version: '3.
|
124
|
+
python-version: '3.10'
|
125
125
|
|
126
|
-
- uses: actions/checkout@
|
126
|
+
- uses: actions/checkout@v4
|
127
127
|
with:
|
128
128
|
submodules: recursive
|
129
129
|
|
@@ -132,8 +132,7 @@ jobs:
|
|
132
132
|
if: github.event_name != 'pull_request' && github.event.ref == 'refs/heads/master'
|
133
133
|
env:
|
134
134
|
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD_TEST }}
|
135
|
-
run: pip3 install --user
|
136
|
-
# TODO run pip install just to test?
|
135
|
+
run: pip3 install --user --upgrade build twine && .ci/release --test
|
137
136
|
|
138
137
|
- name: 'release to pypi'
|
139
138
|
# always deploy tags to release pypi
|
@@ -141,7 +140,7 @@ jobs:
|
|
141
140
|
if: github.event_name != 'pull_request' && startsWith(github.event.ref, 'refs/tags')
|
142
141
|
env:
|
143
142
|
TWINE_PASSWORD: ${{ secrets.TWINE_PASSWORD }}
|
144
|
-
run: pip3 install --user
|
143
|
+
run: pip3 install --user --upgrade build twine && .ci/release
|
145
144
|
|
146
145
|
###
|
147
146
|
build_extension:
|
@@ -149,31 +148,33 @@ jobs:
|
|
149
148
|
name: 'promnesia'
|
150
149
|
runs-on: ubuntu-latest
|
151
150
|
steps:
|
152
|
-
- uses: actions/checkout@
|
151
|
+
- uses: actions/checkout@v4
|
153
152
|
with:
|
154
153
|
submodules: recursive
|
155
|
-
|
154
|
+
fetch-depth: 0 # nicer to have all git history when debugging/for tests
|
155
|
+
|
156
|
+
- uses: actions/setup-node@v4
|
156
157
|
with:
|
157
|
-
node-version: '
|
158
|
+
node-version: '20'
|
158
159
|
|
159
160
|
- run: extension/.ci/build --lint # debug version
|
160
161
|
- run: extension/.ci/build --lint --release
|
161
162
|
|
162
163
|
# TODO ugh. can't share github actions artifacts publicly...
|
163
164
|
# TODO for fuck's sake... why does it end up named as .zip.zip ????
|
164
|
-
- uses: actions/upload-artifact@
|
165
|
+
- uses: actions/upload-artifact@v4
|
165
166
|
with:
|
166
167
|
name: '${{ env.name }}-chrome-debug-latest.zip'
|
167
168
|
path: 'extension/dist/artifacts/chrome/${{ env.name }}_dev_-*.zip'
|
168
|
-
- uses: actions/upload-artifact@
|
169
|
+
- uses: actions/upload-artifact@v4
|
169
170
|
with:
|
170
171
|
name: '${{ env.name }}-chrome-release-latest.zip'
|
171
172
|
path: 'extension/dist/artifacts/chrome/${{ env.name }}-*.zip'
|
172
|
-
- uses: actions/upload-artifact@
|
173
|
+
- uses: actions/upload-artifact@v4
|
173
174
|
with:
|
174
175
|
name: '${{ env.name }}-firefox-debug-latest.zip'
|
175
176
|
path: 'extension/dist/artifacts/firefox/${{ env.name }}_dev_-*.zip'
|
176
|
-
- uses: actions/upload-artifact@
|
177
|
+
- uses: actions/upload-artifact@v4
|
177
178
|
with:
|
178
179
|
name: '${{ env.name }}-firefox-release-latest.zip'
|
179
180
|
path: 'extension/dist/artifacts/firefox/${{ env.name }}-*.zip'
|
@@ -0,0 +1,53 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: promnesia
|
3
|
+
Version: 1.2.20240810
|
4
|
+
Summary: Enhancement of your browsing history
|
5
|
+
Home-page: https://github.com/karlicoss/promnesia
|
6
|
+
Author: Dmitrii Gerasimov
|
7
|
+
Author-email: karlicoss@gmail.com
|
8
|
+
Requires-Python: >=3.8
|
9
|
+
License-File: LICENSE
|
10
|
+
Requires-Dist: appdirs
|
11
|
+
Requires-Dist: tzlocal
|
12
|
+
Requires-Dist: more_itertools
|
13
|
+
Requires-Dist: pytz
|
14
|
+
Requires-Dist: sqlalchemy>=2.0
|
15
|
+
Requires-Dist: urlextract
|
16
|
+
Requires-Dist: fastapi
|
17
|
+
Requires-Dist: uvicorn[standard]
|
18
|
+
Provides-Extra: testing
|
19
|
+
Requires-Dist: pytest; extra == "testing"
|
20
|
+
Requires-Dist: pytest-timeout; extra == "testing"
|
21
|
+
Requires-Dist: pytest-xdist; extra == "testing"
|
22
|
+
Requires-Dist: hypothesis; extra == "testing"
|
23
|
+
Requires-Dist: psutil; extra == "testing"
|
24
|
+
Requires-Dist: requests; extra == "testing"
|
25
|
+
Requires-Dist: selenium; extra == "testing"
|
26
|
+
Requires-Dist: click; extra == "testing"
|
27
|
+
Requires-Dist: ruff; extra == "testing"
|
28
|
+
Requires-Dist: mypy; extra == "testing"
|
29
|
+
Requires-Dist: lxml; extra == "testing"
|
30
|
+
Requires-Dist: loguru; extra == "testing"
|
31
|
+
Provides-Extra: testing-gui
|
32
|
+
Requires-Dist: pyautogui; extra == "testing-gui"
|
33
|
+
Provides-Extra: optional
|
34
|
+
Requires-Dist: logzero; extra == "optional"
|
35
|
+
Requires-Dist: python-magic; extra == "optional"
|
36
|
+
Provides-Extra: hpi
|
37
|
+
Requires-Dist: HPI; extra == "hpi"
|
38
|
+
Provides-Extra: html
|
39
|
+
Requires-Dist: beautifulsoup4; extra == "html"
|
40
|
+
Requires-Dist: lxml; extra == "html"
|
41
|
+
Provides-Extra: markdown
|
42
|
+
Requires-Dist: mistletoe; extra == "markdown"
|
43
|
+
Provides-Extra: org
|
44
|
+
Requires-Dist: orgparse>=0.3.0; extra == "org"
|
45
|
+
Provides-Extra: telegram
|
46
|
+
Provides-Extra: all
|
47
|
+
Requires-Dist: logzero; extra == "all"
|
48
|
+
Requires-Dist: python-magic; extra == "all"
|
49
|
+
Requires-Dist: HPI; extra == "all"
|
50
|
+
Requires-Dist: beautifulsoup4; extra == "all"
|
51
|
+
Requires-Dist: lxml; extra == "all"
|
52
|
+
Requires-Dist: mistletoe; extra == "all"
|
53
|
+
Requires-Dist: orgparse>=0.3.0; extra == "all"
|
@@ -406,7 +406,7 @@ The best support for me would be if you contribute to this or my other projects.
|
|
406
406
|
|
407
407
|
I don't need money, but I understand it's often easier to give away than time, so here are some of projects that I donate to:
|
408
408
|
|
409
|
-
- [[https://
|
409
|
+
- [[https://liberapay.com/org-mode][org-mode]]
|
410
410
|
- [[https://archive.org/donate][Internet Archive]]
|
411
411
|
- [[https://web.hypothes.is/donate][Hypothes.is]]
|
412
412
|
- [[https://github.com/hlissner/doom-emacs#contribute][Doom Emacs]]
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Running on @karlicoss desktop PC, =python3.10= (under docker)
|
2
|
+
|
3
|
+
- dumping via cachew NTBinder, using regular sqlalchemy insert statement
|
4
|
+
|
5
|
+
#+begin_example
|
6
|
+
$ python3 -m pytest --import-mode=importlib --pyargs promnesia.tests -s -k 'gc_off and benchmark and 100000'
|
7
|
+
12.90s call src/promnesia/tests/test_db_dump.py::test_benchmark_visits_dumping[gc_off-100000]
|
8
|
+
PASSED src/promnesia/tests/test_db_dump.py::test_benchmark_visits_dumping[gc_off-100000]
|
9
|
+
#+end_example
|
10
|
+
|
11
|
+
|
12
|
+
- dumping via cachew NTBinder, using dbengine to insert directly -- massive speedup (added a test with 1M visits too)
|
13
|
+
#+begin_example
|
14
|
+
$ python3 -m pytest --import-mode=importlib --pyargs promnesia.tests -s -k 'gc_off and benchmark and 100000'
|
15
|
+
0.85s call src/promnesia/tests/test_db_dump.py::test_benchmark_visits_dumping[gc_off-100000]
|
16
|
+
8.23s call src/promnesia/tests/test_db_dump.py::test_benchmark_visits_dumping[gc_off-1000000]
|
17
|
+
#+end_example
|
@@ -52,7 +52,7 @@ I'm not against it, but with limited time resources full-scale tests give better
|
|
52
52
|
: ./build --firefox # you can also use --chrome
|
53
53
|
: --lint # [optional], run webext linter
|
54
54
|
: --release # [optional], build in the release mode (with optimizations)
|
55
|
-
: --publish # [optional], release to the Chrome Web Store/Mozilla addons
|
55
|
+
: --publish listed # [optional], release to the Chrome Web Store/Mozilla addons
|
56
56
|
|
57
57
|
You'll find the result in =dist/=. After that, you can load it in your browser and develop.
|
58
58
|
|
@@ -61,7 +61,7 @@ I'm not against it, but with limited time resources full-scale tests give better
|
|
61
61
|
|
62
62
|
* Run end-to-end tests
|
63
63
|
|
64
|
-
End-to-end
|
64
|
+
End-to-end tests go through the full cycle from indexing & backend to automated extension tests, and are very helpful to make sure you don't break things.
|
65
65
|
|
66
66
|
You need:
|
67
67
|
|
@@ -74,18 +74,21 @@ Example of running a test:
|
|
74
74
|
|
75
75
|
You can also run them via tox:
|
76
76
|
|
77
|
+
# TODO https://github.com/tox-dev/tox/discussions/2681
|
77
78
|
: TOX_TESTENV_PASSENV='DISPLAY HOME' tox -e end2end -- -s -k 'test_blacklist_custom[firefox]'
|
78
79
|
|
79
80
|
- it's useful to pass =--pdb= to pytest, so you don't have to restart webdriver all over
|
80
81
|
- after initial run, it's best pass =--skip-pkg-install= to tox to speedup repetitive test runs
|
81
82
|
- when you're in development/debugging process, perhaps best to run the firefox version of tests -- Chrome has a 5-ish seconds lag after installing the extension
|
83
|
+
- since these tests can be quite slow, you can benefit from installing =pytest-xdist= plugin and using =-n= flag to parallelize
|
84
|
+
- to debug flaky tests, it's useful to install =pytest-repeat= in addition, e.g. =--repeat=5 -n 5=
|
82
85
|
|
83
86
|
* Releasing
|
84
87
|
** AMO (addons.mozilla.org)
|
85
88
|
|
86
89
|
: cd extension
|
87
90
|
: npm install # (if necessary)
|
88
|
-
: ./build --firefox --lint --release --publish
|
91
|
+
: ./build --firefox --lint --release --publish listed
|
89
92
|
|
90
93
|
Note that this will only upload the extension (see [[https://extensionworkshop.com/documentation/develop/web-ext-command-reference/#channel][web-ext sign command reference]] and [[https://github.com/fregante/web-ext-submit#readme][web-ext-submit]] for more info).
|
91
94
|
You need go to https://addons.mozilla.org/en-GB/developers/addon/promnesia/versions, there you should see your extension as 'pending approval'. Usually it's approved within minutes.
|
@@ -97,7 +100,7 @@ For build instructions, you can point the reviewers at [[file:addons-mozilla-org
|
|
97
100
|
** CWS (chrome web store)
|
98
101
|
: cd extension
|
99
102
|
: npm install # (if necessary)
|
100
|
-
: ./build --chrome --lint --release --publish
|
103
|
+
: ./build --chrome --lint --release --publish listed
|
101
104
|
|
102
105
|
This command should work in theory and upload automatically... however getting the api keys is super annoying (see [[https://github.com/DrewML/chrome-webstore-upload/blob/master/How%20to%20generate%20Google%20API%20keys.md][this]]).
|
103
106
|
|