python-specfile/python-specfile.spec
Packit 6efa30bf3b Update to 0.38.0 upstream release
Upstream tag: 0.38.0
Upstream commit: a07560dd

Commit authored by Packit automation (https://packit.dev/)
2026-01-08 13:48:33 +00:00

219 lines
9.8 KiB
RPMSpec

%global desc %{expand:
Python library for parsing and manipulating RPM spec files.
Main focus is on modifying existing spec files, any change should result
in a minimal diff.}
%global base_version 0.38.0
#global prerelease rc1
%global package_version %{base_version}%{?prerelease:~%{prerelease}}
%global pypi_version %{base_version}%{?prerelease}
Name: python-specfile
Version: %{package_version}
Release: 1%{?dist}
Summary: A library for parsing and manipulating RPM spec files
License: MIT
URL: https://github.com/packit/specfile
Source0: %{pypi_source specfile %{pypi_version}}
BuildArch: noarch
BuildRequires: python%{python3_pkgversion}-devel
BuildRequires: %{py3_dist setuptools setuptools-scm}
BuildRequires: %{py3_dist importlib-metadata dataclasses rpm typing-extensions}
BuildRequires: %{py3_dist flexmock pytest}
BuildRequires: git-core
%description
%{desc}
%package -n python%{python3_pkgversion}-specfile
Summary: %{summary}
%description -n python%{python3_pkgversion}-specfile
%{desc}
%prep
%autosetup -p1 -n specfile-%{pypi_version}
# Remove bundled egg-info
rm -rf specfile.egg-info
%build
%py3_build
%install
%py3_install
%check
%pytest --verbose tests/unit tests/integration
%files -n python%{python3_pkgversion}-specfile
%license LICENSE
%doc README.md
%{python3_sitelib}/specfile
%{python3_sitelib}/specfile-%{version}-py%{python3_version}.egg-info
%changelog
* Thu Jan 08 2026 Packit <hello@packit.dev> - 0.38.0-1
- A bug leading to incorrect EVR expansion has been fixed. (#492)
- Prevented side-effects during condition evaluation that could occur when expanding macros that manipulate other macros, leading to misinterpreted validity of condition branches. (#499)
* Fri Oct 03 2025 Packit <hello@packit.dev> - 0.37.1-1
- We have solved a FutureWarning in our codebase. (#485)
* Fri Sep 05 2025 Packit <hello@packit.dev> - 0.37.0-1
- Added support for Elbrus E2K CPU architectures. (#484)
* Fri May 30 2025 Packit <hello@packit.dev> - 0.36.0-1
- We have fixed a bug that caused specfile to traceback when section names with conditional macro expansions containing spaces were present in the spec file. (#476)
* Sun Apr 13 2025 Packit <hello@packit.dev> - 0.35.0-1
- Added support for creating Specfile instances from file objects and strings. (#458)
- The `context_management` type stubs now use `ParamSpec` from `typing_extensions` to support Python < 3.10. (#466)
* Tue Mar 18 2025 Packit <hello@packit.dev> - 0.34.2-1
- context_management: add a type stub override to fix typing. Type checkers like mypy and pyright can now correctly determine the types for `.sources()`, `.sections()`, and the other `Specfile` methods that return context managers. (#457)
* Fri Feb 07 2025 Packit <hello@packit.dev> - 0.34.1-1
- Removed the usage of a walrus operator for Python 3.6 compatibility. (#450)
* Mon Jan 27 2025 Packit <hello@packit.dev> - 0.34.0-1
- Added support for detached (open)SUSE style changelogs (#444)
- Resolves: rhbz#2342178
* Mon Dec 16 2024 Packit <hello@packit.dev> - 0.33.0-1
- There is a new convenience method `Sections.get_or_create()` that allows you to manipulate a section
without checking if it exists first. If a section doesn't exist, it will be appended to the end. (#441)
For example, this will work properly even on spec files without `%%changelog`:
```
with spec.sections() as sections:
changelog = sections.get_or_create("changelog")
changelog[:] = ["%%autochangelog"]
```
- Resolves: rhbz#2332288
* Thu Nov 14 2024 Packit <hello@packit.dev> - 0.32.6-1
- New minor release for testing in CBS Koji
- Resolves: rhbz#2318011
* Sat Oct 26 2024 Packit <hello@packit.dev> - 0.32.5-1
- We have fixed our parser to take in account the deprecations introduced in Python 3.8 (#420)
* Mon Sep 30 2024 Packit <hello@packit.dev> - 0.32.3-1
- specfile can now handle multi-line tag values (enclosed in a macro body, e.g. `%%shrink`). (#412)
- Resolves: rhbz#2299289
* Sun Sep 15 2024 Packit <hello@packit.dev> - 0.32.2-1
- Explicitly invalidate the global parse hash when a SpecParser instance is created to prevent this issue. (#409)
* Mon Jul 29 2024 Packit <hello@packit.dev> - 0.32.1-1
- Fixed two issues related to condition parsing. (#405)
* Mon Jul 22 2024 Packit <hello@packit.dev> - 0.32.0-1
- It is now possible to bump a release in a manner similar to `rpmdev-bumpspec` using `Specfile.bump_release()` method. (#399)
* Tue Jul 09 2024 Packit <hello@packit.dev> - 0.31.0-1
- Value of a `Tag` no longer includes trailing whitespace (if any). (#393)
- specfile now tries to expand macros before processing conditions to be able to resolve conditional expressions defined by macros, for example OpenSUSE Tumbleweed defines `%%ifpython3` macro as `%%if "%%{python_flavor}" == "python3"`. (#394)
- Resolves: rhbz#2294393
* Wed Jun 26 2024 Packit <hello@packit.dev> - 0.30.0-1
- Fixed an exception that occured when accessing the `Specfile.has_autochangelog` property while having unparseable lines (e.g. lines ending with unescaped `%`) in `%%changelog`. (#387)
* Thu Jun 06 2024 Packit <hello@packit.dev> - 0.29.0-1
- Improved compatibility with RPM 4.20 (alpha version is currently in Fedora Rawhide). (#380)
* Thu May 23 2024 Packit <hello@packit.dev> - 0.28.3-1
- Fixed several minor issues such as processing seemingly commented-out macro definitions (e.g. `#%%global prerel rc1`) and treating `SourceLicense` tag as a source. (#374, #376)
- Made `EVR`, `NEVR` and `NEVRA` objects comparable. (#379)
* Sun Mar 17 2024 Packit <hello@packit.dev> - 0.28.0-1
- A trailing newline is no longer added to spec files without one upon saving. (#353)
* Fri Jan 19 2024 Packit <hello@packit.dev> - 0.27.0-1
- Improved handling of commented-out macro definitions and fixed related logic in `Specfile.update_value()`. (#338)
* Mon Nov 20 2023 Packit <hello@packit.dev> - 0.25.0-1
- There is a new method, `Specfile.update_version()`, that allows updating spec file version even if it is a pre-release. (#317)
* Mon Nov 06 2023 Packit <hello@packit.dev> - 0.24.0-1
- Improved type annotations for `UserList` subclasses. (#299)
- Macro definitions gained a new `commented_out` property indicating that a macro definition is commented out. Another new property, `comment_out_style`, determines if it is achieved by using a `%%dnl` (discard next line) directive (e.g. `%%dnl %%global prerelease beta2`) or by replacing the starting `%` with `#` (e.g. `#global prerelease beta2`). (#298)
* Mon Oct 30 2023 Packit <hello@packit.dev> - 0.23.0-1
- Sources now have a `valid` property that indicates whether a source is valid in the current context, meaning it is not present in a false branch of any condition. (#295)
* Fri Oct 06 2023 Packit <hello@packit.dev> - 0.22.1-1
- Removed dependency on setuptools-scm-git-archive. (#290)
* Fri Aug 11 2023 Nikola Forró <nforro@redhat.com> - 0.21.0-1
- `specfile` no longer tracebacks when some sources are missing and can't be _emulated_. In such case the spec file is parsed without them at the cost of `%%setup` and `%%patch` macros potentially expanding differently than with the sources present. (#271)
- Specfile's license in RPM spec file is now confirmed to be SPDX compatible. (#269)
* Mon Jul 31 2023 Packit <hello@packit.dev> - 0.20.2-1
- Fixed Packit config to work properly with `propose-downstream` and `pull-from-upstream` jobs. (#261)
* Fri Oct 07 2022 Packit <hello@packit.dev> - 0.7.0-1
- It is now possible to filter changelog entries by specifying lower bound EVR, upper bound EVR or both. (#104)
- Added support for filenames specified in source URL fragments, for example: `https://example.com/foo/1.0/download.cgi#/%{name}-%{version}.tar.gz` (#100)
* Thu Aug 25 2022 Packit <hello@packit.dev> - 0.6.0-1
- Switched to our own implementation of working with `%changelog` timestamps and removed dependency on arrow (#88)
- Fixed requires of EPEL 8 rpm (#86)
* Wed Aug 10 2022 Packit <hello@packit.dev> - 0.5.1-1
- Added new `%conf` section (#74)
- Switched to rpm-py-installer (#75)
- Fixed detecting extended timestamp format in `%changelog` (#77, #81)
* Fri Jul 22 2022 Packit <hello@packit.dev> - 0.5.0-1
- Strict optional typing is now enforced (#68)
- Fixed deduplication of tag names (#69)
- Sources and patches can now be removed by number (#69)
- Number of digits in a source number is now expressed the same way as packit does it (#69)
- Empty lines are now compressed when deleting tags (#69)
- Added convenience property for getting texts of tag comments (#69)
- Added convenience method for adding a patch (#69)
* Tue Jun 21 2022 Packit <hello@packit.dev> - 0.4.0-1
- Added convenience properties for most used tags (#63)
- Hardened linting by ignoring only specific mypy errors (#64)
- Fixed list of valid tag names and ensured newly added tags are not part of a condition block (#66)
- Initial patch number and its default number of digits are now honored (#66)
- Fixed a bug in `%prep` macro stringification (#67)
* Mon May 16 2022 Packit <hello@packit.dev> - 0.3.0-1
- Made `Sources` a `MutableSequence` (#36)
- Started using consistent terminology for source numbers and added the option to insert a source with a specific number (#47)
- Added support for implicit source numbering (#48)
- Documented sources and `%prep` macros in README (#49)
- Implemented high-level manipulation of version and release (#54)
- Added support for `* Mon May 16 2022 John Doe <packager@example.com> - 0.3.0-1.fc35
- local build` (#56)
- Added `remote` property to sources and enabled addition of `Sources` (#59)
- Implemented mid-level manipulation of `%prep` section, including modification of `%prep` macros (#37, #52)
* Wed Mar 30 2022 Nikola Forró <nforro@redhat.com> - 0.2.0-1
- New upstream release 0.2.0
* Mon Feb 21 2022 Nikola Forró <nforro@redhat.com> - 0.1.1-1
- New upstream release 0.1.1
* Tue Feb 08 2022 Nikola Forró <nforro@redhat.com> - 0.1.0-1
- Initial package