wavespeed 1.0.7__tar.gz → 1.0.8__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 (69) hide show
  1. {wavespeed-1.0.7 → wavespeed-1.0.8}/PKG-INFO +1 -1
  2. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/_version.py +1 -1
  3. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/__init__.py +15 -4
  4. wavespeed-1.0.8/src/wavespeed/serverless/modules/health.py +59 -0
  5. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed.egg-info/PKG-INFO +1 -1
  6. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed.egg-info/SOURCES.txt +1 -0
  7. {wavespeed-1.0.7 → wavespeed-1.0.8}/.github/workflows/claude-code-review.yml +0 -0
  8. {wavespeed-1.0.7 → wavespeed-1.0.8}/.github/workflows/claude.yml +0 -0
  9. {wavespeed-1.0.7 → wavespeed-1.0.8}/.github/workflows/pre-commit.yml +0 -0
  10. {wavespeed-1.0.7 → wavespeed-1.0.8}/.github/workflows/python-packages.yml +0 -0
  11. {wavespeed-1.0.7 → wavespeed-1.0.8}/.github/workflows/python-publish.yml +0 -0
  12. {wavespeed-1.0.7 → wavespeed-1.0.8}/.gitignore +0 -0
  13. {wavespeed-1.0.7 → wavespeed-1.0.8}/.pre-commit-config.yaml +0 -0
  14. {wavespeed-1.0.7 → wavespeed-1.0.8}/CLAUDE.md +0 -0
  15. {wavespeed-1.0.7 → wavespeed-1.0.8}/LICENSE +0 -0
  16. {wavespeed-1.0.7 → wavespeed-1.0.8}/MANIFEST.in +0 -0
  17. {wavespeed-1.0.7 → wavespeed-1.0.8}/README.md +0 -0
  18. {wavespeed-1.0.7 → wavespeed-1.0.8}/VERSIONING.md +0 -0
  19. {wavespeed-1.0.7 → wavespeed-1.0.8}/images/build_and_push.sh +0 -0
  20. {wavespeed-1.0.7 → wavespeed-1.0.8}/images/test_worker/Dockerfile +0 -0
  21. {wavespeed-1.0.7 → wavespeed-1.0.8}/images/test_worker/build_and_test.sh +0 -0
  22. {wavespeed-1.0.7 → wavespeed-1.0.8}/images/test_worker/handler.py +0 -0
  23. {wavespeed-1.0.7 → wavespeed-1.0.8}/images/test_worker/requirements.txt +0 -0
  24. {wavespeed-1.0.7 → wavespeed-1.0.8}/images/test_worker/test_input.json +0 -0
  25. {wavespeed-1.0.7 → wavespeed-1.0.8}/pyproject.toml +0 -0
  26. {wavespeed-1.0.7 → wavespeed-1.0.8}/pytest.ini +0 -0
  27. {wavespeed-1.0.7 → wavespeed-1.0.8}/setup.cfg +0 -0
  28. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/__init__.py +0 -0
  29. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/_config_module.py +0 -0
  30. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/api/__init__.py +0 -0
  31. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/api/client.py +0 -0
  32. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/config.py +0 -0
  33. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/__init__.py +0 -0
  34. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/fastapi.py +0 -0
  35. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/handler.py +0 -0
  36. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/heartbeat.py +0 -0
  37. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/http.py +0 -0
  38. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/job.py +0 -0
  39. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/local.py +0 -0
  40. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/logger.py +0 -0
  41. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/progress.py +0 -0
  42. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/scaler.py +0 -0
  43. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/modules/state.py +0 -0
  44. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/utils/__init__.py +0 -0
  45. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/utils/boto3_utils.py +0 -0
  46. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/utils/validator.py +0 -0
  47. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed/serverless/worker.py +0 -0
  48. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed.egg-info/dependency_links.txt +0 -0
  49. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed.egg-info/not-zip-safe +0 -0
  50. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed.egg-info/requires.txt +0 -0
  51. {wavespeed-1.0.7 → wavespeed-1.0.8}/src/wavespeed.egg-info/top_level.txt +0 -0
  52. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/__init__.py +0 -0
  53. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/conftest.py +0 -0
  54. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_api.py +0 -0
  55. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_config.py +0 -0
  56. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/__init__.py +0 -0
  57. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/__init__.py +0 -0
  58. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_fastapi.py +0 -0
  59. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_handler.py +0 -0
  60. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_http.py +0 -0
  61. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_job.py +0 -0
  62. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_local.py +0 -0
  63. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_logger.py +0 -0
  64. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_progress.py +0 -0
  65. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_scaler.py +0 -0
  66. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_modules/test_state.py +0 -0
  67. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_utils/__init__.py +0 -0
  68. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_utils/test_validator.py +0 -0
  69. {wavespeed-1.0.7 → wavespeed-1.0.8}/tests/test_serverless/test_worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wavespeed
