Skip to content

Commit

Permalink
chore: Move imports to type-checking blocks where possible in `meltan…
Browse files Browse the repository at this point in the history
…o.cli` (meltano#7350)
  • Loading branch information
edgarrmondragon committed Feb 27, 2023
1 parent 092651b commit 5672f35
Show file tree
Hide file tree
Showing 17 changed files with 94 additions and 34 deletions.
10 changes: 7 additions & 3 deletions src/meltano/cli/add.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

from __future__ import annotations

import typing as t

import click

from meltano.cli import cli
Expand All @@ -15,13 +17,15 @@
install_plugins,
)
from meltano.core.plugin import PluginRef, PluginType
from meltano.core.plugin.project_plugin import ProjectPlugin
from meltano.core.plugin_install_service import PluginInstallReason
from meltano.core.project import Project
from meltano.core.project_add_service import ProjectAddService
from meltano.core.tracking import Tracker
from meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext

if t.TYPE_CHECKING:
from meltano.core.plugin.project_plugin import ProjectPlugin
from meltano.core.project import Project
from meltano.core.tracking import Tracker


@cli.command( # noqa: WPS238
cls=PartialInstrumentedCmd,
Expand Down
7 changes: 5 additions & 2 deletions src/meltano/cli/compile.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from __future__ import annotations

import json
import typing as t
from pathlib import Path

import click
Expand All @@ -13,10 +14,12 @@
from meltano.core.environment import Environment
from meltano.core.environment_service import EnvironmentService
from meltano.core.manifest import Manifest
from meltano.core.project import Project
from meltano.core.tracking import Tracker
from meltano.core.tracking.contexts import CliEvent

if t.TYPE_CHECKING:
from meltano.core.project import Project
from meltano.core.tracking import Tracker


@cli.command(cls=InstrumentedCmd, short_help="Compile a Meltano manifest. (beta)")
@click.option(
Expand Down
4 changes: 3 additions & 1 deletion src/meltano/cli/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,13 @@
from meltano.core.plugin.settings_service import PluginSettingsService
from meltano.core.plugin_invoker import PluginInvoker
from meltano.core.plugin_test_service import PluginTestServiceFactory
from meltano.core.project import Project
from meltano.core.settings_service import SettingValueStore
from meltano.core.settings_store import StoreNotSupportedError
from meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext

if t.TYPE_CHECKING:
from meltano.core.project import Project

logger = logging.getLogger(__name__)


Expand Down
6 changes: 5 additions & 1 deletion src/meltano/cli/discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,17 @@

from __future__ import annotations

import typing as t

import click

from meltano.cli import cli
from meltano.cli.params import pass_project
from meltano.cli.utils import InstrumentedCmd
from meltano.core.plugin import PluginType
from meltano.core.project import Project

if t.TYPE_CHECKING:
from meltano.core.project import Project


@cli.command(
Expand Down
10 changes: 7 additions & 3 deletions src/meltano/cli/elt.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import datetime
import logging
import platform
import typing as t
from contextlib import asynccontextmanager, nullcontext

import click
import structlog
from structlog import stdlib as structlog_stdlib

from meltano.cli import cli
Expand All @@ -21,14 +21,18 @@
from meltano.core.logging import JobLoggingService, OutputLogger
from meltano.core.plugin import PluginType
from meltano.core.plugin.error import PluginNotFoundError
from meltano.core.project import Project
from meltano.core.runner import RunnerError
from meltano.core.runner.dbt import DbtRunner
from meltano.core.runner.singer import SingerRunner
from meltano.core.tracking import Tracker
from meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext
from meltano.core.utils import click_run_async

if t.TYPE_CHECKING:
import structlog

from meltano.core.project import Project
from meltano.core.tracking import Tracker

DUMPABLES = {
"catalog": (PluginType.EXTRACTORS, "catalog"),
"state": (PluginType.EXTRACTORS, "state"),
Expand Down
6 changes: 5 additions & 1 deletion src/meltano/cli/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@

from __future__ import annotations

import typing as t

import click

from meltano.cli import cli
from meltano.cli.params import pass_project
from meltano.cli.utils import InstrumentedGroup, PartialInstrumentedCmd
from meltano.core.environment_service import EnvironmentService
from meltano.core.project import Project
from meltano.core.tracking.contexts import CliEvent

if t.TYPE_CHECKING:
from meltano.core.project import Project

ENVIRONMENT_SERVICE_KEY = "environment_service"


Expand Down
8 changes: 6 additions & 2 deletions src/meltano/cli/install.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@

from __future__ import annotations

import typing as t

import click

from meltano.cli import cli
from meltano.cli.params import pass_project
from meltano.cli.utils import CliError, PartialInstrumentedCmd, install_plugins
from meltano.core.plugin import PluginType
from meltano.core.project import Project
from meltano.core.tracking import Tracker
from meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext

if t.TYPE_CHECKING:
from meltano.core.project import Project
from meltano.core.tracking import Tracker


@cli.command(cls=PartialInstrumentedCmd, short_help="Install project dependencies.")
@click.argument(
Expand Down
5 changes: 4 additions & 1 deletion src/meltano/cli/interactive/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from __future__ import annotations

import typing as t
from contextlib import suppress

# NOTE: Importing the readline module enables the use of arrow
Expand All @@ -21,7 +22,6 @@
from meltano.cli.interactive.utils import InteractionStatus
from meltano.cli.utils import CliError
from meltano.core.environment_service import EnvironmentService
from meltano.core.project import Project
from meltano.core.settings_service import (
REDACTED_VALUE,
SettingKind,
Expand All @@ -31,6 +31,9 @@
from meltano.core.settings_store import StoreNotSupportedError
from meltano.core.tracking.contexts import CliEvent

if t.TYPE_CHECKING:
from meltano.core.project import Project

PLUGIN_COLOR = "magenta"
ENVIRONMENT_COLOR = "orange1"
SETTING_COLOR = "blue1"
Expand Down
10 changes: 7 additions & 3 deletions src/meltano/cli/invoke.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
import asyncio
import logging
import sys
import typing as t

import click
from sqlalchemy.orm import sessionmaker

from meltano.cli import cli
from meltano.cli.params import pass_project
Expand All @@ -26,10 +26,14 @@
UnknownCommandError,
invoker_factory,
)
from meltano.core.project import Project
from meltano.core.tracking import Tracker
from meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext

if t.TYPE_CHECKING:
from sqlalchemy.orm import sessionmaker

from meltano.core.project import Project
from meltano.core.tracking import Tracker

logger = logging.getLogger(__name__)


Expand Down
7 changes: 5 additions & 2 deletions src/meltano/cli/job.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from __future__ import annotations

import json
import typing as t

import click
import structlog
Expand All @@ -15,16 +16,18 @@
PartialInstrumentedCmd,
)
from meltano.core.block.parser import BlockParser, validate_block_sets
from meltano.core.project import Project
from meltano.core.task_sets import InvalidTasksError, TaskSets, tasks_from_yaml_str
from meltano.core.task_sets_service import (
JobAlreadyExistsError,
JobNotFoundError,
TaskSetsService,
)
from meltano.core.tracking import Tracker
from meltano.core.tracking.contexts import CliEvent, PluginsTrackingContext

if t.TYPE_CHECKING:
from meltano.core.project import Project
from meltano.core.tracking import Tracker

logger = structlog.getLogger(__name__)


Expand Down
6 changes: 5 additions & 1 deletion src/meltano/cli/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

from __future__ import annotations

import typing as t

import click
import structlog

Expand All @@ -12,14 +14,16 @@
from meltano.core.block.parser import BlockParser, validate_block_sets
from meltano.core.block.plugin_command import PluginCommandBlock
from meltano.core.logging.utils import change_console_log_level
from meltano.core.project import Project
from meltano.core.project_settings_service import ProjectSettingsService
from meltano.core.runner import RunnerError
from meltano.core.tracking import BlockEvents, Tracker
from meltano.core.tracking.contexts import CliEvent
from meltano.core.tracking.contexts.plugins import PluginsTrackingContext
from meltano.core.utils import click_run_async

if t.TYPE_CHECKING:
from meltano.core.project import Project

logger = structlog.getLogger(__name__)


Expand Down
12 changes: 8 additions & 4 deletions src/meltano/cli/schedule.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

import json
import sys
import typing as t

import click
from sqlalchemy.orm import Session

from meltano.cli import cli
from meltano.cli.params import pass_project
Expand All @@ -17,13 +17,17 @@
)
from meltano.core.db import project_engine
from meltano.core.job.stale_job_failer import fail_stale_jobs
from meltano.core.project import Project
from meltano.core.schedule import Schedule
from meltano.core.schedule_service import ScheduleAlreadyExistsError, ScheduleService
from meltano.core.task_sets import TaskSets
from meltano.core.task_sets_service import TaskSetsService
from meltano.core.utils import coerce_datetime

if t.TYPE_CHECKING:
from sqlalchemy.orm import Session

from meltano.core.project import Project
from meltano.core.schedule import Schedule
from meltano.core.task_sets import TaskSets


@cli.group(
cls=InstrumentedDefaultGroup,
Expand Down
5 changes: 4 additions & 1 deletion src/meltano/cli/select.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Extractor selection management CLI."""
from __future__ import annotations

import typing as t
from contextlib import closing

import click
Expand All @@ -11,10 +12,12 @@
from meltano.core.db import project_engine
from meltano.core.plugin.error import PluginExecutionError
from meltano.core.plugin.singer.catalog import SelectionType, SelectPattern
from meltano.core.project import Project
from meltano.core.select_service import SelectService
from meltano.core.utils import click_run_async

if t.TYPE_CHECKING:
from meltano.core.project import Project


def selection_color(selection):
"""Return the appropriate colour for given SelectionType."""
Expand Down
5 changes: 4 additions & 1 deletion src/meltano/cli/state.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

import json
import re
import typing as t
from datetime import datetime as dt
from functools import partial, reduce, wraps
from operator import xor
Expand All @@ -16,9 +17,11 @@
from meltano.core.block.parser import BlockParser
from meltano.core.db import project_engine
from meltano.core.job import Payload
from meltano.core.project import Project
from meltano.core.state_service import InvalidJobStateError, StateService

if t.TYPE_CHECKING:
from meltano.core.project import Project

STATE_SERVICE_KEY = "state_service"

logger = structlog.getLogger(__name__)
Expand Down
5 changes: 4 additions & 1 deletion src/meltano/cli/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,22 @@
import os
import secrets
import signal
import typing as t

import click

from meltano.api.workers import APIWorker, UIAvailableWorker
from meltano.cli import cli
from meltano.cli.params import pass_project
from meltano.cli.utils import CliError, InstrumentedCmd, InstrumentedDefaultGroup
from meltano.core.project import Project
from meltano.core.project_settings_service import (
ProjectSettingsService,
SettingValueStore,
)

if t.TYPE_CHECKING:
from meltano.core.project import Project

logger = logging.getLogger(__name__)


Expand Down

0 comments on commit 5672f35

Please sign in to comment.