kiwi-code 0.0.508__tar.gz → 0.0.510__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 (143) hide show
  1. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/PKG-INFO +1 -1
  2. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/pyproject.toml +1 -1
  3. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/autoupdate.py +24 -10
  4. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_autoupdate.py +25 -1
  5. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/uv.lock +1 -1
  6. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/.github/workflows/publish.yml +0 -0
  7. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/.github/workflows/test.yml +0 -0
  8. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/.gitignore +0 -0
  9. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/.python-version +0 -0
  10. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/Makefile +0 -0
  11. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/README.md +0 -0
  12. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/docs/runtime_audit.html +0 -0
  13. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/docs/social_login_e2e.md +0 -0
  14. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/scripts/set_edition.py +0 -0
  15. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/scripts/ws_auth_check.py +0 -0
  16. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/common/__init__.py +0 -0
  17. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/common/banner.py +0 -0
  18. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/__init__.py +0 -0
  19. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/_edition.py +0 -0
  20. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/auth.py +0 -0
  21. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/autocode.py +0 -0
  22. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/checkpoints.py +0 -0
  23. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/cli.py +0 -0
  24. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/client.py +0 -0
  25. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/commands.py +0 -0
  26. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/edition.py +0 -0
  27. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/human_questions.py +0 -0
  28. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/io_threads.py +0 -0
  29. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/logger.py +0 -0
  30. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/models.py +0 -0
  31. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/oauth.py +0 -0
  32. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/run_activity.py +0 -0
  33. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/runtime_manager.py +0 -0
  34. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/server.py +0 -0
  35. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/subagents.py +0 -0
  36. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_cli/terminal_mode.py +0 -0
  37. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/__init__.py +0 -0
  38. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/__main__.py +0 -0
  39. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/auth.py +0 -0
  40. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/checkpoints.py +0 -0
  41. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/cli.py +0 -0
  42. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/commands.py +0 -0
  43. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/constants.py +0 -0
  44. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/__init__.py +0 -0
  45. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/batch.py +0 -0
  46. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/codelens.py +0 -0
  47. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/context.py +0 -0
  48. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/edits.py +0 -0
  49. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/handler.py +0 -0
  50. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/paths.py +0 -0
  51. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/read.py +0 -0
  52. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/search.py +0 -0
  53. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/text.py +0 -0
  54. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/upload.py +0 -0
  55. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/fs/write.py +0 -0
  56. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/handlers.py +0 -0
  57. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/link.py +0 -0
  58. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/main.py +0 -0
  59. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/restricted.py +0 -0
  60. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/sessions.py +0 -0
  61. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/state.py +0 -0
  62. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/tui_bridge.py +0 -0
  63. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/ui.py +0 -0
  64. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_runtime/uploads.py +0 -0
  65. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/__init__.py +0 -0
  66. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/attention.py +0 -0
  67. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/inline_file_picker.py +0 -0
  68. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/latex_unicode.py +0 -0
  69. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/main.py +0 -0
  70. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/random_words.py +0 -0
  71. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/role_mode.py +0 -0
  72. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/runtime_agent.py +0 -0
  73. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/__init__.py +0 -0
  74. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/attach_content.py +0 -0
  75. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/command_result.py +0 -0
  76. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/detach_files.py +0 -0
  77. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/file_browser.py +0 -0
  78. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/help.py +0 -0
  79. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/id_picker.py +0 -0
  80. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/login.py +0 -0
  81. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/runtime_cleanup.py +0 -0
  82. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/runtime_logs.py +0 -0
  83. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/slash_picker.py +0 -0
  84. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/term_activity_view.py +0 -0
  85. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/term_dashboard.py +0 -0
  86. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/term_dashboard_css.py +0 -0
  87. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/term_dashboard_helpers.py +0 -0
  88. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/term_dashboard_widgets.py +0 -0
  89. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/term_question_widgets.py +0 -0
  90. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/term_status_line.py +0 -0
  91. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/screens/term_subagent_widgets.py +0 -0
  92. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/slash_commands.py +0 -0
  93. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/status_words.py +0 -0
  94. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/term_app.py +0 -0
  95. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/terminal_theme.py +0 -0
  96. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/ui_settings.py +0 -0
  97. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/widgets.py +0 -0
  98. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/src/kiwi_tui/worktrees.py +0 -0
  99. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/test_hello.py +0 -0
  100. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/__init__.py +0 -0
  101. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/conftest.py +0 -0
  102. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_account_server.py +0 -0
  103. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_attention.py +0 -0
  104. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_autocode_actions.py +0 -0
  105. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_batch_fs_tool.py +0 -0
  106. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_checkpoints.py +0 -0
  107. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_cli_help.py +0 -0
  108. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_command_tips.py +0 -0
  109. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_copy_path_fs_tool.py +0 -0
  110. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_fs_edit_fidelity.py +0 -0
  111. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_human_questions.py +0 -0
  112. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_imports.py +0 -0
  113. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_io_threads.py +0 -0
  114. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_login_social.py +0 -0
  115. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_math_and_tables.py +0 -0
  116. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_oauth.py +0 -0
  117. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_read_file_streaming.py +0 -0
  118. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_reexec_kiwi.py +0 -0
  119. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_reply_selection.py +0 -0
  120. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_role_mode_injection.py +0 -0
  121. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_run_activity.py +0 -0
  122. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_run_steering.py +0 -0
  123. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_runtime_cleanup_per_account.py +0 -0
  124. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_runtime_connection.py +0 -0
  125. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_runtime_edit_diffs.py +0 -0
  126. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_runtime_fixes.py +0 -0
  127. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_runtime_imports_on_windows.py +0 -0
  128. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_runtime_log_trimming.py +0 -0
  129. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_runtime_social_login.py +0 -0
  130. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_search_in_files_fs_tool.py +0 -0
  131. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_slash_commands.py +0 -0
  132. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_stats_command.py +0 -0
  133. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_status_line.py +0 -0
  134. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_subagents.py +0 -0
  135. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_term_dashboard_ui.py +0 -0
  136. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_terminal_mode.py +0 -0
  137. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_terminal_theme.py +0 -0
  138. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_toasts.py +0 -0
  139. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_tokens.py +0 -0
  140. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_tui_interactive_runtime.py +0 -0
  141. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_tui_palette.py +0 -0
  142. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_unified_diff.py +0 -0
  143. {kiwi_code-0.0.508 → kiwi_code-0.0.510}/tests/test_worktrees.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: kiwi-code
