Skip to content
Python interface into my life 🤖
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci add proper my_configuration demo and use it in readme Oct 11, 2019
my
my_configuration_template/my_configuration
.gitignore Merge remote-tracking branch 'goodreads/master' Sep 23, 2019
LICENSE Create LICENSE Sep 17, 2019
README.org
demo.py saner with_my script + more examples in readme Oct 12, 2019
misc.org Use symlink for hypexport Oct 8, 2019
with_my.example saner with_my script + more examples in readme Oct 12, 2019

README.org

https://circleci.com/gh/karlicoss/my/tree/master.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 (optional)

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 my_configuration.

You can see example in my_configuration_template. You can copy it somewhere else and modify to your needs.

Some explanations:

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

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 my_configuration.repos.hypexport.model) and proper IDE integration.

with_my helper script

Next, point with_my script to your private configuration:

cp with_my.example with_my
vim with_my # specify path to your my_configuration (if you want to use it)

It’s also convenient to put with_my somewhere in your system path so you can run it from anywhere.

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 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.

  • accessing Kobo books
with_my python3 -c 'import my.books.kobo as kobo; print(kobo.get_todos())' 
  • if you have orger installed, you can use its Polar module to render all highlights as org-mode file as easy as:
with_my orger/modules/polar.py --to polar.org
  • read/run demo.py for a full demonstration of setting up Hypothesis (it uses public annotations data from Github)

Linting

# see https://github.com/python/mypy/issues/1645 for --namespace-packages explanation
with_my mypy --namespace-packages my

or, set up as mypy.ini file:

[mypy]
mypy_path=/path/to/my_configuration_dir
You can’t perform that action at this time.