seerapi-models 1.0.0__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.
@@ -0,0 +1,141 @@
1
+ from typing import TYPE_CHECKING, Optional
2
+
3
+ from sqlmodel import Field, Relationship, SQLModel
4
+
5
+ from seerapi_models.build_model import (
6
+ BaseCategoryModel,
7
+ BaseResModel,
8
+ ConvertToORM,
9
+ )
10
+ from seerapi_models.common import EidEffectInUse, EidEffectInUseORM, ResourceRef
11
+
12
+ if TYPE_CHECKING:
13
+ from .pet import Pet, PetORM
14
+
15
+
16
+ class PetSoulmarkLink(SQLModel, table=True):
17
+ pet_id: int | None = Field(default=None, primary_key=True, foreign_key='pet.id')
18
+ soulmark_id: int | None = Field(
19
+ default=None, primary_key=True, foreign_key='soulmark.id'
20
+ )
21
+
22
+
23
+ class SoulmarkTagLink(SQLModel, table=True):
24
+ soulmark_id: int | None = Field(
25
+ default=None, primary_key=True, foreign_key='soulmark.id'
26
+ )
27
+ tag_id: int | None = Field(
28
+ default=None, primary_key=True, foreign_key='soulmark_tag.id'
29
+ )
30
+
31
+
32
+ class SoulmarkBase(BaseResModel):
33
+ desc: str = Field(description='魂印描述')
34
+ desc_formatting_adjustment: str | None = Field(
35
+ default=None,
36
+ description='魂印描述的"可格式化版本",用于呈现Unity端中的描述排版形式',
37
+ )
38
+ pve_effective: bool | None = Field(
39
+ default=None,
40
+ description='该魂印是否PVE生效,如果为null则表示无法通过数据层面推断其是否生效',
41
+ )
42
+ intensified: bool = Field(description='是否是强化的魂印')
43
+ is_adv: bool = Field(description='是否是神谕觉醒魂印')
44
+
45
+ @classmethod
46
+ def resource_name(cls) -> str:
47
+ return 'soulmark'
48
+
49
+
50
+ class Soulmark(SoulmarkBase, ConvertToORM['SoulmarkORM']):
51
+ pet: list[ResourceRef['Pet']] = Field(description='可持有该魂印的精灵ID')
52
+ effect: EidEffectInUse | None = Field(description='魂印效果')
53
+ tag: list[ResourceRef['SoulmarkTagCategory']] = Field(
54
+ description='魂印标签,例如强攻,断回合等'
55
+ )
56
+ intensified_to: ResourceRef['Soulmark'] | None = Field(
57
+ description='强化后的魂印资源,该字段仅在该魂印有强化版时有效,否则为null'
58
+ )
59
+ from_: ResourceRef['Soulmark'] | None = Field(
60
+ description='魂印资源,该字段仅在该魂印是强化/觉醒魂印时有效',
61
+ schema_extra={'serialization_alias': 'from'},
62
+ )
63
+
64
+ @classmethod
65
+ def get_orm_model(cls) -> type['SoulmarkORM']:
66
+ return SoulmarkORM
67
+
68
+ def to_orm(self) -> 'SoulmarkORM':
69
+ return SoulmarkORM(
70
+ id=self.id,
71
+ desc=self.desc,
72
+ intensified=self.intensified,
73
+ is_adv=self.is_adv,
74
+ effect_in_use=self.effect.to_orm() if self.effect else None,
75
+ intensified_to_id=self.intensified_to.id if self.intensified_to else None,
76
+ desc_formatting_adjustment=self.desc_formatting_adjustment,
77
+ pve_effective=self.pve_effective,
78
+ )
79
+
80
+
81
+ class SoulmarkORM(SoulmarkBase, table=True):
82
+ pet: list['PetORM'] = Relationship(
83
+ back_populates='soulmark', link_model=PetSoulmarkLink
84
+ )
85
+ tag: list['SoulmarkTagORM'] = Relationship(
86
+ back_populates='soulmark', link_model=SoulmarkTagLink
87
+ )
88
+ effect_in_use_id: int | None = Field(
89
+ default=None, foreign_key='eid_effect_in_use.id'
90
+ )
91
+ effect_in_use: EidEffectInUseORM | None = Relationship(
92
+ back_populates='soulmark',
93
+ )
94
+
95
+ from_: Optional['SoulmarkORM'] = Relationship(
96
+ back_populates='intensified_to',
97
+ sa_relationship_kwargs={
98
+ # "foreign_keys": "[SoulmarkORM.from_id]",
99
+ # "primaryjoin": "SoulmarkORM.from_id == SoulmarkORM.id",
100
+ # "remote_side": "SoulmarkORM.id",
101
+ 'uselist': False,
102
+ },
103
+ )
104
+ intensified_to_id: int | None = Field(default=None, foreign_key='soulmark.id')
105
+ intensified_to: Optional['SoulmarkORM'] = Relationship(
106
+ back_populates='from_',
107
+ sa_relationship_kwargs={
108
+ 'foreign_keys': '[SoulmarkORM.intensified_to_id]',
109
+ 'primaryjoin': 'SoulmarkORM.intensified_to_id == SoulmarkORM.id',
110
+ 'remote_side': 'SoulmarkORM.id',
111
+ 'uselist': False,
112
+ },
113
+ )
114
+
115
+
116
+ class SoulmarkTagBase(BaseCategoryModel):
117
+ name: str = Field(description='魂印标签名称')
118
+
119
+ @classmethod
120
+ def resource_name(cls) -> str:
121
+ return 'soulmark_tag'
122
+
123
+
124
+ class SoulmarkTagCategory(SoulmarkTagBase, ConvertToORM['SoulmarkTagORM']):
125
+ soulmark: list[ResourceRef] = Field(default_factory=list, description='魂印列表')
126
+
127
+ @classmethod
128
+ def get_orm_model(cls) -> type['SoulmarkTagORM']:
129
+ return SoulmarkTagORM
130
+
131
+ def to_orm(self) -> 'SoulmarkTagORM':
132
+ return SoulmarkTagORM(
133
+ id=self.id,
134
+ name=self.name,
135
+ )
136
+
137
+
138
+ class SoulmarkTagORM(SoulmarkTagBase, table=True):
139
+ soulmark: list['SoulmarkORM'] = Relationship(
140
+ back_populates='tag', link_model=SoulmarkTagLink
141
+ )
@@ -0,0 +1,336 @@
1
+ from typing import TYPE_CHECKING
2
+
3
+ from sqlmodel import JSON, Field, Relationship, SQLModel
4
+
5
+ from .build_model import (
6
+ BaseCategoryModel,
7
+ BaseResModel,
8
+ BaseResModelWithOptionalId,
9
+ ConvertToORM,
10
+ )
11
+ from .common import ResourceRef, SkillEffectInUse, SkillEffectInUseORM
12
+
13
+ if TYPE_CHECKING:
14
+ from .element_type import TypeCombination, TypeCombinationORM
15
+ from .mintmark import MintmarkORM
16
+ from .pet import SkillInPetORM
17
+
18
+
19
+ class SkillEffectLink(SQLModel, table=True):
20
+ """技能效果链接表"""
21
+
22
+ skill_id: int | None = Field(default=None, foreign_key='skill.id', primary_key=True)
23
+ effect_in_use_id: int | None = Field(
24
+ default=None, foreign_key='skill_effect_in_use.id', primary_key=True
25
+ )
26
+
27
+
28
+ class SkillFriendSkillEffectLink(SQLModel, table=True):
29
+ """伙伴系统强化技能效果链接表"""
30
+
31
+ skill_id: int | None = Field(default=None, foreign_key='skill.id', primary_key=True)
32
+ effect_in_use_id: int | None = Field(
33
+ default=None, foreign_key='skill_effect_in_use.id', primary_key=True
34
+ )
35
+
36
+
37
+ class EffectParamLink(SQLModel, table=True):
38
+ """技能效果参数链接表"""
39
+
40
+ effect_id: int | None = Field(
41
+ default=None, foreign_key='skill_effect_type.id', primary_key=True
42
+ )
43
+ param_in_type_id: int | None = Field(
44
+ default=None, foreign_key='skill_effect_param_in_type.id', primary_key=True
45
+ )
46
+
47
+
48
+ class SkillEffectTypeTagLink(SQLModel, table=True):
49
+ effect_id: int | None = Field(
50
+ default=None, foreign_key='skill_effect_type.id', primary_key=True
51
+ )
52
+ tag_id: int | None = Field(
53
+ default=None, foreign_key='skill_effect_type_tag.id', primary_key=True
54
+ )
55
+
56
+
57
+ class SkillEffectParam(BaseResModel, ConvertToORM['SkillEffectParamORM']):
58
+ infos: list[str] | None = Field(
59
+ default=None,
60
+ description='参数类型描述列表',
61
+ sa_type=JSON,
62
+ )
63
+
64
+ @classmethod
65
+ def resource_name(cls) -> str:
66
+ return 'skill_effect_param'
67
+
68
+ @classmethod
69
+ def get_orm_model(cls) -> type['SkillEffectParamORM']:
70
+ return SkillEffectParamORM
71
+
72
+ def to_orm(self) -> 'SkillEffectParamORM':
73
+ return SkillEffectParamORM(
74
+ id=self.id,
75
+ infos=self.infos,
76
+ )
77
+
78
+
79
+ class SkillEffectParamORM(SkillEffectParam, table=True):
80
+ in_type: list['SkillEffectParamInTypeORM'] = Relationship(
81
+ back_populates='param',
82
+ )
83
+
84
+
85
+ class SkillEffectParamInTypeBase(BaseResModelWithOptionalId):
86
+ position: int = Field(description='参数位置')
87
+
88
+ @classmethod
89
+ def resource_name(cls) -> str:
90
+ return 'skill_effect_param_in_type'
91
+
92
+
93
+ class SkillEffectParamInType(
94
+ SkillEffectParamInTypeBase, ConvertToORM['SkillEffectParamInTypeORM']
95
+ ):
96
+ param: ResourceRef[SkillEffectParam] = Field(description='参数类型引用')
97
+
98
+ @classmethod
99
+ def get_orm_model(cls) -> type['SkillEffectParamInTypeORM']:
100
+ return SkillEffectParamInTypeORM
101
+
102
+ def to_orm(self) -> 'SkillEffectParamInTypeORM':
103
+ return SkillEffectParamInTypeORM(
104
+ id=self.id,
105
+ param_id=self.param.id,
106
+ position=self.position,
107
+ )
108
+
109
+
110
+ class SkillEffectParamInTypeORM(SkillEffectParamInTypeBase, table=True):
111
+ param_id: int = Field(foreign_key='skill_effect_param.id')
112
+ param: 'SkillEffectParamORM' = Relationship(back_populates='in_type')
113
+ effect: 'SkillEffectTypeORM' = Relationship(
114
+ back_populates='param', link_model=EffectParamLink
115
+ )
116
+
117
+
118
+ class SkillEffectTypeBase(BaseResModel):
119
+ """描述一条技能效果类型"""
120
+
121
+ args_num: int = Field(description='参数数量')
122
+ info: str = Field(description='效果描述')
123
+ info_formatting_adjustment: str | None = Field(
124
+ default=None,
125
+ description='效果描述的"可格式化版本",用于呈现Unity端中的多行描述形式',
126
+ )
127
+ pve_effective: bool = Field(description='该效果是否PVE生效')
128
+
129
+ @classmethod
130
+ def resource_name(cls) -> str:
131
+ return 'skill_effect_type'
132
+
133
+
134
+ class SkillEffectType(SkillEffectTypeBase, ConvertToORM['SkillEffectTypeORM']):
135
+ param: list[SkillEffectParamInType] | None = Field(
136
+ default=None, description='参数类型列表,描述参数类型和参数位置'
137
+ )
138
+ skill: list[ResourceRef['Skill']] = Field(
139
+ default_factory=list, description='使用该效果的技能列表'
140
+ )
141
+ tag: list[ResourceRef['SkillEffectTypeTag']] = Field(
142
+ default_factory=list, description='标签列表'
143
+ )
144
+
145
+ @classmethod
146
+ def get_orm_model(cls) -> type['SkillEffectTypeORM']:
147
+ return SkillEffectTypeORM
148
+
149
+ def to_orm(self) -> 'SkillEffectTypeORM':
150
+ return SkillEffectTypeORM(
151
+ id=self.id,
152
+ args_num=self.args_num,
153
+ info=self.info,
154
+ pve_effective=self.pve_effective,
155
+ info_formatting_adjustment=self.info_formatting_adjustment,
156
+ )
157
+
158
+
159
+ class SkillEffectTypeORM(SkillEffectTypeBase, table=True):
160
+ param: list['SkillEffectParamInTypeORM'] = Relationship(
161
+ back_populates='effect', link_model=EffectParamLink
162
+ )
163
+ tag: list['SkillEffectTypeTagORM'] = Relationship(
164
+ back_populates='effect', link_model=SkillEffectTypeTagLink
165
+ )
166
+ in_use: list['SkillEffectInUseORM'] = Relationship(back_populates='effect')
167
+
168
+
169
+ class SkillCategoryBase(BaseCategoryModel):
170
+ name: str = Field(description='技能分类名称')
171
+
172
+ @classmethod
173
+ def resource_name(cls) -> str:
174
+ return 'skill_category'
175
+
176
+
177
+ class SkillCategory(SkillCategoryBase, ConvertToORM['SkillCategoryORM']):
178
+ skill: list[ResourceRef['Skill']] = Field(
179
+ default_factory=list, description='使用该分类的技能列表'
180
+ )
181
+
182
+ @classmethod
183
+ def get_orm_model(cls) -> type['SkillCategoryORM']:
184
+ return SkillCategoryORM
185
+
186
+ def to_orm(self) -> 'SkillCategoryORM':
187
+ return SkillCategoryORM(
188
+ id=self.id,
189
+ name=self.name,
190
+ )
191
+
192
+
193
+ class SkillCategoryORM(SkillCategoryBase, table=True):
194
+ skill: list['SkillORM'] = Relationship(back_populates='category')
195
+
196
+
197
+ class SkillHideEffectBase(BaseCategoryModel):
198
+ name: str = Field(description='技能隐藏效果名称')
199
+ description: str = Field(description='技能隐藏效果描述')
200
+
201
+ @classmethod
202
+ def resource_name(cls) -> str:
203
+ return 'skill_hide_effect'
204
+
205
+
206
+ class SkillHideEffect(SkillHideEffectBase, ConvertToORM['SkillHideEffectORM']):
207
+ skill: list[ResourceRef['Skill']] = Field(
208
+ default_factory=list, description='使用该隐藏效果的技能列表'
209
+ )
210
+
211
+ @classmethod
212
+ def get_orm_model(cls) -> type['SkillHideEffectORM']:
213
+ return SkillHideEffectORM
214
+
215
+ def to_orm(self) -> 'SkillHideEffectORM':
216
+ return SkillHideEffectORM(
217
+ id=self.id,
218
+ name=self.name,
219
+ description=self.description,
220
+ )
221
+
222
+
223
+ class SkillHideEffectORM(SkillHideEffectBase, table=True):
224
+ skill: list['SkillORM'] = Relationship(back_populates='hide_effect')
225
+
226
+
227
+ class SkillEffectTypeTagBase(BaseCategoryModel):
228
+ name: str = Field(description='标签名称')
229
+
230
+ @classmethod
231
+ def resource_name(cls) -> str:
232
+ return 'skill_effect_type_tag'
233
+
234
+
235
+ class SkillEffectTypeTag(SkillEffectTypeTagBase, ConvertToORM['SkillEffectTypeTagORM']):
236
+ effect: list[ResourceRef['SkillEffectType']] = Field(
237
+ default_factory=list, description='技能效果类型列表'
238
+ )
239
+
240
+ @classmethod
241
+ def get_orm_model(cls) -> type['SkillEffectTypeTagORM']:
242
+ return SkillEffectTypeTagORM
243
+
244
+ def to_orm(self) -> 'SkillEffectTypeTagORM':
245
+ return SkillEffectTypeTagORM(id=self.id, name=self.name)
246
+
247
+
248
+ class SkillEffectTypeTagORM(SkillEffectTypeTagBase, table=True):
249
+ effect: list['SkillEffectTypeORM'] = Relationship(
250
+ back_populates='tag', link_model=SkillEffectTypeTagLink
251
+ )
252
+
253
+
254
+ class SkillBase(BaseResModel):
255
+ name: str = Field(description='技能名称')
256
+ power: int = Field(description='技能威力')
257
+ max_pp: int = Field(description='技能最大PP')
258
+ accuracy: int = Field(description='技能命中率')
259
+ crit_rate: float | None = Field(
260
+ description='技能暴击率, 该技能无法暴击时为null(例如属性技能)'
261
+ )
262
+ priority: int = Field(description='技能优先级')
263
+ must_hit: bool = Field(description='技能是否必定命中')
264
+ info: str | None = Field(default=None, description='技能描述')
265
+
266
+ @classmethod
267
+ def resource_name(cls) -> str:
268
+ return 'skill'
269
+
270
+
271
+ class Skill(SkillBase, ConvertToORM['SkillORM']):
272
+ category: ResourceRef[SkillCategory] = Field(description='技能分类')
273
+ type: ResourceRef['TypeCombination'] = Field(description='技能属性')
274
+ learned_by_pet: list[ResourceRef] = Field(
275
+ default_factory=list, description='可学习该技能的精灵列表'
276
+ )
277
+ skill_effect: list[SkillEffectInUse] = Field(
278
+ default_factory=list, description='技能效果列表'
279
+ )
280
+ friend_skill_effect: list[SkillEffectInUse] = Field(
281
+ default_factory=list,
282
+ description='旧版伙伴系统强化后的技能效果',
283
+ )
284
+ hide_effect: ResourceRef[SkillHideEffect] | None = Field(
285
+ default=None, description='技能隐藏效果'
286
+ )
287
+ # mintmark: list[ResourceRef['SkillMintmark']] = Field(
288
+ # default_factory=list, description='技能刻印列表'
289
+ # )
290
+
291
+ @classmethod
292
+ def get_orm_model(cls) -> 'type[SkillORM]':
293
+ return SkillORM
294
+
295
+ def to_orm(self) -> 'SkillORM':
296
+ return SkillORM(
297
+ id=self.id,
298
+ name=self.name,
299
+ power=self.power,
300
+ max_pp=self.max_pp,
301
+ accuracy=self.accuracy,
302
+ crit_rate=self.crit_rate,
303
+ priority=self.priority,
304
+ must_hit=self.must_hit,
305
+ info=self.info,
306
+ category_id=self.category.id,
307
+ type_id=self.type.id,
308
+ hide_effect_id=self.hide_effect.id if self.hide_effect else None,
309
+ )
310
+
311
+
312
+ class SkillORM(SkillBase, table=True):
313
+ category_id: int = Field(foreign_key='skill_category.id')
314
+ category: SkillCategoryORM = Relationship(back_populates='skill')
315
+ type_id: int = Field(foreign_key='element_type_combination.id')
316
+ type: 'TypeCombinationORM' = Relationship(
317
+ back_populates='skill',
318
+ )
319
+ mintmark: list['MintmarkORM'] = Relationship(
320
+ back_populates='skill',
321
+ sa_relationship_kwargs={
322
+ 'secondary': 'skillmintmarklink',
323
+ },
324
+ )
325
+ skill_effect: list[SkillEffectInUseORM] = Relationship(
326
+ back_populates='skill', link_model=SkillEffectLink
327
+ )
328
+ friend_skill_effect: list[SkillEffectInUseORM] = Relationship(
329
+ back_populates='skill', link_model=SkillFriendSkillEffectLink
330
+ )
331
+ hide_effect_id: int | None = Field(default=None, foreign_key='skill_hide_effect.id')
332
+ hide_effect: SkillHideEffectORM | None = Relationship(back_populates='skill')
333
+
334
+ pet_links: list['SkillInPetORM'] = Relationship(
335
+ back_populates='skill',
336
+ )
@@ -0,0 +1,120 @@
1
+ Metadata-Version: 2.3
2
+ Name: seerapi-models
3
+ Version: 1.0.0
4
+ Summary: SeerAPI 数据模型/ORM 定义
5
+ Keywords: seerapi,models,orm
6
+ Author: Nattsu39
7
+ Author-email: Nattsu39 <Nattsu39@outlook.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2025 SeerAPI
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ Classifier: Operating System :: OS Independent
30
+ Classifier: Development Status :: 4 - Beta
31
+ Classifier: Intended Audience :: Developers
32
+ Classifier: License :: OSI Approved :: MIT License
33
+ Classifier: Programming Language :: Python :: 3.10
34
+ Classifier: Programming Language :: Python :: 3.11
35
+ Classifier: Programming Language :: Python :: 3.12
36
+ Classifier: Programming Language :: Python :: 3.13
37
+ Classifier: Programming Language :: Python :: 3.14
38
+ Requires-Dist: sqlmodel>=0.0.27
39
+ Requires-Python: >=3.10
40
+ Project-URL: Homepage, https://github.com/SeerAPI/seerapi-models
41
+ Project-URL: Repository, https://github.com/SeerAPI/seerapi-models
42
+ Description-Content-Type: text/markdown
43
+
44
+ # seerapi-models
45
+
46
+ SeerAPI 数据模型/ORM 定义,用于前后端开发。
47
+
48
+ ## 安装
49
+ 使用 uv:
50
+
51
+ ```bash
52
+ uv add seerapi-models
53
+ ```
54
+ 或者使用 pip:
55
+
56
+ ```bash
57
+ pip install seerapi-models
58
+ ```
59
+ 也可以使用其他包管理器,如 poetry 等。
60
+ ## 开发环境部署
61
+
62
+ ### 使用 uv 部署
63
+
64
+ 1. **安装 uv**
65
+ ```bash
66
+ # macOS/Linux
67
+ curl -LsSf https://astral.sh/uv/install.sh | sh
68
+
69
+ # Windows
70
+ powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
71
+ ```
72
+
73
+ 2. **克隆项目**
74
+ ```bash
75
+ git clone https://github.com/SeerAPI/seerapi-models.git
76
+ cd seerapi-models
77
+ ```
78
+
79
+ 3. **安装依赖**
80
+ ```bash
81
+ # 同步项目依赖
82
+ uv sync
83
+ ```
84
+
85
+ 4. **运行开发环境**
86
+ ```bash
87
+ # 在项目虚拟环境中运行 Python
88
+ uv run python
89
+
90
+ # 运行测试
91
+ uv run pytest
92
+
93
+ # 运行代码检查
94
+ uv run ruff check
95
+ uv run ruff format
96
+ ```
97
+
98
+ ### 开发容器 (推荐)
99
+
100
+ 项目提供了 Dev Container 配置,支持一键部署开发环境:
101
+
102
+ 1. 使用 VS Code 打开项目
103
+ 2. 安装 Dev Containers 扩展
104
+ 3. 按 `Ctrl+Shift+P` 打开命令面板
105
+ 4. 选择 "Dev Containers: Reopen in Container"
106
+
107
+ 容器会自动安装:
108
+ - Python 3.10
109
+ - uv 包管理器
110
+ - Ruff 代码检查工具
111
+ - 相关 VS Code 扩展
112
+
113
+ ### 环境要求
114
+
115
+ - Python >= 3.10
116
+ - uv >= 0.9.0 (推荐使用最新版)
117
+
118
+ ## 许可证
119
+
120
+ 本项目基于 [MIT License](LICENSE) 开源。
@@ -0,0 +1,26 @@
1
+ seerapi_models/__init__.py,sha256=JIgZ_mkMiL9LE4_1qZo1Vp7EFOT45QnYNLcK4v7jF-c,5138
2
+ seerapi_models/_utils.py,sha256=wHqRRVBbM7r7pNQ9H8xIPpKmdK0BTyubBnchkTjHiwQ,733
3
+ seerapi_models/achievement.py,sha256=FdRRXRM0b3-lALep2uFUYurB_wv453_jE0A9gCCmB8U,6858
4
+ seerapi_models/battle_effect.py,sha256=syvOAkuGgdevftMN5U7Wg5Nd4_PGlu-0enUEDYAWS9I,2343
5
+ seerapi_models/build_model/__init__.py,sha256=jEGDRnUkwnBBE93s6n3ODG-G3W5FyGVJIn9fCRrt45w,1417
6
+ seerapi_models/common.py,sha256=zbVxIkGDN7vN6B-6tw7jycfI-2pkWzu_mBwNxmyEu6E,11852
7
+ seerapi_models/effect.py,sha256=iM16lDpWa5E7pFn7FfmULmPSYvhHIf_JW05mx8mgroA,3245
8
+ seerapi_models/element_type.py,sha256=MZqAvBZhJX37UbZhz5q2q5Ix8K0aPGbgdXcPCaMhpPk,3730
9
+ seerapi_models/items/__init__.py,sha256=gYeCjJ4m1a-lt3fHKZ3ZyN6AHDwrm5B6I4KysIkqhuw,1691
10
+ seerapi_models/items/_common.py,sha256=w7-qnPyd9uBcM66Rh4U8uoK93DaFjqwoqAB8BTHSDak,2723
11
+ seerapi_models/items/enegry_bead.py,sha256=8h_-m2ZLt1w8PJKIvLcUPlOxfv2-i4XSUc4iPTsy4CI,2921
12
+ seerapi_models/items/equip.py,sha256=nohdYA_LoRi1KOOrIwtkU0vOpr7sEEIwFiQseIvsUUg,11883
13
+ seerapi_models/items/mintmark_gem.py,sha256=TVyl9aSD6XbxKdqMwjbIqcI_I6aiiNPnj7L7wCIXtsg,8947
14
+ seerapi_models/items/skill_activation_item.py,sha256=W8wiyIop50zID5PAxmgXX_nSGRUaYcKXXJcgp7HIW8k,1551
15
+ seerapi_models/items/skill_stone.py,sha256=0ua-InclXkbpfz14tCQJ0-Y1nxRCCGuyz3gEQYWQpJ4,4805
16
+ seerapi_models/metadata.py,sha256=fDjD2-RN4HpDXxmSEv2c-uv8ZSpHz5xW3mlc2cEaeBo,1590
17
+ seerapi_models/mintmark.py,sha256=p-2sIqNUr_jhVBWlPgnH1aN6WVMua-y0Tggd-USr5K4,14558
18
+ seerapi_models/pet/__init__.py,sha256=ngwouhp8inh9YhDAHtGGro43O3U1MEoLCzEzcZMQSM8,1307
19
+ seerapi_models/pet/pet.py,sha256=RnajMHjK_Q3kQFmlHOq7ZknCU2Jp558_WwB5ACdR5JI,16920
20
+ seerapi_models/pet/pet_skin.py,sha256=lo2o_29EkxU3QVAg2Tj6rd5nCQfOUkHeP2uBYys-QH4,2525
21
+ seerapi_models/pet/petbook.py,sha256=buoIdykOXwCZe4zWgWefR18aLSKcaR0MJryFJk2sMdI,3958
22
+ seerapi_models/pet/soulmark.py,sha256=b1ahX3O-gvw8yCkM_7_jncx8ao4cbTXgB9OXGQXLzBU,4837
23
+ seerapi_models/skill.py,sha256=TVpqv5V2IvyjL4gUXgCucOD3h7mHMPPvBxrH-KIk3qo,10960
24
+ seerapi_models-1.0.0.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
25
+ seerapi_models-1.0.0.dist-info/METADATA,sha256=U2XfJnQABC6EjQicXouL8aa9cBn5S9rRSCMo7LDDclM,3498
26
+ seerapi_models-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: uv 0.8.24
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any