Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions nb_cli/__init__.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import sys
from importlib.metadata import EntryPoint, version, entry_points

from cashews import Cache

from .i18n import _ as _

if sys.version_info < (3, 10):
from importlib_metadata import EntryPoint, version, entry_points
else:
from importlib.metadata import EntryPoint, version, entry_points

try:
__version__ = version("nb-cli")
except Exception:
Expand Down
8 changes: 3 additions & 5 deletions nb_cli/cli/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from typing import cast
from pathlib import Path
from typing import Optional, cast

import click
from noneprompt import Choice, ListPrompt, ConfirmPrompt, CancelledError
Expand Down Expand Up @@ -33,14 +33,12 @@ def back_():


def _set_global_working_dir(
ctx: click.Context, param: click.Option, value: Optional[Path]
ctx: click.Context, param: click.Option, value: Path | None
):
ConfigManager._global_working_dir = value


def _set_global_python_path(
ctx: click.Context, param: click.Option, value: Optional[str]
):
def _set_global_python_path(ctx: click.Context, param: click.Option, value: str | None):
ConfigManager._global_python_path = value


Expand Down
20 changes: 10 additions & 10 deletions nb_cli/cli/commands/adapter.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from typing import cast
from pathlib import Path
from typing import Optional, cast

import click
from noneprompt import Choice, ListPrompt, InputPrompt, CancelledError
Expand Down Expand Up @@ -105,7 +105,7 @@ async def list_(include_unpublished: bool = False):
)
@click.argument("name", nargs=1, default=None)
@run_async
async def search(name: Optional[str], include_unpublished: bool = False):
async def search(name: str | None, include_unpublished: bool = False):
if name is None:
name = await InputPrompt(_("Adapter name to search:")).prompt_async(
style=CLI_DEFAULT_STYLE
Expand Down Expand Up @@ -138,8 +138,8 @@ async def search(name: Optional[str], include_unpublished: bool = False):
async def install(
ctx: click.Context,
no_restrict_version: bool,
name: Optional[str],
pip_args: Optional[list[str]],
name: str | None,
pip_args: list[str] | None,
include_unpublished: bool = False,
):
try:
Expand Down Expand Up @@ -208,8 +208,8 @@ async def install(
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def update(
name: Optional[str],
pip_args: Optional[list[str]],
name: str | None,
pip_args: list[str] | None,
include_unpublished: bool = False,
):
try:
Expand Down Expand Up @@ -258,7 +258,7 @@ async def update(
@click.argument("name", nargs=1, default=None)
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
async def uninstall(name: str | None, pip_args: list[str] | None):
try:
adapter = await find_exact_package(
_("Adapter name to uninstall:"),
Expand Down Expand Up @@ -300,9 +300,9 @@ async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
@run_async
async def create(
ctx: click.Context,
name: Optional[str],
output_dir: Optional[str],
template: Optional[str],
name: str | None,
output_dir: str | None,
template: str | None,
):
if name is None:
try:
Expand Down
14 changes: 7 additions & 7 deletions nb_cli/cli/commands/driver.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Optional, cast
from typing import cast

import click
from noneprompt import Choice, ListPrompt, InputPrompt, CancelledError
Expand Down Expand Up @@ -103,7 +103,7 @@ async def list_(include_unpublished: bool = False):
)
@click.argument("name", nargs=1, default=None)
@run_async
async def search(name: Optional[str], include_unpublished: bool = False):
async def search(name: str | None, include_unpublished: bool = False):
if name is None:
name = await InputPrompt(_("Driver name to search:")).prompt_async(
style=CLI_DEFAULT_STYLE
Expand All @@ -130,8 +130,8 @@ async def search(name: Optional[str], include_unpublished: bool = False):
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def install(
name: Optional[str],
pip_args: Optional[list[str]],
name: str | None,
pip_args: list[str] | None,
include_unpublished: bool = False,
):
try:
Expand Down Expand Up @@ -187,8 +187,8 @@ async def install(
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def update(
name: Optional[str],
pip_args: Optional[list[str]],
name: str | None,
pip_args: list[str] | None,
include_unpublished: bool = False,
):
try:
Expand Down Expand Up @@ -238,7 +238,7 @@ async def update(
@click.argument("name", nargs=1, default=None)
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
async def uninstall(name: str | None, pip_args: list[str] | None):
try:
driver = await find_exact_package(
_("Driver name to uninstall:"),
Expand Down
22 changes: 11 additions & 11 deletions nb_cli/cli/commands/plugin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from typing import cast
from pathlib import Path
from typing import Optional, cast

import click
from noneprompt import Choice, ListPrompt, InputPrompt, ConfirmPrompt, CancelledError
Expand Down Expand Up @@ -105,7 +105,7 @@ async def list_(include_unpublished: bool = False):
)
@click.argument("name", nargs=1, required=False, default=None)
@run_async
async def search(name: Optional[str], include_unpublished: bool = False):
async def search(name: str | None, include_unpublished: bool = False):
if name is None:
name = await InputPrompt(_("Plugin name to search:")).prompt_async(
style=CLI_DEFAULT_STYLE
Expand Down Expand Up @@ -138,8 +138,8 @@ async def search(name: Optional[str], include_unpublished: bool = False):
async def install(
ctx: click.Context,
no_restrict_version: bool,
name: Optional[str],
pip_args: Optional[list[str]],
name: str | None,
pip_args: list[str] | None,
include_unpublished: bool = False,
):
try:
Expand Down Expand Up @@ -208,8 +208,8 @@ async def install(
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def update(
name: Optional[str],
pip_args: Optional[list[str]],
name: str | None,
pip_args: list[str] | None,
include_unpublished: bool = False,
):
try:
Expand Down Expand Up @@ -258,7 +258,7 @@ async def update(
@click.argument("name", nargs=1, required=False, default=None)
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
async def uninstall(name: str | None, pip_args: list[str] | None):
try:
plugin = await find_exact_package(
_("Plugin name to uninstall:"),
Expand Down Expand Up @@ -301,10 +301,10 @@ async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
@run_async
async def create(
ctx: click.Context,
name: Optional[str],
sub_plugin: Optional[bool],
output_dir: Optional[str],
template: Optional[str],
name: str | None,
sub_plugin: bool | None,
output_dir: str | None,
template: str | None,
):
if name is None:
try:
Expand Down
19 changes: 9 additions & 10 deletions nb_cli/cli/commands/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
import sys
import json
import shlex
from typing import Any
from pathlib import Path
from logging import Logger
from functools import partial
from typing import Any, Optional
from dataclasses import field, dataclass

import click
Expand Down Expand Up @@ -51,8 +51,7 @@
"simple": _("simple (for plugin developer)"),
}

if sys.version_info >= (3, 10):
BLACKLISTED_PROJECT_NAME.update(sys.stdlib_module_names)
BLACKLISTED_PROJECT_NAME.update(sys.stdlib_module_names)


@dataclass
Expand Down Expand Up @@ -258,10 +257,10 @@ async def prompt_simple_context(context: ProjectContext) -> ProjectContext:
@run_async
async def create(
ctx: click.Context,
output_dir: Optional[str],
template: Optional[str],
python_interpreter: Optional[str],
pip_args: Optional[list[str]],
output_dir: str | None,
template: str | None,
python_interpreter: str | None,
pip_args: list[str] | None,
):
if not template:
templates = list_project_templates()
Expand Down Expand Up @@ -438,9 +437,9 @@ async def generate(file: str):
async def run(
file: str,
reload: bool,
reload_dirs: Optional[list[str]],
reload_includes: Optional[list[str]],
reload_excludes: Optional[list[str]],
reload_dirs: list[str] | None,
reload_includes: list[str] | None,
reload_excludes: list[str] | None,
reload_delay: float,
):
if reload:
Expand Down
10 changes: 5 additions & 5 deletions nb_cli/cli/commands/self.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import sys
from typing import Optional, cast
from typing import cast

import click
from noneprompt import Choice, ListPrompt, InputPrompt, CancelledError
Expand Down Expand Up @@ -72,7 +72,7 @@ async def self(ctx: click.Context):
@click.argument("name", nargs=1, required=False, default=None)
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def install(name: Optional[str], pip_args: Optional[list[str]]):
async def install(name: str | None, pip_args: list[str] | None):
if name is None:
try:
name = await InputPrompt(
Expand All @@ -90,7 +90,7 @@ async def install(name: Optional[str], pip_args: Optional[list[str]]):
)
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def update(pip_args: Optional[list[str]]):
async def update(pip_args: list[str] | None):
proc = await call_pip_update("nb-cli", pip_args, python_path=sys.executable)
await proc.wait()

Expand All @@ -103,7 +103,7 @@ async def update(pip_args: Optional[list[str]]):
@click.argument("name", nargs=1, required=False, default=None)
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
async def uninstall(name: str | None, pip_args: list[str] | None):
if name is None:
try:
name = await InputPrompt(
Expand All @@ -123,7 +123,7 @@ async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
)
@click.argument("pip_args", nargs=-1, default=None)
@run_async
async def list_(pip_args: Optional[list[str]]):
async def list_(pip_args: list[str] | None):
proc = await call_pip_list(pip_args, python_path=sys.executable)
await proc.wait()

Expand Down
11 changes: 5 additions & 6 deletions nb_cli/cli/customize.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from typing import Optional
from functools import partial
from collections import Counter

Expand All @@ -14,7 +13,7 @@
class ClickAliasedCommand(click.Command):
def __init__(self, *args, **kwargs) -> None:
aliases = kwargs.pop("aliases", None)
self._aliases: Optional[list[str]] = aliases
self._aliases: list[str] | None = aliases
super().__init__(*args, **kwargs)


Expand All @@ -29,7 +28,7 @@ def command(self, *args, **kwargs):
return super().command(*args, cls=cls, **kwargs)

def group(self, *args, **kwargs):
aliases: Optional[list[str]] = kwargs.pop("aliases", None)
aliases: list[str] | None = kwargs.pop("aliases", None)
decorator = super().group(*args, **kwargs)
if not aliases:
return decorator
Expand All @@ -50,8 +49,8 @@ def add_aliases(self, cmd_name: str, aliases: list[str]) -> None:
def resolve_alias(self, cmd_name):
return self._aliases[cmd_name] if cmd_name in self._aliases else cmd_name

def add_command(self, cmd: click.Command, name: Optional[str] = None) -> None:
aliases: Optional[list[str]] = getattr(cmd, "_aliases", None)
def add_command(self, cmd: click.Command, name: str | None = None) -> None:
aliases: list[str] | None = getattr(cmd, "_aliases", None)
if aliases and isinstance(cmd, ClickAliasedCommand) and cmd.name:
self.add_aliases(cmd.name, aliases)
return super().add_command(cmd, name=name)
Expand Down Expand Up @@ -142,7 +141,7 @@ async def _load_scripts(self, ctx: click.Context) -> list[click.Command]:
)
return [self._build_script_command(script) for script in scripts]

def get_command(self, ctx: click.Context, cmd_name: str) -> Optional[click.Command]:
def get_command(self, ctx: click.Context, cmd_name: str) -> click.Command | None:
if command := super().get_command(ctx, cmd_name):
return command
scripts: list[click.Command] = self._load_scripts(ctx)
Expand Down
Loading