1
0
favro-sync/favro_sync/__init__.py
2024-10-02 15:56:17 +02:00

77 lines
2.4 KiB
Python

"""# Favro Sync.
Filesystem in User Space for Favro.
Synchronize your local notes and your Favro.
Uses the [Favro API](https://favro.com/developer/). Rate limiting depends upon
your organization's payment plan.
Uses [`python-fuse`](https://github.com/libfuse/python-fuse) library.
Features:
- Local access to cards in todolist.
- Read card features:
- Title
- Description
- Tags
- Assignees
- Dependencies
- Custom fields
- Change card features:
- Title
- Description
- [Obsidian](https://obsidian.md/) compatibility:
- Mountable within your vault.
- Link to cards by either card number or card title.
- Tags and dependencies are integrated.
Limitations:
- Only cards in todolist is fetched at the moment.
- Tasks (checklists on cards) cannot be updated or changed.
- Images cannot be updated or changed.
- You cannot create new cards, nor any other files.
## Usage
1. Install dependencies `pip install -r requirements.txt`
2. Setup [secrets](https://gitfub.space/Jmaa/secret_loader]): `FAVRO_ORGANIZATION_ID`, `FAVRO_USERNAME`, `FAVRO_PASSWORD`.
3. Run `python -m favro_sync <MOUNT_DIR>`. Use the `--help` argument to get an
overview of all supported flags (there is a lot, because
[`python-fuse`](https://github.com/libfuse/python-fuse) implements a whole
bunch automatically.)
## Architecture
- `FavroFuse`
- Markdown Parser/Renderer
- `FavroClient`
- `CardCache`
## Work in Progress
Following features are work in progress:
- [ ] Frontmatter: Writable Tags
- [ ] Frontmatter: Writable assigned members
- [ ] Frontmatter: Writable Tasks.
1. Save updated TaskList along with card (using `PUT cards`)
2. Get the Card's TaskList.
3. Remove all TaskList's except for the latest (how to determine latest?)
4. That's three requests just to save a freaking list of tasks!
- [ ] Frontmatter: Writable Dependencies.
- [ ] Usability: Richer directory structure
- [ ] Usability: Allow users to toggle Obsidian mode, instead of being default.
- [ ] Precision: Get the correct last-modified date.
- [ ] Performance: Improve cache behaviour. User and tags can have much longer cache times.
- [ ] Performance: Parallelize requests.
* Paginated pages can be easily parallelize.
- [X] Frontmatter: Arbitrary structured data (Custom Fields)? Read-only.
- [X] Frontmatter: Readable Dependencies. As vault links in Obsidian mode.
"""
__all__ = ['__version__']
from ._version import __version__