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..7f5e3f4 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Features: - Tags - Assignees - Dependencies + - Custom fields - Change card features: - Title - Description @@ -59,13 +60,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 diff --git a/setup.py b/setup.py index 88df9aa..cac349f 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 = """