commitizen icon indicating copy to clipboard operation
commitizen copied to clipboard

Make uv.lock optional bump

Open Lee-W opened this issue 9 months ago • 9 comments

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

Lee-W avatar Apr 06 '25 04:04 Lee-W

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.

Yusin0903 avatar Apr 06 '25 17:04 Yusin0903

That would be awesome 🙂

Lee-W avatar Apr 07 '25 00:04 Lee-W

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.

Image

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?

Yusin0903 avatar Apr 08 '25 17:04 Yusin0903

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.

Image

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

Lee-W avatar Apr 09 '25 01:04 Lee-W

Thanks, I will try to reproduce the situation.

Yusin0903 avatar Apr 09 '25 02:04 Yusin0903

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'

bearomorphism avatar Jun 09 '25 16:06 bearomorphism

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 avatar Jun 10 '25 03:06 Lee-W

@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.

Yusin0903 avatar Jun 10 '25 15:06 Yusin0903

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

sharpepd avatar Jun 23 '25 07:06 sharpepd