Hello community,

here is the log from the commit of package python-pem for openSUSE:Factory 
checked in at 2019-09-13 14:57:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pem (Old)
 and      /work/SRC/openSUSE:Factory/.python-pem.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pem"

Fri Sep 13 14:57:42 2019 rev:3 rq:730054 version:19.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pem/python-pem.changes    2019-05-22 
11:14:26.398551384 +0200
+++ /work/SRC/openSUSE:Factory/.python-pem.new.7948/python-pem.changes  
2019-09-13 14:57:52.545276110 +0200
@@ -1,0 +2,6 @@
+Wed Sep 11 08:15:02 UTC 2019 - Tomáš Chvátal <[email protected]>
+
+- Update to 19.2.0:
+  * Added support for pem.ECPrivateKey (EC PRIVATE KEY).
+
+-------------------------------------------------------------------

Old:
----
  python-pem-19.1.0.tar.gz

New:
----
  python-pem-19.2.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pem.spec ++++++
--- /var/tmp/diff_new_pack.ep2I35/_old  2019-09-13 14:57:52.921276126 +0200
+++ /var/tmp/diff_new_pack.ep2I35/_new  2019-09-13 14:57:52.925276127 +0200
@@ -18,19 +18,15 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-pem
-Version:        19.1.0
+Version:        19.2.0
 Release:        0
 Summary:        PEM file parsing in Python
 License:        MIT
 Group:          Development/Languages/Python
 URL:            https://github.com/hynek/pem
 Source0:        
https://github.com/hynek/pem/archive/%{version}/%{name}-%{version}.tar.gz
-# extra
-BuildRequires:  %{python_module Sphinx}
-# extra dev
 BuildRequires:  %{python_module Twisted}
 BuildRequires:  %{python_module certifi}
-BuildRequires:  %{python_module coverage}
 BuildRequires:  %{python_module pretend}
 BuildRequires:  %{python_module pyOpenSSL}
 BuildRequires:  %{python_module pytest}
@@ -52,8 +48,7 @@
 %install
 %python_install
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
-rm -f %{buildroot}/%{python_sitelib}/pem/py.typed #zero length
-rm -f %{buildroot}/%{python3_sitelib}/pem/py.typed #zero length
+%python_expand rm %{buildroot}/%{$python_sitelib}/pem/py.typed #zero length
 
 %check
 %pytest tests

++++++ python-pem-19.1.0.tar.gz -> python-pem-19.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/.gitignore new/pem-19.2.0/.gitignore
--- old/pem-19.1.0/.gitignore   2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/.gitignore   2019-08-06 15:31:36.000000000 +0200
@@ -9,3 +9,4 @@
 .eggs
 .cache
 .pytest_cache/
+pip-wheel-metadata/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/.pre-commit-config.yaml 
new/pem-19.2.0/.pre-commit-config.yaml
--- old/pem-19.1.0/.pre-commit-config.yaml      2019-03-19 23:11:21.000000000 
+0100
+++ new/pem-19.2.0/.pre-commit-config.yaml      2019-08-06 15:31:36.000000000 
+0200
@@ -1,5 +1,5 @@
 repos:
-  - repo: https://github.com/ambv/black
+  - repo: https://github.com/psf/black
     rev: 19.3b0
     hooks:
       - id: black
@@ -7,21 +7,28 @@
         # override until resolved: https://github.com/ambv/black/issues/402
         files: \.pyi?$
         types: []
+
   - repo: https://github.com/asottile/seed-isort-config
-    rev: v1.7.0
+    rev: v1.9.2
     hooks:
       - id: seed-isort-config
+
   - repo: https://github.com/pre-commit/mirrors-isort
-    rev: v4.3.15
+    rev: v4.3.21
     hooks:
       - id: isort
         language_version: python3.7
 
+  - repo: https://gitlab.com/pycqa/flake8
+    rev: 3.7.8
+    hooks:
+    - id: flake8
+      language_version: python3.7
+
+
   - repo: https://github.com/pre-commit/pre-commit-hooks
-    rev: v2.1.0
+    rev: v2.3.0
     hooks:
       - id: trailing-whitespace
       - id: end-of-file-fixer
       - id: debug-statements