3
- Version: 1.0.7
3
+ Version: 1.0.8
4
4
  Summary: WaveSpeedAI Python Client — Official Python SDK for WaveSpeedAI inference platform
5
5
  Author-email: WaveSpeedAI <support@wavespeed.ai>
6
6
  License: MIT
@@ -1,2 +1,2 @@
1
1
  # This file is automatically generated by setuptools_scm
2
- __version__ = "1.0.7"
2
+ __version__ = "1.0.8"
@@ -56,8 +56,8 @@ def _parse_args() -> argparse.Namespace:
56
56
  "--waverless_api_host",
57
57
  "--rp_api_host",
58
58
  type=str,
59
- default="localhost",
60
- help="API server host (default: localhost)",
59
+ default="0.0.0.0",
60
+ help="API server host (default: 0.0.0.0)",
61
61
  )
62
62
  parser.add_argument(
63
63
  "--waverless_api_port",
@@ -160,6 +160,17 @@ def start(config: Dict[str, Any]) -> None:
160
160
  port=args.waverless_api_port,
161
161
  )
162
162
  else:
163
- # Standard worker mode
163
+ # Standard worker mode with health check server
164
164
  log.info("Starting serverless worker...")
165
- run_worker(config)
165
+ from .modules.health import HealthServer
166
+
167
+ health_server = HealthServer(
168
+ host=args.waverless_api_host,
169
+ port=args.waverless_api_port,
170
+ )
171
+ health_server.start()
172
+
173
+ try:
174
+ run_worker(config)
175
+ finally:
176
+ health_server.stop()
@@ -0,0 +1,59 @@
1
+ """Lightweight health check HTTP server for worker mode."""
2
+
3
+ import threading
4
+ from http.server import BaseHTTPRequestHandler, HTTPServer
5
+ from typing import Optional
6
+
7
+ from .logger import log
8
+
9
+
10
+ class HealthHandler(BaseHTTPRequestHandler):
11
+ """Simple HTTP handler for health checks."""
12
+
13
+ def do_GET(self) -> None:
14
+ """Handle GET requests."""
15
+ if self.path == "/health":
16
+ self.send_response(200)
17
+ self.send_header("Content-Type", "application/json")
18
+ self.end_headers()
19
+ self.wfile.write(b'{"status": "ok"}')
20
+ else:
21
+ self.send_response(404)
22
+ self.end_headers()
23
+
24
+ def log_message(self, format: str, *args) -> None:
25
+ """Suppress default logging."""
26
+ pass
27
+
28
+
29
+ class HealthServer:
30
+ """Background health check server."""
31
+
32
+ def __init__(self, host: str = "0.0.0.0", port: int = 8000):
33
+ """Initialize the health server.
34
+
35
+ Args:
36
+ host: Host to bind to.
37
+ port: Port to bind to.
38
+ """
39
+ self.host = host
40
+ self.port = port
41
+ self._server: Optional[HTTPServer] = None
42
+ self._thread: Optional[threading.Thread] = None
43
+
44
+ def start(self) -> None:
45
+ """Start the health server in a background thread."""
46
+ try:
47
+ self._server = HTTPServer((self.host, self.port), HealthHandler)
48
+ self._thread = threading.Thread(target=self._server.serve_forever, daemon=True)
49
+ self._thread.start()
50
+ log.info(f"Health server started at http://{self.host}:{self.port}/health")
51
+ except Exception as e:
52
+ log.error(f"Failed to start health server: {e}")
53
+
54
+ def stop(self) -> None:
55
+ """Stop the health server."""
56
+ if self._server:
57
+ self._server.shutdown()
58
+ self._server = None
59
+ log.debug("Health server stopped")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wavespeed
3
- Version: 1.0.7
3
+ Version: 1.0.8
4
4
  Summary: WaveSpeedAI Python Client — Official Python SDK for WaveSpeedAI inference platform
5
5
  Author-email: WaveSpeedAI <support@wavespeed.ai>
6
6
  License: MIT
@@ -36,6 +36,7 @@ src/wavespeed/serverless/worker.py
36
36
  src/wavespeed/serverless/modules/__init__.py
37
37
  src/wavespeed/serverless/modules/fastapi.py
38
38
  src/wavespeed/serverless/modules/handler.py
39
+ src/wavespeed/serverless/modules/health.py
39
40
  src/wavespeed/serverless/modules/heartbeat.py
40
41
  src/wavespeed/serverless/modules/http.py
41
42
  src/wavespeed/serverless/modules/job.py
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes