Provide an internal helper to normalize names without a subshell.
This gives 535 ops / s, so a further 44% speedup.

Signed-off-by: Michał Górny <mgo...@gentoo.org>
---
 eclass/pypi.eclass | 39 +++++++++++++++++++++++++++------------
 1 file changed, 27 insertions(+), 12 deletions(-)

diff --git a/eclass/pypi.eclass b/eclass/pypi.eclass
index a8a179d5a3a4..d79e6f06fc1b 100644
--- a/eclass/pypi.eclass
+++ b/eclass/pypi.eclass
@@ -63,6 +63,21 @@ _PYPI_ECLASS=1
 # @CODE
 : "${PYPI_PN:=${PN}}"
 
+# @FUNCTION: _pypi_normalize_name
+# @INTERNAL
+# @USAGE: <name>
+# @DESCRIPTION:
+# Internal normalization function, returns the result
+# via _PYPI_NORMALIZED_NAME variable.
+_pypi_normalize_name() {
+       local name=${1}
+       local shopt_save=$(shopt -p extglob)
+       shopt -s extglob
+       name=${name//+([._-])/_}
+       ${shopt_save}
+       _PYPI_NORMALIZED_NAME="${name,,}"
+}
+
 # @FUNCTION: pypi_normalize_name
 # @USAGE: <name>
 # @DESCRIPTION:
@@ -75,12 +90,9 @@ _PYPI_ECLASS=1
 pypi_normalize_name() {
        [[ ${#} -ne 1 ]] && die "Usage: ${FUNCNAME} <name>"
 
-       local name=${1}
-       local shopt_save=$(shopt -p extglob)
-       shopt -s extglob
-       name=${name//+([._-])/_}
-       ${shopt_save}
-       echo "${name,,}"
+       local _PYPI_NORMALIZED_NAME
+       _pypi_normalize_name "${@}"
+       echo "${_PYPI_NORMALIZED_NAME}"
 }
 
 # @FUNCTION: pypi_translate_version
@@ -137,10 +149,10 @@ pypi_sdist_url() {
        local project=${1-"${PYPI_PN}"}
        local version=${2-"$(pypi_translate_version "${PV}")"}
        local suffix=${3-.tar.gz}
-       local fn_project=${project}
-       [[ ${normalize} ]] && fn_project=$(pypi_normalize_name "${project}")
+       local _PYPI_NORMALIZED_NAME=${project}
+       [[ ${normalize} ]] && _pypi_normalize_name "${_PYPI_NORMALIZED_NAME}"
        printf "https://files.pythonhosted.org/packages/source/%s"; \
-               "${project::1}/${project}/${fn_project}-${version}${suffix}"
+               
"${project::1}/${project}/${_PYPI_NORMALIZED_NAME}-${version}${suffix}"
 }
 
 # @FUNCTION: pypi_wheel_name
@@ -167,11 +179,12 @@ pypi_wheel_name() {
                die "Usage: ${FUNCNAME} <project> [<version> [<python-tag> 
[<abi-platform-tag>]]]"
        fi
 
-       local project=$(pypi_normalize_name "${1-"${PYPI_PN}"}")
+       local _PYPI_NORMALIZED_NAME
+       _pypi_normalize_name "${1:-"${PYPI_PN}"}"
        local version=${2-"$(pypi_translate_version "${PV}")"}
        local pytag=${3-py3}
        local abitag=${4-none-any}
-       echo "${project}-${version}-${pytag}-${abitag}.whl"
+       echo "${_PYPI_NORMALIZED_NAME}-${version}-${pytag}-${abitag}.whl"
 }
 
 # @FUNCTION: pypi_wheel_url
@@ -232,8 +245,10 @@ _pypi_set_globals() {
                SRC_URI="$(pypi_sdist_url --no-normalize "${PYPI_PN}" 
"${version}")"
                S="${WORKDIR}/${PYPI_PN}-${version}"
        else
+               local _PYPI_NORMALIZED_NAME
+               _pypi_normalize_name "${PYPI_PN}"
                SRC_URI="$(pypi_sdist_url "${PYPI_PN}" "${version}")"
-               S="${WORKDIR}/$(pypi_normalize_name "${PYPI_PN}")-${version}"
+               S="${WORKDIR}/${_PYPI_NORMALIZED_NAME}-${version}"
        fi
 }
 
-- 
2.41.0


Reply via email to