fastapi-cli 0.0.31__tar.gz → 0.0.33__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.
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/PKG-INFO +8 -3
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/README.md +4 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/pyproject.toml +5 -3
- fastapi_cli-0.0.33/src/fastapi_cli/__init__.py +1 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/cli.py +3 -1
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/discover.py +1 -1
- fastapi_cli-0.0.33/tests/assets/environment_app.py +12 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_cli.py +48 -1
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_requirements.py +2 -2
- fastapi_cli-0.0.31/src/fastapi_cli/__init__.py +0 -1
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/LICENSE +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/scripts/add_latest_release_date.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/scripts/format.sh +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/scripts/lint.sh +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/scripts/prepare_release.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/scripts/test-cov-html.sh +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/scripts/test.sh +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/__main__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/config.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/exceptions.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/logging.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/py.typed +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/utils/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/src/fastapi_cli/utils/cli.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/broken_package/mod/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/broken_package/mod/app.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/broken_package/utils.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_api/api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app/api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app/app.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_api/app/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_api/app/api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_app/app/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_app/app/api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_app/app/app.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_main/app/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_main/app/api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_main/app/app.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_main/app/main.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_non_default/app/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_non_default/app/nondefault.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_main/api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_main/app.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_main/main.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/non_default/nonstandard.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/core/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/core/utils.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/mod/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/mod/api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/mod/app.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/mod/other.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/package/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/package/core/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/package/core/utils.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/package/mod/__init__.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/package/mod/api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/package/mod/app.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/package/mod/other.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/pyproject_config/another_module.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/pyproject_config/my_module.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/pyproject_config/pyproject.toml +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/single_file_api.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/single_file_app.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/single_file_other.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/conftest.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_cli_pyproject.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_discover.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_prepare_release.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_utils_cli.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_utils_default_dir.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_utils_default_file.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_utils_package.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/test_utils_single_file.py +0 -0
- {fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/utils.py +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastapi-cli
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.33
|
|
4
4
|
Summary: Run and manage FastAPI apps from the command line with FastAPI CLI. 🚀
|
|
5
|
-
Author-Email:
|
|
5
|
+
Author-Email: Sebastián Ramírez <tiangolo@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
License-File: LICENSE
|
|
8
8
|
Classifier: Intended Audience :: Information Technology
|
|
@@ -24,13 +24,14 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
24
24
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
25
|
Classifier: Programming Language :: Python :: 3.13
|
|
26
26
|
Classifier: Programming Language :: Python :: 3.14
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
27
28
|
Project-URL: Homepage, https://github.com/fastapi/fastapi-cli
|
|
28
29
|
Project-URL: Documentation, https://fastapi.tiangolo.com/fastapi-cli/
|
|
29
30
|
Project-URL: Repository, https://github.com/fastapi/fastapi-cli
|
|
30
31
|
Project-URL: Issues, https://github.com/fastapi/fastapi-cli/issues
|
|
31
32
|
Project-URL: Changelog, https://github.com/fastapi/fastapi-cli/blob/main/release-notes.md
|
|
32
33
|
Requires-Python: >=3.10
|
|
33
|
-
Requires-Dist: typer>=0.
|
|
34
|
+
Requires-Dist: typer>=0.26.1
|
|
34
35
|
Requires-Dist: uvicorn[standard]>=0.15.0
|
|
35
36
|
Requires-Dist: rich-toolkit>=0.14.8
|
|
36
37
|
Requires-Dist: tomli>=2.0.0; python_version < "3.11"
|
|
@@ -121,6 +122,10 @@ By default, it will have **auto-reload** enabled, so it will automatically reloa
|
|
|
121
122
|
|
|
122
123
|
By default it will listen on the IP address `127.0.0.1`, which is the IP for your machine to communicate with itself alone (`localhost`).
|
|
123
124
|
|
|
125
|
+
Before importing your app, `fastapi dev` sets the `FASTAPI_ENV` environment variable to `development`. If `FASTAPI_ENV` is already set, its existing value is preserved. This lets app startup code choose development-friendly behavior while allowing you to provide an app-specific environment such as `staging`.
|
|
126
|
+
|
|
127
|
+
The conventional `FASTAPI_ENV` values are `development` and `production`. `fastapi run` currently leaves `FASTAPI_ENV` unchanged, so set it explicitly if your app needs to detect production mode.
|
|
128
|
+
|
|
124
129
|
## `fastapi run`
|
|
125
130
|
|
|
126
131
|
When you run `fastapi run`, it will run on production mode by default.
|
|
@@ -76,6 +76,10 @@ By default, it will have **auto-reload** enabled, so it will automatically reloa
|
|
|
76
76
|
|
|
77
77
|
By default it will listen on the IP address `127.0.0.1`, which is the IP for your machine to communicate with itself alone (`localhost`).
|
|
78
78
|
|
|
79
|
+
Before importing your app, `fastapi dev` sets the `FASTAPI_ENV` environment variable to `development`. If `FASTAPI_ENV` is already set, its existing value is preserved. This lets app startup code choose development-friendly behavior while allowing you to provide an app-specific environment such as `staging`.
|
|
80
|
+
|
|
81
|
+
The conventional `FASTAPI_ENV` values are `development` and `production`. `fastapi run` currently leaves `FASTAPI_ENV` unchanged, so set it explicitly if your app needs to detect production mode.
|
|
82
|
+
|
|
79
83
|
## `fastapi run`
|
|
80
84
|
|
|
81
85
|
When you run `fastapi run`, it will run on production mode by default.
|
|
@@ -31,14 +31,15 @@ classifiers = [
|
|
|
31
31
|
"Programming Language :: Python :: 3.12",
|
|
32
32
|
"Programming Language :: Python :: 3.13",
|
|
33
33
|
"Programming Language :: Python :: 3.14",
|
|
34
|
+
"Programming Language :: Python :: 3.15",
|
|
34
35
|
]
|
|
35
36
|
dependencies = [
|
|
36
|
-
"typer >= 0.
|
|
37
|
+
"typer >= 0.26.1",
|
|
37
38
|
"uvicorn[standard] >= 0.15.0",
|
|
38
39
|
"rich-toolkit >= 0.14.8",
|
|
39
40
|
"tomli >= 2.0.0; python_version < '3.11'",
|
|
40
41
|
]
|
|
41
|
-
version = "0.0.
|
|
42
|
+
version = "0.0.33"
|
|
42
43
|
|
|
43
44
|
[project.optional-dependencies]
|
|
44
45
|
standard = [
|
|
@@ -71,7 +72,7 @@ github-actions = [
|
|
|
71
72
|
tests = [
|
|
72
73
|
"coverage[toml]>=6.2,<8.0",
|
|
73
74
|
"fastapi>=0.128.0",
|
|
74
|
-
"mypy==2.
|
|
75
|
+
"mypy==2.4.0",
|
|
75
76
|
"pytest>=7.4.0,<10.0.0",
|
|
76
77
|
"ruff>=0.15.15",
|
|
77
78
|
"uvicorn>=0.39.0",
|
|
@@ -106,6 +107,7 @@ xfail_strict = true
|
|
|
106
107
|
junit_family = "xunit2"
|
|
107
108
|
|
|
108
109
|
[tool.coverage.run]
|
|
110
|
+
core = "ctrace"
|
|
109
111
|
parallel = true
|
|
110
112
|
data_file = "coverage/.coverage"
|
|
111
113
|
source = [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.0.33"
|
|
@@ -45,7 +45,7 @@ SOURCE_DESCRIPTIONS: dict[ModuleConfigSource | AppConfigSource, str] = {
|
|
|
45
45
|
try:
|
|
46
46
|
import uvicorn
|
|
47
47
|
except ImportError: # pragma: no cover
|
|
48
|
-
uvicorn = None # type: ignore[assignment]
|
|
48
|
+
uvicorn = None # type: ignore[assignment]
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
try:
|
|
@@ -399,6 +399,8 @@ def dev(
|
|
|
399
399
|
|
|
400
400
|
Otherwise, it uses the first [bold]FastAPI[/bold] app found in the imported module or package.
|
|
401
401
|
"""
|
|
402
|
+
os.environ.setdefault("FASTAPI_ENV", "development")
|
|
403
|
+
|
|
402
404
|
_run(
|
|
403
405
|
path=path,
|
|
404
406
|
host=host,
|
|
@@ -12,7 +12,7 @@ logger = getLogger(__name__)
|
|
|
12
12
|
try:
|
|
13
13
|
from fastapi import FastAPI
|
|
14
14
|
except ImportError: # pragma: no cover
|
|
15
|
-
FastAPI = None # type: ignore[misc, assignment]
|
|
15
|
+
FastAPI = None # type: ignore[misc, assignment]
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
def get_default_path() -> Path:
|
|
@@ -6,7 +6,10 @@ from unittest.mock import patch
|
|
|
6
6
|
|
|
7
7
|
import pytest
|
|
8
8
|
import uvicorn
|
|
9
|
+
from fastapi.testclient import TestClient
|
|
10
|
+
from httpx import Response
|
|
9
11
|
from typer.testing import CliRunner
|
|
12
|
+
from uvicorn.importer import import_from_string
|
|
10
13
|
|
|
11
14
|
from fastapi_cli.cli import app
|
|
12
15
|
from fastapi_cli.utils.cli import get_uvicorn_log_config
|
|
@@ -18,7 +21,8 @@ assets_path = Path(__file__).parent / "assets"
|
|
|
18
21
|
|
|
19
22
|
|
|
20
23
|
@pytest.fixture(autouse=True)
|
|
21
|
-
def
|
|
24
|
+
def isolate_cli_environment(monkeypatch: pytest.MonkeyPatch) -> None:
|
|
25
|
+
monkeypatch.delenv("FASTAPI_ENV", raising=False)
|
|
22
26
|
monkeypatch.setattr("fastapi_cli.cli.should_use_rich_logs", lambda: True)
|
|
23
27
|
|
|
24
28
|
|
|
@@ -53,6 +57,49 @@ def test_dev() -> None:
|
|
|
53
57
|
assert "Configuration sources:" not in result.output
|
|
54
58
|
|
|
55
59
|
|
|
60
|
+
def _get_fastapi_env_response(*, command: str, fastapi_env: str | None) -> Response:
|
|
61
|
+
module_name = "environment_app"
|
|
62
|
+
sys.modules.pop(module_name, None)
|
|
63
|
+
|
|
64
|
+
try:
|
|
65
|
+
with changing_dir(assets_path):
|
|
66
|
+
with patch.object(uvicorn, "run") as mock_run:
|
|
67
|
+
result = runner.invoke(
|
|
68
|
+
app,
|
|
69
|
+
[command, f"{module_name}.py"],
|
|
70
|
+
env={"FASTAPI_ENV": fastapi_env},
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
assert result.exit_code == 0, result.output
|
|
74
|
+
assert mock_run.call_args
|
|
75
|
+
imported_app = import_from_string(mock_run.call_args.kwargs["app"])
|
|
76
|
+
with TestClient(imported_app) as test_client:
|
|
77
|
+
return test_client.get("/fastapi-env")
|
|
78
|
+
finally:
|
|
79
|
+
sys.modules.pop(module_name, None)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def test_dev_sets_fastapi_env_before_app_import() -> None:
|
|
83
|
+
response = _get_fastapi_env_response(command="dev", fastapi_env=None)
|
|
84
|
+
|
|
85
|
+
assert response.status_code == 200
|
|
86
|
+
assert response.json() == {"fastapi_env": "development"}
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def test_dev_does_not_override_existing_fastapi_env() -> None:
|
|
90
|
+
response = _get_fastapi_env_response(command="dev", fastapi_env="chicken")
|
|
91
|
+
|
|
92
|
+
assert response.status_code == 200
|
|
93
|
+
assert response.json() == {"fastapi_env": "chicken"}
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def test_run_does_not_set_fastapi_env() -> None:
|
|
97
|
+
response = _get_fastapi_env_response(command="run", fastapi_env=None)
|
|
98
|
+
|
|
99
|
+
assert response.status_code == 200
|
|
100
|
+
assert response.json() == {"fastapi_env": None}
|
|
101
|
+
|
|
102
|
+
|
|
56
103
|
def test_run_uses_uvicorn_default_log_config_without_rich_logs(
|
|
57
104
|
monkeypatch: pytest.MonkeyPatch,
|
|
58
105
|
) -> None:
|
|
@@ -18,7 +18,7 @@ def test_no_uvicorn() -> None:
|
|
|
18
18
|
|
|
19
19
|
import fastapi_cli.cli
|
|
20
20
|
|
|
21
|
-
fastapi_cli.cli.uvicorn = None # type: ignore[attr-defined, assignment]
|
|
21
|
+
fastapi_cli.cli.uvicorn = None # type: ignore[attr-defined, assignment]
|
|
22
22
|
|
|
23
23
|
with changing_dir(assets_path):
|
|
24
24
|
result = runner.invoke(fastapi_cli.cli.app, ["dev", "single_file_app.py"])
|
|
@@ -37,7 +37,7 @@ def test_no_fastapi() -> None:
|
|
|
37
37
|
|
|
38
38
|
import fastapi_cli.discover
|
|
39
39
|
|
|
40
|
-
fastapi_cli.discover.FastAPI = None # type: ignore[attr-defined, assignment]
|
|
40
|
+
fastapi_cli.discover.FastAPI = None # type: ignore[attr-defined, assignment]
|
|
41
41
|
with changing_dir(assets_path):
|
|
42
42
|
with pytest.raises(FastAPICLIException) as exc_info:
|
|
43
43
|
get_import_data(path=Path("single_file_app.py"))
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.0.31"
|
|
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
|
|
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
|
{fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_api/app/api.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_app/app/api.py
RENAMED
|
File without changes
|
{fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_app/app/app.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_main/app/api.py
RENAMED
|
File without changes
|
{fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/default_app_dir_main/app/app.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/default_files/non_default/nonstandard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/core/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastapi_cli-0.0.31 → fastapi_cli-0.0.33}/tests/assets/nested_package/package/mod/__init__.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|