rats-apps 0.3.0.dev20240928043035__py3-none-any.whl → 0.3.0.dev20241002165828__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.
rats/cli/__init__.py CHANGED
@@ -2,17 +2,20 @@
2
2
 
3
3
  from ._annotations import CommandId, command, get_class_commands, get_class_groups, group
4
4
  from ._app import ClickApp
5
- from ._container import CommandContainer
6
- from ._plugin import PluginContainer, PluginServices
5
+ from ._container import CompositeContainer, Container
6
+ from ._plugin import PluginContainer, PluginServices, attach, create_group
7
7
 
8
8
  __all__ = [
9
9
  "PluginContainer",
10
10
  "command",
11
11
  "get_class_commands",
12
12
  "get_class_groups",
13
+ "create_group",
14
+ "attach",
13
15
  "group",
14
16
  "ClickApp",
15
17
  "PluginServices",
16
18
  "CommandId",
17
- "CommandContainer",
19
+ "Container",
20
+ "CompositeContainer",
18
21
  ]
rats/cli/__main__.py CHANGED
@@ -9,7 +9,7 @@ from rats import apps, cli
9
9
  logger = logging.getLogger(__name__)
10
10
 
11
11
 
12
- class ExampleCommands(cli.CommandContainer):
12
+ class ExampleCommands(cli.Container):
13
13
  """An example collection of cli commands."""
14
14
 
15
15
  @cli.command()
rats/cli/_app.py CHANGED
@@ -4,7 +4,7 @@ import click
4
4
 
5
5
  from rats import apps
6
6
 
7
- from ._container import CommandContainer
7
+ from ._container import Container
8
8
 
9
9
 
10
10
  @final
@@ -12,12 +12,12 @@ class ClickApp(apps.Executable):
12
12
  """..."""
13
13
 
14
14
  _group: click.Group
15
- _commands: CommandContainer
15
+ _commands: Container
16
16
 
17
17
  def __init__(
18
18
  self,
19
19
  group: click.Group,
20
- commands: CommandContainer,
20
+ commands: Container,
21
21
  ) -> None:
22
22
  """Not sure this is the right interface."""
23
23
  self._group = group
rats/cli/_container.py CHANGED
@@ -1,18 +1,16 @@
1
1
  import logging
2
2
  from collections.abc import Callable
3
3
  from functools import partial
4
- from typing import Any, Protocol
4
+ from typing import Any, Protocol, final
5
5
 
6
6
  import click
7
7
 
8
- from rats import apps
9
-
10
8
  from ._annotations import get_class_commands
11
9
 
12
10
  logger = logging.getLogger(__name__)
13
11
 
14
12
 
15
- class CommandContainer(apps.Container, Protocol):
13
+ class Container(Protocol):
16
14
  """A container that can attach click commands to a click group."""
17
15
 
18
16
  def attach(self, group: click.Group) -> None:
@@ -48,3 +46,15 @@ class CommandContainer(apps.Container, Protocol):
48
46
  params=params,
49
47
  )
50
48
  )
49
+
50
+
51
+ @final
52
+ class CompositeContainer(Container):
53
+ _containers: tuple[Container, ...]
54
+
55
+ def __init__(self, *containers: Container) -> None:
56
+ self._containers = containers
57
+
58
+ def attach(self, group: click.Group) -> None:
59
+ for container in self._containers:
60
+ container.attach(group)
rats/cli/_plugin.py CHANGED
@@ -4,6 +4,23 @@ import click
4
4
 
5
5
  from rats import apps
6
6
 
7
+ from ._container import Container
8
+
9
+
10
+ def create_group(group: click.Group, container: Container) -> click.Group:
11
+ container.attach(group)
12
+ return group
13
+
14
+
15
+ def attach(
16
+ group: click.Group,
17
+ command: click.Command | click.Group,
18
+ *commands: click.Command | click.Group,
19
+ ) -> None:
20
+ group.add_command(command)
21
+ for c in commands:
22
+ group.add_command(c)
23
+
7
24
 
8
25
  @apps.autoscope
9
26
  class _PluginEvents:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: rats-apps
