Skip to content

Commit 63f8e15

Browse files
Squash several bugs, support python -m calls
1 parent 1d8a22b commit 63f8e15

File tree

7 files changed

+53
-23
lines changed

7 files changed

+53
-23
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ dependencies = [
1717
]
1818

1919
[project.scripts]
20-
upgrade-dependencies = "upgrade_dependencies.main:main"
20+
upgrade-dependencies = "upgrade_dependencies.main:app"
2121

2222
[dependency-groups]
2323
dev = [
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
"""Support 'python -m upgrade-dependencies'."""
2+
3+
from .main import app
4+
5+
app(prog_name="rick-portal-gun")

src/upgrade_dependencies/dependency.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ def __init__(
116116
self,
117117
package_name: str,
118118
specifier: SpecifierSet,
119+
extras: list[str],
119120
base: bool = True,
120121
extra: str | None = None,
121122
group: str | None = None,
@@ -125,6 +126,7 @@ def __init__(
125126
Args:
126127
package_name: _description_
127128
specifier: _description_
129+
extras: _description_
128130
base: _description_. Defaults to True.
129131
extra: _description_. Defaults to None.
130132
group: _description_. Defaults to None.
@@ -133,6 +135,7 @@ def __init__(
133135
package_name=canonicalize_name(package_name),
134136
specifier=specifier,
135137
)
138+
self.extras = extras
136139
self.base = base
137140
self.extra = extra
138141
self.group = group
@@ -177,6 +180,17 @@ def short_name(self) -> str:
177180
"""
178181
return self.package_name
179182

183+
@property
184+
def package_plus_extras(self) -> str:
185+
"""_summary_.
186+
187+
Returns:
188+
_description_
189+
"""
190+
str_extras = f"[{",".join(self.extras)}]" if len(self.extras) > 0 else ""
191+
192+
return f"{self.package_name}{str_extras}"
193+
180194

181195
class GitHubDependency(Dependency):
182196
"""_summary_."""
@@ -188,6 +202,7 @@ def __init__(
188202
action: bool,
189203
pre_commit: bool,
190204
full_version: str | None = None,
205+
has_v: bool = True,
191206
) -> None:
192207
"""_summary_.
193208
@@ -197,6 +212,7 @@ def __init__(
197212
action: _description_
198213
pre_commit: _description_
199214
full_version: _description_
215+
has_v: _description_
200216
"""
201217
super().__init__(package_name=package_name, specifier=specifier)
202218

@@ -211,6 +227,7 @@ def __init__(
211227
self.action = action
212228
self.pre_commit = pre_commit
213229
self.full_version = full_version
230+
self.has_v = has_v
214231

215232
def get_latest_version(self) -> Version:
216233
"""Gets the latest version of the dependency from GitHub.

src/upgrade_dependencies/main.py

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def list_dependencies():
3333
text = Text()
3434

3535
for idx, base_dep in enumerate(project.base_dependencies):
36-
text.append(base_dep.package_name)
36+
text.append(base_dep.package_plus_extras)
3737
text.append(str(base_dep.specifier), style="green")
3838

3939
if idx < len(project.base_dependencies) - 1:
@@ -50,7 +50,7 @@ def list_dependencies():
5050
text = Text()
5151

5252
for idx, opt_dep in enumerate(opt_deps):
53-
text.append(opt_dep.package_name)
53+
text.append(opt_dep.package_plus_extras)
5454
text.append(str(opt_dep.specifier), style="green")
5555

5656
if idx < len(opt_deps) - 1:
@@ -73,7 +73,7 @@ def list_dependencies():
7373
text = Text()
7474

7575
for idx, group_dep in enumerate(group_deps):
76-
text.append(group_dep.package_name)
76+
text.append(group_dep.package_plus_extras)
7777
text.append(str(group_dep.specifier), style="green")
7878

7979
if idx < len(group_deps) - 1:
@@ -320,7 +320,7 @@ def update(
320320
dep = project.get_dependency(name=dependency)
321321
old_ver = str(sorted(dep.specifier, key=str)[0].version)
322322
except RuntimeError as e:
323-
rprint(f"Cannot find {dependency} in {project.name}.")
323+
rprint(f":no_entry_sign: Cannot find {dependency} in {project.name}.")
324324
raise typer.Exit(code=1) from e
325325

326326
# fetch data from pypi/github
@@ -390,12 +390,16 @@ def update(
390390
url = f"https://pypi.org/project/{dep.package_name}"
391391
pr_body = f"Bumps [{dep.package_name}]({url}) from {old_ver} to {version}."
392392
elif isinstance(dep, GitHubDependency):
393-
old_v = Version(old_ver)
394-
v = Version(version)
395393
url = f"https://github.com/{dep.owner}/{dep.repo}"
396-
pr_body = (
397-
f"Bumps [{dep.package_name}]({url}) from v{old_v.major} to v{v.major}."
398-
)
394+
if dep.action:
395+
old_v = Version(old_ver)
396+
v = Version(version)
397+
pr_body = f"Bumps [{dep.package_name}]({url}) from v{old_v.major} to"
398+
pr_body += f" v{v.major}."
399+
else:
400+
pr_body = (
401+
f"Bumps [{dep.package_name}]({url}) from {old_ver} to {version}."
402+
)
399403
else:
400404
pr_body = ""
401405

@@ -430,8 +434,3 @@ def update(
430434
def format_yml():
431435
"""Formats the workflow and pre-commit config yaml files."""
432436
utils.format_all_yml_files()
433-
434-
435-
def main():
436-
"""_summary_."""
437-
app()

src/upgrade_dependencies/project.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def save_pypi_dependencies(
9090
{
9191
"package_name": req.name,
9292
"specifier": req.specifier,
93+
"extras": list(req.extras),
9394
"base": True,
9495
"extra": None,
9596
"group": None,
@@ -107,6 +108,7 @@ def save_pypi_dependencies(
107108
{
108109
"package_name": req.name,
109110
"specifier": req.specifier,
111+
"extras": list(req.extras),
110112
"base": False,
111113
"extra": extra,
112114
"group": None,
@@ -124,6 +126,7 @@ def save_pypi_dependencies(
124126
{
125127
"package_name": req.name,
126128
"specifier": req.specifier,
129+
"extras": list(req.extras),
127130
"base": False,
128131
"extra": None,
129132
"group": group,
@@ -146,6 +149,7 @@ def save_pypi_dependencies(
146149
PyPIDependency(
147150
package_name="uv",
148151
specifier=SpecifierSet(f"=={uv_version[0]}"),
152+
extras=[],
149153
base=False,
150154
group="uv",
151155
),
@@ -209,13 +213,15 @@ def save_github_dependencies(
209213
owner = url.split("/")[-2]
210214
repo = url.split("/")[-1]
211215
v = Version(pc_repo["rev"])
216+
has_v = pc_repo["rev"][0] == "v"
212217

213218
self.dependencies.append(
214219
GitHubDependency(
215220
package_name=f"{owner}/{repo}",
216221
specifier=SpecifierSet(f"=={v}"),
217222
action=False,
218223
pre_commit=True,
224+
has_v=has_v,
219225
),
220226
)
221227

@@ -346,7 +352,6 @@ async def fetch_all_github_data(self) -> None:
346352
for dep in self.dependencies
347353
if isinstance(dep, GitHubDependency)
348354
],
349-
return_exceptions=True,
350355
)
351356

352357
def github_dependency_data_async(self) -> None:
@@ -498,6 +503,8 @@ def build_new_requirement(
498503
_description_
499504
"""
500505
name = old_requirement.name
506+
extras = list(old_requirement.extras)
501507
spec = sorted(old_requirement.specifier, key=str)[0].operator
508+
str_extras = f"[{",".join(extras)}]" if len(extras) > 0 else ""
502509

503-
return f"{name}{spec}{new_version}"
510+
return f"{name}{str_extras}{spec}{new_version}"

src/upgrade_dependencies/utils.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,8 @@ def update_pre_commit(
243243

244244
for repo in data["repos"]: # pyright: ignore
245245
if repo["repo"] == url:
246-
repo["rev"] = f"v{new_version}"
246+
v_str = "v" if dependency.has_v else ""
247+
repo["rev"] = f"{v_str}{new_version}"
247248

248249
# temp_file = Path(file_path).with_suffix(".temp")
249250
with Path(file_path).open("w") as temp_f:
@@ -292,10 +293,11 @@ def get_git_status() -> list[str]:
292293
changed_files: list[str] = []
293294

294295
for line in result.stdout.strip().split("\n"):
295-
status, file_path = line.split(maxsplit=1) # status and file name
296+
if len(line) > 0:
297+
status, file_path = line.split(maxsplit=1) # status and file name
296298

297-
if status in ["M", "A", "D"]: # modified, added, or deleted
298-
changed_files.append(file_path)
299+
if status in ["M", "A", "D"]: # modified, added, or deleted
300+
changed_files.append(file_path)
299301

300302
return changed_files
301303

todo.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
- [x] Implement CLI
1111
- [x] Create changes to files
1212
- [x] Create pull request
13-
- [ ] Add format yml files
13+
- [x] Add format yml files
1414
- [ ] Documentation
1515
- [ ] Handle uv better (not group)
16-
- [ ] Handle pre-commit yml (not yaml)
16+
- [ ] Handle pre-commit yml extension (not yaml)
1717
- [ ] Add tests

0 commit comments

Comments
 (0)