1
0
favro-sync/setup.py
2024-10-26 13:35:36 +02:00

133 lines
3.6 KiB
Python

# WARNING
#
# THIS IS AN AUTOGENERATED FILE.
#
# MANUAL CHANGES CAN AND WILL BE OVERWRITTEN.
import re
from setuptools import setup
PACKAGE_NAME = 'favro_sync'
PACKAGE_DESCRIPTION = """
# 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.
""".strip()
PACKAGE_DESCRIPTION_SHORT = """
Filesystem in User Space for Favro.""".strip()
def parse_version_file(text: str) -> str:
match = re.match(r'^__version__\s*=\s*(["\'])([\d\.]+)\1$', text)
if match is None:
msg = 'Malformed _version.py file!'
raise Exception(msg)
return match.group(2)
with open(PACKAGE_NAME + '/_version.py') as f:
version = parse_version_file(f.read())
REQUIREMENTS_MAIN = [
'requests',
'requests-cache',
'fuse-python',
'secret_loader @ git+https://gitfub.space/Jmaa/secret_loader',
'marko',
'python-frontmatter',
]
REQUIREMENTS_TEST = [
'pytest',
]
setup(
name=PACKAGE_NAME,
version=version,
description=PACKAGE_DESCRIPTION_SHORT,
long_description=PACKAGE_DESCRIPTION,
long_description_content_type='text/markdown',
author='Jon Michael Aanes',
author_email='jonjmaa@gmail.com',
url='https://gitfub.space/Jmaa/' + PACKAGE_NAME,
packages=[PACKAGE_NAME],
install_requires=REQUIREMENTS_MAIN,
extras_require={
'test': REQUIREMENTS_TEST,
},
python_requires='>=3.9',
)