3
- Version: 0.0.508
3
+ Version: 0.0.510
4
4
  Summary: A textual-based terminal user interface application
5
5
  Project-URL: Homepage, https://kiwicode.ai
6
6
  Author-email: Anurag <anurag@meetkiwi.co>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "kiwi-code"
3
- version = "0.0.508"
3
+ version = "0.0.510"
4
4
  description = "A textual-based terminal user interface application"
5
5
  readme = {file = "README.md", content-type = "text/markdown"}
6
6
  requires-python = ">=3.11,<4.0"
@@ -14,8 +14,10 @@ cannot be replaced), a start that is not interactive, or when turned off with
14
14
  """
15
15
  from __future__ import annotations
16
16
 
17
+ import importlib.util
17
18
  import json
18
19
  import os
20
+ import shutil
19
21
  import subprocess
20
22
  import sys
21
23
  import time
@@ -87,13 +89,17 @@ def record_latest(version: str) -> None:
87
89
  _write_state(latest=str(version), checked_at=time.time())
88
90
 
89
91
 
90
- def newer(latest: str, current: str) -> bool:
91
- try:
92
- from packaging.version import Version
92
+ def _release(version: str) -> tuple[int, ...] | None:
93
+ """A release version as numbers: kiwi's are always "1.2.3" (scripts/set_edition.py)."""
94
+ parts = str(version or "").strip().split(".")
95
+ return tuple(int(p) for p in parts) if all(p.isdigit() for p in parts) else None
93
96
 
94
- return Version(latest) > Version(current)
95
- except Exception:
96
- return False
97
+
98
+ def newer(latest: str, current: str) -> bool:
99
+ """Whether `latest` is a later release than `current`. Compared here rather than with
100
+ `packaging`, which kiwi does not depend on: an install from PyPI does not have it."""
101
+ a, b = _release(latest), _release(current)
102
+ return a is not None and b is not None and a > b
97
103
 
98
104
 
99
105
  def pending(current: str, *, now: float | None = None) -> str | None:
@@ -150,10 +156,18 @@ def installer(package: str, *, prefix: str | None = None, base_prefix: str | Non
150
156
  return Installer("uv", ("uv", "tool", "upgrade", package), f"uv tool upgrade {package}")
151
157
  if (env / "pipx_metadata.json").exists() or ("pipx" in parts and "venvs" in parts):
152
158
  return Installer("pipx", ("pipx", "upgrade", package), f"pipx upgrade {package}")
153
- return Installer(
154
- "pip", (sys.executable, "-m", "pip", "install", "--upgrade", "--quiet", package),
155
- f"pip install --upgrade {package}",
156
- )
159
+ # A plain virtual environment: with its own pip, or (made by `uv venv`) without one.
160
+ if importlib.util.find_spec("pip") is not None:
161
+ return Installer(
162
+ "pip", (sys.executable, "-m", "pip", "install", "--upgrade", "--quiet", package),
163
+ f"pip install --upgrade {package}",
164
+ )
165
+ if shutil.which("uv"):
166
+ return Installer(
167
+ "uv pip", ("uv", "pip", "install", "--upgrade", "--quiet", "--python", sys.executable, package),
168
+ f"uv pip install --upgrade {package}",
169
+ )
170
+ return None
157
171
 
158
172
 
159
173
  def manual_command(package: str) -> str:
@@ -3,6 +3,7 @@ next start, with the tool kiwi was installed with, and the new version is starte
3
3
  from __future__ import annotations
4
4
 
5
5
  import subprocess
6
+ import sys
6
7
  import time
7
8
  import types
8
9
 
@@ -27,15 +28,26 @@ def home(isolated_home, monkeypatch):
27
28
  return isolated_home
28
29
 
29
30
 
30
- def test_each_install_is_updated_with_its_own_tool(home) -> None:
31
+ def test_each_install_is_updated_with_its_own_tool(home, monkeypatch) -> None:
31
32
  uv = autoupdate.installer("kiwi-code", prefix=UV_TOOL, base_prefix="/usr", platform="linux")
32
33
  assert uv.command == ("uv", "tool", "upgrade", "kiwi-code")
33
34
  pipx = autoupdate.installer("kiwi-code", prefix=PIPX, base_prefix="/usr", platform="darwin")
34
35
  assert pipx.command == ("pipx", "upgrade", "kiwi-code")
36
+ monkeypatch.setattr(autoupdate.importlib.util, "find_spec", lambda name: object()) # has pip
35
37
  venv = autoupdate.installer("kiwi-code", prefix="/proj/.venv", base_prefix="/usr", platform="linux")
36
38
  assert venv.name == "pip" and venv.command[-1] == "kiwi-code" and "--upgrade" in venv.command
37
39
 
38
40
 
41
+ def test_a_virtual_environment_without_pip_is_updated_with_uv_or_not_at_all(home, monkeypatch) -> None:
42
+ monkeypatch.setattr(autoupdate.importlib.util, "find_spec", lambda name: None)
43
+ monkeypatch.setattr(autoupdate.shutil, "which", lambda name: "/usr/bin/uv")
44
+ venv = autoupdate.installer("kiwi-code", prefix="/proj/.venv", base_prefix="/usr", platform="linux")
45
+ assert venv.command[:3] == ("uv", "pip", "install") and venv.command[-1] == "kiwi-code"
46
+ assert ("--python", autoupdate.sys.executable) == venv.command[-3:-1]
47
+ monkeypatch.setattr(autoupdate.shutil, "which", lambda name: None)
48
+ assert autoupdate.installer("kiwi-code", prefix="/proj/.venv", base_prefix="/usr", platform="linux") is None
49
+
50
+
39
51
  def test_a_tool_folder_kept_elsewhere_is_known_by_the_file_the_tool_leaves(home, tmp_path) -> None:
40
52
  uv, pipx = tmp_path / "tools" / "kiwi-code", tmp_path / "apps" / "kiwi-code"
41
53
  uv.mkdir(parents=True)
@@ -233,3 +245,15 @@ def test_the_version_names_the_package(monkeypatch, capsys) -> None:
233
245
  monkeypatch.setattr(main.sys, "argv", ["kiwi", "--version"])
234
246
  assert main.main() == 0
235
247
  assert capsys.readouterr().out == "kiwi-code 0.0.508\n"
248
+
249
+
250
+ def test_versions_are_compared_without_packaging(monkeypatch) -> None:
251
+ # An install from PyPI does not have `packaging` (kiwi does not depend on it).
252
+ monkeypatch.setitem(sys.modules, "packaging", None)
253
+ monkeypatch.setitem(sys.modules, "packaging.version", None)
254
+ assert autoupdate.newer("0.0.508", "0.0.507")
255
+ assert autoupdate.newer("0.0.10", "0.0.9") # by number, not as text
256
+ assert autoupdate.newer("0.1.0", "0.0.999")
257
+ assert not autoupdate.newer("0.0.507", "0.0.507")
258
+ assert not autoupdate.newer("0.0.506", "0.0.507")
259
+ assert not autoupdate.newer("0.0.508rc1", "0.0.507") and not autoupdate.newer("", "0.0.507")
@@ -412,7 +412,7 @@ wheels = [
412
412
 
413
413
  [[package]]
414
414
  name = "kiwi-code"
415
- version = "0.0.508"
415
+ version = "0.0.510"
416
416
  source = { editable = "." }
417
417
  dependencies = [
418
418
  { name = "codeglass" },
File without changes
File without changes
File without changes
File without changes
File without changes