| 689 | # ========================== Arcadia specific ================================= |
| 690 | |
| 691 | class OpenFile(object): |
| 692 | |
| 693 | def __init__(self, filename, mode='r', is_standalone=False): |
| 694 | assert 'r' in mode, ('Read-only', mode) |
| 695 | self.filename = filename |
| 696 | self.mode = mode |
| 697 | self.is_standalone = is_standalone |
| 698 | self.file = None |
| 699 | self.build_root = os.environ.get('PYTHON_COVERAGE_CYTHON_BUILD_ROOT') |
| 700 | |
| 701 | def __enter__(self): |
| 702 | # See redefined _find_c_source() description for more info |
| 703 | if self.build_root: |
| 704 | self.file = open(os.path.join(self.build_root, self.filename), self.mode) |
| 705 | return self.file |
| 706 | elif self.is_standalone: |
| 707 | import library.python.resource |
| 708 | from six import StringIO |
| 709 | |
| 710 | content = library.python.resource.resfs_read(self.filename, builtin=True) |
| 711 | assert content, (self.filename, os.environ.items()) |
| 712 | return StringIO(content.decode()) |
| 713 | else: |
| 714 | self.file = open(self.filename, self.mode) |
| 715 | return self.file |
| 716 | |
| 717 | def __exit__(self, exc_type, exc_val, exc_tb): |
| 718 | if self.file: |
| 719 | self.file.close() |
| 720 | |
| 721 | |
| 722 | def generated_file_exists(filename, is_standalone=False): |
no outgoing calls
no test coverage detected