xync-schema 0.6.72__py3-none-any.whl → 0.6.73.dev3__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.
xync_schema/enums.py CHANGED
@@ -57,11 +57,13 @@ class TradeType(IntEnum):
57
57
 
58
58
  class PmType(IntEnum):
59
59
  bank = 0
60
- web_wallet = 1
60
+ emoney = 1
61
61
  cash = 2
62
+ card = 4
62
63
  gift_card = 3
63
- credit_card = 4
64
64
  IFSC = 5
65
+ SBP = 6
66
+ phone = 7
65
67
 
66
68
 
67
69
  class TaskType(IntEnum):
xync_schema/models.py CHANGED
@@ -66,12 +66,12 @@ class Ex(Model):
66
66
 
67
67
  pms: fields.ManyToManyRelation["Pm"]
68
68
  curs: fields.ManyToManyRelation[Cur]
69
- pmcurs: fields.ManyToManyRelation["Pmcur"] = fields.ManyToManyField("models.Pmcur", through="pmcurex")
69
+ # pmcurs: fields.ManyToManyRelation["Pmcur"] = fields.ManyToManyField("models.Pmcur", through="pmcurex")
70
70
  coins: fields.ManyToManyRelation[Coin]
71
71
 
72
- contragents: fields.ReverseRelation["Contragent"]
72
+ actors: fields.ReverseRelation["Actor"]
73
73
  pmexs: fields.ReverseRelation["Pmex"]
74
- pairs: fields.ReverseRelation["Pair"]
74
+ pairexs: fields.ReverseRelation["PairEx"]
75
75
  # deps: fields.ReverseRelation["Dep"]
76
76
  # tests: fields.ReverseRelation["TestEx"]
77
77
 
@@ -82,11 +82,11 @@ class Ex(Model):
82
82
  class PydanticMeta(Model.PydanticMeta):
83
83
  include = "name", "logo"
84
84
 
85
- def client(self, agent: "Agent" = None):
85
+ def client(self):
86
86
  module_name = f"xync_client.{self.name}.ex"
87
87
  __import__(module_name)
88
88
  client = sys.modules[module_name].ExClient
89
- return client(self, agent)
89
+ return client(self)
90
90
 
91
91
 
92
92
  class Curex(BaseModel):
@@ -117,37 +117,57 @@ class Coinex(BaseModel):
117
117
  unique_together = (("ex_id", "coin_id"), ("ex_id", "exid"))
118
118
 
119
119
 
120
- class Pair(Model, TsTrait):
120
+ class Pair(Model):
121
121
  id = fields.SmallIntField(True)
122
122
  coin: fields.ForeignKeyRelation[Coin] = fields.ForeignKeyField("models.Coin", related_name="pairs")
123
123
  cur: fields.ForeignKeyRelation[Cur] = fields.ForeignKeyField("models.Cur", related_name="pairs")
124
+
125
+ _name = {"coin__ticker", "cur__ticker"}
126
+
127
+ class Meta:
128
+ table_description = "Coin/Currency pairs"
129
+ unique_together = (("coin", "cur"),)
130
+
131
+
132
+ class PairEx(Model, TsTrait):
133
+ pair: fields.ForeignKeyRelation[Pair] = fields.ForeignKeyField("models.Pair", related_name="pairexs")
134
+ pair_id: int
124
135
  fee: float = fields.FloatField(default=0)
125
136
  ex: fields.ForeignKeyRelation[Ex] = fields.ForeignKeyField("models.Ex", related_name="pairs")
137
+ ex_id: int
126
138
  directions: fields.ReverseRelation["Direction"]
127
139
 
128
- _name = {"coin__ticker", "cur__ticker"}
140
+ _name = {"pair__coin__ticker", "pair__cur__ticker", "ex__name"}
129
141
 
130
142
  class Meta:
131
- table_description = "Coin/Currency pairs"
132
- unique_together = (("coin", "cur", "ex"),)
143
+ table_description = "Pairs on Exs"
144
+ unique_together = (("pair", "ex"),)
133
145
 
134
146
 
135
147
  class Direction(Model):
136
148
  id = fields.SmallIntField(True)
137
- pair: fields.ForeignKeyRelation[Pair] = fields.ForeignKeyField("models.Pair", related_name="directions")
149
+ pairex: fields.ForeignKeyRelation[PairEx] = fields.ForeignKeyField("models.PairEx", related_name="directions")
150
+ pairex_id: int
138
151
  sell: bool = fields.BooleanField()
