Skip to content
Snippets Groups Projects
buildwheels.py 1.49 KiB
Newer Older
  • Learn to ignore specific revisions
  • """
    For twine auth, want a pypirc file with contents:
    
    [pypi]
    username = usernameusernameusername
    password = XXXXXXXXXX
    """
    
    
    Ian Bell's avatar
    Ian Bell committed
    import sys
    import os
    import subprocess
    import glob
    
    # Check presence of twine variables or config file
    userc = False
    if os.path.exists('pypirc'):
        userc = True
    else:
        for k in ['TWINE_USERNAME','TWINE_PASSWORD']:
            if k not in os.environ:
                raise KeyError(f'You must set the twine environment variable {k}')
    
    
    Ian Bell's avatar
    Ian Bell committed
        """ Build the wheel """
    
        for pyver in ['3.7','3.8','3.9']:
            abbrv = pyver.replace('.', '')
    
    Ian Bell's avatar
    Ian Bell committed
            condaenv = f'conda-{pyver}'
            subprocess.check_call(f'conda create -y -n {condaenv} python={pyver}', shell=True)
            subprocess.check_call(f'conda activate {condaenv} && python -m pip install -U pip wheel', shell=True)
            try:
    
                subprocess.check_call(f'conda activate {condaenv} && python -m pip -vvv wheel .', shell=True)
            except BaseException as be:
                print(be)
    
    Ian Bell's avatar
    Ian Bell committed
            finally:
                subprocess.check_call(f'conda env remove -y -n {condaenv}',shell=True)
    
    
    def upload():
        # Upload wheels
        if userc:
            twine_call = f'twine upload --config-file pypirc *.whl'
        else:
            twine_call = f'twine upload *.whl'
        subprocess.check_call(twine_call, shell=True)
    
    steps = ['build','upload']
    if not any([k in sys.argv for k in steps]):
    
        raise ValueError("need to pass at least one step to do: "+str(steps))
    
    if 'build' in sys.argv:
        build()
    if 'upload' in sys.argv:
        upload()