Hello community,
here is the log from the commit of package python-py2pack for openSUSE:Factory checked in at 2017-12-23 12:20:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-py2pack (Old)
and /work/SRC/openSUSE:Factory/.python-py2pack.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-py2pack"
Sat Dec 23 12:20:11 2017 rev:43 rq:559276 version:0.8.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-py2pack/python-py2pack.changes 2017-08-12 20:27:34.376913648 +0200
+++ /work/SRC/openSUSE:Factory/.python-py2pack.new/python-py2pack.changes 2017-12-23 12:20:15.149342029 +0100
@@ -1,0 +2,11 @@
+Fri Dec 22 09:48:29 UTC 2017 - tbechtold@suse.com
+
+- update to 0.8.2:
+ * pep8 fixes
+ * opensuse template updates
+ * Add source\_url to Args in tests and use None as default value
+ * Removed unneeded nargs parameter to add\_argument
+ * Add a --source-url parameter to 'fetch' and 'generate' commands
+ * tests: templates: fix version
+
+-------------------------------------------------------------------
Old:
----
py2pack-0.8.1.tar.gz
New:
----
py2pack-0.8.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-py2pack.spec ++++++
--- /var/tmp/diff_new_pack.kDGU7R/_old 2017-12-23 12:20:16.389281570 +0100
+++ /var/tmp/diff_new_pack.kDGU7R/_new 2017-12-23 12:20:16.393281375 +0100
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-py2pack
-Version: 0.8.1
+Version: 0.8.2
Release: 0
Url: http://github.com/saschpe/py2pack
Summary: Generate distribution packages from Python packages on PyPI
++++++ py2pack-0.8.1.tar.gz -> py2pack-0.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/AUTHORS new/py2pack-0.8.2/AUTHORS
--- old/py2pack-0.8.1/AUTHORS 2017-08-11 10:15:34.000000000 +0200
+++ new/py2pack-0.8.2/AUTHORS 2017-12-22 10:46:28.000000000 +0100
@@ -1,4 +1,5 @@
Adam Spiers
+Antonio Larrosa
Jürgen Weigert
Lukas Wunner
Manuel Schnitzer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/ChangeLog new/py2pack-0.8.2/ChangeLog
--- old/py2pack-0.8.1/ChangeLog 2017-08-11 10:15:34.000000000 +0200
+++ new/py2pack-0.8.2/ChangeLog 2017-12-22 10:46:28.000000000 +0100
@@ -1,9 +1,20 @@
CHANGES
=======
+0.8.2
+-----
+
+* pep8 fixes
+* opensuse template updates
+* Add source\_url to Args in tests and use None as default value
+* Removed unneeded nargs parameter to add\_argument
+* Add a --source-url parameter to 'fetch' and 'generate' commands
+* tests: templates: fix version
+
0.8.1
-----
+* Test templates with saved output
* Enable tests with python setup.py test
* Also support for python 3.6
* Fix opensuse's multipython template
@@ -171,7 +182,3 @@
-----
* Release version 0.4.9
-* Fix coverage report source
-* Add py26 trove classifier
-* Add cssselect setup\_requires
-* Rename SPDX license map
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/PKG-INFO new/py2pack-0.8.2/PKG-INFO
--- old/py2pack-0.8.1/PKG-INFO 2017-08-11 10:15:34.000000000 +0200
+++ new/py2pack-0.8.2/PKG-INFO 2017-12-22 10:46:28.000000000 +0100
@@ -1,11 +1,12 @@
Metadata-Version: 1.1
Name: py2pack
-Version: 0.8.1
+Version: 0.8.2
Summary: Generate distribution packages from PyPI
Home-page: http://github.com/openSUSE/py2pack
Author: Sascha Peilicke, Thomas Bechtold
Author-email: sascha@peilicke.de, thomasbechtold@jpberlin.de
License: UNKNOWN
+Description-Content-Type: UNKNOWN
Description: Py2pack: Generate distribution packages from PyPI
=================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/py2pack/__init__.py new/py2pack-0.8.2/py2pack/__init__.py
--- old/py2pack-0.8.1/py2pack/__init__.py 2017-08-11 10:15:02.000000000 +0200
+++ new/py2pack-0.8.2/py2pack/__init__.py 2017-12-22 10:45:48.000000000 +0100
@@ -177,15 +177,15 @@
def _normalize_license(data):
"""try to get SDPX license"""
- l = data.get('license', None)
- if not l:
+ license = data.get('license', None)
+ if not license:
# try to get license from classifiers
- l = _license_from_classifiers(data)
- if l:
- if l in SDPX_LICENSES.keys():
- data['license'] = SDPX_LICENSES[l]
+ license = _license_from_classifiers(data)
+ if license:
+ if license in SDPX_LICENSES.keys():
+ data['license'] = SDPX_LICENSES[license]
else:
- data['license'] = "%s (FIXME:No SPDX)" % (l)
+ data['license'] = "%s (FIXME:No SPDX)" % (license)
else:
data['license'] = ""
@@ -221,7 +221,9 @@
print('generating spec file for {0}...'.format(args.name))
data = pypi.release_data(args.name, args.version) # fetch all meta data
url = newest_download_url(args)
- if url:
+ if args.source_url:
+ data['source_url'] = args.source_url
+ elif url:
# do not use the url delivered by pypi. that url contains a hash and
# needs to be adjusted with every package update. Instead use
# the pypi.io url
@@ -263,6 +265,9 @@
def newest_download_url(args):
+ if args.source_url:
+ return {'url': args.source_url,
+ 'filename': args.source_url[args.source_url.rfind("/") + 1:]}
for url in pypi.package_urls(args.name, args.version): # Fetch all download URLs
if url['packagetype'] == 'sdist': # Found the source URL we care for
return url
@@ -302,11 +307,13 @@
parser_fetch = subparsers.add_parser('fetch', help='download package source tarball from PyPI')
parser_fetch.add_argument('name', help='package name')
parser_fetch.add_argument('version', nargs='?', help='package version (optional)')
+ parser_fetch.add_argument('--source-url', default=None, help='source url')
parser_fetch.set_defaults(func=fetch)
parser_generate = subparsers.add_parser('generate', help='generate RPM spec or DEB dsc file for a package')
parser_generate.add_argument('name', help='package name')
parser_generate.add_argument('version', nargs='?', help='package version (optional)')
+ parser_generate.add_argument('--source-url', default=None, help='source url')
parser_generate.add_argument('-t', '--template', choices=file_template_list(), default='opensuse.spec', help='file template')
parser_generate.add_argument('-f', '--filename', help='spec filename (optional)')
# TODO (toabctl): remove this is a later release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/py2pack/proxy.py new/py2pack-0.8.2/py2pack/proxy.py
--- old/py2pack-0.8.1/py2pack/proxy.py 2017-08-11 10:15:02.000000000 +0200
+++ new/py2pack-0.8.2/py2pack/proxy.py 2017-12-22 10:45:48.000000000 +0100
@@ -17,11 +17,11 @@
try:
import http.client as httplib
-except:
+except ImportError:
import httplib
try:
import xmlrpc.client as xmlrpclib
-except:
+except ImportError:
import xmlrpclib
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/py2pack/setup.py new/py2pack-0.8.2/py2pack/setup.py
--- old/py2pack-0.8.1/py2pack/setup.py 2017-08-11 10:15:02.000000000 +0200
+++ new/py2pack-0.8.2/py2pack/setup.py 2017-12-22 10:45:48.000000000 +0100
@@ -31,7 +31,7 @@
try:
subprocess.call(["xsltproc", "--output", "doc/py2pack.html", "/usr/share/xml/docbook/stylesheet/nwalsh/current/html/docbook.xsl", "doc/src/py2pack.xml.in"])
subprocess.call(["xsltproc", "--output", "doc/py2pack.1", "/usr/share/xml/docbook/stylesheet/nwalsh/current/manpages/docbook.xsl", "doc/src/py2pack.xml.in"])
- except:
+ except OSError:
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/py2pack/templates/opensuse.spec new/py2pack-0.8.2/py2pack/templates/opensuse.spec
--- old/py2pack-0.8.1/py2pack/templates/opensuse.spec 2017-08-11 10:15:02.000000000 +0200
+++ new/py2pack-0.8.2/py2pack/templates/opensuse.spec 2017-12-22 10:45:48.000000000 +0100
@@ -16,7 +16,6 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
-%bcond_without test
Name: python-{{ name }}
Version: {{ version }}
Release: 0
@@ -33,20 +32,18 @@
BuildRequires: %{python_module {{ req }}}
{%- endfor %}
{%- endif %}
+{%- if (install_requires and install_requires is not none) or (tests_require and tests_require is not none) %}
+# SECTION test requirements
{%- if install_requires and install_requires is not none %}
-%if %{with test}
{%- for req in install_requires|sort %}
BuildRequires: %{python_module {{ req }}}
{%- endfor %}
-%endif
{%- endif %}
{%- if tests_require and tests_require is not none %}
-# SECTION test requirements
-%if %{with test}
{%- for req in tests_require|sort %}
BuildRequires: %{python_module {{ req }}}
{%- endfor %}
-%endif
+{%- endif %}
# /SECTION
{%- endif %}
{%- if source_url.endswith('.zip') %}
@@ -90,14 +87,11 @@
{%- endif %}
{%- if testsuite or test_suite %}
-%if %{with test}
%check
%python_exec setup.py test
-%endif
{%- endif %}
%files %{python_files}
-%defattr(-,root,root,-)
{%- if doc_files and doc_files is not none %}
%doc {{ doc_files|join(" ") }}
{%- endif %}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/py2pack/version.py new/py2pack-0.8.2/py2pack/version.py
--- old/py2pack-0.8.1/py2pack/version.py 2017-08-11 10:15:02.000000000 +0200
+++ new/py2pack-0.8.2/py2pack/version.py 2017-12-22 10:45:48.000000000 +0100
@@ -17,7 +17,7 @@
try:
from pbr import version as pbr_version
-except:
+except ImportError:
# no pbr available
version = 'unknown'
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/py2pack.egg-info/PKG-INFO new/py2pack-0.8.2/py2pack.egg-info/PKG-INFO
--- old/py2pack-0.8.1/py2pack.egg-info/PKG-INFO 2017-08-11 10:15:34.000000000 +0200
+++ new/py2pack-0.8.2/py2pack.egg-info/PKG-INFO 2017-12-22 10:46:28.000000000 +0100
@@ -1,11 +1,12 @@
Metadata-Version: 1.1
Name: py2pack
-Version: 0.8.1
+Version: 0.8.2
Summary: Generate distribution packages from PyPI
Home-page: http://github.com/openSUSE/py2pack
Author: Sascha Peilicke, Thomas Bechtold
Author-email: sascha@peilicke.de, thomasbechtold@jpberlin.de
License: UNKNOWN
+Description-Content-Type: UNKNOWN
Description: Py2pack: Generate distribution packages from PyPI
=================================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/py2pack.egg-info/SOURCES.txt new/py2pack-0.8.2/py2pack.egg-info/SOURCES.txt
--- old/py2pack-0.8.1/py2pack.egg-info/SOURCES.txt 2017-08-11 10:15:34.000000000 +0200
+++ new/py2pack-0.8.2/py2pack.egg-info/SOURCES.txt 2017-12-22 10:46:28.000000000 +0100
@@ -36,5 +36,11 @@
test/__init__.py
test/test_py2pack.py
test/test_requires.py
+test/test_template.py
test/test_utils.py
+test/examples/py2pack-fedora.spec
+test/examples/py2pack-mageia.spec
+test/examples/py2pack-opensuse-legacy.spec
+test/examples/py2pack-opensuse.dsc
+test/examples/py2pack-opensuse.spec
tools/obs-from-pypi.py
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/py2pack.egg-info/pbr.json new/py2pack-0.8.2/py2pack.egg-info/pbr.json
--- old/py2pack-0.8.1/py2pack.egg-info/pbr.json 2017-08-11 10:15:34.000000000 +0200
+++ new/py2pack-0.8.2/py2pack.egg-info/pbr.json 2017-12-22 10:46:28.000000000 +0100
@@ -1 +1 @@
-{"git_version": "8592a88", "is_release": true}
\ No newline at end of file
+{"git_version": "8ae6f47", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/setup.cfg new/py2pack-0.8.2/setup.cfg
--- old/py2pack-0.8.1/setup.cfg 2017-08-11 10:15:34.000000000 +0200
+++ new/py2pack-0.8.2/setup.cfg 2017-12-22 10:46:28.000000000 +0100
@@ -53,5 +53,4 @@
[egg_info]
tag_build =
tag_date = 0
-tag_svn_revision = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/test/examples/py2pack-fedora.spec new/py2pack-0.8.2/test/examples/py2pack-fedora.spec
--- old/py2pack-0.8.1/test/examples/py2pack-fedora.spec 1970-01-01 01:00:00.000000000 +0100
+++ new/py2pack-0.8.2/test/examples/py2pack-fedora.spec 2017-12-22 10:45:48.000000000 +0100
@@ -0,0 +1,170 @@
+#
+# spec file for package python-py2pack
+#
+# Copyright (c) 2017 __USER__.
+#
+
+Name: python-py2pack
+Version: 0.8.0
+Release: 0
+Url: http://github.com/openSUSE/py2pack
+Summary: Generate distribution packages from PyPI
+License: Apache-2.0
+Group: Development/Languages/Python
+Source: https://files.pythonhosted.org/packages/source/p/py2pack/py2pack-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildRequires: python-devel
+
+%description
+Py2pack: Generate distribution packages from PyPI
+=================================================
+
+.. image:: https://travis-ci.org/openSUSE/py2pack.png?branch=master
+ :target: https://travis-ci.org/openSUSE/py2pack
+
+
+This script allows to generate RPM spec or DEB dsc files from Python modules.
+It allows to list Python modules or search for them on the Python Package Index
+(PyPI). Conveniently, it can fetch tarballs and changelogs making it an
+universal tool to package Python modules.
+
+
+Installation
+------------
+
+To install py2pack from the `Python Package Index`_, simply:
+
+.. code-block:: bash
+
+ $ pip install py2pack
+
+Or, if you absolutely must:
+
+.. code-block:: bash
+
+ $ easy_install py2pack
+
+But, you really shouldn't do that. Lastly, you can check your distro of choice
+if they provide packages. For openSUSE, you can find packages in the `Open
+Build Service`_ for all releases. If you happen to use openSUSE:Factory (the
+rolling release / development version), simply:
+
+.. code-block:: bash
+
+ $ sudo zypper install python-py2pack
+
+
+Usage
+-----
+
+Lets suppose you want to package zope.interface_ and you don't know how it is named
+exactly. First of all, you can search for it and download the source tarball if
+you found the correct module:
+
+.. code-block:: bash
+
+ $ py2pack search zope.interface
+ searching for module zope.interface...
+ found zope.interface-3.6.1
+ $ py2pack fetch zope.interface
+ downloading package zope.interface-3.6.1...
+ from http://pypi.python.org/packages/source/z/zope.interface/zope.interface-3.6.1...
+
+
+As a next step you may want to generate a package recipe for your distribution.
+For RPM_-based distributions (let's use openSUSE_ as an example), you want to
+generate a spec file (named 'python-zope.interface.spec'):
+
+.. code-block:: bash
+
+ $ py2pack generate zope.interface -t opensuse.spec -f python-zope.interface.spec
+
+The source tarball and the package recipe is all you need to generate the RPM_
+(or DEB_) file.
+This final step may depend on which distribution you use. Again,
+for openSUSE_ (and by using the `Open Build Service`_), the complete recipe is:
+
+.. code-block:: bash
+
+ $ osc mkpac python-zope.interface
+ $ cd python-zope.interface
+ $ py2pack fetch zope.interface
+ $ py2pack generate zope.interface -f python-zope.interface.spec
+ $ osc build
+ ...
+
+Depending on the module, you may have to adapt the resulting spec file slightly.
+To get further help about py2pack usage, issue the following command:
+
+.. code-block:: bash
+
+ $ py2pack help
+
+
+Hacking and contributing
+------------------------
+
+You can test py2pack from your git checkout by executing the py2pack module:
+
+.. code-block:: bash
+
+ $ python -m py2pack
+
+Fork `the repository`_ on Github to start making your changes to the **master**
+branch (or branch off of it). Don't forget to write a test for fixed issues or
+implemented features whenever appropriate. You can invoke the testsuite from
+the repository root directory via `tox`_:
+
+.. code-block:: bash
+
+ $ tox
+
+To run a single test class via `tox`_, use i.e.:
+
+.. code-block:: bash
+
+ $ tox -epy27 test.test_py2pack:Py2packTestCase
+
+
+You can also run `nose`_ directly:
+
+.. code-block:: bash
+
+ $ nosetests
+
+It assumes you have the test dependencies installed (available on PYTHONPATH)
+on your system.
+
+:copyright: (c) 2013 Sascha Peilicke.
+:license: Apache-2.0, see LICENSE for more details.
+
+
+.. _argparse: http://pypi.python.org/pypi/argparse
+.. _Jinja2: http://pypi.python.org/pypi/Jinja2
+.. _zope.interface: http://pypi.python.org/pypi/zope.interface/
+.. _openSUSE: http://www.opensuse.org/en/
+.. _RPM: http://en.wikipedia.org/wiki/RPM_Package_Manager
+.. _DEB: http://en.wikipedia.org/wiki/Deb_(file_format)
+.. _`Python Package Index`: https://pypi.python.org/pypi/rapport
+.. _`Open Build Service`: https://build.opensuse.org/package/show?package=rapport&project=devel:languages:python
+.. _`the repository`: https://github.com/openSUSE/py2pack
+.. _`nose`: https://nose.readthedocs.org
+.. _`tox`: http://testrun.org/tox
+
+%prep
+%setup -q -n py2pack-%{version}
+
+%build
+python setup.py build
+
+%install
+python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+
+%clean
+rm -rf %{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%{python_sitelib}/*
+
+%changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/test/examples/py2pack-mageia.spec new/py2pack-0.8.2/test/examples/py2pack-mageia.spec
--- old/py2pack-0.8.1/test/examples/py2pack-mageia.spec 1970-01-01 01:00:00.000000000 +0100
+++ new/py2pack-0.8.2/test/examples/py2pack-mageia.spec 2017-12-22 10:45:48.000000000 +0100
@@ -0,0 +1,32 @@
+%define mod_name py2pack
+
+Name: python-%{mod_name}
+Version: 0.8.0
+Release: %mkrel 1
+Url: http://github.com/openSUSE/py2pack
+Summary: Generate distribution packages from PyPI
+License: Apache-2.0
+Group: Development/Python
+Source: https://files.pythonhosted.org/packages/source/p/py2pack/py2pack-%{version}.tar.gz
+BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
+BuildRequires: python-devel
+
+%description
+Generate distribution packages from PyPI
+
+
+%prep
+%setup -q -n %{mod_name}-%{version}
+
+%build
+%{__python} setup.py build
+
+%install
+%{__python} setup.py install --prefix=%{_prefix} --root=%{buildroot}
+
+%clean
+rm -rf %{buildroot}
+
+%files -f
+%defattr(-,root,root)
+%{python_sitelib}/*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/test/examples/py2pack-opensuse-legacy.spec new/py2pack-0.8.2/test/examples/py2pack-opensuse-legacy.spec
--- old/py2pack-0.8.1/test/examples/py2pack-opensuse-legacy.spec 1970-01-01 01:00:00.000000000 +0100
+++ new/py2pack-0.8.2/test/examples/py2pack-opensuse-legacy.spec 2017-12-22 10:45:48.000000000 +0100
@@ -0,0 +1,180 @@
+#
+# spec file for package python-py2pack
+#
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+
+
+Name: python-py2pack
+Version: 0.8.0
+Release: 0
+License: Apache-2.0
+Summary: Generate distribution packages from PyPI
+Url: http://github.com/openSUSE/py2pack
+Group: Development/Languages/Python
+Source: https://files.pythonhosted.org/packages/source/p/py2pack/py2pack-%{version}.tar.gz
+BuildRequires: python-devel
+BuildRequires: python-setuptools
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildArch: noarch
+
+%description
+Py2pack: Generate distribution packages from PyPI
+=================================================
+
+.. image:: https://travis-ci.org/openSUSE/py2pack.png?branch=master
+ :target: https://travis-ci.org/openSUSE/py2pack
+
+
+This script allows to generate RPM spec or DEB dsc files from Python modules.
+It allows to list Python modules or search for them on the Python Package Index
+(PyPI). Conveniently, it can fetch tarballs and changelogs making it an
+universal tool to package Python modules.
+
+
+Installation
+------------
+
+To install py2pack from the `Python Package Index`_, simply:
+
+.. code-block:: bash
+
+ $ pip install py2pack
+
+Or, if you absolutely must:
+
+.. code-block:: bash
+
+ $ easy_install py2pack
+
+But, you really shouldn't do that. Lastly, you can check your distro of choice
+if they provide packages. For openSUSE, you can find packages in the `Open
+Build Service`_ for all releases. If you happen to use openSUSE:Factory (the
+rolling release / development version), simply:
+
+.. code-block:: bash
+
+ $ sudo zypper install python-py2pack
+
+
+Usage
+-----
+
+Lets suppose you want to package zope.interface_ and you don't know how it is named
+exactly. First of all, you can search for it and download the source tarball if
+you found the correct module:
+
+.. code-block:: bash
+
+ $ py2pack search zope.interface
+ searching for module zope.interface...
+ found zope.interface-3.6.1
+ $ py2pack fetch zope.interface
+ downloading package zope.interface-3.6.1...
+ from http://pypi.python.org/packages/source/z/zope.interface/zope.interface-3.6.1...
+
+
+As a next step you may want to generate a package recipe for your distribution.
+For RPM_-based distributions (let's use openSUSE_ as an example), you want to
+generate a spec file (named 'python-zope.interface.spec'):
+
+.. code-block:: bash
+
+ $ py2pack generate zope.interface -t opensuse.spec -f python-zope.interface.spec
+
+The source tarball and the package recipe is all you need to generate the RPM_
+(or DEB_) file.
+This final step may depend on which distribution you use. Again,
+for openSUSE_ (and by using the `Open Build Service`_), the complete recipe is:
+
+.. code-block:: bash
+
+ $ osc mkpac python-zope.interface
+ $ cd python-zope.interface
+ $ py2pack fetch zope.interface
+ $ py2pack generate zope.interface -f python-zope.interface.spec
+ $ osc build
+ ...
+
+Depending on the module, you may have to adapt the resulting spec file slightly.
+To get further help about py2pack usage, issue the following command:
+
+.. code-block:: bash
+
+ $ py2pack help
+
+
+Hacking and contributing
+------------------------
+
+You can test py2pack from your git checkout by executing the py2pack module:
+
+.. code-block:: bash
+
+ $ python -m py2pack
+
+Fork `the repository`_ on Github to start making your changes to the **master**
+branch (or branch off of it). Don't forget to write a test for fixed issues or
+implemented features whenever appropriate. You can invoke the testsuite from
+the repository root directory via `tox`_:
+
+.. code-block:: bash
+
+ $ tox
+
+To run a single test class via `tox`_, use i.e.:
+
+.. code-block:: bash
+
+ $ tox -epy27 test.test_py2pack:Py2packTestCase
+
+
+You can also run `nose`_ directly:
+
+.. code-block:: bash
+
+ $ nosetests
+
+It assumes you have the test dependencies installed (available on PYTHONPATH)
+on your system.
+
+:copyright: (c) 2013 Sascha Peilicke.
+:license: Apache-2.0, see LICENSE for more details.
+
+
+.. _argparse: http://pypi.python.org/pypi/argparse
+.. _Jinja2: http://pypi.python.org/pypi/Jinja2
+.. _zope.interface: http://pypi.python.org/pypi/zope.interface/
+.. _openSUSE: http://www.opensuse.org/en/
+.. _RPM: http://en.wikipedia.org/wiki/RPM_Package_Manager
+.. _DEB: http://en.wikipedia.org/wiki/Deb_(file_format)
+.. _`Python Package Index`: https://pypi.python.org/pypi/rapport
+.. _`Open Build Service`: https://build.opensuse.org/package/show?package=rapport&project=devel:languages:python
+.. _`the repository`: https://github.com/openSUSE/py2pack
+.. _`nose`: https://nose.readthedocs.org
+.. _`tox`: http://testrun.org/tox
+
+%prep
+%setup -q -n py2pack-%{version}
+
+%build
+python setup.py build
+
+%install
+python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+
+%files
+%defattr(-,root,root,-)
+%{python_sitelib}/*
+
+%changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/test/examples/py2pack-opensuse.dsc new/py2pack-0.8.2/test/examples/py2pack-opensuse.dsc
--- old/py2pack-0.8.1/test/examples/py2pack-opensuse.dsc 1970-01-01 01:00:00.000000000 +0100
+++ new/py2pack-0.8.2/test/examples/py2pack-opensuse.dsc 2017-12-22 10:45:48.000000000 +0100
@@ -0,0 +1,8 @@
+Format: 1.0
+Source: py2pack
+Version: 0.8.0
+Binary: python-py2pack
+Maintainer: __USER__
+Architecture: any
+Standards-Version: 3.7.1
+Build-Depends: debhelper (>= 4.0.0), python-dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/test/examples/py2pack-opensuse.spec new/py2pack-0.8.2/test/examples/py2pack-opensuse.spec
--- old/py2pack-0.8.1/test/examples/py2pack-opensuse.spec 1970-01-01 01:00:00.000000000 +0100
+++ new/py2pack-0.8.2/test/examples/py2pack-opensuse.spec 2017-12-22 10:45:48.000000000 +0100
@@ -0,0 +1,184 @@
+#
+# spec file for package python-py2pack
+#
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+
+
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
+Name: python-py2pack
+Version: 0.8.0
+Release: 0
+License: Apache-2.0
+Summary: Generate distribution packages from PyPI
+Url: http://github.com/openSUSE/py2pack
+Group: Development/Languages/Python
+Source: https://files.pythonhosted.org/packages/source/p/py2pack/py2pack-%{version}.tar.gz
+BuildRequires: python-rpm-macros
+BuildRequires: %{python_module devel}
+BuildRequires: %{python_module setuptools}
+BuildRequires: fdupes
+BuildArch: noarch
+
+%python_subpackages
+
+%description
+Py2pack: Generate distribution packages from PyPI
+=================================================
+
+.. image:: https://travis-ci.org/openSUSE/py2pack.png?branch=master
+ :target: https://travis-ci.org/openSUSE/py2pack
+
+
+This script allows to generate RPM spec or DEB dsc files from Python modules.
+It allows to list Python modules or search for them on the Python Package Index
+(PyPI). Conveniently, it can fetch tarballs and changelogs making it an
+universal tool to package Python modules.
+
+
+Installation
+------------
+
+To install py2pack from the `Python Package Index`_, simply:
+
+.. code-block:: bash
+
+ $ pip install py2pack
+
+Or, if you absolutely must:
+
+.. code-block:: bash
+
+ $ easy_install py2pack
+
+But, you really shouldn't do that. Lastly, you can check your distro of choice
+if they provide packages. For openSUSE, you can find packages in the `Open
+Build Service`_ for all releases. If you happen to use openSUSE:Factory (the
+rolling release / development version), simply:
+
+.. code-block:: bash
+
+ $ sudo zypper install python-py2pack
+
+
+Usage
+-----
+
+Lets suppose you want to package zope.interface_ and you don't know how it is named
+exactly. First of all, you can search for it and download the source tarball if
+you found the correct module:
+
+.. code-block:: bash
+
+ $ py2pack search zope.interface
+ searching for module zope.interface...
+ found zope.interface-3.6.1
+ $ py2pack fetch zope.interface
+ downloading package zope.interface-3.6.1...
+ from http://pypi.python.org/packages/source/z/zope.interface/zope.interface-3.6.1...
+
+
+As a next step you may want to generate a package recipe for your distribution.
+For RPM_-based distributions (let's use openSUSE_ as an example), you want to
+generate a spec file (named 'python-zope.interface.spec'):
+
+.. code-block:: bash
+
+ $ py2pack generate zope.interface -t opensuse.spec -f python-zope.interface.spec
+
+The source tarball and the package recipe is all you need to generate the RPM_
+(or DEB_) file.
+This final step may depend on which distribution you use. Again,
+for openSUSE_ (and by using the `Open Build Service`_), the complete recipe is:
+
+.. code-block:: bash
+
+ $ osc mkpac python-zope.interface
+ $ cd python-zope.interface
+ $ py2pack fetch zope.interface
+ $ py2pack generate zope.interface -f python-zope.interface.spec
+ $ osc build
+ ...
+
+Depending on the module, you may have to adapt the resulting spec file slightly.
+To get further help about py2pack usage, issue the following command:
+
+.. code-block:: bash
+
+ $ py2pack help
+
+
+Hacking and contributing
+------------------------
+
+You can test py2pack from your git checkout by executing the py2pack module:
+
+.. code-block:: bash
+
+ $ python -m py2pack
+
+Fork `the repository`_ on Github to start making your changes to the **master**
+branch (or branch off of it). Don't forget to write a test for fixed issues or
+implemented features whenever appropriate. You can invoke the testsuite from
+the repository root directory via `tox`_:
+
+.. code-block:: bash
+
+ $ tox
+
+To run a single test class via `tox`_, use i.e.:
+
+.. code-block:: bash
+
+ $ tox -epy27 test.test_py2pack:Py2packTestCase
+
+
+You can also run `nose`_ directly:
+
+.. code-block:: bash
+
+ $ nosetests
+
+It assumes you have the test dependencies installed (available on PYTHONPATH)
+on your system.
+
+:copyright: (c) 2013 Sascha Peilicke.
+:license: Apache-2.0, see LICENSE for more details.
+
+
+.. _argparse: http://pypi.python.org/pypi/argparse
+.. _Jinja2: http://pypi.python.org/pypi/Jinja2
+.. _zope.interface: http://pypi.python.org/pypi/zope.interface/
+.. _openSUSE: http://www.opensuse.org/en/
+.. _RPM: http://en.wikipedia.org/wiki/RPM_Package_Manager
+.. _DEB: http://en.wikipedia.org/wiki/Deb_(file_format)
+.. _`Python Package Index`: https://pypi.python.org/pypi/rapport
+.. _`Open Build Service`: https://build.opensuse.org/package/show?package=rapport&project=devel:languages:python
+.. _`the repository`: https://github.com/openSUSE/py2pack
+.. _`nose`: https://nose.readthedocs.org
+.. _`tox`: http://testrun.org/tox
+
+%prep
+%setup -q -n py2pack-%{version}
+
+%build
+%python_build
+
+%install
+%python_install
+%python_expand %fdupes %{buildroot}%{$python_sitelib}
+
+%files %{python_files}
+%{python_sitelib}/*
+
+%changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/test/test_py2pack.py new/py2pack-0.8.2/test/test_py2pack.py
--- old/py2pack-0.8.1/test/test_py2pack.py 2017-08-11 10:15:02.000000000 +0200
+++ new/py2pack-0.8.2/test/test_py2pack.py 2017-12-22 10:45:48.000000000 +0100
@@ -29,6 +29,7 @@
class Args:
name = "py2pack"
version = "0.4.4"
+ source_url = None
self.args = Args()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/py2pack-0.8.1/test/test_template.py new/py2pack-0.8.2/test/test_template.py
--- old/py2pack-0.8.1/test/test_template.py 1970-01-01 01:00:00.000000000 +0100
+++ new/py2pack-0.8.2/test/test_template.py 2017-12-22 10:45:48.000000000 +0100
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright (c) 2017, Sebastian Wagner
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import os
+import os.path
+import pwd
+import tempfile
+import unittest
+
+import py2pack
+
+
+class Args(object):
+ run = False
+ template = ''
+ filename = ''
+ name = 'py2pack'
+ version = '0.8.0'
+ source_url = None
+
+
+def generate_template_function(template):
+ def test_template(self):
+ """ Test if generated specfile for %s equals to stored one. """ % template
+ args = Args()
+ args.template = template
+ with tempfile.NamedTemporaryFile(mode='w+t') as filehandle:
+ filename = filehandle.name
+ args.filename = filename
+ py2pack.generate(args)
+ filehandle.seek(0)
+ written_spec = filehandle.read()
+ with open(os.path.join(self.compare_dir, 'py2pack-%s' % template)) as filehandle:
+ required = filehandle.read()
+ required = required.replace('__USER__', self.username, 1)
+ self.assertEqual(written_spec, required)
+ return test_template
+
+
+class TemplateTestCase(unittest.TestCase):
+ compare_dir = os.path.join(os.path.dirname(__file__), 'examples')
+ maxDiff = None
+ username = pwd.getpwuid(os.getuid())[4]
+
+
+for template in ('fedora.spec', 'mageia.spec', 'opensuse-legacy.spec', 'opensuse.dsc', 'opensuse.spec'):
+ setattr(TemplateTestCase,
+ 'test_template_%s' % template,
+ generate_template_function(template))