HPI/README.org

93 lines
3.3 KiB
Org Mode

https://circleci.com/gh/karlicoss/my.svg?style=svg
Python interface into my life.
This package deals with abstracting away various data sources and providing nice Python interface for them, also lets you define covenience functions.
This might not necessarily be convenient for you to use, perhaps it's more of a concept of how you can organize and access your personal data.
But it works for me so hopefully that would help you if you're struggling!
* Setting up
** =my_configuration= package for private paths/repositores
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 ~my_configuration~.
You can see example in ~my_configuration_template~. You can copy it somewhere else and modify to your needs.
Some explanations:
#+begin_src bash :exports results :results output
for x in $(find my_configuration_template/ | grep -v -E 'mypy_cache|.git|__pycache__'); do
if [[ -L "$x" ]]; then
echo "l $x -> $(readlink $x)"
elif [[ -d "$x" ]]; then
echo "d $x"
else
echo "f $x"
(echo "---"; cat "$x"; echo "---" ) | sed 's/^/ /'
fi
done
#+end_src
#+RESULTS:
#+begin_example
d my_configuration_template/
d my_configuration_template/my_configuration
f my_configuration_template/my_configuration/__init__.py
---
class paths:
"""
Feel free to remore hypexport if you don't need it/add your own custom settings and use them
"""
class hypexport:
export_dir = '/tmp/my_demo/backups/hypothesis'
---
d my_configuration_template/my_configuration/repos
l my_configuration_template/my_configuration/repos/hypexport -> /tmp/my_demo/hypothesis_repo
#+end_example
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 [[https://github.com/karlicoss/hypexport][hypexport]]) are specified as normal symlinks in ~repos~ directory.
That way you get easy imports (e.g. =import my_configuration.repos.hypexport.model=) and proper IDE integration.
# TODO link to post about exports?
** =with_my= helper script
Next, point =with_my= script to your private configuration:
#+begin_src bash
cp with_my.example with_my
vim with_my # specify path to your my_configuration:
#+end_src
** Dependencies
Dependencies are different for specific modules you're planning to use, so it's hard to specify.
Generally you can just try and then install missing packages via ~pip install --user~, should be fairly straighforward.
* Usage example
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.
#+begin_src bash
with_my python3 -c 'import my.books.kobo as kobo; print(kobo.get_todos())'
#+end_src
Also read/run [[./demo.py][demo.py]] for a full demonstration of setting up Hypothesis.
* Linting
#+begin_src bash
# see https://github.com/python/mypy/issues/1645 for --namespace-packages explanation
with_my --namespace-packages my
#+end_src
or, set up as ~mypy.ini~ file:
#+begin_src
[mypy]
mypy_path=/path/to/my_configuration_dir
#+end_src
# TODO hmm, if package isn't using my_configuration then we don't really need it?