139
152
  total: int = fields.IntField(null=True)
140
153
  ads: fields.ReverseRelation["Ad"]
141
154
 
142
- _name = {"pair__coin__ticker", "pair__cur__ticker", "sell"}
155
+ _name = {"pairex__coin__ticker", "pairex__cur__ticker", "sell"}
143
156
 
144
157
  class Meta:
145
158
  table_description = "Trade directions"
146
- unique_together = (("pair", "sell"),)
159
+ unique_together = (("pairex", "sell"),)
160
+
147
161
 
162
+ class CredHolder(Model, TsTrait):
163
+ user: fields.BackwardOneToOneRelation["User"]
164
+ actor: fields.BackwardOneToOneRelation["Actor"]
148
165
 
149
- class User(Model, TsTrait, UserInfoTrait):
166
+
167
+ class User(Model, UserInfoTrait):
150
168
  id: int = fields.BigIntField(True)
169
+ ch: fields.OneToOneRelation[CredHolder] = fields.OneToOneField("models.CredHolder", "users")
170
+ ch_id: int
151
171
  forum: int = fields.BigIntField()
152
172
  role: Role = fields.IntEnumField(Role, default=Role.READER)
153
173
  status: UserStatus = fields.IntEnumField(UserStatus, default=UserStatus.RESTRICTED)
@@ -188,11 +208,13 @@ class User(Model, TsTrait, UserInfoTrait):
188
208
  # computed = ["balance"]
189
209
 
190
210
 
191
- class Contragent(Model):
211
+ class Actor(Model):
192
212
  exid: int = fields.BigIntField()
193
213
  name: int = fields.CharField(63)
194
- ex: fields.ForeignKeyRelation[Ex] = fields.ForeignKeyField("models.Ex", related_name="contragents")
214
+ ex: fields.ForeignKeyRelation[Ex] = fields.ForeignKeyField("models.Ex", related_name="actors")
195
215
  ex_id: int
216
+ ch: fields.OneToOneNullableRelation[CredHolder] = fields.OneToOneField("models.CredHolder", "actor", null=True)
217
+ ch_id: int
196
218
  updated_at: datetime | None = DatetimeSecField(auto_now=True)
197
219
 
198
220
  agent: fields.BackwardOneToOneRelation["Agent"]
@@ -201,34 +223,34 @@ class Contragent(Model):
201
223
  taken_orders: fields.BackwardFKRelation["Order"]
202
224
 
203
225
  class Meta:
204
- table_description = "Agents"
226
+ table_description = "Actors"
205
227
  unique_together = (("ex", "exid"),)
206
228
 
207
229
 
208
230
  class Agent(Model, TsTrait):
209
231
  auth: dict[str, str] = fields.JSONField(null=True)
210
- contragent: fields.OneToOneRelation[Contragent] = fields.OneToOneField("models.Contragent", "agent")
211
- contragent_id: int
232
+ actor: fields.OneToOneRelation[Actor] = fields.OneToOneField("models.Actor", "agent")
233
+ actor_id: int
212
234
  user: fields.ForeignKeyRelation[User] = fields.ForeignKeyField("models.User", related_name="agents")
213
235
  user_id: int
214
236
  assets: fields.ReverseRelation["Asset"]
215
237
 
216
- _name = {"contragent__name"}
238
+ _name = {"actor__name"}
217
239
 
218
240
  def balance(self) -> int:
219
241
  return sum(asset.free * (asset.coin.rate or 0) for asset in self.assets)
220
242
 
221
243
  class Meta:
222
244
  table_description = "Agents"
223
- unique_together = (("contragent", "user"),)
245
+ unique_together = (("actor", "user"),)
224
246
 
225
247
  class PydanticMeta(Model.PydanticMeta):
226
248
  # max_recursion = 3
227
- include = "id", "contragent__ex", "assets", "auth", "updated_at"
249
+ include = "id", "actor__ex", "assets", "auth", "updated_at"
228
250
  computed = ["balance"]
229
251
 
230
252
  def client(self):
231
- module_name = f"xync_client.{self.contragent.ex.name}.agent"
253
+ module_name = f"xync_client.{self.actor.ex.name}.agent"
232
254
  __import__(module_name)