-      - id: flake8
-        language_version: python3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/.travis.yml new/pem-19.2.0/.travis.yml
--- old/pem-19.1.0/.travis.yml  2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/.travis.yml  1970-01-01 01:00:00.000000000 +0100
@@ -1,92 +0,0 @@
-dist: xenial
-group: travis_latest
-cache:
-  directories:
-    - $HOME/.cache/pip
-
-language: python
-
-
-matrix:
-  include:
-    # Lint
-    - python: "3.7"
-      stage: lint
-      env: TOXENV=lint
-    - python: "3.7"
-      env: TOXENV=mypy
-    - python: "3.7"
-      env: TOXENV=manifest
-
-    # Test
-    - python: "2.7"
-      stage: test
-      env: TOXENV=py27-twisted
-    - python: "2.7"
-      env: TOXENV=py27
-    - python: "3.4"
-      env: TOXENV=py34-twisted
-    - python: "3.4"
-      env: TOXENV=py34
-    - python: "3.5"
-      env: TOXENV=py35-twisted
-    - python: "3.5"
-      env: TOXENV=py35
-    - python: "3.6"
-      env: TOXENV=py36-twisted
-    - python: "3.6"
-      env: TOXENV=py36
-    - python: "3.7"
-      env: TOXENV=py37
-    - python: "3.7"
-      env: TOXENV=py37-twisted
-    - python: "pypy"
-      env: TOXENV=pypy-twisted
-      dist: trusty
-    - python: "pypy"
-      env: TOXENV=pypy
-      dist: trusty
-    - python: "pypy3"
-      env: TOXENV=pypy3
-      dist: trusty
-    - python: "pypy3"
-      env: TOXENV=pypy3-twisted
-      dist: trusty
-
-    # Prevent breakage by a new releases
-    - python: "3.7-dev"
-      env: TOXENV=py37
-    - python: "3.7-dev"
-      env: TOXENV=py37-twisted
-
-
-    # Docs
-    - python: "3.7"
-      stage: docs
-      env: TOXENV=docs
-    - python: "3.7"
-      env: TOXENV=pypi-description
-
-  allow_failures:
-    - python: "3.7-dev"
-
-
-install:
-  - pip install tox
-
-
-script:
-  - tox
-
-
-before_install:
-  - pip install codecov
-
-
-after_success:
-  - tox -e coverage-report
-  - codecov
-
-
-notifications:
-  email: false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/CHANGELOG.rst new/pem-19.2.0/CHANGELOG.rst
--- old/pem-19.1.0/CHANGELOG.rst        2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/CHANGELOG.rst        2019-08-06 15:31:36.000000000 +0200
@@ -7,6 +7,31 @@
 The third digit is only for regressions.
 
 
+19.2.0 (2019-08-06)
+-------------------
+
+
+Backward-incompatible changes:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+*none*
+
+
+Deprecations:
+^^^^^^^^^^^^^
+
+*none*
+
+
+Changes:
+^^^^^^^^
+
+- Added support for ``pem.ECPrivateKey`` (``EC PRIVATE KEY``).
+
+
+----
+
+
 19.1.0 (2019-03-19)
 -------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/CONTRIBUTING.rst 
new/pem-19.2.0/CONTRIBUTING.rst
--- old/pem-19.1.0/CONTRIBUTING.rst     2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/CONTRIBUTING.rst     2019-08-06 15:31:36.000000000 +0200
@@ -60,7 +60,7 @@
      assert "foo" == x._a_private_attribute
 
 - To run the test suite, all you need is a recent tox_.
-  It will ensure the test suite runs with all dependencies against all Python 
versions just as it will on Travis CI.
+  It will ensure the test suite runs with all dependencies against all Python 
versions just as it will in our CI.
   If you lack some Python versions, you can can always limit the environments 
like ``tox -e py27,py35`` (in that case you may want to look into pyenv_, which 
makes it very easy to install many different Python versions in parallel).
 - Write `good test docstrings`_.
 
@@ -110,7 +110,7 @@
 We highly recommend to develop using the latest Python 3 release because 
you're more likely to catch certain bugs earlier.
 
 First create a `virtual environment <https://virtualenv.pypa.io/>`_.
