openSUSE Commits
Threads by month
- ----- 2024 -----
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
July 2019
- 2 participants
- 2045 discussions
Hello community,
here is the log from the commit of package python-pyhibp for openSUSE:Factory checked in at 2019-07-02 10:39:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyhibp (Old)
and /work/SRC/openSUSE:Factory/.python-pyhibp.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyhibp"
Tue Jul 2 10:39:46 2019 rev:2 rq:712996 version:3.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyhibp/python-pyhibp.changes 2019-02-01 11:45:44.184534553 +0100
+++ /work/SRC/openSUSE:Factory/.python-pyhibp.new.4615/python-pyhibp.changes 2019-07-02 10:39:47.186708781 +0200
@@ -1,0 +2,24 @@
+Mon Jul 1 12:34:45 UTC 2019 - Martin Hauke <mardnh(a)gmx.de>
+
+- Update to version 3.1.0
+ * New function: pwnedpasswords.suffix_search(hash_prefix=prefix)
+ was created in order to have a dedicated function return the
+ suffix list.
+ * Function modification notice: pwnedpasswords.is_password_breached
+ will be modified in an upcoming release to remove the ability
+ to search for suffixes; use suffix_search(hash_prefix=prefix)
+ instead. The parameter first_5_hash_chars will be removed as a
+ consequence.
+ * Upcoming return type change for empty sets: For the functions
+ get_account_breaches, get_all_breaches, get_single_breach, and
+ get_pastes--all contained in the pyhibp module--when no items
+ would be returned from the HIBP backend, the returned item will
+ be an empty object matching the standard return type for the
+ function, and not a Boolean False.
+ This will occur when v4.0.0 is released. Return types will be:
+ - get_account_breaches -> [] / list
+ - get_all_breaches -> [] / list
+ - get_single_breach -> {} / dict
+ - get_pastes -> [] / list
+
+-------------------------------------------------------------------
Old:
----
pyhibp-3.0.0.tar.gz
New:
----
pyhibp-3.1.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pyhibp.spec ++++++
--- /var/tmp/diff_new_pack.YoruMU/_old 2019-07-02 10:39:47.642709476 +0200
+++ /var/tmp/diff_new_pack.YoruMU/_new 2019-07-02 10:39:47.646709481 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package python-pyHIBP
+# spec file for package python-pyhibp
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
@@ -12,12 +12,13 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pyhibp
-Version: 3.0.0
+Version: 3.1.0
Release: 0
Summary: An interface to Troy Hunt's 'Have I Been Pwned' public API
License: AGPL-3.0-or-later
@@ -50,7 +51,7 @@
### Tests need network access to https://haveibeenpwned.com
#%%check
-#%%python_expand PYTHONPATH=%%{buildroot}%%{$python_sitelib} py.test-%%{$python_version}
+#%%pytest
%files %{python_files}
%license LICENSE
++++++ pyhibp-3.0.0.tar.gz -> pyhibp-3.1.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/CHANGELOG.md new/pyhibp-3.1.0/CHANGELOG.md
--- old/pyhibp-3.0.0/CHANGELOG.md 2018-11-10 01:39:46.000000000 +0100
+++ new/pyhibp-3.1.0/CHANGELOG.md 2019-06-30 10:46:01.000000000 +0200
@@ -1,11 +1,34 @@
pyHIBP Changelog
================
-v3.0.0 (UNRELEASED)
+v3.1.0 (In progress...)
+-----------------------
+- **New function**: ``pwnedpasswords.suffix_search(hash_prefix=prefix)`` was created in order to have a dedicated function
+ return the suffix list.
+- **Function modification notice**: ``pwnedpasswords.is_password_breached`` will be modified in an upcoming release to
+ remove the ability to search for suffixes; use ``suffix_search(hash_prefix=prefix)`` instead. The parameter
+ ``first_5_hash_chars`` will be removed as a consequence.
+- **Upcoming return type change for empty sets**: For the functions ``get_account_breaches``, ``get_all_breaches``,
+ ``get_single_breach``, and ``get_pastes``--all contained in the ``pyhibp`` module--when no items would be returned
+ from the HIBP backend, the returned item will be an empty object matching the standard return type for the function,
+ and not a Boolean ``False``. This will occur when ``v4.0.0`` is released. Return types will be:
+ - ``get_account_breaches`` -> ``[] / list``
+ - ``get_all_breaches`` -> ``[] / list``
+ - ``get_single_breach`` -> ``{} / dict``
+ - ``get_pastes`` -> ``[] / list``
+- As a reminder, Python 2.7 support will be dropped from support in the near future. This will occur at the same time
+ as the removal of the range search functionality available via ``pwnedpasswords.is_password_breached(first_5_hash_chars=prefix)``
+ so as to minimize disruption.
+
+v3.0.0 (2018-11-10)
-------------------
-- **Backwards Incompatible Change**: The package name has been changed to fall in-line with the PEP 8 guideline calling for [all lowercase characters in package/module names](https://www.python.org/dev/peps/pep-0008/#package-and-module-names). Existing code will need to change invocations of ``pyHIBP`` to ``pyhibp``.
- - We will, however, still refer to the package/module as _pyHIBP_ when it is used outside of the context of Python code.
-- **Future Python 2 Deprecation**: As per PEP 373, [Python 2.7.x support ends on 2020-01-01](https://www.python.org/dev/peps/pep-0373/#maintenance-releases). That being said, we will be dropping Python 2 as a supported version _prior_ to this date.
-- The `requests` dependency has been bumped to require versions at or above `2.20.0` (due to CVE-2018-18074 affecting the `requests` package for older versions).
+- **Backwards Incompatible Change**: The package name has been changed to fall in-line with the PEP 8 guideline calling
+ for [all lowercase characters in package/module names](https://www.python.org/dev/peps/pep-0008/#package-and-module-names).
+ Existing code will need to change invocations of ``pyHIBP`` to ``pyhibp``.
+ - We will, however, still refer to the package/module as _pyHIBP_ when it is used outside of the context of Python code.
+- **Future Python 2 Deprecation**: As per PEP 373, [Python 2.7.x support ends on 2020-01-01](https://www.python.org/dev/peps/pep-0373/#maintenance-releases).
+ That being said, we will be dropping Python 2 as a supported version _prior_ to this date.
+- The `requests` dependency has been bumped to require versions at or above `2.20.0` (due to CVE-2018-18074 affecting
+ the `requests` package for older versions).
v2.1.1 (2018-09-18)
-------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/PKG-INFO new/pyhibp-3.1.0/PKG-INFO
--- old/pyhibp-3.0.0/PKG-INFO 2018-11-10 02:56:39.000000000 +0100
+++ new/pyhibp-3.1.0/PKG-INFO 2019-06-30 11:17:16.000000000 +0200
@@ -1,102 +1,102 @@
-Metadata-Version: 2.1
-Name: pyhibp
-Version: 3.0.0
-Summary: An interface to Troy Hunt's 'Have I Been Pwned' public API
-Home-page: https://gitlab.com/kitsunix/pyHIBP/pyHIBP
-Author: Kyra F. Kitsune
-License: UNKNOWN
-Description: pyHIBP (pyHave I Been Pwned)
- ============================
- [![image](https://img.shields.io/pypi/v/pyHIBP.svg)](https://pypi.org/project/pyHIBP/)
- [![image](https://img.shields.io/pypi/l/pyHIBP.svg)](https://pypi.org/project/pyHIBP/)
- [![image](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master)
-
-
- A Python interface to Troy Hunt's 'Have I Been Pwned?' (HIBP) public API. A full reference to the API
- specification can be found at the [HIBP API Reference](https://haveibeenpwned.com/API/v2).
-
- This module detects when the rate limit of the API has been hit, and raises a RuntimeError when the limit is exceeded,
- or when another API-defined error condition is encountered based on the submitted data. Calls
- to the module returning Boolean `True` or the object as decoded from the API query (currently, lists), represent
- a detection that a breached account/paste/password was found; Boolean `False` means that the item was not found.
-
- Note that the `pwnedpasswords` API backend does not have a rate limit. If you are intending to bulk-query passwords or
- hashes, you may also consider downloading the raw data files accessible via the [Pwned Passwords](https://haveibeenpwned.com/Passwords) page.
-
- Installing
- ----------
- ```bash
- $ pip install pyhibp
- ```
-
- Example usage
- -------------
- For an interactive example, check out the Jupyter Notebook for [`pyhibp`](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master?filepath=/pyHIBP.ipynb),
- as well as [`pyhibp.pwnedpasswords`](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master?filepath=/pyHIBP.pwnedpasswords.ipynb).
-
- ```python
- import pyhibp
- from pyhibp import pwnedpasswords as pw
-
- # Check a password to see if it has been disclosed in a public breach corpus
- resp = pw.is_password_breached(password="secret")
- if resp:
- print("Password breached!")
- print("This password was used {0} time(s) before.".format(resp))
-
- # Get breaches that affect a given account
- resp = pyhibp.get_account_breaches(account="test(a)example.com", truncate_response=True)
-
- # Get all breach information
- resp = pyhibp.get_all_breaches()
-
- # Get a single breach
- resp = pyhibp.get_single_breach(breach_name="Adobe")
-
- # Get pastes affecting a given email address
- resp = pyhibp.get_pastes(email_address="test(a)example.com")
-
- # Get data classes in the HIBP system
- resp = pyhibp.get_data_classes()
- ```
-
- Developing
- ----------
- This project is currently intended to be compatible with Python 2 and Python 3. As such, we use virtual environments via `pipenv`.
- To develop or test, execute the following:
-
- ```bash
- # Install the prerequisite virtual environment provider
- $ pip install pipenv
- # Initialize the pipenv environment and install the module within it
- $ make dev
- # To run PEP8, tests, and check the manifest
- $ make tox
- ```
-
- Other commands can be found in the `Makefile`.
-
- Goals
- -----
- - Synchronize to the latest HIBP API(s), implementing endpoint accessing functions where it makes sense. For instance,
- in the interest of security, the ability to submit a SHA-1 to the Pwned Passwords endpoint is not implemented. See
- "Regarding password checking" below for further details.
- - For breaches and pastes, act as an intermediary; return the JSON as received from the service.
-
- Regarding password checking
- ---------------------------
- - For passwords, the option to supply a plaintext password to check is provided as an implementation convenience.
- - For added security, `pwnedpasswords.is_password_breached()` only transmits the first five characters of the SHA-1
- hash to the Pwned Passwords API endpoint; a secure password will remain secure without disclosing the full hash.
-
-Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
-Classifier: Intended Audience :: Developers
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Description-Content-Type: text/markdown
-Provides-Extra: dev
+Metadata-Version: 2.1
+Name: pyhibp
+Version: 3.1.0
+Summary: An interface to Troy Hunt's 'Have I Been Pwned' public API
+Home-page: https://gitlab.com/kitsunix/pyHIBP/pyHIBP
+Author: Kyra F. Kitsune
+License: UNKNOWN
+Description: pyHIBP (pyHave I Been Pwned)
+ ============================
+ [![image](https://img.shields.io/pypi/v/pyHIBP.svg)](https://pypi.org/project/pyHIBP/)
+ [![image](https://img.shields.io/pypi/l/pyHIBP.svg)](https://pypi.org/project/pyHIBP/)
+ [![image](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master)
+
+
+ A Python interface to Troy Hunt's 'Have I Been Pwned?' (HIBP) public API. A full reference to the API
+ specification can be found at the [HIBP API Reference](https://haveibeenpwned.com/API/v2).
+
+ This module detects when the rate limit of the API has been hit, and raises a RuntimeError when the limit
+ is exceeded, or when another API-defined error condition is encountered based on the submitted data. When
+ data is found from a call, the data returned will be in the format as retrieved from the endpoint, documented
+ in the return-type information for the relevant function.
+
+ Note that the `pwnedpasswords` API backend does not have a rate limit. If you are intending to bulk-query passwords or
+ hashes, you should consider downloading the raw data files accessible via the [Pwned Passwords](https://haveibeenpwned.com/Passwords) page.
+
+ Installing
+ ----------
+ ```bash
+ $ pip install pyhibp
+ ```
+
+ Example usage
+ -------------
+ For an interactive example, check out the Jupyter Notebook for [`pyhibp`](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master?filepath=/pyHIBP.ipynb),
+ as well as [`pyhibp.pwnedpasswords`](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master?filepath=/pyHIBP.pwnedpasswords.ipynb).
+
+ ```python
+ import pyhibp
+ from pyhibp import pwnedpasswords as pw
+
+ # Check a password to see if it has been disclosed in a public breach corpus
+ resp = pw.is_password_breached(password="secret")
+ if resp:
+ print("Password breached!")
+ print("This password was used {0} time(s) before.".format(resp))
+
+ # Get breaches that affect a given account
+ resp = pyhibp.get_account_breaches(account="test(a)example.com", truncate_response=True)
+
+ # Get all breach information
+ resp = pyhibp.get_all_breaches()
+
+ # Get a single breach
+ resp = pyhibp.get_single_breach(breach_name="Adobe")
+
+ # Get pastes affecting a given email address
+ resp = pyhibp.get_pastes(email_address="test(a)example.com")
+
+ # Get data classes in the HIBP system
+ resp = pyhibp.get_data_classes()
+ ```
+
+ Developing
+ ----------
+ This project is currently intended to be compatible with Python 2 and Python 3. As such, we use virtual environments via `pipenv`.
+ To develop or test, execute the following:
+
+ ```bash
+ # Install the prerequisite virtual environment provider
+ $ pip install pipenv
+ # Initialize the pipenv environment and install the module within it
+ $ make dev
+ # To run PEP8, tests, and check the manifest
+ $ make tox
+ ```
+
+ Other commands can be found in the `Makefile`.
+
+ Goals
+ -----
+ - Synchronize to the latest HIBP API(s), implementing endpoint accessing functions where it makes sense. For instance,
+ in the interest of security, the ability to submit a SHA-1 to the Pwned Passwords endpoint is not implemented. See
+ "Regarding password checking" below for further details.
+ - For breaches and pastes, act as an intermediary; return the JSON as received from the service.
+
+ Regarding password checking
+ ---------------------------
+ - For passwords, the option to supply a plaintext password to check is provided as an implementation convenience.
+ - For added security, `pwnedpasswords.is_password_breached()` only transmits the first five characters of the SHA-1
+ hash to the Pwned Passwords API endpoint; a secure password will remain secure without disclosing the full hash.
+
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.5
+Description-Content-Type: text/markdown
+Provides-Extra: dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/Pipfile new/pyhibp-3.1.0/Pipfile
--- old/pyhibp-3.0.0/Pipfile 2018-11-10 01:39:46.000000000 +0100
+++ new/pyhibp-3.1.0/Pipfile 2019-06-30 10:46:01.000000000 +0200
@@ -1,18 +1,13 @@
[[source]]
-
verify_ssl = true
url = "https://pypi.python.org/simple"
name = "pypi"
-
[packages]
-
requests = ">=2.20.0"
six = ">=1.11.0"
-
[dev-packages]
-
tox = "*"
pytest = "*"
pytest-cov = "*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/README.md new/pyhibp-3.1.0/README.md
--- old/pyhibp-3.0.0/README.md 2018-11-10 01:39:46.000000000 +0100
+++ new/pyhibp-3.1.0/README.md 2019-06-30 10:46:01.000000000 +0200
@@ -8,13 +8,13 @@
A Python interface to Troy Hunt's 'Have I Been Pwned?' (HIBP) public API. A full reference to the API
specification can be found at the [HIBP API Reference](https://haveibeenpwned.com/API/v2).
-This module detects when the rate limit of the API has been hit, and raises a RuntimeError when the limit is exceeded,
-or when another API-defined error condition is encountered based on the submitted data. Calls
-to the module returning Boolean `True` or the object as decoded from the API query (currently, lists), represent
-a detection that a breached account/paste/password was found; Boolean `False` means that the item was not found.
+This module detects when the rate limit of the API has been hit, and raises a RuntimeError when the limit
+is exceeded, or when another API-defined error condition is encountered based on the submitted data. When
+data is found from a call, the data returned will be in the format as retrieved from the endpoint, documented
+in the return-type information for the relevant function.
Note that the `pwnedpasswords` API backend does not have a rate limit. If you are intending to bulk-query passwords or
-hashes, you may also consider downloading the raw data files accessible via the [Pwned Passwords](https://haveibeenpwned.com/Passwords) page.
+hashes, you should consider downloading the raw data files accessible via the [Pwned Passwords](https://haveibeenpwned.com/Passwords) page.
Installing
----------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/setup.cfg new/pyhibp-3.1.0/setup.cfg
--- old/pyhibp-3.0.0/setup.cfg 2018-11-10 02:56:39.000000000 +0100
+++ new/pyhibp-3.1.0/setup.cfg 2019-06-30 11:17:16.000000000 +0200
@@ -1,11 +1,11 @@
-[bdist_wheel]
-universal = 1
-
-[flake8]
-exclude = .git
-ignore = E501
-
-[egg_info]
-tag_build =
-tag_date = 0
-
+[bdist_wheel]
+universal = 1
+
+[flake8]
+exclude = .git
+ignore = E501
+
+[egg_info]
+tag_build =
+tag_date = 0
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/src/pyhibp/__init__.py new/pyhibp-3.1.0/src/pyhibp/__init__.py
--- old/pyhibp-3.0.0/src/pyhibp/__init__.py 2018-11-10 02:28:07.000000000 +0100
+++ new/pyhibp-3.1.0/src/pyhibp/__init__.py 2019-06-30 10:46:01.000000000 +0200
@@ -23,6 +23,7 @@
:param response: The response object from a call to `requests`
:return: True if HTTP Status 200, False if 404. Raises RuntimeError on API-defined status codes of
400, 403, 429; NotImplementedError if the API returns an unexpected HTTP status code.
+ :rtype: bool
"""
if response.status_code == 200:
# The request was successful (we found an item)
@@ -52,14 +53,15 @@
Gets breaches for a specified account from the HIBP system, optionally restricting the returned results
to a specified domain.
- :param account: The user's account name (such as an email address or a user-name). Default None.
- :param domain: The domain to check for breaches. Default None.
+ :param account: The user's account name (such as an email address or a user-name). Default None. `str` type.
+ :param domain: The domain to check for breaches. Default None. `str` type.
:param truncate_response: If ``account`` is specified, truncates the response down to the breach names.
- Default False.
- :param include_unverified: If set to True, unverified breaches are included in the result. Default False.
+ Default False. `bool` type.
+ :param include_unverified: If set to True, unverified breaches are included in the result. Default False. `bool` type
:return: A list object containing one or more dict objects, based on the information being requested,
provided there was matching information. Boolean False returned if no information was found according to
the HIBP API.
+ :rtype: list
"""
# Account/Domain don't need to be specified, but they must be text if so.
if account is None or not isinstance(account, six.string_types):
@@ -80,6 +82,7 @@
if _process_response(response=resp):
return resp.json()
else:
+ # TODO: v4.0.0: return []
return False
@@ -87,9 +90,10 @@
"""
Returns a listing of all sites breached in the HIBP database.
- :param domain: Optional, default None. If specified, get all breaches for the domain with the specified name.
+ :param domain: Optional, default None. If specified, get all breaches for the domain with the specified name. `str` type.
:return: A list object containing one or more dict objects if breaches are present. Returns Boolean False
if ``domain`` is specified, but the resultant list would be length zero.
+ :rtype: list
"""
if domain is not None and not isinstance(domain, six.string_types):
raise AttributeError("The domain parameter, if specified, must be a string.")
@@ -101,6 +105,7 @@
if _process_response(response=resp) and len(resp.json()) > 0:
return resp.json()
else:
+ # TODO: v4.0.0: return []
return False
@@ -108,9 +113,10 @@
"""
Returns a single breach's information from the HIBP's database.
- :param breach_name: The breach to retrieve. Required.
+ :param breach_name: The breach to retrieve. Required. `str` type.
:return: A dict object containing the information for the specified breach name, if it exists in the HIBP
database. Boolean False is returned if the specified breach was not found.
+ :rtype: dict
"""
if not isinstance(breach_name, six.string_types):
raise AttributeError("The breach_name must be specified, and be a string.")
@@ -120,6 +126,7 @@
if _process_response(response=resp):
return resp.json()
else:
+ # TODO: v4.0.0: return {}
return False
@@ -127,9 +134,10 @@
"""
Retrieve all pastes for a specified email address.
- :param email_address: The email address to search. Required.
+ :param email_address: The email address to search. Required. `str` type.
:return: A list object containing one or more dict objects corresponding to the pastes the specified email
address was found in. Boolean False returned if no pastes are detected for the given account.
+ :rtype: list
"""
if not isinstance(email_address, six.string_types):
raise AttributeError("The email address supplied must be provided, and be a string.")
@@ -139,6 +147,7 @@
if _process_response(response=resp):
return resp.json()
else:
+ # TODO: v4.0.0: return []
return False
@@ -148,6 +157,7 @@
:return: A list object containing available data classes, corresponding to attributes found in breaches.
A given breach will have one or more of the data classes in the list.
+ :rtype: list
"""
uri = HIBP_API_BASE_URI + HIBP_API_ENDPOINT_DATA_CLASSES
resp = requests.get(url=uri, headers=pyHIBP_HEADERS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/src/pyhibp/__version__.py new/pyhibp-3.1.0/src/pyhibp/__version__.py
--- old/pyhibp-3.0.0/src/pyhibp/__version__.py 2018-11-10 02:40:10.000000000 +0100
+++ new/pyhibp-3.1.0/src/pyhibp/__version__.py 2019-06-30 11:09:11.000000000 +0200
@@ -4,5 +4,5 @@
# |)\/| |||)|
# | /
-__version__ = '3.0.0'
+__version__ = '3.1.0'
__url__ = 'https://gitlab.com/kitsunix/pyHIBP/pyHIBP'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/src/pyhibp/pwnedpasswords.py new/pyhibp-3.1.0/src/pyhibp/pwnedpasswords.py
--- old/pyhibp-3.0.0/src/pyhibp/pwnedpasswords.py 2018-11-10 01:39:46.000000000 +0100
+++ new/pyhibp-3.1.0/src/pyhibp/pwnedpasswords.py 2019-06-30 10:46:02.000000000 +0200
@@ -1,4 +1,5 @@
import hashlib
+import warnings
import requests
import six
@@ -20,29 +21,26 @@
number of times that hash appears in the data set. In doing so, the API is not provided the information
required to reconstruct the password (e.g., by brute-forcing the hash).
- Either ```password``, `first_5_hash_chars``, or ``sha1_hash`` must be specified. Only one parameter should be provided.
+ Either ```password`` or ``sha1_hash`` must be specified. Only one parameter should be provided.
The precedence of parameters is as follows:
- 1) password - Computes the remaining two parameters.
- 2) sha1_hash - Computes the following parameter, and will determine if a match was found.
- 3) first_5_hash_chars - Returns a list of partial hashes for the calling application to process.
-
- If ``password`` is provided,
- the password will be converted to a SHA-1 hash, then the first five characters checked against the API's returned
- information, much like as if a full `sha1_hash` were supplied.
-
- Suffix example: 0018A45C4D1DEF81644B54AB7F969B88D65:1
-
- :param password: The password to check. Will be converted to a SHA-1 string.
- :param first_5_hash_chars: The first five characters of a SHA-1 hash string.
- :param sha1_hash: A full SHA-1 hash.
- :return: If ``first_5_hash_chars`` is supplied, a [list] of hash suffixes. If ``password`` or ``sha1_hash`` is supplied,
- and the password was found in the corpus, an Integer representing the number of times the password is in
- the data set; if not found, Integer zero (0) is returned.
+ 1) password - Used to compute the SHA-1 hash of the password.
+ 2) sha1_hash - The hash prefix (hash[0:5]) is passed to the HIBP API, and this function will check the returned list of
+ hash suffixes to determine if a breached password was in the HIBP database.
+
+ Note: Suffix searches, that is, to retrieve a list of hash suffixes by supplying a hash prefix, have moved to
+ `suffix_search()` as of this release (v3.1.0). A compatability shim has been left for this release, but will be removed on the
+ next major version release.
+
+ :param password: The password to check. Will be converted to a SHA-1 string. `str` type.
+ :param sha1_hash: A full SHA-1 hash. `str` type.
+ :return: An Integer representing the number of times the password is in the data set; if not found,
+ Integer zero (0) is returned.
+ :rtype: int
"""
# Parameter validation section
if not any([password, first_5_hash_chars, sha1_hash]):
- raise AttributeError("One of password, first_5_hash_chars, or sha1_hash must be provided.")
+ raise AttributeError("One of password, sha1_hash, or first_5_hash_chars must be provided.")
elif password is not None and not isinstance(password, six.string_types):
raise AttributeError("password must be a string type.")
elif sha1_hash is not None and not isinstance(sha1_hash, six.string_types):
@@ -59,27 +57,66 @@
sha1_hash = sha1_hash.upper()
first_5_hash_chars = sha1_hash[0:5]
- uri = PWNED_PASSWORDS_API_BASE_URI + PWNED_PASSWORDS_API_ENDPOINT_RANGE_SEARCH + first_5_hash_chars
+ suffix_list = suffix_search(hash_prefix=first_5_hash_chars)
- resp = requests.get(url=uri, headers=pyhibp.pyHIBP_HEADERS)
-
- # The server response will have a BOM if we don't do this.
- resp.encoding = RESPONSE_ENCODING
-
- if resp.status_code != 200:
- # The HTTP Status should always be 200 for this request
- raise RuntimeError("Response from the endpoint was not HTTP200; this should not happen. Code was: {0}".format(resp.status_code))
- elif not sha1_hash:
+ if not sha1_hash:
+ # TODO: v4.0.0: Remove this codepath (first_5_hash_chars)
+ warnings.warn("""
+ Hash suffix searching is being moved to its own discrete function, `suffix_search()`. Call `suffix_search(hash_prefix=prefix)`
+ instead. Hash prefixes will not return from is_password_breached() in a future release.
+ """)
# Return the list of hash suffixes.
- return resp.text.split()
+ return suffix_list
else:
# Since the full SHA-1 hash was provided, check to see if it was in the resultant hash suffixes returned.
- response_lines = resp.text.split()
-
- for hash_suffix in response_lines:
+ for hash_suffix in suffix_list:
if sha1_hash[5:] in hash_suffix:
# We found the full hash, so return
return int(hash_suffix.split(':')[1])
# If we get here, there was no match to the supplied SHA-1 hash; return zero.
return 0
+
+
+def suffix_search(hash_prefix=None):
+ """
+ Returns a list of SHA-1 hash suffixes, consisting of the SHA-1 hash characters after position five,
+ and the number of times that password hash was found in the HIBP database, colon separated.
+
+ Leveraging the k-Anonymity model, a list of hashes matching a specified SHA-1 prefix are returned.
+ From this list, the calling application may determine if a given password was breached by comparing
+ the remainder of the SHA-1 hash against the returned results. As an example, for the hash prefix of
+ '42042', the hash suffixes would be:
+
+ ```
+ 005F4A4B9265A2BABE10B1A9AB9409EA3F0:1
+ 00D6F0319225107BD5736B72717BD381660:8
+ 01355DCE0B54F0E8DBBBA8F7B9A9872858A:15
+ 0163E1C872A64A62625F5EB2F3807B7F90B:2
+ 020DDE278E6A9C05B356C929F254CE6AED5:1
+ 021EFB4FAE348050D9EDCD10F8B6A87C957:4
+ ...
+ ```
+
+ If the `prefix` and `suffix` form a complete SHA-1 hash for the password being compared, then it
+ indicates the password has been found in the HIBP database.
+
+ :param hash_prefix: The first five characters of a SHA-1 hash. `str` type.
+ :return: A list of hash suffixes.
+ :rtype: list
+ """
+ if not hash_prefix or not isinstance(hash_prefix, six.string_types):
+ raise AttributeError("hash_prefix must be a supplied, and be a string-type.")
+ if hash_prefix and len(hash_prefix) != 5:
+ raise AttributeError("hash_prefix must be of length 5.")
+
+ uri = PWNED_PASSWORDS_API_BASE_URI + PWNED_PASSWORDS_API_ENDPOINT_RANGE_SEARCH + hash_prefix
+
+ resp = requests.get(url=uri, headers=pyhibp.pyHIBP_HEADERS)
+ if resp.status_code != 200:
+ # The HTTP Status should always be 200 for this request
+ raise RuntimeError("Response from the endpoint was not HTTP200; this should not happen. Code was: {0}".format(resp.status_code))
+ # The server response will have a BOM if we don't do this.
+ resp.encoding = RESPONSE_ENCODING
+
+ return resp.text.split()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/src/pyhibp.egg-info/PKG-INFO new/pyhibp-3.1.0/src/pyhibp.egg-info/PKG-INFO
--- old/pyhibp-3.0.0/src/pyhibp.egg-info/PKG-INFO 2018-11-10 02:56:39.000000000 +0100
+++ new/pyhibp-3.1.0/src/pyhibp.egg-info/PKG-INFO 2019-06-30 11:17:15.000000000 +0200
@@ -1,102 +1,102 @@
-Metadata-Version: 2.1
-Name: pyhibp
-Version: 3.0.0
-Summary: An interface to Troy Hunt's 'Have I Been Pwned' public API
-Home-page: https://gitlab.com/kitsunix/pyHIBP/pyHIBP
-Author: Kyra F. Kitsune
-License: UNKNOWN
-Description: pyHIBP (pyHave I Been Pwned)
- ============================
- [![image](https://img.shields.io/pypi/v/pyHIBP.svg)](https://pypi.org/project/pyHIBP/)
- [![image](https://img.shields.io/pypi/l/pyHIBP.svg)](https://pypi.org/project/pyHIBP/)
- [![image](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master)
-
-
- A Python interface to Troy Hunt's 'Have I Been Pwned?' (HIBP) public API. A full reference to the API
- specification can be found at the [HIBP API Reference](https://haveibeenpwned.com/API/v2).
-
- This module detects when the rate limit of the API has been hit, and raises a RuntimeError when the limit is exceeded,
- or when another API-defined error condition is encountered based on the submitted data. Calls
- to the module returning Boolean `True` or the object as decoded from the API query (currently, lists), represent
- a detection that a breached account/paste/password was found; Boolean `False` means that the item was not found.
-
- Note that the `pwnedpasswords` API backend does not have a rate limit. If you are intending to bulk-query passwords or
- hashes, you may also consider downloading the raw data files accessible via the [Pwned Passwords](https://haveibeenpwned.com/Passwords) page.
-
- Installing
- ----------
- ```bash
- $ pip install pyhibp
- ```
-
- Example usage
- -------------
- For an interactive example, check out the Jupyter Notebook for [`pyhibp`](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master?filepath=/pyHIBP.ipynb),
- as well as [`pyhibp.pwnedpasswords`](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master?filepath=/pyHIBP.pwnedpasswords.ipynb).
-
- ```python
- import pyhibp
- from pyhibp import pwnedpasswords as pw
-
- # Check a password to see if it has been disclosed in a public breach corpus
- resp = pw.is_password_breached(password="secret")
- if resp:
- print("Password breached!")
- print("This password was used {0} time(s) before.".format(resp))
-
- # Get breaches that affect a given account
- resp = pyhibp.get_account_breaches(account="test(a)example.com", truncate_response=True)
-
- # Get all breach information
- resp = pyhibp.get_all_breaches()
-
- # Get a single breach
- resp = pyhibp.get_single_breach(breach_name="Adobe")
-
- # Get pastes affecting a given email address
- resp = pyhibp.get_pastes(email_address="test(a)example.com")
-
- # Get data classes in the HIBP system
- resp = pyhibp.get_data_classes()
- ```
-
- Developing
- ----------
- This project is currently intended to be compatible with Python 2 and Python 3. As such, we use virtual environments via `pipenv`.
- To develop or test, execute the following:
-
- ```bash
- # Install the prerequisite virtual environment provider
- $ pip install pipenv
- # Initialize the pipenv environment and install the module within it
- $ make dev
- # To run PEP8, tests, and check the manifest
- $ make tox
- ```
-
- Other commands can be found in the `Makefile`.
-
- Goals
- -----
- - Synchronize to the latest HIBP API(s), implementing endpoint accessing functions where it makes sense. For instance,
- in the interest of security, the ability to submit a SHA-1 to the Pwned Passwords endpoint is not implemented. See
- "Regarding password checking" below for further details.
- - For breaches and pastes, act as an intermediary; return the JSON as received from the service.
-
- Regarding password checking
- ---------------------------
- - For passwords, the option to supply a plaintext password to check is provided as an implementation convenience.
- - For added security, `pwnedpasswords.is_password_breached()` only transmits the first five characters of the SHA-1
- hash to the Pwned Passwords API endpoint; a secure password will remain secure without disclosing the full hash.
-
-Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
-Classifier: Intended Audience :: Developers
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.5
-Description-Content-Type: text/markdown
-Provides-Extra: dev
+Metadata-Version: 2.1
+Name: pyhibp
+Version: 3.1.0
+Summary: An interface to Troy Hunt's 'Have I Been Pwned' public API
+Home-page: https://gitlab.com/kitsunix/pyHIBP/pyHIBP
+Author: Kyra F. Kitsune
+License: UNKNOWN
+Description: pyHIBP (pyHave I Been Pwned)
+ ============================
+ [![image](https://img.shields.io/pypi/v/pyHIBP.svg)](https://pypi.org/project/pyHIBP/)
+ [![image](https://img.shields.io/pypi/l/pyHIBP.svg)](https://pypi.org/project/pyHIBP/)
+ [![image](https://mybinder.org/badge.svg)](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master)
+
+
+ A Python interface to Troy Hunt's 'Have I Been Pwned?' (HIBP) public API. A full reference to the API
+ specification can be found at the [HIBP API Reference](https://haveibeenpwned.com/API/v2).
+
+ This module detects when the rate limit of the API has been hit, and raises a RuntimeError when the limit
+ is exceeded, or when another API-defined error condition is encountered based on the submitted data. When
+ data is found from a call, the data returned will be in the format as retrieved from the endpoint, documented
+ in the return-type information for the relevant function.
+
+ Note that the `pwnedpasswords` API backend does not have a rate limit. If you are intending to bulk-query passwords or
+ hashes, you should consider downloading the raw data files accessible via the [Pwned Passwords](https://haveibeenpwned.com/Passwords) page.
+
+ Installing
+ ----------
+ ```bash
+ $ pip install pyhibp
+ ```
+
+ Example usage
+ -------------
+ For an interactive example, check out the Jupyter Notebook for [`pyhibp`](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master?filepath=/pyHIBP.ipynb),
+ as well as [`pyhibp.pwnedpasswords`](https://mybinder.org/v2/gl/kitsunix%2FpyHIBP%2FpyHIBP-binder/master?filepath=/pyHIBP.pwnedpasswords.ipynb).
+
+ ```python
+ import pyhibp
+ from pyhibp import pwnedpasswords as pw
+
+ # Check a password to see if it has been disclosed in a public breach corpus
+ resp = pw.is_password_breached(password="secret")
+ if resp:
+ print("Password breached!")
+ print("This password was used {0} time(s) before.".format(resp))
+
+ # Get breaches that affect a given account
+ resp = pyhibp.get_account_breaches(account="test(a)example.com", truncate_response=True)
+
+ # Get all breach information
+ resp = pyhibp.get_all_breaches()
+
+ # Get a single breach
+ resp = pyhibp.get_single_breach(breach_name="Adobe")
+
+ # Get pastes affecting a given email address
+ resp = pyhibp.get_pastes(email_address="test(a)example.com")
+
+ # Get data classes in the HIBP system
+ resp = pyhibp.get_data_classes()
+ ```
+
+ Developing
+ ----------
+ This project is currently intended to be compatible with Python 2 and Python 3. As such, we use virtual environments via `pipenv`.
+ To develop or test, execute the following:
+
+ ```bash
+ # Install the prerequisite virtual environment provider
+ $ pip install pipenv
+ # Initialize the pipenv environment and install the module within it
+ $ make dev
+ # To run PEP8, tests, and check the manifest
+ $ make tox
+ ```
+
+ Other commands can be found in the `Makefile`.
+
+ Goals
+ -----
+ - Synchronize to the latest HIBP API(s), implementing endpoint accessing functions where it makes sense. For instance,
+ in the interest of security, the ability to submit a SHA-1 to the Pwned Passwords endpoint is not implemented. See
+ "Regarding password checking" below for further details.
+ - For breaches and pastes, act as an intermediary; return the JSON as received from the service.
+
+ Regarding password checking
+ ---------------------------
+ - For passwords, the option to supply a plaintext password to check is provided as an implementation convenience.
+ - For added security, `pwnedpasswords.is_password_breached()` only transmits the first five characters of the SHA-1
+ hash to the Pwned Passwords API endpoint; a secure password will remain secure without disclosing the full hash.
+
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Intended Audience :: Developers
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.5
+Description-Content-Type: text/markdown
+Provides-Extra: dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/test/conftest.py new/pyhibp-3.1.0/test/conftest.py
--- old/pyhibp-3.0.0/test/conftest.py 2018-11-10 01:39:46.000000000 +0100
+++ new/pyhibp-3.1.0/test/conftest.py 2019-06-30 10:46:02.000000000 +0200
@@ -1,3 +1,5 @@
+import time
+
import pytest
import pyhibp
@@ -7,3 +9,16 @@
def dev_user_agent(monkeypatch):
ua_string = pyhibp.pyHIBP_USERAGENT
monkeypatch.setattr(pyhibp, 'pyHIBP_USERAGENT', ua_string + " (Testing Suite)")
+
+
+(a)pytest.fixture(name="sleep")
+def sleep_test(request):
+ """
+ For the endpoints where a rate limit is specified, or we want to be kind to the endpoint and not
+ needlessly execute requests too quickly, this specifies a test module-configurable sleep duration.
+
+ Usage: Specify a module-level variable named `_PYTEST_SLEEP_DURATION`, and the value is an int,
+ specifying the number of seconds to sleep between test invocations.
+ """
+ sleep_duration = getattr(request.module, "_PYTEST_SLEEP_DURATION", 0)
+ time.sleep(sleep_duration)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/test/test_pwnedpasswords.py new/pyhibp-3.1.0/test/test_pwnedpasswords.py
--- old/pyhibp-3.0.0/test/test_pwnedpasswords.py 2018-11-10 01:39:46.000000000 +0100
+++ new/pyhibp-3.1.0/test/test_pwnedpasswords.py 2019-06-30 10:46:02.000000000 +0200
@@ -1,10 +1,11 @@
import hashlib
-import time
import pytest
from pyhibp import pwnedpasswords as pw
+# While the pwnedpasswords endpoint does not have a limit, be kind anyway. 1 second sleep.
+_PYTEST_SLEEP_DURATION = 1
TEST_PASSWORD = "password"
TEST_PASSWORD_SHA1_HASH = hashlib.sha1(TEST_PASSWORD.encode('utf-8')).hexdigest()
@@ -13,18 +14,12 @@
TEST_PASSWORD_LIKELY_NOT_COMPROMISED_HASH = hashlib.sha1(TEST_PASSWORD_LIKELY_NOT_COMPROMISED.encode('utf-8')).hexdigest()
-(a)pytest.fixture(autouse=True)
-def rate_limit():
- # There's no rate limit on passwords, but be nice anyway.
- time.sleep(1)
-
-
class TestIsPasswordBreached(object):
def test_no_params_provided_raises(self):
# is_password_breached(password=None, first_5_hash_chars=None, sha1_hash=None):
with pytest.raises(AttributeError) as execinfo:
pw.is_password_breached()
- assert "One of password, first_5_hash_chars, or sha1_hash must be provided." in str(execinfo.value)
+ assert "One of password, sha1_hash, or first_5_hash_chars must be provided." in str(execinfo.value)
def test_password_not_string_raises(self):
# is_password_breached(password=123, first_5_hash_chars=None, sha1_hash=None):
@@ -33,12 +28,14 @@
assert "password must be a string type." in str(execinfo.value)
def test_first_5_hash_chars_not_string_raises(self):
+ # TODO: Deprecated: To be removed in next major release in favor of pw.suffix_search()
# is_password_breached(password=None, first_5_hash_chars=123, sha1_hash=None):
with pytest.raises(AttributeError) as execinfo:
pw.is_password_breached(first_5_hash_chars=123)
assert "first_5_hash_chars must be a string type." in str(execinfo.value)
def test_first_5_hash_chars_not_length_five_raises(self):
+ # TODO: Deprecated: To be removed in next major release in favor of pw.suffix_search()
# is_password_breached(password=None, first_5_hash_chars="123456", sha1_hash=None):
with pytest.raises(AttributeError) as execinfo:
pw.is_password_breached(first_5_hash_chars="123456")
@@ -50,7 +47,9 @@
pw.is_password_breached(sha1_hash=123)
assert "sha1_hash must be a string type." in str(execinfo.value)
+ @pytest.mark.usefixtures('sleep')
def test_list_of_partial_hashes_returned_with_5chars(self):
+ # TODO: Deprecated: To be removed in next major release in favor of pw.suffix_search()
# is_password_breached(password=None, first_5_hash_chars=TEST_PASSWORD_SHA1_HASH[0:5], sha1_hash=None):
resp = pw.is_password_breached(first_5_hash_chars=TEST_PASSWORD_SHA1_HASH[0:5])
assert isinstance(resp, list)
@@ -62,11 +61,13 @@
break
assert match_found
+ @pytest.mark.usefixtures('sleep')
def test_provide_password_to_function(self):
resp = pw.is_password_breached(password="password")
assert isinstance(resp, int)
assert resp > 100
+ @pytest.mark.usefixtures('sleep')
def test_ensure_case_sensitivity_of_hash_does_not_matter(self):
resp_one = pw.is_password_breached(sha1_hash=TEST_PASSWORD_SHA1_HASH.lower())
assert isinstance(resp_one, int)
@@ -78,7 +79,44 @@
assert resp_one == resp_two
+ @pytest.mark.usefixtures('sleep')
def test_zero_count_result_for_non_breached_password(self):
resp = pw.is_password_breached(password=TEST_PASSWORD_LIKELY_NOT_COMPROMISED)
assert isinstance(resp, int)
assert resp == 0
+
+
+class TestSuffixSearch(object):
+ def test_no_param_provided_raises(self):
+ # def suffix_search(hash_prefix=None):
+ with pytest.raises(AttributeError) as execinfo:
+ pw.suffix_search()
+ assert "hash_prefix must be a supplied, and be a string-type." in str(execinfo.value)
+
+ def test_hash_prefix_not_string_raises(self):
+ # def suffix_search(hash_prefix=123):
+ with pytest.raises(AttributeError) as execinfo:
+ pw.suffix_search(hash_prefix=123)
+ assert "hash_prefix must be a supplied, and be a string-type." in str(execinfo.value)
+
+ def test_first_5_hash_chars_not_length_five_raises(self):
+ # suffix_search(hash_prefix="123456"):
+ with pytest.raises(AttributeError) as execinfo:
+ pw.suffix_search(hash_prefix="123456")
+ assert "hash_prefix must be of length 5." in str(execinfo.value)
+
+ @pytest.mark.usefixtures('sleep')
+ def test_list_of_hashes_returned(self):
+ """
+ Test all parameters: The response format for all parameters is the same.
+ """
+ resp = pw.suffix_search(hash_prefix=TEST_PASSWORD_SHA1_HASH[0:5])
+
+ assert isinstance(resp, list)
+ assert len(resp) > 100
+ match_found = False
+ for entry in resp:
+ if TEST_PASSWORD_SHA1_HASH[5:] in entry.lower():
+ match_found = True
+ break
+ assert match_found
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/test/test_pyHIBP.py new/pyhibp-3.1.0/test/test_pyHIBP.py
--- old/pyhibp-3.0.0/test/test_pyHIBP.py 2018-11-10 01:39:46.000000000 +0100
+++ new/pyhibp-3.1.0/test/test_pyHIBP.py 2019-06-30 10:46:02.000000000 +0200
@@ -1,4 +1,3 @@
-import time
import uuid
import pytest
@@ -6,6 +5,9 @@
import pyhibp
+# The breach/paste endpoints enforce a 1500 ms rate limit; so sleep 2 seconds.
+_PYTEST_SLEEP_DURATION = 2
+
TEST_ACCOUNT = "test(a)example.com"
TEST_DOMAIN = "adobe.com"
TEST_DOMAIN_NAME = "Adobe"
@@ -13,13 +15,8 @@
TEST_NONEXISTENT_ACCOUNT_NAME = "353e8061f2befecb6818ba0c034c632fb0bcae1b"
-(a)pytest.fixture(autouse=True)
-def rate_limit():
- # The HIBP API has a rate-limit of 1500ms. Sleep for 2 seconds between each test.
- time.sleep(2)
-
-
-class TestGetBreaches(object):
+class TestGetAccountBreaches(object):
+ @pytest.mark.usefixtures('sleep')
def test_get_breaches_account(self):
# get_account_breaches(account=TEST_ACCOUNT, domain=None, truncate_response=False, include_unverified=False):
resp = pyhibp.get_account_breaches(account=TEST_ACCOUNT)
@@ -28,6 +25,7 @@
assert len(resp) >= 20
assert isinstance(resp[0], dict)
+ @pytest.mark.usefixtures('sleep')
def test_get_breaches_account_with_domain(self):
# get_account_breaches(account=TEST_ACCOUNT, domain=TEST_DOMAIN, truncate_response=False, include_unverified=False):
resp = pyhibp.get_account_breaches(account=TEST_ACCOUNT, domain=TEST_DOMAIN)
@@ -37,6 +35,7 @@
assert isinstance(resp[0], dict)
assert resp[0]['Name'] == TEST_DOMAIN_NAME
+ @pytest.mark.usefixtures('sleep')
def test_get_breaches_account_with_truncation(self):
# get_account_breaches(account=TEST_ACCOUNT, domain=None, truncate_response=True, include_unverified=False):
resp = pyhibp.get_account_breaches(account=TEST_ACCOUNT, truncate_response=True)
@@ -49,6 +48,7 @@
assert 'Name' in item
assert 'DataClasses' not in item
+ @pytest.mark.usefixtures('sleep')
def test_get_breaches_retrieve_all_breaches_with_unverified(self):
# get_account_breaches(account=TEST_ACCOUNT, domain=None, truncate_response=False, include_unverified=True):
resp = pyhibp.get_account_breaches(account=TEST_ACCOUNT, include_unverified=True)
@@ -62,11 +62,15 @@
break
assert has_unverified
+ @pytest.mark.usefixtures('sleep')
def test_get_breaches_return_false_if_no_accounts(self):
# get_account_breaches(account=TEST_PASSWORD_SHA1_HASH, domain=None, truncate_response=False, include_unverified=False):
resp = pyhibp.get_account_breaches(account=TEST_NONEXISTENT_ACCOUNT_NAME)
assert not resp
assert isinstance(resp, bool)
+ # TODO: v4.0.0:
+ # assert not resp
+ # assert isinstance(resp, list)
def test_get_breaches_raise_if_account_is_not_specified(self):
# get_account_breaches(account=1, domain=None, truncate_response=False, include_unverified=False):
@@ -91,6 +95,7 @@
class TestGetAllBreaches(object):
+ @pytest.mark.usefixtures('sleep')
def test_get_all_breaches(self):
# def get_all_breaches(domain=None):
resp = pyhibp.get_all_breaches()
@@ -98,6 +103,7 @@
assert len(resp) > 50
assert isinstance(resp[0], dict)
+ @pytest.mark.usefixtures('sleep')
def test_get_all_breaches_filter_to_domain(self):
# def get_all_breaches(domain=TEST_DOMAIN):
resp = pyhibp.get_all_breaches(domain=TEST_DOMAIN)
@@ -107,10 +113,14 @@
assert isinstance(resp[0], dict)
assert resp[0]['Name'] == TEST_DOMAIN_NAME
+ @pytest.mark.usefixtures('sleep')
def test_get_all_breaches_false_if_domain_does_not_exist(self):
resp = pyhibp.get_all_breaches(domain=TEST_NONEXISTENT_ACCOUNT_NAME)
assert not resp
assert isinstance(resp, bool)
+ # TODO: v4.0.0:
+ # assert not resp
+ # assert isinstance(resp, list)
def test_get_all_breaches_raise_if_not_string(self):
# def get_all_breaches(domain=1):
@@ -121,17 +131,22 @@
class TestGetSingleBreach(object):
+ @pytest.mark.usefixtures('sleep')
def test_get_single_breach(self):
# get_single_breach(breach_name=TEST_DOMAIN_NAME)
resp = pyhibp.get_single_breach(breach_name=TEST_DOMAIN_NAME)
assert isinstance(resp, dict)
assert resp['Name'] == TEST_DOMAIN_NAME
+ @pytest.mark.usefixtures('sleep')
def test_get_single_breach_when_breach_does_not_exist(self):
# get_single_breach(breach_name="ThisShouldNotExist")
resp = pyhibp.get_single_breach(breach_name="ThisShouldNotExist")
# Boolean False will be returned from the above (as there is no breach named what we gave it).
assert not resp
+ # TODO: v4.0.0:
+ # assert not resp
+ # assert isinstance(resp, dict)
def test_get_single_breach_raise_when_breach_name_not_specified(self):
# get_single_breach()
@@ -149,6 +164,7 @@
class TestGetPastes(object):
+ @pytest.mark.usefixtures('sleep')
def test_get_pastes(self):
# get_pastes(email_address=TEST_ACCOUNT):
resp = pyhibp.get_pastes(email_address=TEST_ACCOUNT)
@@ -162,7 +178,11 @@
resp = pyhibp.get_pastes(email_address=TEST_NONEXISTENT_ACCOUNT_NAME + "@example.invalid")
assert not resp
assert isinstance(resp, bool)
+ # TODO: v4.0.0:
+ # assert not resp
+ # assert isinstance(resp, list)
+ @pytest.mark.usefixtures('sleep')
def test_get_pastes_raise_if_email_not_specified(self):
# get_pastes():
with pytest.raises(AttributeError) as excinfo:
@@ -177,6 +197,7 @@
class TestGetDataClasses(object):
+ @pytest.mark.usefixtures('sleep')
def test_get_data_classes(self):
# get_data_classes():
resp = pyhibp.get_data_classes()
@@ -187,6 +208,7 @@
class TestMiscellaneous(object):
@pytest.mark.xfail(reason="The rate limit exists in the API docs, but responses are cached, and even attempting to manually (via browser) hit the limit isn't happening.")
+ @pytest.mark.usefixtures('sleep')
def test_raise_if_rate_limit_exceeded(self):
""" The API will respond the same to all exceeded rate limits across all endpoints """
# The rate limit exists, however all responses are cached; so we need to generate some random "accounts".
@@ -197,6 +219,7 @@
pyhibp.get_account_breaches(account=item, truncate_response=True)
assert "HTTP 429" in str(excinfo.value)
+ @pytest.mark.usefixtures('sleep')
def test_raise_if_useragent_is_not_set(self, monkeypatch):
# This should never be encountered normally, since we have the module-level variable/constant;
# That said, test it, since we can, and since we might as well cover the line of code.
@@ -206,6 +229,7 @@
pyhibp.get_account_breaches(account="{0}(a)test-suite.pyhibp.example.com".format(str(uuid.uuid4())))
assert "HTTP 403" in str(excinfo.value)
+ @pytest.mark.usefixtures('sleep')
def test_raise_if_invalid_format_submitted(self):
# For example, if a null (0x00) character is submitted to an endpoint.
with pytest.raises(RuntimeError) as execinfo:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyhibp-3.0.0/tox.ini new/pyhibp-3.1.0/tox.ini
--- old/pyhibp-3.0.0/tox.ini 2018-11-10 01:39:46.000000000 +0100
+++ new/pyhibp-3.1.0/tox.ini 2019-06-30 10:46:02.000000000 +0200
@@ -1,11 +1,12 @@
[tox]
-envlist = py{27,35,36}
+envlist = py{27,35,36,37}
[testenv]
basepython =
py27: python2.7
py35: python3.5
py36: python3.6
+ py37: python3.7
passenv =
TOXENV
PIP_CACHE_DIR
1
0
Hello community,
here is the log from the commit of package php7-redis for openSUSE:Factory checked in at 2019-07-02 10:39:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/php7-redis (Old)
and /work/SRC/openSUSE:Factory/.php7-redis.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "php7-redis"
Tue Jul 2 10:39:44 2019 rev:15 rq:712984 version:5.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/php7-redis/php7-redis.changes 2019-03-18 10:38:33.575488189 +0100
+++ /work/SRC/openSUSE:Factory/.php7-redis.new.4615/php7-redis.changes 2019-07-02 10:39:46.162707223 +0200
@@ -1,0 +2,31 @@
+Tue Jul 2 06:31:59 UTC 2019 - Johannes Weberhofer <jweberhofer(a)weberhofer.at>
+
+- Update to 5.0.0
+ This release contains important improvements and breaking changes.
+ The most interesting are: drop PHP5 support, RedisCluster slots caching,
+ JSON and msgpack serializers, soft deprecation of non-Redis commands.
+
+ * Remove HAVE_SPL
+ * Allow compilation without JSON serialization enabled and fixes for
+ deprecated helper methods.
+ * Enable connection pooling by default
+ * Soft deprecate methods that aren't actually Redis commands
+ * Enable pooling for cluster slave nodes
+ * xInfo response format
+ * Make the XREADGROUP optional COUNT and BLOCK arguments nullable
+ * Allow PING to take an optional argument
+ * Allow ZRANGE to be called either with `true` or `['withscores' => true]`
+ * Allow to specify server address as schema://host
+ * Allow persistent_id to be passed as NULL with strict_types enabled
+ * Add server address to exception message
+ * Adds OPT_REPLY_LITERAL for rawCommand and EVAL
+ * JSON serializer
+ * Add support for STREAM to the type command
+ * Fix TypeError when using built-in constants in `setOption`
+ * Handle references in MGET
+ * msgpack serializer
+ * Add Cluster slots caching
+ * Drop PHP5 support
+ * Documentation improvements
+
+-------------------------------------------------------------------
Old:
----
redis-4.3.0.tgz
New:
----
redis-5.0.0.tgz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ php7-redis.spec ++++++
--- /var/tmp/diff_new_pack.oEqOQn/_old 2019-07-02 10:39:46.742708105 +0200
+++ /var/tmp/diff_new_pack.oEqOQn/_new 2019-07-02 10:39:46.746708112 +0200
@@ -12,14 +12,14 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define php_name php7
%define pkg_name redis
Name: %{php_name}-%{pkg_name}
-Version: 4.3.0
+Version: 5.0.0
Release: 0
Summary: API for communicating with Redis servers
License: PHP-3.01
++++++ redis-4.3.0.tgz -> redis-5.0.0.tgz ++++++
++++ 74450 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package kakoune for openSUSE:Factory checked in at 2019-07-02 10:39:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kakoune (Old)
and /work/SRC/openSUSE:Factory/.kakoune.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kakoune"
Tue Jul 2 10:39:42 2019 rev:13 rq:712982 version:2019.07.01
Changes:
--------
--- /work/SRC/openSUSE:Factory/kakoune/kakoune.changes 2019-01-24 14:13:17.975370467 +0100
+++ /work/SRC/openSUSE:Factory/.kakoune.new.4615/kakoune.changes 2019-07-02 10:39:44.538704752 +0200
@@ -1,0 +2,27 @@
+Tue Jul 2 06:56:50 UTC 2019 - mvetter(a)suse.com
+
+- Update to 2018.07.01:
+ * Re-organized bundled script files directory hierarchy.
+ * Introduced helpers to write/read from file in scripts with
+ %file{...} expansion and echo -to-file <filename>.
+ * Added ClientCreate and ClientClose hooks
+ * edit -scratch with no buffer name will create a new
+ scratch buffer with a unique autogenerated name.
+ * info -placement is now info -style and supports
+ menu and modal additional styles.
+ * completions option type docstring are now arbitrary
+ kakoune commands that are run on item select.
+ * InsertCompletionSelect hook has been removed as
+ completions commands now provides a similar feature.
+ * Introduced a module system using the provide-module and
+ require-module commands that allows for lazily loading language
+ support files with dependency resolution.
+ * Added a new hook ModuleLoaded which is run after a module is
+ loaded, allowing for module specific configuration.
+ * Shell quoting of lists is not automatic anymore, $kak_quoted_...
+ makes it opt-in, and works for all option types.
+ * Lower case function key syntax is not accepted anymore,
+ <f1> should be converted to <F1>.
+- Change to gnu++17 standard
+
+-------------------------------------------------------------------
Old:
----
kakoune-2019.01.20.tar.bz2
New:
----
kakoune-2019.07.01.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kakoune.spec ++++++
--- /var/tmp/diff_new_pack.MTVxsK/_old 2019-07-02 10:39:45.374706024 +0200
+++ /var/tmp/diff_new_pack.MTVxsK/_new 2019-07-02 10:39:45.378706030 +0200
@@ -17,7 +17,7 @@
Name: kakoune
-Version: 2019.01.20
+Version: 2019.07.01
Release: 0
Summary: A code editor heavily inspired by Vim
License: Unlicense
@@ -48,7 +48,7 @@
%if 0%{?suse_version} < 1320
export CXX=g++-5
%endif
-make %{?_smp_mflags} CXXFLAGS="%{optflags} -std=gnu++14"
+make %{?_smp_mflags} CXXFLAGS="%{optflags} -std=gnu++17"
%install
make %{?_smp_mflags} install PREFIX=%{buildroot}%{_prefix}
++++++ kakoune-2019.01.20.tar.bz2 -> kakoune-2019.07.01.tar.bz2 ++++++
++++ 28159 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package matomo for openSUSE:Factory checked in at 2019-07-02 10:39:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/matomo (Old)
and /work/SRC/openSUSE:Factory/.matomo.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "matomo"
Tue Jul 2 10:39:39 2019 rev:14 rq:712941 version:3.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/matomo/matomo.changes 2019-03-22 15:12:26.401291015 +0100
+++ /work/SRC/openSUSE:Factory/.matomo.new.4615/matomo.changes 2019-07-02 10:39:42.998702408 +0200
@@ -1,0 +2,30 @@
+Tue Jul 2 05:49:07 UTC 2019 - ecsos(a)opensuse.org
+
+- Update to 3.10.0
+ * Breaking Changes
+ - When giving a user superuser access through the
+ UsersManager.setSuperUserAccess API, a new parameter
+ passwordConfirmation needs to be sent along with the request
+ containing the current password of the user issuing the API
+ request.
+ - Website referrer URLs are now detected using domain only
+ instead of domain and path. This means if you have two
+ different websites on the same domain, but different paths,
+ and a visitor visits from one to the other, it won't have
+ a referrer website set.
+ - Custom Dimensions values set with setCustomDimension are now
+ URL encoded (they previously weren't). If you were manually
+ URL encoding the custom dimension values before calling
+ setCustomDimension, your custom dimension values appearing in
+ reports and Visits log/Visitor profile may now be double URL
+ encoded. To solve the double encoding issue, you can remove
+ your URL encoding and trust that Matomo JavaScript Tracker
+ will URL encode the values correctly.
+ * New APIs
+ - A new tracker method ping has been added to send a ping
+ request manually instead of using the heart beat timer.
+ - Added new event ViewDataTable.configure.end, triggered after
+ view configuration properties have been overwritten by saved
+ settings and query parameters.
+
+-------------------------------------------------------------------
Old:
----
matomo-3.9.1.tar.gz
New:
----
matomo-3.10.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ matomo.spec ++++++
--- /var/tmp/diff_new_pack.o7z1K5/_old 2019-07-02 10:39:43.958703869 +0200
+++ /var/tmp/diff_new_pack.o7z1K5/_new 2019-07-02 10:39:43.966703881 +0200
@@ -31,7 +31,7 @@
%endif
Name: matomo
-Version: 3.9.1
+Version: 3.10.0
Release: 0
Summary: Web analytics platform
License: GPL-3.0-or-later
++++++ matomo-3.9.1.tar.gz -> matomo-3.10.0.tar.gz ++++++
/work/SRC/openSUSE:Factory/matomo/matomo-3.9.1.tar.gz /work/SRC/openSUSE:Factory/.matomo.new.4615/matomo-3.10.0.tar.gz differ: char 5, line 1
1
0
Hello community,
here is the log from the commit of package perl-PDF-API2 for openSUSE:Factory checked in at 2019-07-02 10:39:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-PDF-API2 (Old)
and /work/SRC/openSUSE:Factory/.perl-PDF-API2.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-PDF-API2"
Tue Jul 2 10:39:37 2019 rev:16 rq:712936 version:2.034
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-PDF-API2/perl-PDF-API2.changes 2017-07-21 22:47:43.838850957 +0200
+++ /work/SRC/openSUSE:Factory/.perl-PDF-API2.new.4615/perl-PDF-API2.changes 2019-07-02 10:39:40.662698853 +0200
@@ -1,0 +2,36 @@
+Sun Jun 30 05:21:25 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to 2.034
+ see /usr/share/doc/packages/perl-PDF-API2/Changes
+
+ 2.034 2019-06-29
+
+ - SUPPORTED PERL VERSIONS: Starting with this release, PDF::API2 will
+ support major Perl versions released in the past six years, plus the major
+ release before that one. This should provide backward compatibility for
+ the life of most LTS server distributions, while eliminating the need to
+ troubleshoot warnings and bugs that only show up in increasingly-ancient
+ versions of Perl.
+
+ For this release, it means that the minimum supported Perl is 5.18, which
+ was first released on 2013-05-18.
+
+ - Add support for cross-reference streams using 64-bit field widths.
+
+ - When the utf8 flag is set for a PDF string, automatically encode it as
+ UCS-16BE instead of requiring a separate flag to be set in the PDF object.
+ This resolves [RT #33497] and [RT #117031] in addition to making the code
+ easier to maintain.
+
+ - [RT #126274] Fix alignment when using UniFont with text_center or
+ text_right when all characters are in the same block.
+
+ - [RT #121911] Fix adding pages to a document structure with nested Pages
+ elements. This included a fairly substantial rewrite of the relevant
+ code, so please report any new bugs related to adding pages (report and
+ troubleshooting by Vadim Repin).
+
+ - Renamed pdfile() to pdf_file() in PDF::API2::Annotation and
+ PDF::API2::Outline. The old name continues to work, but is deprecated.
+
+-------------------------------------------------------------------
Old:
----
PDF-API2-2.033.tar.gz
New:
----
PDF-API2-2.034.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-PDF-API2.spec ++++++
--- /var/tmp/diff_new_pack.qV0T7k/_old 2019-07-02 10:39:41.394699967 +0200
+++ /var/tmp/diff_new_pack.qV0T7k/_new 2019-07-02 10:39:41.394699967 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-PDF-API2
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -12,18 +12,18 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: perl-PDF-API2
-Version: 2.033
+Version: 2.034
Release: 0
%define cpan_name PDF-API2
Summary: Facilitates the creation and modification of PDF files
-License: LGPL-2.1+
+License: LGPL-2.1-or-later
Group: Development/Libraries/Perl
-Url: http://search.cpan.org/dist/PDF-API2/
+Url: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/S/SS/SSIMMS/%{cpan_name}-%{version}.ta…
Source1: cpanspec.yml
BuildArch: noarch
@@ -45,11 +45,11 @@
%setup -q -n %{cpan_name}-%{version}
%build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-%{__make} %{?_smp_mflags}
+perl Makefile.PL INSTALLDIRS=vendor
+make %{?_smp_mflags}
%check
-%{__make} test
+make test
%install
%perl_make_install
@@ -58,7 +58,7 @@
%files -f %{name}.files
%defattr(-,root,root,755)
-%doc Changes PATENTS README
+%doc Changes contrib PATENTS README
%license LICENSE
%changelog
++++++ PDF-API2-2.033.tar.gz -> PDF-API2-2.034.tar.gz ++++++
++++ 6008 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package perl-Test-Compile for openSUSE:Factory checked in at 2019-07-02 10:39:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Test-Compile (Old)
and /work/SRC/openSUSE:Factory/.perl-Test-Compile.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Test-Compile"
Tue Jul 2 10:39:34 2019 rev:7 rq:712935 version:2.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Test-Compile/perl-Test-Compile.changes 2019-06-28 16:37:01.774878275 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Test-Compile.new.4615/perl-Test-Compile.changes 2019-07-02 10:39:35.706691312 +0200
@@ -1,0 +2,6 @@
+Mon Jul 1 05:30:35 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to 2.1.1
+ see /usr/share/doc/packages/perl-Test-Compile/Changes
+
+-------------------------------------------------------------------
Old:
----
Test-Compile-v2.1.0.tar.gz
New:
----
Test-Compile-v2.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Test-Compile.spec ++++++
--- /var/tmp/diff_new_pack.9gztmX/_old 2019-07-02 10:39:36.966693229 +0200
+++ /var/tmp/diff_new_pack.9gztmX/_new 2019-07-02 10:39:36.970693235 +0200
@@ -17,7 +17,7 @@
Name: perl-Test-Compile
-Version: 2.1.0
+Version: 2.1.1
Release: 0
%define cpan_name Test-Compile
Summary: Check whether Perl files compile correctly
++++++ Test-Compile-v2.1.0.tar.gz -> Test-Compile-v2.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/Changes new/Test-Compile-v2.1.1/Changes
--- old/Test-Compile-v2.1.0/Changes 2019-06-27 12:26:28.000000000 +0200
+++ new/Test-Compile-v2.1.1/Changes 2019-07-01 03:20:51.000000000 +0200
@@ -1,6 +1,9 @@
Revision history for Perl extension Test-Compile
-v2.1.0 2019-XX-XX
+v2.1.1 2019-07-01 (Evan Giles <egiles(a)cpan.org>)
+ - Correct the POD
+
+v2.1.0 2019-06-29 (Evan Giles <egiles(a)cpan.org>)
- Update copyright
- Add all_pm_files_ok() and all_pl_files_ok() methods to the internal class
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/MANIFEST new/Test-Compile-v2.1.1/MANIFEST
--- old/Test-Compile-v2.1.0/MANIFEST 2019-06-27 12:26:28.000000000 +0200
+++ new/Test-Compile-v2.1.1/MANIFEST 2019-07-01 03:20:51.000000000 +0200
@@ -12,6 +12,7 @@
t/100-internal--find-files.t
t/100-internal--is-in-taint-mode.t
t/100-internal--read-shebang.t
+t/100-internal--test-methods.t
t/100-internal-all-pl-files.t
t/100-internal-all-pm-files.t
t/100-internal-basic.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/META.json new/Test-Compile-v2.1.1/META.json
--- old/Test-Compile-v2.1.0/META.json 2019-06-27 12:26:28.000000000 +0200
+++ new/Test-Compile-v2.1.1/META.json 2019-07-01 03:20:51.000000000 +0200
@@ -35,11 +35,11 @@
"provides" : {
"Test::Compile" : {
"file" : "lib/Test/Compile.pm",
- "version" : "v2.1.0"
+ "version" : "v2.1.1"
},
"Test::Compile::Internal" : {
"file" : "lib/Test/Compile/Internal.pm",
- "version" : "v2.1.0"
+ "version" : "v2.1.1"
}
},
"release_status" : "stable",
@@ -51,6 +51,6 @@
"url" : "http://github.com/egiles/test-compile"
}
},
- "version" : "v2.1.0",
+ "version" : "v2.1.1",
"x_serialization_backend" : "JSON::PP version 2.27400_02"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/META.yml new/Test-Compile-v2.1.1/META.yml
--- old/Test-Compile-v2.1.0/META.yml 2019-06-27 12:26:28.000000000 +0200
+++ new/Test-Compile-v2.1.1/META.yml 2019-07-01 03:20:51.000000000 +0200
@@ -15,10 +15,10 @@
provides:
Test::Compile:
file: lib/Test/Compile.pm
- version: v2.1.0
+ version: v2.1.1
Test::Compile::Internal:
file: lib/Test/Compile/Internal.pm
- version: v2.1.0
+ version: v2.1.1
recommends:
Devel::CheckOS: '0'
requires:
@@ -30,5 +30,5 @@
resources:
license: http://dev.perl.org/licenses/
repository: http://github.com/egiles/test-compile
-version: v2.1.0
+version: v2.1.1
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/Makefile.PL new/Test-Compile-v2.1.1/Makefile.PL
--- old/Test-Compile-v2.1.0/Makefile.PL 2019-06-27 12:26:28.000000000 +0200
+++ new/Test-Compile-v2.1.1/Makefile.PL 2019-07-01 03:20:51.000000000 +0200
@@ -3,16 +3,16 @@
use ExtUtils::MakeMaker;
WriteMakefile
(
- 'NAME' => 'Test::Compile',
- 'INSTALLDIRS' => 'site',
- 'EXE_FILES' => [],
'PREREQ_PM' => {
- 'parent' => '0.225',
- 'UNIVERSAL::require' => 0,
+ 'version' => 0,
'Exporter' => '5.68',
- 'version' => 0
+ 'UNIVERSAL::require' => 0,
+ 'parent' => '0.225'
},
+ 'PL_FILES' => {},
+ 'EXE_FILES' => [],
'VERSION_FROM' => 'lib/Test/Compile.pm',
- 'PL_FILES' => {}
+ 'INSTALLDIRS' => 'site',
+ 'NAME' => 'Test::Compile'
)
;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/lib/Test/Compile/Internal.pm new/Test-Compile-v2.1.1/lib/Test/Compile/Internal.pm
--- old/Test-Compile-v2.1.0/lib/Test/Compile/Internal.pm 2019-06-27 12:26:28.000000000 +0200
+++ new/Test-Compile-v2.1.1/lib/Test/Compile/Internal.pm 2019-07-01 03:20:51.000000000 +0200
@@ -3,7 +3,7 @@
use warnings;
use strict;
-use version; our $VERSION = qv("v2.1.0");
+use version; our $VERSION = qv("v2.1.1");
use File::Spec;
use UNIVERSAL::require;
use Test::Builder;
@@ -273,7 +273,7 @@
$self->{test}->ok(@args);
}
-=item C<plan($count)>
+=item C<plan(tests => $count)>
Defines how many tests you plan to run.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/lib/Test/Compile.pm new/Test-Compile-v2.1.1/lib/Test/Compile.pm
--- old/Test-Compile-v2.1.0/lib/Test/Compile.pm 2019-06-27 12:26:28.000000000 +0200
+++ new/Test-Compile-v2.1.1/lib/Test/Compile.pm 2019-07-01 03:20:51.000000000 +0200
@@ -3,7 +3,7 @@
use warnings;
use strict;
-use version; our $VERSION = qv("v2.1.0");
+use version; our $VERSION = qv("v2.1.1");
use parent 'Exporter';
use UNIVERSAL::require;
use Test::Compile::Internal;
@@ -16,8 +16,9 @@
=head1 SYNOPSIS
- # The OO way (recommended)
use Test::Compile;
+
+ # The OO way (recommended)
my $test = Test::Compile->new();
$test->all_files_ok();
$test->done_testing();
@@ -101,7 +102,7 @@
in C<@dirs> and in directories below. If C<@dirs> is undefined, it
searches F<blib> if F<blib> exists, or else F<lib>.
-Skips any files in C<CVS> or C<.svn> directories.
+Skips any files in C<CVS>, C<.svn>, or C<.git> directories.
The order of the files returned is machine-dependent. If you want them
sorted, you'll have to sort them yourself.
@@ -114,7 +115,7 @@
If C<@dirs> is undefined, it searches F<script> if F<script> exists, or else
F<bin> if F<bin> exists.
-Skips any files in C<CVS> or C<.svn> directories.
+Skips any files in C<CVS>, C<.svn>, or C<.git> directories.
The order of the files returned is machine-dependent. If you want them
sorted, you'll have to sort them yourself.
@@ -185,7 +186,11 @@
stop and you'll have to import them explicitly.
Even then, you really should use the object oriented methods as they provide
-a more consistent interface.
+a more consistent interface. For example: C<all_pm_files_ok()> calls the
+C<plan()> function - so you can't call multiple test functions in the same test file.
+
+You should definately use the object oriented interface described in the L</SYNOPSIS>
+and in L<Test::Compile::Internal> instead of calling these functions.
=over 4
@@ -196,7 +201,7 @@
It uses C<all_pm_files(@files)> to find the perl module files.
It also calls the C<plan()> function for you (one test for each module), so
-you can't have already called C<plan>. Unfortunately, this also means
+you can't have already called C<plan()>. Unfortunately, this also means
you can't use this function with C<all_pl_files_ok()>. If this is a problem
you should really be using the object oriented interface.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/t/100-internal--test-methods.t new/Test-Compile-v2.1.1/t/100-internal--test-methods.t
--- old/Test-Compile-v2.1.0/t/100-internal--test-methods.t 1970-01-01 01:00:00.000000000 +0100
+++ new/Test-Compile-v2.1.1/t/100-internal--test-methods.t 2019-07-01 03:20:51.000000000 +0200
@@ -0,0 +1,15 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Compile::Internal;
+
+my $internal = Test::Compile::Internal->new();
+
+$internal->plan(tests => 1);
+$internal->ok(1, "ok method issues succesful TAP");
+$internal->diag("The diag method should display this message");
+$internal->done_testing
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Test-Compile-v2.1.0/t/200-import-check.t new/Test-Compile-v2.1.1/t/200-import-check.t
--- old/Test-Compile-v2.1.0/t/200-import-check.t 2019-06-27 12:26:28.000000000 +0200
+++ new/Test-Compile-v2.1.1/t/200-import-check.t 2019-07-01 03:20:52.000000000 +0200
@@ -35,7 +35,6 @@
}, 'pl_file_ok imported correctly');
# finally use the "all" tag to import all methods and check if it worked
-diag 'Use :all import tag and check if methods got imported correctly';
Test::Compile->import(':all');
can_ok(__PACKAGE__, @EXPORTED,@NOTEXPORTED);
done_testing();
1
0
Hello community,
here is the log from the commit of package perl-Mojolicious-Plugin-NYTProf for openSUSE:Factory checked in at 2019-07-02 10:39:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mojolicious-Plugin-NYTProf (Old)
and /work/SRC/openSUSE:Factory/.perl-Mojolicious-Plugin-NYTProf.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Mojolicious-Plugin-NYTProf"
Tue Jul 2 10:39:33 2019 rev:4 rq:712934 version:0.22
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Mojolicious-Plugin-NYTProf/perl-Mojolicious-Plugin-NYTProf.changes 2018-10-15 09:42:28.983426793 +0200
+++ /work/SRC/openSUSE:Factory/.perl-Mojolicious-Plugin-NYTProf.new.4615/perl-Mojolicious-Plugin-NYTProf.changes 2019-07-02 10:39:34.706689790 +0200
@@ -1,0 +2,11 @@
+Mon Jul 1 18:06:02 UTC 2019 - Stephan Kulow <coolo(a)suse.com>
+
+- updated to 0.22
+ see /usr/share/doc/packages/perl-Mojolicious-Plugin-NYTProf/Changes
+
+ 0.22 2019-07-01
+ - Bump Mojolicious version requirement to 8.00
+ - Add nonblocking example to ExampleApp
+ - Document caveats with using async code with profiling
+
+-------------------------------------------------------------------
Old:
----
Mojolicious-Plugin-NYTProf-0.21.tar.gz
New:
----
Mojolicious-Plugin-NYTProf-0.22.tar.gz
cpanspec.yml
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Mojolicious-Plugin-NYTProf.spec ++++++
--- /var/tmp/diff_new_pack.pXHtZY/_old 2019-07-02 10:39:35.350690770 +0200
+++ /var/tmp/diff_new_pack.pXHtZY/_new 2019-07-02 10:39:35.354690776 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-Mojolicious-Plugin-NYTProf
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -12,12 +12,12 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: perl-Mojolicious-Plugin-NYTProf
-Version: 0.21
+Version: 0.22
Release: 0
%define cpan_name Mojolicious-Plugin-NYTProf
Summary: Auto handling of Devel::NYTProf in your Mojolicious app
@@ -25,23 +25,24 @@
Group: Development/Libraries/Perl
Url: https://metacpan.org/release/%{cpan_name}
Source0: https://cpan.metacpan.org/authors/id/L/LE/LEEJO/%{cpan_name}-%{version}.tar…
+Source1: cpanspec.yml
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Algorithm::Combinatorics) >= 0.27
-BuildRequires: perl(Devel::NYTProf) >= 5.07
+BuildRequires: perl(Devel::NYTProf) >= 6.06
BuildRequires: perl(File::Spec::Functions) >= 3.30
BuildRequires: perl(File::Temp) >= 0.22
BuildRequires: perl(File::Which) >= 1.09
-BuildRequires: perl(Mojolicious) >= 6.00
+BuildRequires: perl(Mojolicious) >= 8.00
BuildRequires: perl(Test::Exception) >= 0.320000
BuildRequires: perl(Time::HiRes) >= 1.9719
-Requires: perl(Devel::NYTProf) >= 5.07
+Requires: perl(Devel::NYTProf) >= 6.06
Requires: perl(File::Spec::Functions) >= 3.30
Requires: perl(File::Temp) >= 0.22
Requires: perl(File::Which) >= 1.09
-Requires: perl(Mojolicious) >= 6.00
+Requires: perl(Mojolicious) >= 8.00
Requires: perl(Time::HiRes) >= 1.9719
%{perl_requires}
@@ -54,18 +55,15 @@
%setup -q -n %{cpan_name}-%{version}
%build
-%{__perl} Makefile.PL INSTALLDIRS=vendor
-%{__make} %{?_smp_mflags}
+perl Makefile.PL INSTALLDIRS=vendor
+make %{?_smp_mflags}
%check
-%{__make} test
+make test
%install
%perl_make_install
%perl_process_packlist
-if [ -f %{buildroot}/%{perl_vendorlib}/Mojolicious/Plugin/README.pod ]; then
-mv %{buildroot}/%{perl_vendorlib}/Mojolicious/Plugin/README{,-NYTProf}.pod
-fi
%perl_gen_filelist
%files -f %{name}.files
++++++ Mojolicious-Plugin-NYTProf-0.21.tar.gz -> Mojolicious-Plugin-NYTProf-0.22.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-Plugin-NYTProf-0.21/Changes new/Mojolicious-Plugin-NYTProf-0.22/Changes
--- old/Mojolicious-Plugin-NYTProf-0.21/Changes 2018-10-01 14:28:37.000000000 +0200
+++ new/Mojolicious-Plugin-NYTProf-0.22/Changes 2019-06-28 09:43:58.000000000 +0200
@@ -1,5 +1,10 @@
Revision history for Mojolicious-Plugin-NYTProf
+0.22 2019-07-01
+ - Bump Mojolicious version requirement to 8.00
+ - Add nonblocking example to ExampleApp
+ - Document caveats with using async code with profiling
+
0.21 2018-10-01
- Bump Devel::NYTProf version requirement to 6.06 for recent fixes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-Plugin-NYTProf-0.21/META.json new/Mojolicious-Plugin-NYTProf-0.22/META.json
--- old/Mojolicious-Plugin-NYTProf-0.21/META.json 2018-10-01 14:29:26.000000000 +0200
+++ new/Mojolicious-Plugin-NYTProf-0.22/META.json 2019-07-01 09:14:36.000000000 +0200
@@ -4,13 +4,13 @@
"Lee Johnson <leejo(a)cpan.org>"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 2.150010",
+ "generated_by" : "ExtUtils::MakeMaker version 7.36, CPAN::Meta::Converter version 2.150010",
"license" : [
"perl_5"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
- "version" : "2"
+ "version" : 2
},
"name" : "Mojolicious-Plugin-NYTProf",
"no_index" : {
@@ -38,7 +38,7 @@
"File::Spec::Functions" : "3.30",
"File::Temp" : "0.22",
"File::Which" : "1.09",
- "Mojolicious" : "6.00",
+ "Mojolicious" : "8.00",
"Time::HiRes" : "1.9719",
"perl" : "5.010001"
}
@@ -57,6 +57,6 @@
"url" : "https://github.com/Humanstate/mojolicious-plugin-nytprof"
}
},
- "version" : "0.21",
- "x_serialization_backend" : "JSON::PP version 2.27400_02"
+ "version" : "0.22",
+ "x_serialization_backend" : "JSON::PP version 4.02"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-Plugin-NYTProf-0.21/META.yml new/Mojolicious-Plugin-NYTProf-0.22/META.yml
--- old/Mojolicious-Plugin-NYTProf-0.21/META.yml 2018-10-01 14:29:26.000000000 +0200
+++ new/Mojolicious-Plugin-NYTProf-0.22/META.yml 2019-07-01 09:14:36.000000000 +0200
@@ -9,7 +9,7 @@
configure_requires:
ExtUtils::MakeMaker: '0'
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 7.24, CPAN::Meta::Converter version 2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.36, CPAN::Meta::Converter version 2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -24,7 +24,7 @@
File::Spec::Functions: '3.30'
File::Temp: '0.22'
File::Which: '1.09'
- Mojolicious: '6.00'
+ Mojolicious: '8.00'
Time::HiRes: '1.9719'
perl: '5.010001'
resources:
@@ -32,5 +32,5 @@
homepage: https://metacpan.org/module/Mojolicious::Plugin::NYTProf
license: http://dev.perl.org/licenses/
repository: https://github.com/Humanstate/mojolicious-plugin-nytprof
-version: '0.21'
+version: '0.22'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-Plugin-NYTProf-0.21/Makefile.PL new/Mojolicious-Plugin-NYTProf-0.22/Makefile.PL
--- old/Mojolicious-Plugin-NYTProf-0.21/Makefile.PL 2018-10-01 14:24:57.000000000 +0200
+++ new/Mojolicious-Plugin-NYTProf-0.22/Makefile.PL 2019-06-28 09:43:56.000000000 +0200
@@ -14,7 +14,7 @@
LICENSE => 'perl',
PREREQ_PM => {
'Devel::NYTProf' => '6.06',
- 'Mojolicious' => '6.00',
+ 'Mojolicious' => '8.00',
'File::Which' => '1.09',
'File::Temp' => '0.22',
'Time::HiRes' => '1.9719',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-Plugin-NYTProf-0.21/README.md new/Mojolicious-Plugin-NYTProf-0.22/README.md
--- old/Mojolicious-Plugin-NYTProf-0.21/README.md 2018-10-01 14:28:05.000000000 +0200
+++ new/Mojolicious-Plugin-NYTProf-0.22/README.md 2019-06-28 09:58:13.000000000 +0200
@@ -10,7 +10,7 @@
# VERSION
-0.21
+0.22
# DESCRIPTION
@@ -65,6 +65,10 @@
The consequence of this is that you should see profiling only for your routes and
rendering code and will not see most of the actual Mojolicious framework detail.
+The caveat with the use of hooks is that some hooks can fire out of order, and when
+asynchronous code is used in your controllers you may see incomplete/odd profiling
+behaviour - you can play around with the hook configuration to try to fix this.
+
You can override the hooks used to control when the profiling runs, see the
CONFIGURATION section below.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-Plugin-NYTProf-0.21/README.pod new/Mojolicious-Plugin-NYTProf-0.22/README.pod
--- old/Mojolicious-Plugin-NYTProf-0.21/README.pod 2018-10-01 14:27:57.000000000 +0200
+++ new/Mojolicious-Plugin-NYTProf-0.22/README.pod 2019-06-28 09:58:08.000000000 +0200
@@ -10,7 +10,7 @@
=head1 VERSION
-0.21
+0.22
=head1 DESCRIPTION
@@ -59,7 +59,7 @@
use File::Which;
use File::Spec::Functions qw/catfile catdir/;
-our $VERSION = '0.21';
+our $VERSION = '0.22';
=head1 METHODS
@@ -78,6 +78,10 @@
The consequence of this is that you should see profiling only for your routes and
rendering code and will not see most of the actual Mojolicious framework detail.
+The caveat with the use of hooks is that some hooks can fire out of order, and when
+asynchronous code is used in your controllers you may see incomplete/odd profiling
+behaviour - you can play around with the hook configuration to try to fix this.
+
You can override the hooks used to control when the profiling runs, see the
CONFIGURATION section below.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Mojolicious-Plugin-NYTProf-0.21/lib/Mojolicious/Plugin/NYTProf.pm new/Mojolicious-Plugin-NYTProf-0.22/lib/Mojolicious/Plugin/NYTProf.pm
--- old/Mojolicious-Plugin-NYTProf-0.21/lib/Mojolicious/Plugin/NYTProf.pm 2018-10-01 14:27:57.000000000 +0200
+++ new/Mojolicious-Plugin-NYTProf-0.22/lib/Mojolicious/Plugin/NYTProf.pm 2019-06-28 09:58:08.000000000 +0200
@@ -10,7 +10,7 @@
=head1 VERSION
-0.21
+0.22
=head1 DESCRIPTION
@@ -59,7 +59,7 @@
use File::Which;
use File::Spec::Functions qw/catfile catdir/;
-our $VERSION = '0.21';
+our $VERSION = '0.22';
=head1 METHODS
@@ -78,6 +78,10 @@
The consequence of this is that you should see profiling only for your routes and
rendering code and will not see most of the actual Mojolicious framework detail.
+The caveat with the use of hooks is that some hooks can fire out of order, and when
+asynchronous code is used in your controllers you may see incomplete/odd profiling
+behaviour - you can play around with the hook configuration to try to fix this.
+
You can override the hooks used to control when the profiling runs, see the
CONFIGURATION section below.
++++++ cpanspec.yml ++++++
---
#description_paragraphs: 3
#description: |-
# override description from CPAN
#summary: override summary from CPAN
#no_testing: broken upstream
#sources:
# - source1
# - source2
#patches:
# foo.patch: -p1
# bar.patch:
#preamble: |-
# BuildRequires: gcc-c++
#post_prep: |-
# hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s, *,,g'`
# sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL
#post_build: |-
# rm unused.files
#post_install: |-
# sed on %{name}.files
#license: SUSE-NonFree
#skip_noarch: 1
#custom_build: |-
#./Build build flags=%{?_smp_mflags} --myflag
#custom_test: |-
#startserver && make test
#ignore_requires: Bizarre::Module
1
0
Hello community,
here is the log from the commit of package etherape for openSUSE:Factory checked in at 2019-07-02 10:39:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/etherape (Old)
and /work/SRC/openSUSE:Factory/.etherape.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "etherape"
Tue Jul 2 10:39:31 2019 rev:31 rq:712931 version:0.9.18
Changes:
--------
--- /work/SRC/openSUSE:Factory/etherape/etherape.changes 2018-05-29 10:32:21.236327549 +0200
+++ /work/SRC/openSUSE:Factory/.etherape.new.4615/etherape.changes 2019-07-02 10:39:33.558688043 +0200
@@ -1,0 +2,8 @@
+Mon Jul 1 11:37:17 UTC 2019 - Wolfgang Frisch <wolfgang.frisch(a)suse.com>
+
+- Update to version 0.9.18:
+ * EtherApe now is a pure GTK 3 application.
+- Changes from version 0.9.17:
+ * Replaced gnome-canvas with canvas supplied by GooCanvas.
+
+-------------------------------------------------------------------
Old:
----
etherape-0.9.17.tar.gz
New:
----
etherape-0.9.18.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ etherape.spec ++++++
--- /var/tmp/diff_new_pack.vQSoKg/_old 2019-07-02 10:39:34.286689152 +0200
+++ /var/tmp/diff_new_pack.vQSoKg/_new 2019-07-02 10:39:34.290689157 +0200
@@ -1,7 +1,7 @@
#
# spec file for package etherape
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 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
@@ -12,12 +12,12 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
Name: etherape
-Version: 0.9.17
+Version: 0.9.18
Release: 0
Summary: A Graphical Network Monitor
License: GPL-2.0-or-later
@@ -27,14 +27,15 @@
Patch0: etherape-0.9.12-desktop.patch
BuildRequires: docbook_4
BuildRequires: fdupes
+BuildRequires: goocanvas-devel
BuildRequires: libpcap-devel
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
BuildRequires: yelp-tools
-BuildRequires: pkgconfig(glib-2.0)
-BuildRequires: pkgconfig(libglade-2.0)
-BuildRequires: pkgconfig(libgnomecanvas-2.0)
BuildRequires: pkgconfig(popt)
+%if 0%{?is_opensuse}
+BuildRequires: autoconf-archive
+%endif
Requires(post): update-desktop-files
Requires(postun): update-desktop-files
Recommends: %{name}-lang
++++++ etherape-0.9.17.tar.gz -> etherape-0.9.18.tar.gz ++++++
++++ 21997 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package conky for openSUSE:Factory checked in at 2019-07-02 10:39:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/conky (Old)
and /work/SRC/openSUSE:Factory/.conky.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "conky"
Tue Jul 2 10:39:29 2019 rev:25 rq:712925 version:1.11.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/conky/conky.changes 2019-06-24 21:54:03.712138397 +0200
+++ /work/SRC/openSUSE:Factory/.conky.new.4615/conky.changes 2019-07-02 10:39:31.850685444 +0200
@@ -1,0 +2,5 @@
+Fri Jun 28 09:31:44 UTC 2019 - Dead Mozay <dead_mozay(a)opensuse.org>
+
+- Add conky-memory-leak-fix.patch Fixes a memory leak in Conky
+
+-------------------------------------------------------------------
New:
----
conky-memory-leak-fix.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ conky.spec ++++++
--- /var/tmp/diff_new_pack.dGcWy2/_old 2019-07-02 10:39:32.470686388 +0200
+++ /var/tmp/diff_new_pack.dGcWy2/_new 2019-07-02 10:39:32.470686388 +0200
@@ -12,7 +12,7 @@
# 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/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
@@ -37,6 +37,7 @@
Source3: README.SUSE
Patch1: conky-1.10.1-avoid-git.patch
Patch2: conky.timestamp.patch
+Patch3: conky-memory-leak-fix.patch
BuildRequires: cmake
BuildRequires: docbook-xsl-stylesheets
BuildRequires: docbook2x
@@ -50,6 +51,7 @@
BuildRequires: libxslt-tools
BuildRequires: lua53-devel
BuildRequires: ncurses-devel
+BuildRequires: ninja
BuildRequires: pkgconfig
BuildRequires: update-desktop-files
BuildRequires: pkgconfig(glib-2.0)
@@ -138,7 +140,7 @@
%autopatch -p1
%build
-%cmake \
+%cmake -G Ninja \
-DBUILD_APCUPSD=ON \
-DBUILD_ARGB=ON \
%if %{with audacious}
@@ -205,7 +207,7 @@
-DOWN_WINDOW=ON \
-DBUILD_XMMS2=OFF
-%cmake_build
+%ninja_build
# build doc
cd ../doc
@@ -224,7 +226,7 @@
gzip conky.1
%install
-%cmake_install
+%ninja_install -C build
# not doc
rm -rf %{buildroot}%{_datadir}/doc/%{name}-%{version}
++++++ conky-memory-leak-fix.patch ++++++
diff --git a/src/specials.cc b/src/specials.cc
index 70ac491b..3ddcf505 100644
--- a/src/specials.cc
+++ b/src/specials.cc
@@ -508,7 +508,7 @@ graph_buf_end:
}
double *copy_graph(double *original_graph, int graph_width) {
- double *new_graph = new double[graph_width];
+ double *new_graph = static_cast<double*>(malloc(graph_width * sizeof(double)));
memcpy(new_graph, original_graph, graph_width * sizeof(double));
@@ -517,7 +517,7 @@ double *copy_graph(double *original_graph, int graph_width) {
double *retrieve_graph(int graph_id, int graph_width) {
if (graphs.find(graph_id) == graphs.end()) {
- return new double[graph_width];
+ return static_cast<double*>(calloc(1, graph_width * sizeof(double)));
} else {
return copy_graph(graphs[graph_id], graph_width);
}
@@ -527,7 +527,10 @@ void store_graph(int graph_id, struct special_t *s) {
if (s->graph == nullptr) {
graphs[graph_id] = nullptr;
} else {
- graphs[graph_id] = copy_graph(s->graph, s->graph_width);
+ if (graphs.find(graph_id)!=graphs.end()) {
+ free(graphs[graph_id]);
+ }
+ graphs[graph_id] = s->graph;
}
}
@@ -572,6 +575,7 @@ void new_graph(struct text_object *obj, char *buf, int buf_max_size,
}
s->graph = graph;
s->graph_allocated = s->graph_width;
+ graphs[g->id] = graph;
}
s->height = g->height;
s->first_colour = adjust_colours(g->first_colour);
1
0
Hello community,
here is the log from the commit of package python3-pyside2 for openSUSE:Factory checked in at 2019-07-02 10:39:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-pyside2 (Old)
and /work/SRC/openSUSE:Factory/.python3-pyside2.new.4615 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-pyside2"
Tue Jul 2 10:39:27 2019 rev:5 rq:712917 version:5.13.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-pyside2/python3-pyside2.changes 2019-05-22 11:10:57.834597913 +0200
+++ /work/SRC/openSUSE:Factory/.python3-pyside2.new.4615/python3-pyside2.changes 2019-07-02 10:39:29.578681986 +0200
@@ -1,0 +2,22 @@
+Mon Jul 1 18:00:38 UTC 2019 - Stefan Brüns <stefan.bruens(a)rwth-aachen.de>
+
+- Remove "CFLAGS=-I/usr/include/linux" export, otherwise pthreads.h
+ includes linux/time.h instead of time.h. As a result CMake no longer
+ finds a valid pthreads.h and aborts.
+- Drop "docs", which included building and installing instructions only,
+ as done upstream. See https://doc.qt.io/qtforpython/ and
+ https://wiki.qt.io/Qt_for_Python/Tutorial for developer documentation.
+
+-------------------------------------------------------------------
+Thu Jun 27 07:58:17 UTC 2019 - Christophe Giboudeaux <christophe(a)krop.fr>
+
+- Update to 5.13.0
+ * Add bindings for 5.13
+ * Support the qApp macro in "scriptable application"
+ * Doc: Add QML Integration tutorial
+ * Docs: Add Expenses tool tutorial
+ * Regenerate all example forms using the python-extended rcc of 5.14
+ * Fix type name for lookup of QFlags<> converters
+ Check the changes-* files for older changes.
+
+-------------------------------------------------------------------
Old:
----
pyside-setup-everywhere-src-5.12.3.tar.xz
New:
----
pyside-setup-everywhere-src-5.13.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-pyside2.spec ++++++
--- /var/tmp/diff_new_pack.56ZpMe/_old 2019-07-02 10:39:30.274683046 +0200
+++ /var/tmp/diff_new_pack.56ZpMe/_new 2019-07-02 10:39:30.278683052 +0200
@@ -22,7 +22,7 @@
BuildRequires: python3-devel
BuildRequires: python3-setuptools
Name: python3-pyside2
-Version: 5.12.3
+Version: 5.13.0
Release: 0
Summary: Python bindings for Qt
# shiboken2 is licensed under GPL-3.0-with-Qt-Company-Qt-exception-1.1
@@ -41,8 +41,8 @@
##### essential modules
BuildRequires: cmake(Qt5Concurrent)
-BuildConflicts: cmake(Qt5Core) >= 5.13
-BuildRequires: cmake(Qt5Core) >= 5.12
+BuildConflicts: cmake(Qt5Core) >= 5.14
+BuildRequires: cmake(Qt5Core) >= 5.13
BuildRequires: cmake(Qt5Network)
BuildRequires: cmake(Qt5PrintSupport)
BuildRequires: cmake(Qt5Sql)
@@ -96,6 +96,7 @@
%package devel
Summary: Header Files for PySide2
+License: LGPL-3.0-only OR (GPL-2.0-only OR GPL-3.0-or-later) AND GPL-3.0-with-Qt-Company-Qt-exception-1.1
Group: Development/Languages/Python
Requires: %{name} = %{version}
@@ -105,6 +106,7 @@
%package examples
Summary: Examples for using PySide2
+License: BSD-3-Clause
Group: Development/Languages/Python
Requires: %{name} = %{version}
@@ -120,7 +122,6 @@
%build
export LLVM_INSTALL_DIR=%{_prefix}
-export CFLAGS=-I/usr/include/linux
# Workaround for PYSIDE-880
export LC_ALL=C.utf8
%{mypython} setup.py build --reuse-build --ignore-git %{?jobs:--parallel=%{jobs}} \
@@ -168,11 +169,6 @@
%fdupes %{buildroot}%{_datadir}/PySide2/examples/
-# docu generation
-cd docs
-make html
-cd -
-
%check
%if %{with tests}
%{mypython} testrunner.py test
@@ -189,7 +185,6 @@
%{python_sitearch}/*
%files devel
-%doc docs/_build/html
%{_datadir}/PySide2/
%exclude %{_datadir}/PySide2/examples
%{_includedir}/*
++++++ pyside-setup-everywhere-src-5.12.3.tar.xz -> pyside-setup-everywhere-src-5.13.0.tar.xz ++++++
++++ 54933 lines of diff (skipped)
1
0