1"""This is a very stupid backend for testing purposes. 2 3Don't use this for any real code. 4""" 5 6from glob import glob 7from os.path import join as pjoin 8import shutil 9import tarfile 10from zipfile import ZipFile 11 12 13def get_requires_for_build_wheel(config_settings): 14 return ['wheelwright'] 15 16 17def get_requires_for_build_editable(config_settings): 18 return ['wheelwright', 'editables'] 19 20 21def prepare_metadata_for_build_wheel(metadata_directory, config_settings): 22 for distinfo in glob('*.dist-info'): 23 shutil.copytree(distinfo, pjoin(metadata_directory, distinfo)) 24 25 26prepare_metadata_for_build_editable = prepare_metadata_for_build_wheel 27 28 29def prepare_build_wheel_files(build_directory, config_settings): 30 shutil.copy('pyproject.toml', build_directory) 31 for pyfile in glob('*.py'): 32 shutil.copy(pyfile, build_directory) 33 for distinfo in glob('*.dist-info'): 34 shutil.copytree(distinfo, pjoin(build_directory, distinfo)) 35 36 37def build_wheel(wheel_directory, config_settings, metadata_directory=None): 38 whl_file = 'pkg1-0.5-py2.py3-none-any.whl' 39 with ZipFile(pjoin(wheel_directory, whl_file), 'w') as zf: 40 for pyfile in glob('*.py'): 41 zf.write(pyfile) 42 for metadata in glob('*.dist-info/*'): 43 zf.write(metadata) 44 return whl_file 45 46 47build_editable = build_wheel 48 49 50def get_requires_for_build_sdist(config_settings): 51 return ['frog'] 52 53 54class UnsupportedOperation(Exception): 55 pass 56 57 58def build_sdist(sdist_directory, config_settings): 59 if config_settings.get('test_unsupported', False): 60 raise UnsupportedOperation 61 62 target = 'pkg1-0.5.tar.gz' 63 with tarfile.open(pjoin(sdist_directory, target), 'w:gz', 64 format=tarfile.PAX_FORMAT) as tf: 65 def _add(relpath): 66 tf.add(relpath, arcname='pkg1-0.5/' + relpath) 67 68 _add('pyproject.toml') 69 for pyfile in glob('*.py'): 70 _add(pyfile) 71 72 return target 73