npe2 0.7.9__py3-none-any.whl → 0.8.0rc0__py3-none-any.whl

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.
Files changed (42) hide show
  1. npe2/_command_registry.py +6 -5
  2. npe2/_dynamic_plugin.py +25 -27
  3. npe2/_inspection/_compile.py +9 -8
  4. npe2/_inspection/_fetch.py +18 -30
  5. npe2/_inspection/_from_npe1.py +26 -32
  6. npe2/_inspection/_setuputils.py +14 -14
  7. npe2/_inspection/_visitors.py +26 -21
  8. npe2/_plugin_manager.py +45 -57
  9. npe2/_pydantic_util.py +53 -0
  10. npe2/_pytest_plugin.py +3 -4
  11. npe2/_setuptools_plugin.py +9 -9
  12. npe2/cli.py +25 -21
  13. npe2/implements.py +13 -10
  14. npe2/implements.pyi +3 -2
  15. npe2/io_utils.py +40 -44
  16. npe2/manifest/_bases.py +15 -14
  17. npe2/manifest/_npe1_adapter.py +3 -3
  18. npe2/manifest/_package_metadata.py +40 -47
  19. npe2/manifest/contributions/_commands.py +16 -14
  20. npe2/manifest/contributions/_configuration.py +22 -20
  21. npe2/manifest/contributions/_contributions.py +13 -14
  22. npe2/manifest/contributions/_icon.py +3 -5
  23. npe2/manifest/contributions/_json_schema.py +86 -89
  24. npe2/manifest/contributions/_keybindings.py +5 -6
  25. npe2/manifest/contributions/_menus.py +11 -9
  26. npe2/manifest/contributions/_readers.py +10 -8
  27. npe2/manifest/contributions/_sample_data.py +16 -15
  28. npe2/manifest/contributions/_submenu.py +2 -4
  29. npe2/manifest/contributions/_themes.py +18 -22
  30. npe2/manifest/contributions/_widgets.py +6 -5
  31. npe2/manifest/contributions/_writers.py +22 -18
  32. npe2/manifest/schema.py +82 -70
  33. npe2/manifest/utils.py +24 -28
  34. npe2/plugin_manager.py +17 -14
  35. npe2/types.py +16 -19
  36. {npe2-0.7.9.dist-info → npe2-0.8.0rc0.dist-info}/METADATA +13 -7
  37. npe2-0.8.0rc0.dist-info/RECORD +49 -0
  38. {npe2-0.7.9.dist-info → npe2-0.8.0rc0.dist-info}/WHEEL +1 -1
  39. npe2/_pydantic_compat.py +0 -54
  40. npe2-0.7.9.dist-info/RECORD +0 -49
  41. {npe2-0.7.9.dist-info → npe2-0.8.0rc0.dist-info}/entry_points.txt +0 -0
  42. {npe2-0.7.9.dist-info → npe2-0.8.0rc0.dist-info}/licenses/LICENSE +0 -0
npe2/plugin_manager.py CHANGED
@@ -1,12 +1,15 @@
1
1
  # mypy: disable-error-code=empty-body
2
2
  """Convenience module to access methods on the global PluginManager singleton."""
3
+
3
4
  from __future__ import annotations
4
5
 
5
- from typing import TYPE_CHECKING, Dict
6
+ import builtins
7
+ from typing import TYPE_CHECKING
6
8
 
7
9
  if TYPE_CHECKING:
10
+ from collections.abc import Iterator, Sequence
8
11
  from os import PathLike
9
- from typing import Any, Iterator, List, NewType, Optional, Sequence, Tuple, Union
12
+ from typing import Any, NewType
10
13
 
11
14
  from npe2 import PluginManifest
12
15
  from npe2._plugin_manager import InclusionSet, PluginContext
@@ -31,9 +34,9 @@ def discover(paths: Sequence[str] = (), clear=False, include_npe1=False) -> None
31
34
  def dict(
32
35
  self,
33
36
  *,
34
- include: Optional[InclusionSet] = None,
35
- exclude: Optional[InclusionSet] = None,
36
- ) -> Dict[str, Any]:
37
+ include: InclusionSet | None = None,
38
+ exclude: InclusionSet | None = None,
39
+ ) -> builtins.dict[str, Any]:
37
40
  """Return a dictionary with the state of the plugin manager."""
38
41
 
39
42
 
@@ -77,7 +80,7 @@ def get_manifest(plugin_name: str) -> PluginManifest:
77
80
  """Get manifest for `plugin_name`"""
78
81
 
79
82
 
80
- def iter_manifests(disabled: Optional[bool] = None) -> Iterator[PluginManifest]:
83
+ def iter_manifests(disabled: bool | None = None) -> Iterator[PluginManifest]:
81
84
  """Iterate through registered manifests."""
82
85
 
83
86
 
@@ -93,7 +96,7 @@ def iter_menu(menu_key: str, disabled=False) -> Iterator[contributions.MenuItem]
93
96
  """Iterate over `MenuItems` in menu with id `menu_key`."""
94
97
 
95
98
 
96
- def menus(disabled=False) -> Dict[str, List[contributions.MenuItem]]:
99
+ def menus(disabled=False) -> builtins.dict[str, list[contributions.MenuItem]]:
97
100
  """Return all registered menu_key -> List[MenuItems]."""
98
101
 
99
102
 
@@ -102,7 +105,7 @@ def iter_themes() -> Iterator[contributions.ThemeContribution]:
102
105
 
103
106
 
104
107
  def iter_compatible_readers(
105
- path: Union[PathLike, Sequence[str]],
108
+ path: PathLike | Sequence[str],
106
109
  ) -> Iterator[contributions.ReaderContribution]:
107
110
  """Iterate over ReaderContributions compatible with `path`."""
108
111
 
@@ -117,19 +120,19 @@ def iter_widgets() -> Iterator[contributions.WidgetContribution]:
117
120
  """Iterate over discovered WidgetContributions."""
118
121
 
119
122
 
120
- def iter_sample_data() -> (
121
- Iterator[Tuple[PluginName, List[contributions.SampleDataContribution]]]
122
- ):
123
+ def iter_sample_data() -> Iterator[
124
+ tuple[PluginName, list[contributions.SampleDataContribution]]
125
+ ]:
123
126
  """Iterates over (plugin_name, [sample_contribs])."""
124
127
 
125
128
 
126
129
  def get_writer(
127
- path: str, layer_types: Sequence[str], plugin_name: Optional[str] = None
128
- ) -> Tuple[Optional[contributions.WriterContribution], str]:
130
+ path: str, layer_types: Sequence[str], plugin_name: str | None = None
131
+ ) -> tuple[contributions.WriterContribution | None, str]:
129
132
  """Get Writer contribution appropriate for `path`, and `layer_types`."""
130
133
 
131
134
 
132
- def get_shimmed_plugins() -> List[str]:
135
+ def get_shimmed_plugins() -> list[str]:
133
136
  """Return a list of all shimmed plugin names."""
134
137
 
135
138
 
npe2/types.py CHANGED
@@ -1,14 +1,11 @@
1
- from collections.abc import Mapping
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Callable, Mapping, Sequence
2
4
  from typing import (
3
5
  TYPE_CHECKING,
4
- Callable,
5
- List,
6
6
  Literal,
7
7
  NewType,
8
- Optional,
9
8
  Protocol,
10
- Sequence,
11
- Tuple,
12
9
  Union,
13
10
  )
14
11
 
@@ -22,7 +19,7 @@ if TYPE_CHECKING:
22
19
 
23
20
  # PathLike = Union[str, pathlib.Path] # we really have to pick one
24
21
  PathLike = str
25
- PathOrPaths = Union[PathLike, Sequence[PathLike]]
22
+ PathOrPaths = PathLike | Sequence[PathLike]
26
23
  PythonName = NewType("PythonName", str)
27
24
 
28
25
  # Layer-related types
@@ -30,24 +27,24 @@ PythonName = NewType("PythonName", str)
30
27
 
31
28
  class ArrayLike(Protocol):
32
29
  @property
