File babel.spec of Package babel

%{?vortex_header}%{!?vortex_header:%global vortex_pkg vortex-2024-07}

# There is some bootstrapping involved when upgrading Python 3
# First of all we need babel (this package) to use sphinx
# And pytest is at this point not yet ready
%bcond bootstrap 1

# Since babel 2.12, the pytz dependency is optional.
# However, pytz is preferred when installed.
# Running tests with pytz is optional as well.
# We don't want to pull pytz into ELN/RHEL just to test integration with it,
# but we don't want to ship babel in Fedora with an untested default,
# so we make the dependency conditional.
# Ideally, the dependency would be conditional on pytz availability in the repo,
# but that's not possible in 2023 yet.
# Additionally, the date/time tests require freezegun, which is unwanted in RHEL.
%bcond datetime_tests %{undefined rhel}

Name:           babel
Version:        2.15.0
Release:        %autorelease
Summary:        Tools for internationalizing Python applications

License:        BSD-3-Clause
URL:            https://babel.pocoo.org/
Source:         %{pypi_source}

BuildArch:      noarch

BuildRequires:  %{vortex_pkg}-python3-devel

%if %{without bootstrap}
BuildRequires:  coreutils
# The Python test dependencies are not generated from tox.ini,
# because it would require complex patching to be usable
# and becasue we want to avoid the tox dependency in ELN/RHEL.
BuildRequires:  %{vortex_pkg}-python3-pytest
%if %{with datetime_tests}
BuildRequires:  %{vortex_pkg}-python3-freezegun
# The pytz tests are skipped when pytz is missing
BuildRequires:  %{vortex_pkg}-python3-pytz
%endif
# build the documentation
BuildRequires:  make
BuildRequires:  %{vortex_pkg}-python3-sphinx
%endif
Requires:       %{vortex_pkg}-python3-babel = %{?epoch:%{epoch}:}%{version}-%{release}


%description
Babel is composed of two major parts:

* tools to build and work with gettext message catalogs

* a Python interface to the CLDR (Common Locale Data Repository),
  providing access to various locale display names, localized number
  and date formatting, etc.


%package -n %{vortex_pkg}-python3-babel
Summary:        Library for internationalizing Python applications

%description -n %{vortex_pkg}-python3-babel
Babel is composed of two major parts:

* tools to build and work with gettext message catalogs

* a Python interface to the CLDR (Common Locale Data Repository),
  providing access to various locale display names, localized number
  and date formatting, etc.

%if %{without bootstrap}
%package doc
Summary:        Documentation for Babel
%py_provides    %{vortex_pkg}-python3-babel-doc

%description doc
Documentation for Babel
%endif

%prep
%autosetup -p1 -n babel-%{version}

%generate_buildrequires
%pyproject_buildrequires

%build
%pyproject_wheel

BUILDDIR="$PWD/built-docs"
rm -rf "$BUILDDIR"

%if %{without bootstrap}
pushd docs
make \
    SPHINXBUILD=sphinx-build-3 \
    BUILDDIR="$BUILDDIR" \
    html man
popd
rm -f "$BUILDDIR/html/.buildinfo"
%endif

%install
%pyproject_install
%pyproject_save_files babel

%if %{without bootstrap}
install -D -m 0644 built-docs/man/babel.1 %{buildroot}%{_mandir}/man1/pybabel.1
%endif

%check
export TZ=UTC
%pyproject_check_import
%if %{without bootstrap}
# The deselected doctests fail without pytz when run during Eastern Daylight Time
# https://github.com/python-babel/babel/issues/988
# The ignored files use freezegun
%pytest %{!?with_datetime_tests:\
  -k "not (babel.dates.format_time or babel.dates.get_timezone_name)" \
  --ignore tests/test_dates.py --ignore tests/messages/test_frontend.py}
%endif

%files
%doc CHANGES.rst AUTHORS
%{_bindir}/pybabel

%if %{without bootstrap}
%{_mandir}/man1/pybabel.1*
%endif

%files -n %{vortex_pkg}-python3-babel -f %{pyproject_files}

%if %{without bootstrap}
%files doc
%license LICENSE
%doc built-docs/html/*
%endif

%changelog
%autochangelog
openSUSE Build Service is sponsored by