python-Js2Py/remove-python-six.patch
Daniel Garcia 7ba636bb06 - Run tests
- Add patches:
  * remove-python-six.patch, to remove python-six dependency
  * python312.patch, to make it compatible with python312

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-Js2Py?expand=0&rev=21
2024-07-01 08:20:59 +00:00

1111 lines
38 KiB
Diff

Index: Js2Py-0.74/js2py/base.py
===================================================================
--- Js2Py-0.74.orig/js2py/base.py
+++ Js2Py-0.74/js2py/base.py
@@ -14,19 +14,14 @@ except:
NUMPY_AVAILABLE = False
# python 3 support
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
def str_repr(s):
- if six.PY2:
- return repr(s.encode('utf-8'))
- else:
- return repr(s)
+ return repr(s)
def MakeError(name, message):
@@ -180,7 +175,7 @@ def Js(val, Clamped=False):
elif isinstance(val, dict): # convert to object
temp = PyJsObject({}, ObjectPrototype)
- for k, v in six.iteritems(val):
+ for k, v in iter(val.items()):
temp.put(Js(k), Js(v))
return temp
elif isinstance(val, (list, tuple)): #Convert to array
@@ -1006,9 +1001,8 @@ class PyJs(object):
return self.to_python()
-if six.PY3:
- PyJs.__hash__ = PyJs._fuck_python3
- PyJs.__truediv__ = PyJs.__div__
+PyJs.__hash__ = PyJs._fuck_python3
+PyJs.__truediv__ = PyJs.__div__
#Define some more classes representing operators:
@@ -1079,7 +1073,7 @@ class Scope(PyJs):
if closure is None:
# global, top level scope
self.own = {}
- for k, v in six.iteritems(scope):
+ for k, v in iter(scope.items()):
# set all the global items
self.define_own_property(
k, {
@@ -1359,7 +1353,7 @@ class PyJsObject(PyJs):
self.prototype = prototype
self.extensible = extensible
self.own = {}
- for prop, desc in six.iteritems(prop_descs):
+ for prop, desc in iter(prop_descs.items()):
self.define_own_property(prop, desc)
def __repr__(self):
@@ -1369,6 +1363,10 @@ class PyJsObject(PyJs):
ObjectPrototype = PyJsObject()
+import operator
+get_function_code = operator.attrgetter("__code__")
+
+
#Function
class PyJsFunction(PyJs):
Class = 'Function'
@@ -1377,7 +1375,7 @@ class PyJsFunction(PyJs):
cand = fix_js_args(func)
has_scope = cand is func
func = cand
- self.argcount = six.get_function_code(func).co_argcount - 2 - has_scope
+ self.argcount = get_function_code(func).co_argcount - 2 - has_scope
self.code = func
self.source = source if source else '{ [python code] }'
self.func_name = func.__name__ if not func.__name__.startswith(
@@ -1723,7 +1721,7 @@ class PyJsArray(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -1818,7 +1816,7 @@ class PyJsArrayBuffer(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -1914,7 +1912,7 @@ class PyJsInt8Array(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -2010,7 +2008,7 @@ class PyJsUint8Array(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -2106,7 +2104,7 @@ class PyJsUint8ClampedArray(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -2202,7 +2200,7 @@ class PyJsInt16Array(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -2298,7 +2296,7 @@ class PyJsUint16Array(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -2394,7 +2392,7 @@ class PyJsInt32Array(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -2490,7 +2488,7 @@ class PyJsUint32Array(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -2586,7 +2584,7 @@ class PyJsFloat32Array(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -2682,7 +2680,7 @@ class PyJsFloat64Array(PyJs):
new_len = desc['value'].to_uint32()
if new_len != desc['value'].to_number().value:
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = Js(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc)
@@ -3014,18 +3012,11 @@ for e in ERROR_NAMES:
def fill_prototype(prototype, Class, attrs, constructor=False):
for i in dir(Class):
e = getattr(Class, i)
- if six.PY2:
- if hasattr(e, '__func__'):
- temp = PyJsFunction(e.__func__, FunctionPrototype)
- attrs = dict((k, v) for k, v in attrs.iteritems())
- attrs['value'] = temp
- prototype.define_own_property(i, attrs)
- else:
- if hasattr(e, '__call__') and not i.startswith('__'):
- temp = PyJsFunction(e, FunctionPrototype)
- attrs = dict((k, v) for k, v in attrs.items())
- attrs['value'] = temp
- prototype.define_own_property(i, attrs)
+ if hasattr(e, '__call__') and not i.startswith('__'):
+ temp = PyJsFunction(e, FunctionPrototype)
+ attrs = dict((k, v) for k, v in attrs.items())
+ attrs['value'] = temp
+ prototype.define_own_property(i, attrs)
if constructor:
attrs['value'] = constructor
prototype.define_own_property('constructor', attrs)
Index: Js2Py-0.74/js2py/constructors/jsobject.py
===================================================================
--- Js2Py-0.74.orig/js2py/constructors/jsobject.py
+++ Js2Py-0.74/js2py/constructors/jsobject.py
@@ -1,5 +1,4 @@
from ..base import *
-import six
#todo Double check everything is OK
@@ -57,10 +56,7 @@ class ObjectMethods:
'Object prototype may only be an Object or null')
temp = PyJsObject(prototype=(None if obj.is_null() else obj))
if len(arguments) > 1 and not arguments[1].is_undefined():
- if six.PY2:
- ObjectMethods.defineProperties.__func__(temp, arguments[1])
- else:
- ObjectMethods.defineProperties(temp, arguments[1])
+ ObjectMethods.defineProperties(temp, arguments[1])
return temp
def defineProperty(obj, prop, attrs):
@@ -143,7 +139,7 @@ class ObjectMethods:
def keys(obj):
if not obj.is_object():
raise MakeError('TypeError', 'Object.keys called on non-object')
- return [e for e, d in six.iteritems(obj.own) if d.get('enumerable')]
+ return [e for e, d in iter(obj.own.items()) if d.get('enumerable')]
# add methods attached to Object constructor
Index: Js2Py-0.74/js2py/constructors/jsstring.py
===================================================================
--- Js2Py-0.74.orig/js2py/constructors/jsstring.py
+++ Js2Py-0.74/js2py/constructors/jsstring.py
@@ -1,8 +1,6 @@
from ..base import *
# python 3 support
-import six
-if six.PY3:
- unichr = chr
+unichr = chr
@Js
Index: Js2Py-0.74/js2py/evaljs.py
===================================================================
--- Js2Py-0.74.orig/js2py/evaljs.py
+++ Js2Py-0.74/js2py/evaljs.py
@@ -4,7 +4,6 @@ from .es6 import js6_to_js5
import sys
import time
import json
-import six
import os
import hashlib
import codecs
@@ -168,7 +167,7 @@ class EvalJs(object):
except:
raise TypeError(
'context has to be either a dict or have __dict__ attr')
- for k, v in six.iteritems(context):
+ for k, v in iter(context.items()):
setattr(self._var, k, v)
def execute(self, js=None, use_compilation_plan=False):
@@ -257,10 +256,7 @@ class EvalJs(object):
def console(self):
"""starts to interact (starts interactive console) Something like code.InteractiveConsole"""
while True:
- if six.PY2:
- code = raw_input('>>> ')
- else:
- code = input('>>>')
+ code = input('>>>')
try:
print(self.eval(code))
except KeyboardInterrupt:
Index: Js2Py-0.74/js2py/host/jsfunctions.py
===================================================================
--- Js2Py-0.74.orig/js2py/host/jsfunctions.py
+++ Js2Py-0.74/js2py/host/jsfunctions.py
@@ -1,5 +1,5 @@
from ..base import *
-from six.moves.urllib.parse import quote, unquote
+from urllib.parse import quote, unquote
RADIX_CHARS = {
'1': 1,
Index: Js2Py-0.74/js2py/internals/base.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/base.py
+++ Js2Py-0.74/js2py/internals/base.py
@@ -9,11 +9,7 @@ from .conversions import *
from pyjsparser import PyJsParser
-import six
-if six.PY2:
- from itertools import izip
-else:
- izip = zip
+izip = zip
@@ -366,7 +362,7 @@ class PyJsObject(PyJs):
i += 1
def _set_props(self, prop_descs):
- for prop, desc in six.iteritems(prop_descs):
+ for prop, desc in iter(prop_descs.items()):
self.define_own_property(prop, desc)
@@ -435,7 +431,7 @@ class PyJsArray(PyJs):
new_len = to_uint32(desc['value'])
if new_len != to_number(desc['value']):
raise MakeError('RangeError', 'Invalid range!')
- new_desc = dict((k, v) for k, v in six.iteritems(desc))
+ new_desc = dict((k, v) for k, v in iter(desc.items()))
new_desc['value'] = float(new_len)
if new_len >= old_len:
return PyJs.define_own_property(self, prop, new_desc, False)
@@ -671,7 +667,7 @@ class Scope(PyJs):
if parent is None:
# global, top level scope
self.own = {}
- for k, v in six.iteritems(scope):
+ for k, v in iter(scope.items()):
# set all the global items
self.define_own_property(
k, {
Index: Js2Py-0.74/js2py/internals/constructors/jsobject.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/constructors/jsobject.py
+++ Js2Py-0.74/js2py/internals/constructors/jsobject.py
@@ -2,7 +2,6 @@ from __future__ import unicode_literals
from ..conversions import *
from ..func_utils import *
from ..base import is_data_descriptor
-import six
def Object(this, args):
@@ -57,12 +56,8 @@ class ObjectMethods:
temp = args.space.NewObject()
temp.prototype = None if is_null(obj) else obj
if len(args) > 1 and not is_undefined(args[1]):
- if six.PY2:
- args.tup = (args[1], )
- ObjectMethods.defineProperties.__func__(temp, args)
- else:
- args.tup = (args[1], )
- ObjectMethods.defineProperties(temp, args)
+ args.tup = (args[1], )
+ ObjectMethods.defineProperties(temp, args)
return temp
def defineProperty(this, args):
@@ -160,7 +155,7 @@ class ObjectMethods:
if not is_object(obj):
raise MakeError('TypeError', 'Object.keys called on non-object')
return args.space.ConstructArray([
- unicode(e) for e, d in six.iteritems(obj.own)
+ unicode(e) for e, d in iter(obj.own.items())
if d.get('enumerable')
])
Index: Js2Py-0.74/js2py/internals/constructors/jsstring.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/constructors/jsstring.py
+++ Js2Py-0.74/js2py/internals/constructors/jsstring.py
@@ -1,11 +1,10 @@
from ..conversions import *
from ..func_utils import *
-from six import unichr
def fromCharCode(this, args):
res = u''
for e in args:
- res += unichr(to_uint16(e))
+ res += chr(to_uint16(e))
return res
Index: Js2Py-0.74/js2py/internals/fill_space.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/fill_space.py
+++ Js2Py-0.74/js2py/internals/fill_space.py
@@ -3,7 +3,6 @@ from __future__ import unicode_literals
from .base import Scope
from .func_utils import *
from .conversions import *
-import six
from .prototypes.jsboolean import BooleanPrototype
from .prototypes.jserror import ErrorPrototype
from .prototypes.jsfunction import FunctionPrototype
@@ -22,16 +21,10 @@ from .constructors import jsnumber, jsst
def fill_proto(proto, proto_class, space):
for i in dir(proto_class):
e = getattr(proto_class, i)
- if six.PY2:
- if hasattr(e, '__func__'):
- meth = e.__func__
- else:
- continue
+ if hasattr(e, '__call__') and not i.startswith('__'):
+ meth = e
else:
- if hasattr(e, '__call__') and not i.startswith('__'):
- meth = e
- else:
- continue
+ continue
meth_name = meth.__name__.strip('_') # RexExp._exec -> RegExp.exec
js_meth = space.NewFunction(meth, space.ctx, (), meth_name, False, ())
set_non_enumerable(proto, meth_name, js_meth)
Index: Js2Py-0.74/js2py/internals/func_utils.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/func_utils.py
+++ Js2Py-0.74/js2py/internals/func_utils.py
@@ -1,12 +1,10 @@
from .simplex import *
from .conversions import *
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
def get_arg(arguments, n):
Index: Js2Py-0.74/js2py/internals/prototypes/jsarray.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/prototypes/jsarray.py
+++ Js2Py-0.74/js2py/internals/prototypes/jsarray.py
@@ -3,11 +3,8 @@ from ..conversions import *
from ..func_utils import *
from ..operations import strict_equality_op
-import six
-
-if six.PY3:
- xrange = range
- import functools
+xrange = range
+import functools
ARR_STACK = set({})
@@ -170,11 +167,8 @@ class ArrayPrototype:
if not is_callable(cmpfn):
cmpfn = None
cmp = lambda a, b: sort_compare(a, b, cmpfn)
- if six.PY3:
- key = functools.cmp_to_key(cmp)
- arr.sort(key=key)
- else:
- arr.sort(cmp=cmp)
+ key = functools.cmp_to_key(cmp)
+ arr.sort(key=key)
for i in xrange(arr_len):
if arr[i] is None:
this.delete(unicode(i))
Index: Js2Py-0.74/js2py/internals/prototypes/jsfunction.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/prototypes/jsfunction.py
+++ Js2Py-0.74/js2py/internals/prototypes/jsfunction.py
@@ -4,12 +4,10 @@ from ..conversions import *
from ..func_utils import *
# python 3 support
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
# todo fix apply and bind
Index: Js2Py-0.74/js2py/internals/prototypes/jsjson.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/prototypes/jsjson.py
+++ Js2Py-0.74/js2py/internals/prototypes/jsjson.py
@@ -6,12 +6,10 @@ import json
indent = ''
# python 3 support
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
def parse(this, args):
Index: Js2Py-0.74/js2py/internals/prototypes/jsnumber.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/prototypes/jsnumber.py
+++ Js2Py-0.74/js2py/internals/prototypes/jsnumber.py
@@ -2,12 +2,10 @@ from __future__ import unicode_literals
from ..conversions import *
from ..func_utils import *
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
RADIX_SYMBOLS = {
0: '0',
Index: Js2Py-0.74/js2py/internals/simplex.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/simplex.py
+++ Js2Py-0.74/js2py/internals/simplex.py
@@ -1,10 +1,8 @@
from __future__ import unicode_literals
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
#Undefined
class PyJsUndefined(object):
@@ -28,7 +26,7 @@ NaN = float('nan')
UNDEFINED_TYPE = PyJsUndefined
NULL_TYPE = PyJsNull
-STRING_TYPE = unicode if six.PY2 else str
+STRING_TYPE = str
NUMBER_TYPE = float
BOOLEAN_TYPE = bool
Index: Js2Py-0.74/js2py/internals/trans_utils.py
===================================================================
--- Js2Py-0.74.orig/js2py/internals/trans_utils.py
+++ Js2Py-0.74/js2py/internals/trans_utils.py
@@ -1,9 +1,7 @@
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
def to_key(literal_or_identifier):
''' returns string representation of this object'''
Index: Js2Py-0.74/js2py/node_import.py
===================================================================
--- Js2Py-0.74.orig/js2py/node_import.py
+++ Js2Py-0.74/js2py/node_import.py
@@ -3,7 +3,6 @@ __all__ = ['require']
import subprocess, os, codecs, glob
from .evaljs import translate_js, DEFAULT_HEADER
from .translators.friendly_nodes import is_valid_py_name
-import six
import tempfile
import hashlib
import random
@@ -87,7 +86,7 @@ def _get_and_translate_npm_module(module
addToGlobals(%s, module_temp_love_python);
""" % (repr(module_name), repr(module_name))
with open(os.path.join(DIRNAME, in_file_name), 'wb') as f:
- f.write(code.encode('utf-8') if six.PY3 else code)
+ f.write(code.encode('utf-8'))
pkg_name = module_name.partition('/')[0]
if maybe_version_str:
@@ -126,7 +125,7 @@ def _get_and_translate_npm_module(module
os.makedirs(dirname)
with open(os.path.join(PY_NODE_MODULES_PATH, module_filename),
'wb') as f:
- f.write(py_code.encode('utf-8') if six.PY3 else py_code)
+ f.write(py_code.encode('utf-8'))
else:
with codecs.open(
os.path.join(PY_NODE_MODULES_PATH, module_filename), "r",
Index: Js2Py-0.74/js2py/prototypes/jsarray.py
===================================================================
--- Js2Py-0.74.orig/js2py/prototypes/jsarray.py
+++ Js2Py-0.74/js2py/prototypes/jsarray.py
@@ -1,8 +1,5 @@
-import six
-
-if six.PY3:
- xrange = range
- import functools
+xrange = range
+import functools
def to_arr(this):
@@ -164,20 +161,17 @@ class ArrayPrototype:
return this.to_object() # do nothing
arr = []
for i in xrange(len(this)):
- arr.append(this.get(six.text_type(i)))
+ arr.append(this.get(str(i)))
if not arr:
return this
if not cmpfn.is_callable():
cmpfn = None
cmp = lambda a, b: sort_compare(a, b, cmpfn)
- if six.PY3:
- key = functools.cmp_to_key(cmp)
- arr.sort(key=key)
- else:
- arr.sort(cmp=cmp)
+ key = functools.cmp_to_key(cmp)
+ arr.sort(key=key)
for i in xrange(len(arr)):
- this.put(six.text_type(i), arr[i])
+ this.put(str(i), arr[i])
return this
Index: Js2Py-0.74/js2py/prototypes/jsarraybuffer.py
===================================================================
--- Js2Py-0.74.orig/js2py/prototypes/jsarraybuffer.py
+++ Js2Py-0.74/js2py/prototypes/jsarraybuffer.py
@@ -1,10 +1,7 @@
# this is based on jsarray.py
-import six
-
-if six.PY3:
- xrange = range
- import functools
+xrange = range
+import functools
def to_arr(this):
Index: Js2Py-0.74/js2py/prototypes/jsfunction.py
===================================================================
--- Js2Py-0.74.orig/js2py/prototypes/jsfunction.py
+++ Js2Py-0.74/js2py/prototypes/jsfunction.py
@@ -1,10 +1,8 @@
# python 3 support
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
class FunctionPrototype:
Index: Js2Py-0.74/js2py/prototypes/jsjson.py
===================================================================
--- Js2Py-0.74.orig/js2py/prototypes/jsjson.py
+++ Js2Py-0.74/js2py/prototypes/jsjson.py
@@ -2,12 +2,10 @@ import json
from ..base import Js
indent = ''
# python 3 support
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
def parse(text):
@@ -176,7 +174,7 @@ def Quote(string):
def to_js(this, d):
if isinstance(d, dict):
- return this.Js(dict((k, this.Js(v)) for k, v in six.iteritems(d)))
+ return this.Js(dict((k, this.Js(v)) for k, v in iter(d.items())))
return this.Js(d)
Index: Js2Py-0.74/js2py/prototypes/jsnumber.py
===================================================================
--- Js2Py-0.74.orig/js2py/prototypes/jsnumber.py
+++ Js2Py-0.74/js2py/prototypes/jsnumber.py
@@ -1,9 +1,7 @@
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
RADIX_SYMBOLS = {
0: '0',
Index: Js2Py-0.74/js2py/prototypes/jstypedarray.py
===================================================================
--- Js2Py-0.74.orig/js2py/prototypes/jstypedarray.py
+++ Js2Py-0.74/js2py/prototypes/jstypedarray.py
@@ -1,14 +1,12 @@
# this is based on jsarray.py
-import six
try:
import numpy
except:
pass
-if six.PY3:
- xrange = range
- import functools
+xrange = range
+import functools
def to_arr(this):
@@ -109,20 +107,17 @@ class TypedArrayPrototype:
return this.to_object() # do nothing
arr = []
for i in xrange(len(this)):
- arr.append(this.get(six.text_type(i)))
+ arr.append(this.get(str(i)))
if not arr:
return this
if not cmpfn.is_callable():
cmpfn = None
cmp = lambda a, b: sort_compare(a, b, cmpfn)
- if six.PY3:
- key = functools.cmp_to_key(cmp)
- arr.sort(key=key)
- else:
- arr.sort(cmp=cmp)
+ key = functools.cmp_to_key(cmp)
+ arr.sort(key=key)
for i in xrange(len(arr)):
- this.put(six.text_type(i), arr[i])
+ this.put(str(i), arr[i])
return this
Index: Js2Py-0.74/js2py/translators/friendly_nodes.py
===================================================================
--- Js2Py-0.74.orig/js2py/translators/friendly_nodes.py
+++ Js2Py-0.74/js2py/translators/friendly_nodes.py
@@ -1,12 +1,10 @@
import binascii
from pyjsparser import PyJsParser
-import six
-if six.PY3:
- basestring = str
- long = int
- xrange = range
- unicode = str
+basestring = str
+long = int
+xrange = range
+unicode = str
REGEXP_CONVERTER = PyJsParser()
Index: Js2Py-0.74/js2py/translators/translating_nodes.py
===================================================================
--- Js2Py-0.74.orig/js2py/translators/translating_nodes.py
+++ Js2Py-0.74/js2py/translators/translating_nodes.py
@@ -2,12 +2,10 @@ from __future__ import unicode_literals
from pyjsparser.pyjsparserdata import *
from .friendly_nodes import *
import random
-import six
-if six.PY3:
- from functools import reduce
- xrange = range
- unicode = str
+from functools import reduce
+xrange = range
+unicode = str
# number of characters above which expression will be split to multiple lines in order to avoid python parser stack overflow
# still experimental so I suggest to set it to 400 in order to avoid common errors
# set it to smaller value only if you have problems with parser stack overflow
@@ -90,7 +88,7 @@ class ContextStack:
def get_code(self):
code = 'var.registers([%s])\n' % ', '.join(
repr(e) for e in self.to_register)
- for name, func_code in six.iteritems(self.to_define):
+ for name, func_code in iter(self.to_define.items()):
code += func_code
return code
@@ -342,9 +340,6 @@ def AssignmentExpression(type, operator,
raise SyntaxError('Invalid left hand side in assignment!')
-six
-
-
@limited
def SequenceExpression(type, expressions):
return reduce(js_comma, (trans(e) for e in expressions))
@@ -642,7 +637,7 @@ def FunctionDeclaration(type, id, params
arg_map = dict(zip(vars, used_vars))
arg_map.update({'this': 'this', 'arguments': 'arguments'})
arg_conv = 'var = Scope({%s}, var)\n' % ', '.join(
- repr(k) + ':' + v for k, v in six.iteritems(arg_map))
+ repr(k) + ':' + v for k, v in iter(arg_map.items()))
# and finally set the name of the function to its real name:
footer = '%s.func_name = %s\n' % (PyName, repr(JsName))
footer += 'var.put(%s, %s)\n' % (repr(JsName), PyName)
@@ -697,7 +692,7 @@ def FunctionExpression(type, id, params,
if id['name'] not in arg_map:
arg_map[id['name']] = PyName
arg_conv = 'var = Scope({%s}, var)\n' % ', '.join(
- repr(k) + ':' + v for k, v in six.iteritems(arg_map))
+ repr(k) + ':' + v for k, v in iter(arg_map.items()))
# and finally set the name of the function to its real name:
footer = '%s._set_name(%s)\n' % (PyName, repr(JsName))
whole_code = header + indent(arg_conv + code) + footer
Index: Js2Py-0.74/js2py/utils/injector.py
===================================================================
--- Js2Py-0.74.orig/js2py/utils/injector.py
+++ Js2Py-0.74/js2py/utils/injector.py
@@ -3,13 +3,12 @@ __all__ = ['fix_js_args']
import types
from collections import namedtuple
import opcode
-import six
+import operator
import sys
import dis
-if six.PY3:
- xrange = range
- chr = lambda x: x
+xrange = range
+chr = lambda x: x
# Opcode constants used for comparison and replacecment
LOAD_FAST = opcode.opmap['LOAD_FAST']
@@ -17,20 +16,30 @@ LOAD_GLOBAL = opcode.opmap['LOAD_GLOBAL'
STORE_FAST = opcode.opmap['STORE_FAST']
+_func_closure = "__closure__"
+_func_code = "__code__"
+_func_defaults = "__defaults__"
+_func_globals = "__globals__"
+get_function_closure = operator.attrgetter(_func_closure)
+get_function_code = operator.attrgetter(_func_code)
+get_function_defaults = operator.attrgetter(_func_defaults)
+get_function_globals = operator.attrgetter(_func_globals)
+
+
def fix_js_args(func):
'''Use this function when unsure whether func takes this and arguments as its last 2 args.
It will append 2 args if it does not.'''
- fcode = six.get_function_code(func)
+ fcode = get_function_code(func)
fargs = fcode.co_varnames[fcode.co_argcount - 2:fcode.co_argcount]
if fargs == ('this', 'arguments') or fargs == ('arguments', 'var'):
return func
- code = append_arguments(six.get_function_code(func), ('this', 'arguments'))
+ code = append_arguments(get_function_code(func), ('this', 'arguments'))
result = types.FunctionType(
code,
- six.get_function_globals(func),
+ get_function_globals(func),
func.__name__,
- closure=six.get_function_closure(func))
+ closure=get_function_closure(func))
return result
@@ -124,22 +133,13 @@ def append_arguments(code_obj, new_local
if inst.argval not in code_obj.co_varnames[:code_obj.co_argcount]: # we do not need to remap existing arguments, they are not shifted by new ones.
arg = inst.arg + len(new_locals)
modified.extend(write_instruction(op, arg))
- if six.PY2:
- code = ''.join(modified)
- args = (co_argcount + new_locals_len,
- code_obj.co_nlocals + new_locals_len, code_obj.co_stacksize,
- code_obj.co_flags, code, code_obj.co_consts, names, varnames,
- code_obj.co_filename, code_obj.co_name,
- code_obj.co_firstlineno, code_obj.co_lnotab,
- code_obj.co_freevars, code_obj.co_cellvars)
- else:
- code = bytes(modified)
- args = (co_argcount + new_locals_len, 0,
- code_obj.co_nlocals + new_locals_len, code_obj.co_stacksize,
- code_obj.co_flags, code, code_obj.co_consts, names, varnames,
- code_obj.co_filename, code_obj.co_name,
- code_obj.co_firstlineno, code_obj.co_lnotab,
- code_obj.co_freevars, code_obj.co_cellvars)
+ code = bytes(modified)
+ args = (co_argcount + new_locals_len, 0,
+ code_obj.co_nlocals + new_locals_len, code_obj.co_stacksize,
+ code_obj.co_flags, code, code_obj.co_consts, names, varnames,
+ code_obj.co_filename, code_obj.co_name,
+ code_obj.co_firstlineno, code_obj.co_lnotab,
+ code_obj.co_freevars, code_obj.co_cellvars)
# Done modifying codestring - make the code object
if hasattr(code_obj, "replace"):
# Python 3.8+
@@ -166,8 +166,6 @@ def instructions(code_obj, show_cache=Tr
# otherwise we have to manually parse
code = code_obj.co_code
NewInstruction = namedtuple('Instruction', ('opcode', 'arg'))
- if six.PY2:
- code = map(ord, code)
i, L = 0, len(code)
extended_arg = 0
while i < L:
@@ -232,10 +230,7 @@ def check(code_obj):
for inst in insts:
pos_to_inst[len(bytelist)] = inst
bytelist.extend(write_instruction(inst.opcode, inst.arg))
- if six.PY2:
- new_bytecode = ''.join(bytelist)
- else:
- new_bytecode = bytes(bytelist)
+ new_bytecode = bytes(bytelist)
if new_bytecode != old_bytecode:
print(new_bytecode)
print(old_bytecode)
@@ -255,13 +250,13 @@ def check(code_obj):
def signature(func):
- code_obj = six.get_function_code(func)
+ code_obj = get_function_code(func)
return (code_obj.co_nlocals, code_obj.co_argcount, code_obj.co_nlocals, code_obj.co_stacksize,
code_obj.co_flags, code_obj.co_names, code_obj.co_varnames,
code_obj.co_filename,
code_obj.co_freevars, code_obj.co_cellvars)
-check(six.get_function_code(check))
+check(get_function_code(check))
@@ -269,8 +264,8 @@ def compare_func(fake_func, gt_func):
print(signature(fake_func))
print(signature(gt_func))
assert signature(fake_func) == signature(gt_func)
- fake_ins = list(instructions(six.get_function_code(fake_func), show_cache=False))
- real_ins = list(instructions(six.get_function_code(gt_func), show_cache=False))
+ fake_ins = list(instructions(get_function_code(fake_func), show_cache=False))
+ real_ins = list(instructions(get_function_code(gt_func), show_cache=False))
offset = 0
pos = 0
for e in fake_ins:
@@ -305,20 +300,17 @@ if __name__ == '__main__':
return this.to_object() # do nothing
arr = []
for i in xrange(len(this)):
- arr.append(this.get(six.text_type(i)))
+ arr.append(this.get(str(i)))
if not arr:
return this
if not cmpfn.is_callable():
cmpfn = None
cmp = lambda a, b: sort_compare(a, b, cmpfn)
- if six.PY3:
- key = functools.cmp_to_key(cmp)
- arr.sort(key=key)
- else:
- arr.sort(cmp=cmp)
+ key = functools.cmp_to_key(cmp)
+ arr.sort(key=key)
for i in xrange(len(arr)):
- this.put(six.text_type(i), arr[i])
+ this.put(str(i), arr[i])
return this
@@ -328,20 +320,17 @@ if __name__ == '__main__':
return this.to_object() # do nothing
arr = []
for i in xrange(len(this)):
- arr.append(this.get(six.text_type(i)))
+ arr.append(this.get(str(i)))
if not arr:
return this
if not cmpfn.is_callable():
cmpfn = None
cmp = lambda a, b: sort_compare(a, b, cmpfn)
- if six.PY3:
- key = functools.cmp_to_key(cmp)
- arr.sort(key=key)
- else:
- arr.sort(cmp=cmp)
+ key = functools.cmp_to_key(cmp)
+ arr.sort(key=key)
for i in xrange(len(arr)):
- this.put(six.text_type(i), arr[i])
+ this.put(str(i), arr[i])
return this
Index: Js2Py-0.74/setup.py
===================================================================
--- Js2Py-0.74.orig/setup.py
+++ Js2Py-0.74/setup.py
@@ -33,7 +33,7 @@ setup(
'js2py.constructors', 'js2py.host', 'js2py.es6', 'js2py.internals',
'js2py.internals.prototypes', 'js2py.internals.constructors', 'js2py.py_node_modules'],
url='https://github.com/PiotrDabkowski/Js2Py',
- install_requires = ['tzlocal>=1.2', 'six>=1.10', 'pyjsparser>=2.5.1'],
+ install_requires = ['tzlocal>=1.2', 'pyjsparser>=2.5.1'],
license='MIT',
author='Piotr Dabkowski',
author_email='piodrus@gmail.com',
Index: Js2Py-0.74/tests/node_eval.py
===================================================================
--- Js2Py-0.74.orig/tests/node_eval.py
+++ Js2Py-0.74/tests/node_eval.py
@@ -1,6 +1,5 @@
import subprocess
from tempfile import NamedTemporaryFile
-import six
import re
import os
@@ -22,10 +21,10 @@ def node_eval_js(code):
}
""" % (repr(code), repr(ERR_MARKER))
f = NamedTemporaryFile(delete=False, suffix='.js')
- f.write(interceptor_code.encode('utf-8') if six.PY3 else interceptor_code)
+ f.write(interceptor_code.encode('utf-8'))
f.close()
p = subprocess.Popen(['node', f.name], stderr=subprocess.PIPE, stdout=subprocess.PIPE)
- out, err = map(lambda x: x.decode('utf-8') if six.PY3 else x, p.communicate())
+ out, err = map(lambda x: x.decode('utf-8'))
os.unlink(f.name)
if not p.returncode:
return out
@@ -38,4 +37,4 @@ def node_eval_js(code):
if __name__ == '__main__':
- print(node_eval_js('x = 5;x'))
\ No newline at end of file
+ print(node_eval_js('x = 5;x'))
Index: Js2Py-0.74/tests/run.py
===================================================================
--- Js2Py-0.74.orig/tests/run.py
+++ Js2Py-0.74/tests/run.py
@@ -3,7 +3,7 @@ import js2py
from js2py.base import PyJsException, PyExceptionToJs
from js2py.internals import seval
from js2py.internals.simplex import JsException
-import os, sys, re, traceback, threading, ctypes, time, six
+import os, sys, re, traceback, threading, ctypes, time
from distutils.version import LooseVersion
from node_eval import NodeJsError, node_eval_js
import codecs