NEWS¶
1.5.0 - 2025-03-01 ¶
Changed¶
-
Improve typing of backend code, again. This mainly affects API users who explicitly opt-in to the libdnf5 backend (using
get_config().get_libdnf5_rq()) and wish to annotate functions that interact withPackage,PackageQuery, and/orRepoqueryobjects.It is now possible to annotate functions either using the libdnf5-specific subclasses (e.g.,
fedrq.backends.libdnf5.backend.PackageQuery) for code that only works with libdnf5 and may access lower-level libdnf5 API or with the baseclasses (e.g.,fedrq.backends.base.backend.PackageQueryCompat) for code that maintains compatibility with both backends.
1.4.0 - 2024-11-01 ¶
This release contains mostly backend changes and a fix to the CentOS Stream release configuration.
Added¶
- backends: add experimental support for comps groups and environments. See the stability warning in the API documentation about experimental code.
- backends base: add
RepoqueryAliasfor typingRepoqueryBasesubclasses - config RQConfig: add
get_dnf_rqandget_libdnf5_rqmethods to more explicitly create a dnf- or libdnf5-basedRepoqueryobject - data releases: add
@koji:<tag>and@koji-src:<tag>--repoaliases to theepelXandepel-nextXbranch configurations. - dev: add Github mirror for discoverability
Fixed¶
- config
RQConfig: ensurebackend_modandbackendattributes are synced. If the user modifies thebackendattribute, thebackendproperty now returns the correct backend module instead of caching the old one. - data releases: adjust releases.toml for new EPEL 10+ branching model.
This fixes
fedrq ... -b c10s -r @epel. (Contributed by Michel Lind.)
1.3.0 - 2024-08-27 ¶
CLI improvements¶
- Make automatic loading of filelists more intelligent.
Filelists are now loaded automatically when the formatter name includes
filesor if any argument looks like a path
API changes/improvements¶
- backends: add
difference()andintersection()methods toPackageQuery - backends: add
PackageQueryAliasto backend modules - backends base: add missing
nevra_formsparameter toRepoqueryBase.resolve_pkg_specs(). The dnf and libdnf5Repoqueryimplementations both accept this argument, but it wasn’t included in the base class’s definition. - backends base: convert
PackageCompatto aProtocol - backends libdnf5: fix
filter()andfilterm()’s handling of__containscomparisons, such asquery.filter(name__contains="substring"). Previously,name__containsmistakenly checked for packages whose names do not include the substring. - packaging: declare project as stable in classifiers
1.2.0 - 2024-08-03 ¶
Added¶
- backends base: add
fedrq.backends.base.PackageQueryAliasthat should be used to typePackageQuery-like objects instead ofPackageQueryCompatdirectly - contrib api_examples: add
longest_licensescript
Changed¶
- backends: fix TypeVar bound type cannot be generic error and refactor
PackageQueryCompatandRepoqueryBasetyping - contrib: adjust example scripts for
PackageQueryCompattyping changes - config: allow environment variables (
FEDRQ_BRANCHandFEDRQ_REPO) to override config file
Fixed¶
- repos epel: fix epel-testing metalink url
1.1.0 - 2024-05-01 ¶
Added¶
- backends libdnf5: add dnf 5.2.0.x compatibility
Changed¶
- backends: revamp typing for
PackageandPackageQuery
1.0.0 - 2024-04-01 ¶
First stable release
Added¶
- Containerfiles: add experimental UBI 8–based Containerfile
- cli formatters: add
source+requiresmatchandsource+rmformatters
Changed¶
- Containerfiles: license under
GPL-2.0-or-later - doc fedrq.1: use formatting consistent with
man-pages(7)
Fixed¶
- doc: remove broken reference
Removed¶
- cli formatters: remove long-deprecated
_DefaultFormattersclass (INTERNAL API)
0.15.0 - 2024-02-13 ¶
Added¶
- backends dnf: add
load_filelists()implementation. This makes sure that systems withdnf >= 4.19.0can, for example, use-L alwaysto load filelists.
Changed¶
- doc: revamp and cleanup
Fixed¶
- changelogs: fix off-by-one error with
--entry-limitflag
0.14.0 - 2024-02-07 ¶
Added¶
- api: add
fedrq.cli.formatters.Formatters.formatters_it()method - cli: add
formatterssubcommand to list formatters - formatters: add
-F multiline - formatters: add
-F requiresmatchand related formatters - releases: add
--branch=eln/--repo=buildrootrepo definition
Changed¶
- api: clean up INTERNAL
fedrq.cli.formattersAPI
Deprecated¶
- api: deprecate standalone
fedrq.repoquerymodule
Removed¶
- all: drop support for libdnf5 version less than 5.0.12
0.13.0 - 2023-12-18 ¶
Warning
The next release will drop support for libdnf5<5.0.12
Added¶
CLI:
- cli
download/download-spec: mark commands as stable and document - cli: add new
make-cachesubcommand
API:
- backends
Repoquery.resolve_pkg_specs: addnevra_formsargument - backends
Repoquery.resolve_pkg_specs: allow more granularresolvecontrol - backends: add
allow_multiple_backends_per_processargument toget_backend() - backends: make
basea package instead of a single module
contrib:
- Caddyfile: update for 404.html template
doc:
- API Summary: add dnf and libdnf5 intersphinx links
- dnf-repoquery-diff: fix inter-doc links
- release_repo: add unstable API warning admonition
- add _archive.md API doc
Changed¶
- all: use
metaclass=abc.ABCMetainstead of inheritingabc.ABC - backends: make
libdnf5.backends.${NAME}.backendpackages instead of single modules - cli: correct license of changelogs and download.
They are now
GPL-2.0-or-lateras opposed toMIT. - doc: switch to google docstring style
Fixed¶
- fedrq.repoquery: fix type checking
- backends dnf: fix
BaseMaker.set_var()error typo - cli whatrequires: fix typo (
Exception: Unrecognized key name: recommend).
0.12.0 - 2023-09-11 ¶
Added¶
- whatrequires: add experimental
--extra-exactargument - add support for pydantic v2
0.11.0 - 2023-08-31 ¶
Added¶
API:
- backends: add
repo@property to PackageCompat - BaseMaker: add
load_changelogs(); improveload_filelists() - BaseMaker: add
confproperty - backends: add API for accessing Package changelogs
CLI:
- handle repo ssl client certificates in
downloadsubcommand - add
changelogsubcommand
Container images:
- add
@epelrelease group to therhel9release configuration in theubi9container
General:
- Declare support for Python 3.12
Deprecated¶
API:
- libdnf5 BaseMaker: deprecate config property
Fixed¶
- fix
importlib.abcDeprecationWarning. - improve CLI error handling by erroring out before loading metadata if other non-fatal errors have occurred.
- fix help message in
downloadsubcommand
Removed¶
API:
- config: remove pydantic validators from public API. These never should have been exposed in the first place.
0.10.0 - 2023-07-12 ¶
Added¶
- add unconditional dependency on python3-rpm
- container - refresh redhat.repo on entrypoint
- add
smartcache=alwaysconfig option - add
--smartcache-alwaysCLI flag - add more documentation for the container builds
Changed¶
- container - install config file to set
smartcache=always fedrq.backends.libdnf5.backend.Package- use libdnf5’s getters fordebug_nameandsource_debug_nameinstead of our copies from dnf4. There is still a fallback to the dnf4 versions for libdnf5 < 5.0.12.- fedrq.spec - favor python3-libdnf5 if dnf5 is installed
Deprecated¶
- deprecate support for libdnf5 < 5.0.12 in the libdnf5 backend
Fixed¶
- container - make sure cache persistence volume is actually used
Removed¶
- remove deprecated
config.get_rq()function - drop support for libdnf5 < 5.0.10 in the libdnf5 backend
0.9.0 - 2023-06-29 ¶
Added¶
- add remote_location formatter
- document CentOS 7 release configuration
- add UBI release configuration
- add Oracle Linux release configuration
- add Rocky Linux release configuration
- add experimental download and download-spec subcommands
- add fedrq container builds
- add @source-repos repo class
- BaseMaker: add enable_source_repos() method
- PackageCompat: add remote_location() method
Changed¶
- Remove enabled=1 from built-in fedora repo defs. We want all repo to have enabled=0. We control which repos are enabled and disabled with repo groups configured in releases.toml. This previously led to divergent behavior with the –repo and –enablerepo options when querying Fedora releases on Fedora systems and non-Fedora systems (e.g. CentOS).
Deprecated¶
- deprecate support for libdnf5 < 5.0.10 and raise warnings
Fixed¶
- backends libdnf5: don’t call rpm.ts.closeDB()
0.8.0 - 2023-06-21 ¶
Added¶
- add –version flag to CLI
- improve repo loading error handling (#31)
- add CentOS 7 release configuration
Changed¶
fedrq.config.Release.get_base- allow omittingconfigarg. This previously emitted a deprecation warning (efc2828).ReleaseConfig- makerepogsa proper pydantic model field (d8cff5a).
Fixed¶
- fix Changelog URL in Python/PyPI metadata
- fix typo in help message for
--latest. Contributed by Sandro (~penguinpee). - backends - fix MissingBackendError message grammar
New contributors¶
Thanks to Sandro (~penguinpee) for your first fedrq contribution!
0.7.1 - 2023-05-31 ¶
Fixed¶
- libdnf5: fix downloadsize and size formatters compat. This change is needed to maintain compat after rpm-software-management/dnf5#766fb3a.
0.7.0 - 2023-05-30 ¶
Highlighted examples¶
fedrq now has a Fedora ELN release configuration builtin!
You can preform simple queries
$ fedrq pkgs -b eln -F plainwithrepo ansible-core
ansible-core-2.15.0-2.eln126.noarch eln-appstream
ansible-core-2.15.0-2.eln126.src eln-appstream-source
or use more complex pipelines to determine how a package’s build dependencies differ between ELN and Rawhide
$ comm -13 \
<(fedrq pkgs -b eln -s -F requires ansible-core | sort -u) \
<(fedrq pkgs -b rawhide -s -F requires ansible-core | sort -u)
git-core
glibc-all-langpacks
python3dist(bcrypt)
python3dist(passlib)
python3dist(pexpect)
python3dist(pytest)
python3dist(pytest-forked)
python3dist(pytest-mock)
python3dist(pytest-xdist)
python3dist(pywinrm)
python3dist(pyyaml)
python3-systemd
/usr/bin/python
(This difference is expected, as tests are disabled when %rhel is defined.)
fedrq also has a new repolist command to list enabled repos for a release.
Added¶
- add
localandlocal:...branches to allow querying the enabled system repos in - add
repolistsucommand to display enabled repos the same way that plaindnf repoquerydoes. - add Fedora ELN release configuration
- add/document
@kojiand@koji-srcgeneric repo classes
- add EPEL 9 packages to the upstream gotmax23/copr and gotmax23/copr-dev repositories
- doc: add sig_policy.py to API examples
- doc: add dnf and libdnf5 intersphinx
Changed¶
- docs: show full function signatures w/ annotations
- relicense CI files that are shared with tomcli to MIT
- libdnf5 backend: use
libdnf5.conf.Vars.detect_release()when available (libdnf5 >= 5.0.10) - backends: cache result of get_releasever()
- config: check that release
matchers match the entire--branchnot just the beginning of it.
Fixed¶
- doc: fix improper NEWS.md formatting
- doc: correct
smartcachedescription in fedrq(5). - libdnf5 backend: make the
BaseMaker.load_filelists()method compatible with libdnf5 >= 5.0.12. - packaging: remove remanent rpmautospec changelog file
- packaging: remove unneeded fedora-repos-rawhide BR
0.6.0 - 2023-04-06 ¶
Changed¶
This release shouldn’t introduce any backwards incompatibilities.
Added¶
- add
@metaurlrepo class - add builtin amazonlinux release configuration
- add builtin almalinux release configuration
- add @kojihub alias to the cXs (CentOS Stream) release configuration.
- add @compose-latest repo group to the the cXs (CentOS Stream) release configuration.
- add initial shell completions
- README: update links (by Benson Muite)
- README: expand section about installation with pip
- doc: create a mkdocs docsite at https://fedrq.gtmx.me
- doc: add dnf repoquery comparison
Fixed¶
- releases: fix regression in @epel from the CentOS Stream release configurations.
previously,
fedrq CMD -b cXs -r epelresulted in an Exception. - config: fix docstring typos and add links
New contributors¶
Thank you to Benson Muite (~bvkcm) for improving the README and correcting outdated information.
0.5.0 - 2023-03-18 ¶
New dependencies¶
- requests
Highlighted examples¶
Find the latest version of fedrq available in the gotmax23/fedrq-dev copr. No extra configuration is required!
$ fedrq pkgs -F nevrr -b f36 -r @copr:gotmax23/fedrq-dev fedrq
fedrq-0.4.1^25.20230318.76d7910-1.fc36.noarch copr:copr.fedorainfracloud.org:gotmax23:fedrq-dev
fedrq-0.4.1^25.20230318.76d7910-1.fc36.src copr:copr.fedorainfracloud.org:gotmax23:fedrq-dev
Find the packages in Fedora and RPMFusion that depend on any subpackage of ffmpeg. Currently, fedrq does not have a builtin rpmfusion configuration, but with the repo loading revamp, fedrq can read arbitrary repositories from the system configuration. It’s just not as nice and convenient.
$ fedrq wrsrc ffmpeg -b f37 --enablerepo=rpmfusion-{non,}free{,-updates}{,-source} -Fline:na,repoid
HandBrake.src : rpmfusion-free-source
HandBrake.x86_64 : rpmfusion-free
HandBrake-gui.x86_64 : rpmfusion-free
[...]
mpv.src : updates-source
mpv.x86_64 : updates
mpv-libs.i686 : updates
mpv-libs.x86_64 : updates
[...]
Changed¶
- Release: use releasever as cache directory key (https://todo.sr.ht/~gotmax23/fedrq/18)
- change format of copr_chroot_fmt in ReleaseConfig
- config: improve Release repository loading.
Previously, a repository id that was defined in one of the repo files in a
release’s
defpathsand also defined in the system configuration (when system_repos=true) would cause fedrq to crash when loading repositories. Now, system repositories are loaded first and then only repositories that are not already defined are loaded from defpaths. system_repos=false works the same as before - add new repository loading API and dep on requests (https://todo.sr.ht/~gotmax23/fedrq/21, More details)
- config: plug in new repository loading API (More details)
- release.toml: update for new reoo loading API
Added¶
- Add centos-stream8 release configuration
- Add whatobsoletes subcommand
- formatters: add full_nevra formatter
- config: implement recursive config file merging
- cli: add –enablerepo and –disablerepo
- docs: elaborate on new repo classes
BaseMaker API:
This includes changes to the BaseMaker API
(fedrq.backends.(lib)dnf(5).backend.BaseMaker).
- add disable_repo() method
- add repolist() method
fedrq.spec:
- include api_examples in %doc
- explicitly require python3-rpm
Fixed¶
- releases.toml: Fix typo in epel_next release def
Testing and development workflow¶
- nox: remove fclogr venv workarounds
- ruff: enable unused-arguments rules
- improve test_subpkgs_match2 integration test
- ruff: ignore no-explicit-stacklevel for now
- test Release._copr_repo() formatting
- nox publish: install all deps into the venv
0.4.1 - 2023-03-13 ¶
This is a minor bugfix release that accounts for breaking libdnf5 API changes.
Fixed¶
- BaseMaker: make compatible with libdnf5 changes. libdnf5 changed its configuration API so BaseMaker needs to be adjusted accordingly. For now, fedrq maintains compatibility with both API versions.
- Clarify explanatory comments in api_examples
Added¶
- Add location attr to PackageCompat and formatters.
Example:
fedrq pkgs ansible -Flocation
Testing and Dev Workflow¶
- Add nox targets to release fedrq
0.4.0 - 2023-02-21 ¶
Changed¶
- fedrq is now in beta.
- fedrq.spec: Always Require distribution-gpg-keys
- Command: simplify smartcache and load_filelists
- change logging format to include line numbers
Added¶
CLI:
- Add CentOS Stream 9 release configuration
- Add new formatter
plainwithrepo. Try it withfedrq CMD -F plainwithrepo. Contributed by ~amoralej. -
Document
whatrequires-srcsubcommand. -
Cleanup fedrq.cli.formatters interface (PRIVATE API)
API:
- Cleanup API interface and mark it as public. Add docstrings.
- Add initial API documentation and examples. More to come.
- Make
fedrq.backends.libdnf5.backend.Packagehashable. - Add lt and gt methods to
fedrq.backends.libdnf5.backend.Package. Use the same sort algorithm as hawkey. - Add
create_repo()method to BaseMaker - BaseMaker and Repoquery: add
backendproperty to access the current backend module - libdnf5: add
config_loadedparam to BaseMaker
Tests¶
- .builds f36: don’t run unit tests twice
- Remove lint.sh in favor of nox and switch to ruff
- Fix ruff linting errors
New Contributors¶
- Thanks to Alfredo Moralejo (~amoralej) for contributing the
plainwithrepoformatter.
0.3.0 - 2023-02-13 ¶
Changed¶
- Get rid of importlib_resources on Python 3.9. We can use the stdlib version.
- Stop excluding files from the sdist.
- Abstract dnf code into backends. (INTERNAL API)
fedrq.repoqueryis now a shim module that tries to import Repoquery and BaseMaker fromfedrq.backends.dnf.backendand then falls back tofedrq.backends.dnf.backend.fedrq.repoquery.Repoqueryandfedrq.repoquery.BaseMaker’s interfaces are mostly unchanged, but they now point to the appropriate backend infedrq.backends.- Make loading filelists optional.
Added¶
- Add a libdnf5 backend.
- Use -b / –backend or
backendin the config file to explicitly choose a backend. Otherwise, the default backend (currently dnf) will be used.
- Use -b / –backend or
- Add
whatrequires-srcsubcommand and awrsrcalias. - Add
wralias forwhatrequiressubcommand. - Add –forcearch flag
- Add a
fedrq.backends.get_default_backend()function to import backends. This provides more flexibility thanfedrq.repoquerywhich is now a shim module and is the recommended approach. (INTERNAL API)
Fixed¶
- whatrequires -P: don’t resolve SRPM names
- Repoquery: ensure all Provides are resolved
Documentation¶
- fedrq.1: add –backend and –filelists.
- fedrq.5: document
backendandfilelistconfig options
Testing¶
- .builds: Use fclogr main branch
- Fix Copr dev builds
- .builds: Run rpmlint
- Allow test parallelization
- Adopt nox as a test runner.
- noxfile: Use editable install for local testing
- Test libdnf5 backend
- .builds: test libdnf5 backend on f36
- nox: add libdnf5_test target
- nox: add testa target to test both backends at once
0.2.0 - 2023-01-14 ¶
Changed¶
- Use $XDG_CACHE_HOME/fedrq to store instead of /var/tmp to store
smartcache. This removes
fedrq.cli.Command.v_cachedir(),fedrq._utils.make_cachedir(), andfedrq.config.SMARTCACHE_BASEDIR; they’re no longer needed after this change.
Fixed¶
- Fix EL 9 and Python 3.9 compatibility
- Add fallback Fedora repository definitions.
- Use
importlib_resourcesbackport. - Don’t use @staticmethod as a decorator. This doesn’t work with Python 3.9.
Dev Changes¶
- Remove unnecessary
argparse.ArgumentParser.parse_argsworkaround - Fix importlib_resources.abc.Traversable type checking
- Test and lint on EPEL 9 and Fedora 36 in CI
- lint.sh: Ensure all test files are formatted
- Ditch rpmautospec in favor of fclogr
0.1.0 - 2033-01-02 ¶
Summary¶
- New JSON formatter
fedrq subpkgs --matchto filterfedrq subpkgsoutput packages-
Add smartcache CLI flag and config option to avoid clearing the system cache when repoquerying different versions.
-
Backend improvements and cleanup
- More test coverage
- Docs improvements
Bugfixes¶
- Tweak README wording
- Command: Fix configuration error handling
- Make _v_fatal_error and _v_handle_errors DRY
- Fix –notsrc on 32 bit x86
- Fix cli.Subpkgs v_arch() method
- Add more config validation
Tests¶
- Reorganize tests
- tests: Don’t hardcode x86_64
- Add basic
fedrq pkgsintegration test - Test –exclude-subpackages
- Reformat fedrq.1 yet again
- Add formatters sanity test
- formatters: Add tests and improve error handling
- Test smartcache config option
New Features¶
- Add initial –smartcache implementation
- Allow setting smartcache in config file and enable it by default
- formatters: Add missing attrs
- Add json formatter
- subpkgs: Add –match option
- Add fedrq(5) manpage
Breaking API Changes¶
Note that fedrq’s API is currently unstable and not intended for outside usage.
- Rearchitect make_base()
- Replace cli.base.get_packages with Repoquery method
- Reimplement FormatterContainer (private API)
0.0.2 - 2022-12-20¶
- pyproject.toml: Add project.urls
- pyproject.toml: Change Development Status to Alpha
- Truncate RPM changelog
- Exclude rpmautospec
changelogfrom sdist - fedrq.spec: Workaround F36’s old flit-core
- fedrq.spec: Remove unnecessary rpmdevtools BR
- Add fedrq-dev copr
0.0.1 - 2022-12-19¶
Initial release