python-construct/python-construct.spec

102 lines
3.2 KiB
RPMSpec

#
# spec file for package python-construct
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "test"
%define psuffix -test
%bcond_without test
%else
%bcond_with test
%endif
%{?sle15_python_module_pythons}
Name: python-construct%{?psuffix}
Version: 2.10.70
Release: 0
Summary: A declarative parser/builder for binary data
License: MIT
URL: https://github.com/construct/construct
Source: https://github.com/construct/construct/archive/v%{version}.tar.gz#/construct-%{version}.tar.gz
Patch0: split_debug.patch
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires: python-arrow
Recommends: python-cloudpickle
Recommends: python-lz4
Recommends: python-numpy
Recommends: python-ruamel.yaml
BuildArch: noarch
%if %{with test}
BuildRequires: %{python_module arrow}
BuildRequires: %{python_module cloudpickle}
BuildRequires: %{python_module cryptography}
BuildRequires: %{python_module lz4}
BuildRequires: %{python_module numpy}
BuildRequires: %{python_module pytest-benchmark}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module ruamel.yaml}
%endif
%python_subpackages
%description
Construct is a declarative parser (and builder) for binary data.
Instead of writing imperative code to parse a piece of data, a data
structure that describes the data is declared. As this data structure is not
code, it can be used in one direction to parse data into Pythonic objects,
and in the other direction to convert ("build") objects into binary data.
%prep
%autosetup -p1 -n construct-%{version}
# remove gallery tests that require in place stuff
rm -rf tests/gallery
rm -rf tests/deprecated_gallery
%build
%if %{without test}
%pyproject_wheel
%endif
%install
%if %{without test}
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}
%endif
%check
%if %{with test}
# local source dir is needed for tests
export PYTHONPATH=$(pwd)
# Don't test with NumPy in the python36 flavor, because python36-numpy is not in TW anymore
python36_donttest="numpy or test_overall_parse or test_overall_build or test_compiled_example_benchmark or test_compiled_example_integrity"
%pytest --benchmark-disable ${$python_donttest:+ -k "not (${$python_donttest})"}
%endif
%if %{without test}
%files %{python_files}
%license LICENSE
%doc README.rst
%{python_sitelib}/construct
%{python_sitelib}/construct-%{version}.dist-info
%endif
%changelog