python-alpm 0.3.0__cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.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.
alpm/alpm_types.pyi ADDED
@@ -0,0 +1,1385 @@
1
+ """Python bindings for alpm-types Rust crate."""
2
+
3
+ from enum import Enum
4
+ from pathlib import Path
5
+
6
+ from typing import Union, Optional, Sequence, Iterator
7
+
8
+ from .type_aliases import (
9
+ OpenPGPIdentifier,
10
+ MakepkgOption,
11
+ RelationOrSoname,
12
+ VersionOrSoname,
13
+ VcsInfo,
14
+ SystemArchitecture,
15
+ )
16
+
17
+ class ALPMError(Exception):
18
+ """The ALPM error type."""
19
+
20
+ class Blake2b512Checksum:
21
+ """A checksum using the Blake2b512 algorithm."""
22
+
23
+ def __init__(self, value: str): ...
24
+ def __str__(self) -> str: ...
25
+ def __repr__(self) -> str: ...
26
+ def __eq__(self, other: object) -> bool: ...
27
+ def __lt__(self, other: "Blake2b512Checksum") -> bool: ...
28
+ def __le__(self, other: "Blake2b512Checksum") -> bool: ...
29
+ def __gt__(self, other: "Blake2b512Checksum") -> bool: ...
30
+ def __ge__(self, other: "Blake2b512Checksum") -> bool: ...
31
+
32
+ class Md5Checksum:
33
+ """A checksum using the Md5 algorithm.
34
+
35
+ WARNING: Use of this algorithm is highly discouraged, because it is
36
+ cryptographically unsafe.
37
+ """
38
+
39
+ def __init__(self, value: str): ...
40
+ def __str__(self) -> str: ...
41
+ def __repr__(self) -> str: ...
42
+ def __eq__(self, other: object) -> bool: ...
43
+ def __lt__(self, other: "Md5Checksum") -> bool: ...
44
+ def __le__(self, other: "Md5Checksum") -> bool: ...
45
+ def __gt__(self, other: "Md5Checksum") -> bool: ...
46
+ def __ge__(self, other: "Md5Checksum") -> bool: ...
47
+
48
+ class Sha1Checksum:
49
+ """A checksum using the Sha1 algorithm.
50
+
51
+ WARNING: Use of this algorithm is highly discouraged, because it is
52
+ cryptographically unsafe.
53
+ """
54
+
55
+ def __init__(self, value: str): ...
56
+ def __str__(self) -> str: ...
57
+ def __repr__(self) -> str: ...
58
+ def __eq__(self, other: object) -> bool: ...
59
+ def __lt__(self, other: "Sha1Checksum") -> bool: ...
60
+ def __le__(self, other: "Sha1Checksum") -> bool: ...
61
+ def __gt__(self, other: "Sha1Checksum") -> bool: ...
62
+ def __ge__(self, other: "Sha1Checksum") -> bool: ...
63
+
64
+ class Sha224Checksum:
65
+ """A checksum using the Sha224 algorithm."""
66
+
67
+ def __init__(self, value: str): ...
68
+ def __str__(self) -> str: ...
69
+ def __repr__(self) -> str: ...
70
+ def __eq__(self, other: object) -> bool: ...
71
+ def __lt__(self, other: "Sha224Checksum") -> bool: ...
72
+ def __le__(self, other: "Sha224Checksum") -> bool: ...
73
+ def __gt__(self, other: "Sha224Checksum") -> bool: ...
74
+ def __ge__(self, other: "Sha224Checksum") -> bool: ...
75
+
76
+ class Sha256Checksum:
77
+ """A checksum using the Sha256 algorithm."""
78
+
79
+ def __init__(self, value: str): ...
80
+ def __str__(self) -> str: ...
81
+ def __repr__(self) -> str: ...
82
+ def __eq__(self, other: object) -> bool: ...
83
+ def __lt__(self, other: "Sha256Checksum") -> bool: ...
84
+ def __le__(self, other: "Sha256Checksum") -> bool: ...
85
+ def __gt__(self, other: "Sha256Checksum") -> bool: ...
86
+ def __ge__(self, other: "Sha256Checksum") -> bool: ...
87
+
88
+ class Sha384Checksum:
89
+ """A checksum using the Sha384 algorithm."""
90
+
91
+ def __init__(self, value: str): ...
92
+ def __str__(self) -> str: ...
93
+ def __repr__(self) -> str: ...
94
+ def __eq__(self, other: object) -> bool: ...
95
+ def __lt__(self, other: "Sha384Checksum") -> bool: ...
96
+ def __le__(self, other: "Sha384Checksum") -> bool: ...
97
+ def __gt__(self, other: "Sha384Checksum") -> bool: ...
98
+ def __ge__(self, other: "Sha384Checksum") -> bool: ...
99
+
100
+ class Sha512Checksum:
101
+ """A checksum using the Sha512 algorithm."""
102
+
103
+ def __init__(self, value: str): ...
104
+ def __str__(self) -> str: ...
105
+ def __repr__(self) -> str: ...
106
+ def __eq__(self, other: object) -> bool: ...
107
+ def __lt__(self, other: "Sha512Checksum") -> bool: ...
108
+ def __le__(self, other: "Sha512Checksum") -> bool: ...
109
+ def __gt__(self, other: "Sha512Checksum") -> bool: ...
110
+ def __ge__(self, other: "Sha512Checksum") -> bool: ...
111
+
112
+ class Crc32CksumChecksum:
113
+ """A checksum using the CRC-32/CKSUM algorithm."""
114
+
115
+ def __init__(self, value: str): ...
116
+ def __str__(self) -> str: ...
117
+ def __repr__(self) -> str: ...
118
+ def __eq__(self, other: object) -> bool: ...
119
+ def __lt__(self, other: "Crc32CksumChecksum") -> bool: ...
120
+ def __le__(self, other: "Crc32CksumChecksum") -> bool: ...
121
+ def __gt__(self, other: "Crc32CksumChecksum") -> bool: ...
122
+ def __ge__(self, other: "Crc32CksumChecksum") -> bool: ...
123
+
124
+ class SkippableBlake2b512Checksum:
125
+ """A checksum using the Blake2b512 algorithm."""
126
+
127
+ def __init__(self, value: str): ...
128
+ @property
129
+ def is_skipped(self) -> bool:
130
+ """True if the checksum is skipped."""
131
+
132
+ def __str__(self) -> str: ...
133
+ def __repr__(self) -> str: ...
134
+
135
+ class SkippableMd5Checksum:
136
+ """A checksum using the Md5 algorithm.
137
+
138
+ WARNING: Use of this algorithm is highly discouraged, because it is
139
+ cryptographically unsafe.
140
+ """
141
+
142
+ def __init__(self, value: str): ...
143
+ @property
144
+ def is_skipped(self) -> bool:
145
+ """True if the checksum is skipped."""
146
+
147
+ def __str__(self) -> str: ...
148
+ def __repr__(self) -> str: ...
149
+
150
+ class SkippableSha1Checksum:
151
+ """A checksum using the Sha1 algorithm.
152
+
153
+ WARNING: Use of this algorithm is highly discouraged, because it is
154
+ cryptographically unsafe.
155
+ """
156
+
157
+ def __init__(self, value: str): ...
158
+ @property
159
+ def is_skipped(self) -> bool:
160
+ """True if the checksum is skipped."""
161
+
162
+ def __str__(self) -> str: ...
163
+ def __repr__(self) -> str: ...
164
+
165
+ class SkippableSha224Checksum:
166
+ """A checksum using the Sha224 algorithm."""
167
+
168
+ def __init__(self, value: str): ...
169
+ @property
170
+ def is_skipped(self) -> bool:
171
+ """True if the checksum is skipped."""
172
+
173
+ def __str__(self) -> str: ...
174
+ def __repr__(self) -> str: ...
175
+
176
+ class SkippableSha256Checksum:
177
+ """A checksum using the Sha256 algorithm."""
178
+
179
+ def __init__(self, value: str): ...
180
+ @property
181
+ def is_skipped(self) -> bool:
182
+ """True if the checksum is skipped."""
183
+
184
+ def __str__(self) -> str: ...
185
+ def __repr__(self) -> str: ...
186
+
187
+ class SkippableSha384Checksum:
188
+ """A checksum using the Sha384 algorithm."""
189
+
190
+ def __init__(self, value: str): ...
191
+ @property
192
+ def is_skipped(self) -> bool:
193
+ """True if the checksum is skipped."""
194
+
195
+ def __str__(self) -> str: ...
196
+ def __repr__(self) -> str: ...
197
+
198
+ class SkippableSha512Checksum:
199
+ """A checksum using the Sha512 algorithm."""
200
+
201
+ def __init__(self, value: str): ...
202
+ @property
203
+ def is_skipped(self) -> bool:
204
+ """True if the checksum is skipped."""
205
+
206
+ def __str__(self) -> str: ...
207
+ def __repr__(self) -> str: ...
208
+
209
+ class SkippableCrc32CksumChecksum:
210
+ """A checksum using the CRC-32/CKSUM algorithm."""
211
+
212
+ def __init__(self, value: str): ...
213
+ @property
214
+ def is_skipped(self) -> bool:
215
+ """True if the checksum is skipped."""
216
+
217
+ def __str__(self) -> str: ...
218
+ def __repr__(self) -> str: ...
219
+
220
+ class BuildEnvironmentOption:
221
+ """An option string used in a build environment.
222
+
223
+ The option string is identified by its name and whether it is on (not prefixed with
224
+ "!") or off (prefixed with "!").
225
+ """
226
+
227
+ def __init__(self, option: str) -> None:
228
+ """Create a new BuildEnvironmentOption.
229
+
230
+ Args:
231
+ option (str): The option string to parse.
232
+
233
+ Raises:
234
+ ALPMError: If the input doesn't match any known option.
235
+
236
+ """
237
+
238
+ @property
239
+ def name(self) -> str:
240
+ """Name of the option."""
241
+
242
+ @property
243
+ def on(self) -> bool:
244
+ """True if the option is on."""
245
+
246
+ def __str__(self) -> str: ...
247
+ def __repr__(self) -> str: ...
248
+ def __eq__(self, other: object) -> bool: ...
249
+
250
+ class PackageOption:
251
+ """An option string used in packaging.
252
+
253
+ The option string is identified by its name and whether it is on (not prefixed with
254
+ "!") or off (prefixed with "!").
255
+ """
256
+
257
+ def __init__(self, option: str) -> None:
258
+ """Create a new PackageOption.
259
+
260
+ Args:
261
+ option (str): The option string to parse.
262
+
263
+ Raises:
264
+ ALPMError: If the input doesn't match any known option.
265
+
266
+ """
267
+
268
+ @property
269
+ def name(self) -> str:
270
+ """Name of the option."""
271
+
272
+ @property
273
+ def on(self) -> bool:
274
+ """True if the option is on."""
275
+
276
+ def __str__(self) -> str: ...
277
+ def __repr__(self) -> str: ...
278
+ def __eq__(self, other: object) -> bool: ...
279
+
280
+ def makepkg_option_from_str(
281
+ option: str,
282
+ ) -> MakepkgOption:
283
+ """Parse a makepkg option string into the appropriate option type.
284
+
285
+ Args:
286
+ option (str): The option string to parse.
287
+
288
+ Returns:
289
+ MakepkgOption: A valid option object.
290
+
291
+ Raises:
292
+ ALPMError: If the input doesn't match any known option.
293
+
294
+ """
295
+ ...
296
+
297
+ class License:
298
+ """A license expression.
299
+
300
+ Can be either a valid SPDX identifier or a non-standard one.
301
+ """
302
+
303
+ def __init__(self, identifier: str) -> None:
304
+ """Create a new License from an SPDX identifier.
305
+
306
+ Args:
307
+ identifier (str): License expression.
308
+
309
+ """
310
+
311
+ @staticmethod
312
+ def from_valid_spdx(identifier: str) -> "License":
313
+ """Create a new License instance from a valid SPDX identifier string.
314
+
315
+ Args:
316
+ identifier (str): A valid SPDX license identifier.
317
+
318
+ Returns:
319
+ license (License): A new License instance.
320
+
321
+ Raises:
322
+ ALPMError: If the identifier is not a valid SPDX license identifier.
323
+
324
+ """
325
+
326
+ @property
327
+ def is_spdx(self) -> bool:
328
+ """True if the license is a valid SPDX identifier."""
329
+
330
+ def __str__(self) -> str: ...
331
+ def __repr__(self) -> str: ...
332
+ def __eq__(self, other: object) -> bool: ...
333
+
334
+ class OpenPGPKeyId:
335
+ """An OpenPGP Key ID.
336
+
337
+ Wraps a string representing a valid OpenPGP Key ID, ensuring that it consists of
338
+ exactly 16 uppercase hexadecimal characters.
339
+ """
340
+
341
+ def __init__(self, key_id: str) -> None:
342
+ """Create a new OpenPGP key ID from a string representation.
343
+
344
+ Args:
345
+ key_id (str): A string representing the OpenPGP Key ID,
346
+ which must be exactly 16 uppercase hexadecimal characters.
347
+
348
+ Returns:
349
+ OpenPGPKeyId: A new instance of OpenPGPKeyId.
350
+
351
+ Raises:
352
+ ALPMError: If the input string is not a valid OpenPGP Key ID.
353
+
354
+ """
355
+
356
+ def __str__(self) -> str: ...
357
+ def __repr__(self) -> str: ...
358
+ def __eq__(self, other: object) -> bool: ...
359
+
360
+ class OpenPGPv4Fingerprint:
361
+ """An OpenPGP v4 fingerprint.
362
+
363
+ Wraps a string representing a valid OpenPGP v4 fingerprint, ensuring that it
364
+ consists of exactly 40 uppercase hexadecimal characters and optional whitespace
365
+ separators.
366
+ """
367
+
368
+ def __init__(self, fingerprint: str) -> None:
369
+ """Create a new OpenPGP v4 fingerprint from a string representation.
370
+
371
+ Args:
372
+ fingerprint (str): A string representing the OpenPGP v4 fingerprint,
373
+ which must be 40 uppercase hexadecimal characters and optional
374
+ whitespace separators. Whitespaces are not allowed at beginning
375
+ and the end of the fingerprint.
376
+
377
+ Returns:
378
+ OpenPGPv4Fingerprint: A new instance of OpenPGPv4Fingerprint.
379
+
380
+ Raises:
381
+ ALPMError: If the input string is not a valid OpenPGP v4 fingerprint.
382
+
383
+ """
384
+
385
+ def __str__(self) -> str: ...
386
+ def __repr__(self) -> str: ...
387
+ def __eq__(self, other: object) -> bool: ...
388
+
389
+ def openpgp_identifier_from_str(
390
+ identifier: str,
391
+ ) -> OpenPGPIdentifier:
392
+ """Create a valid OpenPGPKeyId or OpenPGPv4Fingerprint.
393
+
394
+ Args:
395
+ identifier (str): OpenPGP identifier string, which can be either a key ID or a
396
+ v4 fingerprint.
397
+
398
+ Returns:
399
+ OpenPGPKeyId | OpenPGPv4Fingerprint: A valid OpenPGP identifier object.
400
+
401
+ Raises:
402
+ ALPMError: If the input string isn't a valid OpenPGP key ID or v4 fingerprint.
403
+
404
+ """
405
+
406
+ class RelativeFilePath:
407
+ """A representation of a relative file path.
408
+
409
+ Wraps a Path that is guaranteed to represent a relative file path (i.e. it does not
410
+ end with a '/').
411
+ """
412
+
413
+ def __init__(self, path: Union[Path, str]) -> None:
414
+ """Create a new relative path.
415
+
416
+ Args:
417
+ path (Path | str): The file path.
418
+
419
+ Raises:
420
+ ALPMError: If the provided string is not a valid relative path.
421
+
422
+ """
423
+
424
+ def __str__(self) -> str: ...
425
+ def __repr__(self) -> str: ...
426
+ def __eq__(self, other: object) -> bool: ...
427
+
428
+ class UnknownArchitecture:
429
+ """An unknown but valid CPU architecture."""
430
+
431
+ @property
432
+ def value(self) -> str:
433
+ """String representation of the unknown architecture."""
434
+
435
+ def __str__(self) -> str: ...
436
+ def __repr__(self) -> str: ...
437
+ def __eq__(self, other: object) -> bool: ...
438
+ def __lt__(self, other: "UnknownArchitecture") -> bool: ...
439
+ def __le__(self, other: "UnknownArchitecture") -> bool: ...
440
+ def __gt__(self, other: "UnknownArchitecture") -> bool: ...
441
+ def __ge__(self, other: "UnknownArchitecture") -> bool: ...
442
+ def __hash__(self) -> int: ...
443
+
444
+ class KnownArchitecture(Enum):
445
+ """A known, specific CPU architecture."""
446
+
447
+ AARCH64 = "aarch64"
448
+ ARM = "arm"
449
+ ARMV6H = "armv6h"
450
+ ARMV7H = "armv7h"
451
+ I386 = "i386"
452
+ I486 = "i486"
453
+ I686 = "i686"
454
+ PENTIUM4 = "pentium4"
455
+ RISCV32 = "riscv32"
456
+ RISCV64 = "riscv64"
457
+ X86_64 = "x86_64"
458
+ X86_64_V2 = "x86_64_v2"
459
+ X86_64_V3 = "x86_64_v3"
460
+ X86_64_V4 = "x86_64_v4"
461
+
462
+ @property
463
+ def value(self) -> str:
464
+ """String representation of the known architecture."""
465
+
466
+ def __str__(self) -> str: ...
467
+ def __repr__(self) -> str: ...
468
+ def __eq__(self, other: object) -> bool: ...
469
+ def __lt__(self, other: "KnownArchitecture") -> bool: ...
470
+ def __le__(self, other: "KnownArchitecture") -> bool: ...
471
+ def __gt__(self, other: "KnownArchitecture") -> bool: ...
472
+ def __ge__(self, other: "KnownArchitecture") -> bool: ...
473
+ def __hash__(self) -> int: ...
474
+
475
+ class Architecture:
476
+ """A valid alpm-architecture."""
477
+
478
+ def __init__(self, arch: Union[KnownArchitecture, str] = "any") -> None:
479
+ """Create a new Architecture.
480
+
481
+ Args:
482
+ arch (KnownArchitecture | str): Either a known architecture or a string
483
+ consisting of ASCII alphanumeric characters and underscores.
484
+ Defaults to "any".
485
+
486
+ Raises:
487
+ ALPMError: If the provided string is not a valid alpm-architecture.
488
+
489
+ """
490
+
491
+ @property
492
+ def is_any(self) -> bool:
493
+ """True if represents any architecture."""
494
+
495
+ @property
496
+ def system_arch(self) -> Optional["SystemArchitecture"]:
497
+ """Optional system architecture.
498
+
499
+ None if represents any architecture.
500
+ """
501
+
502
+ def __str__(self) -> str: ...
503
+ def __repr__(self) -> str: ...
504
+ def __eq__(self, other: object) -> bool: ...
505
+ def __lt__(self, other: "Architecture") -> bool: ...
506
+ def __le__(self, other: "Architecture") -> bool: ...
507
+ def __gt__(self, other: "Architecture") -> bool: ...
508
+ def __ge__(self, other: "Architecture") -> bool: ...
509
+ def __hash__(self) -> int: ...
510
+
511
+ class Architectures:
512
+ """A valid array of compatible alpm-architectures.
513
+
514
+ Iterable over Architecture objects.
515
+ """
516
+
517
+ def __init__(
518
+ self, architectures: Optional[Sequence[Union[KnownArchitecture, str]]] = None
519
+ ) -> None:
520
+ """Create a new Architectures iterable.
521
+
522
+ Args:
523
+ architectures (Sequence[Union[KnownArchitecture, str]]): A sequence of
524
+ known architectures or strings consisting of ASCII alphanumeric
525
+ characters and underscores. Defaults to None, which is equivalent to
526
+ ["any"]. If the sequence contains an "any" architecture, it must be the
527
+ only element.
528
+
529
+ Raises:
530
+ ALPMError: If any of the provided strings is not a valid alpm-architecture
531
+ or if the sequence contains "any" with other architectures.
532
+
533
+ """
534
+
535
+ @property
536
+ def is_any(self) -> bool:
537
+ """True if the iterable represents any architecture."""
538
+
539
+ def __iter__(self) -> Iterator[Architecture]: ...
540
+ def __len__(self) -> int: ...
541
+ def __str__(self) -> str: ...
542
+ def __repr__(self) -> str: ...
543
+ def __eq__(self, other: object) -> bool: ...
544
+ def __lt__(self, other: "Architecture") -> bool: ...
545
+ def __le__(self, other: "Architecture") -> bool: ...
546
+ def __gt__(self, other: "Architecture") -> bool: ...
547
+ def __ge__(self, other: "Architecture") -> bool: ...
548
+ def __hash__(self) -> int: ...
549
+
550
+ class Url:
551
+ """Represents a URL.
552
+
553
+ It is used to represent the upstream URL of a package.
554
+ This type does not yet enforce a secure connection (e.g. HTTPS).
555
+ """
556
+
557
+ def __init__(self, url: str) -> None:
558
+ """Create a new Url from a string representation.
559
+
560
+ Args:
561
+ url (str): A string representing URL.
562
+
563
+ Raises:
564
+ ALPMError: If the URL is invalid.
565
+
566
+ """
567
+ ...
568
+
569
+ def __str__(self) -> str: ...
570
+ def __repr__(self) -> str: ...
571
+ def __eq__(self, other: object) -> bool: ...
572
+
573
+ class SourceUrl:
574
+ """A URL for package sources.
575
+
576
+ Wraps the Url type and provides optional information on VCS systems.
577
+ Can be created from custom URL strings, that in part resemble the default URL
578
+ syntax, e.g.: git+https://example.org/example-project.git#tag=v1.0.0?signed
579
+ """
580
+
581
+ def __init__(self, source_url: str) -> None:
582
+ """Create a new SourceUrl from a string representation.
583
+
584
+ Args:
585
+ source_url (str): A string representing SourceUrl.
586
+
587
+ Raises:
588
+ ALPMError: If the value of source_url is invalid.
589
+
590
+ """
591
+ ...
592
+
593
+ @property
594
+ def url(self) -> Url:
595
+ """The URL from where the sources are retrieved."""
596
+
597
+ @property
598
+ def vcs_info(self) -> VcsInfo:
599
+ """Optional data on VCS systems using the URL for the retrieval of sources."""
600
+
601
+ def __str__(self) -> str: ...
602
+ def __repr__(self) -> str: ...
603
+ def __eq__(self, other: object) -> bool: ...
604
+
605
+ class BzrInfo:
606
+ """Bazaar (bzr) VCS information."""
607
+
608
+ @property
609
+ def fragment(self) -> dict[str, str]:
610
+ """Bzr fragment data."""
611
+
612
+ def __eq__(self, other: object) -> bool: ...
613
+
614
+ class FossilInfo:
615
+ """Fossil VCS information."""
616
+
617
+ @property
618
+ def fragment(self) -> dict[str, str]:
619
+ """Fossil fragment data."""
620
+
621
+ def __eq__(self, other: object) -> bool: ...
622
+
623
+ class GitInfo:
624
+ """Git VCS information."""
625
+
626
+ @property
627
+ def fragment(self) -> dict[str, str]:
628
+ """Git fragment data."""
629
+
630
+ @property
631
+ def signed(self) -> bool:
632
+ """True if the OpenPGP signature should be verified."""
633
+
634
+ def __eq__(self, other: object) -> bool: ...
635
+
636
+ class HgInfo:
637
+ """Mercurial (hg) VCS information."""
638
+
639
+ @property
640
+ def fragment(self) -> dict[str, str]:
641
+ """Hg fragment data."""
642
+
643
+ def __eq__(self, other: object) -> bool: ...
644
+
645
+ class SvnInfo:
646
+ """Subversion (svn) VCS information."""
647
+
648
+ @property
649
+ def fragment(self) -> dict[str, str]:
650
+ """Svn fragment data."""
651
+
652
+ def __eq__(self, other: object) -> bool: ...
653
+
654
+ class Source:
655
+ """Represents the location that a source file should be retrieved from.
656
+
657
+ It can be either a local file (next to the PKGBUILD) or a URL.
658
+ """
659
+
660
+ def __init__(self, source: str):
661
+ """Create a new Source from a string representation.
662
+
663
+ Args:
664
+ source (str): A string representing the source. It is either a filename (in
665
+ the same directory as the PKGBUILD) or a url, optionally prefixed by a
666
+ destination file name (separated by "::").
667
+
668
+ Raises:
669
+ ALPMError: If the source string is invalid.
670
+
671
+ """
672
+
673
+ @property
674
+ def filename(self) -> Optional[Path]:
675
+ """The filename of the source, if it is set."""
676
+
677
+ @property
678
+ def source_url(self) -> Optional[SourceUrl]:
679
+ """The source URL."""
680
+
681
+ @property
682
+ def location(self) -> Optional[Path]:
683
+ """The source file name."""
684
+
685
+ def __str__(self) -> str: ...
686
+ def __repr__(self) -> str: ...
687
+ def __eq__(self, other: object) -> bool: ...
688
+
689
+ class Epoch:
690
+ """An epoch of a package.
691
+
692
+ Epoch is used to indicate the downgrade of a package and is prepended to a version,
693
+ delimited by a ':' (e.g. '1:' is added to '0.10.0-1' to form '1:0.10.0-1' which
694
+ then orders newer than '1.0.0-1').
695
+
696
+ An Epoch wraps an int that is guaranteed to be greater than 0.
697
+ """
698
+
699
+ def __init__(self, value: int) -> None:
700
+ """Create a new epoch from a positive integer.
701
+
702
+ Args:
703
+ value (int): The epoch value, must be a non-zero positive integer.
704
+
705
+ Raises:
706
+ ValueError: If the epoch is not a positive integer.
707
+ OverflowError: If the epoch is greater than the system's pointer size.
708
+
709
+ """
710
+
711
+ @staticmethod
712
+ def from_str(epoch: str) -> "Epoch":
713
+ """Create a new Epoch from a string representation.
714
+
715
+ Args:
716
+ epoch (str): The string representation of the epoch.
717
+
718
+ Returns:
719
+ Epoch: A new instance of Epoch.
720
+
721
+ Raises:
722
+ ALPMError: If the string cannot be parsed as a valid epoch.
723
+
724
+ """
725
+
726
+ @property
727
+ def value(self) -> int:
728
+ """Epoch value as an integer."""
729
+
730
+ def __str__(self) -> str: ...
731
+ def __repr__(self) -> str: ...
732
+ def __eq__(self, other: object) -> bool: ...
733
+ def __lt__(self, other: "Epoch") -> bool: ...
734
+ def __le__(self, other: "Epoch") -> bool: ...
735
+ def __gt__(self, other: "Epoch") -> bool: ...
736
+ def __ge__(self, other: "Epoch") -> bool: ...
737
+
738
+ class PackageRelease:
739
+ """The release version of a package.
740
+
741
+ Wraps int for its major version and Optional[int] for its minor version.
742
+
743
+ Used to indicate the build version of a package.
744
+ """
745
+
746
+ def __init__(self, major: int = 0, minor: Optional[int] = None) -> None:
747
+ """Create a new package release.
748
+
749
+ Args:
750
+ major (int): The major version of the package release.
751
+ minor (Optional[int]): The minor version of the package release, defaults
752
+ to None
753
+
754
+ Raises:
755
+ OverflowError: If the major or minor version is negative or greater than
756
+ the system's pointer size.
757
+
758
+ """
759
+
760
+ @staticmethod
761
+ def from_str(version: str) -> "PackageRelease":
762
+ """Create a PackageRelease from a string representation.
763
+
764
+ Args:
765
+ version: (str): The string representation of the package release.
766
+
767
+ Returns:
768
+ PackageRelease: A new instance of PackageRelease.
769
+
770
+ Raises:
771
+ ALPMError: If the string cannot be parsed as a valid package release.
772
+
773
+ """
774
+
775
+ @property
776
+ def major(self) -> int:
777
+ """Major version of the package release."""
778
+
779
+ @property
780
+ def minor(self) -> Optional[int]:
781
+ """Minor version of the package release, if available."""
782
+
783
+ def __str__(self) -> str: ...
784
+ def __repr__(self) -> str: ...
785
+ def __eq__(self, other: object) -> bool: ...
786
+
787
+ class PackageVersion:
788
+ """A pkgver of a package.
789
+
790
+ Used to denote the upstream version of a package.
791
+
792
+ Wraps a string, which is guaranteed to only contain alphanumeric characters, '_',
793
+ '+'` or '.', but to not start with a '_', a '+' or a '.' character and to be at
794
+ least one char long.
795
+
796
+ NOTE: This implementation of PackageVersion is stricter than that of
797
+ libalpm/pacman. It does not allow empty strings '', or chars that are not in the
798
+ allowed set, or '.' as the first character.
799
+ """
800
+
801
+ def __init__(self, pkgver: str) -> None:
802
+ """Create a new package version from a string representation.
803
+
804
+ Args:
805
+ pkgver: (str): The package version string, must be a valid pkgver.
806
+
807
+ Raises:
808
+ ALPMError: If the pkgver is not a valid pkgver string.
809
+
810
+ """
811
+ ...
812
+
813
+ def __str__(self) -> str: ...
814
+ def __repr__(self) -> str: ...
815
+ def __eq__(self, other: object) -> bool: ...
816
+ def __lt__(self, other: "PackageVersion") -> bool: ...
817
+ def __le__(self, other: "PackageVersion") -> bool: ...
818
+ def __gt__(self, other: "PackageVersion") -> bool: ...
819
+ def __ge__(self, other: "PackageVersion") -> bool: ...
820
+
821
+ class SchemaVersion:
822
+ """The schema version of a type.
823
+
824
+ Wraps a semver version. However, for backwards compatibility reasons it is possible
825
+ to initialize a SchemaVersion using a non-semver compatible string, if it can be
826
+ parsed to a single 64-bit unsigned integer (e.g. '1').
827
+ """
828
+
829
+ def __init__(
830
+ self,
831
+ major: int = 0,
832
+ minor: int = 0,
833
+ patch: int = 0,
834
+ pre: str = "",
835
+ build: str = "",
836
+ ) -> None:
837
+ """Create a new schema version.
838
+
839
+ Args:
840
+ major (int): The major version number.
841
+ minor (int): The minor version number.
842
+ patch (int): The patch version number.
843
+ pre (str): Optional pre-release identifier on a version string. This comes
844
+ after '-' in a semver version, like '1.0.0-alpha.1'.
845
+ build (str): Optional build metadata identifier. This comes after '+' in a
846
+ semver version, as in '0.8.1+zstd.1.5.0'.
847
+
848
+ Raises:
849
+ ALPMError: If the pre-release or build metadata cannot be parsed.
850
+ OverflowError: If the major, minor, or patch version is greater than
851
+ 2^64 - 1 or negative.
852
+
853
+ """
854
+
855
+ @staticmethod
856
+ def from_str(version: str) -> "SchemaVersion":
857
+ """Create a SchemaVersion from a string representation.
858
+
859
+ Args:
860
+ version (str): The string representation of the schema version.
861
+
862
+ Returns:
863
+ SchemaVersion: A new instance of SchemaVersion.
864
+
865
+ Raises:
866
+ ALPMError: If the string cannot be parsed as a valid schema version.
867
+
868
+ """
869
+
870
+ @property
871
+ def major(self) -> int:
872
+ """Major version number of the schema version."""
873
+
874
+ @property
875
+ def minor(self) -> int:
876
+ """Minor version number of the schema version."""
877
+
878
+ @property
879
+ def patch(self) -> int:
880
+ """Patch version number of the schema version."""
881
+
882
+ @property
883
+ def pre(self) -> str:
884
+ """Pre-release identifier of the schema version."""
885
+
886
+ @property
887
+ def build(self) -> str:
888
+ """Build metadata identifier of the schema version."""
889
+
890
+ def __str__(self) -> str: ...
891
+ def __repr__(self) -> str: ...
892
+ def __eq__(self, other: object) -> bool: ...
893
+ def __lt__(self, other: "SchemaVersion") -> bool: ...
894
+ def __le__(self, other: "SchemaVersion") -> bool: ...
895
+ def __gt__(self, other: "SchemaVersion") -> bool: ...
896
+ def __ge__(self, other: "SchemaVersion") -> bool: ...
897
+
898
+ class OptionalDependency:
899
+ """An optional dependency for a package.
900
+
901
+ This type is used for representing dependencies that are not essential for base
902
+ functionality of a package, but may be necessary to make use of certain features
903
+ of a package.
904
+
905
+ An OptionalDependency consists of a package relation and an optional description
906
+ separated by a colon (':'). The package relation component must be a valid
907
+ PackageRelation. If a description is provided it must be at least one character
908
+ long.
909
+ """
910
+
911
+ def __init__(
912
+ self, package_relation: "PackageRelation", description: Optional[str] = None
913
+ ):
914
+ """Create a new optional dependency.
915
+
916
+ Args:
917
+ package_relation (PackageRelation): The package relation of the optional
918
+ dependency.
919
+ description (Optional[str]): An optional description of the dependency.
920
+
921
+ """
922
+
923
+ @staticmethod
924
+ def from_str(s: str) -> "OptionalDependency":
925
+ """Create a new OptionalDependency from a string representation.
926
+
927
+ Args:
928
+ s (str): The string representation of the optional dependency.
929
+
930
+ Returns:
931
+ OptionalDependency: A new instance of OptionalDependency.
932
+
933
+ Raises:
934
+ ALPMError: If the string cannot be parsed as a valid optional dependency.
935
+
936
+ """
937
+
938
+ @property
939
+ def name(self) -> str:
940
+ """Name of the optional dependency."""
941
+
942
+ @property
943
+ def version_requirement(self) -> Optional["VersionRequirement"]:
944
+ """Version requirement of the optional dependency, if any."""
945
+
946
+ @property
947
+ def description(self) -> Optional[str]:
948
+ """Description of the optional dependency, if any."""
949
+
950
+ def __str__(self) -> str: ...
951
+ def __repr__(self) -> str: ...
952
+ def __eq__(self, other: object) -> bool: ...
953
+
954
+ class PackageRelation:
955
+ """A package relation.
956
+
957
+ Describes a relation to a component.
958
+ Package relations may either consist of only a name or of a name and a
959
+ version_requirement.
960
+ """
961
+
962
+ def __init__(
963
+ self, name: str, version_requirement: Optional["VersionRequirement"] = None
964
+ ):
965
+ """Create a new package relation.
966
+
967
+ Args:
968
+ name (str): The name of the package.
969
+ version_requirement (Optional[VersionRequirement]): An optional version
970
+ requirement for the package.
971
+
972
+ Raises:
973
+ ALPMError: If the name is invalid.
974
+
975
+ """
976
+
977
+ @property
978
+ def name(self) -> str:
979
+ """Name of the package."""
980
+
981
+ @property
982
+ def version_requirement(self) -> Optional["VersionRequirement"]:
983
+ """Version requirement of the package, if any."""
984
+
985
+ def __str__(self) -> str: ...
986
+ def __repr__(self) -> str: ...
987
+ def __eq__(self, other: object) -> bool: ...
988
+
989
+ class SonameV1Type(Enum):
990
+ """The form of a SonameV1."""
991
+
992
+ BASIC = ("BASIC",)
993
+ UNVERSIONED = ("UNVERSIONED",)
994
+ EXPLICIT = ("EXPLICIT",)
995
+
996
+ class SonameV1:
997
+ """Soname data of a shared object based on the alpm-sonamev1 specification.
998
+
999
+ This type is deprecated and SonameV2 should be preferred instead! Due to the
1000
+ loose nature of the alpm-sonamev1 specification, the basic form overlaps with the
1001
+ specification of Name and the explicit form overlaps with that of PackageRelation.
1002
+ """
1003
+
1004
+ def __init__(
1005
+ self,
1006
+ name: str,
1007
+ version_or_soname: Optional[VersionOrSoname] = None,
1008
+ architecture: Optional["ElfArchitectureFormat"] = None,
1009
+ ):
1010
+ """Create a new SonameV1.
1011
+
1012
+ Depending on input, returns different forms of SonameV1:
1013
+ BASIC, if both version_or_soname and architecture are None
1014
+ UNVERSIONED, if version_or_soname is a str and architecture is not None
1015
+ EXPLICIT, if version_or_soname is a PackageVersion and architecture is not None
1016
+
1017
+ Args:
1018
+ name (str): The name of the shared object.
1019
+ version_or_soname (Optional[VersionOrSoname]): The package version
1020
+ (forexplicit form) or soname (for unversioned form) of the shared
1021
+ object.
1022
+ architecture (Optional[ElfArchitectureFormat]): The architecture of the
1023
+ shared object, only for unversioned or explicit forms.
1024
+
1025
+ Raises:
1026
+ ALPMError: If the input is invalid.
1027
+
1028
+ """
1029
+
1030
+ @property
1031
+ def name(self) -> str:
1032
+ """The least specific name of the shared object file."""
1033
+
1034
+ @property
1035
+ def soname(self) -> Optional[str]:
1036
+ """The value of the shared object's SONAME field in its dynamic section.
1037
+
1038
+ Available only for unversioned form.
1039
+ """
1040
+
1041
+ @property
1042
+ def version(self) -> Optional["PackageVersion"]:
1043
+ """The version of the shared object file (as exposed in its _soname_ data).
1044
+
1045
+ Available only for explicit form.
1046
+ """
1047
+
1048
+ @property
1049
+ def architecture(self) -> Optional["ElfArchitectureFormat"]:
1050
+ """The ELF architecture format of the shared object file.
1051
+
1052
+ Not available for basic form.
1053
+ """
1054
+
1055
+ @property
1056
+ def form(self) -> "SonameV1Type":
1057
+ """The form of this SonameV1."""
1058
+
1059
+ def __str__(self) -> str: ...
1060
+ def __repr__(self) -> str: ...
1061
+ def __eq__(self, other: object) -> bool: ...
1062
+
1063
+ def relation_or_soname_from_str(s: str) -> RelationOrSoname:
1064
+ """Parse a string into either a PackageRelation or a SonameV1.
1065
+
1066
+ Args:
1067
+ s (str): The string representation of PackageRelation or SonameV1.
1068
+
1069
+ Returns:
1070
+ RelationOrSoname: A valid PackageRelation or SonameV1 object.
1071
+
1072
+ Raises:
1073
+ ALPMError: If the input string can't be parsed to a valid PackageRelation or
1074
+ SonameV1.
1075
+
1076
+ """
1077
+
1078
+ class VersionComparison(Enum):
1079
+ """Specifies the comparison function for a VersionRequirement.
1080
+
1081
+ The package version can be required to be:
1082
+ - less than ('<')
1083
+ - less than or equal to ('<=')
1084
+ - equal to ('=')
1085
+ - greater than or equal to ('>=')
1086
+ - greater than ('>')
1087
+ the specified version.
1088
+ """
1089
+
1090
+ LESS_OR_EQUAL = ("<=",)
1091
+ GREATER_OR_EQUAL = (">=",)
1092
+ EQUAL = ("=",)
1093
+ LESS = ("<",)
1094
+ GREATER = (">",)
1095
+
1096
+ @staticmethod
1097
+ def from_str(comparison: str) -> "VersionComparison":
1098
+ """Parse a version comparison string into a VersionComparison enum variant.
1099
+
1100
+ Args:
1101
+ comparison (str): The version comparison string to parse. Must be one of
1102
+ '<', '<=', '=', '>=', '>'.
1103
+
1104
+ Returns:
1105
+ VersionComparison: The corresponding VersionComparison enum variant.
1106
+
1107
+ Raises:
1108
+ ALPMError: If the input string doesn't match any known comparison.
1109
+
1110
+ """
1111
+
1112
+ def __eq__(self, other: object) -> bool: ...
1113
+
1114
+ class VersionRequirement:
1115
+ """A version requirement, e.g. for a dependency package.
1116
+
1117
+ It consists of a target version and a VersionComparison. A version requirement of
1118
+ '>=1.5' has a target version of '1.5' and a comparison function of
1119
+ VersionComparison.GREATER_OR_EQUAL.
1120
+ """
1121
+
1122
+ def __init__(self, comparison: "VersionComparison", version: "Version") -> None:
1123
+ """Create a new version requirement.
1124
+
1125
+ Args:
1126
+ comparison (VersionComparison): The comparison function.
1127
+ version (Version): The version.
1128
+
1129
+ """
1130
+
1131
+ @staticmethod
1132
+ def from_str(s: str) -> "VersionRequirement":
1133
+ """Create a new VersionRequirement from a string representation.
1134
+
1135
+ Args:
1136
+ s (str): The string representation of the version requirement.
1137
+
1138
+ Returns:
1139
+ VersionRequirement: A new instance of VersionRequirement.
1140
+
1141
+ Raises:
1142
+ ALPMError: If the string cannot be parsed as a valid version requirement.
1143
+
1144
+ """
1145
+
1146
+ def is_satisfied_by(self, ver: "Version") -> bool:
1147
+ """Return True if the requirement is satisfied by the given package version.
1148
+
1149
+ Args:
1150
+ ver (Version): The version to check.
1151
+
1152
+ Returns:
1153
+ bool: True if the version satisfies the requirement, False otherwise.
1154
+
1155
+ """
1156
+
1157
+ def __str__(self) -> str: ...
1158
+ def __repr__(self) -> str: ...
1159
+ def __eq__(self, other: object) -> bool: ...
1160
+
1161
+ class ElfArchitectureFormat(Enum):
1162
+ """ELF architecture format.
1163
+
1164
+ This enum represents the Class field in the ELF Header.
1165
+ """
1166
+
1167
+ BIT_32 = ("32",)
1168
+ BIT_64 = ("64",)
1169
+
1170
+ @staticmethod
1171
+ def from_str(format: str) -> "ElfArchitectureFormat":
1172
+ """Parse an ELF architecture format string into an ElfArchitectureFormat.
1173
+
1174
+ Args:
1175
+ format (str): The ELF architecture format string to parse. Must be one of
1176
+ '32' or '64'.
1177
+
1178
+ Returns:
1179
+ ElfArchitectureFormat: The corresponding ElfArchitectureFormat enum variant.
1180
+
1181
+ Raises:
1182
+ ValueError: If the input string doesn't match any known format.
1183
+
1184
+ """
1185
+
1186
+ def __eq__(self, other: object) -> bool: ...
1187
+ def __hash__(self) -> int: ...
1188
+
1189
+ class FullVersion:
1190
+ """A package version with mandatory PackageRelease.
1191
+
1192
+ Tracks an optional Epoch, a PackageVersion and a PackageRelease. This reflects the
1193
+ 'full' and 'full with epoch' forms of alpm-package-version.
1194
+ """
1195
+
1196
+ def __init__(
1197
+ self,
1198
+ pkgver: "PackageVersion",
1199
+ pkgrel: "PackageRelease",
1200
+ epoch: Optional["Epoch"] = None,
1201
+ ) -> None:
1202
+ """Create a new FullVersion.
1203
+
1204
+ Args:
1205
+ pkgver (PackageVersion): The package version.
1206
+ pkgrel (PackageRelease): The package release.
1207
+ epoch (Optional[Epoch]): The epoch, if any.
1208
+
1209
+ """
1210
+
1211
+ @staticmethod
1212
+ def from_str(version: str) -> "FullVersion":
1213
+ """Create a FullVersion from a string representation.
1214
+
1215
+ Args:
1216
+ version (str): The string representation of the full version.
1217
+
1218
+ Returns:
1219
+ FullVersion: A new instance of FullVersion.
1220
+
1221
+ Raises:
1222
+ ALPMError: If the string cannot be parsed as a valid full version.
1223
+
1224
+ """
1225
+
1226
+ @property
1227
+ def pkgver(self) -> "PackageVersion":
1228
+ """The package version."""
1229
+
1230
+ @property
1231
+ def pkgrel(self) -> "PackageRelease":
1232
+ """The package release."""
1233
+
1234
+ @property
1235
+ def epoch(self) -> Optional["Epoch"]:
1236
+ """The epoch, if any."""
1237
+
1238
+ def vercmp(self, other: "FullVersion") -> int:
1239
+ """Compare this FullVersion with another FullVersion.
1240
+
1241
+ Output behavior is based on the behavior of the vercmp tool.
1242
+
1243
+ Args:
1244
+ other (FullVersion): The other FullVersion to compare against.
1245
+
1246
+ Returns:
1247
+ int: 1 if self is newer than other,
1248
+ 0 if they are equal,
1249
+ -1 if self is older than other.
1250
+
1251
+ """
1252
+
1253
+ def __str__(self) -> str: ...
1254
+ def __repr__(self) -> str: ...
1255
+ def __eq__(self, other: object) -> bool: ...
1256
+ def __lt__(self, other: "FullVersion") -> bool: ...
1257
+ def __le__(self, other: "FullVersion") -> bool: ...
1258
+ def __gt__(self, other: "FullVersion") -> bool: ...
1259
+ def __ge__(self, other: "FullVersion") -> bool: ...
1260
+
1261
+ class Version:
1262
+ """A version of a package.
1263
+
1264
+ A Version generically tracks an optional Epoch, a PackageVersion and an optional
1265
+ PackageRelease.
1266
+ """
1267
+
1268
+ def __init__(
1269
+ self,
1270
+ pkgver: "PackageVersion",
1271
+ pkgrel: Optional["PackageRelease"] = None,
1272
+ epoch: Optional["Epoch"] = None,
1273
+ ) -> None:
1274
+ """Create a new Version.
1275
+
1276
+ Args:
1277
+ pkgver (PackageVersion): The package version.
1278
+ pkgrel (Optional[PackageRelease]): The package release, if any.
1279
+ epoch (Optional[Epoch]): The epoch, if any.
1280
+
1281
+ """
1282
+
1283
+ @staticmethod
1284
+ def from_str(version: str) -> "Version":
1285
+ """Create a FullVersion from a string representation.
1286
+
1287
+ Args:
1288
+ version (str): The string representation of the full version.
1289
+
1290
+ Returns:
1291
+ FullVersion: A new instance of FullVersion.
1292
+
1293
+ Raises:
1294
+ ALPMError: If the string cannot be parsed as a valid full version.
1295
+
1296
+ """
1297
+
1298
+ @property
1299
+ def pkgver(self) -> "PackageVersion":
1300
+ """The package version."""
1301
+
1302
+ @property
1303
+ def pkgrel(self) -> Optional["PackageRelease"]:
1304
+ """The package release, if any."""
1305
+
1306
+ @property
1307
+ def epoch(self) -> Optional["Epoch"]:
1308
+ """The epoch, if any."""
1309
+
1310
+ def vercmp(self, other: "Version") -> int:
1311
+ """Compare this Version with another Version.
1312
+
1313
+ Output behavior is based on the behavior of the vercmp tool.
1314
+
1315
+ Args:
1316
+ other (Version): The other Version to compare against.
1317
+
1318
+ Returns:
1319
+ int: 1 if self is newer than other,
1320
+ 0 if they are equal,
1321
+ -1 if self is older than other.
1322
+
1323
+ """
1324
+
1325
+ def __str__(self) -> str: ...
1326
+ def __repr__(self) -> str: ...
1327
+ def __eq__(self, other: object) -> bool: ...
1328
+ def __lt__(self, other: "Version") -> bool: ...
1329
+ def __le__(self, other: "Version") -> bool: ...
1330
+ def __gt__(self, other: "Version") -> bool: ...
1331
+ def __ge__(self, other: "Version") -> bool: ...
1332
+
1333
+ __all__ = [
1334
+ "ALPMError",
1335
+ "Blake2b512Checksum",
1336
+ "Md5Checksum",
1337
+ "Sha1Checksum",
1338
+ "Sha224Checksum",
1339
+ "Sha256Checksum",
1340
+ "Sha384Checksum",
1341
+ "Sha512Checksum",
1342
+ "Crc32CksumChecksum",
1343
+ "SkippableBlake2b512Checksum",
1344
+ "SkippableMd5Checksum",
1345
+ "SkippableSha1Checksum",
1346
+ "SkippableSha224Checksum",
1347
+ "SkippableSha256Checksum",
1348
+ "SkippableSha384Checksum",
1349
+ "SkippableSha512Checksum",
1350
+ "SkippableCrc32CksumChecksum",
1351
+ "BuildEnvironmentOption",
1352
+ "PackageOption",
1353
+ "makepkg_option_from_str",
1354
+ "License",
1355
+ "OpenPGPKeyId",
1356
+ "OpenPGPv4Fingerprint",
1357
+ "openpgp_identifier_from_str",
1358
+ "RelativeFilePath",
1359
+ "UnknownArchitecture",
1360
+ "KnownArchitecture",
1361
+ "Architecture",
1362
+ "Architectures",
1363
+ "Url",
1364
+ "SourceUrl",
1365
+ "BzrInfo",
1366
+ "FossilInfo",
1367
+ "GitInfo",
1368
+ "HgInfo",
1369
+ "SvnInfo",
1370
+ "Source",
1371
+ "Epoch",
1372
+ "PackageRelease",
1373
+ "PackageVersion",
1374
+ "SchemaVersion",
1375
+ "OptionalDependency",
1376
+ "PackageRelation",
1377
+ "SonameV1",
1378
+ "SonameV1Type",
1379
+ "relation_or_soname_from_str",
1380
+ "VersionComparison",
1381
+ "VersionRequirement",
1382
+ "ElfArchitectureFormat",
1383
+ "FullVersion",
1384
+ "Version",
1385
+ ]