-It’s out of scope for this document to list all the ways to manage virtual 
environments in Python, but if you don’t already have a pet way, take some time 
to look at tools like `pew <https://github.com/berdario/pew>`_, `virtualfish 
<http://virtualfish.readthedocs.io/>`_, and `virtualenvwrapper 
<http://virtualenvwrapper.readthedocs.io/>`_.
+It’s out of scope for this document to list all the ways to manage virtual 
environments in Python, but if you don’t already have a pet way, take some time 
to look at tools like `pew <https://github.com/berdario/pew>`_, `virtualfish 
<https://virtualfish.readthedocs.io/>`_, and `virtualenvwrapper 
<https://virtualenvwrapper.readthedocs.io/>`_.
 
 Next get an up to date checkout of the ``pem`` repository:
 
@@ -179,7 +179,7 @@
 .. _pyenv: https://github.com/pyenv/pyenv
 .. _reStructuredText: 
https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html
 .. _semantic newlines: 
https://rhodesmill.org/brandon/2012/one-sentence-per-line/
-.. _CI: https://travis-ci.org/hynek/pem/
-.. _black: https://github.com/ambv/black
+.. _CI: https://dev.azure.com/the-hynek/pem/_build?definitionId=1
+.. _black: https://github.com/psf/black
 .. _pre-commit: https://pre-commit.com/
 .. _isort: https://github.com/timothycrosley/isort
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/README.rst new/pem-19.2.0/README.rst
--- old/pem-19.1.0/README.rst   2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/README.rst   2019-08-06 15:31:36.000000000 +0200
@@ -1,13 +1,17 @@
 pem: Easy PEM file parsing
 ==========================
 
+.. image:: https://img.shields.io/pypi/v/pem.svg
+   :target: https://pypi.org/project/pem/
+   :alt: PyPI
+
 .. image:: https://readthedocs.org/projects/pem/badge/?version=stable
-  :target: https://pem.readthedocs.io/en/stable/?badge=stable
-  :alt: Documentation Status
+   :target: https://pem.readthedocs.io/en/stable/?badge=stable
+   :alt: Documentation Status
 
-.. image:: https://travis-ci.org/hynek/pem.svg?branch=master
-   :target: https://travis-ci.org/hynek/pem
-   :alt: CI status
+.. image:: 
https://dev.azure.com/the-hynek/pem/_apis/build/status/hynek.pem?branchName=master
+   :target: https://dev.azure.com/the-hynek/pem/_build?definitionId=1
+   :alt: CI Status
 
 .. image:: https://codecov.io/gh/hynek/pem/branch/master/graph/badge.svg
    :target: https://codecov.io/github/hynek/pem
@@ -17,7 +21,7 @@
    :target: 
https://www.irccloud.com/invite?channel=%23cryptography-dev&amp;hostname=irc.freenode.net&amp;port=6697&amp;ssl=1
 
 .. image:: https://img.shields.io/badge/code%20style-black-000000.svg
-   :target: https://github.com/ambv/black
+   :target: https://github.com/psf/black
    :alt: Code style: black
 
 .. image:: http://www.mypy-lang.org/static/mypy_badge.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/azure-pipelines.yml 
