diff --git a/.gitea/workflows/python-package.yml b/.gitea/workflows/python-package.yml index c29c732..09275ea 100644 --- a/.gitea/workflows/python-package.yml +++ b/.gitea/workflows/python-package.yml @@ -10,7 +10,7 @@ jobs: uses: jmaa/workflows/.gitea/workflows/python-package.yaml@v6.21 with: REGISTRY_DOMAIN: gitfub.space - REGISTRY_ORGANIZATION: usagi-keiretsu + REGISTRY_ORGANIZATION: jmaa secrets: PIPY_REPO_USER: ${{ secrets.PIPY_REPO_USER }} PIPY_REPO_PASS: ${{ secrets.PIPY_REPO_PASS }} diff --git a/.gitea/workflows/python-test.yml b/.gitea/workflows/python-test.yml index d85fe9a..18b55db 100644 --- a/.gitea/workflows/python-test.yml +++ b/.gitea/workflows/python-test.yml @@ -1,4 +1,4 @@ -name: Test Python +name: Run Python tests (through Pytest) on: push: @@ -6,4 +6,26 @@ on: jobs: Test: - uses: jmaa/workflows/.gitea/workflows/python-test.yaml@v6.21 + runs-on: ubuntu-latest + container: + image: node:21-bookworm + steps: + - name: Setting up Python ${{ env.PYTHON_VERSION }} for ${{runner.arch}} ${{runner.os}} + run: | + apt-get update + apt-get install -y python3 python3-pip + - name: Check out repository code + if: success() + uses: actions/checkout@v3 + - name: Installing Python Dependencies + if: success() + run: python3 -m pip install --upgrade pip setuptools wheel build twine pytest pytest-cov --break-system-packages + - name: Installing Python Test Dependencies + if: success() && hashFiles('requirements_test.txt') != '' + run: python3 -m pip install --upgrade -r requirements_test.txt --break-system-packages + - name: Installing package + if: success() + run: python3 -m pip install .[test] --break-system-packages + - name: Test Python Code + if: success() + run: python3 -m pytest test --cov=favro_sync --cov-report html:htmlcov --cov-fail-under=0 diff --git a/.gitea/workflows/python-version-check.yml b/.gitea/workflows/python-version-check.yml new file mode 100644 index 0000000..998a20c --- /dev/null +++ b/.gitea/workflows/python-version-check.yml @@ -0,0 +1,28 @@ +name: Verify Python project can be installed, loaded and have version checked + +on: + push: + paths-ignore: ["README.md", ".gitignore", "LICENSE", "ruff.toml"] + +jobs: + Test: + runs-on: ubuntu-latest + container: + image: node:21-bookworm + steps: + - name: Setting up Python ${{ env.PYTHON_VERSION }} for ${{runner.arch}} ${{runner.os}} + run: | + apt-get update + apt-get install -y python3 python3-pip + - name: Check out repository code + if: success() + uses: actions/checkout@v3 + - name: Installing Python Dependencies + if: success() + run: python3 -m pip install --upgrade pip setuptools wheel build twine --break-system-packages + - name: Installing package + if: success() + run: python3 -m pip install . --break-system-packages + - name: Check version field + if: success() + run: python3 -c "import favro_sync; assert favro_sync.__version__ is not None" diff --git a/README.md b/README.md index c1df6ad..d0274ca 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ -# Favro Sync. +# Favro Sync + +![Test program/library](https://gitfub.space/Jmaa/favro-sync/actions/workflows/python-test.yml/badge.svg) Filesystem in User Space for Favro. @@ -24,6 +26,7 @@ Features: - Tags - Assignees - Dependencies + - Custom fields - Change card features: - Title - Description @@ -59,14 +62,22 @@ Limitations: Following features are work in progress: -- [ ] Frontmatter: Update Tags -- [ ] Frontmatter: Updated assigned members -- [ ] Frontmatter: Arbitrary structured data? Read-only. -- [ ] Frontmatter: Dependencies. As vault links in Obsidian mode. -- [ ] Allow users to toggle Obsidian mode, instead of being default. -- [ ] Get the correct last-modified date. -- [ ] Improve cache behaviour. User and tags can have much longer cache times. - +- [ ] 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. ## Dependencies @@ -81,6 +92,7 @@ Full list of requirements: - [requests-cache](https://pypi.org/project/requests-cache/) - [fuse-python](https://pypi.org/project/fuse-python/) - [secret_loader](https://gitfub.space/Jmaa/secret_loader) +- [requests_util](https://gitfub.space/Jmaa/requests_util) - [marko](https://pypi.org/project/marko/) - [python-frontmatter](https://pypi.org/project/python-frontmatter/) diff --git a/ruff.toml b/ruff.toml index 317a9a2..c397e12 100644 --- a/ruff.toml +++ b/ruff.toml @@ -76,4 +76,5 @@ docstring-code-format = true "S101", # Test Asserts "T201", # Debug prints "PLR2004", # magic-value-comparison + 'SLF001', # Allow access to private members ] diff --git a/setup.py b/setup.py index 88df9aa..09c53cb 100644 --- a/setup.py +++ b/setup.py @@ -31,6 +31,7 @@ Features: - Tags - Assignees - Dependencies + - Custom fields - Change card features: - Title - Description @@ -66,13 +67,22 @@ Limitations: Following features are work in progress: -- [ ] Frontmatter: Update Tags -- [ ] Frontmatter: Updated assigned members -- [ ] Frontmatter: Arbitrary structured data? Read-only. -- [ ] Frontmatter: Dependencies. As vault links in Obsidian mode. -- [ ] Allow users to toggle Obsidian mode, instead of being default. -- [ ] Get the correct last-modified date. -- [ ] Improve cache behaviour. User and tags can have much longer cache times. +- [ ] 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 = """ @@ -96,6 +106,7 @@ REQUIREMENTS_MAIN = [ 'requests-cache', 'fuse-python', 'secret_loader @ git+https://gitfub.space/Jmaa/secret_loader', + 'requests_util @ git+https://gitfub.space/Jmaa/requests_util', 'marko', 'python-frontmatter', ]