appsettings2 1.2.6__tar.gz → 1.2.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. {appsettings2-1.2.6 → appsettings2-1.2.8}/PKG-INFO +1 -1
  2. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/Configuration.py +10 -3
  3. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/__init__.py +2 -2
  4. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2.egg-info/PKG-INFO +1 -1
  5. {appsettings2-1.2.6 → appsettings2-1.2.8}/pyproject.toml +1 -1
  6. {appsettings2-1.2.6 → appsettings2-1.2.8}/LICENSE +0 -0
  7. {appsettings2-1.2.6 → appsettings2-1.2.8}/README.md +0 -0
  8. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/ConfigurationBuilder.py +0 -0
  9. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/ConfigurationException.py +0 -0
  10. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/helpers.py +0 -0
  11. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/providers/CommandLineConfigurationProvider.py +0 -0
  12. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/providers/ConfigurationProvider.py +0 -0
  13. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/providers/EnvironmentConfigurationProvider.py +0 -0
  14. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/providers/JsonConfigurationProvider.py +0 -0
  15. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/providers/TomlConfigurationProvider.py +0 -0
  16. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/providers/YamlConfigurationProvider.py +0 -0
  17. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2/providers/__init__.py +0 -0
  18. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2.egg-info/SOURCES.txt +0 -0
  19. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2.egg-info/dependency_links.txt +0 -0
  20. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2.egg-info/requires.txt +0 -0
  21. {appsettings2-1.2.6 → appsettings2-1.2.8}/appsettings2.egg-info/top_level.txt +0 -0
  22. {appsettings2-1.2.6 → appsettings2-1.2.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: appsettings2
3
- Version: 1.2.6
3
+ Version: 1.2.8
4
4
  Summary: Unifies configuration sources into a Configuration object that can be bound to complex types, or accessed directly for configuration data.
5
5
  Author-email: Shaun Wilson <mrshaunwilson@msn.com>
6
6
  Project-URL: Documentation, https://appsettings2.readthedocs.io/
@@ -89,11 +89,18 @@ class Configuration:
89
89
  except AttributeError:
90
90
  lval = None
91
91
  self.__logger.debug(f'Failed to bind {aname}', exc_info=True)
92
- if (not hasattr(prop, 'fset')) or (getattr(prop, 'fset') is None):
92
+ if (not hasattr(prop, 'fset') or getattr(prop, 'fset') is None):
93
93
  # NOTE: lval is not settable
94
- if lval is None or not issubclass(type(lval), list):
95
- # lval not initialized or not a supported target
94
+ if rval is None:
95
+ # no assigment attempt will be made
96
96
  continue
97
+ elif lval is not None:
98
+ if rval is not None and lval == rval:
99
+ # same value, no need to assign
100
+ continue
101
+ elif not (issubclass(type(lval), list) and issubclass(type(rval), list)):
102
+ # non-list values cannot be merged
103
+ raise Exception(f'Cannot bind `None` to attribute `{aname}`')
97
104
  phints = typing.get_type_hints(getattr(prop, 'fget'))
98
105
  if phints is None or (not issubclass(type(phints), dict)):
99
106
  # NOTE: can't get hints from getter, can't bind
@@ -1,8 +1,8 @@
1
1
  # SPDX-FileCopyrightText: Copyright (C) Shaun Wilson
2
2
  # SPDX-License-Identifier: MIT
3
3
 
4
- __version__ = '1.2.6'
5
- __commit__ = '5b15b78'
4
+ __version__ = '1.2.8'
5
+ __commit__ = 'e76d102'
6
6
 
7
7
  from .Configuration import Configuration
8
8
  from .ConfigurationBuilder import ConfigurationBuilder
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: appsettings2
3
- Version: 1.2.6
3
+ Version: 1.2.8
4
4
  Summary: Unifies configuration sources into a Configuration object that can be bound to complex types, or accessed directly for configuration data.
5
5
  Author-email: Shaun Wilson <mrshaunwilson@msn.com>
6
6
  Project-URL: Documentation, https://appsettings2.readthedocs.io/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "appsettings2"
3
- version = "1.2.6"
3
+ version = "1.2.8"
4
4
  description = "Unifies configuration sources into a Configuration object that can be bound to complex types, or accessed directly for configuration data."
5
5
  authors = [
6
6
  { name="Shaun Wilson", email="mrshaunwilson@msn.com" }
File without changes
File without changes
File without changes