cyclo-manager 1.0.0.dev8__tar.gz → 1.0.0.dev10__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 (20) hide show
  1. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/PKG-INFO +1 -1
  2. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_host_agent/routers/repos.py +14 -3
  3. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_host_agent/routers/update.py +1 -5
  4. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager.egg-info/PKG-INFO +1 -1
  5. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager_cli/cli.py +4 -1
  6. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/pyproject.toml +1 -1
  7. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/README.md +0 -0
  8. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_host_agent/__init__.py +0 -0
  9. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_host_agent/main.py +0 -0
  10. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_host_agent/models.py +0 -0
  11. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_host_agent/routers/__init__.py +0 -0
  12. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager.egg-info/SOURCES.txt +0 -0
  13. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager.egg-info/dependency_links.txt +0 -0
  14. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager.egg-info/entry_points.txt +0 -0
  15. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager.egg-info/requires.txt +0 -0
  16. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager.egg-info/top_level.txt +0 -0
  17. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager_cli/__init__.py +0 -0
  18. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager_cli/config/config.yml +0 -0
  19. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/cyclo_manager_cli/docker/docker-compose.yml +0 -0
  20. {cyclo_manager-1.0.0.dev8 → cyclo_manager-1.0.0.dev10}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cyclo-manager
3
- Version: 1.0.0.dev8
3
+ Version: 1.0.0.dev10
4
4
  Summary: cyclo_manager CLI: pip-installable launcher for cyclo_manager server and UI containers. Run 'cyclo_manager up' to start Docker stack.
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.10
@@ -41,6 +41,7 @@ from fastapi import APIRouter, HTTPException, status
41
41
  router = APIRouter(prefix='/repos', tags=['repos'])
42
42
 
43
43
  GIT_TIMEOUT = 120.0
44
+ GIT_REMOTE_TIMEOUT = 5.0
44
45
 
45
46
 
46
47
  def _resolve_workspace() -> Path:
@@ -123,7 +124,11 @@ async def _ensure_allowed_branch(repo_path: Path) -> None:
123
124
  raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=detail)
124
125
 
125
126
 
126
- async def _git(args: list[str], cwd: Optional[Path] = None) -> tuple[int, str, str]:
127
+ async def _git(
128
+ args: list[str],
129
+ cwd: Optional[Path] = None,
130
+ timeout: float = GIT_TIMEOUT,
131
+ ) -> tuple[int, str, str]:
127
132
  proc = await asyncio.create_subprocess_exec(
128
133
  'git', *args,
129
134
  cwd=str(cwd) if cwd else None,
@@ -131,7 +136,7 @@ async def _git(args: list[str], cwd: Optional[Path] = None) -> tuple[int, str, s
131
136
  stderr=asyncio.subprocess.PIPE,
132
137
  )
133
138
  try:
134
- stdout, stderr = await asyncio.wait_for(proc.communicate(), timeout=GIT_TIMEOUT)
139
+ stdout, stderr = await asyncio.wait_for(proc.communicate(), timeout=timeout)
135
140
  except asyncio.TimeoutError:
136
141
  proc.kill()
137
142
  await proc.wait()
@@ -195,7 +200,13 @@ def _read_package_xml_version(repo_path: Path) -> Optional[str]:
195
200
 
196
201
 
197
202
  async def _fetch_latest_tag(remote_url: str) -> Optional[str]:
198
- rc, out, _ = await _git(['ls-remote', '--tags', remote_url])
203
+ try:
204
+ rc, out, _ = await _git(
205
+ ['ls-remote', '--tags', remote_url],
206
+ timeout=GIT_REMOTE_TIMEOUT,
207
+ )
208
+ except asyncio.TimeoutError:
209
+ return None
199
210
  if rc != 0:
200
211
  return None
201
212
  tags = []
@@ -26,7 +26,6 @@ from fastapi import APIRouter, HTTPException, status
26
26
  router = APIRouter(prefix='/system', tags=['system'])
27
27
 
28
28
  _update_status: dict = {'phase': 'idle', 'output': '', 'error': ''}
29
- MAX_OUTPUT_CHARS = 120_000
30
29
 
31
30
 
32
31
  @router.get('/version')
@@ -47,15 +46,12 @@ async def _run_update() -> None:
47
46
  )
48
47
  stdout, stderr = await asyncio.wait_for(proc.communicate(), timeout=600)
49
48
  out = (stdout.decode(errors='replace') + stderr.decode(errors='replace')).strip()
50
- if len(out) > MAX_OUTPUT_CHARS:
51
- out = out[-MAX_OUTPUT_CHARS:]
49
+ _update_status['output'] = out
52
50
  if proc.returncode != 0:
53
51
  _update_status['phase'] = 'error'
54
- _update_status['output'] = out
55
52
  _update_status['error'] = f'cyclo_manager update failed (exit {proc.returncode})'
56
53
  else:
57
54
  _update_status['phase'] = 'done'
58
- _update_status['output'] = ''
59
55
  except asyncio.TimeoutError:
60
56
  _update_status['phase'] = 'error'
61
57
  _update_status['error'] = 'cyclo_manager update timed out'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cyclo-manager
3
- Version: 1.0.0.dev8
3
+ Version: 1.0.0.dev10
4
4
  Summary: cyclo_manager CLI: pip-installable launcher for cyclo_manager server and UI containers. Run 'cyclo_manager up' to start Docker stack.
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.10
@@ -284,7 +284,10 @@ WantedBy=multi-user.target
284
284
  print(f'Failed to install host agent service: {e}', file=sys.stderr)
285
285
  return 1
286
286
  except FileNotFoundError:
287
- print('Required command not found. Install the host agent service manually.', file=sys.stderr)
287
+ print(
288
+ 'Required command not found. Install the host agent service manually.',
289
+ file=sys.stderr,
290
+ )
288
291
  return 1
289
292
 
290
293
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cyclo-manager"
7
- version = "1.0.0.dev8"
7
+ version = "1.0.0.dev10"
8
8
  description = "cyclo_manager CLI: pip-installable launcher for cyclo_manager server and UI containers. Run 'cyclo_manager up' to start Docker stack."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"