new/pem-19.2.0/azure-pipelines.yml
--- old/pem-19.1.0/azure-pipelines.yml  1970-01-01 01:00:00.000000000 +0100
+++ new/pem-19.2.0/azure-pipelines.yml  2019-08-06 15:31:36.000000000 +0200
@@ -0,0 +1,127 @@
+---
+trigger:
+  - master
+
+jobs:
+  - job: 'Test'
+    pool:
+      vmImage: 'ubuntu-latest'
+    strategy:
+      matrix:
+        lint:
+          python.version: '3.7'
+          tox.env: lint
+        mypy:
+          python.version: '3.7'
+          tox.env: mypy
+        manifest:
+          python.version: '3.7'
+          tox.env: manifest
+        docs:
+          python.version: '3.7'
+          tox.env: docs
+        pypi-description:
+          python.version: '3.7'
+          tox.env: pypi-description
+
+        py27-twisted:
+          python.version: '2.7'
+          tox.env: py27-twisted
+        py27:
+          python.version: '2.7'
+          tox.env: py27
+        py34:
+          python.version: '3.4'
+          tox.env: py34
+        py35-twisted:
+          python.version: '3.5'
+          tox.env: py35-twisted
+        py35:
+          python.version: '3.5'
+          tox.env: py35
+        py36-twisted:
+          python.version: '3.6'
+          tox.env: py36-twisted
+        py36:
+          python.version: '3.6'
+          tox.env: py36
+        py37:
+          python.version: '3.7'
+          tox.env: py37
+        py37-twisted:
+          python.version: '3.7'
+          tox.env: py37-twisted
+
+        pypy-twisted:
+          python.version: pypy2
+          tox.env: pypy-twisted
+        pypy:
+          python.version: pypy2
+          tox.env: pypy
+        pypy3:
+          python.version: pypy3
+          tox.env: pypy3
+        pypy3-twisted:
+          python.version: pypy3
+          tox.env: pypy3-twisted
+
+    steps:
+      - task: UsePythonVersion@0
+        displayName: Get Python for Python tools.
+        inputs:
+          versionSpec: '3.7'
+          addToPath: false
+        name: pyTools
+
+      - script: $(pyTools.pythonLocation)/bin/pip install --upgrade tox
+        displayName: Install Python-based tools.
+
+      - task: UsePythonVersion@0
+        inputs:
+          versionSpec: '$(python.version)'
+          architecture: 'x64'
+        condition: not(in(variables['python.version'], '3.8'))
+        displayName: Use cached Python $(python.version) for tests.
+
+      - script: |
+          sudo add-apt-repository ppa:deadsnakes
+          sudo apt-get update
+          sudo apt-get install -y --no-install-recommends 
python$(python.version)-dev python$(python.version)-distutils
+        condition: in(variables['python.version'], '3.8')
+        displayName: Install Python $(python.version) from the deadsnakes PPA 
for tests.
+
+      - script: $(pyTools.pythonLocation)/bin/tox -e $(tox.env)
+        env:
+          TOX_AP_TEST_EXTRAS: azure-pipelines
+        displayName: run tox -e $(tox.env)
+
+      - script: |
+          if [ ! -f .coverage.* ]; then
+            echo No coverage data found.
+            exit 0
+          fi
+
+          # codecov shells out to "coverage" and avoiding 'sudo pip' allows for
+          # package caching.
+          PATH=$HOME/.local/bin:$PATH
+
+          case "$(python.version)" in
+          "pypy2") PY=pypy ;;
+          "pypy3") PY=pypy3 ;;
+          *) PY=python$(python.version) ;;
+          esac
+
+          # Python 3.8 needs an up-to-date pip.
+          if [ "$(python.version)" = "3.8" ]; then
+            curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
+            $PY get-pip.py --user
+          fi
+
+          $PY -m pip install --user coverage codecov
+
+          coverage combine
+          codecov
+        env:
+          CODECOV_TOKEN: $(codecov.token)
+        displayName: Report Coverage
+        condition: succeeded()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/docs/api.rst new/pem-19.2.0/docs/api.rst
--- old/pem-19.1.0/docs/api.rst 2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/docs/api.rst 2019-08-06 15:31:36.000000000 +0200
@@ -32,6 +32,7 @@
 .. autoclass:: PublicKey(Key)
 .. autoclass:: RSAPrivateKey(PrivateKey)
 .. autoclass:: RSAPublicKey(PublicKey)
+.. autoclass:: ECPrivateKey(PrivateKey)
 .. autoclass:: DHParameters(AbstractPEMObject)
 .. autoclass:: CertificateRequest(AbstractPEMObject)
 .. autoclass:: CertificateRevocationList(AbstractPEMObject)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/docs/conf.py new/pem-19.2.0/docs/conf.py
--- old/pem-19.1.0/docs/conf.py 2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/docs/conf.py 2019-08-06 15:31:36.000000000 +0200
@@ -12,10 +12,7 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-import codecs
-import datetime
-import os
-import re
+import pem
 
 
 try:
@@ -24,30 +21,6 @@
     sphinx_rtd_theme = None
 
 
-def read(*parts):
-    """
-    Build an absolute path from *parts* and and return the contents of the
-    resulting file.  Assume UTF-8 encoding.
-    """
-    here = os.path.abspath(os.path.dirname(__file__))
-    with codecs.open(os.path.join(here, *parts), "rb", "utf-8") as f:
-        return f.read()
-
-
-def find_version(*file_paths):
-    """
-    Build a path from *file_paths* and search for a ``__version__``
-    string inside.
-    """
-    version_file = read(*file_paths)
-    version_match = re.search(
-        r"^__version__ = ['\"]([^'\"]*)['\"]", version_file, re.M
-    )
-    if version_match:
-        return version_match.group(1)
-    raise RuntimeError("Unable to find version string.")
-
-
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
 # documentation root, use os.path.abspath to make it absolute, like shown here.
