5.8 KiB
Please don't be shy and raise issues if something in the instructions is unclear. You'd be really helping me, I want to make the setup as straightforward as possible!
Few notes
I understand people may not super familiar with Python, PIP or generally unix, so here are some short notes:
- only python3 is supported, and more specifically,
python >= 3.5
. - I'm using
pip3
command, but on your system you might only havepip
. If yourpip --version
says python 3, feel free to usepip
. - similarly, I'm using
python3
in the documentation, but if yourpython --version
says python3, it's okay to usepython
- when you use
pip install
, always pass--user
- I'm assuming the config directory is
~/.config
, but it's different on Mac/Windows. See this if you're not sure what's your user config dir.
Setting up the main package
This is a required step
You can choose one of the following options:
local install
This is the most convenient option at the moment:
- Clone the repository:
git clone git@github.com:karlicoss/HPI.git /path/to/hpi
- Go into the project directory:
cd /path/to/hpi
- Run
pip3 install --user -e .
This will install the package in 'editable mode'. It will basically be a link to/path/to/hpi
, which means any changes in the cloned repo will be immediately reflected without need to reinstall anything. It's extremely convenient for developing and debugging.
use without installing
This is less convenient, but gives you more control.
- Clone the repository:
git clone git@github.com:karlicoss/HPI.git /path/to/hpi
- Go into the project directory:
cd /path/to/hpi
- Install the dependencies:
python3 setup.py --dependencies-only
-
Use
with_my
script to get access tomy.
modules.For example:
/path/to/hpi/with_my python3 -c 'from my.pinboard import bookmarks; print(list(bookmarks()))'
It's also convenient to put a symlink to
with_my
somewhere in your system path so you can run it from anywhere, or add an alias in your bashrc:alias with_my='/path/to/hpi/with_my'
After that, you can wrap your command in
with_my
to give it access tomy.
modules, e.g. see examples.
The benefit of this way is that you get a bit more control, explicitly allowing your scripts to use your data.
install from PIP
This is still work in progress!
Setting up the modules
This is an optional step as some modules might work without extra setup. But it depends on the specific module.
private configuration (my.config
)
If you're not planning to use private configuration (some modules don't need it) you can skip straight to the next step. Still, I'd recommend you to read anyway.
First you need to tell the package where to look for your data and external repositories, which is done though a separate (private) package named mycfg
.
You can see example in mycfg_template
. You can copy it somewhere else and modify to your needs.
Some explanations:
d mycfg_template/ d mycfg_template/mycfg f mycfg_template/mycfg/__init__.py --- class paths: """ Feel free to remove this if you don't need it/add your own custom settings and use them """ class hypothesis: export_path = '/tmp/my_demo/backups/hypothesis' --- d mycfg_template/mycfg/repos l mycfg_template/mycfg/repos/hypexport -> /tmp/my_demo/hypothesis_repo
As you can see, generally you specify fixed paths (e.g. to backup directory) in __init__.py
.
Feel free to add other files as well though to organize better, it's a real python package after all!
Some things (e.g. links to external packages like hypexport) are specified as normal symlinks in repos
directory.
That way you get easy imports (e.g. import mycfg.repos.hypexport.model
) and proper IDE integration.
module dependencies
Dependencies are different for specific modules you're planning to use, so it's hard to specify.
Generally you can just try using the module and then install missing packages via pip3 install --user
, should be fairly straightforward.
Usage examples
If you run your script with with_my
wrapper, you'd have my
in PYTHONPATH
which gives you access to your data from within the script.
Kobo reader
Kobo provider allows you access the books you've read along with the highlights and notes. It uses exports provided by kobuddy package.
-
prepare the config
- Point
ln -sfT /path/to/kobuddy ~/.config/my/config/repos/kobuddy
-
Add kobo config to
~/.config/my/config/__init__.py
class kobo: export_dir = 'path/to/kobo/exports'
- Point
After that you should be able to use it:
with_my python3 -c 'import my.books.kobo as kobo; print(kobo.get_highlights())'
Orger
demo.py
read/run demo.py for a full demonstration of setting up Hypothesis (it uses public annotations data from Github)