Skip to content

👷 uv + taskfile#8

Merged
juftin merged 2 commits intomainfrom
uv-task
Aug 26, 2025
Merged

👷 uv + taskfile#8
juftin merged 2 commits intomainfrom
uv-task

Conversation

@juftin
Copy link
Owner

@juftin juftin commented Aug 26, 2025

This PR introduces uv and taskfile as the project's build and task management system, modernizing the development workflow and tooling infrastructure.

@juftin juftin requested a review from Copilot August 26, 2025 03:49
@github-actions
Copy link
Contributor

Coverage

Coverage Report
FileStmtsMissCoverMissing
__init__.py00100% 
_config.py50100% 
cli.py88880%1–3, 5–7, 9, 12–13, 17, 20, 25, 32–33, 36–42, 47, 52, 56, 58–63, 66, 71, 77, 82, 90–92, 98, 100–103, 106–111, 119, 121–124, 129–131, 134–139, 147, 149–152, 157–159, 162–163, 167, 169–172, 175–178, 183, 188, 201, 203–204, 210–211
exceptions.py20100% 
lunchmoney_splitwise.py40827632%34–36, 40, 66–70, 153, 169–175, 178–183, 202–203, 223–227, 229, 232, 234–237, 239–242, 244–245, 248–255, 277–281, 283, 285–288, 290–293, 295–296, 299–306, 329–332, 336–337, 376, 386, 389, 419, 430–431, 446, 449, 465, 487, 489, 512, 515, 546, 550, 555–556, 560, 565–566, 570, 576–577, 581, 587, 606–611, 614, 633–638, 643, 662–666, 669, 674, 693–698, 701, 712–717, 719, 721, 728–731, 738, 743–746, 752–753, 756–758, 761, 785–791, 793–796, 801–804, 813–816, 820, 824, 834, 836–838, 843–844, 847–849, 852, 871–877, 879–882, 887–891, 896–899, 904, 907, 917–918, 944–949, 954–958, 965–968, 971–974, 977–978, 1015–1017, 1025, 1027, 1042, 1057–1058, 1061, 1064, 1084–1087, 1092, 1097, 1102–1104, 1107, 1111, 1132–1135, 1140, 1143–1144, 1151, 1170, 1174, 1179–1181, 1202–1204, 1207, 1215–1216, 1222–1223, 1233, 1243
models.py180100% 
tests
   __init__.py00100% 
   conftest.py190100% 
   test_splitwise.py210100% 
TOTAL56136435% 

Tests Skipped Failures Errors Time
2 0 💤 0 ❌ 0 🔥 0.749s ⏱️

@juftin juftin changed the title Uv task 👷 uv + taskfile Aug 26, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR migrates the project from Hatch to uv and Task for dependency management and build tooling. The changes modernize the development workflow by adopting newer Python tooling standards and simplifying the build process.

  • Replaces Hatch with uv for Python package management and virtual environment handling
  • Introduces Task as the task runner for development workflows, replacing Hatch scripts
  • Updates minimum Python version from 3.8 to 3.9 and adds support for Python 3.13

Reviewed Changes

Copilot reviewed 27 out of 31 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
pyproject.toml Migration from Hatch configuration to uv/Task setup with dependency groups and pytest configuration
Taskfile.yaml New Task configuration defining development workflows and commands
requirements/*.txt Removal of all auto-generated requirements files (replaced by uv.lock)
lunchable_splitlunch/__about__.py Version management changed from static to dynamic using importlib.metadata
lunchable_splitlunch/lunchmoney_splitwise.py Added type ignore comments for mypy compatibility
.github/workflows/ Updated CI/CD workflows to use uv and Task instead of Hatch
docs/contributing.md Documentation updated to reflect new uv/Task workflow
.pre-commit-config.yaml Pre-commit hooks updated for new tooling

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

try:
import splitwise
from dateutil.tz import tzlocal
from dateutil.tz import tzlocal # type: ignore[import-untyped]
Copy link

Copilot AI Aug 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The type ignore comment import-untyped suggests the dateutil library lacks type annotations. Consider using a more specific type ignore or checking if newer versions of python-dateutil have typing support.

Suggested change
from dateutil.tz import tzlocal # type: ignore[import-untyped]
from dateutil.tz import tzlocal # type: ignore

Copilot uses AI. Check for mistakes.
else lunchable_client
)
self._none_tag = TagsObject(id=0, name="SplitLunchPlaceholder")
self._none_tag = TagsObject(id=0, name="SplitLunchPlaceholder") # type: ignore[call-arg]
Copy link

Copilot AI Aug 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The call-arg type ignore suggests a parameter mismatch with the TagsObject constructor. This could indicate an API change or incorrect usage that should be addressed rather than silenced.

Suggested change
self._none_tag = TagsObject(id=0, name="SplitLunchPlaceholder") # type: ignore[call-arg]
self._none_tag = TagsObject(tag_id=0, tag_name="SplitLunchPlaceholder")

Copilot uses AI. Check for mistakes.
--config-file {{.ROOT_DIR}}/pyproject.toml \
{{.CLI_ARGS | default .SOURCE_CODE}}
status:
- '[$(uv tree --package mypy) != ""]'
Copy link

Copilot AI Aug 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The status condition syntax appears incorrect. The square brackets should likely be removed as this is not valid YAML array syntax for a status condition.

Suggested change
- '[$(uv tree --package mypy) != ""]'
- 'test -n "$(uv tree --package mypy)"'

Copilot uses AI. Check for mistakes.
name = "lunchable-splitlunch"
readme = "README.md"
requires-python = ">=3.8"
requires-python = ">=3.9,<4"
Copy link

Copilot AI Aug 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The upper bound constraint <4 is unnecessarily restrictive. Python packaging best practices recommend avoiding upper bounds on the Python version unless there's a specific incompatibility.

Suggested change
requires-python = ">=3.9,<4"
requires-python = ">=3.9"

Copilot uses AI. Check for mistakes.
@juftin juftin merged commit 45a216d into main Aug 26, 2025
6 checks passed
@juftin
Copy link
Owner Author

juftin commented Aug 26, 2025

🎉 This PR is included in version 1.1.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant