Bug 2278420 - Review Request: python-jupytext - Save Jupyter notebooks as text documents or scripts
Summary: Review Request: python-jupytext - Save Jupyter notebooks as text documents or...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: wojnilowicz
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 2278423
TreeView+ depends on / blocked
 
Reported: 2024-05-01 20:25 UTC by Jerry James
Modified: 2024-05-25 01:04 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2024-05-25 01:04:19 UTC
Type: ---
Embargoed:
lukasz.wojnilowicz: fedora-review+


Attachments (Terms of Use)
The .spec file difference from Copr build 7397092 to 7427120 (2.53 KB, patch)
2024-05-08 17:53 UTC, Fedora Review Service
no flags Details | Diff

Description Jerry James 2024-05-01 20:25:43 UTC
Spec URL: https://jjames.fedorapeople.org/python-jupytext/python-jupytext.spec
SRPM URL: https://jjames.fedorapeople.org/python-jupytext/python-jupytext-1.16.1-1.fc41.src.rpm
Fedora Account System Username: jjames
Description: Have you always wished Jupyter notebooks were plain text documents?  Wished you could edit them in your favorite IDE?  And get clear and meaningful diffs when doing version control?  Then... Jupytext may well be the tool you're looking for!

Jupytext is a plugin for Jupyter that can save Jupyter notebooks as
- Markdown files (or MyST Markdown files, or R Markdown or Quarto text notebooks)
- Scripts in many languages.

Common use cases for Jupytext are:
- Doing version control on Jupyter Notebooks
- Editing, merging or refactoring notebooks in your favorite text editor
- Applying Q&A checks on notebooks.

Note that this package cannot currently be built for s390x due to bug 2278011.

See https://copr.fedorainfracloud.org/coprs/jjames/Jupyter/ for builds of this package.

I am willing to swap reviews.

Comment 1 Fedora Review Service 2024-05-01 20:41:06 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/7397092
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2278420-python-jupytext/fedora-rawhide-x86_64/07397092-python-jupytext/fedora-review/review.txt

Found issues:

- License file 834.90ed5e1570392532523d.js.LICENSE.txt is not marked as %license
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_text

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 2 wojnilowicz 2024-05-05 17:56:13 UTC
Hi, I saw your request on the Fedora devel list. Would you like to swap for https://bugzilla.redhat.com/show_bug.cgi?id=2267973 ?

Comment 3 Jerry James 2024-05-07 14:52:50 UTC
I would be happy to swap with you.  Thanks!

Comment 4 wojnilowicz 2024-05-07 19:00:53 UTC
Great. Thanks for your fast package review. It may take me a bit longer to do the same, because this is my first review ever. Those are my first remarks:
1) Did you went through the rpmlint list? Following warnings/errors seem reasonable.

python3-jupytext.noarch: W: python-leftover-require python-jupyter-filesystem
ppython3-jupyterlab-jupytext.noarch: E: backup-file-in-package /usr/share/jupyter/labextensions/jupyterlab-jupytext/schemas/jupyterlab-jupytext/package.json.orig

2) Is this already solved?
License file 834.90ed5e1570392532523d.js.LICENSE.txt is not marked as %license

3) python-jupytext-doc is provided and I believe it should be python3-jupytext-doc.

4) Is this needed in Requires? The project uses pyproject.toml.
BuildRequires:  %{py3_dist setuptools}

5) Is this needed in Requires? You don't seem to be calling npm.
BuildRequires:  nodejs-npm

6) There seem to be a couple of unowned directories like e.g. /etc/jupyter and I believe that's not allowed according to 
https://docs.fedoraproject.org/en-US/packaging-guidelines/UnownedDirectories/

7) I still haven't looked into the package, but aren't those bundled libraries that require the FPC exception as in
"Package contains no bundled libraries without FPC exception."? Have you already got this exception?
# base64-js: MIT
# buffer: MIT
# ieee754: BSD-3-Clause

Comment 5 Jerry James 2024-05-08 17:40:03 UTC
(In reply to wojnilowicz from comment #4)
> Great. Thanks for your fast package review. It may take me a bit longer to
> do the same, because this is my first review ever.

Oh my.  You picked a complicated package for your first review. :-)  Note that you should change the bug status from New to Assigned when you take a bug for review.  I'll do that for you.

> 1) Did you went through the rpmlint list? Following warnings/errors seem
> reasonable.
> 
> python3-jupytext.noarch: W: python-leftover-require python-jupyter-filesystem

This one is a false positive.  The python-jupyter-filesystem package is not really a python package.  It is a filesystem package, providing ownership for the directories into which the jupyter files are installed.

> ppython3-jupyterlab-jupytext.noarch: E: backup-file-in-package
> /usr/share/jupyter/labextensions/jupyterlab-jupytext/schemas/jupyterlab-
> jupytext/package.json.orig

I saw there were backup files in %{python3_sitelib} and removed those, but missed this one.  I have updated the spec file to remove it, too.

> 2) Is this already solved?
> License file 834.90ed5e1570392532523d.js.LICENSE.txt is not marked as
> %license

I have updated the package to manage bundled JavaScript licenses as described here: https://docs.fedoraproject.org/en-US/packaging-guidelines/Node.js/#_bundled_licenses.  That won't make this warning go away, but I believe it is correct.

> 3) python-jupytext-doc is provided and I believe it should be
> python3-jupytext-doc.

I disagree.  Back in the days when we had both python 2.x and 3.x, we had packages with names like python2-foo, python3-foo, and python-foo-doc.  The python3- prefix indicates the presence of python 3.x code, and the documentation packages applied to both.  I think we should continue to follow that pattern in case there is a python 4 some day.  There are many packages that follow this pattern already; e.g., python-CommonMark-doc, python-ansicolor-doc, python-cffi-doc, etc.  I count 442 such packages currently in Fedora 40.

> 4) Is this needed in Requires? The project uses pyproject.toml.
> BuildRequires:  %{py3_dist setuptools}
>
> 5) Is this needed in Requires? You don't seem to be calling npm.
> BuildRequires:  nodejs-npm

If either one of these is removed, we get a build failure on every architecture except x86_64.  I don't know why x86_64 doesn't need them.  Maybe it's because I generated the vendor tarball on an x86_64 machine, so whatever step these are needed for was already done for x86_64.

Traceback (most recent call last):
    File "/usr/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
      main()
    File "/usr/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 152, in prepare_metadata_for_build_wheel
      whl_basename = backend.build_wheel(metadata_directory, config_settings)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.12/site-packages/hatchling/build.py", line 58, in build_wheel
      return os.path.basename(next(builder.build(directory=wheel_directory, versions=['standard'])))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib/python3.12/site-packages/hatchling/builders/plugin/interface.py", line 147, in build
      build_hook.initialize(version, build_data)
    File "/usr/lib/python3.12/site-packages/hatch_jupyter_builder/plugin.py", line 94, in initialize
      raise e
    File "/usr/lib/python3.12/site-packages/hatch_jupyter_builder/plugin.py", line 89, in initialize
      build_func(self.target_name, version, **build_kwargs)
    File "/usr/lib/python3.12/site-packages/hatch_jupyter_builder/utils.py", line 115, in npm_builder
      run([*npm_cmd, "install"], cwd=str(abs_path))
    File "/usr/lib/python3.12/site-packages/hatch_jupyter_builder/utils.py", line 231, in run
      return subprocess.check_call(cmd, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/usr/lib64/python3.12/subprocess.py", line 413, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['/usr/bin/jlpm', 'install']' returned non-zero exit status 1.
  error: subprocess-exited-with-error

> 6) There seem to be a couple of unowned directories like e.g. /etc/jupyter
> and I believe that's not allowed according to 
> https://docs.fedoraproject.org/en-US/packaging-guidelines/UnownedDirectories/

Those are the directories owned by python-jupyter-filesystem, which is the reason this package Requires it.  See bug 2264345.

> 7) I still haven't looked into the package, but aren't those bundled
> libraries that require the FPC exception as in
> "Package contains no bundled libraries without FPC exception."? Have you
> already got this exception?
> # base64-js: MIT
> # buffer: MIT
> # ieee754: BSD-3-Clause

Nodejs packages are a special case.  Bundling is expected.  See https://docs.fedoraproject.org/en-US/packaging-guidelines/Node.js/

I have also updated to jupytext 1.16.2, which was just released a few days ago.  There is a new build in the COPR.  New URLs:

Spec URL: https://jjames.fedorapeople.org/python-jupytext/python-jupytext.spec
SRPM URL: https://jjames.fedorapeople.org/python-jupytext/python-jupytext-1.16.2-1.fc41.src.rpm

Comment 6 Fedora Review Service 2024-05-08 17:53:35 UTC
Created attachment 2032210 [details]
The .spec file difference from Copr build 7397092 to 7427120

Comment 7 Fedora Review Service 2024-05-08 17:53:37 UTC
Copr build:
https://copr.fedorainfracloud.org/coprs/build/7427120
(succeeded)

Review template:
https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2278420-python-jupytext/fedora-rawhide-x86_64/07427120-python-jupytext/fedora-review/review.txt

Found issues:

- License file 48.edcac641a8a56d6a94af.js.LICENSE.txt is not marked as %license
  Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_text

Please know that there can be false-positives.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service

If you want to trigger a new Copr build, add a comment containing new
Spec and SRPM URLs or [fedora-review-service-build] string.

Comment 8 wojnilowicz 2024-05-08 18:43:49 UTC
(In reply to Jerry James from comment #5)
> (In reply to wojnilowicz from comment #4)
> > Great. Thanks for your fast package review. It may take me a bit longer to
> > do the same, because this is my first review ever.
> 
> Oh my.  You picked a complicated package for your first review. :-)  Note
> that you should change the bug status from New to Assigned when you take a
> bug for review.  I'll do that for you.

I did not have much choice. You were the only one looking for swaps recently :)
Besides, it's a good learning opportunity for the future. I have like 30 packages to package in a queue.

Thanks for changing the bug status for me.

> > 1) Did you went through the rpmlint list? Following warnings/errors seem
> > reasonable.
> > 
> > python3-jupytext.noarch: W: python-leftover-require python-jupyter-filesystem
> 
> This one is a false positive.  The python-jupyter-filesystem package is not
> really a python package.  It is a filesystem package, providing ownership
> for the directories into which the jupyter files are installed.

Ok. Could you then change the following comment "# Move the configuration files to where we want them" to something mentioning that you move it to match the python-jupyter-filesystem directory?

> > ppython3-jupyterlab-jupytext.noarch: E: backup-file-in-package
> > /usr/share/jupyter/labextensions/jupyterlab-jupytext/schemas/jupyterlab-
> > jupytext/package.json.orig
> 
> I saw there were backup files in %{python3_sitelib} and removed those, but
> missed this one.  I have updated the spec file to remove it, too.

Ok.

> > 2) Is this already solved?
> > License file 834.90ed5e1570392532523d.js.LICENSE.txt is not marked as
> > %license
> 
> I have updated the package to manage bundled JavaScript licenses as
> described here:
> https://docs.fedoraproject.org/en-US/packaging-guidelines/Node.js/
> #_bundled_licenses.  That won't make this warning go away, but I believe it
> is correct.

I would remove it, but who knows if any code needs it.

Anyway I believe the jupytext-%{version}-vendor-licenses.txt doesn't match the "License:" field as in
"[ ]: License field in the package spec file matches the actual license."
The txt file contains among other "BlueOak-1.0.0" and the spec file does not. How should we handle it?

> > 3) python-jupytext-doc is provided and I believe it should be
> > python3-jupytext-doc.
> 
> I disagree.  Back in the days when we had both python 2.x and 3.x, we had
> packages with names like python2-foo, python3-foo, and python-foo-doc.  The
> python3- prefix indicates the presence of python 3.x code, and the
> documentation packages applied to both.  I think we should continue to
> follow that pattern in case there is a python 4 some day.  There are many
> packages that follow this pattern already; e.g., python-CommonMark-doc,
> python-ansicolor-doc, python-cffi-doc, etc.  I count 442 such packages
> currently in Fedora 40.

I agree. I'm on Fedora 39 and "sudo dnf -C se python-*-doc" returns 450 packages while "sudo dnf -C se python3-*-doc" only 38. I think that the chapter at https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_library_naming is not clear enough about this.

> > 4) Is this needed in Requires? The project uses pyproject.toml.
> > BuildRequires:  %{py3_dist setuptools}
> >
> > 5) Is this needed in Requires? You don't seem to be calling npm.
> > BuildRequires:  nodejs-npm
> 
> If either one of these is removed, we get a build failure on every
> architecture except x86_64.  I don't know why x86_64 doesn't need them. 
> Maybe it's because I generated the vendor tarball on an x86_64 machine, so
> whatever step these are needed for was already done for x86_64.

Why don't you use nodejs-packaging-bundler from https://docs.fedoraproject.org/en-US/packaging-guidelines/Node.js/#_bundling_script ?
It produces much smaller dependencies package of 38,6 MB vs yours 102,9 MB with licenses listing included. Additional advantage is that you could drop your custom script. Maybe then a dependency on npm could be dropped as well because the structure of the archive is a bit different as well.

> > 6) There seem to be a couple of unowned directories like e.g. /etc/jupyter
> > and I believe that's not allowed according to 
> > https://docs.fedoraproject.org/en-US/packaging-guidelines/UnownedDirectories/
> 
> Those are the directories owned by python-jupyter-filesystem, which is the
> reason this package Requires it.  See bug 2264345.

Ok.

> > 7) I still haven't looked into the package, but aren't those bundled
> > libraries that require the FPC exception as in
> > "Package contains no bundled libraries without FPC exception."? Have you
> > already got this exception?
> > # base64-js: MIT
> > # buffer: MIT
> > # ieee754: BSD-3-Clause
> 
> Nodejs packages are a special case.  Bundling is expected.  See
> https://docs.fedoraproject.org/en-US/packaging-guidelines/Node.js/

Ok. Shouldn't then jupytext-%{version}-vendor-licenses.txt contain only MIT and BSD-3-Clause?

> I have also updated to jupytext 1.16.2, which was just released a few days
> ago.  There is a new build in the COPR.  New URLs:

Ok.

I found some time to look into your package in more detail, and it looks OK for me.
I have further remarks though:
8) You use pytest and "BuildRequires: python3dist(pytest)" is missing as explained at https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_test_dependencies_2

9) Could you "help2man --no-discard-stderr" on jupytext-config to fix "python3-jupytext.noarch: W: no-manual-page-for-binary jupytext-config" ?

10) Out of curiosity, how did you prepare the breakdown of licenses for "%package doc"?


Thanks for supporting me in this package review.

Comment 9 Jerry James 2024-05-09 20:55:44 UTC
You ask great questions!

(In reply to wojnilowicz from comment #8)
> Ok. Could you then change the following comment "# Move the configuration
> files to where we want them" to something mentioning that you move it to
> match the python-jupyter-filesystem directory?

I have added two comments, one above the Requires and one above the mv command.

> Anyway I believe the jupytext-%{version}-vendor-licenses.txt doesn't match
> the "License:" field as in
> "[ ]: License field in the package spec file matches the actual license."
> The txt file contains among other "BlueOak-1.0.0" and the spec file does
> not. How should we handle it?

The guidelines seem to assume that any node.js module needed as a BuildRequires will also be needed at runtime; i.e., it will be bundled.  That may be true for node.js packages, but this is a Python package that uses some JavaScript at buildtime.  The generated file of license names lists the licenses of the JavaScript installed at build time.  The License field in the spec file describes the licenses of the files that are actually installed, as described in https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_field.

> Why don't you use nodejs-packaging-bundler from
> https://docs.fedoraproject.org/en-US/packaging-guidelines/Node.js/
> #_bundling_script ?
> It produces much smaller dependencies package of 38,6 MB vs yours 102,9 MB
> with licenses listing included. Additional advantage is that you could drop
> your custom script. Maybe then a dependency on npm could be dropped as well
> because the structure of the archive is a bit different as well.

It's smaller because it is missing all of the jupyterlab modules.  I'm afraid using jlpm is necessary to construct a tarball that will work for building.

> Ok. Shouldn't then jupytext-%{version}-vendor-licenses.txt contain only MIT
> and BSD-3-Clause?

It describes the licenses of the modules in the vendor tarball, as described above.  That is not the same as the modules that are actually installed.

> 8) You use pytest and "BuildRequires: python3dist(pytest)" is missing as
> explained at
> https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/
> #_test_dependencies_2

