Bug 2121797 - Review Request: python-pytz-deprecation-shim - Shims to help you safely remove pytz
Summary: Review Request: python-pytz-deprecation-shim - Shims to help you safely remov...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Maxwell G
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 2120355 (view as bug list)
Depends On:
Blocks: 1993583
TreeView+ depends on / blocked
 
Reported: 2022-08-26 16:35 UTC by Ben Beasley
Modified: 2022-11-10 22:29 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2022-10-29 14:27:30 UTC
Type: ---
Embargoed:
maxwell: fedora-review+


Attachments (Terms of Use)

Description Ben Beasley 2022-08-26 16:35:42 UTC
Spec URL: https://music.fedorapeople.org/python-pytz-deprecation-shim.spec
SRPM URL: https://music.fedorapeople.org/python-pytz-deprecation-shim-0.1.0.post0-1.fc36.src.rpm

Description:

pytz has served the Python community well for many years, but it is no longer
the best option for providing time zones. pytz has a non-standard interface
that is very easy to misuse; this interface was necessary when pytz was
created, because datetime had no way to represent ambiguous datetimes, but this
was solved in Python 3.6, which added a fold attribute to datetimes in PEP 495.
With the addition of the zoneinfo module in Python 3.9 (PEP 615), there has
never been a better time to migrate away from pytz.

However, since pytz time zones are used very differently from a standard
tzinfo, and many libraries have built pytz zones into their standard time zone
interface (and thus may have users relying on the existence of the localize and
normalize methods); this library provides shim classes that are compatible with
both PEP 495 and pytz’s interface, to make it easier for libraries to deprecate
pytz.

Fedora Account System Username: music

Koji scratch builds:

F38: https://koji.fedoraproject.org/koji/taskinfo?taskID=91285379
F37: https://koji.fedoraproject.org/koji/taskinfo?taskID=91285834
F36: https://koji.fedoraproject.org/koji/taskinfo?taskID=91285934
F35: https://koji.fedoraproject.org/koji/taskinfo?taskID=91286023

This is a prerequisite for updating python-tzlocal.

Comment 1 Ben Beasley 2022-08-26 16:53:56 UTC
*** Bug 2120355 has been marked as a duplicate of this bug. ***

Comment 2 Maxwell G 2022-10-17 22:30:28 UTC
This looks good. Thank you for working on updating tzlocal.

Notes and nitpicks
====

- We usually don't package .post releases, but all this does is change some metadata[1]. This is fine with me.
[1]: https://github.com/pganssle/pytz-deprecation-shim/compare/0.1.0...0.1.0.post0

- I am not familiar with building sphinx doc PDFs, but I don't see anything glaringly wrong.

```
# pyproject-rpm-macros takes care of the LICENSE file in dist-info; we manually
# include the file with the full license text as well
%license licenses/LICENSE_APACHE
``

- I would also install the main LICENSE to the central directory. It seems silly to have one license file in one directory and the other one in a completely different directory.

- Why not put README.rst, CHANGELOG.rst (doesn't seem to be packaged at all), and the single docs PDF in the main subpackage? I don't think it's worth having a doc subpackage for just one extra file.


Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated


===== MUST items =====

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "Apache License 2.0", "*No copyright*
     Apache License 2.0", "*No copyright* Apache License". 37 files have
     unknown license. Detailed output of licensecheck in
     /home/gotmax/Sync/git-
     repos/packaging/fedora_rpms/review.repos/2121797-python-pytz-
     deprecation-shim/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[?]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: If (and only if) the source package includes the text of the
     license(s) in its own file, then that file, containing the text of the
     license(s) for the package is included in %license.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package must not depend on deprecated() packages.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[x]: Python eggs must not download any dependencies during the build
     process.
[x]: A package which is used by another package via an egg interface should
     provide egg info.
[x]: Package meets the Packaging Guidelines::Python
[x]: Package contains BR: python2-devel or python3-devel
[x]: Packages MUST NOT have dependencies (either build-time or runtime) on
     packages named with the unversioned python- prefix unless no properly
     versioned package exists. Dependencies on Python packages instead MUST
     use names beginning with python2- or python3- as appropriate.
[x]: Python packages must not contain %{pythonX_site(lib|arch)}/* in %files
[x]: Binary eggs must be removed in %prep

===== SHOULD items =====

Generic:
[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[-]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     python3-pytz-deprecation-shim
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
============================ rpmlint session starts ============================
rpmlint: 2.2.0
configuration:
    /usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/licenses.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 3

python3-pytz-deprecation-shim.noarch: W: no-documentation
NOTE: This would be solved if at least the README was included in the main subpackage, as I always do when there's a separate doc subpackage, or if the docs subpackages were merged. 

python-pytz-deprecation-shim.src: W: invalid-license Apache-2.0
python-pytz-deprecation-shim-doc.noarch: W: invalid-license Apache-2.0
python3-pytz-deprecation-shim.noarch: W: invalid-license Apache-2.0
NOTE: rpmlint needs to learn about the new Licensing Guidelines.

 3 packages and 0 specfiles checked; 0 errors, 4 warnings, 0 badness; has taken 0.9 s 

Source checksums
----------------
https://files.pythonhosted.org/packages/source/p/pytz_deprecation_shim/pytz_deprecation_shim-0.1.0.post0.tar.gz :
  CHECKSUM(SHA256) this package     : af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d
  CHECKSUM(SHA256) upstream package : af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d


Requires
--------
python3-pytz-deprecation-shim (rpmlib, GLIBC filtered):
    python(abi)
    tzdata

python-pytz-deprecation-shim-doc (rpmlib, GLIBC filtered):



Provides
--------
python3-pytz-deprecation-shim:
    python-pytz-deprecation-shim
    python3-pytz-deprecation-shim
    python3.11-pytz-deprecation-shim
    python3.11dist(pytz-deprecation-shim)
    python3dist(pytz-deprecation-shim)

python-pytz-deprecation-shim-doc:
    python-pytz-deprecation-shim-doc



Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23
Command line :/usr/bin/fedora-review -b 2121797
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, Python
Disabled plugins: PHP, Perl, C/C++, Haskell, Ocaml, R, fonts, Java, SugarActivity
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 3 Ben Beasley 2022-10-24 15:35:31 UTC
Thank you for the review!

(In reply to Maxwell G from comment #2)
> - We usually don't package .post releases, but all this does is change some
> metadata[1]. This is fine with me.
> [1]:
> https://github.com/pganssle/pytz-deprecation-shim/compare/0.1.0...0.1.0.post0

Acknowledged.

> - I am not familiar with building sphinx doc PDFs, but I don't see anything
> glaringly wrong.
> 
> ```
> # pyproject-rpm-macros takes care of the LICENSE file in dist-info; we
> manually
> # include the file with the full license text as well
> %license licenses/LICENSE_APACHE
> ``
> 
> - I would also install the main LICENSE to the central directory. It seems
> silly to have one license file in one directory and the other one in a
> completely different directory.