@@ -82,16 +55,15 @@
 master_doc = "index"
 
 # General information about the project.
-project = u"pem"
-author = u"Hynek Schlawack"
-year = datetime.date.today().year
-copyright = u"2013{0}, {1}".format(u"-{0}".format(year), author)
+project = "pem"
+author = "Hynek Schlawack"
+copyright = "2013, " + author
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The short X.Y version.
-version = find_version("../src/pem/__init__.py")
+version = pem.__version__
 # The full version, including alpha/beta/rc tags.
 release = version
 
@@ -261,7 +233,7 @@
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-    (master_doc, "pem.tex", u"pem Documentation", author, "manual")
+    (master_doc, "pem.tex", "pem Documentation", author, "manual")
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -289,7 +261,7 @@
 
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
-man_pages = [(master_doc, "pem", u"pem Documentation", [author], 1)]
+man_pages = [(master_doc, "pem", "pem Documentation", [author], 1)]
 
 # If true, show URL addresses after external links.
 # man_show_urls = False
@@ -304,7 +276,7 @@
     (
         master_doc,
         "pem",
-        u"pem Documentation",
+        "pem Documentation",
         author,
         "pem",
         "One line description of project.",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/setup.py new/pem-19.2.0/setup.py
--- old/pem-19.1.0/setup.py     2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/setup.py     2019-08-06 15:31:36.000000000 +0200
@@ -42,6 +42,9 @@
     + EXTRAS_REQUIRE["docs"]
     + ["twisted[tls]", "pre-commit"]
 )
+EXTRAS_REQUIRE["azure-pipelines"] = EXTRAS_REQUIRE["tests"] + [
+    "pytest-azurepipelines"
+]
 PACKAGE_DATA = {"pem": ["py.typed"]}
 
 
@@ -113,6 +116,7 @@
         maintainer=find_meta("author"),
         maintainer_email=find_meta("email"),
         long_description=LONG,
+        long_description_content_type="text/x-rst",
         keywords=KEYWORDS,
         packages=PACKAGES,
         package_dir={"": "src"},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/src/pem/__init__.py 
new/pem-19.2.0/src/pem/__init__.py
--- old/pem-19.1.0/src/pem/__init__.py  2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/src/pem/__init__.py  2019-08-06 15:31:36.000000000 +0200
@@ -6,6 +6,7 @@
     CertificateRequest,
     CertificateRevocationList,
     DHParameters,
+    ECPrivateKey,
     Key,
     PrivateKey,
     PublicKey,
@@ -22,7 +23,7 @@
     twisted = None  # type: ignore
 
 
-__version__ = "19.1.0"
+__version__ = "19.2.0"
 __author__ = "Hynek Schlawack"
 __license__ = "MIT"
 __description__ = "Easy PEM file parsing in Python."
@@ -37,6 +38,7 @@
     "CertificateRequest",
     "CertificateRevocationList",
     "DHParameters",
+    "ECPrivateKey",
     "Key",
     "PrivateKey",
     "PublicKey",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/src/pem/_core.py 
new/pem-19.2.0/src/pem/_core.py
--- old/pem-19.1.0/src/pem/_core.py     2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/src/pem/_core.py     2019-08-06 15:31:36.000000000 +0200
@@ -28,7 +28,7 @@
         if isinstance(pem_bytes, text_type):
             self._pem_bytes = pem_bytes.encode("ascii")  # type: bytes
         else:
-            self._pem_bytes = pem_bytes  # type: bytes
+            self._pem_bytes = pem_bytes
         self._sha1_hexdigest = None  # type: Optional[str]
 
     def __str__(self):
@@ -156,6 +156,14 @@
     """
 
 
+class ECPrivateKey(PrivateKey):
+    """
+    A private EC key.
+
+    .. versionadded:: 19.2.0
+    """
+
+
 class DHParameters(AbstractPEMObject):
     """
     Diffie-Hellman parameters for DHE.
@@ -169,6 +177,7 @@
     b"ENCRYPTED PRIVATE KEY": PrivateKey,
     b"RSA PRIVATE KEY": RSAPrivateKey,
     b"RSA PUBLIC KEY": RSAPublicKey,
