agentic-kit-common 0.0.1__py3-none-any.whl → 0.0.2__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.
Potentially problematic release.
This version of agentic-kit-common might be problematic. Click here for more details.
- agentic_kit_common/orm/__init__.py +2 -0
- agentic_kit_common/orm/base.py +81 -0
- agentic_kit_common/orm/manager.py +145 -0
- agentic_kit_common/orm/session.py +67 -0
- agentic_kit_common/web/__init__.py +0 -0
- agentic_kit_common/web/http/__init__.py +0 -0
- agentic_kit_common/web/http/response.py +46 -0
- {agentic_kit_common-0.0.1.dist-info → agentic_kit_common-0.0.2.dist-info}/METADATA +4 -2
- agentic_kit_common-0.0.2.dist-info/RECORD +17 -0
- test/test_minio.py +3 -3
- agentic_kit_common-0.0.1.dist-info/RECORD +0 -10
- /agentic_kit_common/{Minio_db → minio}/__init__.py +0 -0
- /agentic_kit_common/{Minio_db → minio}/minio_manager.py +0 -0
- {agentic_kit_common-0.0.1.dist-info → agentic_kit_common-0.0.2.dist-info}/WHEEL +0 -0
- {agentic_kit_common-0.0.1.dist-info → agentic_kit_common-0.0.2.dist-info}/top_level.txt +0 -0
- {agentic_kit_common/Minio_db → test}/config.py +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from sqlalchemy.orm import declarative_base
|
|
2
|
+
|
|
3
|
+
from .session import get_db_session
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class CRUDMixin(object):
|
|
7
|
+
"""Mixin that adds convenience methods for CRUD (create, read, update, delete) operations."""
|
|
8
|
+
|
|
9
|
+
@classmethod
|
|
10
|
+
def create(cls, commit=True, db=None, **kwargs):
|
|
11
|
+
"""Create a new record and save it the database."""
|
|
12
|
+
|
|
13
|
+
def __create(_instance):
|
|
14
|
+
if commit:
|
|
15
|
+
db.add(_instance)
|
|
16
|
+
db.commit()
|
|
17
|
+
return _instance
|
|
18
|
+
else:
|
|
19
|
+
db.add(_instance)
|
|
20
|
+
db.flush()
|
|
21
|
+
return _instance
|
|
22
|
+
|
|
23
|
+
instance = cls(**kwargs)
|
|
24
|
+
if db:
|
|
25
|
+
return __create(_instance=instance)
|
|
26
|
+
else:
|
|
27
|
+
with get_db_session() as db:
|
|
28
|
+
return __create(_instance=instance)
|
|
29
|
+
|
|
30
|
+
def update(self, commit=True, db=None, **kwargs):
|
|
31
|
+
"""Update specific fields of a record."""
|
|
32
|
+
for attr, value in kwargs.items():
|
|
33
|
+
setattr(self, attr, value)
|
|
34
|
+
|
|
35
|
+
def _update(_obj, _db):
|
|
36
|
+
if _db:
|
|
37
|
+
_db.add(_obj)
|
|
38
|
+
if commit:
|
|
39
|
+
_db.commit()
|
|
40
|
+
else:
|
|
41
|
+
_db.flush()
|
|
42
|
+
return self
|
|
43
|
+
else:
|
|
44
|
+
with get_db_session() as _db:
|
|
45
|
+
_db.add(_obj)
|
|
46
|
+
if commit:
|
|
47
|
+
_db.commit()
|
|
48
|
+
else:
|
|
49
|
+
_db.flush()
|
|
50
|
+
return _obj
|
|
51
|
+
|
|
52
|
+
return _update(self, _db=db)
|
|
53
|
+
|
|
54
|
+
def delete(self, commit=True, db=None):
|
|
55
|
+
"""Remove the record from the database."""
|
|
56
|
+
if db:
|
|
57
|
+
db.delete(self)
|
|
58
|
+
return commit and db.commit()
|
|
59
|
+
else:
|
|
60
|
+
with get_db_session() as db:
|
|
61
|
+
db.delete(self)
|
|
62
|
+
return commit and db.commit()
|
|
63
|
+
|
|
64
|
+
def soft_delete(self, commit=True, db=None):
|
|
65
|
+
"""Remove the record from the database."""
|
|
66
|
+
return self.update(commit=commit, db=db, **{
|
|
67
|
+
'active': False
|
|
68
|
+
})
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
Base = declarative_base()
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class Model(CRUDMixin, Base):
|
|
75
|
+
"""Base model class that includes CRUD convenience methods."""
|
|
76
|
+
|
|
77
|
+
__abstract__ = True
|
|
78
|
+
|
|
79
|
+
def __init__(self, **kwargs):
|
|
80
|
+
for k, v in kwargs.items():
|
|
81
|
+
setattr(self, k, v)
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import time
|
|
2
|
+
from abc import abstractmethod
|
|
3
|
+
from sqlalchemy import asc, desc
|
|
4
|
+
|
|
5
|
+
from .session import get_db_session
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class BaseOrmManager(object):
|
|
9
|
+
"""Model orm manager"""
|
|
10
|
+
|
|
11
|
+
_model_cls = None
|
|
12
|
+
|
|
13
|
+
@classmethod
|
|
14
|
+
def get_by_id(cls, obj_id, close_session_after_curd=False):
|
|
15
|
+
with get_db_session() as db:
|
|
16
|
+
query = db.query(cls._model_cls) \
|
|
17
|
+
.filter(cls._model_cls.id == obj_id) \
|
|
18
|
+
.filter(cls._model_cls.active == True)
|
|
19
|
+
|
|
20
|
+
if hasattr(cls._model_cls, 'active'):
|
|
21
|
+
query = query.filter(cls._model_cls.active == 1)
|
|
22
|
+
|
|
23
|
+
_obj = query.first()
|
|
24
|
+
|
|
25
|
+
if close_session_after_curd:
|
|
26
|
+
db.close()
|
|
27
|
+
|
|
28
|
+
return _obj or None
|
|
29
|
+
|
|
30
|
+
@classmethod
|
|
31
|
+
def get_object_or_none(cls, close_session_after_curd=False, **lookup):
|
|
32
|
+
"""Get object using lookup parameters, i.e pk=1"""
|
|
33
|
+
if lookup:
|
|
34
|
+
with get_db_session() as db:
|
|
35
|
+
res = db.query(cls._model_cls).filter_by(**lookup).first()
|
|
36
|
+
|
|
37
|
+
if close_session_after_curd:
|
|
38
|
+
db.close()
|
|
39
|
+
|
|
40
|
+
return res
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def get_objects_all(cls, close_session_after_curd=False, **lookup):
|
|
44
|
+
if lookup:
|
|
45
|
+
with get_db_session() as db:
|
|
46
|
+
res = db.query(cls._model_cls).filter_by(**lookup).all()
|
|
47
|
+
|
|
48
|
+
if close_session_after_curd:
|
|
49
|
+
db.close()
|
|
50
|
+
|
|
51
|
+
return res
|
|
52
|
+
|
|
53
|
+
@classmethod
|
|
54
|
+
def get_list(cls, paginate=False, close_session_after_curd=False, **kwargs):
|
|
55
|
+
with get_db_session() as db:
|
|
56
|
+
query = db.query(cls._model_cls)
|
|
57
|
+
# """分页查询示例"""
|
|
58
|
+
# # 填充具体查询条件
|
|
59
|
+
for column, value in kwargs.items():
|
|
60
|
+
if not hasattr(cls._model_cls, column):
|
|
61
|
+
continue
|
|
62
|
+
# 根据值类型,来组装查询条件
|
|
63
|
+
if isinstance(value, tuple):
|
|
64
|
+
# 范围查询
|
|
65
|
+
query = query.filter(getattr(cls._model_cls, column).between(*value))
|
|
66
|
+
elif isinstance(value, list):
|
|
67
|
+
# in查询
|
|
68
|
+
query = query.filter(getattr(cls._model_cls, column).in_(value))
|
|
69
|
+
elif isinstance(value, str) and value.find("%") != -1:
|
|
70
|
+
# 模糊查询
|
|
71
|
+
query = query.filter(getattr(cls._model_cls, column).like(value))
|
|
72
|
+
else:
|
|
73
|
+
# 等值查询
|
|
74
|
+
query = query.filter(getattr(cls._model_cls, column) == value)
|
|
75
|
+
|
|
76
|
+
if kwargs.get('active', None) is None and hasattr(cls._model_cls, 'active'):
|
|
77
|
+
query = query.filter(cls._model_cls.active == 1)
|
|
78
|
+
|
|
79
|
+
if paginate:
|
|
80
|
+
# 总数
|
|
81
|
+
total = query.count()
|
|
82
|
+
|
|
83
|
+
# 计算分页offset
|
|
84
|
+
page = kwargs.get('page', 1)
|
|
85
|
+
per_page = kwargs.get('per_page', 20)
|
|
86
|
+
offset = (page - 1) * per_page
|
|
87
|
+
|
|
88
|
+
# 排序
|
|
89
|
+
if hasattr(cls._model_cls, 'sort'):
|
|
90
|
+
query = query.order_by(asc(cls._model_cls.sort))
|
|
91
|
+
query = query.order_by(desc(cls._model_cls.id)).offset(offset).limit(per_page)
|
|
92
|
+
|
|
93
|
+
# 查询记录
|
|
94
|
+
result = query.all()
|
|
95
|
+
pagination = {
|
|
96
|
+
'total': total,
|
|
97
|
+
'page': page,
|
|
98
|
+
'per_page': per_page,
|
|
99
|
+
'items': result
|
|
100
|
+
}
|
|
101
|
+
res = pagination
|
|
102
|
+
# return pagination
|
|
103
|
+
else:
|
|
104
|
+
res = query.all()
|
|
105
|
+
# return res
|
|
106
|
+
|
|
107
|
+
if close_session_after_curd:
|
|
108
|
+
db.close()
|
|
109
|
+
|
|
110
|
+
return res
|
|
111
|
+
|
|
112
|
+
@classmethod
|
|
113
|
+
def create_obj(cls, commit=False, **kwargs):
|
|
114
|
+
now = int(time.time())
|
|
115
|
+
obj = cls._model_cls.create(commit=commit, created_at=now, updated_at=now, active=True, **kwargs)
|
|
116
|
+
return obj
|
|
117
|
+
|
|
118
|
+
@classmethod
|
|
119
|
+
def update_obj(cls, obj, commit=False, **kwargs):
|
|
120
|
+
"""更新obj信息"""
|
|
121
|
+
obj.update(commit=commit, updated_at=int(time.time()), **kwargs)
|
|
122
|
+
return obj
|
|
123
|
+
|
|
124
|
+
@classmethod
|
|
125
|
+
def soft_delete_obj(cls, obj):
|
|
126
|
+
"""软删除obj信息"""
|
|
127
|
+
cls.update_obj(obj, **{
|
|
128
|
+
'active': False
|
|
129
|
+
})
|
|
130
|
+
return obj
|
|
131
|
+
|
|
132
|
+
@classmethod
|
|
133
|
+
def delete_obj(cls, obj, commit=False):
|
|
134
|
+
"""删除obj信息"""
|
|
135
|
+
obj.delete(commit=commit)
|
|
136
|
+
return obj
|
|
137
|
+
|
|
138
|
+
@classmethod
|
|
139
|
+
@abstractmethod
|
|
140
|
+
def render(cls, obj):
|
|
141
|
+
raise NotImplemented()
|
|
142
|
+
|
|
143
|
+
@classmethod
|
|
144
|
+
def render_simple(cls, obj):
|
|
145
|
+
cls.render(obj)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
from contextlib import contextmanager
|
|
3
|
+
|
|
4
|
+
from sqlalchemy import create_engine, text
|
|
5
|
+
from sqlalchemy.exc import OperationalError
|
|
6
|
+
from sqlalchemy.orm import sessionmaker, scoped_session
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
sqlalchemy_database_uri = os.getenv("SQLALCHEMY_DATABASE_URI", "sqlite:///fallback.db")
|
|
10
|
+
sqlalchemy_database_name = os.getenv("SQLALCHEMY_DATABASE_NAME", "default")
|
|
11
|
+
sqlalchemy_echo = os.getenv("SQLALCHEMY_ECHO", False)
|
|
12
|
+
sqlalchemy_pool_size = os.getenv("SQLALCHEMY_POOL_SIZE", 10)
|
|
13
|
+
sqlalchemy_max_overflow = os.getenv("SQLALCHEMY_MAX_OVERFLOW", 5)
|
|
14
|
+
sqlalchemy_pool_pre_ping = os.getenv("SQLALCHEMY_POOL_PRE_PING", True)
|
|
15
|
+
sqlalchemy_pool_recycle = os.getenv("SQLALCHEMY_POOL_RECYCLE", 1800)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# 创建引擎
|
|
19
|
+
engine = create_engine(
|
|
20
|
+
url=f'{sqlalchemy_database_uri}/{sqlalchemy_database_name}',
|
|
21
|
+
echo=sqlalchemy_echo, # 是否打印SQL
|
|
22
|
+
pool_size=sqlalchemy_pool_size, # 连接池的大小,指定同时在连接池中保持的数据库连接数,默认:5
|
|
23
|
+
max_overflow=sqlalchemy_max_overflow, # 超出连接池大小的连接数,超过这个数量的连接将被丢弃,默认: 5
|
|
24
|
+
pool_pre_ping=sqlalchemy_pool_pre_ping,
|
|
25
|
+
pool_recycle=sqlalchemy_pool_recycle,
|
|
26
|
+
# connect_args={ "use_unicode": True}
|
|
27
|
+
)
|
|
28
|
+
# print("Database engine created")
|
|
29
|
+
# print(f"DATABASE_URL: {settings.sqlalchemy_database_uri}")
|
|
30
|
+
# 封装获取会话
|
|
31
|
+
_Session = scoped_session(sessionmaker(bind=engine, expire_on_commit=False, autocommit=False, autoflush=False))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
# 实例化SessionLocal类
|
|
35
|
+
@contextmanager
|
|
36
|
+
def get_db_session(auto_commit_by_exit=False, auto_close=False):
|
|
37
|
+
"""使用上下文管理资源关闭"""
|
|
38
|
+
_session = _Session()
|
|
39
|
+
try:
|
|
40
|
+
yield _session
|
|
41
|
+
# 退出时,是否自动提交
|
|
42
|
+
if auto_commit_by_exit:
|
|
43
|
+
_session.commit()
|
|
44
|
+
except OperationalError as e:
|
|
45
|
+
# 捕获连接超时异常并重新初始化会话
|
|
46
|
+
_session.close()
|
|
47
|
+
_session = _Session()
|
|
48
|
+
yield _session
|
|
49
|
+
if auto_commit_by_exit:
|
|
50
|
+
_session.commit()
|
|
51
|
+
except Exception as e:
|
|
52
|
+
_session.rollback()
|
|
53
|
+
raise e
|
|
54
|
+
finally:
|
|
55
|
+
if auto_close:
|
|
56
|
+
_session.close()
|
|
57
|
+
|
|
58
|
+
async def keepalive():
|
|
59
|
+
while True:
|
|
60
|
+
try:
|
|
61
|
+
with get_db_session() as session:
|
|
62
|
+
session.execute(text("SELECT 1"))
|
|
63
|
+
session.commit()
|
|
64
|
+
except Exception as e:
|
|
65
|
+
print(f"Keepalive failed: {e}")
|
|
66
|
+
keepalive()
|
|
67
|
+
await asyncio.sleep(300) # 每5分钟执行一次
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from fastapi.responses import JSONResponse
|
|
2
|
+
from pydantic import BaseModel, Field
|
|
3
|
+
from typing import Any, Optional, Union
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ResponseCode:
|
|
7
|
+
SUCCESS = 0
|
|
8
|
+
ERROR = -1
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ResponseMessage:
|
|
12
|
+
SUCCESS = 'success'
|
|
13
|
+
ERROR = 'error'
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def default_data():
|
|
17
|
+
return ''
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BaseResponse(BaseModel):
|
|
21
|
+
code: int = Field(0, description='API status code')
|
|
22
|
+
message: str = Field('success', description='API status message')
|
|
23
|
+
data: Optional[Union[Any, None]] = Field(default_factory=default_data, description='API data')
|
|
24
|
+
|
|
25
|
+
class Config:
|
|
26
|
+
json_schema_extra = {
|
|
27
|
+
'example': {
|
|
28
|
+
'code': ResponseCode.SUCCESS,
|
|
29
|
+
'message': ResponseMessage.SUCCESS,
|
|
30
|
+
'data': None
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@classmethod
|
|
35
|
+
def success(cls, data: Optional[Any] = '', message: str = ResponseMessage.SUCCESS, code=ResponseCode.SUCCESS):
|
|
36
|
+
return BaseResponse(code=code, message=message, data=data)
|
|
37
|
+
|
|
38
|
+
@classmethod
|
|
39
|
+
def error(cls, data: Optional[Any] = '', message: str = ResponseMessage.ERROR, code=ResponseCode.ERROR):
|
|
40
|
+
return BaseResponse(code=code, message=message, data=data)
|
|
41
|
+
|
|
42
|
+
@classmethod
|
|
43
|
+
def json_resp(cls, data=None, status_code: int = 200):
|
|
44
|
+
if data is None:
|
|
45
|
+
data = {}
|
|
46
|
+
return JSONResponse(status_code=status_code, content=data)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentic-kit-common
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.2
|
|
4
4
|
Summary: Common utilities and tools for agentic kit ecosystem, including MinIO manager and other shared components
|
|
5
5
|
Home-page:
|
|
6
6
|
Author: manson
|
|
@@ -14,7 +14,7 @@ Classifier: Topic :: System :: Distributed Computing
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
16
16
|
Classifier: Operating System :: OS Independent
|
|
17
|
-
Requires-Python: >=3.
|
|
17
|
+
Requires-Python: >=3.12
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
19
|
Requires-Dist: minio
|
|
20
20
|
Requires-Dist: urllib3
|
|
@@ -24,6 +24,8 @@ Requires-Dist: langchain_core
|
|
|
24
24
|
Requires-Dist: langgraph
|
|
25
25
|
Requires-Dist: langchain_community
|
|
26
26
|
Requires-Dist: langchain_experimental
|
|
27
|
+
Requires-Dist: mysql-connector-python
|
|
28
|
+
Requires-Dist: sqlalchemy
|
|
27
29
|
Dynamic: author
|
|
28
30
|
Dynamic: author-email
|
|
29
31
|
Dynamic: classifier
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
agentic_kit_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
agentic_kit_common/minio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
agentic_kit_common/minio/minio_manager.py,sha256=PzoUWn0YqXTHx1UClbkwLkIUmv5O4aSDc7eVf08qOzs,21494
|
|
4
|
+
agentic_kit_common/orm/__init__.py,sha256=wqY81g3P7FftFvLK5SaxFJzNNxrQwtmcb4RCXOSAZa8,71
|
|
5
|
+
agentic_kit_common/orm/base.py,sha256=QIura_i2nIY2XeA3-KkO2loLNbEAoJK2qx0hu_8nhYU,2277
|
|
6
|
+
agentic_kit_common/orm/manager.py,sha256=HU8dHNb76uTo2KMOXdNG3nn3uea7vPYIFPO61SQoNIU,4648
|
|
7
|
+
agentic_kit_common/orm/session.py,sha256=SAvyuozdR_66aUVN_Xyr3hTLce6JfQg37AyM62ZF_jE,2477
|
|
8
|
+
agentic_kit_common/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
agentic_kit_common/web/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
+
agentic_kit_common/web/http/response.py,sha256=uxd_MRHsFfQ0pUeHITDQD8tuOY6fo6IJ0MO6uL62AlM,1347
|
|
11
|
+
test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
+
test/config.py,sha256=VMcvfWnuWZKr_p0rC57i90jTq-XVsRuVzfEIe1C7Drg,3804
|
|
13
|
+
test/test_minio.py,sha256=TOkX8A2pPkjrwAIH88xBZmFpDc1ZgTk1QS6mtubOZ-Y,2308
|
|
14
|
+
agentic_kit_common-0.0.2.dist-info/METADATA,sha256=kYBa9ym7gfukbY082u17EL4mWEr2zycKvPr-IhEkfFc,7492
|
|
15
|
+
agentic_kit_common-0.0.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
16
|
+
agentic_kit_common-0.0.2.dist-info/top_level.txt,sha256=nEKDlp84vqKSVWssGcxyuIsTqWLhMo45xqMs2GK4Dgg,24
|
|
17
|
+
agentic_kit_common-0.0.2.dist-info/RECORD,,
|
test/test_minio.py
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import sys
|
|
1
2
|
import unittest
|
|
2
3
|
from datetime import timedelta
|
|
3
4
|
from pathlib import Path
|
|
4
|
-
import sys
|
|
5
5
|
|
|
6
6
|
project_root = Path(__file__).parent.parent
|
|
7
7
|
sys.path.insert(0, str(project_root))
|
|
8
8
|
|
|
9
|
-
from agentic_kit_common.
|
|
10
|
-
from
|
|
9
|
+
from agentic_kit_common.minio.minio_manager import MinioManager
|
|
10
|
+
from .config import load_config
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class MyTestCase(unittest.TestCase):
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
agentic_kit_common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
agentic_kit_common/Minio_db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
agentic_kit_common/Minio_db/config.py,sha256=VMcvfWnuWZKr_p0rC57i90jTq-XVsRuVzfEIe1C7Drg,3804
|
|
4
|
-
agentic_kit_common/Minio_db/minio_manager.py,sha256=PzoUWn0YqXTHx1UClbkwLkIUmv5O4aSDc7eVf08qOzs,21494
|
|
5
|
-
test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
test/test_minio.py,sha256=W86h_2BpesePI_9-nIiL8eAHrrXUwVJOjvYkAuNzyhU,2338
|
|
7
|
-
agentic_kit_common-0.0.1.dist-info/METADATA,sha256=qyqGtMaoNDtMW3cEQ83MYwNgy8bkSK5U4LXlYLqVTGs,7428
|
|
8
|
-
agentic_kit_common-0.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
9
|
-
agentic_kit_common-0.0.1.dist-info/top_level.txt,sha256=nEKDlp84vqKSVWssGcxyuIsTqWLhMo45xqMs2GK4Dgg,24
|
|
10
|
-
agentic_kit_common-0.0.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|