In this unusual case where there are two “license” files but only one is properly handled by setuptools/wheel (and therefore by pyproject-rpm-macros), that seems reasonable. I will make the change you suggested.

> - Why not put README.rst, CHANGELOG.rst (doesn't seem to be packaged at
> all), and the single docs PDF in the main subpackage? I don't think it's
> worth having a doc subpackage for just one extra file.

The omission of CHANGELOG.rst is an error, which I will correct.

The PDF isn’t big on an absolute scale by modern standards, but the thing is that the library package is tiny. The -doc subpackage RPM is seven times as large as the library package, and still takes almost twice as much space uncompressed and installed. I’d rather drop the Sphinx/PDF documentation instead of bloating the library package by such a large factor.

-----

Updated submission:
Spec URL: https://music.fedorapeople.org/20221024/python-pytz-deprecation-shim.spec
SRPM URL: https://music.fedorapeople.org/20221024/python-pytz-deprecation-shim-0.1.0.post0-1.fc36.src.rpm

Comment 4 Maxwell G 2022-10-24 16:24:13 UTC
> The PDF isn’t big on an absolute scale by modern standards, but the thing is that the library package is tiny. The -doc subpackage RPM is seven times as large as the library package, and still takes almost twice as much space uncompressed and installed. I’d rather drop the Sphinx/PDF documentation instead of bloating the library package by such a large factor.

I guess that makes makes sense. Feel free to keep the PDF docs as a second package.


Anyways, this package is approved!

Comment 5 Ben Beasley 2022-10-25 13:34:17 UTC
Thanks again for the review. Repository requested: https://pagure.io/releng/fedora-scm-requests/issue/48410

Comment 6 Tomas Hrcka 2022-10-26 14:03:29 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/python-pytz-deprecation-shim

Comment 8 Fedora Update System 2022-10-31 14:22:17 UTC
FEDORA-2022-e7071fbfe2 has been submitted as an update to Fedora 37. https://bodhi.fedoraproject.org/updates/FEDORA-2022-e7071fbfe2

Comment 9 Fedora Update System 2022-10-31 14:50:26 UTC
FEDORA-2022-ba7f99e392 has been submitted as an update to Fedora 36. https://bodhi.fedoraproject.org/updates/FEDORA-2022-ba7f99e392

Comment 10 Fedora Update System 2022-10-31 18:00:01 UTC
FEDORA-2022-04df837267 has been submitted as an update to Fedora 35. https://bodhi.fedoraproject.org/updates/FEDORA-2022-04df837267

Comment 11 Fedora Update System 2022-10-31 18:11:57 UTC
FEDORA-EPEL-2022-fa36ade2ce has been submitted as an update to Fedora EPEL 9. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2022-fa36ade2ce

Comment 12 Fedora Update System 2022-11-01 14:47:23 UTC
FEDORA-2022-e7071fbfe2 has been pushed to the Fedora 37 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --refresh --advisory=FEDORA-2022-e7071fbfe2 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-e7071fbfe2

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 13 Fedora Update System 2022-11-01 16:05:29 UTC
FEDORA-2022-ba7f99e392 has been pushed to the Fedora 36 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --refresh --advisory=FEDORA-2022-ba7f99e392 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-ba7f99e392

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 14 Fedora Update System 2022-11-01 16:35:18 UTC
FEDORA-EPEL-2022-fa36ade2ce has been pushed to the Fedora EPEL 9 testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2022-fa36ade2ce

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 15 Fedora Update System 2022-11-01 17:21:59 UTC
FEDORA-2022-04df837267 has been pushed to the Fedora 35 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --refresh --advisory=FEDORA-2022-04df837267 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-04df837267

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 16 Fedora Update System 2022-11-09 11:20:28 UTC
FEDORA-2022-ba7f99e392 has been pushed to the Fedora 36 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 17 Fedora Update System 2022-11-09 11:26:48 UTC
FEDORA-2022-04df837267 has been pushed to the Fedora 35 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 18 Fedora Update System 2022-11-09 11:46:50 UTC
FEDORA-EPEL-2022-fa36ade2ce has been pushed to the Fedora EPEL 9 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 19 Fedora Update System 2022-11-10 22:29:03 UTC
FEDORA-2022-e7071fbfe2 has been pushed to the Fedora 37 stable repository.
If problem still persists, please make note of it in this bug report.


Note You need to log in before you can comment on or make changes to this bug.