File tree Expand file tree Collapse file tree 2 files changed +48
-0
lines changed
Expand file tree Collapse file tree 2 files changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ import re
12from typing import Any , Dict , Iterable , List
23
34from cleo .helpers import argument , option
@@ -134,6 +135,11 @@ def handle_dependency(
134135 self .line (f"No new version for '{ dependency .name } '" )
135136 return
136137
138+ # preserve zero based carets ('^0.0') when bumping
139+ version = re .match (r"\^([0.]+)" , dependency .pretty_constraint )
140+ if version and candidate .pretty_version .startswith (version [1 ]):
141+ return
142+
137143 if (
138144 dependency .pretty_constraint [0 ] == "~"
139145 and "." in dependency .pretty_constraint
Original file line number Diff line number Diff line change @@ -98,3 +98,45 @@ def test_handle_dependency_with_latest(
9898 new_version = f"^{ new_version } " ,
9999 pyproject_content = content ,
100100 )
101+
102+
103+ def test_handle_dependency_with_zero_caret (
104+ up_cmd_tester : TestUpCommand ,
105+ mocker : MockerFixture ,
106+ ) -> None :
107+ dependency = Dependency (
108+ name = "foo" ,
109+ constraint = "^0" ,
110+ groups = ["main" ],
111+ )
112+ new_version = "0.1"
113+ package = Package (
114+ name = dependency .name ,
115+ version = new_version ,
116+ )
117+
118+ content = parse ("" )
119+
120+ selector = Mock ()
121+ selector .find_best_candidate = Mock (return_value = package )
122+ bump_version_in_pyproject_content = mocker .patch (
123+ "poetry_plugin_up.command.UpCommand.bump_version_in_pyproject_content" ,
124+ return_value = None ,
125+ )
126+
127+ up_cmd_tester .handle_dependency (
128+ dependency = dependency ,
129+ latest = True ,
130+ pinned = False ,
131+ only_packages = [],
132+ pyproject_content = content ,
133+ selector = selector ,
134+ )
135+
136+ selector .find_best_candidate .assert_called_once_with (
137+ package_name = dependency .name ,
138+ target_package_version = "*" ,
139+ allow_prereleases = dependency .allows_prereleases (),
140+ source = dependency .source_name ,
141+ )
142+ bump_version_in_pyproject_content .assert_not_called ()
You can’t perform that action at this time.
0 commit comments