Skip to content

Commit 36550e3

Browse files
AmintorDuskoringo-but-quantummlxdvincentmr
authored andcommitted
Update Lightning packaging to follow the PEP 517/518/621/660 standards (#832)
**Context:** This PR updates the Lightning Python packaging to the latest standard. This allows us to eliminate pip~=22.0 from requirements*.txt, comply with up-to-date build practices, and fix the inability to build Lightning in place on newer Python environments. **Description of the Change:** Most of the building configuration was moved to the ``pyproject.toml`` file. We kept the ``setup.py`` file working with setuptools in part of the configuration pre-processing. A script with some pre-pre-processing was added to configure the ``pyproject.toml`` file for each backend. **Benefits:** Follow the new standard. Allows the use of more up-to-date pip versions. There will be no impact on the final user, as the installation of the wheels is unaffected by the change in packaging. **Possible Drawbacks:** When building and installing Lightning backends from scratch, we need to run the configuration script. If not the installation will default to ``lightning.qubit``, or the last configuration. **Related GitHub Issues:** [sc-65227] --------- Co-authored-by: ringo-but-quantum <[email protected]> Co-authored-by: Lee James O'Riordan <[email protected]> Co-authored-by: Vincent Michaud-Rioux <[email protected]>
1 parent d9fb3a3 commit 36550e3

35 files changed

+401
-274
lines changed

.github/CHANGELOG.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[(#827)](https://github.com/PennyLaneAI/pennylane-lightning/pull/827)
77

88
* Add `var` support to `lightning.tensor`. Note that `var` support is added via `obs**2` and this implementation scales `O(num_obs**2)`.
9-
[(#804)](https://github.com/PennyLaneAI/pennylane-lightning/pull/804)
9+
[(#804)](https://github.com/PennyLaneAI/pennylane-lightning/pull/804)
1010

1111
### Breaking changes
1212

@@ -22,6 +22,9 @@
2222
* Do not run GPU tests and Docker workflows on release.
2323
[(#788)](https://github.com/PennyLaneAI/pennylane-lightning/pull/788)
2424

25+
* Update python packaging to follow PEP 517/518/621/660 standards.
26+
[(#832)](https://github.com/PennyLaneAI/pennylane-lightning/pull/832)
27+
2528
### Improvements
2629

2730
* `ENABLE_LAPACK` is off by default for all Lightning backends.

.github/workflows/format.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
uses: actions/checkout@v4
3939

4040
- name: Install dependencies
41-
run: sudo apt update && sudo apt -y install python3 python3-pip && python -m pip install pip~=22.0 && python3 -m pip install -r requirements-dev.txt
41+
run: sudo apt update && sudo apt -y install python3 python3-pip python-is-python3 && python -m pip install -r requirements-dev.txt
4242

4343
- name: Run formatter
4444
run: PATH=$PATH:/home/ubuntu/.local/bin/:$(dirname $(which python3))/ ./bin/format --check ./pennylane_lightning/core/src

.github/workflows/tests_lgpu_python.yml

+5-6
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ jobs:
6464
strategy:
6565
matrix:
6666
pl_backend: ["lightning_gpu"]
67-
default_backend: ["lightning_qubit"]
6867
cuda_version: ["12"]
6968

7069
name: Python Tests (${{ matrix.pl_backend }}, cuda-${{ matrix.cuda_version }})
@@ -129,8 +128,7 @@ jobs:
129128
echo "venv_name=${{ env.VENV_NAME }}" >> $GITHUB_OUTPUT
130129
echo "Python_ROOT_DIR=${{ env.VENV_NAME }}" >> $GITHUB_ENV
131130
echo "Python3_ROOT_DIR=${{ env.VENV_NAME }}" >> $GITHUB_ENV
132-
133-
131+
134132
# Adding venv site-packages to output for subsequent step to referecen if needed
135133
echo "site_packages_dir=$(${{ env.VENV_NAME }}/bin/python -c 'import sysconfig; print(sysconfig.get_path("platlib"))')" >> $GITHUB_OUTPUT
136134
@@ -179,12 +177,13 @@ jobs:
179177
run: |
180178
cd main
181179
rm -rf build
182-
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.default_backend }} -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
180+
PL_BACKEND=lightning_qubit python scripts/configure_pyproject_toml.py
181+
CMAKE_ARGS="-DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
183182
python -m pip install . -vv
184-
rm -rf build
185183
186184
rm -rf build
187-
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.pl_backend }} -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) -DPython_EXECUTABLE=${{ steps.python_path.outputs.python }}" \
185+
PL_BACKEND=${{ matrix.pl_backend }} python scripts/configure_pyproject_toml.py
186+
CMAKE_ARGS="-DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION) -DPython_EXECUTABLE=${{ steps.python_path.outputs.python }}" \
188187
python -m pip install . -vv
189188
190189
- name: Run PennyLane-Lightning-GPU unit tests

.github/workflows/tests_lgpumpi_python.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ jobs:
110110
python -m pip install -r requirements-dev.txt
111111
112112
python -m pip install custatevec-cu${{ matrix.cuda_version_maj }} mpi4py openfermionpyscf
113-
PL_BACKEND=lightning_qubit python -m pip install . -vv
113+
PL_BACKEND=lightning_qubit python scripts/configure_pyproject_toml.py
114+
python -m pip install . -vv
114115
115116
- name: Checkout PennyLane for release build
116117
if: inputs.pennylane-version == 'release'
@@ -132,8 +133,9 @@ jobs:
132133
CUQUANTUM_SDK: $(python -c "import site; print( f'{site.getsitepackages()[0]}/cuquantum')")
133134
run: |
134135
source /etc/profile.d/modules.sh && module use /opt/modules/ && module load ${{ matrix.mpilib }}/cuda-${{ matrix.cuda_version_maj }}.${{ matrix.cuda_version_min }}
136+
PL_BACKEND=lightning_gpu python scripts/configure_pyproject_toml.py
135137
CMAKE_ARGS="-DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DENABLE_MPI=ON -DCMAKE_CUDA_COMPILER=$(which nvcc) -DCMAKE_CUDA_ARCHITECTURES=${{ env.CI_CUDA_ARCH }} -DPython_EXECUTABLE=${{ steps.python_path.outputs.python }}" \
136-
PL_BACKEND=lightning_gpu python -m pip install . --verbose
138+
python -m pip install . -vv
137139
138140
# There are issues running py-cov with MPI. A solution is to use coverage as reported
139141
# [here](https://github.com/pytest-dev/pytest-cov/issues/237#issuecomment-544824228)

.github/workflows/tests_lkcpu_python.yml

+5-3
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,14 @@ jobs:
117117
cd main
118118
python -m pip install -r requirements-dev.txt
119119
120-
- name: Create device wheel
120+
- name: Configure and build device wheel
121121
env:
122122
PL_BACKEND: ${{ matrix.pl_backend }}
123123
run: |
124124
cd main
125-
python setup.py build_ext -i --define="PL_BACKEND=${{ matrix.pl_backend }};CMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos;ENABLE_PYTHON=ON;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
126-
python setup.py bdist_wheel
125+
python scripts/configure_pyproject_toml.py
126+
CMAKE_ARGS="-DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
127+
python -m build
127128
cd dist
128129
WHEEL_NAME=$(ls *.whl)
129130
cp $WHEEL_NAME ${{ github.workspace }}/wheel_${{ matrix.pl_backend }}-${{ matrix.exec_model }}.whl
@@ -211,6 +212,7 @@ jobs:
211212
python -m pip install -r requirements-dev.txt
212213
python -m pip install openfermionpyscf
213214
if [ '${{ inputs.lightning-version }}' != 'stable' ]; then
215+
python scripts/configure_pyproject_toml.py
214216
SKIP_COMPILATION=True python -m pip install . -vv
215217
fi
216218
python -m pip install ${{ github.workspace }}/$WHEEL_NAME --no-deps

.github/workflows/tests_lkcuda_python.yml

+12-5
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,12 @@ jobs:
241241
run: |
242242
ls -l ${{ github.workspace }}/Kokkos
243243
cd main
244-
SKIP_COMPILATION=True PL_BACKEND="lightning_qubit" python -m pip install . -vv
245-
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.pl_backend }} -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
244+
245+
PL_BACKEND=lightning_qubit python scripts/configure_pyproject_toml.py
246+
SKIP_COMPILATION=True python -m pip install . -vv
247+
248+
PL_BACKEND=${{ matrix.pl_backend }} python scripts/configure_pyproject_toml.py
249+
CMAKE_ARGS="-DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
246250
python -m pip install . -vv
247251
248252
- name: Run PennyLane-Lightning unit tests
@@ -262,10 +266,13 @@ jobs:
262266
if: ${{ matrix.pl_backend == 'all' }}
263267
run: |
264268
cd main
265-
CMAKE_ARGS="-DPL_BACKEND="lightning_qubit" -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
269+
270+
PL_BACKEND=lightning_qubit python scripts/configure_pyproject_toml.py
271+
CMAKE_ARGS="-DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
266272
python -m pip install . -vv
267-
rm -rf build
268-
CMAKE_ARGS="-DPL_BACKEND="lightning_kokkos" -DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
273+
274+
PL_BACKEND="lightning_kokkos" python scripts/configure_pyproject_toml.py
275+
CMAKE_ARGS="-DCMAKE_PREFIX_PATH=${{ github.workspace }}/Kokkos -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
269276
python -m pip install . -vv
270277
271278
- name: Run PennyLane-Lightning unit tests for lightning.qubit with all devices installed

.github/workflows/tests_lmps_tncuda_python.yml

+15-23
Original file line numberDiff line numberDiff line change
@@ -60,20 +60,19 @@ jobs:
6060
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> $GITHUB_ENV
6161
nvcc --version
6262
nvidia-smi
63-
63+
6464
pythontestswithMPSTNCuda:
6565
if: ${{ !contains(fromJSON('["schedule", "workflow_dispatch"]'), github.event_name) }}
6666
needs: [builddeps]
6767
strategy:
6868
matrix:
6969
os: [ubuntu-22.04]
7070
pl_backend: ["lightning_tensor"]
71-
default_backend: ["lightning_qubit"]
7271
pl_tensor_method: ["mps"]
7372
pl_tensor_backend: ["cutensornet"]
7473
cuda_version: ["12"]
7574

76-
name: Python Tests (${{ matrix.pl_backend }}, method-${{ matrix.pl_tensor_method }}, backend-${{ matrix.pl_tensor_backend }}, cuda-${{ matrix.cuda_version }})
75+
name: Python Tests (${{ matrix.pl_backend }}, method-${{ matrix.pl_tensor_method }}, backend-${{ matrix.pl_tensor_backend }}, cuda-${{ matrix.cuda_version }})
7776
runs-on:
7877
- ${{ matrix.os }}
7978
- self-hosted
@@ -92,14 +91,12 @@ jobs:
9291
9392
- name: Checkout PennyLane-Lightning-Tensor-MPS-TNCuda
9493
uses: actions/checkout@v4
95-
with:
96-
path: main
9794

9895
- uses: actions/setup-python@v5
9996
name: Install Python
10097
with:
10198
python-version: '3.9'
102-
99+
103100
# Since the self-hosted runner can be re-used. It is best to set up all package
104101
# installations in a virtual environment that gets cleaned at the end of each workflow run
105102
- name: Setup Python virtual environment
@@ -116,13 +113,13 @@ jobs:
116113
117114
# Add the venv to PATH for subsequent steps
118115
echo ${{ env.VENV_NAME }}/bin >> $GITHUB_PATH
119-
116+
120117
# Adding venv name as an output for subsequent steps to reference if needed
121118
source ${{ env.VENV_NAME }}/bin/activate
122119
echo "venv_name=${{ env.VENV_NAME }}" >> $GITHUB_OUTPUT
123120
echo "Python_ROOT_DIR=${{ env.VENV_NAME }}" >> $GITHUB_ENV
124121
echo "Python3_ROOT_DIR=${{ env.VENV_NAME }}" >> $GITHUB_ENV
125-
122+
126123
# Adding venv site-packages to output for subsequent step to referecen if needed
127124
echo "site_packages_dir=$(${{ env.VENV_NAME }}/bin/python -c 'import sysconfig; print(sysconfig.get_path("platlib"))')" >> $GITHUB_OUTPUT
128125
@@ -139,7 +136,6 @@ jobs:
139136
140137
- name: Install required packages
141138
run: |
142-
cd main
143139
python -m pip install -r requirements-dev.txt
144140
python -m pip install ninja cmake scipy custatevec-cu${{ matrix.cuda_version }} cutensornet-cu${{ matrix.cuda_version }} openfermionpyscf
145141
@@ -157,29 +153,25 @@ jobs:
157153
git fetch --all
158154
git checkout $(git branch -a --list "origin/v0.*rc*" | sort | tail -1)
159155
python -m pip uninstall -y pennylane && python -m pip install . -vv --no-deps
160-
156+
161157
- name: Install Stable PennyLane
162158
if: inputs.pennylane-version == 'stable'
163159
run: |
164-
cd main
165160
python -m pip uninstall -y pennylane && python -m pip install -U pennylane
166-
167-
- name: Build and install package
161+
162+
- name: Configure and install required backends
168163
run: |
169-
cd main
170-
rm -rf build
171-
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.default_backend }} -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
172-
python -m pip install . -vv
173164
rm -rf build
174-
165+
PL_BACKEND=lightning_qubit python scripts/configure_pyproject_toml.py
166+
CMAKE_ARGS="-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" python -m pip install . -vv
167+
175168
rm -rf build
176-
CMAKE_ARGS="-DPL_BACKEND=${{ matrix.pl_backend }} -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
177-
python -m pip install . -vv
178-
169+
PL_BACKEND="${{ matrix.pl_backend }}" python scripts/configure_pyproject_toml.py
170+
CMAKE_ARGS="-DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" python -m pip install . -vv
171+
179172
- name: Run PennyLane-Lightning-Tensor unit tests
180173
if: ${{ matrix.pl_backend != 'all'}}
181174
run: |
182-
cd main/
183175
DEVICENAME=`echo ${{ matrix.pl_backend }} | sed "s/_/./g"`
184176
PL_DEVICE=${DEVICENAME} python -m pytest tests $COVERAGE_FLAGS
185177
mv coverage.xml coverage-${{ github.job }}-${{ matrix.pl_backend }}.xml
@@ -188,7 +180,7 @@ jobs:
188180
uses: actions/upload-artifact@v3
189181
with:
190182
name: ubuntu-codecov-results-python
191-
path: ./main/coverage-${{ github.job }}-${{ matrix.pl_backend }}.xml
183+
path: coverage-${{ github.job }}-${{ matrix.pl_backend }}.xml
192184
if-no-files-found: error
193185

194186

.github/workflows/tests_lqcpu_python.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,9 @@ jobs:
8686
id: create_lq_wheel
8787
run: |
8888
cd main
89-
python setup.py build_ext -i --define="PL_BACKEND=${{ matrix.pl_backend }};ENABLE_BLAS=${{ matrix.blas }};LQ_ENABLE_KERNEL_OMP=ON;ENABLE_PYTHON=ON;CMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)"
90-
PL_BACKEND=${{ matrix.pl_backend }} python setup.py bdist_wheel
89+
PL_BACKEND=${{ matrix.pl_backend }} python scripts/configure_pyproject_toml.py
90+
CMAKE_ARGS="-DENABLE_BLAS=${{ matrix.blas }} -DLQ_ENABLE_KERNEL_OMP=ON -DENABLE_PYTHON=ON -DCMAKE_CXX_COMPILER=$(which g++-$GCC_VERSION)" \
91+
python -m build
9192
cd dist
9293
WHEEL_NAME=$(ls *.whl)
9394
cp $WHEEL_NAME ${{ github.workspace }}/wheel_${{ matrix.pl_backend }}-${{ matrix.blas }}.whl

.github/workflows/tests_windows_cpp.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ jobs:
114114
python-version: '3.9'
115115

116116
- name: Checkout PennyLane-Lightning
117-
uses: actions/checkout@v3
117+
uses: actions/checkout@v4
118118

119119
- name: Install dependencies
120120
run: |

.github/workflows/tests_without_binary.yml

+10-19
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,16 @@ jobs:
4646
uses: actions/checkout@v4
4747
with:
4848
fetch-tags: true
49-
path: main
5049

5150
- name: Switch to release build of Lightning
5251
if: inputs.lightning-version == 'release'
5352
run: |
54-
cd main
5553
git fetch --all
5654
git checkout $(git branch -a --list "origin/v0.*rc*" | sort | tail -1)
5755
5856
- name: Switch to stable build of Lightning
5957
if: inputs.lightning-version == 'stable'
6058
run: |
61-
cd main
6259
git fetch --tags --force
6360
git checkout latest_release
6461
git log -1 --format='%H'
@@ -72,7 +69,6 @@ jobs:
7269
- name: Get required Python packages
7370
run: |
7471
rm -fr $(python -m pip cache dir)/selfcheck/
75-
cd main
7672
python -m pip install -r requirements-dev.txt
7773
7874
- name: Checkout PennyLane for release build
@@ -93,39 +89,34 @@ jobs:
9389
- name: Install Stable PennyLane
9490
if: inputs.pennylane-version == 'stable'
9591
run: |
96-
cd main
9792
python -m pip uninstall -y pennylane && python -m pip install -U pennylane
9893
99-
- name: Install the pennylane_lightning package
100-
if: ${{ contains(fromJson('["lightning_kokkos", "lightning_gpu", "lightning_tensor"]'), matrix.pl_backend) }}
94+
- name: Install the pennylane_lightning core package (lightning_qubit)
95+
env:
96+
SKIP_COMPILATION: True
97+
PL_BACKEND: "lightning_qubit"
10198
run: |
102-
cd main
103-
SKIP_COMPILATION=True PL_BACKEND="lightning_qubit" python -m pip install . -vv
99+
python scripts/configure_pyproject_toml.py
100+
python -m pip install . -vv
104101
105-
- name: Install backend device
106-
# FIXME: Remove this condition with v0.37.0 release
107-
if: matrix.pl_backend != 'lightning_tensor' || inputs.lightning-version != 'stable'
102+
- name: Install extra backend device
103+
if: matrix.pl_backend != 'lightning_qubit'
108104
env:
109105
SKIP_COMPILATION: True
110106
PL_BACKEND: ${{ matrix.pl_backend }}
111107
run: |
112-
cd main
108+
python scripts/configure_pyproject_toml.py
113109
python -m pip install . -vv
114110
115111
- name: Run PennyLane-Lightning unit tests for all backends
116-
# FIXME: Remove this condition with v0.37.0 release
117-
if: matrix.pl_backend != 'lightning_tensor' || inputs.lightning-version != 'stable'
118112
run: |
119-
cd main/
120113
DEVICENAME=`echo ${{ matrix.pl_backend }} | sed "s/_/./g"`
121114
PL_DEVICE=${DEVICENAME} python -m pytest tests/ $COVERAGE_FLAGS
122115
123116
- name: Upload coverage to Codecov
124-
# FIXME: Remove this condition with v0.37.0 release
125-
if: matrix.pl_backend != 'lightning_tensor' || inputs.lightning-version != 'stable'
126117
uses: codecov/codecov-action@v4
127118
with:
128-
files: ./main/coverage.xml
119+
files: coverage.xml
129120
fail_ci_if_error: true
130121
verbose: true
131122
token: ${{ secrets.CODECOV_TOKEN }}

.github/workflows/wheel_linux_aarch64.yml

+11-4
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,11 @@ jobs:
119119
mkdir Kokkos
120120
cp -rf ${{ github.workspace }}/Kokkos_install/${{ matrix.exec_model }}/* Kokkos/
121121
122-
- name: Install cibuildwheel
123-
run: python -m pip install cibuildwheel~=2.16.0
122+
- name: Install dependencies
123+
run: python -m pip install cibuildwheel~=2.16.0 toml
124+
125+
- name: Configure pyproject.toml file
126+
run: PL_BACKEND="${{ matrix.pl_backend }}" python scripts/configure_pyproject_toml.py
124127

125128
- uses: docker/setup-qemu-action@v2
126129
name: Set up QEMU
@@ -138,15 +141,19 @@ jobs:
138141
cat /etc/yum.conf | sed "s/\[main\]/\[main\]\ntimeout=5/g" > /etc/yum.conf
139142
python -m pip install ninja cmake~=3.24.0
140143
141-
CIBW_ENVIRONMENT: PL_BACKEND="${{ matrix.pl_backend }}" CMAKE_ARGS="-DENABLE_LAPACK=OFF"
144+
CIBW_ENVIRONMENT: CMAKE_ARGS="-DENABLE_LAPACK=OFF"
142145

143146
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28
144147

145148
CIBW_BUILD_VERBOSITY: 3
146149

147150
CIBW_BEFORE_TEST: |
148151
python -m pip install -r requirements-tests.txt
149-
if ${{ matrix.pl_backend == 'lightning_kokkos'}}; then SKIP_COMPILATION=True PL_BACKEND="lightning_qubit" python -m pip install . -vv; fi
152+
if ${{ matrix.pl_backend == 'lightning_kokkos'}}
153+
then
154+
PL_BACKEND="lightning_qubit" python scripts/configure_pyproject_toml.py
155+
SKIP_COMPILATION=True python -m pip install . -vv
156+
fi
150157
151158
CIBW_TEST_COMMAND: |
152159
DEVICENAME=`echo ${{ matrix.pl_backend }} | sed "s/_/./g"`

0 commit comments

Comments
 (0)