+    b"EC PRIVATE KEY": ECPrivateKey,
     b"DH PARAMETERS": DHParameters,
     b"NEW CERTIFICATE REQUEST": CertificateRequest,
     b"CERTIFICATE REQUEST": CertificateRequest,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/src/pem/twisted.py 
new/pem-19.2.0/src/pem/twisted.py
--- old/pem-19.1.0/src/pem/twisted.py   2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/src/pem/twisted.py   2019-08-06 15:31:36.000000000 +0200
@@ -15,8 +15,8 @@
 # mypy hack: Import typing information without actually importing anything.
 MYPY = False
 if MYPY:  # pragma: nocover
-    from ._core import AbstractPEMObject  # noqa
-    from typing import List, Any  # noqa
+    from ._core import AbstractPEMObject
+    from typing import List, Any
 
 
 def certificateOptionsFromPEMs(pemObjects, **kw):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/tests/data.py new/pem-19.2.0/tests/data.py
--- old/pem-19.1.0/tests/data.py        2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/tests/data.py        2019-08-06 15:31:36.000000000 +0200
@@ -223,3 +223,12 @@
 lmCpGSynXNcpZ/06+vofGi/2MlpQZNhHAo8eayMp6FcvNucIpUndo1X8dKMv3Y26
 ZQIDAQAB
 -----END PUBLIC KEY-----"""
+
+# generated with:
+# openssl ecparam -name secp256k1 -genkey -noout -out key.pem
+KEY_PEM_EC_PRIVATE = b"""\
+-----BEGIN EC PRIVATE KEY-----
+MHQCAQEEIGTpm0NjJRU5dYDrRPh+C9agdudJvCGSBd1hah5jnMYPoAcGBSuBBAAK
+oUQDQgAEyEVc22cgFbf0Ey4W7tNawHEW4o+4xNVznhP4et9g53Puw1KSVD/GOfl1
+95dwvaIyx2XZG8tn9DRsVyjy8fjgFA==
+-----END EC PRIVATE KEY-----"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/tests/test_core.py 
new/pem-19.2.0/tests/test_core.py
--- old/pem-19.1.0/tests/test_core.py   2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/tests/test_core.py   2019-08-06 15:31:36.000000000 +0200
@@ -20,6 +20,7 @@
     CERT_PEMS_NO_NEW_LINE,
     CRL_PEMS,
     DH_PEM,
+    KEY_PEM_EC_PRIVATE,
     KEY_PEM_PKCS5_ENCRYPTED,
     KEY_PEM_PKCS5_UNENCRYPTED,
     KEY_PEM_PKCS8_ENCRYPTED,
@@ -526,3 +527,11 @@
         key = pem.parse(KEY_PEM_PUBLIC)[0]
 
         assert isinstance(key, pem.PublicKey)
+
+    def test_ec_private_key(self):
+        """
+        Detects and loads EC private keys.
+        """
+        key = pem.parse(KEY_PEM_EC_PRIVATE)[0]
+
+        assert isinstance(key, pem.ECPrivateKey)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pem-19.1.0/tox.ini new/pem-19.2.0/tox.ini
--- old/pem-19.1.0/tox.ini      2019-03-19 23:11:21.000000000 +0100
+++ new/pem-19.2.0/tox.ini      2019-08-06 15:31:36.000000000 +0200
@@ -1,5 +1,5 @@
 [tox]
-envlist = 
lint,mypy,{py27,py34,py35,py36,py37,pypy,pypy3}{-twisted,},manifest,docs,pypi-description,coverage-report
+envlist = 
lint,mypy,py34,{py27,py35,py36,py37,pypy,pypy3}{-twisted,},manifest,docs,pypi-description,coverage-report
 isolated_build = true
 
 
@@ -14,7 +14,7 @@
 
 [testenv]
 description = Run tests and measure coverage.
-extras = tests
+extras = {env:TOX_TEST_EXTRAS:tests}
 deps = twisted: twisted[tls]
 commands =
     {py27,py37}{-twisted,}: coverage run --parallel -m pytest {posargs}
@@ -24,7 +24,7 @@
 [testenv:mypy]
 description = Check types
 basepython = python3.7
-extras = tests
+extras = {env:TOX_TEST_EXTRAS:tests}
 deps = mypy
 commands = mypy src
 


Reply via email to