33
- def shape(self) -> Tuple[int, ...]: ...
30
+ def shape(self) -> tuple[int, ...]: ...
34
31
 
35
32
  @property
36
33
  def ndim(self) -> int: ...
37
34
 
38
35
  @property
39
- def dtype(self) -> "np.dtype": ...
36
+ def dtype(self) -> np.dtype: ...
40
37
 
41
- def __array__(self) -> "np.ndarray": ... # pragma: no cover
38
+ def __array__(self) -> np.ndarray: ... # pragma: no cover
42
39
 
43
40
 
44
41
  LayerName = Literal[
45
42
  "graph", "image", "labels", "points", "shapes", "surface", "tracks", "vectors"
46
43
  ]
47
44
  Metadata = Mapping
48
- DataType = Union[ArrayLike, Sequence[ArrayLike]]
49
- FullLayerData = Tuple[DataType, Metadata, LayerName]
50
- LayerData = Union[Tuple[DataType], Tuple[DataType, Metadata], FullLayerData]
45
+ DataType = ArrayLike | Sequence[ArrayLike]
46
+ FullLayerData = tuple[DataType, Metadata, LayerName]
47
+ LayerData = tuple[DataType] | tuple[DataType, Metadata] | FullLayerData
51
48
 
52
49
  # ########################## CONTRIBUTIONS #################################
53
50
 
@@ -56,20 +53,20 @@ Widget = Union["magicgui.widgets.Widget", "qtpy.QtWidgets.QWidget"]
56
53
  WidgetCreator = Callable[..., Widget]
57
54
 
58
55
  # ReaderContribution.command must point to a ReaderGetter
59
- ReaderFunction = Callable[[PathOrPaths], List[LayerData]]
60
- ReaderGetter = Callable[[PathOrPaths], Optional[ReaderFunction]]
56
+ ReaderFunction = Callable[[PathOrPaths], list[LayerData]]
57
+ ReaderGetter = Callable[[PathOrPaths], ReaderFunction | None]
61
58
 
62
59
 
63
60
  # SampleDataGenerator.command must point to a SampleDataCreator
64
- SampleDataCreator = Callable[..., List[LayerData]]
61
+ SampleDataCreator = Callable[..., list[LayerData]]
65
62
 
66
63
  # WriterContribution.command must point to a WriterFunction
67
64
  # Writers that take at most one layer must provide a SingleWriterFunction command.
68
65
  # Otherwise, they must provide a MultiWriterFunction.
69
66
  # where the number of layers they take is defined as
70
67
  # n = sum(ltc.max() for ltc in WriterContribution.layer_type_constraints())
71
- SingleWriterFunction = Callable[[str, DataType, Metadata], List[str]]
72
- MultiWriterFunction = Callable[[str, List[FullLayerData]], List[str]]
73
- WriterFunction = Union[SingleWriterFunction, MultiWriterFunction]
68
+ SingleWriterFunction = Callable[[str, DataType, Metadata], list[str]]
69
+ MultiWriterFunction = Callable[[str, list[FullLayerData]], list[str]]
70
+ WriterFunction = SingleWriterFunction | MultiWriterFunction
74
71
 
75
72
  # ##########################################################################
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: npe2
3
- Version: 0.7.9
3
+ Version: 0.8.0rc0
4
4
  Summary: napari plugin engine v2
5
5
  Project-URL: homepage, https://github.com/napari/npe2
6
6
  Project-URL: repository, https://github.com/napari/npe2
@@ -13,38 +13,45 @@ Classifier: License :: OSI Approved :: BSD License
13
13
  Classifier: Natural Language :: English
14
14
  Classifier: Programming Language :: Python :: 3
15
15
  Classifier: Programming Language :: Python :: 3 :: Only
16
- Classifier: Programming Language :: Python :: 3.8
17
- Classifier: Programming Language :: Python :: 3.9
18
16
  Classifier: Programming Language :: Python :: 3.10
19
17
  Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
20
21
  Classifier: Typing :: Typed
21
- Requires-Python: >=3.8
22
+ Requires-Python: >=3.10
22
23
  Requires-Dist: build>=1
