fastapi-cli 0.0.25__tar.gz → 0.0.26__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 (76) hide show
  1. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/PKG-INFO +1 -1
  2. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/pyproject.toml +1 -1
  3. fastapi_cli-0.0.26/src/fastapi_cli/__init__.py +1 -0
  4. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/cli.py +19 -0
  5. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_cli.py +14 -0
  6. fastapi_cli-0.0.25/src/fastapi_cli/__init__.py +0 -1
  7. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/LICENSE +0 -0
  8. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/README.md +0 -0
  9. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/scripts/add_latest_release_date.py +0 -0
  10. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/scripts/format.sh +0 -0
  11. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/scripts/lint.sh +0 -0
  12. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/scripts/prepare_release.py +0 -0
  13. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/scripts/test-cov-html.sh +0 -0
  14. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/scripts/test.sh +0 -0
  15. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/__main__.py +0 -0
  16. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/config.py +0 -0
  17. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/discover.py +0 -0
  18. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/exceptions.py +0 -0
  19. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/logging.py +0 -0
  20. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/py.typed +0 -0
  21. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/utils/__init__.py +0 -0
  22. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/src/fastapi_cli/utils/cli.py +0 -0
  23. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/__init__.py +0 -0
  24. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/broken_package/mod/__init__.py +0 -0
  25. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/broken_package/mod/app.py +0 -0
  26. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/broken_package/utils.py +0 -0
  27. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_api/api.py +0 -0
  28. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app/api.py +0 -0
  29. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app/app.py +0 -0
  30. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_api/app/__init__.py +0 -0
  31. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_api/app/api.py +0 -0
  32. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_app/app/__init__.py +0 -0
  33. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_app/app/api.py +0 -0
  34. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_app/app/app.py +0 -0
  35. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_main/app/__init__.py +0 -0
  36. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_main/app/api.py +0 -0
  37. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_main/app/app.py +0 -0
  38. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_main/app/main.py +0 -0
  39. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_non_default/app/__init__.py +0 -0
  40. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_app_dir_non_default/app/nondefault.py +0 -0
  41. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_main/api.py +0 -0
  42. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_main/app.py +0 -0
  43. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/default_main/main.py +0 -0
  44. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/default_files/non_default/nonstandard.py +0 -0
  45. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/nested_package/__init__.py +0 -0
  46. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/nested_package/package/__init__.py +0 -0
  47. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/nested_package/package/core/__init__.py +0 -0
  48. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/nested_package/package/core/utils.py +0 -0
  49. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/nested_package/package/mod/__init__.py +0 -0
  50. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/nested_package/package/mod/api.py +0 -0
  51. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/nested_package/package/mod/app.py +0 -0
  52. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/nested_package/package/mod/other.py +0 -0
  53. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/package/__init__.py +0 -0
  54. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/package/core/__init__.py +0 -0
  55. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/package/core/utils.py +0 -0
  56. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/package/mod/__init__.py +0 -0
  57. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/package/mod/api.py +0 -0
  58. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/package/mod/app.py +0 -0
  59. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/package/mod/other.py +0 -0
  60. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/pyproject_config/another_module.py +0 -0
  61. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/pyproject_config/my_module.py +0 -0
  62. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/pyproject_config/pyproject.toml +0 -0
  63. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/single_file_api.py +0 -0
  64. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/single_file_app.py +0 -0
  65. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/assets/single_file_other.py +0 -0
  66. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/conftest.py +0 -0
  67. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_cli_pyproject.py +0 -0
  68. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_discover.py +0 -0
  69. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_prepare_release.py +0 -0
  70. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_requirements.py +0 -0
  71. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_utils_cli.py +0 -0
  72. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_utils_default_dir.py +0 -0
  73. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_utils_default_file.py +0 -0
  74. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_utils_package.py +0 -0
  75. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/test_utils_single_file.py +0 -0
  76. {fastapi_cli-0.0.25 → fastapi_cli-0.0.26}/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-cli