The first part of that section describes using %pyproject_buildrequires in a %generate_buildrequires script.  That is what this package does.

> 9) Could you "help2man --no-discard-stderr" on jupytext-config to fix
> "python3-jupytext.noarch: W: no-manual-page-for-binary jupytext-config" ?

Sure.  I didn't think that was useful, given the nature of jupytext-config, but I've gone ahead and done it.

> 10) Out of curiosity, how did you prepare the breakdown of licenses for
> "%package doc"?

Awhile ago, I did a license analysis of various documentation generators.  The results are here: https://jamezone.org/pleasure/software/Fedora/license/.  Now when I want to analyze a doc package, I match up the files in the package with the list at that URL to generate the list of licenses.

> Thanks for supporting me in this package review.

No problem.  You're doing a great job as a reviewer.

I have uploaded a new spec file and a new srpm, at the same URLs as before.

Comment 10 wojnilowicz 2024-05-11 11:17:59 UTC
(In reply to Jerry James from comment #9)
> You ask great questions!

Thanks.

> (In reply to wojnilowicz from comment #8)
> > Ok. Could you then change the following comment "# Move the configuration
> > files to where we want them" to something mentioning that you move it to
> > match the python-jupyter-filesystem directory?
>
> I have added two comments, one above the Requires and one above the mv
> command.

Thanks.

> > Anyway I believe the jupytext-%{version}-vendor-licenses.txt doesn't match
> > the "License:" field as in
> > "[ ]: License field in the package spec file matches the actual license."
> > The txt file contains among other "BlueOak-1.0.0" and the spec file does
> > not. How should we handle it?
>
> The guidelines seem to assume that any node.js module needed as a
> BuildRequires will also be needed at runtime; i.e., it will be bundled.
> That may be true for node.js packages, but this is a Python package that
> uses some JavaScript at buildtime.  The generated file of license names
> lists the licenses of the JavaScript installed at build time.  The License
> field in the spec file describes the licenses of the files that are actually
> installed, as described in
> https://docs.fedoraproject.org/en-US/packaging-guidelines/
> LicensingGuidelines/#_license_field.

You're right. I read https://docs.fedoraproject.org/en-US/legal/license-field/ once more and it puts requirements only on the license tag in the spec file and not on the bundled-licenses.txt file. Moreover bundled-licenses.txt is only recommended to be included as seen at https://docs.fedoraproject.org/en-US/packaging-guidelines/Node.js/#_bundled_licenses so I guess it's ok to even not include it. Previosly I thought that the license tag and the file have to be synchronized.

> > Why don't you use nodejs-packaging-bundler from
> > https://docs.fedoraproject.org/en-US/packaging-guidelines/Node.js/
> > #_bundling_script ?
> > It produces much smaller dependencies package of 38,6 MB vs yours 102,9 MB
> > with licenses listing included. Additional advantage is that you could drop
> > your custom script. Maybe then a dependency on npm could be dropped as well
> > because the structure of the archive is a bit different as well.
>
> It's smaller because it is missing all of the jupyterlab modules.  I'm
> afraid using jlpm is necessary to construct a tarball that will work for
> building.

Ok, good enough.

> > Ok. Shouldn't then jupytext-%{version}-vendor-licenses.txt contain only MIT
> > and BSD-3-Clause?
>
> It describes the licenses of the modules in the vendor tarball, as described
> above.  That is not the same as the modules that are actually installed.

Clear now.

> > 8) You use pytest and "BuildRequires: python3dist(pytest)" is missing as
> > explained at
> > https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/
> > #_test_dependencies_2
>
> The first part of that section describes using %pyproject_buildrequires in a
> %generate_buildrequires script.  That is what this package does.

Ok. So that's how you do it! I did not notice it :)

> > 9) Could you "help2man --no-discard-stderr" on jupytext-config to fix
> > "python3-jupytext.noarch: W: no-manual-page-for-binary jupytext-config" ?
>
> Sure.  I didn't think that was useful, given the nature of jupytext-config,
> but I've gone ahead and done it.

Thanks.

> > 10) Out of curiosity, how did you prepare the breakdown of licenses for
> > "%package doc"?
>
> Awhile ago, I did a license analysis of various documentation generators.
> The results are here:
> https://jamezone.org/pleasure/software/Fedora/license/.  Now when I want to
> analyze a doc package, I match up the files in the package with the list at
> that URL to generate the list of licenses.

Useful info. Thanks for sharing.

> > Thanks for supporting me in this package review.
>
> No problem. You're doing a great job as a reviewer.

Thanks :) You're doing a great job at introducing me to this stuff.

