xcpcio 0.62.1__py3-none-any.whl → 0.63.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.

Potentially problematic release.


This version of xcpcio might be problematic. Click here for more details.

xcpcio/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  from . import constants, types
2
2
 
3
- __version__ = "0.62.1"
3
+ __version__ = "0.63.0"
4
4
 
5
5
  __all__ = [constants, types]
xcpcio/ccs/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ from . import ccs, model
2
+
3
+ __all__ = [model, ccs]
@@ -0,0 +1 @@
1
+ from .model_2023_06 import * # noqa: F403
@@ -0,0 +1,7 @@
1
+ """
2
+ CCS (Contest Control System) models for branch 2023-06.
3
+
4
+ Auto-generated from https://github.com/icpc/ccs-specs/tree/2023-06
5
+ """
6
+
7
+ from .model import * # noqa: F403
@@ -0,0 +1,609 @@
1
+ # generated by datamodel-codegen:
2
+ # filename: event-feed-array.json
3
+ # timestamp: 2025-09-19T00:22:22+00:00
4
+
5
+ from __future__ import annotations
6
+
7
+ from enum import Enum
8
+ from typing import List, Optional, Union
9
+
10
+ from pydantic import BaseModel, Field, RootModel, confloat, conint, constr
11
+
12
+
13
+ class Endpointssingularcontest(Enum):
14
+ contest = "contest"
15
+ judgement_types = "judgement-types"
16
+ languages = "languages"
17
+ problems = "problems"
18
+ groups = "groups"
19
+ organizations = "organizations"
20
+ persons = "persons"
21
+ accounts = "accounts"
22
+ teams = "teams"
23
+ state = "state"
24
+ submissions = "submissions"
25
+ judgements = "judgements"
26
+ runs = "runs"
27
+ clarifications = "clarifications"
28
+ awards = "awards"
29
+ commentary = "commentary"
30
+ scoreboard = "scoreboard"
31
+ event_feed = "event-feed"
32
+
33
+
34
+ class Identifier(RootModel[constr(pattern=r"^[A-Za-z0-9_]([A-Za-z0-9_\.-]{0,34}[A-Za-z0-9_-]|)")]):
35
+ root: constr(pattern=r"^[A-Za-z0-9_]([A-Za-z0-9_\.-]{0,34}[A-Za-z0-9_-]|)")
36
+
37
+
38
+ class ScoreboardType(Enum):
39
+ pass_fail = "pass-fail"
40
+ score = "score"
41
+
42
+
43
+ class Abstime(
44
+ RootModel[
45
+ constr(
46
+ pattern=r"^[12][0-9]{3}-[01][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](\.[0-9]{3})?([+-][0-1][0-9](:[0-5][0-9])?|Z)$"
47
+ )
48
+ ]
49
+ ):
50
+ root: constr(
51
+ pattern=r"^[12][0-9]{3}-[01][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](\.[0-9]{3})?([+-][0-1][0-9](:[0-5][0-9])?|Z)$"
52
+ )
53
+
54
+
55
+ class Posreltime(RootModel[constr(pattern=r"^([1-9][0-9]*)?[0-9]:[0-5][0-9]:[0-5][0-9](\.[0-9]{3})?$")]):
56
+ root: constr(pattern=r"^([1-9][0-9]*)?[0-9]:[0-5][0-9]:[0-5][0-9](\.[0-9]{3})?$")
57
+
58
+
59
+ class Mime(Enum):
60
+ image_png = "image/png"
61
+ image_jpeg = "image/jpeg"
62
+ image_svg_xml = "image/svg+xml"
63
+
64
+
65
+ class Fileref(BaseModel):
66
+ href: str
67
+ filename: Optional[str] = None
68
+ hash: Optional[str] = None
69
+ mime: str
70
+ width: Optional[conint(ge=1)] = None
71
+ height: Optional[conint(ge=1)] = None
72
+
73
+
74
+ class Location(BaseModel):
75
+ latitude: confloat(ge=-90.0, le=90.0)
76
+ longitude: confloat(ge=-180.0, le=180.0)
77
+
78
+
79
+ class Judgementtypeid(Enum):
80
+ AC = "AC"
81
+ RE = "RE"
82
+ WA = "WA"
83
+ TLE = "TLE"
84
+ RTE = "RTE"
85
+ CE = "CE"
86
+ APE = "APE"
87
+ OLE = "OLE"
88
+ PE = "PE"
89
+ EO = "EO"
90
+ IO = "IO"
91
+ NO = "NO"
92
+ WTL = "WTL"
93
+ ILE = "ILE"
94
+ TCO = "TCO"
95
+ TWA = "TWA"
96
+ TPE = "TPE"
97
+ TEO = "TEO"
98
+ TIO = "TIO"
99
+ TNO = "TNO"
100
+ MLE = "MLE"
101
+ SV = "SV"
102
+ IF = "IF"
103
+ RCO = "RCO"
104
+ RWA = "RWA"
105
+ RPE = "RPE"
106
+ REO = "REO"
107
+ RIO = "RIO"
108
+ RNO = "RNO"
109
+ CTL = "CTL"
110
+ JE = "JE"
111
+ SE = "SE"
112
+ CS = "CS"
113
+
114
+
115
+ class Command(BaseModel):
116
+ command: str
117
+ args: Optional[str] = None
118
+ version: Optional[str] = None
119
+ version_command: Optional[str] = None
120
+
121
+
122
+ class Filerefsornull(RootModel[Optional[List[Fileref]]]):
123
+ root: Optional[List[Fileref]]
124
+
125
+
126
+ class Location1(BaseModel):
127
+ x: float
128
+ y: float
129
+ rotation: confloat(ge=0.0, le=360.0)
130
+
131
+
132
+ class Identifiers(RootModel[List[Identifier]]):
133
+ root: List[Identifier]
134
+
135
+
136
+ class Sex(Enum):
137
+ male = "male"
138
+ female = "female"
139
+
140
+
141
+ class Role(Enum):
142
+ contestant = "contestant"
143
+ coach = "coach"
144
+ staff = "staff"
145
+ other = "other"
146
+
147
+
148
+ class Type(Enum):
149
+ team = "team"
150
+ judge = "judge"
151
+ admin = "admin"
152
+ analyst = "analyst"
153
+ staff = "staff"
154
+
155
+
156
+ class Reltime(RootModel[constr(pattern=r"^-?([1-9][0-9]*)?[0-9]:[0-5][0-9]:[0-5][0-9](\.[0-9]{3})?$")]):
157
+ root: constr(pattern=r"^-?([1-9][0-9]*)?[0-9]:[0-5][0-9]:[0-5][0-9](\.[0-9]{3})?$")
158
+
159
+
160
+ class Filerefs(RootModel[List[Fileref]]):
161
+ root: List[Fileref]
162
+
163
+
164
+ class Judgementtypeidornull(RootModel[Optional[Judgementtypeid]]):
165
+ root: Optional[Judgementtypeid]
166
+
167
+
168
+ class Reltimeornull(RootModel[Optional[Reltime]]):
169
+ root: Optional[Reltime]
170
+
171
+
172
+ class Run(BaseModel):
173
+ id: Identifier
174
+ judgement_id: Identifier
175
+ ordinal: int
176
+ judgement_type_id: Judgementtypeid
177
+ time: Abstime
178
+ contest_time: Reltime
179
+ run_time: Optional[confloat(ge=0.0, multiple_of=0.001)] = None
180
+
181
+
182
+ class Runs(RootModel[List[Run]]):
183
+ root: List[Run] = Field(
184
+ ...,
185
+ description="JSON response of this API call",
186
+ title="CLICS Contest API: runs",
187
+ )
188
+
189
+
190
+ class Identifierornull(RootModel[Optional[Identifier]]):
191
+ root: Optional[Identifier]
192
+
193
+
194
+ class Abstimeornull(RootModel[Optional[Abstime]]):
195
+ root: Optional[Abstime]
196
+
197
+
198
+ class Posreltimeornull(RootModel[Optional[Posreltime]]):
199
+ root: Optional[Posreltime]
200
+
201
+
202
+ class Imageref(Fileref):
203
+ mime: Optional[Mime] = None
204
+
205
+
206
+ class Locationornull(RootModel[Optional[Location]]):
207
+ root: Optional[Location]
208
+
209
+
210
+ class JudgementType(BaseModel):
211
+ id: Judgementtypeid
212
+ name: str
213
+ penalty: Optional[bool] = None
214
+ solved: bool
215
+
216
+
217
+ class JudgementTypes(RootModel[List[JudgementType]]):
218
+ root: List[JudgementType] = Field(
219
+ ...,
220
+ description="JSON response of this API call",
221
+ title="CLICS Contest API: judgement_types",
222
+ )
223
+
224
+
225
+ class Commandornull(RootModel[Optional[Command]]):
226
+ root: Optional[Command]
227
+
228
+
229
+ class Problem(BaseModel):
230
+ id: Identifier
231
+ uuid: Optional[constr(pattern=r"^[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}$")] = None
232
+ label: str
233
+ name: str
234
+ ordinal: int
235
+ rgb: Optional[constr(pattern=r"^#[A-Fa-f0-9]{3}([A-Fa-f0-9]{3})?$")] = None
236
+ color: Optional[str] = None
237
+ time_limit: Optional[confloat(ge=0.0, multiple_of=0.001)] = None
238
+ test_data_count: conint(ge=0)
239
+ max_score: Optional[float] = None
240
+ package: Optional[Filerefsornull] = None
241
+ statement: Optional[Filerefsornull] = None
242
+
243
+
244
+ class Problems(RootModel[List[Problem]]):
245
+ root: List[Problem] = Field(
246
+ ...,
247
+ description="JSON response of this API call",
248
+ title="CLICS Contest API: problems",
249
+ )
250
+
251
+
252
+ class Group(BaseModel):
253
+ id: Identifier
254
+ icpc_id: Optional[str] = None
255
+ name: str
256
+ type: Optional[str] = None
257
+ location: Optional[Locationornull] = None
258
+
259
+
260
+ class Groups(RootModel[List[Group]]):
261
+ root: List[Group] = Field(
262
+ ...,
263
+ description="JSON response of this API call",
264
+ title="CLICS Contest API: groups",
265
+ )
266
+
267
+
268
+ class Identifiersornull(RootModel[Optional[Identifiers]]):
269
+ root: Optional[Identifiers]
270
+
271
+
272
+ class Account(BaseModel):
273
+ id: Identifier
274
+ username: str
275
+ password: Optional[str] = None
276
+ name: Optional[str] = None
277
+ type: Optional[Type] = None
278
+ ip: Optional[str] = None
279
+ team_id: Optional[Identifierornull] = None
280
+ person_id: Optional[Identifierornull] = None
281
+
282
+
283
+ class Accounts(RootModel[List[Account]]):
284
+ root: List[Account] = Field(
285
+ ...,
286
+ description="JSON response of this API call",
287
+ title="CLICS Contest API: accounts",
288
+ )
289
+
290
+
291
+ class State(BaseModel):
292
+ started: Abstimeornull
293
+ frozen: Optional[Abstimeornull] = None
294
+ ended: Abstimeornull
295
+ thawed: Optional[Abstimeornull] = None
296
+ finalized: Abstimeornull
297
+ end_of_updates: Abstimeornull
298
+
299
+
300
+ class Submission1(BaseModel):
301
+ id: Identifier
302
+ language_id: Identifier
303
+ problem_id: Identifier
304
+ team_id: Identifier
305
+ time: Abstime
306
+ contest_time: Reltime
307
+ entry_point: Optional[str] = None
308
+ files: Filerefs
309
+ reaction: Optional[Filerefsornull] = None
310
+
311
+
312
+ class Submission2(BaseModel):
313
+ id: Identifier
314
+ language_id: Identifier
315
+ problem_id: Identifier
316
+ team_id: Identifier
317
+ time: Abstime
318
+ contest_time: Reltime
319
+ entry_point: Optional[str] = None
320
+ files: Filerefs
321
+ reaction: Optional[Filerefsornull] = None
322
+
323
+
324
+ class Submission3(BaseModel):
325
+ id: Identifier
326
+ language_id: Identifier
327
+ problem_id: Identifier
328
+ team_id: Identifier
329
+ time: Abstime
330
+ contest_time: Reltime
331
+ entry_point: None = None
332
+ files: Filerefs
333
+ reaction: Optional[Filerefsornull] = None
334
+
335
+
336
+ class Submission4(BaseModel):
337
+ id: Identifier
338
+ language_id: Identifier
339
+ problem_id: Identifier
340
+ team_id: Identifier
341
+ time: Abstime
342
+ contest_time: Reltime
343
+ entry_point: Optional[str] = None
344
+ files: Filerefs
345
+ reaction: Optional[Filerefsornull] = None
346
+
347
+
348
+ class Submission(RootModel[Union[Submission1, Union[Submission2, Submission3], Submission4]]):
349
+ root: Union[Submission1, Union[Submission2, Submission3], Submission4] = Field(
350
+ ...,
351
+ description="Definition of a single submission object",
352
+ title="CLICS Contest API - submission",
353
+ )
354
+
355
+
356
+ class Submissions(RootModel[List[Submission]]):
357
+ root: List[Submission] = Field(
358
+ ...,
359
+ description="JSON response of this API call",
360
+ title="CLICS Contest API: submissions",
361
+ )
362
+
363
+
364
+ class Judgement1(BaseModel):
365
+ id: Identifier
366
+ submission_id: Identifier
367
+ judgement_type_id: Judgementtypeidornull
368
+ score: Optional[confloat(ge=0.0)] = None
369
+ start_time: Abstime
370
+ start_contest_time: Reltime
371
+ end_time: Abstimeornull
372
+ end_contest_time: Reltimeornull
373
+ max_run_time: Optional[confloat(ge=0.0, multiple_of=0.001)] = None
374
+
375
+
376
+ class Judgement2(BaseModel):
377
+ id: Identifier
378
+ submission_id: Identifier
379
+ judgement_type_id: Optional[Judgementtypeidornull] = None
380
+ score: Optional[confloat(ge=0.0)] = None
381
+ start_time: Abstime
382
+ start_contest_time: Reltime
383
+ end_time: Optional[Abstimeornull] = None
384
+ end_contest_time: Optional[Reltimeornull] = None
385
+ max_run_time: Optional[confloat(ge=0.0, multiple_of=0.001)] = None
386
+
387
+
388
+ class Judgement(RootModel[Union[Judgement1, Judgement2]]):
389
+ root: Union[Judgement1, Judgement2] = Field(
390
+ ...,
391
+ description="Definition of a single judgement object",
392
+ title="CLICS Contest API - judgement",
393
+ )
394
+
395
+
396
+ class Judgements(RootModel[List[Judgement]]):
397
+ root: List[Judgement] = Field(
398
+ ...,
399
+ description="JSON response of this API call",
400
+ title="CLICS Contest API: judgements",
401
+ )
402
+
403
+
404
+ class Clarification(BaseModel):
405
+ id: Identifier
406
+ from_team_id: Optional[Identifierornull] = None
407
+ to_team_id: Optional[Identifierornull] = None
408
+ reply_to_id: Optional[Identifierornull] = None
409
+ problem_id: Optional[Identifierornull] = None
410
+ text: str
411
+ time: Abstime
412
+ contest_time: Reltime
413
+
414
+
415
+ class Clarifications(RootModel[List[Clarification]]):
416
+ root: List[Clarification] = Field(
417
+ ...,
418
+ description="JSON response of this API call",
419
+ title="CLICS Contest API: clarifications",
420
+ )
421
+
422
+
423
+ class Award(BaseModel):
424
+ id: Identifier
425
+ citation: str
426
+ team_ids: Optional[Identifiersornull] = None
427
+
428
+
429
+ class Awards(RootModel[List[Award]]):
430
+ root: List[Award] = Field(
431
+ ...,
432
+ description="JSON response of this API call",
433
+ title="CLICS Contest API: awards",
434
+ )
435
+
436
+
437
+ class Commentary(BaseModel):
438
+ id: Identifier
439
+ time: Abstime
440
+ contest_time: Reltime
441
+ message: str
442
+ tags: List[str]
443
+ source_id: Optional[Identifierornull] = None
444
+ team_ids: Optional[Identifiersornull] = None
445
+ problem_ids: Optional[Identifiersornull] = None
446
+ submission_ids: Optional[Identifiersornull] = None
447
+
448
+
449
+ class Commentaries(RootModel[List[Commentary]]):
450
+ root: List[Commentary] = Field(
451
+ ...,
452
+ description="JSON response of this API call",
453
+ title="CLICS Contest API: commentary",
454
+ )
455
+
456
+
457
+ class Imagerefsornull(RootModel[Optional[List[Imageref]]]):
458
+ root: Optional[List[Imageref]]
459
+
460
+
461
+ class Language(BaseModel):
462
+ id: Identifier
463
+ name: str
464
+ entry_point_required: bool
465
+ entry_point_name: Optional[str] = None
466
+ extensions: List[str]
467
+ compiler: Optional[Commandornull] = None
468
+ runner: Optional[Commandornull] = None
469
+
470
+
471
+ class Languages(RootModel[List[Language]]):
472
+ root: List[Language] = Field(
473
+ ...,
474
+ description="JSON response of this API call",
475
+ title="CLICS Contest API: languages",
476
+ )
477
+
478
+
479
+ class Organization(BaseModel):
480
+ id: Identifier
481
+ icpc_id: Optional[str] = None
482
+ name: str
483
+ formal_name: Optional[str] = None
484
+ country: Optional[constr(pattern=r"^[A-Z]{3}$")] = None
485
+ country_flag: Optional[Imagerefsornull] = None
486
+ url: Optional[str] = None
487
+ twitter_hashtag: Optional[str] = None
488
+ twitter_account: Optional[str] = None
489
+ location: Optional[Locationornull] = None
490
+ logo: Optional[Imagerefsornull] = None
491
+
492
+
493
+ class Organizations(RootModel[List[Organization]]):
494
+ root: List[Organization] = Field(
495
+ ...,
496
+ description="JSON response of this API call",
497
+ title="CLICS Contest API: organizations",
498
+ )
499
+
500
+
501
+ class Team(BaseModel):
502
+ id: Identifier
503
+ icpc_id: Optional[str] = None
504
+ name: str
505
+ label: str
506
+ display_name: Optional[str] = None
507
+ organization_id: Optional[Identifierornull] = None
508
+ group_ids: Optional[Identifiersornull] = None
509
+ hidden: Optional[bool] = None
510
+ location: Optional[Location1] = None
511
+ photo: Optional[Imagerefsornull] = None
512
+ video: Optional[Filerefsornull] = None
513
+ backup: Optional[Filerefsornull] = None
514
+ key_log: Optional[Filerefsornull] = None
515
+ tool_data: Optional[Filerefsornull] = None
516
+ desktop: Optional[Filerefsornull] = None
517
+ webcam: Optional[Filerefsornull] = None
518
+ audio: Optional[Filerefsornull] = None
519
+
520
+
521
+ class Teams(RootModel[List[Team]]):
522
+ root: List[Team] = Field(
523
+ ...,
524
+ description="JSON response of this API call",
525
+ title="CLICS Contest API: teams",
526
+ )
527
+
528
+
529
+ class Person(BaseModel):
530
+ id: Identifier
531
+ icpc_id: Optional[str] = None
532
+ team_ids: Optional[Identifiers] = None
533
+ name: str
534
+ title: Optional[str] = None
535
+ email: Optional[str] = None
536
+ sex: Optional[Sex] = None
537
+ role: Role
538
+ photo: Optional[Imagerefsornull] = None
539
+
540
+
541
+ class Persons(RootModel[List[Person]]):
542
+ root: List[Person] = Field(
543
+ ...,
544
+ description="JSON response of this API call",
545
+ title="CLICS Contest API: persons",
546
+ )
547
+
548
+
549
+ class Contest(BaseModel):
550
+ id: Identifier
551
+ name: str
552
+ formal_name: Optional[str] = None
553
+ start_time: Optional[Abstimeornull] = None
554
+ countdown_pause_time: Optional[Posreltimeornull] = None
555
+ duration: Posreltime
556
+ scoreboard_freeze_duration: Optional[Posreltimeornull] = None
557
+ scoreboard_type: ScoreboardType
558
+ penalty_time: Optional[conint(ge=0)] = None
559
+ banner: Optional[Imagerefsornull] = None
560
+ logo: Optional[Imagerefsornull] = None
561
+ location: Optional[Locationornull] = None
562
+
563
+
564
+ class EventFeed(BaseModel):
565
+ type: Endpointssingularcontest
566
+ id: Identifierornull
567
+ data: Optional[
568
+ Union[
569
+ Contest,
570
+ JudgementType,
571
+ JudgementTypes,
572
+ Language,
573
+ Languages,
574
+ Problem,
575
+ Problems,
576
+ Group,
577
+ Groups,
578
+ Organization,
579
+ Organizations,
580
+ Team,
581
+ Teams,
582
+ Person,
583
+ Persons,
584
+ Account,
585
+ Accounts,
586
+ State,
587
+ Submission,
588
+ Submissions,
589
+ Judgement,
590
+ Judgements,
591
+ Run,
592
+ Runs,
593
+ Clarification,
594
+ Clarifications,
595
+ Award,
596
+ Awards,
597
+ Commentary,
598
+ Commentaries,
599
+ ]
600
+ ] = None
601
+ token: Optional[str] = None
602
+
603
+
604
+ class ClicsContestApiEventFeedArray(RootModel[List[EventFeed]]):
605
+ root: List[EventFeed] = Field(
606
+ ...,
607
+ description="JSON array of responses of this NDJSON API call",
608
+ title="CLICS Contest API: event-feed array",
609
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xcpcio
3
- Version: 0.62.1
3
+ Version: 0.63.0
4
4
  Summary: xcpcio python lib
5
5
  Author-email: Dup4 <hi@dup4.com>
6
6
  License-Expression: MIT
@@ -0,0 +1,11 @@
1
+ xcpcio/__init__.py,sha256=xaS2UDwonjhsq9fTq-KPgoMUZg4E3MPKllRoG7eENxc,85
2
+ xcpcio/constants.py,sha256=MjpAgNXiBlUsx1S09m7JNT-nekNDR-aE6ggvGL3fg0I,2297
3
+ xcpcio/types.py,sha256=AkYby2haJgxwtozlgaPMG2ryAZdvsSc3sH-p6qXcM4g,6575
4
+ xcpcio/ccs/__init__.py,sha256=QUkMIexjQPFLsns0hQLkrItsIdCTcjnqjK1Ne4kdrKQ,49
5
+ xcpcio/ccs/model/__init__.py,sha256=cZE1q5JY-iHDEKZpsx0UZaMhH-23H4oAHaYOkW7dZ5s,43
6
+ xcpcio/ccs/model/model_2023_06/__init__.py,sha256=OmDQZqmigBpL64LXk5lIOGoQ3Uqis8-2z6qQpOO5aJc,167
7
+ xcpcio/ccs/model/model_2023_06/model.py,sha256=bVMDWpJTwPSpz1fHPxWrWerxCBIboH3LKVZpIZGQ2pY,15287
8
+ xcpcio-0.63.0.dist-info/METADATA,sha256=OoHlELrGiJiHSbBWYYDpO_uUs6vwllQN9aQ1mFZmdJg,771
9
+ xcpcio-0.63.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
10
+ xcpcio-0.63.0.dist-info/top_level.txt,sha256=c0sKVaiJdzJma17sS0dqHsYvDtGav5iIbd3wyLWuDEA,7
11
+ xcpcio-0.63.0.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- xcpcio/__init__.py,sha256=amOA6fhtN4JV9rqAE-1F8E3iEyek7JrjO6Pl9CCx5wg,85
2
- xcpcio/constants.py,sha256=MjpAgNXiBlUsx1S09m7JNT-nekNDR-aE6ggvGL3fg0I,2297
3
- xcpcio/types.py,sha256=AkYby2haJgxwtozlgaPMG2ryAZdvsSc3sH-p6qXcM4g,6575
4
- xcpcio-0.62.1.dist-info/METADATA,sha256=Q1DThGutmYWVyFFEPyopy979BHu5yeNzeCsQ-FmAa-k,771
5
- xcpcio-0.62.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
6
- xcpcio-0.62.1.dist-info/top_level.txt,sha256=c0sKVaiJdzJma17sS0dqHsYvDtGav5iIbd3wyLWuDEA,7
7
- xcpcio-0.62.1.dist-info/RECORD,,