233
255
  client = sys.modules[module_name].AgentClient
234
256
  return client(self)
@@ -242,7 +264,7 @@ class Agent(Model, TsTrait):
242
264
  # return client(self)
243
265
 
244
266
  def asset_client(self):
245
- module_name = f"xync_client.{self.contragent.ex.name}.asset"
267
+ module_name = f"xync_client.{self.actor.ex.name}.asset"
246
268
  __import__(module_name)
247
269
  client = sys.modules[module_name].AssetClient
248
270
  return client(self)
@@ -269,7 +291,7 @@ class Adpm(Model):
269
291
 
270
292
 
271
293
  class Ad(Model, TsTrait):
272
- id: int = fields.BigIntField(True)
294
+ exid: int = fields.BigIntField()
273
295
  direction: fields.ForeignKeyRelation[Direction] = fields.ForeignKeyField("models.Direction", related_name="ads")
274
296
  price: float = fields.FloatField()
275
297
  max_fiat: float = fields.FloatField()
@@ -278,7 +300,7 @@ class Ad(Model, TsTrait):
278
300
  auto_msg: str | None = fields.CharField(255, null=True)
279
301
  status: AdStatus = fields.IntEnumField(AdStatus, defaut=AdStatus.active)
280
302
 
281
- maker: fields.ForeignKeyRelation[Contragent] = fields.ForeignKeyField("models.Contragent", "my_ads")
303
+ maker: fields.ForeignKeyRelation[Actor] = fields.ForeignKeyField("models.Actor", "my_ads")
282
304
  maker_id: int
283
305
 
284
306
  pms: fields.ManyToManyRelation["Pm"] = fields.ManyToManyField("models.Pm", through="adpm") # only root pms
@@ -286,7 +308,7 @@ class Ad(Model, TsTrait):
286
308
  orders: fields.ReverseRelation["Order"]
287
309
 
288
310
  _icon = "ad"
289
- _name = {"direction__pair__coin__ticker", "direction__pair__cur__ticker", "direction__sell", "price"}
311
+ _name = {"direction__pairex__coin__ticker", "direction__pairex__cur__ticker", "direction__sell", "price"}
290
312
 
291
313
  class Meta:
292
314
  table_description = "P2P Advertisements"
@@ -370,18 +392,20 @@ class PmexBank(BaseModel): # banks for SBP
370
392
  exid: str = fields.CharField(63)
371
393
  name: str = fields.CharField(63)
372
394
 
395
+ creds: fields.ManyToManyRelation["Cred"]
396
+
373
397
  class Meta:
374
398
  unique_together = (("pmex", "exid"),)
375
399
 
376
400
 
377
- class CredBank(BaseModel): # banks for SBP
378
- pmexbank: fields.ForeignKeyRelation[PmexBank] = fields.ForeignKeyField("models.PmexBank", "credbanks")
379
- pmexbank_id: int
380
- cred: fields.ForeignKeyRelation["Cred"] = fields.ForeignKeyField("models.Cred", "credbanks")
381
- cred_id: int
382
-
383
- class Meta:
384
- unique_together = (("cred_id", "pmexbank_id"),)
401
+ # class CredBank(BaseModel): # banks for SBP
402
+ # pmexbank: fields.ForeignKeyRelation[PmexBank] = fields.ForeignKeyField("models.PmexBank", "credbanks")
403
+ # pmexbank_id: int
404
+ # cred: fields.ForeignKeyRelation["Cred"] = fields.ForeignKeyField("models.Cred", "credbanks")
405
+ # cred_id: int
406
+ #
407
+ # class Meta:
408
+ # unique_together = (("cred_id", "pmexbank_id"),)
385
409
 
386
410
 
387
411
  # class Pmcurex(BaseModel): # existence pm in ex for exact cur, with "blocked" flag
@@ -403,25 +427,27 @@ class Cred(Model):
403
427
  # country_id: int
404
428
  detail: str = fields.CharField(127)
405
429
  name: str | None = fields.CharField(127, null=True)
406
- contragent: fields.ForeignKeyRelation[Contragent] = fields.ForeignKeyField("models.Contragent", "creds")
407
- contragent_id: int
430
+ ch: fields.ForeignKeyRelation[CredHolder] = fields.ForeignKeyField("models.CredHolder", "creds")
431
+ ch_id: int
432
+
433
+ banks: fields.ManyToManyRelation[PmexBank] = fields.ManyToManyField("models.PmexBank", related_name="creds")
408
434
 
