Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_35024513
milvus
提交
cd0a112f
milvus
项目概览
qq_35024513
/
milvus
与 Fork 源项目一致
Fork自
milvus / milvus
通知
14
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
cd0a112f
编写于
10月 26, 2019
作者:
P
peng.xu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add plugins base mixin
上级
1d39ec75
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
43 addition
and
36 deletion
+43
-36
shards/discovery/factory.py
shards/discovery/factory.py
+4
-36
shards/utils/plugins/__init__.py
shards/utils/plugins/__init__.py
+39
-0
未找到文件。
shards/discovery/factory.py
浏览文件 @
cd0a112f
import
os
import
logging
from
functools
import
partial
from
utils.pluginextension
import
MiPluginBase
as
PluginBase
from
discovery
import
DiscoveryConfig
from
utils.plugins
import
BaseMixin
logger
=
logging
.
getLogger
(
__name__
)
here
=
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
))
get_path
=
partial
(
os
.
path
.
join
,
here
)
PLUGIN_PACKAGE_NAME
=
'discovery.plugins'
plugin_base
=
PluginBase
(
package
=
PLUGIN_PACKAGE_NAME
,
searchpath
=
[
get_path
(
'./plugins'
)])
class
DiscoveryFactory
(
object
):
class
DiscoveryFactory
(
BaseMixin
):
PLUGIN_TYPE
=
'Discovery'
def
__init__
(
self
,
searchpath
=
None
):
self
.
plugin_package_name
=
PLUGIN_PACKAGE_NAME
self
.
class_map
=
{}
searchpath
=
searchpath
if
searchpath
else
[]
searchpath
=
[
searchpath
]
if
isinstance
(
searchpath
,
str
)
else
searchpath
self
.
source
=
plugin_base
.
make_plugin_source
(
searchpath
=
searchpath
,
identifier
=
self
.
__class__
.
__name__
)
for
plugin_name
in
self
.
source
.
list_plugins
():
plugin
=
self
.
source
.
load_plugin
(
plugin_name
)
plugin
.
setup
(
self
)
super
().
__init__
(
searchpath
=
searchpath
,
package_name
=
PLUGIN_PACKAGE_NAME
)
def
on_plugin_setup
(
self
,
plugin_class
):
name
=
getattr
(
plugin_class
,
'name'
,
plugin_class
.
__name__
)
self
.
class_map
[
name
.
lower
()]
=
plugin_class
def
plugin
(
self
,
name
):
return
self
.
class_map
.
get
(
name
,
None
)
def
create
(
self
,
class_name
,
**
kwargs
):
def
_create
(
self
,
plugin_class
,
**
kwargs
):
conn_mgr
=
kwargs
.
pop
(
'conn_mgr'
,
None
)
if
not
conn_mgr
:
raise
RuntimeError
(
'Please pass conn_mgr to create discovery!'
)
if
not
class_name
:
raise
RuntimeError
(
'Please specify
\'
{}
\'
class_name first!'
.
format
(
self
.
PLUGIN_TYPE
))
plugin_class
=
self
.
plugin
(
class_name
.
lower
())
if
not
plugin_class
:
raise
RuntimeError
(
'{} Plugin
\'
{}
\'
Not Installed!'
.
format
(
self
.
PLUGIN_TYPE
,
class_name
))
plugin_config
=
DiscoveryConfig
.
Create
()
plugin
=
plugin_class
.
create
(
plugin_config
=
plugin_config
,
conn_mgr
=
conn_mgr
,
**
kwargs
)
return
plugin
shards/utils/plugins/__init__.py
0 → 100644
浏览文件 @
cd0a112f
import
os
import
inspect
from
functools
import
partial
from
utils.pluginextension
import
MiPluginBase
as
PluginBase
class
BaseMixin
(
object
):
def
__init__
(
self
,
package_name
,
searchpath
=
None
):
self
.
plugin_package_name
=
package_name
caller_path
=
os
.
path
.
dirname
(
inspect
.
stack
()[
1
][
1
])
get_path
=
partial
(
os
.
path
.
join
,
caller_path
)
plugin_base
=
PluginBase
(
package
=
self
.
plugin_package_name
,
searchpath
=
[
get_path
(
'./plugins'
)])
self
.
class_map
=
{}
searchpath
=
searchpath
if
searchpath
else
[]
searchpath
=
[
searchpath
]
if
isinstance
(
searchpath
,
str
)
else
searchpath
self
.
source
=
plugin_base
.
make_plugin_source
(
searchpath
=
searchpath
,
identifier
=
self
.
__class__
.
__name__
)
for
plugin_name
in
self
.
source
.
list_plugins
():
plugin
=
self
.
source
.
load_plugin
(
plugin_name
)
plugin
.
setup
(
self
)
def
on_plugin_setup
(
self
,
plugin_class
):
name
=
getattr
(
plugin_class
,
'name'
,
plugin_class
.
__name__
)
self
.
class_map
[
name
.
lower
()]
=
plugin_class
def
plugin
(
self
,
name
):
return
self
.
class_map
.
get
(
name
,
None
)
def
create
(
self
,
class_name
,
**
kwargs
):
if
not
class_name
:
raise
RuntimeError
(
'Please specify
\'
{}
\'
class_name first!'
.
format
(
self
.
PLUGIN_TYPE
))
plugin_class
=
self
.
plugin
(
class_name
.
lower
())
if
not
plugin_class
:
raise
RuntimeError
(
'{} Plugin
\'
{}
\'
Not Installed!'
.
format
(
self
.
PLUGIN_TYPE
,
class_name
))
return
self
.
_create
(
plugin_class
,
**
kwargs
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录