23
24
  Requires-Dist: platformdirs
24
25
  Requires-Dist: psygnal>=0.3.0
25
- Requires-Dist: pydantic
26
+ Requires-Dist: pydantic-extra-types
27
+ Requires-Dist: pydantic>1
26
28
  Requires-Dist: pyyaml
27
29
  Requires-Dist: rich
28
30
  Requires-Dist: tomli-w
29
31
  Requires-Dist: tomli; python_version < '3.11'
30
32
  Requires-Dist: typer
31
33
  Provides-Extra: dev
32
- Requires-Dist: black; extra == 'dev'
33
34
  Requires-Dist: ipython; extra == 'dev'
34
35
  Requires-Dist: isort; extra == 'dev'
35
36
  Requires-Dist: mypy; extra == 'dev'
36
37
  Requires-Dist: pre-commit; extra == 'dev'
38
+ Requires-Dist: ruff; extra == 'dev'
37
39
  Provides-Extra: docs
40
+ Requires-Dist: furo; extra == 'docs'
38
41
  Requires-Dist: jinja2; extra == 'docs'
42
+ Requires-Dist: jupyter-book<2; extra == 'docs'
39
43
  Requires-Dist: magicgui>=0.3.3; extra == 'docs'
44
+ Requires-Dist: sphinx-tabs; extra == 'docs'
40
45
  Provides-Extra: json
41
46
  Requires-Dist: jsonschema; extra == 'json'
42
47
  Provides-Extra: testing
48
+ Requires-Dist: build; extra == 'testing'
43
49
  Requires-Dist: jsonschema; extra == 'testing'
44
50
  Requires-Dist: magicgui; extra == 'testing'
45
51
  Requires-Dist: napari-plugin-engine; extra == 'testing'
46
52
  Requires-Dist: napari-svg==0.1.5; extra == 'testing'
47
53
  Requires-Dist: numpy; extra == 'testing'
54
+ Requires-Dist: pip; extra == 'testing'
48
55
  Requires-Dist: pytest; extra == 'testing'
49
56
  Requires-Dist: pytest-cov; extra == 'testing'
50
57
  Requires-Dist: pytest-pretty; extra == 'testing'
@@ -72,7 +79,6 @@ offers comprehensive information for **plugin users** and for **plugin developer
72
79
  ### Plugin users
73
80
 
74
81
  For plugin users, the docs include information about:
75
- - [Starting to use plugins](https://napari.org/stable/plugins/start_using_plugins/index.html#plugins-getting-started)
76
82
  - [Finding and installing plugins](https://napari.org/stable/plugins/start_using_plugins/finding_and_installing_plugins.html#find-and-install-plugins)
77
83
 
78
84
  ### Plugin developers
@@ -0,0 +1,49 @@
1
+ npe2/__init__.py,sha256=IE86nFLHzFypLagLE3lFmieFQINGq-5pDH7IAe39lBU,812
2
+ npe2/__main__.py,sha256=NwbyYIU4bE1YPADH6zxLF3i7_51oELpK1UXz6141iwE,65
3
+ npe2/_command_registry.py,sha256=y_TQzUZvtt3pUP7-BAAkNqGnNSFzbMI7XzNZLQTQYsQ,5048
4
+ npe2/_dynamic_plugin.py,sha256=FTL487t1OgdccC0aPYeUJeIGm7Vct7Zfl7UCbFXAv_A,9975
5
+ npe2/_plugin_manager.py,sha256=N0bmE8p5U1PCxr24H0v-uhRzbhcLR-uP-l785UTNDvs,30577
6
+ npe2/_pydantic_util.py,sha256=k8m6ciya-oxNxDDL-eeXO_dpApYatMSQOylPb7CBy_o,1575
7
+ npe2/_pytest_plugin.py,sha256=LM11LIbdDK1oM8zrVxW5v2SPBPxtwgUbjq0BrEHBkXo,3560
8
+ npe2/_setuptools_plugin.py,sha256=2TGuxhpB9f22XXaWLEhtrXrDaPfNJOwIDBmWNdj9-Xg,6833
9
+ npe2/cli.py,sha256=_1Gs_drlLlXu61JZyN9tVqbhcSZxVFjczu-9jYMTzzY,15698
10
+ npe2/implements.py,sha256=7kqEFCzRMX6sYL3tLt97L6oUBnsHeCkfK8Jf6qwBDyE,4049
11
+ npe2/implements.pyi,sha256=3RVvq41tYTwE655Tq6-QSVQxTGofuHRiL3STgYOxrfc,1406
12
+ npe2/io_utils.py,sha256=_YpXRYzgAD3Wckgaf5PvR1mRI-fGqeNb-l6MFXcL6m4,9896
13
+ npe2/plugin_manager.py,sha256=mnSMs9mqTUV79_C7u-wZrbqQLc1PkeXWNgfErHJbFg0,4473
14
+ npe2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ npe2/types.py,sha256=j_c50Khyi6-Rbob8QM3ws1rbqpsZr1Un_ZT2oPlcHiE,2179
16
+ npe2/_inspection/__init__.py,sha256=Z23w_mB3aHP1AZlLYDB4OMHjgXQMuBAPzOIYEd1HuFk,295
17
+ npe2/_inspection/_compile.py,sha256=t8cWG3uyE8pm7rAijlLylWlq3DPlbQmNL_EhCLyOOvo,3920
18
+ npe2/_inspection/_fetch.py,sha256=LU3Xn42dRsnA8zcQteie95AGuDQJ13mvHhbheTIn9CI,14116
19
+ npe2/_inspection/_from_npe1.py,sha256=ocIQOaFy7vbFYenTpF-b_dQMT_MMMfxLMSvsF_FhBQA,23512
20
+ npe2/_inspection/_setuputils.py,sha256=F30uR_FaXx3YsEg53qY6QtCceq5Y12fzX4lkiU2FfTQ,4529
21
+ npe2/_inspection/_visitors.py,sha256=a85QH3wVfG9s28MvoF8xyTKx5Getd_rhh_vXK7rnbC8,19878
22
+ npe2/manifest/__init__.py,sha256=sfgHfeC2AKoewwRgnAqX84X0U-ThDHxmt0Olidnmalo,159
23
+ npe2/manifest/_bases.py,sha256=KcmcTD95aOqxIi4vq3wpqUBNaKd5Eku1x71OeUzUmPM,3700
24
+ npe2/manifest/_npe1_adapter.py,sha256=LK7qcRpqzTidhsykQn5G8etVsKOATSBlqR4JMIItzDM,5220
25
+ npe2/manifest/_package_metadata.py,sha256=UjMh1A8TromkAl9-3LFzY_GfcDMHQRi1tmgjo-C1zWs,9197
26
+ npe2/manifest/_validators.py,sha256=v_GaW2DE1A7x3J-VA6mIWMLXO-AijLvZgf4-kcpQfWI,2875
27
+ npe2/manifest/menus.py,sha256=SMJyp1wI45ub8hdZUKqQi9SUZ3GpFlarHsOJ1ZwAMbs,181
28
+ npe2/manifest/package_metadata.py,sha256=sRMPUhpfx-3nn5i3c0BKlbw7KR8AzgIo-ijKq0udXUU,191
29
+ npe2/manifest/schema.py,sha256=xwf_wzyNtTt_i5HiWZa5OQe-lnyugo2FuD3g9VTBdqM,20918
30
+ npe2/manifest/utils.py,sha256=eyrBjNJAb9vka0Rcez3d5X3X9qff3XaZEb-YSltoQZo,12296
31
+ npe2/manifest/contributions/__init__.py,sha256=b5eNqUL5tskS6gVwh_zalBCsPxX6HO1R1tNvG9A3m68,1003
32
+ npe2/manifest/contributions/_commands.py,sha256=-heWBIouLff4gQH70zLiI7Kidu383BpWIIMPaac4NHA,4310
33
+ npe2/manifest/contributions/_configuration.py,sha256=f0GjrlcKoK6KOweiUzoPQRrv0SMfA0Ilf3w_hI3qDd0,6484
34
+ npe2/manifest/contributions/_contributions.py,sha256=9o_vAzaebZ6wQl4EOc5PIS0SF6F8Yc6_TQNXENYBPZo,2481
35
+ npe2/manifest/contributions/_icon.py,sha256=zHwCeE73iF7hZMkVbIS3qb5lziqML3K3SiP_XHjEGfw,113
36
+ npe2/manifest/contributions/_json_schema.py,sha256=nAjXMqeHgbyKJgQrRfoY6TwEYxr6rr3cJ1DYkSePFm4,10658
37
+ npe2/manifest/contributions/_keybindings.py,sha256=FZKoDE9oBjt1Gq3frlEpF8oLWyEt5mbQ7D7xO4jIZuA,909
38
+ npe2/manifest/contributions/_menus.py,sha256=2lINKaq6rx6HUJI9wLScrm4Dh2OhwidTmr3Uiuqq3AU,2239
39
+ npe2/manifest/contributions/_readers.py,sha256=ApMkKthKiFhhHPwm-Z9wRYTVJh25ccoAfvhMboZDeZw,2514
40
+ npe2/manifest/contributions/_sample_data.py,sha256=VAz2ng03ARcG924nSW4pjQYonHsFN1DYhm98JGc6N7g,2394
41
+ npe2/manifest/contributions/_submenu.py,sha256=LOvD4Z68YRRVlw1vUTsuXlGlmbQxKuC7iasEM6dyYuI,902
42
+ npe2/manifest/contributions/_themes.py,sha256=yCgbIDq3MwPeMqd7cwCUnZOUKWVSt-nUh4O_tjzuH6w,2372
43
+ npe2/manifest/contributions/_widgets.py,sha256=C56iGX335-dXx-_pTmUU4kfcemSbKqVoC-U7At14DAc,2223
44
+ npe2/manifest/contributions/_writers.py,sha256=YXOTKqHIzPf-9WyVF4pHrzQ_RR93AbXXTjCcWUruWs0,7949
45
+ npe2-0.8.0rc0.dist-info/METADATA,sha256=okNLKGi_uwwpEjSkewCQ6xuuUfUSihsXXnM-gcCQoQ4,6154
46
+ npe2-0.8.0rc0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
47
+ npe2-0.8.0rc0.dist-info/entry_points.txt,sha256=5zoegMudO8Hkn6589GlAXIW49Ar5HSWZjTRc0TkJu3s,250
48
+ npe2-0.8.0rc0.dist-info/licenses/LICENSE,sha256=uyX2Y2Q7D-WzOUc6EKZVDuadkWenBWSYTR--BsewGpg,1514
49
+ npe2-0.8.0rc0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: hatchling 1.28.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
npe2/_pydantic_compat.py DELETED
@@ -1,54 +0,0 @@
1
- try:
2
- # pydantic v2
3
- from pydantic.v1 import (
4
- BaseModel,
5
- Extra,
6
- Field,
7
- PrivateAttr,
8
- ValidationError,
9
- color,
10
- conlist,
11
- constr,
12
- root_validator,
13
- validator,
14
- )
15
- from pydantic.v1.error_wrappers import ErrorWrapper
16
- from pydantic.v1.fields import SHAPE_LIST
17
- from pydantic.v1.generics import GenericModel
18
- from pydantic.v1.main import ModelMetaclass
19
- except ImportError:
20
- # pydantic v2
21
- from pydantic import (
22
- BaseModel,
23
- Extra,
24
- Field,
25
- PrivateAttr,
26
- ValidationError,
27
- color,
28
- conlist,
29
- constr,
30
- root_validator,
31
- validator,
32
- )
33
- from pydantic.error_wrappers import ErrorWrapper
34
- from pydantic.fields import SHAPE_LIST
35
- from pydantic.generics import GenericModel
36
- from pydantic.main import ModelMetaclass
37
-
38
-
39
- __all__ = (
40
- "SHAPE_LIST",
41
- "BaseModel",
42
- "ErrorWrapper",
43
- "Extra",
44
- "Field",
45
- "GenericModel",
46
- "ModelMetaclass",
47
- "PrivateAttr",
48
- "ValidationError",
49
- "color",
50
- "conlist",
51
- "constr",
52
- "root_validator",
53
- "validator",
54
- )
@@ -1,49 +0,0 @@
1
- npe2/__init__.py,sha256=IE86nFLHzFypLagLE3lFmieFQINGq-5pDH7IAe39lBU,812
2
- npe2/__main__.py,sha256=NwbyYIU4bE1YPADH6zxLF3i7_51oELpK1UXz6141iwE,65
3
- npe2/_command_registry.py,sha256=-L2QLeikqcFalIk-tZgqkgEGjHUCZpm5cIGP0TxzoN8,5056
4
- npe2/_dynamic_plugin.py,sha256=d-5BcoycRIT7Cnf7ZDfQeiRBv33Ov9mBoH3U_bF8A8g,10024
5
- npe2/_plugin_manager.py,sha256=0sPujjzJqdx03e-BuXlnMv652OtO18-xyPuJAlva320,30694
6
- npe2/_pydantic_compat.py,sha256=S7snBijrnYsIovWmlmiZ91bbQNmbLuftr8CUcDnek20,1152
7
- npe2/_pytest_plugin.py,sha256=Dw73_eHFoBT_mivmFzr73ZGwBe1wwoSb790Mk1QlKn8,3610
8
- npe2/_setuptools_plugin.py,sha256=VefF1gMcnRxA0yp8tSYkcoB4mkefaf7NST5f0PWHm-M,6786
9
- npe2/cli.py,sha256=Q3SsDydPHzxxpGAm23JxBHQnp2yo4ZVYR-ug3hHU3dk,15637
10
- npe2/implements.py,sha256=RmzTS42dCNPLfCKK29rXlLBQ0Gj7gz7A_ewbxKR_2X0,4023
11
- npe2/implements.pyi,sha256=KcATek_BMxZGGlpd1yBgwBSFkeeJoJhX8S80GuprYRw,1392
12
- npe2/io_utils.py,sha256=0jnCHWjHSpVeKEXDmsvBXywchxdx2r8JEWIImGB6wBc,10042
13
- npe2/plugin_manager.py,sha256=e6egPx3H4tlyJ1fMJhske9uKCt1BdupAR6S-EBx1Afg,4466
14
- npe2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- npe2/types.py,sha256=3CCIQ84yTwUbc8rHBfvpMGgv7Fg968MFX-brXbbhk1I,2216
16
- npe2/_inspection/__init__.py,sha256=Z23w_mB3aHP1AZlLYDB4OMHjgXQMuBAPzOIYEd1HuFk,295
17
- npe2/_inspection/_compile.py,sha256=sIjcpyfgaETHrdrAB_jPyLHd2HxOuWdnKkDotXuOTk8,3941
18
- npe2/_inspection/_fetch.py,sha256=WA1kp8KrUThxXpI4GcKwC8l7jR-1X7bJzIalbB20Vgk,14298
19
- npe2/_inspection/_from_npe1.py,sha256=WP4mvMouGxRr9KlDmcQNukzS6ScT3izF0WlAN1g91o8,23607
20
- npe2/_inspection/_setuputils.py,sha256=EUnNq7rAJ4nVnMyaGztCufbT1JDxcJK3G9o3omqmd5U,4575
21
- npe2/_inspection/_visitors.py,sha256=XqjCR2VqgOlFKBw2SvJJfWhUCEqofSuIxZ8ecLyi7k0,19738
22
- npe2/manifest/__init__.py,sha256=sfgHfeC2AKoewwRgnAqX84X0U-ThDHxmt0Olidnmalo,159
23
- npe2/manifest/_bases.py,sha256=Fs_juL_8sS3vR6_FdQ_O5RESiTEUER7BQI0C8ZnKOC0,3649
24
- npe2/manifest/_npe1_adapter.py,sha256=6ZLGSSy-U6oEQekXeI2l-GXTJC3DuWTlFownbI5e8mo,5217
25
- npe2/manifest/_package_metadata.py,sha256=NQpEoq50vPK1ULVZnGQVJ5Ns9TUZEwtctQV0s_kpp78,9241
26
- npe2/manifest/_validators.py,sha256=v_GaW2DE1A7x3J-VA6mIWMLXO-AijLvZgf4-kcpQfWI,2875
27
- npe2/manifest/menus.py,sha256=SMJyp1wI45ub8hdZUKqQi9SUZ3GpFlarHsOJ1ZwAMbs,181
28
- npe2/manifest/package_metadata.py,sha256=sRMPUhpfx-3nn5i3c0BKlbw7KR8AzgIo-ijKq0udXUU,191
29
- npe2/manifest/schema.py,sha256=iUlnhfMI7JqgCzEVUqU5olIn7rgn2EI2Q30SGi9ug7A,20285
30
- npe2/manifest/utils.py,sha256=fuHCy573ZyJH4GFi_KdOUnJA0xRDY0qiN1dldP_aTTE,12355
31
- npe2/manifest/contributions/__init__.py,sha256=b5eNqUL5tskS6gVwh_zalBCsPxX6HO1R1tNvG9A3m68,1003
32
- npe2/manifest/contributions/_commands.py,sha256=f7x1yDoHS2GBAjQaFGqIcsqNC1avqtr6o4w_RZcHexs,4329
33
- npe2/manifest/contributions/_configuration.py,sha256=i8DPBUfpJZ4Y_Hug1E1FGCsLivd6SpZZmGZ_80WdFeg,6516
34
- npe2/manifest/contributions/_contributions.py,sha256=gC9-zMnmLQrObu8YTL_4NF4szD11jsN5ms9nf7K8YD8,2476
35
- npe2/manifest/contributions/_icon.py,sha256=NXeAPy1qoPLcFBHpQK_7j4pqxHGYbZ0gb3yCXr47CLM,161
36
- npe2/manifest/contributions/_json_schema.py,sha256=rIERaRMzVJzx5YPkdnGUyQDrfK3PN-eLM-gOOumFyHA,10953
37
- npe2/manifest/contributions/_keybindings.py,sha256=E_mrSzngXEGuyIfytPLOc0WL7Bb1Zebazdt1Nw6ZhD0,962
38
- npe2/manifest/contributions/_menus.py,sha256=FAkXdpSGHdDqjA4yr2Oxb62x7POXJY7ETAcs23AJTFY,2233
39
- npe2/manifest/contributions/_readers.py,sha256=XziSWpJrrbS_CJ6bvPhGH4vwKZq5in8kls07j1TAdXw,2513
40
- npe2/manifest/contributions/_sample_data.py,sha256=KRZ2vEDhd0Qmv9HOa6e_Db9sTzLrPc2VsTsFeWQbmvw,2400
41
- npe2/manifest/contributions/_submenu.py,sha256=jRUFdKB1iIgUfADeaHJV9rZ3_u3SfYjwfGgXelhEfXs,960
42
- npe2/manifest/contributions/_themes.py,sha256=FeHBeqayZOIN4ccyik1xPZ30cE-_3Xr7aozilyoamiY,2683
43
- npe2/manifest/contributions/_widgets.py,sha256=ung4t6R4EB6Rz9Xmlb4Z46ilOHHmkoWkEMuHQC4kABw,2217
44
- npe2/manifest/contributions/_writers.py,sha256=i1usy_tR_1XIf93c8HXu0APLJI3QrOJUc0-0nxLrLbI,7867
45
- npe2-0.7.9.dist-info/METADATA,sha256=AysOEbzwkym9VHTXeZxbxBKCiTtpNrNBsdDFhM1PPJo,5970
46
- npe2-0.7.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
47
- npe2-0.7.9.dist-info/entry_points.txt,sha256=5zoegMudO8Hkn6589GlAXIW49Ar5HSWZjTRc0TkJu3s,250
48
- npe2-0.7.9.dist-info/licenses/LICENSE,sha256=uyX2Y2Q7D-WzOUc6EKZVDuadkWenBWSYTR--BsewGpg,1514
49
- npe2-0.7.9.dist-info/RECORD,,