refactor: annotation with __future__.annotations
Adds `from __future__ import annotations` to the top of every module,
right below the module's docstring. Replaces any usages of t.List,
t.Dict, t.Set, t.Tuple, and t.Type with their built-in equivalents:
list, dict, set, tuple, and type. Ensures that make test still passes
under Python 3.7, 3.8 and 3.9.
2023-01-17 18:57:23 +00:00
|
|
|
from __future__ import annotations
|
2020-01-17 08:41:54 +00:00
|
|
|
|
2023-05-02 08:49:19 +00:00
|
|
|
import typing as t
|
|
|
|
|
2019-01-22 20:25:04 +00:00
|
|
|
import click
|
|
|
|
|
2022-04-21 14:24:34 +00:00
|
|
|
from tutor import env as tutor_env
|
2023-04-28 19:14:22 +00:00
|
|
|
from tutor import hooks
|
2022-04-21 14:24:34 +00:00
|
|
|
from tutor.commands import compose
|
|
|
|
from tutor.types import Config, get_typed
|
2019-01-22 20:25:04 +00:00
|
|
|
|
2020-11-07 16:48:20 +00:00
|
|
|
|
2022-10-19 15:46:31 +00:00
|
|
|
class DevTaskRunner(compose.ComposeTaskRunner):
|
2021-09-27 10:32:28 +00:00
|
|
|
def __init__(self, root: str, config: Config):
|
2021-09-27 09:48:17 +00:00
|
|
|
"""
|
2021-09-27 10:32:28 +00:00
|
|
|
Load docker-compose files from dev/ and local/
|
2021-09-27 09:48:17 +00:00
|
|
|
"""
|
2021-09-27 10:32:28 +00:00
|
|
|
super().__init__(root, config)
|
|
|
|
self.project_name = get_typed(self.config, "DEV_PROJECT_NAME", str)
|
|
|
|
self.docker_compose_files += [
|
|
|
|
tutor_env.pathjoin(self.root, "local", "docker-compose.yml"),
|
|
|
|
tutor_env.pathjoin(self.root, "dev", "docker-compose.yml"),
|
|
|
|
tutor_env.pathjoin(self.root, "local", "docker-compose.override.yml"),
|
|
|
|
tutor_env.pathjoin(self.root, "dev", "docker-compose.override.yml"),
|
|
|
|
]
|
|
|
|
self.docker_compose_job_files += [
|
|
|
|
tutor_env.pathjoin(self.root, "local", "docker-compose.jobs.yml"),
|
|
|
|
tutor_env.pathjoin(self.root, "dev", "docker-compose.jobs.yml"),
|
|
|
|
tutor_env.pathjoin(self.root, "local", "docker-compose.jobs.override.yml"),
|
|
|
|
tutor_env.pathjoin(self.root, "dev", "docker-compose.jobs.override.yml"),
|
|
|
|
]
|
2021-09-27 09:48:17 +00:00
|
|
|
|
|
|
|
|
|
|
|
class DevContext(compose.BaseComposeContext):
|
2023-05-02 08:49:19 +00:00
|
|
|
NAME = "dev"
|
|
|
|
|
2022-10-19 15:46:31 +00:00
|
|
|
def job_runner(self, config: Config) -> DevTaskRunner:
|
|
|
|
return DevTaskRunner(self.root, config)
|
2019-01-22 20:25:04 +00:00
|
|
|
|
2020-01-08 13:36:51 +00:00
|
|
|
|
2020-03-16 21:27:04 +00:00
|
|
|
@click.group(help="Run Open edX locally with development settings")
|
2021-09-27 09:48:17 +00:00
|
|
|
@click.pass_context
|
|
|
|
def dev(context: click.Context) -> None:
|
|
|
|
context.obj = DevContext(context.obj.root)
|
2019-01-22 20:25:04 +00:00
|
|
|
|
2019-07-10 07:00:44 +00:00
|
|
|
|
2022-04-21 14:24:34 +00:00
|
|
|
@hooks.Actions.COMPOSE_PROJECT_STARTED.add()
|
|
|
|
def _stop_on_local_start(root: str, config: Config, project_name: str) -> None:
|
|
|
|
"""
|
|
|
|
Stop the dev platform as soon as a platform with a different project name is
|
|
|
|
started.
|
|
|
|
"""
|
2022-10-19 15:46:31 +00:00
|
|
|
runner = DevTaskRunner(root, config)
|
2022-04-21 14:24:34 +00:00
|
|
|
if project_name != runner.project_name:
|
|
|
|
runner.docker_compose("stop")
|
|
|
|
|
|
|
|
|
2023-05-02 08:49:19 +00:00
|
|
|
@hooks.Filters.IMAGES_BUILD_REQUIRED.add()
|
|
|
|
def _build_openedx_dev_on_launch(
|
|
|
|
image_names: list[str], context_name: t.Literal["local", "dev"]
|
|
|
|
) -> list[str]:
|
|
|
|
if context_name == "dev":
|
|
|
|
image_names.append("openedx-dev")
|
|
|
|
return image_names
|
|
|
|
|
|
|
|
|
2020-01-08 18:38:13 +00:00
|
|
|
compose.add_commands(dev)
|