backend.ai-plugin 24.9.4rc1__tar.gz → 25.15.6__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.
- {backend_ai_plugin-24.9.4rc1/backend.ai_plugin.egg-info → backend_ai_plugin-25.15.6}/PKG-INFO +18 -6
- backend_ai_plugin-25.15.6/ai/backend/plugin/VERSION +1 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/ai/backend/plugin/cli.py +2 -9
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/ai/backend/plugin/entrypoint.py +91 -21
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6/backend.ai_plugin.egg-info}/PKG-INFO +18 -6
- backend_ai_plugin-25.15.6/backend.ai_plugin.egg-info/requires.txt +7 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/setup.py +8 -5
- backend_ai_plugin-24.9.4rc1/ai/backend/plugin/VERSION +0 -1
- backend_ai_plugin-24.9.4rc1/backend.ai_plugin.egg-info/requires.txt +0 -5
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/MANIFEST.in +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/ai/backend/plugin/__init__.py +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/ai/backend/plugin/py.typed +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/SOURCES.txt +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/dependency_links.txt +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/entry_points.txt +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/namespace_packages.txt +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/not-zip-safe +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/top_level.txt +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend_shim.py +0 -0
- {backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/setup.cfg +0 -0
{backend_ai_plugin-24.9.4rc1/backend.ai_plugin.egg-info → backend_ai_plugin-25.15.6}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: backend.ai-plugin
|
|
3
|
-
Version:
|
|
3
|
+
Version: 25.15.6
|
|
4
4
|
Summary: Backend.AI Plugin Subsystem
|
|
5
5
|
Home-page: https://github.com/lablup/backend.ai
|
|
6
6
|
Author: Lablup Inc. and contributors
|
|
@@ -15,16 +15,28 @@ Classifier: Programming Language :: Python :: 3
|
|
|
15
15
|
Classifier: Environment :: No Input/Output (Daemon)
|
|
16
16
|
Classifier: Topic :: Scientific/Engineering
|
|
17
17
|
Classifier: Topic :: Software Development
|
|
18
|
-
Classifier: Development Status ::
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.
|
|
18
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
20
|
Classifier: License :: OSI Approved :: MIT License
|
|
21
|
-
Requires-Python: >=3.
|
|
21
|
+
Requires-Python: >=3.13,<3.14
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
|
-
Requires-Dist: backend.ai-
|
|
23
|
+
Requires-Dist: backend.ai-common==25.15.6
|
|
24
|
+
Requires-Dist: backend.ai-logging==25.15.6
|
|
24
25
|
Requires-Dist: click~=8.1.7
|
|
25
26
|
Requires-Dist: colorama>=0.4.6
|
|
26
27
|
Requires-Dist: tabulate~=0.8.9
|
|
28
|
+
Requires-Dist: types-colorama
|
|
27
29
|
Requires-Dist: types-tabulate
|
|
30
|
+
Dynamic: author
|
|
31
|
+
Dynamic: classifier
|
|
32
|
+
Dynamic: description
|
|
33
|
+
Dynamic: description-content-type
|
|
34
|
+
Dynamic: home-page
|
|
35
|
+
Dynamic: license
|
|
36
|
+
Dynamic: project-url
|
|
37
|
+
Dynamic: requires-dist
|
|
38
|
+
Dynamic: requires-python
|
|
39
|
+
Dynamic: summary
|
|
28
40
|
|
|
29
41
|
Backend.AI Plugin Subsystem
|
|
30
42
|
===========================
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
25.15.6
|
|
@@ -5,7 +5,7 @@ import itertools
|
|
|
5
5
|
import json
|
|
6
6
|
import logging
|
|
7
7
|
from collections import defaultdict
|
|
8
|
-
from typing import
|
|
8
|
+
from typing import Self
|
|
9
9
|
|
|
10
10
|
import click
|
|
11
11
|
import colorama
|
|
@@ -36,14 +36,7 @@ class CLIContext:
|
|
|
36
36
|
self.log_level = log_level
|
|
37
37
|
|
|
38
38
|
def __enter__(self) -> Self:
|
|
39
|
-
|
|
40
|
-
if self.log_level != LogLevel.NOTSET:
|
|
41
|
-
log_config["level"] = self.log_level
|
|
42
|
-
log_config["pkg-ns"] = {
|
|
43
|
-
"": LogLevel.WARNING,
|
|
44
|
-
"ai.backend": self.log_level,
|
|
45
|
-
}
|
|
46
|
-
self._logger = LocalLogger(log_config)
|
|
39
|
+
self._logger = LocalLogger(log_level=self.log_level)
|
|
47
40
|
self._logger.__enter__()
|
|
48
41
|
return self
|
|
49
42
|
|
|
@@ -78,27 +78,81 @@ _default_glob_excluded_patterns = [
|
|
|
78
78
|
"ai/backend/runner",
|
|
79
79
|
"ai/backend/kernel",
|
|
80
80
|
"wheelhouse",
|
|
81
|
+
"tools",
|
|
81
82
|
]
|
|
82
83
|
|
|
84
|
+
_optimized_glob_search_patterns = {
|
|
85
|
+
# These patterns only apply to scanning BUILD files in dev setups and pex distributions.
|
|
86
|
+
# They do not affect standard package entrypoint searches.
|
|
87
|
+
# NOTE: most entrypoint declaration in BUILD files are in the package's top-level only!
|
|
88
|
+
"backendai_cli_v10": ["ai/backend/*", "ai/backend/appproxy/*"],
|
|
89
|
+
"backendai_network_manager_v1": ["ai/backend/*"],
|
|
90
|
+
"backendai_event_dispatcher_v20": ["ai/backend/*", "ai/backend/appproxy/*"],
|
|
91
|
+
"backendai_stats_monitor_v20": ["ai/backend/*", "ai/backend/appproxy/*"],
|
|
92
|
+
"backendai_error_monitor_v20": ["ai/backend/*", "ai/backend/appproxy/*"],
|
|
93
|
+
"backendai_hook_v20": ["ai/backend/*"],
|
|
94
|
+
"backendai_webapp_v20": ["ai/backend/*"],
|
|
95
|
+
"backendai_scheduler_v10": ["ai/backend/manager"],
|
|
96
|
+
"backendai_agentselector_v10": ["ai/backend/manager"],
|
|
97
|
+
}
|
|
83
98
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
99
|
+
|
|
100
|
+
def _glob(
|
|
101
|
+
base_path: Path,
|
|
102
|
+
filename: str,
|
|
103
|
+
excluded_patterns: Iterable[str],
|
|
104
|
+
match_patterns: Iterable[str] | None = None,
|
|
105
|
+
) -> Iterator[Path]:
|
|
106
|
+
q: collections.deque[tuple[Path, bool]] = collections.deque()
|
|
107
|
+
assert base_path.is_dir()
|
|
108
|
+
q.append((base_path, False))
|
|
87
109
|
while q:
|
|
88
|
-
search_path = q.pop()
|
|
89
|
-
|
|
110
|
+
search_path, suffix_match = q.pop()
|
|
111
|
+
|
|
112
|
+
# Check if current directory matches any pattern and we should yield files from it
|
|
113
|
+
current_matches = False
|
|
114
|
+
if match_patterns is not None:
|
|
115
|
+
current_matches = any(search_path.match(pattern) for pattern in match_patterns)
|
|
116
|
+
|
|
90
117
|
for item in search_path.iterdir():
|
|
91
118
|
if item.is_dir():
|
|
92
|
-
if
|
|
119
|
+
if item.name == "__pycache__":
|
|
93
120
|
continue
|
|
94
|
-
if
|
|
121
|
+
if item.name.startswith("."):
|
|
95
122
|
continue
|
|
96
|
-
if any(
|
|
123
|
+
if any(item.match(pattern) for pattern in excluded_patterns):
|
|
97
124
|
continue
|
|
98
|
-
|
|
125
|
+
|
|
126
|
+
# Determine if we should queue this directory
|
|
127
|
+
should_queue = False
|
|
128
|
+
new_suffix_match = False
|
|
129
|
+
|
|
130
|
+
if match_patterns is None:
|
|
131
|
+
# No patterns specified - queue all non-excluded directories
|
|
132
|
+
should_queue = True
|
|
133
|
+
new_suffix_match = False
|
|
134
|
+
elif not suffix_match:
|
|
135
|
+
# Haven't found a matching directory yet - check if this one matches
|
|
136
|
+
if any(item.match(pattern) for pattern in match_patterns):
|
|
137
|
+
should_queue = True
|
|
138
|
+
new_suffix_match = True
|
|
139
|
+
else:
|
|
140
|
+
# Keep searching - queue without suffix match
|
|
141
|
+
should_queue = True
|
|
142
|
+
new_suffix_match = False
|
|
143
|
+
else:
|
|
144
|
+
# Already found a matching directory - only queue if this also matches
|
|
145
|
+
if any(item.match(pattern) for pattern in match_patterns):
|
|
146
|
+
should_queue = True
|
|
147
|
+
new_suffix_match = True
|
|
148
|
+
|
|
149
|
+
if should_queue:
|
|
150
|
+
q.append((item, new_suffix_match))
|
|
99
151
|
else:
|
|
100
152
|
if item.name == filename:
|
|
101
|
-
|
|
153
|
+
# Yield file if no patterns or current directory matches
|
|
154
|
+
if match_patterns is None or current_matches:
|
|
155
|
+
yield item
|
|
102
156
|
|
|
103
157
|
|
|
104
158
|
def scan_entrypoint_from_buildscript(group_name: str) -> Iterator[EntryPoint]:
|
|
@@ -108,20 +162,36 @@ def scan_entrypoint_from_buildscript(group_name: str) -> Iterator[EntryPoint]:
|
|
|
108
162
|
log.debug(
|
|
109
163
|
"scan_entrypoint_from_buildscript(%r): Namespace path: %s", group_name, ai_backend_ns_path
|
|
110
164
|
)
|
|
111
|
-
|
|
165
|
+
match_patterns = _optimized_glob_search_patterns.get(group_name, None)
|
|
166
|
+
# First, it is invoked in PEX or temporary test environment generated by Pantsbuild.
|
|
167
|
+
# In the test environment, BUILD files are NOT copied, so the plugin discovery will rely on the
|
|
168
|
+
# followed build-root search below.
|
|
169
|
+
for buildscript_path in _glob(
|
|
170
|
+
ai_backend_ns_path, "BUILD", _default_glob_excluded_patterns, match_patterns
|
|
171
|
+
):
|
|
112
172
|
for entrypoint in extract_entrypoints_from_buildscript(group_name, buildscript_path):
|
|
113
173
|
entrypoints[entrypoint.name] = entrypoint
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
174
|
+
if os.environ.get("SCIE", None) is None:
|
|
175
|
+
# Override with the entrypoints found in the current build-root directory.
|
|
176
|
+
try:
|
|
177
|
+
build_root = find_build_root()
|
|
178
|
+
except ValueError:
|
|
179
|
+
pass
|
|
180
|
+
else:
|
|
181
|
+
src_path = build_root / "src"
|
|
182
|
+
log.debug("scan_entrypoint_from_buildscript(%r): current src: %s", group_name, src_path)
|
|
183
|
+
for buildscript_path in _glob(
|
|
184
|
+
src_path, "BUILD", _default_glob_excluded_patterns, match_patterns
|
|
185
|
+
):
|
|
186
|
+
for entrypoint in extract_entrypoints_from_buildscript(
|
|
187
|
+
group_name, buildscript_path
|
|
188
|
+
):
|
|
189
|
+
entrypoints[entrypoint.name] = entrypoint
|
|
119
190
|
else:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
entrypoints[entrypoint.name] = entrypoint
|
|
191
|
+
log.debug(
|
|
192
|
+
"scan_entrypoint_from_buildscript(%r): skipping 'src' when executed inside the SCIE environment",
|
|
193
|
+
group_name,
|
|
194
|
+
)
|
|
125
195
|
yield from entrypoints.values()
|
|
126
196
|
|
|
127
197
|
|
{backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6/backend.ai_plugin.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: backend.ai-plugin
|
|
3
|
-
Version:
|
|
3
|
+
Version: 25.15.6
|
|
4
4
|
Summary: Backend.AI Plugin Subsystem
|
|
5
5
|
Home-page: https://github.com/lablup/backend.ai
|
|
6
6
|
Author: Lablup Inc. and contributors
|
|
@@ -15,16 +15,28 @@ Classifier: Programming Language :: Python :: 3
|
|
|
15
15
|
Classifier: Environment :: No Input/Output (Daemon)
|
|
16
16
|
Classifier: Topic :: Scientific/Engineering
|
|
17
17
|
Classifier: Topic :: Software Development
|
|
18
|
-
Classifier: Development Status ::
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.
|
|
18
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
20
|
Classifier: License :: OSI Approved :: MIT License
|
|
21
|
-
Requires-Python: >=3.
|
|
21
|
+
Requires-Python: >=3.13,<3.14
|
|
22
22
|
Description-Content-Type: text/markdown
|
|
23
|
-
Requires-Dist: backend.ai-
|
|
23
|
+
Requires-Dist: backend.ai-common==25.15.6
|
|
24
|
+
Requires-Dist: backend.ai-logging==25.15.6
|
|
24
25
|
Requires-Dist: click~=8.1.7
|
|
25
26
|
Requires-Dist: colorama>=0.4.6
|
|
26
27
|
Requires-Dist: tabulate~=0.8.9
|
|
28
|
+
Requires-Dist: types-colorama
|
|
27
29
|
Requires-Dist: types-tabulate
|
|
30
|
+
Dynamic: author
|
|
31
|
+
Dynamic: classifier
|
|
32
|
+
Dynamic: description
|
|
33
|
+
Dynamic: description-content-type
|
|
34
|
+
Dynamic: home-page
|
|
35
|
+
Dynamic: license
|
|
36
|
+
Dynamic: project-url
|
|
37
|
+
Dynamic: requires-dist
|
|
38
|
+
Dynamic: requires-python
|
|
39
|
+
Dynamic: summary
|
|
28
40
|
|
|
29
41
|
Backend.AI Plugin Subsystem
|
|
30
42
|
===========================
|
|
@@ -15,8 +15,8 @@ setup(**{
|
|
|
15
15
|
'Environment :: No Input/Output (Daemon)',
|
|
16
16
|
'Topic :: Scientific/Engineering',
|
|
17
17
|
'Topic :: Software Development',
|
|
18
|
-
'Development Status ::
|
|
19
|
-
'Programming Language :: Python :: 3.
|
|
18
|
+
'Development Status :: 5 - Production/Stable',
|
|
19
|
+
'Programming Language :: Python :: 3.13',
|
|
20
20
|
'License :: OSI Approved :: MIT License',
|
|
21
21
|
],
|
|
22
22
|
'description': 'Backend.AI Plugin Subsystem',
|
|
@@ -26,11 +26,14 @@ setup(**{
|
|
|
26
26
|
],
|
|
27
27
|
},
|
|
28
28
|
'install_requires': (
|
|
29
|
-
"""backend.ai-
|
|
29
|
+
"""backend.ai-common==25.15.6
|
|
30
|
+
""",
|
|
31
|
+
"""backend.ai-logging==25.15.6
|
|
30
32
|
""",
|
|
31
33
|
'click~=8.1.7',
|
|
32
34
|
'colorama>=0.4.6',
|
|
33
35
|
'tabulate~=0.8.9',
|
|
36
|
+
'types-colorama',
|
|
34
37
|
'types-tabulate',
|
|
35
38
|
),
|
|
36
39
|
'license': 'MIT',
|
|
@@ -59,9 +62,9 @@ Package Structure
|
|
|
59
62
|
'Documentation': 'https://docs.backend.ai/',
|
|
60
63
|
'Source': 'https://github.com/lablup/backend.ai',
|
|
61
64
|
},
|
|
62
|
-
'python_requires': '>=3.
|
|
65
|
+
'python_requires': '>=3.13,<3.14',
|
|
63
66
|
'url': 'https://github.com/lablup/backend.ai',
|
|
64
|
-
'version': """
|
|
67
|
+
'version': """25.15.6
|
|
65
68
|
""",
|
|
66
69
|
'zip_safe': False,
|
|
67
70
|
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
24.09.4rc1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{backend_ai_plugin-24.9.4rc1 → backend_ai_plugin-25.15.6}/backend.ai_plugin.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|