Conversation
There was a problem hiding this comment.
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] |
There was a problem hiding this comment.
[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.
| from dateutil.tz import tzlocal # type: ignore[import-untyped] | |
| from dateutil.tz import tzlocal # type: ignore |
| else lunchable_client | ||
| ) | ||
| self._none_tag = TagsObject(id=0, name="SplitLunchPlaceholder") | ||
| self._none_tag = TagsObject(id=0, name="SplitLunchPlaceholder") # type: ignore[call-arg] |
There was a problem hiding this comment.
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.
| self._none_tag = TagsObject(id=0, name="SplitLunchPlaceholder") # type: ignore[call-arg] | |
| self._none_tag = TagsObject(tag_id=0, tag_name="SplitLunchPlaceholder") |
| --config-file {{.ROOT_DIR}}/pyproject.toml \ | ||
| {{.CLI_ARGS | default .SOURCE_CODE}} | ||
| status: | ||
| - '[$(uv tree --package mypy) != ""]' |
There was a problem hiding this comment.
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.
| - '[$(uv tree --package mypy) != ""]' | |
| - 'test -n "$(uv tree --package mypy)"' |
| name = "lunchable-splitlunch" | ||
| readme = "README.md" | ||
| requires-python = ">=3.8" | ||
| requires-python = ">=3.9,<4" |
There was a problem hiding this comment.
[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.
| requires-python = ">=3.9,<4" | |
| requires-python = ">=3.9" |
|
🎉 This PR is included in version 1.1.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This PR introduces uv and taskfile as the project's build and task management system, modernizing the development workflow and tooling infrastructure.