Bug 1219288 - Review Request: python-marshmallow - Python library for converting complex datatypes to and from primitive types
Summary: Review Request: python-marshmallow - Python library for converting complex da...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Julien Enselme
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1260575
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-05-07 00:15 UTC by Dan Callaghan
Modified: 2015-11-01 02:49 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-11-01 02:49:01 UTC
Type: ---
Embargoed:
jujens: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Dan Callaghan 2015-05-07 00:15:23 UTC
Spec URL: https://fedorapeople.org/~dcallagh/python-marshmallow/python-marshmallow.spec
SRPM URL: https://fedorapeople.org/~dcallagh/python-marshmallow/python-marshmallow-1.2.6-1.fc23.src.rpm
Description: Marshmallow is a framework-agnostic library for converting complex datatypes, 
such as objects, to and from primitive Python datatypes.

Marshmallow schemas can be used to:
* Validate input data.
* Deserialize input data to app-level objects.
* Serialize app-level objects to primitive Python types. The serialized objects 
  can then be rendered to standard formats such as JSON for use in an HTTP API.
Fedora Account System Username: dcallagh

Comment 1 Julien Enselme 2015-06-20 19:17:56 UTC
Package Review
==============

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


Issues:
=======
- 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.
  Note: License file LICENSE is marked as %doc instead of %license
  See:
  http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text


===== 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.
[!]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "MIT/X11 (BSD like)", "Unknown or generated". 58 files have
     unknown license. Detailed output of licensecheck in /tmp/1219288
     -python-marshmallow/licensecheck.txt
[X]: License file installed when any subpackage combination is installed.
[!]: 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.
[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.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 61440 bytes in 8 files.
[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]: 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]: All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[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 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]: 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]: 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).
[X]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     python3-marshmallow
[X]: Package functions as described.
[!]: Latest version is packaged.
[X]: Package does not include license text files separate from upstream.
[ ]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[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]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[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]: 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
-------
Checking: python-marshmallow-1.2.6-1.fc23.noarch.rpm
          python3-marshmallow-1.2.6-1.fc23.noarch.rpm
          python-marshmallow-1.2.6-1.fc23.src.rpm
python-marshmallow.noarch: W: spelling-error Summary(en_US) datatypes -> datatype, data types, data-types
python-marshmallow.noarch: W: spelling-error %description -l en_US datatypes -> datatype, data types, data-types
python-marshmallow.noarch: W: spelling-error %description -l en_US schemas -> schema, sachems, schemes
python3-marshmallow.noarch: W: spelling-error Summary(en_US) datatypes -> datatype, data types, data-types
python3-marshmallow.noarch: W: spelling-error %description -l en_US datatypes -> datatype, data types, data-types
python3-marshmallow.noarch: W: spelling-error %description -l en_US schemas -> schema, sachems, schemes
python-marshmallow.src: W: spelling-error Summary(en_US) datatypes -> datatype, data types, data-types
python-marshmallow.src: W: spelling-error %description -l en_US datatypes -> datatype, data types, data-types
python-marshmallow.src: W: spelling-error %description -l en_US schemas -> schema, sachems, schemes
3 packages and 0 specfiles checked; 0 errors, 9 warnings.




Rpmlint (installed packages)
----------------------------
python-marshmallow.noarch: W: spelling-error Summary(en_US) datatypes -> datatype, data types, data-types
python-marshmallow.noarch: W: spelling-error %description -l en_US datatypes -> datatype, data types, data-types
python-marshmallow.noarch: W: spelling-error %description -l en_US schemas -> schema, sachems, schemes
python3-marshmallow.noarch: W: spelling-error Summary(en_US) datatypes -> datatype, data types, data-types
python3-marshmallow.noarch: W: spelling-error %description -l en_US datatypes -> datatype, data types, data-types
python3-marshmallow.noarch: W: spelling-error %description -l en_US schemas -> schema, sachems, schemes
2 packages and 0 specfiles checked; 0 errors, 6 warnings.



Requires
--------
python-marshmallow (rpmlib, GLIBC filtered):
    python(abi)
    python-dateutil
    python3-dateutil

python3-marshmallow (rpmlib, GLIBC filtered):
    python(abi)



Provides
--------
python-marshmallow:
    python-marshmallow

python3-marshmallow:
    python3-marshmallow



Source checksums
----------------
https://github.com/marshmallow-code/marshmallow/archive/c786c58242028c6742ded29bf7f4ab9c3319818d/marshmallow-c786c58242028c6742ded29bf7f4ab9c3319818d.tar.gz :
  CHECKSUM(SHA256) this package     : fe4306e085823a63cf5d7fc37d53ff0364aab9eaed48855dc108e0415bef1a12
  CHECKSUM(SHA256) upstream package : fe4306e085823a63cf5d7fc37d53ff0364aab9eaed48855dc108e0415bef1a12


