Skip to content

Commit 7ca83d4

Browse files
NCBMiyume
andauthored
Dev: 升级项目到 Python 3.10 (#167)
* 🔧 Upgrade project to py310 * 🚨 Upgrade code to py310 * ➖ remove unused importlib-metadata * chore: update nb-autodoc to support 3.10 * 📝 Update python version in documentation --------- Co-authored-by: iyume <[email protected]>
1 parent 128a975 commit 7ca83d4

31 files changed

+418
-531
lines changed

nb_cli/__init__.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
1-
import sys
1+
from importlib.metadata import EntryPoint, version, entry_points
22

33
from cashews import Cache
44

55
from .i18n import _ as _
66

7-
if sys.version_info < (3, 10):
8-
from importlib_metadata import EntryPoint, version, entry_points
9-
else:
10-
from importlib.metadata import EntryPoint, version, entry_points
11-
127
try:
138
__version__ = version("nb-cli")
149
except Exception:

nb_cli/cli/__init__.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
from typing import cast
12
from pathlib import Path
2-
from typing import Optional, cast
33

44
import click
55
from noneprompt import Choice, ListPrompt, ConfirmPrompt, CancelledError
@@ -33,14 +33,12 @@ def back_():
3333

3434

3535
def _set_global_working_dir(
36-
ctx: click.Context, param: click.Option, value: Optional[Path]
36+
ctx: click.Context, param: click.Option, value: Path | None
3737
):
3838
ConfigManager._global_working_dir = value
3939

4040

41-
def _set_global_python_path(
42-
ctx: click.Context, param: click.Option, value: Optional[str]
43-
):
41+
def _set_global_python_path(ctx: click.Context, param: click.Option, value: str | None):
4442
ConfigManager._global_python_path = value
4543

4644

nb_cli/cli/commands/adapter.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
from typing import cast
12
from pathlib import Path
2-
from typing import Optional, cast
33

44
import click
55
from noneprompt import Choice, ListPrompt, InputPrompt, CancelledError
@@ -105,7 +105,7 @@ async def list_(include_unpublished: bool = False):
105105
)
106106
@click.argument("name", nargs=1, default=None)
107107
@run_async
108-
async def search(name: Optional[str], include_unpublished: bool = False):
108+
async def search(name: str | None, include_unpublished: bool = False):
109109
if name is None:
110110
name = await InputPrompt(_("Adapter name to search:")).prompt_async(
111111
style=CLI_DEFAULT_STYLE
@@ -138,8 +138,8 @@ async def search(name: Optional[str], include_unpublished: bool = False):
138138
async def install(
139139
ctx: click.Context,
140140
no_restrict_version: bool,
141-
name: Optional[str],
142-
pip_args: Optional[list[str]],
141+
name: str | None,
142+
pip_args: list[str] | None,
143143
include_unpublished: bool = False,
144144
):
145145
try:
@@ -208,8 +208,8 @@ async def install(
208208
@click.argument("pip_args", nargs=-1, default=None)
209209
@run_async
210210
async def update(
211-
name: Optional[str],
212-
pip_args: Optional[list[str]],
211+
name: str | None,
212+
pip_args: list[str] | None,
213213
include_unpublished: bool = False,
214214
):
215215
try:
@@ -258,7 +258,7 @@ async def update(
258258
@click.argument("name", nargs=1, default=None)
259259
@click.argument("pip_args", nargs=-1, default=None)
260260
@run_async
261-
async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
261+
async def uninstall(name: str | None, pip_args: list[str] | None):
262262
try:
263263
adapter = await find_exact_package(
264264
_("Adapter name to uninstall:"),
@@ -300,9 +300,9 @@ async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
300300
@run_async
301301
async def create(
302302
ctx: click.Context,
303-
name: Optional[str],
304-
output_dir: Optional[str],
305-
template: Optional[str],
303+
name: str | None,
304+
output_dir: str | None,
305+
template: str | None,
306306
):
307307
if name is None:
308308
try:

nb_cli/cli/commands/driver.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Optional, cast
1+
from typing import cast
22

33
import click
44
from noneprompt import Choice, ListPrompt, InputPrompt, CancelledError
@@ -103,7 +103,7 @@ async def list_(include_unpublished: bool = False):
103103
)
104104
@click.argument("name", nargs=1, default=None)
105105
@run_async
106-
async def search(name: Optional[str], include_unpublished: bool = False):
106+
async def search(name: str | None, include_unpublished: bool = False):
107107
if name is None:
108108
name = await InputPrompt(_("Driver name to search:")).prompt_async(
109109
style=CLI_DEFAULT_STYLE
@@ -130,8 +130,8 @@ async def search(name: Optional[str], include_unpublished: bool = False):
130130
@click.argument("pip_args", nargs=-1, default=None)
131131
@run_async
132132
async def install(
133-
name: Optional[str],
134-
pip_args: Optional[list[str]],
133+
name: str | None,
134+
pip_args: list[str] | None,
135135
include_unpublished: bool = False,
136136
):
137137
try:
@@ -187,8 +187,8 @@ async def install(
187187
@click.argument("pip_args", nargs=-1, default=None)
188188
@run_async
189189
async def update(
190-
name: Optional[str],
191-
pip_args: Optional[list[str]],
190+
name: str | None,
191+
pip_args: list[str] | None,
192192
include_unpublished: bool = False,
193193
):
194194
try:
@@ -238,7 +238,7 @@ async def update(
238238
@click.argument("name", nargs=1, default=None)
239239
@click.argument("pip_args", nargs=-1, default=None)
240240
@run_async
241-
async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
241+
async def uninstall(name: str | None, pip_args: list[str] | None):
242242
try:
243243
driver = await find_exact_package(
244244
_("Driver name to uninstall:"),

nb_cli/cli/commands/plugin.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
from typing import cast
12
from pathlib import Path
2-
from typing import Optional, cast
33

44
import click
55
from noneprompt import Choice, ListPrompt, InputPrompt, ConfirmPrompt, CancelledError
@@ -105,7 +105,7 @@ async def list_(include_unpublished: bool = False):
105105
)
106106
@click.argument("name", nargs=1, required=False, default=None)
107107
@run_async
108-
async def search(name: Optional[str], include_unpublished: bool = False):
108+
async def search(name: str | None, include_unpublished: bool = False):
109109
if name is None:
110110
name = await InputPrompt(_("Plugin name to search:")).prompt_async(
111111
style=CLI_DEFAULT_STYLE
@@ -138,8 +138,8 @@ async def search(name: Optional[str], include_unpublished: bool = False):
138138
async def install(
139139
ctx: click.Context,
140140
no_restrict_version: bool,
141-
name: Optional[str],
142-
pip_args: Optional[list[str]],
141+
name: str | None,
142+
pip_args: list[str] | None,
143143
include_unpublished: bool = False,
144144
):
145145
try:
@@ -208,8 +208,8 @@ async def install(
208208
@click.argument("pip_args", nargs=-1, default=None)
209209
@run_async
210210
async def update(
211-
name: Optional[str],
212-
pip_args: Optional[list[str]],
211+
name: str | None,
212+
pip_args: list[str] | None,
213213
include_unpublished: bool = False,
214214
):
215215
try:
@@ -258,7 +258,7 @@ async def update(
258258
@click.argument("name", nargs=1, required=False, default=None)
259259
@click.argument("pip_args", nargs=-1, default=None)
260260
@run_async
261-
async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
261+
async def uninstall(name: str | None, pip_args: list[str] | None):
262262
try:
263263
plugin = await find_exact_package(
264264
_("Plugin name to uninstall:"),
@@ -301,10 +301,10 @@ async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
301301
@run_async
302302
async def create(
303303
ctx: click.Context,
304-
name: Optional[str],
305-
sub_plugin: Optional[bool],
306-
output_dir: Optional[str],
307-
template: Optional[str],
304+
name: str | None,
305+
sub_plugin: bool | None,
306+
output_dir: str | None,
307+
template: str | None,
308308
):
309309
if name is None:
310310
try:

nb_cli/cli/commands/project.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
import sys
33
import json
44
import shlex
5+
from typing import Any
56
from pathlib import Path
67
from logging import Logger
78
from functools import partial
8-
from typing import Any, Optional
99
from dataclasses import field, dataclass
1010

1111
import click
@@ -51,8 +51,7 @@
5151
"simple": _("simple (for plugin developer)"),
5252
}
5353

54-
if sys.version_info >= (3, 10):
55-
BLACKLISTED_PROJECT_NAME.update(sys.stdlib_module_names)
54+
BLACKLISTED_PROJECT_NAME.update(sys.stdlib_module_names)
5655

5756

5857
@dataclass
@@ -258,10 +257,10 @@ async def prompt_simple_context(context: ProjectContext) -> ProjectContext:
258257
@run_async
259258
async def create(
260259
ctx: click.Context,
261-
output_dir: Optional[str],
262-
template: Optional[str],
263-
python_interpreter: Optional[str],
264-
pip_args: Optional[list[str]],
260+
output_dir: str | None,
261+
template: str | None,
262+
python_interpreter: str | None,
263+
pip_args: list[str] | None,
265264
):
266265
if not template:
267266
templates = list_project_templates()
@@ -438,9 +437,9 @@ async def generate(file: str):
438437
async def run(
439438
file: str,
440439
reload: bool,
441-
reload_dirs: Optional[list[str]],
442-
reload_includes: Optional[list[str]],
443-
reload_excludes: Optional[list[str]],
440+
reload_dirs: list[str] | None,
441+
reload_includes: list[str] | None,
442+
reload_excludes: list[str] | None,
444443
reload_delay: float,
445444
):
446445
if reload:

nb_cli/cli/commands/self.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import sys
2-
from typing import Optional, cast
2+
from typing import cast
33

44
import click
55
from noneprompt import Choice, ListPrompt, InputPrompt, CancelledError
@@ -72,7 +72,7 @@ async def self(ctx: click.Context):
7272
@click.argument("name", nargs=1, required=False, default=None)
7373
@click.argument("pip_args", nargs=-1, default=None)
7474
@run_async
75-
async def install(name: Optional[str], pip_args: Optional[list[str]]):
75+
async def install(name: str | None, pip_args: list[str] | None):
7676
if name is None:
7777
try:
7878
name = await InputPrompt(
@@ -90,7 +90,7 @@ async def install(name: Optional[str], pip_args: Optional[list[str]]):
9090
)
9191
@click.argument("pip_args", nargs=-1, default=None)
9292
@run_async
93-
async def update(pip_args: Optional[list[str]]):
93+
async def update(pip_args: list[str] | None):
9494
proc = await call_pip_update("nb-cli", pip_args, python_path=sys.executable)
9595
await proc.wait()
9696

@@ -103,7 +103,7 @@ async def update(pip_args: Optional[list[str]]):
103103
@click.argument("name", nargs=1, required=False, default=None)
104104
@click.argument("pip_args", nargs=-1, default=None)
105105
@run_async
106-
async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
106+
async def uninstall(name: str | None, pip_args: list[str] | None):
107107
if name is None:
108108
try:
109109
name = await InputPrompt(
@@ -123,7 +123,7 @@ async def uninstall(name: Optional[str], pip_args: Optional[list[str]]):
123123
)
124124
@click.argument("pip_args", nargs=-1, default=None)
125125
@run_async
126-
async def list_(pip_args: Optional[list[str]]):
126+
async def list_(pip_args: list[str] | None):
127127
proc = await call_pip_list(pip_args, python_path=sys.executable)
128128
await proc.wait()
129129

nb_cli/cli/customize.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from typing import Optional
21
from functools import partial
32
from collections import Counter
43

@@ -14,7 +13,7 @@
1413
class ClickAliasedCommand(click.Command):
1514
def __init__(self, *args, **kwargs) -> None:
1615
aliases = kwargs.pop("aliases", None)
17-
self._aliases: Optional[list[str]] = aliases
16+
self._aliases: list[str] | None = aliases
1817
super().__init__(*args, **kwargs)
1918

2019

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

3130
def group(self, *args, **kwargs):
32-
aliases: Optional[list[str]] = kwargs.pop("aliases", None)
31+
aliases: list[str] | None = kwargs.pop("aliases", None)
3332
decorator = super().group(*args, **kwargs)
3433
if not aliases:
3534
return decorator
@@ -50,8 +49,8 @@ def add_aliases(self, cmd_name: str, aliases: list[str]) -> None:
5049
def resolve_alias(self, cmd_name):
5150
return self._aliases[cmd_name] if cmd_name in self._aliases else cmd_name
5251

53-
def add_command(self, cmd: click.Command, name: Optional[str] = None) -> None:
54-
aliases: Optional[list[str]] = getattr(cmd, "_aliases", None)
52+
def add_command(self, cmd: click.Command, name: str | None = None) -> None:
53+
aliases: list[str] | None = getattr(cmd, "_aliases", None)
5554
if aliases and isinstance(cmd, ClickAliasedCommand) and cmd.name:
5655
self.add_aliases(cmd.name, aliases)
5756
return super().add_command(cmd, name=name)
@@ -142,7 +141,7 @@ async def _load_scripts(self, ctx: click.Context) -> list[click.Command]:
142141
)
143142
return [self._build_script_command(script) for script in scripts]
144143

145-
def get_command(self, ctx: click.Context, cmd_name: str) -> Optional[click.Command]:
144+
def get_command(self, ctx: click.Context, cmd_name: str) -> click.Command | None:
146145
if command := super().get_command(ctx, cmd_name):
147146
return command
148147
scripts: list[click.Command] = self._load_scripts(ctx)

0 commit comments

Comments
 (0)