fastapi-cloud-cli 0.22.0__tar.gz → 0.22.1__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 (100) hide show
  1. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/PKG-INFO +1 -1
  2. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/pyproject.toml +1 -1
  3. fastapi_cloud_cli-0.22.1/src/fastapi_cloud_cli/__init__.py +1 -0
  4. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/logs.py +13 -1
  5. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_logs.py +13 -0
  6. fastapi_cloud_cli-0.22.0/src/fastapi_cloud_cli/__init__.py +0 -1
  7. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/LICENSE +0 -0
  8. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/README.md +0 -0
  9. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/scripts/add_latest_release_date.py +0 -0
  10. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/scripts/format.sh +0 -0
  11. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/scripts/lint.sh +0 -0
  12. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/scripts/prepare_release.py +0 -0
  13. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/scripts/test-cov-html.sh +0 -0
  14. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/scripts/test.sh +0 -0
  15. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/__main__.py +0 -0
  16. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/cli.py +0 -0
  17. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/__init__.py +0 -0
  18. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/_flow.py +0 -0
  19. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/apps/__init__.py +0 -0
  20. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/apps/create.py +0 -0
  21. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/apps/get.py +0 -0
  22. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/apps/link.py +0 -0
  23. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/apps/list.py +0 -0
  24. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/apps/unlink.py +0 -0
  25. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/apps/update.py +0 -0
  26. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/auth/__init__.py +0 -0
  27. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/auth/wait.py +0 -0
  28. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/ci/__init__.py +0 -0
  29. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/ci/print_workflow.py +0 -0
  30. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/deploy/__init__.py +0 -0
  31. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/deploy/archive.py +0 -0
  32. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/deploy/cloud.py +0 -0
  33. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/deploy/command.py +0 -0
  34. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/deploy/configure.py +0 -0
  35. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/deploy/upload.py +0 -0
  36. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/deploy/wait.py +0 -0
  37. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/deployments.py +0 -0
  38. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/env/__init__.py +0 -0
  39. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/env/_shared.py +0 -0
  40. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/env/delete.py +0 -0
  41. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/env/get.py +0 -0
  42. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/env/list.py +0 -0
  43. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/env/set.py +0 -0
  44. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/login.py +0 -0
  45. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/logout.py +0 -0
  46. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/setup_ci.py +0 -0
  47. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/teams/__init__.py +0 -0
  48. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/teams/get.py +0 -0
  49. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/tokens/__init__.py +0 -0
  50. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/tokens/create.py +0 -0
  51. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/tokens/delete.py +0 -0
  52. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/tokens/list.py +0 -0
  53. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/commands/whoami.py +0 -0
  54. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/config.py +0 -0
  55. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/logging.py +0 -0
  56. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/py.typed +0 -0
  57. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/__init__.py +0 -0
  58. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/api.py +0 -0
  59. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/apps.py +0 -0
  60. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/auth.py +0 -0
  61. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/cli.py +0 -0
  62. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/config.py +0 -0
  63. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/dates.py +0 -0
  64. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/env.py +0 -0
  65. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/errors.py +0 -0
  66. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/execution.py +0 -0
  67. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/progress_file.py +0 -0
  68. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/sentry.py +0 -0
  69. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/src/fastapi_cloud_cli/utils/version_check.py +0 -0
  70. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/__init__.py +0 -0
  71. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/conftest.py +0 -0
  72. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_api_client.py +0 -0
  73. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_archive.py +0 -0
  74. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_auth.py +0 -0
  75. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli.py +0 -0
  76. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_apps.py +0 -0
  77. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_ci.py +0 -0
  78. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_deploy.py +0 -0
  79. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_deployments.py +0 -0
  80. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_link.py +0 -0
  81. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_login.py +0 -0
  82. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_logout.py +0 -0
  83. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_setup_ci.py +0 -0
  84. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_teams.py +0 -0
  85. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_tokens.py +0 -0
  86. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_unlink.py +0 -0
  87. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_cli_whoami.py +0 -0
  88. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_config.py +0 -0
  89. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_dates.py +0 -0
  90. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_deploy_utils.py +0 -0
  91. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_env_delete.py +0 -0
  92. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_env_get.py +0 -0
  93. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_env_list.py +0 -0
  94. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_env_set.py +0 -0
  95. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_prepare_release.py +0 -0
  96. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_progress_file.py +0 -0
  97. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_sentry.py +0 -0
  98. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_utils_apps.py +0 -0
  99. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/test_version_check.py +0 -0
  100. {fastapi_cloud_cli-0.22.0 → fastapi_cloud_cli-0.22.1}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastapi-cloud-cli
3
- Version: 0.22.0
3
+ Version: 0.22.1
4
4
  Summary: Deploy and manage FastAPI Cloud apps from the command line 🚀
5
5
  Author-Email: Patrick Arminio <patrick@fastapilabs.com>
6
6
  License: MIT
@@ -41,7 +41,7 @@ dependencies = [
41
41
  "fastar >= 0.10.0",
42
42
  "detect-installer>=0.1.0",
43
43
  ]
44
- version = "0.22.0"
44
+ version = "0.22.1"
45
45
 
46
46
  [project.license]
47
47
  text = "MIT"
@@ -0,0 +1 @@
1
+ __version__ = "0.22.1"
@@ -40,6 +40,8 @@ LOG_LEVEL_COLORS = {
40
40
  }
41
41
 
42
42
  SINCE_PATTERN = re.compile(r"^\d+[smhd]$")
43
+ MIN_LOG_TAIL = 1
44
+ MAX_LOG_TAIL = 1000
43
45
 
44
46
 
45
47
  class AppLogsOutput(BaseModel):
@@ -57,6 +59,15 @@ def _validate_since(value: str) -> str:
57
59
  return value
58
60
 
59
61
 
62
+ def _validate_tail(value: int) -> int:
63
+ if not MIN_LOG_TAIL <= value <= MAX_LOG_TAIL:
64
+ raise typer.BadParameter(
65
+ f"Invalid value. Use a number between {MIN_LOG_TAIL} and {MAX_LOG_TAIL}."
66
+ )
67
+
68
+ return value
69
+
70
+
60
71
  def _get_log_bullet(log: AppLogEntry) -> str:
61
72
  """Colored indicator rendered in the emoji bullet column.
62
73
 
@@ -214,8 +225,9 @@ def logs(
214
225
  100,
215
226
  "--tail",
216
227
  "-t",
217
- help="Number of log lines to show before streaming.",
228
+ help=f"Number of log lines to show before streaming (max {MAX_LOG_TAIL}).",
218
229
  show_default=True,
230
+ callback=_validate_tail,
219
231
  ),
220
232
  since: str = typer.Option(
221
233
  "5m",
@@ -540,6 +540,19 @@ def test_rejects_invalid_since_format(
540
540
  assert "Invalid format" in result.output
541
541
 
542
542
 
543
+ @pytest.mark.parametrize("invalid_tail", [0, 1001])
544
+ def test_rejects_invalid_tail(
545
+ logged_in_cli: None,
546
+ configured_app: ConfiguredApp,
547
+ invalid_tail: int,
548
+ ) -> None:
549
+ with changing_dir(configured_app.path):
550
+ result = runner.invoke(app, ["logs", "--tail", str(invalid_tail)])
551
+
552
+ assert result.exit_code == 2
553
+ assert "between 1 and 1000" in result.output
554
+
555
+
543
556
  @pytest.mark.respx
544
557
  @pytest.mark.parametrize(
545
558
  "valid_since",
@@ -1 +0,0 @@
1
- __version__ = "0.22.0"