rule-engine 5.0.1__tar.gz → 5.0.2__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 (46) hide show
  1. {rule_engine-5.0.1 → rule_engine-5.0.2}/PKG-INFO +2 -3
  2. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/__init__.py +1 -1
  3. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/engine/_attribute_resolver.py +4 -1
  4. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine.egg-info/PKG-INFO +2 -3
  5. {rule_engine-5.0.1 → rule_engine-5.0.2}/pyproject.toml +3 -3
  6. {rule_engine-5.0.1 → rule_engine-5.0.2}/LICENSE +0 -0
  7. {rule_engine-5.0.1 → rule_engine-5.0.2}/README.rst +0 -0
  8. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/_vendor/__init__.py +0 -0
  9. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/_vendor/ply/LICENSE +0 -0
  10. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/_vendor/ply/__init__.py +0 -0
  11. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/_vendor/ply/lex.py +0 -0
  12. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/_vendor/ply/yacc.py +0 -0
  13. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/__init__.py +0 -0
  14. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/base.py +0 -0
  15. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/binary/__init__.py +0 -0
  16. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/binary/arithmetic.py +0 -0
  17. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/binary/base.py +0 -0
  18. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/binary/comparison.py +0 -0
  19. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/expression/__init__.py +0 -0
  20. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/expression/access.py +0 -0
  21. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/expression/control.py +0 -0
  22. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/expression/resolution.py +0 -0
  23. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/ast/literal.py +0 -0
  24. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/builtins.py +0 -0
  25. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/debug_ast.py +0 -0
  26. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/debug_repl.py +0 -0
  27. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/engine/__init__.py +0 -0
  28. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/engine/context.py +0 -0
  29. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/engine/rule.py +0 -0
  30. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/errors.py +0 -0
  31. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/parser/__init__.py +0 -0
  32. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/parser/base.py +0 -0
  33. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/parser/utilities.py +0 -0
  34. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/suggestions.py +0 -0
  35. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/types/__init__.py +0 -0
  36. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/types/_object.py +0 -0
  37. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/types/coercion.py +0 -0
  38. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/types/dataclass.py +0 -0
  39. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/types/datatype.py +0 -0
  40. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/types/definitions.py +0 -0
  41. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine/types/sqlalchemy.py +0 -0
  42. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine.egg-info/SOURCES.txt +0 -0
  43. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine.egg-info/dependency_links.txt +0 -0
  44. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine.egg-info/requires.txt +0 -0
  45. {rule_engine-5.0.1 → rule_engine-5.0.2}/lib/rule_engine.egg-info/top_level.txt +0 -0
  46. {rule_engine-5.0.1 → rule_engine-5.0.2}/setup.cfg +0 -0
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rule-engine
3
- Version: 5.0.1
3
+ Version: 5.0.2
4
4
  Summary: A lightweight, optionally typed expression language with a custom grammar for matching arbitrary Python objects.
5
5
  Author-email: Spencer McIntyre <zeroSteiner@gmail.com>
6
6
  Maintainer-email: Spencer McIntyre <zeroSteiner@gmail.com>
7
- License: BSD
7
+ License-Expression: BSD-3-Clause
8
8
  Project-URL: Homepage, https://github.com/zeroSteiner/rule-engine
9
9
  Classifier: Development Status :: 5 - Production/Stable
10
10
  Classifier: Environment :: Console
11
11
  Classifier: Intended Audience :: Developers
12
- Classifier: License :: OSI Approved :: BSD License
13
12
  Classifier: Operating System :: OS Independent
14
13
  Classifier: Programming Language :: Python :: 3.10
15
14
  Classifier: Programming Language :: Python :: 3.11
@@ -30,7 +30,7 @@
30
30
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
31
  #
32
32
 
33
- __version__ = '5.0.1'
33
+ __version__ = '5.0.2'
34
34
 
35
35
  from .engine import resolve_attribute
36
36
  from .engine import resolve_item
@@ -313,7 +313,10 @@ class _AttributeResolver(object):
313
313
  return functools.partial(self._value_ends_with, value)
314
314
 
315
315
  def _value_ends_with(self, value: Sequence[Any], suffix: Sequence[Any]) -> bool:
316
- return value[-len(suffix):] == suffix
316
+ # index from the front (len(value) - len(suffix)) rather than the back
317
+ # (-len(suffix)) so an empty suffix yields an empty slice instead of the
318
+ # whole value; value[-0:] is value[0:], which made ends_with('') False
319
+ return value[len(value) - len(suffix):] == suffix
317
320
 
318
321
  @attribute('is_empty', types.DataType.ARRAY, types.DataType.BYTES, types.DataType.STRING, types.DataType.MAPPING, types.DataType.SET, result_type=types.DataType.BOOLEAN)
319
322
  def value_is_empty(self, value: Sized) -> bool:
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rule-engine
3
- Version: 5.0.1
3
+ Version: 5.0.2
4
4
  Summary: A lightweight, optionally typed expression language with a custom grammar for matching arbitrary Python objects.
5
5
  Author-email: Spencer McIntyre <zeroSteiner@gmail.com>
6
6
  Maintainer-email: Spencer McIntyre <zeroSteiner@gmail.com>
7
- License: BSD
7
+ License-Expression: BSD-3-Clause
8
8
  Project-URL: Homepage, https://github.com/zeroSteiner/rule-engine
9
9
  Classifier: Development Status :: 5 - Production/Stable
10
10
  Classifier: Environment :: Console
11
11
  Classifier: Intended Audience :: Developers
12
- Classifier: License :: OSI Approved :: BSD License
13
12
  Classifier: Operating System :: OS Independent
14
13
  Classifier: Programming Language :: Python :: 3.10
15
14
  Classifier: Programming Language :: Python :: 3.11
@@ -1,5 +1,5 @@
1
1
  [build-system]
2
- requires = ["setuptools>=64"]
2
+ requires = ["setuptools>=77"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
@@ -7,7 +7,8 @@ name = "rule-engine"
7
7
  dynamic = ["version"]
8
8
  description = "A lightweight, optionally typed expression language with a custom grammar for matching arbitrary Python objects."
9
9
  readme = "README.rst"
10
- license = {text = "BSD"}
10
+ license = "BSD-3-Clause"
11
+ license-files = ["LICENSE"]
11
12
  authors = [
12
13
  {name = "Spencer McIntyre", email = "zeroSteiner@gmail.com"},
13
14
  ]
@@ -22,7 +23,6 @@ classifiers = [
22
23
  "Development Status :: 5 - Production/Stable",
23
24
  "Environment :: Console",
24
25
  "Intended Audience :: Developers",
25
- "License :: OSI Approved :: BSD License",
26
26
  "Operating System :: OS Independent",
27
27
  #"Programming Language :: Python :: 3.4", # dropped in v4.0
28
28
  #"Programming Language :: Python :: 3.5", # dropped in v4.0
File without changes
File without changes
File without changes