409
435
  fiat: fields.BackwardOneToOneRelation["Fiat"]
410
- ads: fields.BackwardFKRelation[Ad]
436
+ ads: fields.ManyToManyRelation[Ad]
411
437
  orders: fields.BackwardFKRelation["Order"]
412
438
 
413
439
  _name = {"exid"}
414
440
 
415
441
  class Meta:
416
442
  table_description = "Currency accounts"
417
- unique_together = (("pmcur_id", "detail"), ("contragent", "exid"))
443
+ # unique_together = (("actor", "exid"), ("actor_id", "pmcur_id", "detail"))
418
444
 
419
445
 
420
446
  class Fiat(Model):
421
447
  cred: fields.OneToOneRelation[Cred] = fields.OneToOneField("models.Cred", "fiat")
422
448
  cred_id: int
423
449
  # user: fields.ForeignKeyRelation[User] = fields.ForeignKeyField("models.User", "fiats")
424
- # user_id: int # cred.contragent.agent.user_id
450
+ # user_id: int # cred.actor.agent.user_id
425
451
  amount: float | None = fields.FloatField(default=0)
426
452
  target: float | None = fields.FloatField(default=None, null=True)
427
453
 
@@ -485,16 +511,16 @@ class Asset(Model):
485
511
 
486
512
 
487
513
  class Order(Model):
488
- id: int = fields.BigIntField(True)
514
+ exid: int = fields.BigIntField()
489
515
  ad: fields.ForeignKeyRelation[Ad] = fields.ForeignKeyField("models.Ad", related_name="ads")
490
516
  ad_id: int
491
517
  amount: float = fields.FloatField()
492
518
  cred: fields.ForeignKeyRelation[Cred] = fields.ForeignKeyField("models.Cred", related_name="orders", null=True)
493
519
  cred_id: int | None
494
- taker: fields.ForeignKeyRelation[Contragent] = fields.ForeignKeyField("models.Contragent", "taken_orders")
520
+ taker: fields.ForeignKeyRelation[Actor] = fields.ForeignKeyField("models.Actor", "taken_orders")
495
521
  taker_id: int
496
- maker_topic: int = fields.IntField()
497
- taker_topic: int = fields.IntField()
522
+ maker_topic: int = fields.IntField(null=True) # todo: remove nullability
523
+ taker_topic: int = fields.IntField(null=True)
498
524
  status: OrderStatus = fields.IntEnumField(OrderStatus)
499
525
  created_at: datetime | None = DatetimeSecField(auto_now_add=True)
500
526
  payed_at: datetime | None = DatetimeSecField(null=True)
xync_schema/pydantic.py CHANGED
@@ -1,8 +1,8 @@
1
1
  from datetime import datetime
2
- from pydantic import BaseModel, model_validator
2
+ from pydantic import BaseModel
3
3
 
4
- from xync_schema.enums import AdStatus, PmType
5
- from xync_schema.models import Direction, Pmcur, Ex, Cred, Contragent
4
+ from xync_schema.enums import AdStatus, PmType, OrderStatus
5
+ from xync_schema.models import Direction, Pmcur, Cred, Actor, Pm, Ad
6
6
 
7
7
 
8
8
  class _CurCoin(BaseModel):
@@ -42,65 +42,56 @@ class PmPyd(BaseModel):
42
42
  # cur_id: int
43
43
 
44
44
 
45
- class FiatUpd(BaseModel):
46
- detail: str | None = None
45
+ class FFiat(BaseModel):
46
+ detail: str
47
47
  name: str | None = None
48
- amount: float | None = None
48
+ amount: float = 0
49
49
  target: int | None = None
50
+ banks: list[str] = []
50
51
 
51
52
 
52
- class FiatNew(FiatUpd):
53
+ class FiatNew(FFiat):
53
54
  cur_id: int
54
55
  pm_id: int
55
- detail: str
56
- amount: float = 0
57
- target: int | None = None
56
+
57
+
58
+ class FiatUpd(FFiat):
59
+ id: int
60
+ exid: int
58
61
 
59
62
 
60
63
  class CredPydIn(BaseModel):