Generated by fedora-review 0.6.0 (3c5c9d7) last change: 2015-05-20
Command line :/usr/bin/fedora-review -b 1219288 -m fedora-rawhide-x86_64
Buildroot used: fedora-rawhide-x86_64
Active plugins: Python, Generic, Shell-api
Disabled plugins: Java, C/C++, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6


- Use %license for license: https://fedoraproject.org/wiki/Packaging:LicensingGuidelines?rd=Packaging/LicensingGuidelines#License_Text
- License is MIT not BSD
- Two libs are bundled: ordereddict and orderedset. ordereddict is there only for compatibility with python 2.6. I think you can safely remove it and path the files to use OrderedDict from collections. You can also package this library. orderedset is not present at this time in the repository of fedora.
- Package lastest version (2.0.0b3)

Comment 2 Julien Enselme 2015-07-20 18:11:39 UTC
Any progress on addressing the problems I pointed out?

Comment 3 Miroslav Suchý 2015-09-03 14:59:29 UTC
Dan, are you willing to continue with this review? I am interrested in that package too and I am willing to continue instead of you if you do not have time.

Comment 4 Dan Callaghan 2015-09-07 02:59:07 UTC
Sorry for my silence on this bz. Currently I am not using marshmallow for anything, and I have been short on time to finish this off. So if you would like to take over Miroslav, please feel free.

You can put me down as a co-maintainer if you'd like, I am happy to help out.

Comment 5 Miroslav Suchý 2015-09-07 10:43:51 UTC
SRPM: http://miroslav.suchy.cz/fedora/python-marshmallow-2.0.0b5-2.fc22.src.rpm
SPEC: http://miroslav.suchy.cz/fedora/python-marshmallow.spec

I unbundled those two modules (the second one is under review in bug 1260575).

There is two false-positives from fedora-review
1) about license in doc section, which is just nearly empty file
2) about macros in comments in %files section - this is something new to me and discussed at http://lists.rpm.org/pipermail/rpm-list/2015-September/001766.html right now.

Comment 6 Miroslav Suchý 2015-09-07 10:58:17 UTC
SRPM: http://miroslav.suchy.cz/fedora/python-marshmallow-2.0.0b5-2.fc22.src.rpm
SPEC: http://miroslav.suchy.cz/fedora/python-marshmallow.spec

I uncommented that one line in %files which cause rpmbuild to emit warning about files listed twice, but that is rpm bug 728959

Comment 8 Julien Enselme 2015-09-10 20:46:07 UTC
- In the python3 section of BR, you wrote 'BuildRequires:  python-ordered-set' but I think you meant 'BuildRequires:  python3-ordered-set' (I cannot launch tests for python3 because this dependency is missing).
- You can simplify:

%if %{with python3}
%package -n python3-%{upstream_name}
Summary:        Python 3 library for converting complex datatypes to and from primitive types
%if %{with python3}
Requires:       python3-dateutil
Requires:       python3-ordered-set
%endif

into (you already are in a python3 only section, no need to specify it again)

%if %{with python3}
%package -n python3-%{upstream_name}
Summary:        Python 3 library for converting complex datatypes to and from primitive types
Requires:       python3-dateutil
Requires:       python3-ordered-set


- The use of %py3dir is deprecated. Python2 and python3 packages should be built from the same folder. The build and installation process should respectively rely on %py2_build/%py3build and %py2_install/%py3_install. See https://fedoraproject.org/wiki/Packaging:Python#Example_common_spec_file for an example.

- I think it would be clearer to remove ordereddict and orderedset in %prep rather than in %install after the package is installed

- Maybe move part of the doc (%{_docdir}/python-%{upstream_name}) into a -doc subpackage which could be used for both python2 and python3.

- You are packaging a pre-release (the latest stable release would be fine too), so you release tag is incorrect. See: https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages

Comment 9 Miroslav Suchý 2015-09-11 09:01:26 UTC
> BuildRequires:  python-ordered-set
Fixed. Nice catch. Thanks.

> You can simplify
Simplified.

> The use of %py3dir is deprecated.
Fixed.

> it would be clearer to remove ordereddict and orderedset in %prep
Moved.

> Maybe move part of the doc...
-doc subpackages created.