Comment 11 wojnilowicz 2024-05-11 11:19:33 UTC
I just wanted to approve the package because to me it looks great, but found 
two checks that prevented me from doing so.

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

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


Issues:
=======


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

Generic:
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
     Note: Using prebuilt packages
[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", "MIT License", "*No copyright* MIT
     License". 1877 files have unknown license. Detailed output of
     licensecheck in /var/lib/copr-rpmbuild/results/python-
     jupytext/licensecheck.txt
[!]: License file installed when any subpackage combination is installed.
     Note: License file installed only when python-jupytext-doc is installed.
[x]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/share/licenses, /usr/share/man, /usr,
     /usr/lib/python3.12, /usr/share/man/man1, /usr/share,
     /usr/lib/python3.12/site-packages, /usr/share/jupyter, /usr/lib,
     /usr/share/jupyter/labextensions, /usr/share/doc,
     /etc/jupyter/jupyter_notebook_config.d,
     /etc/jupyter/jupyter_server_config.d, /usr/bin, /etc, /etc/jupyter
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/share/doc,
     /usr/share/licenses, /usr/share/man, /usr/lib/python3.12/site-
     packages, /usr, /usr/lib/python3.12,
     /etc/jupyter/jupyter_notebook_config.d, /usr/share,
     /etc/jupyter/jupyter_server_config.d, /usr/share/man/man1,
     /usr/share/jupyter, /usr/lib, /usr/share/jupyter/labextensions, /etc,
     /etc/jupyter, /usr/bin
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf %{buildroot} present but not required
[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.
[x]: 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.
[-]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: The License field must be a valid SPDX expression.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: %config files are marked noreplace or the reason is justified.
[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]: No %config files under /usr.
[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 7961 bytes in 1 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[-]: Binary eggs must be removed in %prep
     Note: Cannot find any build in BUILD directory (--prebuilt option?)
[-]: Python eggs must not download any dependencies during the build
     process.
[-]: 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

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

Generic:
[!]: Reviewer should test that the package builds in mock.
[-]: 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-jupytext , python3-jupyterlab-jupytext
     Note: "Requires: jupyterlab" is not versioned and at
     https://github.com/mwouts/jupytext/blob/main/jupyterlab/packages/jupyterlab-jupytext-extension/README.md#installation
     it says that for jupyterlab < 4.0 you need an older version of this extension.
     Could you add versioned dependency so that "rpm -q --requires python3-jupyterlab-jupytext" 
     will return jupyterlab >= 4.0 (eventually >=4.0 and < 5.0) instead of just jupyterlab?
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[-]: 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]: 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: No rpmlint messages.


Rpmlint
-------
Checking: python3-jupytext-1.16.2-1.fc41.noarch.rpm
          python3-jupyterlab-jupytext-1.16.2-1.fc41.noarch.rpm
          python-jupytext-doc-1.16.2-1.fc41.noarch.rpm
          python-jupytext-1.16.2-1.fc41.src.rpm
============================ rpmlint session starts ============================
rpmlint: 2.5.0
configuration:
    /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
rpmlintrc: [PosixPath('/tmp/tmpgsd_s48n')]
checks: 32, packages: 4

python3-jupytext.noarch: W: python-leftover-require python-jupyter-filesystem
python3-jupytext.noarch: W: no-manual-page-for-binary jupytext-config
python3-jupyterlab-jupytext.noarch: W: no-documentation
python-jupytext.spec: W: invalid-url Source1: jupytext-1.16.2-vendor.tar.xz
python3-jupytext.noarch: W: devel-file-in-non-devel-package /usr/bin/jupytext-config
 4 packages and 0 specfiles checked; 0 errors, 5 warnings, 21 filtered, 0 badness; has taken 1.4 s 




Rpmlint (installed packages)
----------------------------
(none): E: there is no installed rpm "python3-jupytext".
(none): E: there is no installed rpm "python3-jupyterlab-jupytext".
(none): E: there is no installed rpm "python-jupytext-doc".
There are no files to process nor additional arguments.
Nothing to do, aborting.
============================ rpmlint session starts ============================
rpmlint: 2.5.0
configuration:
    /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 3

 0 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 filtered, 0 badness; has taken 0.0 s 



Source checksums
----------------
https://github.com/mwouts/jupytext/archive/v1.16.2/jupytext-1.16.2.tar.gz :
  CHECKSUM(SHA256) this package     : 68a09dc8393bd5ceff995cf60377d53e003f0035ddf2f6bc2e23fa46e3575380
  CHECKSUM(SHA256) upstream package : 68a09dc8393bd5ceff995cf60377d53e003f0035ddf2f6bc2e23fa46e3575380


Requires
--------
python3-jupytext (rpmlib, GLIBC filtered):
    /usr/bin/python3
    config(python3-jupytext)
    python(abi)
    python-jupyter-filesystem
    python3.12dist(markdown-it-py)
    python3.12dist(mdit-py-plugins)
    python3.12dist(nbformat)
    python3.12dist(packaging)
    python3.12dist(pyyaml)

python3-jupyterlab-jupytext (rpmlib, GLIBC filtered):
    jupyterlab
    python(abi)
    python3-jupytext

python-jupytext-doc (rpmlib, GLIBC filtered):



Provides
--------
python3-jupytext:
    config(python3-jupytext)
    python-jupytext
    python3-jupytext
    python3.12-jupytext
    python3.12dist(jupytext)
    python3dist(jupytext)

python3-jupyterlab-jupytext:
    bundled(npm(base64-js))
    bundled(npm(buffer))
    bundled(npm(ieee754))
    bundled(npm(jupyterlab-rise))
    python-jupyterlab-jupytext
    python3-jupyterlab-jupytext
    python3.12-jupyterlab-jupytext

python-jupytext-doc:
    python-jupytext-doc



Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24
Command line :/bin/fedora-review --no-colors --prebuilt --rpm-spec --name python-jupytext --mock-config /var/lib/copr-rpmbuild/results/configs/child.cfg
Buildroot used: fedora-rawhide-x86_64
Active plugins: Shell-api, Generic, Python
Disabled plugins: SugarActivity, Haskell, Java, PHP, R, Ocaml, C/C++, fonts, Perl
Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH

Comment 12 wojnilowicz 2024-05-11 12:39:22 UTC
I just wanted to approve the package because to me it looks great, but found 
one check (the other one is solved after reading https://docs.fedoraproject.org/en-US/packaging-guidelines/#_explicit_requires) that prevented me from doing so.

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

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


Issues:
=======


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

Generic:
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
     Note: Using prebuilt packages
[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", "MIT License", "*No copyright* MIT
     License". 1877 files have unknown license. Detailed output of
     licensecheck in /var/lib/copr-rpmbuild/results/python-
     jupytext/licensecheck.txt
[!]: License file installed when any subpackage combination is installed.
     Note: License file installed only when python-jupytext-doc is installed.
[x]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/share/licenses, /usr/share/man, /usr,
     /usr/lib/python3.12, /usr/share/man/man1, /usr/share,
     /usr/lib/python3.12/site-packages, /usr/share/jupyter, /usr/lib,
     /usr/share/jupyter/labextensions, /usr/share/doc,
     /etc/jupyter/jupyter_notebook_config.d,
     /etc/jupyter/jupyter_server_config.d, /usr/bin, /etc, /etc/jupyter
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/share/doc,
     /usr/share/licenses, /usr/share/man, /usr/lib/python3.12/site-
     packages, /usr, /usr/lib/python3.12,
     /etc/jupyter/jupyter_notebook_config.d, /usr/share,
     /etc/jupyter/jupyter_server_config.d, /usr/share/man/man1,
     /usr/share/jupyter, /usr/lib, /usr/share/jupyter/labextensions, /etc,
     /etc/jupyter, /usr/bin
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf %{buildroot} present but not required
[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.
[x]: 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.
[-]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: The License field must be a valid SPDX expression.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: %config files are marked noreplace or the reason is justified.
[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]: No %config files under /usr.
[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 7961 bytes in 1 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[-]: Binary eggs must be removed in %prep
     Note: Cannot find any build in BUILD directory (--prebuilt option?)
[-]: Python eggs must not download any dependencies during the build
     process.
[-]: 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

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

Generic:
[x]: Reviewer should test that the package builds in mock.
[-]: 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).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     python3-jupytext , python3-jupyterlab-jupytext
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[-]: 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]: 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: No rpmlint messages.


Rpmlint
-------
Checking: python3-jupytext-1.16.2-1.fc41.noarch.rpm
          python3-jupyterlab-jupytext-1.16.2-1.fc41.noarch.rpm
          python-jupytext-doc-1.16.2-1.fc41.noarch.rpm
          python-jupytext-1.16.2-1.fc41.src.rpm
============================ rpmlint session starts ============================
rpmlint: 2.5.0
configuration:
    /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
rpmlintrc: [PosixPath('/tmp/tmpgsd_s48n')]
checks: 32, packages: 4

python3-jupytext.noarch: W: python-leftover-require python-jupyter-filesystem
python3-jupytext.noarch: W: no-manual-page-for-binary jupytext-config
python3-jupyterlab-jupytext.noarch: W: no-documentation
python-jupytext.spec: W: invalid-url Source1: jupytext-1.16.2-vendor.tar.xz
python3-jupytext.noarch: W: devel-file-in-non-devel-package /usr/bin/jupytext-config
 4 packages and 0 specfiles checked; 0 errors, 5 warnings, 21 filtered, 0 badness; has taken 1.4 s 




Rpmlint (installed packages)
----------------------------
(none): E: there is no installed rpm "python3-jupytext".
(none): E: there is no installed rpm "python3-jupyterlab-jupytext".
(none): E: there is no installed rpm "python-jupytext-doc".
There are no files to process nor additional arguments.
Nothing to do, aborting.
============================ rpmlint session starts ============================
rpmlint: 2.5.0
configuration:
    /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 3

 0 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 filtered, 0 badness; has taken 0.0 s 



Source checksums
----------------
https://github.com/mwouts/jupytext/archive/v1.16.2/jupytext-1.16.2.tar.gz :
  CHECKSUM(SHA256) this package     : 68a09dc8393bd5ceff995cf60377d53e003f0035ddf2f6bc2e23fa46e3575380
  CHECKSUM(SHA256) upstream package : 68a09dc8393bd5ceff995cf60377d53e003f0035ddf2f6bc2e23fa46e3575380


Requires
--------
python3-jupytext (rpmlib, GLIBC filtered):
    /usr/bin/python3
    config(python3-jupytext)
    python(abi)
    python-jupyter-filesystem
    python3.12dist(markdown-it-py)
    python3.12dist(mdit-py-plugins)
    python3.12dist(nbformat)
    python3.12dist(packaging)
    python3.12dist(pyyaml)

python3-jupyterlab-jupytext (rpmlib, GLIBC filtered):
    jupyterlab
    python(abi)
    python3-jupytext

python-jupytext-doc (rpmlib, GLIBC filtered):



Provides
--------
python3-jupytext:
    config(python3-jupytext)
    python-jupytext
    python3-jupytext
    python3.12-jupytext
    python3.12dist(jupytext)
    python3dist(jupytext)

python3-jupyterlab-jupytext:
    bundled(npm(base64-js))
    bundled(npm(buffer))
    bundled(npm(ieee754))
    bundled(npm(jupyterlab-rise))
    python-jupyterlab-jupytext
    python3-jupyterlab-jupytext
    python3.12-jupyterlab-jupytext

python-jupytext-doc:
    python-jupytext-doc



Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24
Command line :/bin/fedora-review --no-colors --prebuilt --rpm-spec --name python-jupytext --mock-config /var/lib/copr-rpmbuild/results/configs/child.cfg
Buildroot used: fedora-rawhide-x86_64
Active plugins: Shell-api, Generic, Python
Disabled plugins: SugarActivity, Haskell, Java, PHP, R, Ocaml, C/C++, fonts, Perl
Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH

Comment 13 Jerry James 2024-05-13 21:22:41 UTC
(In reply to wojnilowicz from comment #11)
> [!]: License file installed when any subpackage combination is installed.
>      Note: License file installed only when python-jupytext-doc is installed.

Actually, that's not true.  Some python package builders stash the license file in the python distinfo.  For this package, you can pass the -L flag to rpm to see that the license file is actually in there:

$ rpm -qLp python3-jupytext-1.16.2-1.fc41.noarch.rpm
warning: python3-jupytext-1.16.2-1.fc41.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 3a811e59: NOKEY
/usr/lib/python3.12/site-packages/jupytext-1.16.2.dist-info/licenses/LICENSE

> [!]: Fully versioned dependency in subpackages if applicable.
>      Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
>      python3-jupytext , python3-jupyterlab-jupytext
>      Note: "Requires: jupyterlab" is not versioned and at

This is correct, since there is no binary RPM named python-jupytext.  Note that python3-jupyterlab-jupytext does have a versioned Requires on the python3-jupytext package, however.

> https://github.com/mwouts/jupytext/blob/main/jupyterlab/packages/jupyterlab-
> jupytext-extension/README.md#installation
>      it says that for jupyterlab < 4.0 you need an older version of this
> extension.
>      Could you add versioned dependency so that "rpm -q --requires
> python3-jupyterlab-jupytext" 
>      will return jupyterlab >= 4.0 (eventually >=4.0 and < 5.0) instead of
> just jupyterlab?

Good catch.  I have added that.

The URLs are the same as before.

Comment 14 wojnilowicz 2024-05-14 15:29:44 UTC
(In reply to Jerry James from comment #13)
> (In reply to wojnilowicz from comment #11)
> > [!]: License file installed when any subpackage combination is installed.
> >      Note: License file installed only when python-jupytext-doc is installed.
> 
> Actually, that's not true.  Some python package builders stash the license
> file in the python distinfo.  For this package, you can pass the -L flag to
> rpm to see that the license file is actually in there:
> 
> $ rpm -qLp python3-jupytext-1.16.2-1.fc41.noarch.rpm
> warning: python3-jupytext-1.16.2-1.fc41.noarch.rpm: Header V4 RSA/SHA256
> Signature, key ID 3a811e59: NOKEY
> /usr/lib/python3.12/site-packages/jupytext-1.16.2.dist-info/licenses/LICENSE

Sorry, you're right. I missed the part at https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_build_macros
It recommends though that %pyproject_save_files be invoked with the "-l" option in order to not loose the license in the future.

Comment 15 wojnilowicz 2024-05-14 15:30:48 UTC
This package is APPROVED. Thanks for your patience.

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

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


Issues:
=======


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

Generic:
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
     Note: Using prebuilt packages
[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", "MIT License", "*No copyright* MIT
     License". 1877 files have unknown license. Detailed output of
     licensecheck in /var/lib/copr-rpmbuild/results/python-
     jupytext/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/share/licenses, /usr/share/man, /usr,
     /usr/lib/python3.12, /usr/share/man/man1, /usr/share,
     /usr/lib/python3.12/site-packages, /usr/share/jupyter, /usr/lib,
     /usr/share/jupyter/labextensions, /usr/share/doc,
     /etc/jupyter/jupyter_notebook_config.d,
     /etc/jupyter/jupyter_server_config.d, /usr/bin, /etc, /etc/jupyter
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/share/doc,
     /usr/share/licenses, /usr/share/man, /usr/lib/python3.12/site-
     packages, /usr, /usr/lib/python3.12,
     /etc/jupyter/jupyter_notebook_config.d, /usr/share,
     /etc/jupyter/jupyter_server_config.d, /usr/share/man/man1,
     /usr/share/jupyter, /usr/lib, /usr/share/jupyter/labextensions, /etc,
     /etc/jupyter, /usr/bin
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf %{buildroot} present but not required
[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.
[x]: 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.
[-]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: The License field must be a valid SPDX expression.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: %config files are marked noreplace or the reason is justified.
[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]: No %config files under /usr.
[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 7961 bytes in 1 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Python:
[-]: Binary eggs must be removed in %prep
     Note: Cannot find any build in BUILD directory (--prebuilt option?)
[-]: Python eggs must not download any dependencies during the build
     process.
[-]: 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

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

Generic:
[x]: Reviewer should test that the package builds in mock.
[-]: 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).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     python3-jupytext , python3-jupyterlab-jupytext
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[-]: 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]: 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: No rpmlint messages.


Rpmlint
-------
Checking: python3-jupytext-1.16.2-1.fc41.noarch.rpm
          python3-jupyterlab-jupytext-1.16.2-1.fc41.noarch.rpm
          python-jupytext-doc-1.16.2-1.fc41.noarch.rpm
          python-jupytext-1.16.2-1.fc41.src.rpm
============================ rpmlint session starts ============================
rpmlint: 2.5.0
configuration:
    /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
rpmlintrc: [PosixPath('/tmp/tmpgsd_s48n')]
checks: 32, packages: 4

python3-jupytext.noarch: W: python-leftover-require python-jupyter-filesystem
python3-jupytext.noarch: W: no-manual-page-for-binary jupytext-config
python3-jupyterlab-jupytext.noarch: W: no-documentation
python-jupytext.spec: W: invalid-url Source1: jupytext-1.16.2-vendor.tar.xz
python3-jupytext.noarch: W: devel-file-in-non-devel-package /usr/bin/jupytext-config
 4 packages and 0 specfiles checked; 0 errors, 5 warnings, 21 filtered, 0 badness; has taken 1.4 s 




Rpmlint (installed packages)
----------------------------
(none): E: there is no installed rpm "python3-jupytext".
(none): E: there is no installed rpm "python3-jupyterlab-jupytext".
(none): E: there is no installed rpm "python-jupytext-doc".
There are no files to process nor additional arguments.
Nothing to do, aborting.
============================ rpmlint session starts ============================
rpmlint: 2.5.0
configuration:
    /usr/lib/python3.12/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 3

 0 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 filtered, 0 badness; has taken 0.0 s 



Source checksums
----------------
https://github.com/mwouts/jupytext/archive/v1.16.2/jupytext-1.16.2.tar.gz :
  CHECKSUM(SHA256) this package     : 68a09dc8393bd5ceff995cf60377d53e003f0035ddf2f6bc2e23fa46e3575380
  CHECKSUM(SHA256) upstream package : 68a09dc8393bd5ceff995cf60377d53e003f0035ddf2f6bc2e23fa46e3575380


Requires
--------
python3-jupytext (rpmlib, GLIBC filtered):
    /usr/bin/python3
    config(python3-jupytext)
    python(abi)
    python-jupyter-filesystem
    python3.12dist(markdown-it-py)
    python3.12dist(mdit-py-plugins)
    python3.12dist(nbformat)
    python3.12dist(packaging)
    python3.12dist(pyyaml)

python3-jupyterlab-jupytext (rpmlib, GLIBC filtered):
    jupyterlab
    python(abi)
    python3-jupytext

python-jupytext-doc (rpmlib, GLIBC filtered):



Provides
--------
python3-jupytext:
    config(python3-jupytext)
    python-jupytext
    python3-jupytext
    python3.12-jupytext
    python3.12dist(jupytext)
    python3dist(jupytext)

python3-jupyterlab-jupytext:
    bundled(npm(base64-js))
    bundled(npm(buffer))
    bundled(npm(ieee754))
    bundled(npm(jupyterlab-rise))
    python-jupyterlab-jupytext
    python3-jupyterlab-jupytext
    python3.12-jupyterlab-jupytext

python-jupytext-doc:
    python-jupytext-doc



Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24
Command line :/bin/fedora-review --no-colors --prebuilt --rpm-spec --name python-jupytext --mock-config /var/lib/copr-rpmbuild/results/configs/child.cfg
Buildroot used: fedora-rawhide-x86_64
Active plugins: Shell-api, Generic, Python
Disabled plugins: SugarActivity, Haskell, Java, PHP, R, Ocaml, C/C++, fonts, Perl
Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH

Comment 16 Jerry James 2024-05-15 21:45:33 UTC
(In reply to wojnilowicz from comment #14)
> Sorry, you're right. I missed the part at
> https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/
> #_build_macros
> It recommends though that %pyproject_save_files be invoked with the "-l"
> option in order to not loose the license in the future.

Thanks for pointing that out.  I had overlooked that bit.  I'll update my other python packages accordingly.

I appreciate you sticking with this review!

Comment 17 Fedora Admin user for bugzilla script actions 2024-05-15 21:49:18 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/python-jupytext

Comment 18 Fedora Update System 2024-05-16 01:47:31 UTC
FEDORA-2024-852adeec38 (python-jupytext-1.16.2-1.fc40) has been submitted as an update to Fedora 40.
https://bodhi.fedoraproject.org/updates/FEDORA-2024-852adeec38

Comment 19 Fedora Update System 2024-05-17 02:09:06 UTC
FEDORA-2024-852adeec38 has been pushed to the Fedora 40 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-852adeec38 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2024-852adeec38

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

Comment 20 Fedora Update System 2024-05-25 01:04:19 UTC
FEDORA-2024-852adeec38 (python-jupytext-1.16.2-1.fc40) has been pushed to the Fedora 40 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.