lief 0.16.5__cp312-cp312-win32.whl → 0.17.0__cp312-cp312-win32.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 lief might be problematic. Click here for more details.

lief/__init__.pyi CHANGED
@@ -2,12 +2,16 @@ from collections.abc import Sequence
2
2
  import enum
3
3
  import io
4
4
  import lief
5
+ import lief.ELF
6
+ import lief.MachO
7
+ import lief.PE
5
8
  import os
6
9
  from typing import Iterator, Optional, Union, overload
7
10
 
8
11
  from . import (
9
12
  ART as ART,
10
13
  Android as Android,
14
+ COFF as COFF,
11
15
  DEX as DEX,
12
16
  ELF as ELF,
13
17
  MachO as MachO,
@@ -23,208 +27,145 @@ from . import (
23
27
  )
24
28
 
25
29
 
26
- class Binary(Object):
27
- class VA_TYPES(enum.Enum):
28
- AUTO = 0
29
-
30
- VA = 2
31
-
32
- RVA = 1
33
-
34
- class FORMATS(enum.Enum):
35
- UNKNOWN = 0
36
-
37
- ELF = 1
38
-
39
- PE = 2
30
+ __tag__: str = ...
40
31
 
41
- MACHO = 3
32
+ __commit__: str = ...
42
33
 
43
- OAT = 4
34
+ __is_tagged__: bool = ...
44
35
 
45
- class it_sections:
46
- def __getitem__(self, arg: int, /) -> Section: ...
36
+ class lief_version_t:
37
+ major: int
47
38
 
48
- def __len__(self) -> int: ...
39
+ minor: int
49
40
 
50
- def __iter__(self) -> Binary.it_sections: ...
41
+ patch: int
51
42
 
52
- def __next__(self) -> Section: ...
43
+ id: int
53
44
 
54
- class it_symbols:
55
- def __getitem__(self, arg: int, /) -> Symbol: ...
45
+ def __repr__(self) -> str: ...
56
46
 
57
- def __len__(self) -> int: ...
47
+ def __str__(self) -> str: ...
58
48
 
59
- def __iter__(self) -> Binary.it_symbols: ...
49
+ def disable_leak_warning() -> None: ...
60
50
 
61
- def __next__(self) -> Symbol: ...
51
+ def demangle(mangled: str) -> Optional[str]: ...
62
52
 
63
- class it_relocations:
64
- def __getitem__(self, arg: int, /) -> Relocation: ...
53
+ def dump(buffer: memoryview, title: str = '', prefix: str = '', limit: int = 0) -> str: ...
65
54
 
66
- def __len__(self) -> int: ...
55
+ def extended_version_info() -> str: ...
67
56
 
68
- def __iter__(self) -> Binary.it_relocations: ...
57
+ def extended_version() -> lief_version_t: ...
69
58
 
70
- def __next__(self) -> Relocation: ...
59
+ __extended__: bool = ...
71
60
 
72
- @property
73
- def debug_info(self) -> DebugInfo: ...
61
+ class range_t:
62
+ low: int
74
63
 
75
- @property
76
- def format(self) -> Binary.FORMATS: ...
64
+ high: int
77
65
 
78
66
  @property
79
- def is_pie(self) -> bool: ...
67
+ def size(self) -> int: ...
80
68
 
81
- @property
82
- def has_nx(self) -> bool: ...
69
+ def __repr__(self) -> str: ...
83
70
 
84
- @property
85
- def header(self) -> Header: ...
71
+ def __str__(self) -> str: ...
86
72
 
87
- @property
88
- def entrypoint(self) -> int: ...
73
+ class debug_location_t:
74
+ line: int
89
75
 
90
- def remove_section(self, name: str, clear: bool = False) -> None: ...
76
+ file: str
91
77
 
92
- @property
93
- def sections(self) -> Binary.it_sections: ...
78
+ def __repr__(self) -> str: ...
94
79
 
95
- @property
96
- def relocations(self) -> Binary.it_relocations: ...
80
+ class PLATFORMS(enum.Enum):
81
+ @staticmethod
82
+ def from_value(arg: int, /) -> PLATFORMS: ...
97
83
 
98
- @property
99
- def exported_functions(self) -> list[Function]: ...
84
+ def __eq__(self, arg, /) -> bool: ...
100
85
 
101
- @property
102
- def imported_functions(self) -> list[Function]: ...
86
+ def __ne__(self, arg, /) -> bool: ...
103
87
 
104
- @property
105
- def libraries(self) -> list[Union[str,bytes]]: ...
88
+ def __int__(self) -> int: ...
106
89
 
107
- @property
108
- def symbols(self) -> Binary.it_symbols: ...
90
+ UNKNOWN = 3
109
91
 
110
- def has_symbol(self, symbol_name: str) -> bool: ...
92
+ LINUX = 1
111
93
 
112
- def get_symbol(self, symbol_name: str) -> Symbol: ...
94
+ ANDROID = 2
113
95
 
114
- def get_function_address(self, function_name: str) -> Union[int, lief_errors]: ...
96
+ WINDOWS = 3
115
97
 
116
- @overload
117
- def patch_address(self, address: int, patch_value: Sequence[int], va_type: Binary.VA_TYPES = Binary.VA_TYPES.AUTO) -> None: ...
98
+ IOS = 4
118
99
 
119
- @overload
120
- def patch_address(self, address: int, patch_value: int, size: int = 8, va_type: Binary.VA_TYPES = Binary.VA_TYPES.AUTO) -> None: ...
100
+ OSX = 5
121
101
 
122
- def get_content_from_virtual_address(self, virtual_address: int, size: int, va_type: Binary.VA_TYPES = Binary.VA_TYPES.AUTO) -> memoryview: ...
102
+ def current_platform() -> PLATFORMS: ...
123
103
 
124
- def get_int_from_virtual_address(self, address: int, interger_size: int, type: Binary.VA_TYPES = Binary.VA_TYPES.AUTO) -> Optional[int]: ...
104
+ class Object:
105
+ def __hash__(self) -> int: ...
125
106
 
126
- @property
127
- def abstract(self) -> lief.Binary: ...
107
+ def __eq__(self, arg, /) -> bool: ...
128
108
 
129
- @property
130
- def concrete(self) -> lief.ELF.Binary | lief.PE.Binary | lief.MachO.Binary: ...
109
+ class ok_t:
110
+ def __bool__(self) -> bool: ...
131
111
 
112
+ class ok_error_t:
132
113
  @property
133
- def ctor_functions(self) -> list[Function]: ...
134
-
135
- def xref(self, virtual_address: int) -> list[int]: ...
136
-
137
- def offset_to_virtual_address(self, offset: int, slide: int = 0) -> Union[int, lief_errors]: ...
114
+ def is_error(self) -> bool: ...
138
115
 
139
116
  @property
140
- def imagebase(self) -> int: ...
117
+ def is_value(self) -> bool: ...
141
118
 
142
119
  @property
143
- def original_size(self) -> int: ...
144
-
145
- @overload
146
- def disassemble(self, address: int) -> Iterator[Optional[assembly.Instruction]]: ...
147
-
148
- @overload
149
- def disassemble(self, address: int, size: int) -> Iterator[Optional[assembly.Instruction]]: ...
150
-
151
- @overload
152
- def disassemble(self, function_name: str) -> Iterator[Optional[assembly.Instruction]]: ...
153
-
154
- def disassemble_from_bytes(self, buffer: bytes, address: int = 0) -> Iterator[Optional[assembly.Instruction]]: ...
155
-
156
- def assemble(self, address: int, assembly: str) -> bytes: ...
157
-
158
- def __str__(self) -> str: ...
159
-
160
- class DebugInfo:
161
- class FORMAT(enum.Enum):
162
- @staticmethod
163
- def from_value(arg: int, /) -> DebugInfo.FORMAT: ...
164
-
165
- def __eq__(self, arg, /) -> bool: ...
166
-
167
- def __ne__(self, arg, /) -> bool: ...
168
-
169
- def __int__(self) -> int: ...
170
-
171
- UNKNOWN = 0
172
-
173
- DWARF = 1
174
-
175
- PDB = 2
120
+ def error(self) -> lief_errors: ...
176
121
 
177
122
  @property
178
- def format(self) -> DebugInfo.FORMAT: ...
123
+ def value(self) -> ok_t: ...
179
124
 
180
- class Function(Symbol):
181
- @overload
182
- def __init__(self) -> None: ...
125
+ def __bool__(self) -> bool: ...
183
126
 
184
- @overload
185
- def __init__(self, arg: str, /) -> None: ...
127
+ class lief_errors(enum.Enum):
128
+ read_error = 1
186
129
 
187
- @overload
188
- def __init__(self, arg: int, /) -> None: ...
130
+ not_found = 2
189
131
 
190
- @overload
191
- def __init__(self, arg0: str, arg1: int, /) -> None: ...
132
+ not_implemented = 3
192
133
 
193
- class FLAGS(enum.Flag):
194
- @staticmethod
195
- def from_value(arg: int, /) -> Function.FLAGS: ...
134
+ not_supported = 4
196
135
 
197
- def __eq__(self, arg, /) -> bool: ...
136
+ corrupted = 5
198
137
 
199
- def __ne__(self, arg, /) -> bool: ...
138
+ conversion_error = 6
200
139
 
201
- def __int__(self) -> int: ...
140
+ read_out_of_bound = 7
202
141
 
203
- NONE = 0
142
+ asn1_bad_tag = 8
204
143
 
205
- IMPORTED = 16
144
+ file_error = 9
206
145
 
207
- EXPORTED = 8
146
+ file_format_error = 10
208
147
 
209
- CONSTRUCTOR = 1
148
+ parsing_error = 11
210
149
 
211
- DESTRUCTOR = 2
150
+ build_error = 12
212
151
 
213
- DEBUG_INFO = 4
152
+ data_too_large = 13
214
153
 
215
- def add(self, flag: Function.FLAGS) -> Function: ...
154
+ require_extended_version = 14
216
155
 
217
- def has(self, flag: Function.FLAGS) -> bool: ...
156
+ @overload
157
+ def hash(arg: Object, /) -> int: ... # type: ignore
218
158
 
219
- @property
220
- def flags(self) -> Function.FLAGS: ...
159
+ @overload
160
+ def hash(arg: Sequence[int], /) -> int: ... # type: ignore
221
161
 
222
- @property
223
- def flags_list(self) -> list[Function.FLAGS]: ...
162
+ @overload
163
+ def hash(arg: bytes, /) -> int: ... # type: ignore
224
164
 
225
- address: int
165
+ @overload
166
+ def hash(arg: str, /) -> int: ... # type: ignore
226
167
 
227
- def __str__(self) -> str: ...
168
+ def to_json(arg: Object, /) -> str: ...
228
169
 
229
170
  class Header(Object):
230
171
  class ARCHITECTURES(enum.Enum):
@@ -261,6 +202,8 @@ class Header(Object):
261
202
 
262
203
  LOONGARCH = 11
263
204
 
205
+ PPC64 = 12
206
+
264
207
  class ENDIANNESS(enum.Enum):
265
208
  @staticmethod
266
209
  def from_value(arg: int, /) -> Header.ENDIANNESS: ...
@@ -343,37 +286,142 @@ class Header(Object):
343
286
 
344
287
  def __str__(self) -> str: ...
345
288
 
346
- class Object:
347
- def __hash__(self) -> int: ...
289
+ class Binary(Object):
290
+ class VA_TYPES(enum.Enum):
291
+ AUTO = 0
348
292
 
349
- def __eq__(self, arg, /) -> bool: ...
293
+ RVA = 1
350
294
 
351
- class PLATFORMS(enum.Enum):
352
- @staticmethod
353
- def from_value(arg: int, /) -> PLATFORMS: ...
295
+ VA = 2
354
296
 
355
- def __eq__(self, arg, /) -> bool: ...
297
+ class FORMATS(enum.Enum):
298
+ UNKNOWN = 0
356
299
 
357
- def __ne__(self, arg, /) -> bool: ...
300
+ ELF = 1
358
301
 
359
- def __int__(self) -> int: ...
302
+ PE = 2
360
303
 
361
- UNKNOWN = 3
304
+ MACHO = 3
362
305
 
363
- LINUX = 1
306
+ OAT = 4
364
307
 
365
- ANDROID = 2
308
+ class it_sections:
309
+ def __getitem__(self, arg: int, /) -> Section: ...
366
310
 
367
- WINDOWS = 3
311
+ def __len__(self) -> int: ...
368
312
 
369
- IOS = 4
313
+ def __iter__(self) -> Binary.it_sections: ...
370
314
 
371
- OSX = 5
315
+ def __next__(self) -> Section: ...
372
316
 
373
- class Relocation(Object):
374
- address: int
317
+ class it_symbols:
318
+ def __getitem__(self, arg: int, /) -> Symbol: ...
375
319
 
376
- size: int
320
+ def __len__(self) -> int: ...
321
+
322
+ def __iter__(self) -> Binary.it_symbols: ...
323
+
324
+ def __next__(self) -> Symbol: ...
325
+
326
+ class it_relocations:
327
+ def __getitem__(self, arg: int, /) -> Relocation: ...
328
+
329
+ def __len__(self) -> int: ...
330
+
331
+ def __iter__(self) -> Binary.it_relocations: ...
332
+
333
+ def __next__(self) -> Relocation: ...
334
+
335
+ @property
336
+ def debug_info(self) -> DebugInfo: ...
337
+
338
+ @property
339
+ def format(self) -> Binary.FORMATS: ...
340
+
341
+ @property
342
+ def is_pie(self) -> bool: ...
343
+
344
+ @property
345
+ def has_nx(self) -> bool: ...
346
+
347
+ @property
348
+ def header(self) -> Header: ...
349
+
350
+ @property
351
+ def entrypoint(self) -> int: ...
352
+
353
+ def remove_section(self, name: str, clear: bool = False) -> None: ...
354
+
355
+ @property
356
+ def sections(self) -> Binary.it_sections: ...
357
+
358
+ @property
359
+ def relocations(self) -> Binary.it_relocations: ...
360
+
361
+ @property
362
+ def exported_functions(self) -> list[Function]: ...
363
+
364
+ @property
365
+ def imported_functions(self) -> list[Function]: ...
366
+
367
+ @property
368
+ def libraries(self) -> list[Union[str,bytes]]: ...
369
+
370
+ @property
371
+ def symbols(self) -> Binary.it_symbols: ...
372
+
373
+ def has_symbol(self, symbol_name: str) -> bool: ...
374
+
375
+ def get_symbol(self, symbol_name: str) -> Symbol: ...
376
+
377
+ def get_function_address(self, function_name: str) -> Union[int, lief_errors]: ...
378
+
379
+ @overload
380
+ def patch_address(self, address: int, patch_value: Sequence[int], va_type: Binary.VA_TYPES = Binary.VA_TYPES.AUTO) -> None: ...
381
+
382
+ @overload
383
+ def patch_address(self, address: int, patch_value: int, size: int = 8, va_type: Binary.VA_TYPES = Binary.VA_TYPES.AUTO) -> None: ...
384
+
385
+ def get_content_from_virtual_address(self, virtual_address: int, size: int, va_type: Binary.VA_TYPES = Binary.VA_TYPES.AUTO) -> memoryview: ...
386
+
387
+ def get_int_from_virtual_address(self, address: int, interger_size: int, type: Binary.VA_TYPES = Binary.VA_TYPES.AUTO) -> Optional[int]: ...
388
+
389
+ @property
390
+ def abstract(self) -> lief.Binary: ...
391
+
392
+ @property
393
+ def concrete(self) -> lief.ELF.Binary | lief.PE.Binary | lief.MachO.Binary: ...
394
+
395
+ @property
396
+ def ctor_functions(self) -> list[Function]: ...
397
+
398
+ def xref(self, virtual_address: int) -> list[int]: ...
399
+
400
+ def offset_to_virtual_address(self, offset: int, slide: int = 0) -> Union[int, lief_errors]: ...
401
+
402
+ @property
403
+ def imagebase(self) -> int: ...
404
+
405
+ @property
406
+ def original_size(self) -> int: ...
407
+
408
+ @overload
409
+ def disassemble(self, address: int) -> Iterator[Optional[assembly.Instruction]]: ...
410
+
411
+ @overload
412
+ def disassemble(self, address: int, size: int) -> Iterator[Optional[assembly.Instruction]]: ...
413
+
414
+ @overload
415
+ def disassemble(self, function_name: str) -> Iterator[Optional[assembly.Instruction]]: ...
416
+
417
+ def disassemble_from_bytes(self, buffer: bytes, address: int = 0) -> Iterator[Optional[assembly.Instruction]]: ...
418
+
419
+ def assemble(self, address: int, assembly: str, config: assembly.AssemblerConfig = ...) -> bytes: ...
420
+
421
+ @property
422
+ def page_size(self) -> int: ...
423
+
424
+ def load_debug_info(self, path: Union[str | os.PathLike]) -> DebugInfo: ...
377
425
 
378
426
  def __str__(self) -> str: ...
379
427
 
@@ -420,150 +468,133 @@ class Symbol(Object):
420
468
 
421
469
  def __str__(self) -> str: ...
422
470
 
423
- __commit__: str = ...
424
-
425
- __extended__: bool = ...
426
-
427
- __is_tagged__: bool = ...
428
-
429
- __tag__: str = ...
430
-
431
- def current_platform() -> PLATFORMS: ...
432
-
433
- class debug_location_t:
434
- line: int
435
-
436
- file: str
471
+ def parse(obj: Union[str | io.IOBase | os.PathLike | bytes | list[int]]) -> PE.Binary | OAT.Binary | ELF.Binary | MachO.Binary | COFF.Binary | None: ...
437
472
 
438
- def __repr__(self) -> str: ...
439
-
440
- def demangle(mangled: str) -> Optional[str]: ...
473
+ class Relocation(Object):
474
+ address: int
441
475
 
442
- def disable_leak_warning() -> None: ...
476
+ size: int
443
477
 
444
- @overload
445
- def hash(arg: Object, /) -> int: ... # type: ignore
478
+ def __str__(self) -> str: ...
446
479
 
447
- @overload
448
- def hash(arg: Sequence[int], /) -> int: ... # type: ignore
480
+ class Function(Symbol):
481
+ @overload
482
+ def __init__(self) -> None: ...
449
483
 
450
- @overload
451
- def hash(arg: bytes, /) -> int: ... # type: ignore
484
+ @overload
485
+ def __init__(self, arg: str, /) -> None: ...
452
486
 
453
- @overload
454
- def hash(arg: str, /) -> int: ... # type: ignore
487
+ @overload
488
+ def __init__(self, arg: int, /) -> None: ...
455
489
 
456
- @overload
457
- def is_art(path: str) -> bool: ...
490
+ @overload
491
+ def __init__(self, arg0: str, arg1: int, /) -> None: ...
458
492
 
459
- @overload
460
- def is_art(raw: Sequence[int]) -> bool: ...
493
+ class FLAGS(enum.Flag):
494
+ @staticmethod
495
+ def from_value(arg: int, /) -> Function.FLAGS: ...
461
496
 
462
- @overload
463
- def is_dex(path: str) -> bool: ...
497
+ def __eq__(self, arg, /) -> bool: ...
464
498
 
465
- @overload
466
- def is_dex(raw: Sequence[int]) -> bool: ...
499
+ def __ne__(self, arg, /) -> bool: ...
467
500
 
468
- @overload
469
- def is_elf(filename: str) -> bool: ...
501
+ def __int__(self) -> int: ...
470
502
 
471
- @overload
472
- def is_elf(raw: Sequence[int]) -> bool: ...
503
+ NONE = 0
473
504
 
474
- @overload
475
- def is_macho(filename: str) -> bool: ...
505
+ IMPORTED = 16
476
506
 
477
- @overload
478
- def is_macho(raw: Sequence[int]) -> bool: ...
507
+ EXPORTED = 8
479
508
 
480
- @overload
481
- def is_oat(binary: ELF.Binary) -> bool: ...
509
+ CONSTRUCTOR = 1
482
510
 
483
- @overload
484
- def is_oat(path: str) -> bool: ...
511
+ DESTRUCTOR = 2
485
512
 
486
- @overload
487
- def is_oat(raw: Sequence[int]) -> bool: ...
513
+ DEBUG_INFO = 4
488
514
 
489
- @overload
490
- def is_pe(file: str) -> bool: ...
515
+ def add(self, flag: Function.FLAGS) -> Function: ...
491
516
 
492
- @overload
493
- def is_pe(raw: Sequence[int]) -> bool: ...
517
+ def has(self, flag: Function.FLAGS) -> bool: ...
494
518
 
495
- @overload
496
- def is_vdex(path: str) -> bool: ...
519
+ @property
520
+ def flags(self) -> Function.FLAGS: ...
497
521
 
498
- @overload
499
- def is_vdex(raw: Sequence[int]) -> bool: ...
522
+ @property
523
+ def flags_list(self) -> list[Function.FLAGS]: ...
500
524
 
501
- class lief_errors(enum.Enum):
502
- read_error = 1
525
+ address: int
503
526
 
504
- not_found = 2
527
+ def __str__(self) -> str: ...
505
528
 
506
- not_implemented = 3
529
+ class DebugInfo:
530
+ class FORMAT(enum.Enum):
531
+ @staticmethod
532
+ def from_value(arg: int, /) -> DebugInfo.FORMAT: ...
507
533
 
508
- not_supported = 4
534
+ def __eq__(self, arg, /) -> bool: ...
509
535
 
510
- corrupted = 5
536
+ def __ne__(self, arg, /) -> bool: ...
511
537
 
512
- conversion_error = 6
538
+ def __int__(self) -> int: ...
513
539
 
514
- read_out_of_bound = 7
540
+ UNKNOWN = 0
515
541
 
516
- asn1_bad_tag = 8
542
+ DWARF = 1
517
543
 
518
- file_error = 9
544
+ PDB = 2
519
545
 
520
- file_format_error = 10
546
+ @property
547
+ def format(self) -> DebugInfo.FORMAT: ...
521
548
 
522
- parsing_error = 11
549
+ def find_function_address(self, name: str) -> int | None: ...
523
550
 
524
- build_error = 12
551
+ def is_pdb(file: Union[str | os.PathLike]) -> bool: ...
525
552
 
526
- data_too_large = 13
553
+ def is_shared_cache(file: Union[str | os.PathLike]) -> bool: ...
527
554
 
528
- require_extended_version = 14
555
+ @overload
556
+ def is_elf(filename: Union[str | os.PathLike]) -> bool: ...
529
557
 
530
- class ok_error_t:
531
- @property
532
- def is_error(self) -> bool: ...
558
+ @overload
559
+ def is_elf(raw: Sequence[int]) -> bool: ...
533
560
 
534
- @property
535
- def is_value(self) -> bool: ...
561
+ @overload
562
+ def is_pe(file: Union[str | os.PathLike]) -> bool: ...
536
563
 
537
- @property
538
- def error(self) -> lief_errors: ...
564
+ @overload
565
+ def is_pe(raw: Sequence[int]) -> bool: ...
539
566
 
540
- @property
541
- def value(self) -> ok_t: ...
567
+ @overload
568
+ def is_macho(filename: Union[str | os.PathLike]) -> bool: ...
542
569
 
543
- def __bool__(self) -> bool: ...
570
+ @overload
571
+ def is_macho(raw: Sequence[int]) -> bool: ...
544
572
 
545
- class ok_t:
546
- def __bool__(self) -> bool: ...
573
+ @overload
574
+ def is_oat(binary: ELF.Binary) -> bool: ...
547
575
 
548
576
  @overload
549
- def parse(raw: bytes) -> Optional[Binary]: ...
577
+ def is_oat(path: str) -> bool: ...
550
578
 
551
579
  @overload
552
- def parse(filepath: str) -> Optional[Binary]: ...
580
+ def is_oat(raw: Sequence[int]) -> bool: ...
553
581
 
554
582
  @overload
555
- def parse(obj: Union[io.IOBase | os.PathLike]) -> Optional[Binary]: ...
583
+ def is_dex(path: str) -> bool: ...
556
584
 
557
- class range_t:
558
- low: int
585
+ @overload
586
+ def is_dex(raw: Sequence[int]) -> bool: ...
559
587
 
560
- high: int
588
+ @overload
589
+ def is_vdex(path: str) -> bool: ...
561
590
 
562
- @property
563
- def size(self) -> int: ...
591
+ @overload
592
+ def is_vdex(raw: Sequence[int]) -> bool: ...
564
593
 
565
- def __repr__(self) -> str: ...
594
+ @overload
595
+ def is_art(path: str) -> bool: ...
566
596
 
567
- def __str__(self) -> str: ...
597
+ @overload
598
+ def is_art(raw: Sequence[int]) -> bool: ...
568
599
 
569
- def to_json(arg: Object, /) -> str: ...
600
+ def is_coff(file: Union[str | os.PathLike]) -> bool: ...