Make uv.lock optional bump
Description
uv.lock might not exists when the project is just initialized
Steps to reproduce
git init
uv init
cz init
sed -i -e 's/pep621/uv/g' pyproject.toml pyproject.toml
git add .
cz commit
cz bump
Current behavior
FileNotFoundError: [Errno 2] No such file or directory: 'uv.lock'
Desired behavior
It should skip if uv.lock is not there yet.
Screenshots
No response
Environment
Commitizen Version: 4.5.0 Python Version: 3.12.7 (main, Oct 16 2024, 07:12:08) [Clang 18.1.8 ] Operating System: Darwin
Hi @Lee-W, I used uv to create a virtual environment while working on another issue. I think I can give this one a try as well.
That would be awesome 🙂
Hi @Lee-W, I tried to reproduce the issue but everything works fine. I was able to run cz bump successfully, as shown in the screenshot below.
I tested it with both Python 3.10 and 3.12, and the Commitizen version in both cases was 4.5.0. The only difference I noticed is that my system is Ubuntu 22.04.5.
Could youprovide more details about your environment and the issue you're encountering?
Hi @Lee-W, I tried to reproduce the issue but everything works fine. I was able to run cz bump successfully, as shown in the screenshot below.
I tested it with both Python 3.10 and 3.12, and the Commitizen version in both cases was 4.5.0. The only difference I noticed is that my system is Ubuntu 22.04.5.
Could youprovide more details about your environment and the issue you're encountering?
Ah, right, missing one crucial piece 🤦♂️ Just updated the commands above. so the idea is we still need to choose uv provider
Thanks, I will try to reproduce the situation.
Steps to reproduce:
➜ workspace mkdir tmp
➜ workspace cd tmp
➜ tmp git init
uv init
cz init
sed -i -e 's/pep621/uv/g' pyproject.toml pyproject.toml
git add .
cz commit
cz bump
Initialized empty Git repository in /Users/bearomorphism/workspace/tmp/.git/
Initialized project `tmp`
Welcome to commitizen!
Answer the questions to configure your project.
For further configuration visit:
https://commitizen-tools.github.io/commitizen/config/
? Please choose a supported config file: .cz.toml
? Please choose a cz (commit rule): (default: cz_conventional_commits) cz_conventional_commits
? Choose the source of the version: uv: Get and Get and set version from pyproject.toml and uv.lock
No Existing Tag. Set tag to v0.0.1
? Choose version scheme: pep440
? Please enter the correct version format: (default: "$version")
? Create changelog automatically on bump Yes
? Keep major version zero (0.x) during breaking changes Yes
? What types of pre-commit hook you want to install? (Leave blank if you don't want to install) done
You can bump the version running:
cz bump
Configuration complete 🚀
? Select the type of change you are committing fix: A bug fix. Correlates with PATCH in SemVer
? What is the scope of this change? (class or file name): (press [enter] to skip)
a
? Write a short and imperative summary of the code changes: (lower case and no period)
a
? Provide additional contextual information about the code changes: (press [enter] to skip)
a
? Is this a BREAKING CHANGE? Correlates with MAJOR in SemVer No
? Footer. Information about Breaking Changes and reference issues that this commit closes: (press [enter] to skip)
fix(a): a
a
[main (root-commit) 6329733] fix(a): a
6 files changed, 28 insertions(+)
create mode 100644 .cz.toml
create mode 100644 .python-version
create mode 100644 README.md
create mode 100644 main.py
create mode 100644 pyproject.toml
create mode 100644 pyproject.toml-e
Commit successful!
No tag matching configuration could not be found.
Possible causes:
- version in configuration is not the current version
- tag_format or legacy_tag_formats is missing, check them using 'git tag --list'
? Is this the first tag created? Yes
bump: version 0.1.0 → 0.1.1
tag to create: 0.1.1
increment detected: PATCH
Traceback (most recent call last):
File "/Users/bearomorphism/.local/bin/cz", line 10, in <module>
sys.exit(main())
~~~~^^
File "/Users/bearomorphism/.local/share/uv/tools/commitizen/lib/python3.13/site-packages/commitizen/cli.py", line 660, in main
args.func(conf, arguments)()
~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/Users/bearomorphism/.local/share/uv/tools/commitizen/lib/python3.13/site-packages/commitizen/commands/bump.py", line 355, in __call__
provider.set_version(str(new_version))
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "/Users/bearomorphism/.local/share/uv/tools/commitizen/lib/python3.13/site-packages/commitizen/providers/uv_provider.py", line 28, in set_version
self.set_lock_version(version)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/Users/bearomorphism/.local/share/uv/tools/commitizen/lib/python3.13/site-packages/commitizen/providers/uv_provider.py", line 34, in set_lock_version
document = tomlkit.parse(self.lock_file.read_text())
~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/Users/bearomorphism/.local/share/uv/python/cpython-3.13.3-macos-aarch64-none/lib/python3.13/pathlib/_local.py", line 546, in read_text
return PathBase.read_text(self, encoding, errors, newline)
~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bearomorphism/.local/share/uv/python/cpython-3.13.3-macos-aarch64-none/lib/python3.13/pathlib/_abc.py", line 632, in read_text
with self.open(mode='r', encoding=encoding, errors=errors, newline=newline) as f:
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bearomorphism/.local/share/uv/python/cpython-3.13.3-macos-aarch64-none/lib/python3.13/pathlib/_local.py", line 537, in open
return io.open(self, mode, buffering, encoding, errors, newline)
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'uv.lock'
hmmm... I thought we have it long ago. yep, we'll definitely need it @Yusin0903 would like to know whether you're still working on it. Thanks!
@Lee-W @bearomorphism Sorry, I’ve been a bit busy lately. If this issue is urgent, feel free to take it over. I’ll focus on other issues later.
Note, that I think this is also an issue if you are using uv workspaces, because the uv.lock only applies to the root project.
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "W:\git\infr-dpe-do\.venv\Scripts\cz.exe\__main__.py", line 10, in <module>
File "workspace\.venv\Lib\site-packages\commitizen\cli.py", line 660, in main
args.func(conf, arguments)()
File "workspace\.venv\Lib\site-packages\commitizen\commands\bump.py", line 355, in __call__
provider.set_version(str(new_version))
File "workspace\.venv\Lib\site-packages\commitizen\providers\uv_provider.py", line 28, in set_version
self.set_lock_version(version)
File "workspace\.venv\Lib\site-packages\commitizen\providers\uv_provider.py", line 34, in set_lock_version
document = tomlkit.parse(self.lock_file.read_text())
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "pythonpath\python\3.11.10\Lib\pathlib.py", line 1058, in read_text
with self.open(mode='r', encoding=encoding, errors=errors) as f:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "pythonpath\python\3.11.10\Lib\pathlib.py", line 1044, in open
return io.open(self, mode, buffering, encoding, errors, newline)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'uv.lock'
chore(dpesteps): release 0.0.0 -> 0.1.0.dev0+sharpep [skip ci]
tag to create: release/convention-sets/armstrong/0.1.0.dev0+sharpep
increment detected: MINOR
It does not appear to cause too much of an issue for me, except for the trace output.
I presume I can work around this by using version_provider = "pep621" rather than uv.
I am using uv 0.7.9; cz 4.8.0