Hello community, here is the log from the commit of package python-docker-pycreds for openSUSE:Factory checked in at 2018-06-29 22:34:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-docker-pycreds (Old) and /work/SRC/openSUSE:Factory/.python-docker-pycreds.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-docker-pycreds" Fri Jun 29 22:34:02 2018 rev:7 rq:618931 version:0.3.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-docker-pycreds/python-docker-pycreds.changes 2018-05-02 12:20:19.144028125 +0200 +++ /work/SRC/openSUSE:Factory/.python-docker-pycreds.new/python-docker-pycreds.changes 2018-06-29 22:34:04.782122650 +0200 @@ -1,0 +2,6 @@ +Sun Jun 24 15:37:07 UTC 2018 - a...@gmx.de + +- update to version 0.3.0: + * Allow overriding environment variables for credstore invocation + +------------------------------------------------------------------- Old: ---- docker-pycreds-0.2.3.tar.gz New: ---- docker-pycreds-0.3.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-docker-pycreds.spec ++++++ --- /var/tmp/diff_new_pack.1RiX0b/_old 2018-06-29 22:34:05.074122396 +0200 +++ /var/tmp/diff_new_pack.1RiX0b/_new 2018-06-29 22:34:05.078122393 +0200 @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-docker-pycreds -Version: 0.2.3 +Version: 0.3.0 Release: 0 Summary: Python bindings for the Docker credentials store API License: Apache-2.0 ++++++ docker-pycreds-0.2.3.tar.gz -> docker-pycreds-0.3.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-pycreds-0.2.3/PKG-INFO new/docker-pycreds-0.3.0/PKG-INFO --- old/docker-pycreds-0.2.3/PKG-INFO 2018-04-25 22:45:55.000000000 +0200 +++ new/docker-pycreds-0.3.0/PKG-INFO 2018-06-07 04:40:23.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: docker-pycreds -Version: 0.2.3 +Version: 0.3.0 Summary: Python bindings for the docker credentials store API Home-page: https://github.com/shin-/dockerpy-creds Author: UNKNOWN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-pycreds-0.2.3/docker_pycreds.egg-info/PKG-INFO new/docker-pycreds-0.3.0/docker_pycreds.egg-info/PKG-INFO --- old/docker-pycreds-0.2.3/docker_pycreds.egg-info/PKG-INFO 2018-04-25 22:45:55.000000000 +0200 +++ new/docker-pycreds-0.3.0/docker_pycreds.egg-info/PKG-INFO 2018-06-07 04:40:23.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: docker-pycreds -Version: 0.2.3 +Version: 0.3.0 Summary: Python bindings for the docker credentials store API Home-page: https://github.com/shin-/dockerpy-creds Author: UNKNOWN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-pycreds-0.2.3/docker_pycreds.egg-info/SOURCES.txt new/docker-pycreds-0.3.0/docker_pycreds.egg-info/SOURCES.txt --- old/docker-pycreds-0.2.3/docker_pycreds.egg-info/SOURCES.txt 2018-04-25 22:45:55.000000000 +0200 +++ new/docker-pycreds-0.3.0/docker_pycreds.egg-info/SOURCES.txt 2018-06-07 04:40:23.000000000 +0200 @@ -18,4 +18,5 @@ dockerpycreds/utils.py dockerpycreds/version.py tests/__init__.py -tests/store_test.py \ No newline at end of file +tests/store_test.py +tests/utils_test.py \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-pycreds-0.2.3/dockerpycreds/store.py new/docker-pycreds-0.3.0/dockerpycreds/store.py --- old/docker-pycreds-0.2.3/dockerpycreds/store.py 2018-04-25 20:59:29.000000000 +0200 +++ new/docker-pycreds-0.3.0/dockerpycreds/store.py 2018-06-07 04:38:31.000000000 +0200 @@ -6,17 +6,19 @@ from . import constants from . import errors +from .utils import create_environment_dict from .utils import find_executable class Store(object): - def __init__(self, program): + def __init__(self, program, environment=None): """ Create a store object that acts as an interface to perform the basic operations for storing, retrieving and erasing credentials using `program`. """ self.program = constants.PROGRAM_PREFIX + program self.exe = find_executable(self.program) + self.environment = environment if self.exe is None: raise errors.InitializationError( '{0} not installed or not available in PATH'.format( @@ -65,15 +67,16 @@ def _execute(self, subcmd, data_input): output = None + env = create_environment_dict(self.environment) try: if six.PY3: output = subprocess.check_output( - [self.exe, subcmd], input=data_input + [self.exe, subcmd], input=data_input, env=env, ) else: process = subprocess.Popen( [self.exe, subcmd], stdin=subprocess.PIPE, - stdout=subprocess.PIPE + stdout=subprocess.PIPE, env=env, ) output, err = process.communicate(data_input) if process.returncode != 0: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-pycreds-0.2.3/dockerpycreds/utils.py new/docker-pycreds-0.3.0/dockerpycreds/utils.py --- old/docker-pycreds-0.2.3/dockerpycreds/utils.py 2018-04-25 20:59:24.000000000 +0200 +++ new/docker-pycreds-0.3.0/dockerpycreds/utils.py 2018-06-07 04:38:31.000000000 +0200 @@ -5,7 +5,7 @@ def find_executable(executable, path=None): """ - As distutils.spawn.find_executable, but on Windows, looks up + As distutils.spawn.find_executable, but on Windows, look up every extension declared in PATHEXT instead of just `.exe` """ if sys.platform != 'win32': @@ -27,3 +27,12 @@ return None else: return executable + + +def create_environment_dict(overrides): + """ + Create and return a copy of os.environ with the specified overrides + """ + result = os.environ.copy() + result.update(overrides or {}) + return result diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-pycreds-0.2.3/dockerpycreds/version.py new/docker-pycreds-0.3.0/dockerpycreds/version.py --- old/docker-pycreds-0.2.3/dockerpycreds/version.py 2018-04-25 22:41:40.000000000 +0200 +++ new/docker-pycreds-0.3.0/dockerpycreds/version.py 2018-06-07 04:39:03.000000000 +0200 @@ -1,2 +1,2 @@ -version = "0.2.3" +version = "0.3.0" version_info = tuple([int(d) for d in version.split("-")[0].split(".")]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-pycreds-0.2.3/tests/store_test.py new/docker-pycreds-0.3.0/tests/store_test.py --- old/docker-pycreds-0.2.3/tests/store_test.py 2018-04-25 20:44:22.000000000 +0200 +++ new/docker-pycreds-0.3.0/tests/store_test.py 2018-06-07 04:38:31.000000000 +0200 @@ -1,3 +1,4 @@ +import os import random import sys @@ -67,3 +68,10 @@ self.store.erase(key) with pytest.raises(CredentialsNotFound): self.store.get(key) + + def test_execute_with_env_override(self): + self.store.exe = 'env' + self.store.environment = {'FOO': 'bar'} + data = self.store._execute('--null', '') + assert b'\0FOO=bar\0' in data + assert 'FOO' not in os.environ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-pycreds-0.2.3/tests/utils_test.py new/docker-pycreds-0.3.0/tests/utils_test.py --- old/docker-pycreds-0.2.3/tests/utils_test.py 1970-01-01 01:00:00.000000000 +0100 +++ new/docker-pycreds-0.3.0/tests/utils_test.py 2018-06-07 04:38:31.000000000 +0200 @@ -0,0 +1,22 @@ +import os + +from dockerpycreds.utils import create_environment_dict + +try: + from unittest import mock +except ImportError: + import mock + + +@mock.patch.dict(os.environ) +def test_create_environment_dict(): + base = {'FOO': 'bar', 'BAZ': 'foobar'} + os.environ = base + assert create_environment_dict({'FOO': 'baz'}) == { + 'FOO': 'baz', 'BAZ': 'foobar', + } + assert create_environment_dict({'HELLO': 'world'}) == { + 'FOO': 'bar', 'BAZ': 'foobar', 'HELLO': 'world', + } + + assert os.environ == base