Browse Source

Intermediate changes

robot-piglet 7 months ago
parent
commit
8ca35a5a3e

+ 6 - 8
contrib/python/pure-eval/.dist-info/METADATA

@@ -1,19 +1,19 @@
 Metadata-Version: 2.1
-Name: pure-eval
-Version: 0.2.2
+Name: pure_eval
+Version: 0.2.3
 Summary: Safely evaluate AST nodes without side effects
 Home-page: http://github.com/alexmojaki/pure_eval
 Author: Alex Hall
 Author-email: alex.mojaki@gmail.com
 License: MIT
-Platform: UNKNOWN
 Classifier: Intended Audience :: Developers
-Classifier: Programming Language :: Python :: 3.5
-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
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
 Description-Content-Type: text/markdown
@@ -23,7 +23,7 @@ Requires-Dist: pytest ; extra == 'tests'
 
 # `pure_eval`
 
-[![Build Status](https://travis-ci.org/alexmojaki/pure_eval.svg?branch=master)](https://travis-ci.org/alexmojaki/pure_eval) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/pure_eval/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/pure_eval?branch=master) [![Supports Python versions 3.5+](https://img.shields.io/pypi/pyversions/pure_eval.svg)](https://pypi.python.org/pypi/pure_eval)
+[![Build Status](https://travis-ci.org/alexmojaki/pure_eval.svg?branch=master)](https://travis-ci.org/alexmojaki/pure_eval) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/pure_eval/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/pure_eval?branch=master) [![Supports Python versions 3.7+](https://img.shields.io/pypi/pyversions/pure_eval.svg)](https://pypi.python.org/pypi/pure_eval)
 
 This is a Python package that lets you safely evaluate certain AST nodes without triggering arbitrary code that may have unwanted side effects.
 
@@ -225,5 +225,3 @@ d = {1: 2}
 y = 2
 d[x] = 2
 ```
-
-

+ 1 - 1
contrib/python/pure-eval/README.md

@@ -1,6 +1,6 @@
 # `pure_eval`
 
-[![Build Status](https://travis-ci.org/alexmojaki/pure_eval.svg?branch=master)](https://travis-ci.org/alexmojaki/pure_eval) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/pure_eval/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/pure_eval?branch=master) [![Supports Python versions 3.5+](https://img.shields.io/pypi/pyversions/pure_eval.svg)](https://pypi.python.org/pypi/pure_eval)
+[![Build Status](https://travis-ci.org/alexmojaki/pure_eval.svg?branch=master)](https://travis-ci.org/alexmojaki/pure_eval) [![Coverage Status](https://coveralls.io/repos/github/alexmojaki/pure_eval/badge.svg?branch=master)](https://coveralls.io/github/alexmojaki/pure_eval?branch=master) [![Supports Python versions 3.7+](https://img.shields.io/pypi/pyversions/pure_eval.svg)](https://pypi.python.org/pypi/pure_eval)
 
 This is a Python package that lets you safely evaluate certain AST nodes without triggering arbitrary code that may have unwanted side effects.
 

+ 9 - 0
contrib/python/pure-eval/pure_eval/__init__.py

@@ -6,3 +6,12 @@ try:
 except ImportError:
     # version.py is auto-generated with the git tag when building
     __version__ = "???"
+
+__all__ = [
+    "Evaluator",
+    "CannotEval",
+    "group_expressions",
+    "is_expression_interesting",
+    "getattr_static",
+    "__version__",
+]

+ 4 - 2
contrib/python/pure-eval/pure_eval/my_getattr_static.py

@@ -79,8 +79,10 @@ def getattr_static(obj, attr):
     klass_result = _check_class(klass, attr)
 
     if instance_result is not _sentinel and klass_result is not _sentinel:
-        if (_check_class(type(klass_result), '__get__') is not _sentinel and
-                _check_class(type(klass_result), '__set__') is not _sentinel):
+        if _check_class(type(klass_result), "__get__") is not _sentinel and (
+            _check_class(type(klass_result), "__set__") is not _sentinel
+            or _check_class(type(klass_result), "__delete__") is not _sentinel
+        ):
             return _resolve_descriptor(klass_result, obj, klass)
 
     if instance_result is not _sentinel:

+ 6 - 1
contrib/python/pure-eval/pure_eval/utils.py

@@ -184,7 +184,12 @@ def copy_ast_without_context(x):
             if field != 'ctx'
             if hasattr(x, field)
         }
-        return type(x)(**kwargs)
+        a = type(x)(**kwargs)
+        if hasattr(a, 'ctx'):
+            # Python 3.13.0b2+ defaults to Load when we don't pass ctx
+            # https://github.com/python/cpython/pull/118871
+            del a.ctx
+        return a
     elif isinstance(x, list):
         return list(map(copy_ast_without_context, x))
     else:

+ 1 - 1
contrib/python/pure-eval/pure_eval/version.py

@@ -1 +1 @@
-__version__ = '0.2.2'
+__version__ = '0.2.3'

+ 1 - 1
contrib/python/pure-eval/ya.make

@@ -2,7 +2,7 @@
 
 PY3_LIBRARY()
 
-VERSION(0.2.2)
+VERSION(0.2.3)
 
 LICENSE(MIT)