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&hostname=irc.freenode.net&port=6697&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
