skillnav 0.4.2__tar.gz → 0.4.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. {skillnav-0.4.2 → skillnav-0.4.4}/PKG-INFO +1 -1
  2. {skillnav-0.4.2 → skillnav-0.4.4}/pyproject.toml +1 -1
  3. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/__init__.py +1 -1
  4. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/cli.py +17 -16
  5. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/self_update.py +26 -2
  6. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/PKG-INFO +1 -1
  7. {skillnav-0.4.2 → skillnav-0.4.4}/README.md +0 -0
  8. {skillnav-0.4.2 → skillnav-0.4.4}/setup.cfg +0 -0
  9. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/__main__.py +0 -0
  10. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/api.py +0 -0
  11. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/config.py +0 -0
  12. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/context.py +0 -0
  13. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/contributors.py +0 -0
  14. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/error_hints.py +0 -0
  15. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/errors.py +0 -0
  16. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/output.py +0 -0
  17. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/packages.py +0 -0
  18. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/publish_metadata.py +0 -0
  19. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/skill_categories.py +0 -0
  20. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav/urls.py +0 -0
  21. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/SOURCES.txt +0 -0
  22. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/dependency_links.txt +0 -0
  23. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/entry_points.txt +0 -0
  24. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/requires.txt +0 -0
  25. {skillnav-0.4.2 → skillnav-0.4.4}/src/skillnav.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skillnav
3
- Version: 0.4.2
3
+ Version: 0.4.4
4
4
  Summary: CLI client for the Skill management platform (SkillNavigator)
5
5
  License: Apache-2.0
6
6
  Keywords: skill,cli,agent,registry
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "skillnav"
7
- version = "0.4.2"
7
+ version = "0.4.4"
8
8
  description = "CLI client for the Skill management platform (SkillNavigator)"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -1,3 +1,3 @@
1
1
  """skillnav — CLI client for the Skill management platform (SkillNavigator)."""
2
2
 
3
- __version__ = "0.4.2"
3
+ __version__ = "0.4.4"
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import sys
5
6
  from pathlib import Path
6
7
  from typing import Annotated, Any, Optional
7
8
 
@@ -124,10 +125,12 @@ def _api_json(method: str, path: str, *, body: dict | None = None, auth: bool =
124
125
  return payload
125
126
 
126
127
 
127
- def _version_callback(value: bool) -> None:
128
- if value:
129
- typer.echo(f"skillnav {__version__}")
130
- raise typer.Exit(EXIT_OK)
128
+ def _is_version_only_argv(args: list[str]) -> bool:
129
+ return args in (["--version"], ["-v"])
130
+
131
+
132
+ def _print_version() -> None:
133
+ typer.echo(f"skillnav {__version__}")
131
134
 
132
135
 
133
136
  @app.callback()
@@ -143,18 +146,11 @@ def cli_root(
143
146
  no_input: Annotated[
144
147
  bool, typer.Option("--no-input", help="Never prompt; fail when input is required")
145
148
  ] = False,
146
- version: Annotated[
147
- Optional[bool],
148
- typer.Option(
149
- "--version",
150
- "-v",
151
- help="Show version and exit",
152
- callback=_version_callback,
153
- is_eager=True,
154
- ),
155
- ] = None,
156
149
  ) -> None:
157
- """CLI client for the Skill management platform (SkillNavigator)."""
150
+ """CLI client for the Skill management platform (SkillNavigator).
151
+
152
+ Use ``skillnav --version`` (or ``-v``) to print the version and exit.
153
+ """
158
154
  _state["ctx"] = CliContext.resolve(
159
155
  registry_flag=registry,
160
156
  profile_flag=profile,
@@ -872,8 +868,13 @@ def update_cmd(
872
868
 
873
869
 
874
870
  def run(argv: list[str] | None = None) -> int:
871
+ args = list(argv) if argv is not None else sys.argv[1:]
872
+ if _is_version_only_argv(args):
873
+ _print_version()
874
+ return EXIT_OK
875
+
875
876
  try:
876
- app(prog_name="skillnav", args=argv)
877
+ app(prog_name="skillnav", args=args)
877
878
  return EXIT_OK
878
879
  except typer.Exit as exc:
879
880
  return int(exc.exit_code)
@@ -89,6 +89,18 @@ def build_upgrade_command() -> list[str]:
89
89
  return [sys.executable, "-m", "pip", "install", "--upgrade", "skillnav", "-i", PYPI_INSTALL_INDEX]
90
90
 
91
91
 
92
+ def read_installed_version() -> str:
93
+ try:
94
+ import importlib.metadata as importlib_metadata
95
+ except ImportError:
96
+ return __version__
97
+
98
+ try:
99
+ return importlib_metadata.version("skillnav")
100
+ except importlib_metadata.PackageNotFoundError:
101
+ return __version__
102
+
103
+
92
104
  def run_upgrade_command() -> None:
93
105
  command = build_upgrade_command()
94
106
  try:
@@ -110,6 +122,14 @@ def run_upgrade_command() -> None:
110
122
  raise SkillnavError(message)
111
123
 
112
124
 
125
+ def _upgrade_still_behind_message(installed: str, latest: str) -> str:
126
+ return (
127
+ f"Upgrade finished but skillnav {installed} is still older than PyPI {latest}. "
128
+ f"The install index may be out of sync. Retry with: "
129
+ f"{sys.executable} -m pip install --upgrade skillnav -i https://pypi.org/simple/"
130
+ )
131
+
132
+
113
133
  def check_for_update(*, current: str | None = None) -> UpdateStatus:
114
134
  current_version = current or __version__
115
135
  latest_version = fetch_pypi_latest_version()
@@ -133,10 +153,14 @@ def perform_update(*, check_only: bool = False, current: str | None = None) -> U
133
153
  )
134
154
 
135
155
  run_upgrade_command()
156
+ installed = read_installed_version()
157
+ if compare_versions(installed, status.latest) < 0:
158
+ raise SkillnavError(_upgrade_still_behind_message(installed, status.latest))
159
+
136
160
  return UpdateStatus(
137
- current=status.current,
161
+ current=installed,
138
162
  latest=status.latest,
139
- up_to_date=False,
163
+ up_to_date=True,
140
164
  updated=True,
141
165
  )
142
166
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skillnav
3
- Version: 0.4.2
3
+ Version: 0.4.4
4
4
  Summary: CLI client for the Skill management platform (SkillNavigator)
5
5
  License: Apache-2.0
6
6
  Keywords: skill,cli,agent,registry
File without changes
File without changes
File without changes
File without changes