3
- Version: 0.3.0.dev20240928043035
3
+ Version: 0.3.0.dev20241002165828
4
4
  Summary: research analysis tools for building applications
5
5
  Home-page: https://github.com/microsoft/rats/
6
6
  License: MIT
@@ -17,17 +17,17 @@ rats/apps/_scoping.py,sha256=6C2-ID22cCPR9Cbexf3CvCF3o9F_7ieURbwqkf6DI68,1360
17
17
  rats/apps/_simple_apps.py,sha256=n-3zeHY3iintZ9LN597c7zDHv3DiIdl7c8NTk0gUk1Y,5477
18
18
  rats/apps/_static_container.py,sha256=5lzLh1CUoQVwhxfDhK6ZOQaBrPpudbRHWJkaDppphZo,881
19
19
  rats/apps/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
- rats/cli/__init__.py,sha256=VNigux01ldwSv8Mo6zvvpz0FT9VC4TK0WfUp9FoVmGo,492
21
- rats/cli/__main__.py,sha256=3JZ7mrTTrrODQHutefm2zJp1-cQQB7I5-1xhYw7SMBU,1656
20
+ rats/cli/__init__.py,sha256=GR_pZr0OtqkH2js73OPZlK4Pgj0C30bhSKPGfU32Zxk,580
21
+ rats/cli/__main__.py,sha256=5OidbkRA4aglOAcvV6xQY9k7Ls9vd_EwNvI2aOrcPIQ,1649
22
22
  rats/cli/_annotations.py,sha256=5voM1pNm7iybZpgQTSVpaq3rMIMz33jr4eUyoEmxWJ4,1359
23
- rats/cli/_app.py,sha256=NjJfXKZYBdd1CZuLbrXyUFB_wRJQah1Rvtxe_zj4y_M,641
24
- rats/cli/_container.py,sha256=VddjrsH1lqiarJ6rXf4KUbuNtNXEduCr38UH_TwGgFE,1872
25
- rats/cli/_plugin.py,sha256=o5emP-E0LLOGvD14ZBYNY6h407pngrJf8ODMB5Wdd8U,711
23
+ rats/cli/_app.py,sha256=EmLIJe1LTLob5u5gP8gpgxk3kFlALTvrpYlwxlILu0k,620
24
+ rats/cli/_container.py,sha256=q3L6On6RS3PfUFZ67t6eUvKUQIK4Qxomz5ob86aNcR4,2143
25
+ rats/cli/_plugin.py,sha256=jkpqSCW0ELnMjK8fz-BVE50qgBIxbd5j4hILOnlla6U,1086
26
26
  rats/cli/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  rats/logs/__init__.py,sha256=fCn4pfpYiAcTtt5CsnUZX68CjOB3KJHxMSiYxsma4qE,183
28
28
  rats/logs/_plugin.py,sha256=OQ5fXToBm60YJRrMUVJ9_HVytUs3c69vaHY57jpivb0,2221
29
29
  rats/logs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- rats_apps-0.3.0.dev20240928043035.dist-info/METADATA,sha256=k0UESmQA1tr66nQVFUMKtsfhQicSC75kzJS6hFTcyBQ,774
31
- rats_apps-0.3.0.dev20240928043035.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
32
- rats_apps-0.3.0.dev20240928043035.dist-info/entry_points.txt,sha256=9oOvf2loQr5ACWQgvuu9Q3KZIVIxKE5Aa-rLuUII5WQ,91
33
- rats_apps-0.3.0.dev20240928043035.dist-info/RECORD,,
30
+ rats_apps-0.3.0.dev20241002165828.dist-info/METADATA,sha256=qT79vCLfGHgQYabnr89wlHudg835snVZyKEGya9ebZg,774
31
+ rats_apps-0.3.0.dev20241002165828.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
32
+ rats_apps-0.3.0.dev20241002165828.dist-info/entry_points.txt,sha256=9oOvf2loQr5ACWQgvuu9Q3KZIVIxKE5Aa-rLuUII5WQ,91
33
+ rats_apps-0.3.0.dev20241002165828.dist-info/RECORD,,