diff --git a/.github/workflows/create.yml b/.github/workflows/create.yml index 11a5f68..6870cee 100644 --- a/.github/workflows/create.yml +++ b/.github/workflows/create.yml @@ -25,7 +25,7 @@ jobs: bare_versions="" for version in $(git tag); do [[ $version != v* ]] && echo "Skipping non-version tag: $version" && continue - [[ $version == v0.* ]] && echo "Skipping: $version" && continue + [[ $version =~ v0.(1|2|3).0 ]] && echo "Skipping $version (too old, no export code)" && continue echo "Adding: $version" bare_versions="$bare_versions ${version#v}" done @@ -42,10 +42,10 @@ jobs: echo "Checking: $version" pkl_file="data/exported_from_tenpy_$version.pkl" hdf5_file="data/exported_from_tenpy_$version.hdf5" - if [ ! -f $pkl_file ]; then + if [ ! -f $pkl_file ] && [ -f tenpy_repo/tests/export_import_test/test_pickle.py ]; then echo " $pkl_file missing" missing_versions="$missing_versions $version" - elif [ ! -f $hdf5_file ]; then + elif [ ! -f $hdf5_file ] && [ -f tenpy_repo/tests/export_import_test/test_hdf5.py ]; then echo " $hdf5_file missing" missing_versions="$missing_versions $version" fi @@ -60,7 +60,11 @@ jobs: needs: [detect] runs-on: ubuntu-latest if: ${{ needs.detect.outputs.matrix != '[""]' }} + defaults: + run: + shell: bash -el {0} strategy: + fail-fast: false matrix: version: ${{ fromJson(needs.detect.outputs.matrix) }} steps: @@ -75,20 +79,62 @@ jobs: repository: tenpy/tenpy path: tenpy_repo - - name: Set up Python 3.14 - uses: actions/setup-python@v6 + - name: Remove unused pylab imports + if: matrix.version == '0.4.0' + # v0.4.0 imports pylab but does not use it. + # rather than figuring out how to install it, we just remove the unused import statement + # also remove bugged lines from the __main__ block of test_pickle.py + run: | + sed -i '/import pylab as pl/d' tenpy_repo/tenpy/algorithms/tdvp.py + sed -i '/import pylab as pl/d' tenpy_repo/tests/tdvp_numpy.py + + - name: Fix export_import script + if: matrix.version == '0.4.0' || matrix.version == '0.4.1' || matrix.version == '0.5.0' + # there are two lines in the __main__ block that seem outdated and need to be removed + run: | + sed -i '/for f, fn in test_data_import():/d' tenpy_repo/tests/export_import_test/test_pickle.py + sed -i '/f(fn)/d' tenpy_repo/tests/export_import_test/test_pickle.py + + - name: Set up conda + uses: conda-incubator/setup-miniconda@v3 with: - python-version: 3.14 + auto-update-conda: true + channels: conda-forge,defaults + channel-priority: true - name: Install dependencies + # note: always pin specific versions, to future proof the environment! run: | - pip install numpy scipy pytest h5py + if [[ ${{ matrix.version }} =~ 0.(4|5|6|7).[0-9] ]]; then + conda install -y python==3.9 numpy==1.19.2 scipy==1.5.2 + elif [[ ${{ matrix.version }} =~ 0.(8|9|10|11|99).[0-9] ]] || [[ ${{ matrix.version }} =~ 1.0.[0-2] ]]; then + conda install -y python==3.10 numpy==1.26.4 scipy==1.10.1 + else + conda install -y python==3.13 numpy==2.3.2 scipy==1.16.1 + fi + conda install pytest h5py - name: Generate datasets run: | export PYTHONPATH="$PYTHONPATH:${{ github.workspace }}/tenpy_repo" - python tenpy_repo/tests/export_import_test/test_hdf5.py - python tenpy_repo/tests/export_import_test/test_pickle.py + if [ -f tenpy_repo/tests/export_import_test/test_hdf5.py ]; then + python tenpy_repo/tests/export_import_test/test_hdf5.py + fi + if [ -f tenpy_repo/tests/export_import_test/test_pickle.py ]; then + python tenpy_repo/tests/export_import_test/test_pickle.py + fi + + if [ ! -d tenpy_repo/tests/export_import_test/data ]; then + echo "No data was generated." >> $GITHUB_STEP_SUMMARY + exit 1 + fi + + - name: Rename datasets + if: matrix.version == '0.4.0' || matrix.version == '0.4.1' || matrix.version == '0.5.0' + # the naming convention for the files changed in 0.6.0 + run: | + mv tenpy_repo/tests/export_import_test/data/pickled_from_tenpy_v${{ matrix.version }}.pkl \ + tenpy_repo/tests/export_import_test/data/exported_from_tenpy_v${{ matrix.version }}.pkl - name: Move datasets run: |