pyp2spec 0.9.0

Last updated:

0 purchases

pyp2spec 0.9.0 Image
pyp2spec 0.9.0 Images
Add to Cart

Description:

pyp2spec 0.9.0

pyp2spec
This project is a thought descendant of specfile_generator.
It generates working Fedora RPM spec file for Python projects.
The produced spec files must be compliant with the current Python Packaging Guidelines (in effect since 2021).
It utilizes the benefits of pyproject-rpm-macros.
This project's maturity state is alpha.
Its API may be a subject of change.
What it does
pyp2spec gathers all the necessary information from PyPI to produce a valid
Fedora spec file and stores it in the current directory alongside with
the config file used to produce the spec file.
Inside, there are two parts:

pyp2conf: gathers of all the necessary information to produce a spec file and stores it in a configuration file
conf2spec: produces working spec file using all the information from configuration file

How to run
To run whatever this project offers at this point,
install package pyp2spec from PyPI with the command:
pip install pyp2spec

Then you can run:
pyp2spec <pypi_package_name>

or those two commands which will together produce the same result as pyp2spec:
pyp2conf <pypi_package_name>
conf2spec <config_file>

To see all available command-line options, run --help with the respective commands.
Development
Alternatively, you can clone the project from GitHub and install
the dependencies to you virtual environment:
python -m pip install -r requirements.txt

To run the script and generate both the config and spec file, type:
python -m pyp2spec.pyp2spec <pypi_package_name>

You can run either of the tools separately to generate partial results:
python -m pyp2spec.pyp2conf <pypi_package_name>
python -m pyp2spec.conf2spec <config_file>

Tests
To run the tests, run tox:
tox

You can install tox from your OS repository or PyPI.
Test dependencies are defined in the project's [test] extra.
Configuration file specification
Configuration data is stored in a TOML file.
Mandatory fields

Generated by pyp2conf




Field
Description
Type




pypi_name
package name as stored in PyPI
string


python_name
pypi_name prepended with python- and alternative Python version, if python_alt_version is defined
string


archive_name
source tarball name, stripped of version and file extension
string


version
package version to create spec file for (RPM format)
string


pypi_version
package version string as in PyPI, '%{version}' if the same as version
string


summary
short package summary
string


license
license name
string


url
project URL
string


source
%{pypi_source} macro with optional arguments (tarball URL can be used instead)
string


description
long package description
multiline string


extras
extra subpackages names
list of strings


archful
package contains compiled extensions, implies not using BuildArch: noarch and adding BuildRequires: gcc
bool


python_alt_version
specific Python version to create the spec file for, e.g. 3.9, 3.10, 3.12
string



Optional fields

Not generated by pyp2conf
Can be also added to config files generated by pyp2conf




Field
Description
Type




test_method
pytest, tox
string


test_top_level
filter and test only top-level modules in %check
bool


unwanted_tests
test names to skip with pytest
list


binary_files
list binary files from the package
list


license_files
list license files from the package
list


doc_files
list doc files from the package
list



Example config file generated by pyp2spec
description = "This is package 'aionotion' generated automatically by pyp2spec."
summary = "A simple Python 3 library for Notion Home Monitoring"
version = "2.0.3"
license = "MIT"
pypi_name = "aionotion"
pypi_version = %{version}
python_name = "python-aionotion"
url = "https://github.com/bachya/aionotion"
source = "%{pypi_source aionotion}"
archive_name = "aionotion"
extras = []
archful = false

Spec file generated using the example config
Name: python-aionotion
Version: 3.0.2
Release: %autorelease
Summary: A simple Python 3 library for Notion Home Monitoring

# Check if the automatically generated License and its spelling is correct for Fedora
# https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/
License: MIT
URL: https://github.com/bachya/aionotion
Source: %{pypi_source aionotion}

BuildArch: noarch
BuildRequires: python3-devel

%global _description %{expand:
This is package 'aionotion' generated automatically by pyp2spec.}


%description %_description

%package -n python3-aionotion
Summary: %{summary}

%description -n python3-aionotion %_description


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


%generate_buildrequires
%pyproject_buildrequires


%build
%pyproject_wheel


%install
%pyproject_install
# For official Fedora packages, including files with '*' +auto is not allowed
# Replace it with a list of relevant Python modules/globs and list extra files in %%files
%pyproject_save_files '*' +auto


%check
%pyproject_check_import


%files -n python3-aionotion -f %{pyproject_files}


%changelog
%autochangelog

License
The code is licensed under MIT.
The spec file template - template.spec and the files generated by the tool are licensed under MIT-0 (No Attribution).

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.