61
64
  id: int | None = None
62
- exid: str
63
- ex: Ex | None = None
64
- ex_id: int | None = None
65
- pmcur_id: int | None = None
66
- pmcur: Pmcur | None = None
67
- detail: str
65
+ exid: int
66
+ pmcur: Pmcur
67
+ actor: Actor
68
+ detail: str = ""
68
69
  name: str = ""
70
+ banks: list[str] | None = None
69
71
 
70
72
  class Config:
71
73
  arbitrary_types_allowed = True
72
74
 
73
- @classmethod
74
- @model_validator(mode="before")
75
- def check_at_least_one_field(cls, values):
76
- if (values.get("ex") or values.get("ex_id")) and (values.get("pmcur") or values.get("pmcur_id")):
77
- return values
78
- raise ValueError("ex(_id) and pmcur(_id) is required")
75
+ def args(self) -> tuple[dict, dict]:
76
+ unq: tuple[str, ...] = "id", "exid", "actor", "pmcur"
77
+ df: tuple[str, ...] = "detail", "name"
78
+ d = self.model_dump()
79
+ return {k: getattr(self, k) for k in df if d.get(k)}, {k: getattr(self, k) for k in unq if d.get(k)}
79
80
 
80
81
 
81
82
  class FiatPydIn(BaseModel):
82
83
  # unq
83
84
  id: int = None
84
- cred_id: int | None = None
85
- cred: Cred | None = None
85
+ cred: Cred
86
86
  # df
87
87
  amount: float
88
88
  target: float | None = None
89
89
 
90
- banks: list[str] = []
91
-
92
90
  class Config:
93
91
  arbitrary_types_allowed = True
94
92
 
95
- @classmethod
96
- @model_validator(mode="before")
97
- def check_at_least_one_field(cls, values):
98
- if values.get("cred") or values.get("cred_id"):
99
- return values
100
- raise ValueError("cred(_id) is required")
101
-
102
93
  def args(self) -> tuple[dict, dict]:
103
- unq: tuple[str, ...] = "id", "cred_id", "cred"
94
+ unq: tuple[str, ...] = "id", "cred"
104
95
  df: tuple[str, ...] = "amount", "target"
105
96
  d = self.model_dump()
106
97
  return {k: getattr(self, k) for k in df if d.get(k)}, {k: getattr(self, k) for k in unq if d.get(k)}
@@ -111,31 +102,36 @@ class BaseAd(BaseModel):
111
102
  price: float
112
103
 
113
104
 
114
- class AdPydIn(BaseAd):
105
+ class BaseAdPydIn(BaseAd):
106
+ exid: int
115
107
  min_fiat: float
116
108
  max_fiat: float | None = None
117
109
  detail: str | None = None
118
110
  auto_msg: str | None = None
119
111
  status: AdStatus = AdStatus.active
120
- maker_id: int | None = None
121
- maker: Contragent | None = None
122
- direction_id: int | None = None
123
- direction: Direction | None = None
124
- pms_: list | None = None
125
- fiats_: list | None = None
112
+ maker: Actor = None
113
+ direction: Direction
126
114
 
127
115
  class Config:
128
116
  arbitrary_types_allowed = True
129
117
 
130
- @classmethod
131
- @model_validator(mode="before")
132
- def check_at_least_one_field(cls, values):
133
- maker = values.get("maker") or values.get("maker_id")
134
- direction = values.get("direction") or values.get("direction_id")
135
- pms_or_fiats = values.get("pms_") or values.get("fiats_")
136
- if maker and direction and pms_or_fiats:
137
- return values
138
- raise ValueError("(pms or fiats) and maker(_id) and direction(_id) is required")
118
+ def args(self) -> tuple[dict, dict]:
119
+ unq: tuple[str, ...] = "id", "exid", "maker", "direction"
120
+ df: tuple[str, ...] = "price", "price", "min_fiat", "max_fiat", "detail", "auto_msg", "status"
121
+ d = self.model_dump(exclude_none=True)
122
+ return {k: getattr(self, k) for k in df if d.get(k)}, {k: getattr(self, k) for k in unq if d.get(k)}
123
+
124
+
125
+ class AdBuyPydIn(BaseAdPydIn):
126
+ pms_: list[Pm]
127
+
128
+
129
+ class AdSalePydIn(BaseAdPydIn):
130
+ creds_: list[Cred]
131
+
132
+
133
+ class BaseOrder(BaseModel):
134
+ id: int | None = None
139
135
 