> - You are packaging a pre-release (the latest stable release would be fine too), so you release tag is incorrect.
??? Not sure I follow here. The packaged version is the latest stable, i.e. 2.0.0b5. Only difference is that I do not use tar.gz from PyPi (because it does not include tests and I use github tar ball. But I use the commit from which the release was made. So it is not pre-release tar file.

Updated:
SRPM: http://miroslav.suchy.cz/fedora/python-marshmallow-2.0.0b5-4.fc22.src.rpm
SPEC: http://miroslav.suchy.cz/fedora/python-marshmallow.spec

Comment 10 Julien Enselme 2015-09-11 09:22:02 UTC
- I see you created two doc packages, one for python2 and one for python3. I don't know if it is necessary, maybe python-marshmallow-doc is enough. I let you judge that.

> The packaged version is the latest stable, i.e. 2.0.0b5

From what I understand from the README ("Get it now" section, `pip install -U marshmallow --pre`) and what I can g, the "b" means beta. Hence it is a pre-release package that should follow the release version number as describe in https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages

However, since you are using git and have a git commit, you should also use that. So here, the release number should be:
0.4.gita8b3385

Once the software is out of beta (so version 2.0.0), release number should be:
1.gita8b3385

Furthermore, starting from now, the version should be 2.0.0.

Is it clearer this time?

Comment 11 Miroslav Suchý 2015-09-11 09:53:31 UTC
Both
  https://pypi.python.org/pypi/marshmallow
  http://marshmallow.readthedocs.org/en/latest/
state 2.0.0b5 as release.
I do not know what "b" stands for. For me - it is released, then it is release number. I won't judge the upstream for the numbering.

However if this is blocker for you I can put the short git hash in Release number.

Comment 12 Julien Enselme 2015-09-11 11:10:09 UTC
> state 2.0.0b5 as release.

I don't think they were design to state anything else. If I look at the milestone on github: https://github.com/marshmallow-code/marshmallow/milestones I think this confirms that the b stands for beta.

> However if this is blocker for you I can put the short git hash in Release number.

From what I understand from the guidelines, no matter what "b" means, we must treat it as a pre-release. I am not doing it for the sake of arguing, I just try to do the thing right. I may, however, misunderstand the guidelines, in that case, I will be happy to approve this package if you prove me wrong.

Comment 13 Miroslav Suchý 2015-09-11 13:24:11 UTC
(In reply to Julien Enselme from comment #12)
> I don't think they were design to state anything else. If I look at the
> milestone on github:
> https://github.com/marshmallow-code/marshmallow/milestones I think this
> confirms that the b stands for beta.

This is fair argument.

Updated:
SRPM: http://miroslav.suchy.cz/fedora/python-marshmallow-2.0.0-0.5.a8b3385.fc22.src.rpm
SPEC: http://miroslav.suchy.cz/fedora/python-marshmallow.spec

Comment 14 Julien Enselme 2015-09-11 13:43:35 UTC
Almost there: you cannot just put the short commit, you must specify the software (here git): 2.0.0-0.5.gita8b3385

Caught by fedora-review:
[ ]: Package must own all directories that it creates.
     Note: Directories without known owners:
     /usr/share/doc/python3-marshmallow, /usr/share/doc/python-marshmallow

I think it comes from the fact that %{_docdir} is not defined. It could be %{_datadir}/doc though.

Comment 16 Julien Enselme 2015-09-11 20:51:18 UTC
Looks good. Beware, in the changelog, you still have 2.0.0-0.5.a8b3385 instead of 2.0.0-0.5.gita8b3385

Approved.

Comment 17 Miroslav Suchý 2015-09-12 06:18:00 UTC
Thank you for the review.

Comment 18 Miroslav Suchý 2015-09-12 06:21:35 UTC
New Package SCM Request
=======================
Package Name: python-marshmallow
Short Description: Python library for converting complex datatypes to and from primitive types
Upstream URL: http://marshmallow.readthedocs.org/
Owners: msuchy
Branches: f21 f22 f23
InitialCC:

Comment 19 Gwyn Ciesla 2015-09-12 14:39:17 UTC
Git done (by process-git-requests).

Comment 20 Fedora Update System 2015-09-21 09:03:43 UTC
python-marshmallow-2.0.0-0.6.gita8b3385.fc23 has been submitted as an update to Fedora 23. https://bodhi.fedoraproject.org/updates/FEDORA-2015-16301

Comment 21 Fedora Update System 2015-09-21 18:51:47 UTC
python-marshmallow-2.0.0-0.6.gita8b3385.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report.
If you want to test the update, you can install it with
$ su -c 'dnf --enablerepo=updates-testing update python-marshmallow'
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2015-16301

Comment 22 Fedora Update System 2015-11-01 02:48:59 UTC
python-marshmallow-2.0.0-0.6.gita8b3385.fc23 has been pushed to the Fedora 23 stable repository. If problems still persist, 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.