deepctl-plugin-example 0.1.8__tar.gz → 0.1.11__tar.gz
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.
- deepctl_plugin_example-0.1.11/PKG-INFO +61 -0
- deepctl_plugin_example-0.1.11/README.md +41 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/pyproject.toml +6 -2
- deepctl_plugin_example-0.1.11/src/deepctl_plugin_example.egg-info/PKG-INFO +61 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example.egg-info/requires.txt +1 -1
- deepctl_plugin_example-0.1.8/PKG-INFO +0 -147
- deepctl_plugin_example-0.1.8/README.md +0 -127
- deepctl_plugin_example-0.1.8/src/deepctl_plugin_example.egg-info/PKG-INFO +0 -147
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/setup.cfg +0 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example/__init__.py +0 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example/command.py +0 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example/models.py +0 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example.egg-info/SOURCES.txt +0 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example.egg-info/dependency_links.txt +0 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example.egg-info/entry_points.txt +0 -0
- {deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: deepctl-plugin-example
|
|
3
|
+
Version: 0.1.11
|
|
4
|
+
Summary: Example plugin for deepctl
|
|
5
|
+
Author-email: Deepgram <devrel@deepgram.com>
|
|
6
|
+
Maintainer-email: Deepgram <devrel@deepgram.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Keywords: deepgram,cli,plugin,example
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
Requires-Dist: deepctl-core>=0.1.10
|
|
18
|
+
Requires-Dist: click>=8.0.0
|
|
19
|
+
Requires-Dist: rich>=13.0.0
|
|
20
|
+
|
|
21
|
+
# deepctl-plugin-example
|
|
22
|
+
|
|
23
|
+
> Part of [deepctl](https://github.com/deepgram/cli) — Official Deepgram CLI
|
|
24
|
+
|
|
25
|
+
Example plugin for deepctl
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
This package is included with deepctl and does not need to be installed separately.
|
|
30
|
+
|
|
31
|
+
### Install deepctl
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Install with pip
|
|
35
|
+
pip install deepctl
|
|
36
|
+
|
|
37
|
+
# Or install with uv
|
|
38
|
+
uv tool install deepctl
|
|
39
|
+
|
|
40
|
+
# Or install with pipx
|
|
41
|
+
pipx install deepctl
|
|
42
|
+
|
|
43
|
+
# Or run without installing
|
|
44
|
+
uvx deepctl --help
|
|
45
|
+
pipx run deepctl --help
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Commands
|
|
49
|
+
|
|
50
|
+
| Command | Entry Point |
|
|
51
|
+
|---------|-------------|
|
|
52
|
+
| `deepctl example` | `deepctl_plugin_example.command:ExampleCommand` |
|
|
53
|
+
|
|
54
|
+
## Dependencies
|
|
55
|
+
|
|
56
|
+
- `click>=8.0.0`
|
|
57
|
+
- `rich>=13.0.0`
|
|
58
|
+
|
|
59
|
+
## License
|
|
60
|
+
|
|
61
|
+
MIT — see [LICENSE](../../LICENSE)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# deepctl-plugin-example
|
|
2
|
+
|
|
3
|
+
> Part of [deepctl](https://github.com/deepgram/cli) — Official Deepgram CLI
|
|
4
|
+
|
|
5
|
+
Example plugin for deepctl
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
This package is included with deepctl and does not need to be installed separately.
|
|
10
|
+
|
|
11
|
+
### Install deepctl
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Install with pip
|
|
15
|
+
pip install deepctl
|
|
16
|
+
|
|
17
|
+
# Or install with uv
|
|
18
|
+
uv tool install deepctl
|
|
19
|
+
|
|
20
|
+
# Or install with pipx
|
|
21
|
+
pipx install deepctl
|
|
22
|
+
|
|
23
|
+
# Or run without installing
|
|
24
|
+
uvx deepctl --help
|
|
25
|
+
pipx run deepctl --help
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Commands
|
|
29
|
+
|
|
30
|
+
| Command | Entry Point |
|
|
31
|
+
|---------|-------------|
|
|
32
|
+
| `deepctl example` | `deepctl_plugin_example.command:ExampleCommand` |
|
|
33
|
+
|
|
34
|
+
## Dependencies
|
|
35
|
+
|
|
36
|
+
- `click>=8.0.0`
|
|
37
|
+
- `rich>=13.0.0`
|
|
38
|
+
|
|
39
|
+
## License
|
|
40
|
+
|
|
41
|
+
MIT — see [LICENSE](../../LICENSE)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "deepctl-plugin-example"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.11" # x-release-please-version
|
|
8
8
|
description = "Example plugin for deepctl"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -20,7 +20,11 @@ classifiers = [
|
|
|
20
20
|
]
|
|
21
21
|
keywords = ["deepgram", "cli", "plugin", "example"]
|
|
22
22
|
requires-python = ">=3.10"
|
|
23
|
-
dependencies = [
|
|
23
|
+
dependencies = [
|
|
24
|
+
"deepctl-core>=0.1.10",
|
|
25
|
+
"click>=8.0.0",
|
|
26
|
+
"rich>=13.0.0",
|
|
27
|
+
]
|
|
24
28
|
|
|
25
29
|
[project.entry-points."deepctl.plugins"]
|
|
26
30
|
example = "deepctl_plugin_example.command:ExampleCommand"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: deepctl-plugin-example
|
|
3
|
+
Version: 0.1.11
|
|
4
|
+
Summary: Example plugin for deepctl
|
|
5
|
+
Author-email: Deepgram <devrel@deepgram.com>
|
|
6
|
+
Maintainer-email: Deepgram <devrel@deepgram.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Keywords: deepgram,cli,plugin,example
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
Requires-Dist: deepctl-core>=0.1.10
|
|
18
|
+
Requires-Dist: click>=8.0.0
|
|
19
|
+
Requires-Dist: rich>=13.0.0
|
|
20
|
+
|
|
21
|
+
# deepctl-plugin-example
|
|
22
|
+
|
|
23
|
+
> Part of [deepctl](https://github.com/deepgram/cli) — Official Deepgram CLI
|
|
24
|
+
|
|
25
|
+
Example plugin for deepctl
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
This package is included with deepctl and does not need to be installed separately.
|
|
30
|
+
|
|
31
|
+
### Install deepctl
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Install with pip
|
|
35
|
+
pip install deepctl
|
|
36
|
+
|
|
37
|
+
# Or install with uv
|
|
38
|
+
uv tool install deepctl
|
|
39
|
+
|
|
40
|
+
# Or install with pipx
|
|
41
|
+
pipx install deepctl
|
|
42
|
+
|
|
43
|
+
# Or run without installing
|
|
44
|
+
uvx deepctl --help
|
|
45
|
+
pipx run deepctl --help
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Commands
|
|
49
|
+
|
|
50
|
+
| Command | Entry Point |
|
|
51
|
+
|---------|-------------|
|
|
52
|
+
| `deepctl example` | `deepctl_plugin_example.command:ExampleCommand` |
|
|
53
|
+
|
|
54
|
+
## Dependencies
|
|
55
|
+
|
|
56
|
+
- `click>=8.0.0`
|
|
57
|
+
- `rich>=13.0.0`
|
|
58
|
+
|
|
59
|
+
## License
|
|
60
|
+
|
|
61
|
+
MIT — see [LICENSE](../../LICENSE)
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: deepctl-plugin-example
|
|
3
|
-
Version: 0.1.8
|
|
4
|
-
Summary: Example plugin for deepctl
|
|
5
|
-
Author-email: Deepgram <devrel@deepgram.com>
|
|
6
|
-
Maintainer-email: Deepgram <devrel@deepgram.com>
|
|
7
|
-
License-Expression: MIT
|
|
8
|
-
Keywords: deepgram,cli,plugin,example
|
|
9
|
-
Classifier: Development Status :: 3 - Alpha
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
-
Requires-Python: >=3.10
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
Requires-Dist: deepctl-core>=0.1.8
|
|
18
|
-
Requires-Dist: click>=8.0.0
|
|
19
|
-
Requires-Dist: rich>=13.0.0
|
|
20
|
-
|
|
21
|
-
# deepctl Plugin Example
|
|
22
|
-
|
|
23
|
-
An example plugin for deepctl demonstrating how to create and distribute custom commands as separate packages.
|
|
24
|
-
|
|
25
|
-
## Overview
|
|
26
|
-
|
|
27
|
-
This plugin shows how to extend deepctl with custom commands that can be:
|
|
28
|
-
|
|
29
|
-
- Developed independently
|
|
30
|
-
- Distributed via PyPI
|
|
31
|
-
- Installed alongside the CLI
|
|
32
|
-
- Discovered automatically at runtime
|
|
33
|
-
|
|
34
|
-
**Note:** This plugin is NOT a dependency of deepctl. It must be installed separately to demonstrate how the plugin system works for third-party developers. This example plugin is published to PyPI with each deepctl release to ensure the documentation is always testable.
|
|
35
|
-
|
|
36
|
-
## Installation
|
|
37
|
-
|
|
38
|
-
### Development Installation
|
|
39
|
-
|
|
40
|
-
To install the plugin in development mode:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
# From the plugin directory
|
|
44
|
-
pip install -e .
|
|
45
|
-
|
|
46
|
-
# Or using uv
|
|
47
|
-
uv pip install -e .
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Production Installation
|
|
51
|
-
|
|
52
|
-
For users who have deepctl installed globally:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
# Recommended: Using pipx (if deepctl was installed with pipx)
|
|
56
|
-
pipx install deepctl # If not already installed
|
|
57
|
-
pipx inject deepctl deepctl-plugin-example
|
|
58
|
-
|
|
59
|
-
# Alternative: Using pip (only works in development environments)
|
|
60
|
-
pip install deepctl deepctl-plugin-example
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Note:** If you installed deepctl with `uv tool install`, plugin installation requires manual workarounds. We recommend using pipx for the best plugin experience.
|
|
64
|
-
|
|
65
|
-
## Usage
|
|
66
|
-
|
|
67
|
-
Once installed, the plugin command becomes available in the CLI:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
# Basic usage
|
|
71
|
-
deepctl example
|
|
72
|
-
|
|
73
|
-
# Custom greeting
|
|
74
|
-
deepctl example --greeting "Howdy" --name "Partner"
|
|
75
|
-
|
|
76
|
-
# Show plugin system information
|
|
77
|
-
deepctl example --show-info
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## How It Works
|
|
81
|
-
|
|
82
|
-
1. **Entry Point Registration**: The plugin registers itself via the `deepctl.plugins` entry point in `pyproject.toml`
|
|
83
|
-
2. **Command Discovery**: The CLI's PluginManager discovers the plugin at runtime using `importlib.metadata`
|
|
84
|
-
3. **Command Loading**: The plugin's command class is instantiated and added to the CLI
|
|
85
|
-
4. **Execution**: When the user runs the command, the plugin's `handle()` method is called
|
|
86
|
-
|
|
87
|
-
## Creating Your Own Plugin
|
|
88
|
-
|
|
89
|
-
To create your own deepctl plugin:
|
|
90
|
-
|
|
91
|
-
1. **Copy this example package** as a starting point
|
|
92
|
-
2. **Rename the package** and update metadata in `pyproject.toml`
|
|
93
|
-
3. **Implement your command** by modifying the `command.py` file
|
|
94
|
-
4. **Define arguments** in the `get_arguments()` method
|
|
95
|
-
5. **Implement logic** in the `handle()` method
|
|
96
|
-
6. **Test locally** with `pip install -e .`
|
|
97
|
-
7. **Publish to PyPI** when ready
|
|
98
|
-
8. **Users install it** with `pipx inject deepctl your-plugin-name`
|
|
99
|
-
|
|
100
|
-
### Key Requirements
|
|
101
|
-
|
|
102
|
-
- Must inherit from `deepctl_core.BaseCommand`
|
|
103
|
-
- Must implement required properties: `name`, `help`
|
|
104
|
-
- Must implement `handle()` method
|
|
105
|
-
- Must be registered via entry point
|
|
106
|
-
|
|
107
|
-
### Example Command Structure
|
|
108
|
-
|
|
109
|
-
```python
|
|
110
|
-
from deepctl_core import BaseCommand
|
|
111
|
-
|
|
112
|
-
class MyCommand(BaseCommand):
|
|
113
|
-
name = "mycommand"
|
|
114
|
-
help = "Description of my command"
|
|
115
|
-
|
|
116
|
-
def handle(self, config, auth_manager, client, **kwargs):
|
|
117
|
-
# Your command logic here
|
|
118
|
-
pass
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Development
|
|
122
|
-
|
|
123
|
-
### Running Tests
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
uv run pytest
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Building the Package
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
python -m build
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Plugin Capabilities
|
|
136
|
-
|
|
137
|
-
Plugins have access to:
|
|
138
|
-
|
|
139
|
-
- Configuration management via `Config`
|
|
140
|
-
- Authentication via `AuthManager`
|
|
141
|
-
- Deepgram API client via `DeepgramClient`
|
|
142
|
-
- Rich terminal output via `rich`
|
|
143
|
-
- Command-line argument parsing via `click`
|
|
144
|
-
|
|
145
|
-
## License
|
|
146
|
-
|
|
147
|
-
MIT
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
# deepctl Plugin Example
|
|
2
|
-
|
|
3
|
-
An example plugin for deepctl demonstrating how to create and distribute custom commands as separate packages.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
This plugin shows how to extend deepctl with custom commands that can be:
|
|
8
|
-
|
|
9
|
-
- Developed independently
|
|
10
|
-
- Distributed via PyPI
|
|
11
|
-
- Installed alongside the CLI
|
|
12
|
-
- Discovered automatically at runtime
|
|
13
|
-
|
|
14
|
-
**Note:** This plugin is NOT a dependency of deepctl. It must be installed separately to demonstrate how the plugin system works for third-party developers. This example plugin is published to PyPI with each deepctl release to ensure the documentation is always testable.
|
|
15
|
-
|
|
16
|
-
## Installation
|
|
17
|
-
|
|
18
|
-
### Development Installation
|
|
19
|
-
|
|
20
|
-
To install the plugin in development mode:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
# From the plugin directory
|
|
24
|
-
pip install -e .
|
|
25
|
-
|
|
26
|
-
# Or using uv
|
|
27
|
-
uv pip install -e .
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Production Installation
|
|
31
|
-
|
|
32
|
-
For users who have deepctl installed globally:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
# Recommended: Using pipx (if deepctl was installed with pipx)
|
|
36
|
-
pipx install deepctl # If not already installed
|
|
37
|
-
pipx inject deepctl deepctl-plugin-example
|
|
38
|
-
|
|
39
|
-
# Alternative: Using pip (only works in development environments)
|
|
40
|
-
pip install deepctl deepctl-plugin-example
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
**Note:** If you installed deepctl with `uv tool install`, plugin installation requires manual workarounds. We recommend using pipx for the best plugin experience.
|
|
44
|
-
|
|
45
|
-
## Usage
|
|
46
|
-
|
|
47
|
-
Once installed, the plugin command becomes available in the CLI:
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
# Basic usage
|
|
51
|
-
deepctl example
|
|
52
|
-
|
|
53
|
-
# Custom greeting
|
|
54
|
-
deepctl example --greeting "Howdy" --name "Partner"
|
|
55
|
-
|
|
56
|
-
# Show plugin system information
|
|
57
|
-
deepctl example --show-info
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## How It Works
|
|
61
|
-
|
|
62
|
-
1. **Entry Point Registration**: The plugin registers itself via the `deepctl.plugins` entry point in `pyproject.toml`
|
|
63
|
-
2. **Command Discovery**: The CLI's PluginManager discovers the plugin at runtime using `importlib.metadata`
|
|
64
|
-
3. **Command Loading**: The plugin's command class is instantiated and added to the CLI
|
|
65
|
-
4. **Execution**: When the user runs the command, the plugin's `handle()` method is called
|
|
66
|
-
|
|
67
|
-
## Creating Your Own Plugin
|
|
68
|
-
|
|
69
|
-
To create your own deepctl plugin:
|
|
70
|
-
|
|
71
|
-
1. **Copy this example package** as a starting point
|
|
72
|
-
2. **Rename the package** and update metadata in `pyproject.toml`
|
|
73
|
-
3. **Implement your command** by modifying the `command.py` file
|
|
74
|
-
4. **Define arguments** in the `get_arguments()` method
|
|
75
|
-
5. **Implement logic** in the `handle()` method
|
|
76
|
-
6. **Test locally** with `pip install -e .`
|
|
77
|
-
7. **Publish to PyPI** when ready
|
|
78
|
-
8. **Users install it** with `pipx inject deepctl your-plugin-name`
|
|
79
|
-
|
|
80
|
-
### Key Requirements
|
|
81
|
-
|
|
82
|
-
- Must inherit from `deepctl_core.BaseCommand`
|
|
83
|
-
- Must implement required properties: `name`, `help`
|
|
84
|
-
- Must implement `handle()` method
|
|
85
|
-
- Must be registered via entry point
|
|
86
|
-
|
|
87
|
-
### Example Command Structure
|
|
88
|
-
|
|
89
|
-
```python
|
|
90
|
-
from deepctl_core import BaseCommand
|
|
91
|
-
|
|
92
|
-
class MyCommand(BaseCommand):
|
|
93
|
-
name = "mycommand"
|
|
94
|
-
help = "Description of my command"
|
|
95
|
-
|
|
96
|
-
def handle(self, config, auth_manager, client, **kwargs):
|
|
97
|
-
# Your command logic here
|
|
98
|
-
pass
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Development
|
|
102
|
-
|
|
103
|
-
### Running Tests
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
uv run pytest
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Building the Package
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
python -m build
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Plugin Capabilities
|
|
116
|
-
|
|
117
|
-
Plugins have access to:
|
|
118
|
-
|
|
119
|
-
- Configuration management via `Config`
|
|
120
|
-
- Authentication via `AuthManager`
|
|
121
|
-
- Deepgram API client via `DeepgramClient`
|
|
122
|
-
- Rich terminal output via `rich`
|
|
123
|
-
- Command-line argument parsing via `click`
|
|
124
|
-
|
|
125
|
-
## License
|
|
126
|
-
|
|
127
|
-
MIT
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: deepctl-plugin-example
|
|
3
|
-
Version: 0.1.8
|
|
4
|
-
Summary: Example plugin for deepctl
|
|
5
|
-
Author-email: Deepgram <devrel@deepgram.com>
|
|
6
|
-
Maintainer-email: Deepgram <devrel@deepgram.com>
|
|
7
|
-
License-Expression: MIT
|
|
8
|
-
Keywords: deepgram,cli,plugin,example
|
|
9
|
-
Classifier: Development Status :: 3 - Alpha
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
-
Requires-Python: >=3.10
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
Requires-Dist: deepctl-core>=0.1.8
|
|
18
|
-
Requires-Dist: click>=8.0.0
|
|
19
|
-
Requires-Dist: rich>=13.0.0
|
|
20
|
-
|
|
21
|
-
# deepctl Plugin Example
|
|
22
|
-
|
|
23
|
-
An example plugin for deepctl demonstrating how to create and distribute custom commands as separate packages.
|
|
24
|
-
|
|
25
|
-
## Overview
|
|
26
|
-
|
|
27
|
-
This plugin shows how to extend deepctl with custom commands that can be:
|
|
28
|
-
|
|
29
|
-
- Developed independently
|
|
30
|
-
- Distributed via PyPI
|
|
31
|
-
- Installed alongside the CLI
|
|
32
|
-
- Discovered automatically at runtime
|
|
33
|
-
|
|
34
|
-
**Note:** This plugin is NOT a dependency of deepctl. It must be installed separately to demonstrate how the plugin system works for third-party developers. This example plugin is published to PyPI with each deepctl release to ensure the documentation is always testable.
|
|
35
|
-
|
|
36
|
-
## Installation
|
|
37
|
-
|
|
38
|
-
### Development Installation
|
|
39
|
-
|
|
40
|
-
To install the plugin in development mode:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
# From the plugin directory
|
|
44
|
-
pip install -e .
|
|
45
|
-
|
|
46
|
-
# Or using uv
|
|
47
|
-
uv pip install -e .
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### Production Installation
|
|
51
|
-
|
|
52
|
-
For users who have deepctl installed globally:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
# Recommended: Using pipx (if deepctl was installed with pipx)
|
|
56
|
-
pipx install deepctl # If not already installed
|
|
57
|
-
pipx inject deepctl deepctl-plugin-example
|
|
58
|
-
|
|
59
|
-
# Alternative: Using pip (only works in development environments)
|
|
60
|
-
pip install deepctl deepctl-plugin-example
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Note:** If you installed deepctl with `uv tool install`, plugin installation requires manual workarounds. We recommend using pipx for the best plugin experience.
|
|
64
|
-
|
|
65
|
-
## Usage
|
|
66
|
-
|
|
67
|
-
Once installed, the plugin command becomes available in the CLI:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
# Basic usage
|
|
71
|
-
deepctl example
|
|
72
|
-
|
|
73
|
-
# Custom greeting
|
|
74
|
-
deepctl example --greeting "Howdy" --name "Partner"
|
|
75
|
-
|
|
76
|
-
# Show plugin system information
|
|
77
|
-
deepctl example --show-info
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## How It Works
|
|
81
|
-
|
|
82
|
-
1. **Entry Point Registration**: The plugin registers itself via the `deepctl.plugins` entry point in `pyproject.toml`
|
|
83
|
-
2. **Command Discovery**: The CLI's PluginManager discovers the plugin at runtime using `importlib.metadata`
|
|
84
|
-
3. **Command Loading**: The plugin's command class is instantiated and added to the CLI
|
|
85
|
-
4. **Execution**: When the user runs the command, the plugin's `handle()` method is called
|
|
86
|
-
|
|
87
|
-
## Creating Your Own Plugin
|
|
88
|
-
|
|
89
|
-
To create your own deepctl plugin:
|
|
90
|
-
|
|
91
|
-
1. **Copy this example package** as a starting point
|
|
92
|
-
2. **Rename the package** and update metadata in `pyproject.toml`
|
|
93
|
-
3. **Implement your command** by modifying the `command.py` file
|
|
94
|
-
4. **Define arguments** in the `get_arguments()` method
|
|
95
|
-
5. **Implement logic** in the `handle()` method
|
|
96
|
-
6. **Test locally** with `pip install -e .`
|
|
97
|
-
7. **Publish to PyPI** when ready
|
|
98
|
-
8. **Users install it** with `pipx inject deepctl your-plugin-name`
|
|
99
|
-
|
|
100
|
-
### Key Requirements
|
|
101
|
-
|
|
102
|
-
- Must inherit from `deepctl_core.BaseCommand`
|
|
103
|
-
- Must implement required properties: `name`, `help`
|
|
104
|
-
- Must implement `handle()` method
|
|
105
|
-
- Must be registered via entry point
|
|
106
|
-
|
|
107
|
-
### Example Command Structure
|
|
108
|
-
|
|
109
|
-
```python
|
|
110
|
-
from deepctl_core import BaseCommand
|
|
111
|
-
|
|
112
|
-
class MyCommand(BaseCommand):
|
|
113
|
-
name = "mycommand"
|
|
114
|
-
help = "Description of my command"
|
|
115
|
-
|
|
116
|
-
def handle(self, config, auth_manager, client, **kwargs):
|
|
117
|
-
# Your command logic here
|
|
118
|
-
pass
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## Development
|
|
122
|
-
|
|
123
|
-
### Running Tests
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
uv run pytest
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Building the Package
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
python -m build
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Plugin Capabilities
|
|
136
|
-
|
|
137
|
-
Plugins have access to:
|
|
138
|
-
|
|
139
|
-
- Configuration management via `Config`
|
|
140
|
-
- Authentication via `AuthManager`
|
|
141
|
-
- Deepgram API client via `DeepgramClient`
|
|
142
|
-
- Rich terminal output via `rich`
|
|
143
|
-
- Command-line argument parsing via `click`
|
|
144
|
-
|
|
145
|
-
## License
|
|
146
|
-
|
|
147
|
-
MIT
|
|
File without changes
|
|
File without changes
|
{deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example/command.py
RENAMED
|
File without changes
|
{deepctl_plugin_example-0.1.8 → deepctl_plugin_example-0.1.11}/src/deepctl_plugin_example/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|