140
136
 
141
137
  class OrderPyd(BaseModel):
@@ -145,7 +141,7 @@ class OrderPyd(BaseModel):
145
141
  actions: dict | None = {}
146
142
  cred: Cred.pyd()
147
143
  is_sell: bool
148
- contragent: int | None = None
144
+ actor: int | None = None
149
145
  created_at: datetime
150
146
  payed_at: datetime | None = None
151
147
  appealed_at: datetime | None = None
@@ -154,6 +150,31 @@ class OrderPyd(BaseModel):
154
150
  topic: int
155
151
 
156
152
 
153
+ class OrderPydIn(BaseModel):
154
+ id: int = None
155
+ exid: int
156
+ amount: float
157
+ maker_topic: int | None = None
158
+ taker_topic: int | None = None
159
+ status: OrderStatus = OrderStatus.created
160
+ created_at: datetime
161
+ payed_at: datetime | None = None
162
+ confirmed_at: datetime | None = None
163
+ appealed_at: datetime | None = None
164
+ ad: Ad
165
+ cred: Cred
166
+ taker: Actor
167
+
168
+ class Config:
169
+ arbitrary_types_allowed = True
170
+
171
+ def args(self) -> tuple[dict, dict]:
172
+ unq: tuple[str, ...] = "id", "exid", "amount", "maker_topic", "taker_topic", "ad", "cred", "taker"
173
+ df: tuple[str, ...] = "status", "created_at", "payed_at", "confirmed_at", "appealed_at"
174
+ d = self.model_dump(exclude_none=True)
175
+ return {k: getattr(self, k) for k in df if d.get(k)}, {k: getattr(self, k) for k in unq if d.get(k)}
176
+
177
+
157
178
  class UreadMsgs(BaseModel):
158
179
  order_id: int
159
180
  unread_cnt: int
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: xync-schema
3
- Version: 0.6.72
3
+ Version: 0.6.73.dev3
4
4
  Summary: XyncNet project database model schema
5
5
  Author-email: Mike Artemiev <mixartemev@gmail.com>
6
6
  License: EULA
@@ -0,0 +1,8 @@
1
+ xync_schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ xync_schema/enums.py,sha256=XlkpnQFBhrIQ11ZoufwAEKK4RmcOTUu5On1QjsoyrqA,12315
3
+ xync_schema/models.py,sha256=jiyJ-5d2E0mmOHlsWWfc2coYttvsYN4YsH8MOGtbKUg,26409
4
+ xync_schema/pydantic.py,sha256=CIX0n2VdFxRYCS3kMe8ee9Wfj2ZLe3lvFdiieu_9DZs,4259
5
+ xync_schema-0.6.73.dev3.dist-info/METADATA,sha256=mUIuJzZVYlk81TH4xbrrd26DO1GST7tJbl8ZlIY2Spw,3990
6
+ xync_schema-0.6.73.dev3.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
7
+ xync_schema-0.6.73.dev3.dist-info/top_level.txt,sha256=jN8IBDfVY8b85Byyk8v0Gyj_0yLB8FO56WV4EvcXWY4,12
8
+ xync_schema-0.6.73.dev3.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- xync_schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- xync_schema/enums.py,sha256=7FDGQ2DYsNmvbTYvXGigsrI_9hOOiIN1J7RQyiV2TQ0,12300
3
- xync_schema/models.py,sha256=Ehs2Hs24OYIafTIUtyGrQt-4s5YMRX91YUF69ZFR1C8,25578
4
- xync_schema/pydantic.py,sha256=-7jx9KLv4KQ_7ChCxjoQ4d5MPi6yPCv9_nnooLk1nqQ,3882
5
- xync_schema-0.6.72.dist-info/METADATA,sha256=XbhoL5m5bue8QfrZH66Soycdc5Yyj0C70d09VUv1XWk,3985
6
- xync_schema-0.6.72.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
7
- xync_schema-0.6.72.dist-info/top_level.txt,sha256=jN8IBDfVY8b85Byyk8v0Gyj_0yLB8FO56WV4EvcXWY4,12
8
- xync_schema-0.6.72.dist-info/RECORD,,