- For packages that publish METADATA with
License-File
field on PyPI, the generated spec files contain a flag%pyproject_save_files -l
which asserts the presence of license files in the distribution during the RPM build
- Implemented PEP 625: only the standardized sdist filenames are now supported
- CLI
--automode
,-a
to create buildable spec files (suitable for automated environments)
- In the default mode of pyp2spec create a spec file that requires a human input
The top-level modules cannot be easily detected, hence
%pyproject_save_files
has to be filled in by a packager - Continue with creating the spec files even if the license is not detected, leave the field blank to fill in by the packager
- Many CLI options and manual config entries. The tool now only takes care of what it can detect from the package data.
- Added a possibility to create spec files for specific Python versions
Use a new command-line option
-p, --python-alt-version
to set it.
- Automatically detect whether a package is archful or not based on a wheel name.
If so,
BuildArch: noarch
is not used in the resulting spec file. If so,BuildRequires: gcc
is automatically added to the resulting spec file. - Automatically detect the package extras, provided that an extra contains at least one additional requirement The detected extras are declared as RPM subpackages and required in the build time.
- Use project version JSON API available at PyPI to obtain package metadata. This ensures all the fields are relevant for the requested package version
- CLI
--archful
switch - it's detected automatically now manual_build_requires
config optionextra_build_requires
config optionextra_tox_env
config option- support for Python 3.8
- rpmautospec macros (
%autochangelog
and%autorelease
) are now used to populate the respective fields in the generated specfile. The CLI options for defining custom values have been removed - Convert the Python classifiers to Fedora SPDX expressions (where possible, based on PEP 639)
- When
--fedora-compliant
option is set, a check of the converted license expressions is performed to determine whether the license is allowed in Fedora. Data is provided by the Fedora Legal team - tomllib library is used to read toml files from Python 3.11 on
- pyp2spec quits when a package is not found on PyPI
- Include LICENSE-MIT-0 in the sdist and fix license metadata
- template.spec and the files created by pyp2spec are relicensed under MIT-0 (No attribution) license
- PyPI package names are normalized according to PEP 503 to better conform with Library naming guidelines
- "Initial package" is the new default changelog message, which better reflects the needs of packagers
- Clearly state in version that project is in the alpha maturity phase, its API may be subject of change
- It's possible to declare archful package via CLI (
--archful, -a
) - the generated spec file will not containBuildArch: noarch
line - Package version compatible with PEP 440 is now converted to RPM scheme, version not following the specification remains unchanged. For that, a modified part of pyreq2rpm is used
- Requirement to generate the runtime requirements is no longer passed as an
-r
flag, this was made the default option as of pyproject-rpm-macros 0-53 - Sources are no longer enumerated as per this change in Fedora's Packaging Guidelines
- CLI
--spec-output
option has got a short version-o
.-s
is valid for--summary
- Prevent creating spec file without summary (fill in placeholder
...
) - Prevent creating spec file with multiline summary value (fill in placeholder
...
) - Don't create a spec file when the upstream
license
field contains the whole license text instead of the keyword - error and end the program. - Add a comment in the generated spec file that the
description
field should be filled in by the packager - Created spec files now contain a newline at the end of file
- If no
project_urls
are present in the package data, fall back topackage_url
which always lists the PyPI package URL
- When sdist is in
zip
format, it %{pypi_source} is now correctly called with all arguments: name, version and format
zip
is recognized as a valid sdist format and used to create source macro- Description lines are now wrapped at 79 characters, so they don't annoy rpmlint
MANIFEST.in
to include tests in sdist
- Cassettes were reloaded so that tests don't send real HTTP requests
- 'OSI Approved' License classifier is ignored now, it's a top-level category that doesn't bring any meaningful information
- Explicit comment in template.spec that "'*' +auto" is not allowed in Fedora
- Command-line option
--top-level
to filter only top-level modules during the check phase
- Proprietary licenses are declared as "BAD" for Fedora, not "UNKNOWN"
- Minor README corrections
- pyp2spec: First published version