24
24
25
25
def bump_version (version_spec , version_cmd , changelog_path ):
26
26
"""Bump the version and verify new version"""
27
- util .bump_version (version_spec , version_cmd = version_cmd , changelog_path = changelog_path )
28
-
29
- version = util . get_version ( )
27
+ version = util .bump_version (
28
+ version_spec , version_cmd = version_cmd , changelog_path = changelog_path
29
+ )
30
30
31
31
# A properly parsed version will have a "major" attribute
32
32
parsed = parse_version (version )
@@ -44,6 +44,42 @@ def bump_version(version_spec, version_cmd, changelog_path):
44
44
return version
45
45
46
46
47
+ def update_dependencies (python_package , python_packages ):
48
+ dep_names = [] if len (python_package ) < 3 else python_package [2 ].split ("," )
49
+ python_names = [p [1 ] for p in python_packages ]
50
+ prev_dir = os .getcwd ()
51
+ deps = {}
52
+ for dep_name in dep_names :
53
+ try :
54
+ i = python_names .index (dep_name )
55
+ except ValueError :
56
+ raise RuntimeError (
57
+ f"Package { python_package [1 ]} depends on { dep_name } , which has not been released yet. Please put the dependency before this package in the python_packages list."
58
+ )
59
+ dep_path = python_packages [i ][0 ]
60
+ os .chdir (dep_path )
61
+ deps [dep_name ] = util .get_version ()
62
+ os .chdir (prev_dir )
63
+ if util .PYPROJECT .exists ():
64
+ os .chdir (python_package [0 ])
65
+ text = util .PYPROJECT .read_text (encoding = "utf-8" )
66
+ data = toml .loads (text )
67
+ dependencies = data .get ("project" , {}).get ("dependencies" , [])
68
+ _update_dependencies (dependencies , deps )
69
+ for dependencies in data .get ("project" , {}).get ("optional-dependencies" , {}).values ():
70
+ _update_dependencies (dependencies , deps )
71
+ util .PYPROJECT .write_text (toml .dumps (data ))
72
+ os .chdir (prev_dir )
73
+
74
+
75
+ def _update_dependencies (dependencies , deps ):
76
+ deps_no_pin = [d .split ("<" )[0 ].split ("=" )[0 ].split (">" )[0 ].strip () for d in dependencies ]
77
+ for k , v in deps .items ():
78
+ if k in deps_no_pin :
79
+ i = deps_no_pin .index (k )
80
+ dependencies [i ] = k + " ==" + v
81
+
82
+
47
83
def check_links (ignore_glob , ignore_links , cache_file , links_expire ):
48
84
"""Check URLs for HTML-containing files."""
49
85
cache_dir = osp .expanduser (cache_file ).replace (os .sep , "/" )
0 commit comments