Download lib/python3.9/site-packages/Cython/Compiler/Tests/TestVisitor.py from camenduru/slahmr-test: direct link, hf CLI and curl.
- Browser
- Download file 2.23 kB
-
https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/Cython/Compiler/Tests/TestVisitor.py
- Command line
-
hf download hf://camenduru/slahmr-test/lib/python3.9/site-packages/Cython/Compiler/Tests/TestVisitor.py
-
curl -L -o TestVisitor.py https://huggingface.co/camenduru/slahmr-test/resolve/main/lib/python3.9/site-packages/Cython/Compiler/Tests/TestVisitor.py
2.23 kB
| from Cython.Compiler.ModuleNode import ModuleNode | |
| from Cython.Compiler.Symtab import ModuleScope | |
| from Cython.TestUtils import TransformTest | |
| from Cython.Compiler.Visitor import MethodDispatcherTransform | |
| from Cython.Compiler.ParseTreeTransforms import ( | |
| NormalizeTree, AnalyseDeclarationsTransform, | |
| AnalyseExpressionsTransform, InterpretCompilerDirectives) | |
| class TestMethodDispatcherTransform(TransformTest): | |
| _tree = None | |
| def _build_tree(self): | |
| if self._tree is None: | |
| context = None | |
| def fake_module(node): | |
| scope = ModuleScope('test', None, None) | |
| return ModuleNode(node.pos, doc=None, body=node, | |
| scope=scope, full_module_name='test', | |
| directive_comments={}) | |
| pipeline = [ | |
| fake_module, | |
| NormalizeTree(context), | |
| InterpretCompilerDirectives(context, {}), | |
| AnalyseDeclarationsTransform(context), | |
| AnalyseExpressionsTransform(context), | |
| ] | |
| self._tree = self.run_pipeline(pipeline, u""" | |
| cdef bytes s = b'asdfg' | |
| cdef dict d = {1:2} | |
| x = s * 3 | |
| d.get('test') | |
| """) | |
| return self._tree | |
| def test_builtin_method(self): | |
| calls = [0] | |
| class Test(MethodDispatcherTransform): | |
| def _handle_simple_method_dict_get(self, node, func, args, unbound): | |
| calls[0] += 1 | |
| return node | |
| tree = self._build_tree() | |
| Test(None)(tree) | |
| self.assertEqual(1, calls[0]) | |
| def test_binop_method(self): | |
| calls = {'bytes': 0, 'object': 0} | |
| class Test(MethodDispatcherTransform): | |
| def _handle_simple_method_bytes___mul__(self, node, func, args, unbound): | |
| calls['bytes'] += 1 | |
| return node | |
| def _handle_simple_method_object___mul__(self, node, func, args, unbound): | |
| calls['object'] += 1 | |
| return node | |
| tree = self._build_tree() | |
| Test(None)(tree) | |
| self.assertEqual(1, calls['bytes']) | |
| self.assertEqual(0, calls['object']) | |