3
- Version: 0.0.25
3
+ Version: 0.0.26
4
4
  Summary: Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀
5
5
  Author-Email: =?utf-8?q?Sebasti=C3=A1n_Ram=C3=ADrez?= <tiangolo@gmail.com>
6
6
  License-Expression: MIT
@@ -38,7 +38,7 @@ dependencies = [
38
38
  "rich-toolkit >= 0.14.8",
39
39
  "tomli >= 2.0.0; python_version < '3.11'",
40
40
  ]
41
- version = "0.0.25"
41
+ version = "0.0.26"
42
42
 
43
43
  [project.optional-dependencies]
44
44
  standard = [
@@ -0,0 +1 @@
1
+ __version__ = "0.0.26"
@@ -5,6 +5,7 @@ from typing import Annotated, Any
5
5
  import typer
6
6
  from pydantic import ValidationError
7
7
  from rich import print
8
+ from rich.syntax import Syntax
8
9
  from rich.tree import Tree
9
10
 
10
11
  from fastapi_cli.config import FastAPIConfig
@@ -224,6 +225,24 @@ def _run(
224
225
  toolkit.print(f" • Module: {mod_source_desc}")
225
226
  toolkit.print(f" • App name: {app_source_desc}")
226
227
 
228
+ if import_data.module_config_source == "auto-discovery":
229
+ toolkit.print_line()
230
+ toolkit.print(
231
+ "You can configure an entrypoint in [blue]pyproject.toml[/] for this app with:",
232
+ tag="tip",
233
+ )
234
+ toolkit.print_line()
235
+ toolkit.print(
236
+ Syntax(
237
+ (
238
+ "[tool.fastapi]\n"
239
+ f'entrypoint = "{import_data.module_data.module_import_str}:{import_data.app_name}"'
240
+ ),
241
+ "toml",
242
+ theme="ansi_light",
243
+ )
244
+ )
245
+
227
246
  url = f"http://{host}:{port}"
228
247
  url_docs = f"{url}/docs"
229
248
 
@@ -38,6 +38,7 @@ def test_dev() -> None:
38
38
  assert "Configuration sources:" in result.output
39
39
  assert "Module: path CLI argument" in result.output
40
40
  assert "App name: auto-discovery" in result.output
41
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
41
42
  assert "Starting development server 🚀" in result.output
42
43
  assert "Server started at http://127.0.0.1:8000" in result.output
43
44
  assert "Documentation at http://127.0.0.1:8000/docs" in result.output
@@ -64,6 +65,9 @@ def test_dev_no_args_auto_discovery() -> None:
64
65
  assert "Using import string: main:app" in result.output
65
66
  assert "Configuration sources:" in result.output
66
67
  assert "Import string: auto-discovery" in result.output
68
+ assert "You can configure an entrypoint in pyproject.toml" in result.output
69
+ assert "[tool.fastapi]" in result.output
70
+ assert 'entrypoint = "main:app"' in result.output
67
71
 
68
72
 
69
73
  def test_dev_package() -> None:
@@ -88,6 +92,7 @@ def test_dev_package() -> None:
88
92
  assert "Using import string: nested_package.package:app" in result.output
89
93
  assert "Module: path CLI argument" in result.output
90
94
  assert "App name: auto-discovery" in result.output
95
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
91
96
  assert "Starting development server 🚀" in result.output
92
97
  assert "Server started at http://127.0.0.1:8000" in result.output
93
98
  assert "Documentation at http://127.0.0.1:8000/docs" in result.output
@@ -140,6 +145,7 @@ def test_dev_args() -> None:
140
145
  assert "Using import string: single_file_app:api" in result.output
141
146
  assert "Module: path CLI argument" in result.output
142
147
  assert "App name: --app CLI option" in result.output
148
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
143
149
  assert "Starting development server 🚀" in result.output
144
150
  assert "Server started at http://192.168.0.2:8080" in result.output
145
151
  assert "Documentation at http://192.168.0.2:8080/docs" in result.output
@@ -173,6 +179,7 @@ def test_dev_env_vars() -> None:
173
179
  assert "Using import string: single_file_app:app" in result.output
174
180
  assert "Module: path CLI argument" in result.output
175
181
  assert "App name: auto-discovery" in result.output
182
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
176
183
  assert "Starting development server 🚀" in result.output
177
184
  assert "Server started at http://127.0.0.1:8111" in result.output
178
185
  assert "Documentation at http://127.0.0.1:8111/docs" in result.output
@@ -213,6 +220,7 @@ def test_dev_env_vars_and_args() -> None:
213
220
  assert "Using import string: single_file_app:app" in result.output
214
221
  assert "Module: path CLI argument" in result.output
215
222
  assert "App name: auto-discovery" in result.output
223
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
216
224
  assert "Starting development server 🚀" in result.output
217
225
  assert "Server started at http://127.0.0.1:8080" in result.output
218
226
  assert "Documentation at http://127.0.0.1:8080/docs" in result.output
@@ -261,6 +269,7 @@ def test_run() -> None:
261
269
  assert "Using import string: single_file_app:app" in result.output
262
270
  assert "Module: path CLI argument" in result.output
263
271
  assert "App name: auto-discovery" in result.output
272
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
264
273
  assert "Starting production server 🚀" in result.output
265
274
  assert "Server started at http://0.0.0.0:8000" in result.output
266
275
  assert "Documentation at http://0.0.0.0:8000/docs" in result.output
@@ -338,6 +347,7 @@ def test_run_args() -> None:
338
347
  assert "Using import string: single_file_app:api" in result.output
339
348
  assert "Module: path CLI argument" in result.output
340
349
  assert "App name: --app CLI option" in result.output
350
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
341
351
  assert "Starting production server 🚀" in result.output
342
352
  assert "Server started at http://192.168.0.2:8080" in result.output
343
353
  assert "Documentation at http://192.168.0.2:8080/docs" in result.output
@@ -371,6 +381,7 @@ def test_run_env_vars() -> None:
371
381
  assert "Using import string: single_file_app:app" in result.output
372
382
  assert "Module: path CLI argument" in result.output
373
383
  assert "App name: auto-discovery" in result.output
384
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
374
385
  assert "Starting production server 🚀" in result.output
375
386
  assert "Server started at http://0.0.0.0:8111" in result.output
376
387
  assert "Documentation at http://0.0.0.0:8111/docs" in result.output
@@ -407,6 +418,7 @@ def test_run_env_vars_and_args() -> None:
407
418
  assert "Using import string: single_file_app:app" in result.output
408
419
  assert "Module: path CLI argument" in result.output
409
420
  assert "App name: auto-discovery" in result.output
421
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
410
422
  assert "Starting production server 🚀" in result.output
411
423
  assert "Server started at http://0.0.0.0:8080" in result.output
412
424
  assert "Documentation at http://0.0.0.0:8080/docs" in result.output
@@ -521,6 +533,7 @@ def test_dev_with_import_string() -> None:
521
533
  }
522
534
  assert "Using import string: single_file_app:api" in result.output
523
535
  assert "Import string: --entrypoint CLI option" in result.output
536
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
524
537
 
525
538
 
526
539
  def test_run_with_import_string() -> None:
@@ -544,6 +557,7 @@ def test_run_with_import_string() -> None:
544
557
  }
545
558
  assert "Using import string: single_file_app:app" in result.output
546
559
  assert "Import string: --entrypoint CLI option" in result.output
560
+ assert "You can configure an entrypoint in pyproject.toml" not in result.output
547
561
 
548
562
 
549
563
  def test_script() -> None:
@@ -1 +0,0 @@
1
- __version__ = "0.0.25"
File without changes
File without changes