(
fp: IO[bytes], source_stat: os.stat_result, co: types.CodeType
)
| 298 | |
| 299 | |
| 300 | def _write_pyc_fp( |
| 301 | fp: IO[bytes], source_stat: os.stat_result, co: types.CodeType |
| 302 | ) -> None: |
| 303 | class="cm"># Technically, we don't have to have the same pyc format as |
| 304 | class="cm"># (C)Python, since these class="st">"pycs" should never be seen by builtin |
| 305 | class="cm"># import. However, there's little reason to deviate. |
| 306 | fp.write(importlib.util.MAGIC_NUMBER) |
| 307 | class="cm"># https://www.python.org/dev/peps/pep-0552/ |
| 308 | flags = bclass="st">"\x00\x00\x00\x00" |
| 309 | fp.write(flags) |
| 310 | class="cm"># as of now, bytecode header expects 32-bit numbers for size and mtime (#4903) |
| 311 | mtime = int(source_stat.st_mtime) & 0xFFFFFFFF |
| 312 | size = source_stat.st_size & 0xFFFFFFFF |
| 313 | class="cm"># class="st">"<LL" stands for 2 unsigned longs, little-endian. |
| 314 | fp.write(struct.pack(class="st">"<LL", mtime, size)) |
| 315 | fp.write(marshal.dumps(co)) |
| 316 | |
| 317 | |
| 318 | def _write_pyc( |
no test coverage detected