4747 PLATFORM_TAG_MASK=" win*"
4848 fi
4949fi
50- BUILD_TAG_DEFAULT=" $PYTHON_TAG$PY_ABI_THREAD -$PLATFORM_TAG "
50+ ZIP_SAFE=$( grep -m1 " ^zip-safe = " pyproject.toml | awk ' {print $3}' )
51+ if [ " $ZIP_SAFE " == " true" ]; then
52+ BUILD_TAG_DEFAULT=py3-none-any
53+ else
54+ BUILD_TAG_DEFAULT=" $PYTHON_TAG$PY_ABI_THREAD -$PLATFORM_TAG "
55+ fi
5156
5257# Usage
5358if [ -n " $1 " ] && [ " $1 " == " --help" ]; then
6974fi
7075while [ -n " $1 " ]; do
7176 if [ " $1 " == " --all" ]; then
72- BUILD_TAG=" cp3*-$PLATFORM_TAG "
77+ if [ " $ZIP_SAFE " == " true" ]; then
78+ BUILD_TAG=" $BUILD_TAG_DEFAULT "
79+ else
80+ BUILD_TAG=" cp3*-$PLATFORM_TAG "
81+ fi
7382 elif [ " $1 " == " --install" ]; then
7483 INSTALL=" 1"
7584 else
@@ -84,12 +93,6 @@ if [ "$INSTALL_TOOLS" == "1" ]; then
8493fi
8594
8695# Use of dev tools
87- _get_version () {
88- local value
89- value=$( uv version --short)
90- $PYTHON -c " print('$value '.replace('\r','').replace('\n',''), end='')"
91- }
92-
9396_get_dirty () {
9497 local value
9598 if which git & > /dev/null; then
@@ -112,6 +115,8 @@ _build_wheel () {
112115 local args=$*
113116 if [ " $IS_CONDA " == " 1" ] || [ " $IS_MINGW " == " 1" ]; then
114117 $PYTHON -m build -n -x --wheel -o wheelhouse
118+ elif [ " $ZIP_SAFE " == " true" ]; then
119+ uv build -p " $PY_VERSION$PY_ABI_THREAD " --wheel -o wheelhouse
115120 elif [[ $PY_PLATFORM == win* ]] && [[ $args == * --only* ]]; then
116121 uv build -p " $PY_VERSION$PY_ABI_THREAD " --wheel -o wheelhouse
117122 elif [[ $PY_PLATFORM == macos* ]] && [[ $args == * --only* ]]; then
@@ -129,25 +134,22 @@ _build_wheel () {
129134
130135echo " ::group::Project version"
131136NAME=$( grep -m1 " ^name = " pyproject.toml | awk -F\" ' {print $2}' )
137+ VERSION=$( grep -m1 " ^version = " pyproject.toml | awk -F\" ' {print $2}' )
132138NORMALIZED_NAME=$( echo " $NAME " | tr ' [:upper:]' ' [:lower:]' | tr ' -' ' _' )
133- VERSION=$( _get_version)
134- if [ -z " $VERSION " ]; then
135- if [ -d src ]; then
136- FILENAME=src/$NORMALIZED_NAME /__init__.py
139+ if [ -d src ]; then
140+ if [ -f " src/$NAME /__init__.py" ]; then
141+ NORMALIZED_NAME=$NAME
137142 else
138- FILENAME=$NAME /__init__.py
143+ if ! [ -f " src/$NORMALIZED_NAME /__init__.py" ]; then
144+ NAME=$( echo " $NAME " | awk -F- ' {print $2}' )
145+ NORMALIZED_NAME=$( echo " $NAME " | tr ' [:upper:]' ' [:lower:]' | tr ' -' ' _' )
146+ fi
139147 fi
140- VERSION=$( grep " __version__ = " " $FILENAME " | awk -F\" ' {print $2}' )
141- fi
142- if [ -z " $VERSION " ]; then
143- NAME=$( echo " $NAME " | awk -F- ' {print $2}' )
144- NORMALIZED_NAME=$( echo " $NAME " | tr ' [:upper:]' ' [:lower:]' | tr ' -' ' _' )
145- if [ -d src ]; then
146- FILENAME=src/$NORMALIZED_NAME /__init__.py
147- else
148- FILENAME=$NAME /__init__.py
148+ else
149+ if ! [ -f " $NAME /__init__.py" ] && ! [ -f " $NORMALIZED_NAME /__init__.py" ]; then
150+ NAME=$( echo " $NAME " | awk -F- ' {print $2}' )
151+ NORMALIZED_NAME=$( echo " $NAME " | tr ' [:upper:]' ' [:lower:]' | tr ' -' ' _' )
149152 fi
150- VERSION=$( grep " __version__ = " " $FILENAME " | awk -F\" ' {print $2}' )
151153fi
152154if [[ $VERSION == * -* ]]; then
153155 NORMALIZED_VERSION=$( $PYTHON -c " print(''.join('$VERSION '.replace('-','.').rsplit('.',1)), end='')" )
@@ -169,7 +171,11 @@ if [ "$DIRTY" != "0" ] || [ -z "$FILEEXISTS" ]; then
169171fi
170172echo " ::group::Build wheel(s)"
171173if [ " $BUILD_TAG " == " $BUILD_TAG_DEFAULT " ]; then
172- FILEMASK=" $NORMALIZED_NAME -$NORMALIZED_VERSION -$PYTHON_TAG -$PYTHON_TAG$PY_ABI_THREAD -$PLATFORM_TAG_MASK "
174+ if [ " $ZIP_SAFE " == " true" ]; then
175+ FILEMASK=" $NORMALIZED_NAME -$NORMALIZED_VERSION -$BUILD_TAG_DEFAULT "
176+ else
177+ FILEMASK=" $NORMALIZED_NAME -$NORMALIZED_VERSION -$PYTHON_TAG -$PYTHON_TAG$PY_ABI_THREAD -$PLATFORM_TAG_MASK "
178+ fi
173179 FILEEXISTS=$( find " wheelhouse/$FILEMASK .whl" 2> /dev/null || echo ' ' )
174180 if [ " $DIRTY " != " 0" ] || [ -z " $FILEEXISTS " ]; then
175181 _build_wheel --only " $BUILD_TAG_DEFAULT "
@@ -184,11 +190,11 @@ echo "::endgroup::"
184190if [ " $INSTALL " == " 1" ]; then
185191 echo " ::group::Install $NORMALIZED_NAME $NORMALIZED_VERSION "
186192 if [[ $PY_PLATFORM == mingw* ]]; then
187- PIP_COMMAND=" pip install --force-reinstall"
193+ PIP_COMMAND=" pip install --break-system-packages -- force-reinstall"
188194 else
189195 PIP_COMMAND=" uv pip install --no-build --prerelease=allow --reinstall"
190196 fi
191197 $PIP_COMMAND " $NORMALIZED_NAME ==$NORMALIZED_VERSION " -f wheelhouse \
192- --no-deps --no-index
198+ --no-deps --no-index
193199 echo " ::endgroup::"
194200fi
0 commit comments