Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-confuse for openSUSE:Factory checked in at 2022-09-27 20:14:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-confuse (Old) and /work/SRC/openSUSE:Factory/.python-confuse.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-confuse" Tue Sep 27 20:14:15 2022 rev:2 rq:1006371 version:2.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-confuse/python-confuse.changes 2022-02-13 00:15:28.528129776 +0100 +++ /work/SRC/openSUSE:Factory/.python-confuse.new.2275/python-confuse.changes 2022-09-27 20:14:27.465896516 +0200 @@ -1,0 +2,24 @@ +Mon Sep 26 23:32:41 UTC 2022 - Yogalakshmi Arunachalam <yarunacha...@suse.com> + +- Update to version 2.0.0: + * Merge pull request #149 from beetbox/py3-cleanup + * Remove all __future__ imports + * Remove Python 2isms + * Rename branch master -> main + * Merge pull request #147 from beetbox/py3 + * Tolerate kwargs in mocked makedirs + * Fix job name + * Switch from nose to nose2 + * Try a new, simpler Actions setup + * Drop support for Python <3.6 + * Merge pull request #144 from arroyoj/document_view_pitfall + * Add warning to docs about using config.get() to retrieve entire config + * Changelog & version bump for #142 + * Merge pull request #142 from arroyoj/environment_source + * Update docs with how to set config options from environment variables + * Add convenience Configuration method to set overlay from environment + * Add option for environment variable values to be parsed as full YAML + * Add configuration source that loads values from environment variables + * Refactor ConfigView._build_namespace_dict into a utility function + +------------------------------------------------------------------- Old: ---- confuse-1.7.0.tar.gz New: ---- confuse-2.0.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-confuse.spec ++++++ --- /var/tmp/diff_new_pack.dHQG5f/_old 2022-09-27 20:14:27.905897474 +0200 +++ /var/tmp/diff_new_pack.dHQG5f/_new 2022-09-27 20:14:27.909897483 +0200 @@ -18,7 +18,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-confuse -Version: 1.7.0 +Version: 2.0.0 Release: 0 Summary: Painless YAML configuration License: MIT ++++++ confuse-1.7.0.tar.gz -> confuse-2.0.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/.github/workflows/build.yml new/confuse-2.0.0/.github/workflows/build.yml --- old/confuse-1.7.0/.github/workflows/build.yml 2020-06-27 15:27:09.545520000 +0200 +++ new/confuse-2.0.0/.github/workflows/build.yml 2022-07-16 20:17:32.030247000 +0200 @@ -1,63 +1,36 @@ name: Build on: - push: - branches: - - master - pull_request: - branches: - - master + push: + branches: + - main + pull_request: + branches: + - main jobs: - test: - name: '${{ matrix.os }}: ${{ matrix.tox-env }}' - runs-on: ${{ matrix.os }} - strategy: - matrix: - tox-env: [py27-test, py35-test, py36-test, - py37-test, py38-test, pypy-test] - os: [ubuntu-latest, windows-latest] - - # Only test on a couple of versions on Windows. - exclude: - - os: windows-latest - tox-env: py35-test - - os: windows-latest - tox-env: py36-test - - os: windows-latest - tox-env: py37-test - - os: windows-latest - tox-env: pypy-test - - # Python interpreter versions. :/ - include: - - tox-env: py27-test - python: 2.7 - - tox-env: py35-test - python: 3.5 - - tox-env: py36-test - python: 3.6 - - tox-env: py37-test - python: 3.7 - - tox-env: py38-test - python: 3.8 - - tox-env: pypy-test - python: pypy3 - - steps: - - uses: actions/checkout@v2 - - name: Set up Python ${{ matrix.python }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python }} - - name: Install Tox - run: pip install tox - - name: Tox - run: tox -e ${{ matrix.tox-env }} - - style: - name: Style - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: TrueBrain/actions-flake8@master + test: + name: '${{ matrix.os }}: ${{ matrix.python-version }}' + runs-on: ${{ matrix.os }} + strategy: + matrix: + python-version: ['3.6', '3.7', '3.8', '3.9', '3.10', '3.11-dev'] + os: [ubuntu-latest, windows-latest] + + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install Tox + run: pip install tox + - name: Tox + run: tox -e py-test + + style: + name: Style + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: TrueBrain/actions-flake8@master diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/PKG-INFO new/confuse-2.0.0/PKG-INFO --- old/confuse-1.7.0/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/confuse-2.0.0/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +1,96 @@ -Metadata-Version: 1.1 +Metadata-Version: 2.1 Name: confuse -Version: 1.7.0 +Version: 2.0.0 Summary: Painless YAML configuration. Home-page: https://github.com/beetbox/confuse Author: Adrian Sampson Author-email: adr...@radbox.org +Requires-Python: >=3.6, <4 +Description-Content-Type: text/x-rst +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Requires-Dist: pyyaml + +Confuse: painless YAML config files +=================================== + +.. image:: https://github.com/beetbox/confuse/workflows/Build/badge.svg?branch=master + :target: https://github.com/beetbox/confuse/actions + +.. image:: http://img.shields.io/pypi/v/confuse.svg + :target: https://pypi.python.org/pypi/confuse + +**Confuse** is a configuration library for Python that uses `YAML`_. It takes +care of defaults, overrides, type checking, command-line integration, +environment variable support, human-readable errors, and standard OS-specific +locations. + +What It Does +------------ + +Here???s what Confuse brings to the table: + +- An **utterly sensible API** resembling dictionary-and-list structures + but providing **transparent validation** without lots of boilerplate + code. Type ``config['num_goats'].get(int)`` to get the configured + number of goats and ensure that it???s an integer. + +- Combine configuration data from **multiple sources**. Using + *layering*, Confuse allows user-specific configuration to seamlessly + override system-wide configuration, which in turn overrides built-in + defaults. An in-package ``config_default.yaml`` can be used to + provide bottom-layer defaults using the same syntax that users will + see. A runtime overlay allows the program to programmatically + override and add configuration values. + +- Look for configuration files in **platform-specific paths**. Like + ``$XDG_CONFIG_HOME`` or ``~/.config`` on Unix; "Application Support" on + macOS; ``%APPDATA%`` on Windows. Your program gets its own + directory, which you can use to store additional data. You can + transparently create this directory on demand if, for example, you + need to initialize the configuration file on first run. And an + environment variable can be used to override the directory's + location. + +- Integration with **command-line arguments** via `argparse`_ or `optparse`_ + from the standard library. Use argparse's declarative API to allow + command-line options to override configured defaults. + +- Include configuration values from **environment variables**. Values undergo + automatic type conversion, and nested dicts and lists are supported. + +Installation +------------ + +Confuse is available on `PyPI <https://pypi.org/project/confuse/>`_ and can be installed +using :code:`pip`: + +.. code-block:: sh + + pip install confuse + +Using Confuse +------------- + +`Confuse's documentation`_ describes its API in detail. + +Credits +------- + +Confuse was made to power `beets`_. +Like beets, it is available under the `MIT license`_. + +.. _ConfigParser: http://docs.python.org/library/configparser.html +.. _YAML: http://yaml.org/ +.. _optparse: http://docs.python.org/dev/library/optparse.html +.. _argparse: http://docs.python.org/dev/library/argparse.html +.. _logging: http://docs.python.org/library/logging.html +.. _Confuse's documentation: http://confuse.readthedocs.org/en/latest/usage.html +.. _MIT license: http://www.opensource.org/licenses/mit-license.php +.. _beets: https://github.com/beetbox/beets + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/confuse/__init__.py new/confuse-2.0.0/confuse/__init__.py --- old/confuse-1.7.0/confuse/__init__.py 2021-11-26 21:56:58.477192900 +0100 +++ new/confuse-2.0.0/confuse/__init__.py 2022-07-16 20:35:30.821347700 +0200 @@ -1,9 +1,7 @@ """Painless YAML configuration. """ -from __future__ import division, absolute_import, print_function - -__version__ = '1.7.0' +__version__ = '2.0.0' from .exceptions import * # NOQA from .util import * # NOQA diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/confuse/core.py new/confuse-2.0.0/confuse/core.py --- old/confuse-1.7.0/confuse/core.py 2021-11-26 21:56:30.342935300 +0100 +++ new/confuse-2.0.0/confuse/core.py 2022-07-16 20:35:30.821843600 +0200 @@ -15,8 +15,6 @@ """Worry-free YAML configuration files. """ -from __future__ import division, absolute_import, print_function - import errno import os import yaml @@ -165,23 +163,10 @@ def __str__(self): """Get the value for this view as a bytestring. """ - if util.PY3: - return self.__unicode__() - else: - return bytes(self.get()) - - def __unicode__(self): - """Get the value for this view as a Unicode string. - """ - return util.STRING(self.get()) - - def __nonzero__(self): - """Gets the value for this view as a boolean. (Python 2 only.) - """ - return self.__bool__() + return str(self.get()) def __bool__(self): - """Gets the value for this view as a boolean. (Python 3 only.) + """Gets the value for this view as a bool. """ return bool(self.get()) @@ -441,7 +426,7 @@ self.name += u'#{0}'.format(self.key) elif isinstance(self.key, bytes): self.name += self.key.decode('utf-8') - elif isinstance(self.key, util.STRING): + elif isinstance(self.key, str): self.name += self.key else: self.name += repr(self.key) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/confuse/exceptions.py new/confuse-2.0.0/confuse/exceptions.py --- old/confuse-1.7.0/confuse/exceptions.py 2021-11-26 21:56:30.344299300 +0100 +++ new/confuse-2.0.0/confuse/exceptions.py 2022-07-16 20:35:30.822197200 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - import yaml __all__ = [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/confuse/sources.py new/confuse-2.0.0/confuse/sources.py --- old/confuse-1.7.0/confuse/sources.py 2021-11-26 21:56:30.345449200 +0100 +++ new/confuse-2.0.0/confuse/sources.py 2022-07-16 20:35:30.822574100 +0200 @@ -1,6 +1,4 @@ -from __future__ import division, absolute_import, print_function - -from .util import BASESTRING, build_dict +from .util import build_dict from . import yaml_util import os @@ -27,8 +25,7 @@ behavior. """ super(ConfigSource, self).__init__(value) - if (filename is not None - and not isinstance(filename, BASESTRING)): + if filename is not None and not isinstance(filename, str): raise TypeError(u'filename must be a string or None') self.filename = filename self.default = default diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/confuse/templates.py new/confuse-2.0.0/confuse/templates.py --- old/confuse-1.7.0/confuse/templates.py 2021-06-28 15:57:36.934113700 +0200 +++ new/confuse-2.0.0/confuse/templates.py 2022-07-16 20:35:30.823772700 +0200 @@ -1,29 +1,12 @@ -from __future__ import division, absolute_import, print_function - import os import re -import sys +import enum +import pathlib +from collections import abc from . import util from . import exceptions -try: - import enum - SUPPORTS_ENUM = True -except ImportError: - SUPPORTS_ENUM = False - -try: - import pathlib - SUPPORTS_PATHLIB = True -except ImportError: - SUPPORTS_PATHLIB = False - -if sys.version_info >= (3, 3): - from collections import abc -else: - import collections as abc - REQUIRED = object() """A sentinel indicating that there is no default value and an exception @@ -130,7 +113,7 @@ def convert(self, value, view): """Check that the value is an int or a float. """ - if isinstance(value, util.NUMERIC_TYPES): + if isinstance(value, (int, float)): return value else: self.fail( @@ -243,7 +226,7 @@ def convert(self, value, view): """Check that the value is a string and matches the pattern. """ - if not isinstance(value, util.BASESTRING): + if not isinstance(value, str): self.fail(u'must be a string', view, True) if self.pattern and not self.regex.match(value): @@ -278,7 +261,7 @@ """Ensure that the value is among the choices (and remap if the choices are a mapping). """ - if (SUPPORTS_ENUM and isinstance(self.choices, type) + if (isinstance(self.choices, type) and issubclass(self.choices, enum.Enum)): try: return self.choices(value) @@ -385,7 +368,7 @@ self.split = split def _convert_value(self, x, view): - if isinstance(x, util.STRING): + if isinstance(x, str): return x elif isinstance(x, bytes): return x.decode('utf-8', 'ignore') @@ -396,7 +379,7 @@ if isinstance(value, bytes): value = value.decode('utf-8', 'ignore') - if isinstance(value, util.STRING): + if isinstance(value, str): if self.split: value = value.split() else: @@ -566,13 +549,13 @@ except exceptions.NotFoundError: return self.get_default_value(view.name) - if not isinstance(path, util.BASESTRING): + if not isinstance(path, str): self.fail( u'must be a filename, not {0}'.format(type(path).__name__), view, True ) - path = os.path.expanduser(util.STRING(path)) + path = os.path.expanduser(str(path)) if not os.path.isabs(path): if self.cwd is not None: @@ -602,9 +585,6 @@ Filenames are parsed equivalent to the `Filename` template and then converted to `pathlib.Path` objects. - - For Python 2 it returns the original path as returned by the `Filename` - template. """ def value(self, view, template=None): value = super(Path, self).value(view, template) @@ -709,15 +689,14 @@ return Integer() elif isinstance(value, int): return Integer(value) - elif isinstance(value, type) and issubclass(value, util.BASESTRING): + elif isinstance(value, type) and issubclass(value, str): return String() - elif isinstance(value, util.BASESTRING): + elif isinstance(value, str): return String(value) elif isinstance(value, set): # convert to list to avoid hash related problems return Choice(list(value)) - elif (SUPPORTS_ENUM and isinstance(value, type) - and issubclass(value, enum.Enum)): + elif isinstance(value, type) and issubclass(value, enum.Enum): return Choice(value) elif isinstance(value, list): return OneOf(value) @@ -725,7 +704,7 @@ return Number() elif isinstance(value, float): return Number(value) - elif SUPPORTS_PATHLIB and isinstance(value, pathlib.PurePath): + elif isinstance(value, pathlib.PurePath): return Path(value) elif value is None: return Template(None) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/confuse/util.py new/confuse-2.0.0/confuse/util.py --- old/confuse-1.7.0/confuse/util.py 2021-11-26 21:56:30.345762000 +0100 +++ new/confuse-2.0.0/confuse/util.py 2022-07-16 20:35:30.824052000 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - import os import sys import argparse @@ -8,12 +6,6 @@ import pkgutil -PY3 = sys.version_info[0] == 3 -STRING = str if PY3 else unicode # noqa: F821 -BASESTRING = str if PY3 else basestring # noqa: F821 -NUMERIC_TYPES = (int, float) if PY3 else (int, float, long) # noqa: F821 - - UNIX_DIR_FALLBACK = '~/.config' WINDOWS_DIR_VAR = 'APPDATA' WINDOWS_DIR_FALLBACK = '~\\AppData\\Roaming' @@ -75,7 +67,7 @@ return obj # Get keys iterator - keys = obj.keys() if PY3 else obj.iterkeys() + keys = obj.keys() if sep: # Splitting keys by `sep` needs sorted keys to prevent parents # from clobbering children diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/confuse/yaml_util.py new/confuse-2.0.0/confuse/yaml_util.py --- old/confuse-1.7.0/confuse/yaml_util.py 2021-11-26 21:56:30.347602000 +0100 +++ new/confuse-2.0.0/confuse/yaml_util.py 2022-07-16 20:35:30.824402300 +0200 @@ -1,9 +1,6 @@ -from __future__ import division, absolute_import, print_function - from collections import OrderedDict import yaml from .exceptions import ConfigReadError -from .util import BASESTRING # YAML loading. @@ -119,7 +116,7 @@ - The empty string '' will return None """ # We only deal with strings - if not isinstance(value, BASESTRING): + if not isinstance(value, str): return value try: loader = loader('') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/docs/changelog.rst new/confuse-2.0.0/docs/changelog.rst --- old/confuse-1.7.0/docs/changelog.rst 2021-11-26 21:58:14.074385600 +0100 +++ new/confuse-2.0.0/docs/changelog.rst 2022-07-16 20:36:06.908936300 +0200 @@ -1,6 +1,11 @@ Changelog --------- +v2.0.0 +'''''' + +- Drop support for versions of Python below 3.6. + v1.7.0 '''''' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/docs/usage.rst new/confuse-2.0.0/docs/usage.rst --- old/confuse-1.7.0/docs/usage.rst 2021-11-26 21:56:30.348742000 +0100 +++ new/confuse-2.0.0/docs/usage.rst 2022-05-17 21:55:40.000000000 +0200 @@ -89,13 +89,23 @@ throw an exception? With Confuse???s views, the application gets to decide. The above expression, ``config['deliciousness']['carrots'].get()``, -returns 10 (falling back on the default). However, you can also write +returns 8 (falling back on the default). However, you can also write ``config['deliciousness'].get()``. This expression will cause the *entire* user-specified mapping to override the default one, providing a dict object like ``{'broccoli': 7, 'zucchini': 9}``. As a rule, then, resolve a view at the same granularity you want config files to override each other. +.. warning:: + It may appear that calling ``config.get()`` would retrieve the entire + configuration at once. However, this will return only the + *highest-priority* configuration source, masking any lower-priority + values for keys that are not present in the top source. This pitfall is + especially likely when using :ref:`Command-Line Options` or + :ref:`Environment Variables`, which may place an empty configuration + at the top of the stack. A subsequent call to ``config.get()`` might + then return no configuration at all. + .. _XPath: http://www.w3.org/TR/xpath/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/example/__init__.py new/confuse-2.0.0/example/__init__.py --- old/confuse-1.7.0/example/__init__.py 2019-04-20 23:33:44.000000000 +0200 +++ new/confuse-2.0.0/example/__init__.py 2022-07-16 20:35:30.824837400 +0200 @@ -1,5 +1,4 @@ """An example application using Confuse for configuration.""" -from __future__ import division, absolute_import, print_function import confuse import argparse diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/pyproject.toml new/confuse-2.0.0/pyproject.toml --- old/confuse-1.7.0/pyproject.toml 2021-06-28 16:51:25.707440100 +0200 +++ new/confuse-2.0.0/pyproject.toml 2022-07-16 20:15:25.770918000 +0200 @@ -11,23 +11,13 @@ "pyyaml" ] description-file = "README.rst" -requires-python = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" +requires-python = ">=3.6, <4" classifiers = [ 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', ] - -[tool.flit.metadata.requires-extra] -test = [ - "pathlib; python_version == '2.7'" -] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/setup.cfg new/confuse-2.0.0/setup.cfg --- old/confuse-1.7.0/setup.cfg 2018-10-24 21:18:30.000000000 +0200 +++ new/confuse-2.0.0/setup.cfg 2022-07-16 20:35:30.825054400 +0200 @@ -4,19 +4,12 @@ eval-attr="!=slow" [flake8] -min-version=2.7 +min-version=3.6 # Default pyflakes errors we ignore: # - E241: missing whitespace after ',' (used to align visually) # - E221: multiple spaces before operator (used to align visually) # - E731: do not assign a lambda expression, use a def # - C901: function/method complexity -# `flake8-future-import` errors we ignore: -# - FI50: `__future__` import "division" present -# - FI51: `__future__` import "absolute_import" present -# - FI12: `__future__` import "with_statement" missing -# - FI53: `__future__` import "print_function" present -# - FI14: `__future__` import "unicode_literals" missing -# - FI15: `__future__` import "generator_stop" missing # pycodestyle warnings ignored: # - W503: line breaks before binary operators -ignore=C901,E241,E221,E731,FI50,FI51,FI12,FI53,FI14,FI15,W503 +ignore=C901,E241,E221,E731,W503 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/setup.py new/confuse-2.0.0/setup.py --- old/confuse-1.7.0/setup.py 1970-01-01 01:00:00.000000000 +0100 +++ new/confuse-2.0.0/setup.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,29 +0,0 @@ -#!/usr/bin/env python -# setup.py generated by flit for tools that don't yet use PEP 517 - -from distutils.core import setup - -packages = \ -['confuse'] - -package_data = \ -{'': ['*']} - -install_requires = \ -['pyyaml'] - -extras_require = \ -{"test:python_version == '2.7'": ['pathlib']} - -setup(name='confuse', - version='1.7.0', - description='Painless YAML configuration.', - author='Adrian Sampson', - author_email='adr...@radbox.org', - url='https://github.com/beetbox/confuse', - packages=packages, - package_data=package_data, - install_requires=install_requires, - extras_require=extras_require, - python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4', - ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/__init__.py new/confuse-2.0.0/test/__init__.py --- old/confuse-1.7.0/test/__init__.py 2016-06-21 00:26:42.000000000 +0200 +++ new/confuse-2.0.0/test/__init__.py 2022-07-16 20:35:30.825560300 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - import confuse import tempfile import shutil diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_cli.py new/confuse-2.0.0/test/test_cli.py --- old/confuse-1.7.0/test/test_cli.py 2018-05-05 18:45:27.000000000 +0200 +++ new/confuse-2.0.0/test/test_cli.py 2022-07-16 20:35:30.826141600 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - import confuse import argparse from argparse import Namespace diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_dump.py new/confuse-2.0.0/test/test_dump.py --- old/confuse-1.7.0/test/test_dump.py 2016-06-21 00:26:42.000000000 +0200 +++ new/confuse-2.0.0/test/test_dump.py 2022-07-16 20:35:30.826622500 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - import confuse import textwrap import unittest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_env.py new/confuse-2.0.0/test/test_env.py --- old/confuse-1.7.0/test/test_env.py 2021-11-26 21:56:30.349206400 +0100 +++ new/confuse-2.0.0/test/test_env.py 2022-07-16 20:35:30.827245500 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - import confuse import os import unittest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_paths.py new/confuse-2.0.0/test/test_paths.py --- old/confuse-1.7.0/test/test_paths.py 2020-06-27 15:27:09.546534000 +0200 +++ new/confuse-2.0.0/test/test_paths.py 2022-07-16 20:35:30.827508200 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - import confuse import confuse.yaml_util import ntpath @@ -172,9 +170,9 @@ def join(self, *args): return self.os_path.normpath(self.os_path.join(*args)) - def makedirs(self, path, *args): + def makedirs(self, path, *args, **kwargs): os.path, os_path = self.os_path, os.path - self._makedirs(path, *args) + self._makedirs(path, *args, **kwargs) os.path = os_path def setUp(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_utils.py new/confuse-2.0.0/test/test_utils.py --- old/confuse-1.7.0/test/test_utils.py 2021-11-26 21:56:30.349459400 +0100 +++ new/confuse-2.0.0/test/test_utils.py 2022-07-16 20:35:30.827782400 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - from argparse import Namespace from collections import OrderedDict import confuse diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_valid.py new/confuse-2.0.0/test/test_valid.py --- old/confuse-1.7.0/test/test_valid.py 2021-06-28 15:57:36.936720100 +0200 +++ new/confuse-2.0.0/test/test_valid.py 2022-07-16 20:35:30.828095700 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - try: import enum SUPPORTS_ENUM = True @@ -115,18 +113,6 @@ self.assertIsInstance(typ, confuse.String) self.assertEqual(typ.default, 'foo') - @unittest.skipIf(confuse.PY3, "unicode only present in Python 2") - def test_unicode_type_as_template(self): - typ = confuse.as_template(unicode) # noqa ignore=F821 - self.assertIsInstance(typ, confuse.String) - self.assertEqual(typ.default, confuse.REQUIRED) - - @unittest.skipIf(confuse.PY3, "basestring only present in Python 2") - def test_basestring_as_template(self): - typ = confuse.as_template(basestring) # noqa ignore=F821 - self.assertIsInstance(typ, confuse.String) - self.assertEqual(typ.default, confuse.REQUIRED) - def test_dict_as_template(self): typ = confuse.as_template({'key': 9}) self.assertIsInstance(typ, confuse.MappingTemplate) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_validation.py new/confuse-2.0.0/test/test_validation.py --- old/confuse-1.7.0/test/test_validation.py 2020-02-24 00:23:38.447471400 +0100 +++ new/confuse-2.0.0/test/test_validation.py 2022-07-16 20:35:30.828497600 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - try: import enum SUPPORTS_ENUM = True @@ -121,11 +119,6 @@ config = _root({'i': 2}) config['i'].as_number() - @unittest.skipIf(confuse.PY3, "long only present in Python 2") - def test_as_number_long_in_py2(self): - config = _root({'l': long(3)}) # noqa ignore=F821 - config['l'].as_number() - def test_as_number_string(self): config = _root({'s': 'a'}) with self.assertRaises(confuse.ConfigTypeError): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_views.py new/confuse-2.0.0/test/test_views.py --- old/confuse-1.7.0/test/test_views.py 2021-11-26 21:56:30.350671500 +0100 +++ new/confuse-2.0.0/test/test_views.py 2022-07-16 20:35:30.828893200 +0200 @@ -1,12 +1,7 @@ -from __future__ import division, absolute_import, print_function - import confuse -import sys import unittest from . import _root -PY3 = sys.version_info[0] == 3 - class SingleSourceTest(unittest.TestCase): def test_dict_access(self): @@ -101,12 +96,6 @@ value = str(config['foo']) self.assertEqual(value, '2') - @unittest.skipIf(confuse.PY3, "unicode only present in Python 2") - def test_unicode_conversion_from_int(self): - config = _root({'foo': 2}) - value = unicode(config['foo']) # noqa ignore=F821 - self.assertEqual(value, unicode('2')) # noqa ignore=F821 - def test_bool_conversion_from_bool(self): config = _root({'foo': True}) value = bool(config['foo']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/test/test_yaml.py new/confuse-2.0.0/test/test_yaml.py --- old/confuse-1.7.0/test/test_yaml.py 2021-11-26 21:56:30.352425300 +0100 +++ new/confuse-2.0.0/test/test_yaml.py 2022-07-16 20:35:30.829249000 +0200 @@ -1,5 +1,3 @@ -from __future__ import division, absolute_import, print_function - import confuse import yaml import unittest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/confuse-1.7.0/tox.ini new/confuse-2.0.0/tox.ini --- old/confuse-1.7.0/tox.ini 2020-12-09 18:14:38.000000000 +0100 +++ new/confuse-2.0.0/tox.ini 2022-07-16 20:35:30.829521000 +0200 @@ -4,7 +4,7 @@ # and then run "tox" from this directory. [tox] -envlist = py{27,34,35,36,37,38}-test, py27-flake8, docs +envlist = py{36,37,38}-test, py38-flake8, docs isolated_build = True [tox:.package] @@ -12,9 +12,7 @@ [_test] deps = - coverage - nose - nose-show-skipped + nose2[coverage_plugin] pyyaml pathlib @@ -22,26 +20,20 @@ [_flake8] deps = flake8 - flake8-future-import pep8-naming files = example confuse test docs [testenv] -passenv = - NOSE_SHOW_SKIPPED # Undocumented feature of nose-show-skipped. deps = {test,cov}: {[_test]deps} - py{27,34,36}-flake8: {[_flake8]deps} + py{36,37,38}-flake8: {[_flake8]deps} commands = - cov: nosetests --with-coverage {posargs} - test: nosetests {posargs} - py27-flake8: flake8 --min-version 2.7 {posargs} {[_flake8]files} - py34-flake8: flake8 --min-version 3.4 {posargs} {[_flake8]files} + cov: nose2 --with-coverage {posargs} + test: nose2 {posargs} py36-flake8: flake8 --min-version 3.6 {posargs} {[_flake8]files} [testenv:docs] -basepython = python2.7 -deps = +deps = sphinx sphinx-rtd-theme commands = sphinx-build -W -q -b html docs {envtmpdir}/html {posargs}