Author: Łukasz Langa <[email protected]>
Branch: py3.6
Changeset: r95844:ac6ace011b43
Date: 2019-02-05 16:50 +0100
http://bitbucket.org/pypy/pypy/changeset/ac6ace011b43/
Log: (cfbolz,ambv) Make _csv.Dialect unpicklable like on CPython
diff --git a/pypy/module/_csv/interp_csv.py b/pypy/module/_csv/interp_csv.py
--- a/pypy/module/_csv/interp_csv.py
+++ b/pypy/module/_csv/interp_csv.py
@@ -21,6 +21,10 @@
"strict",
]
+ def reduce_ex_w(self, space, w_protocol):
+ raise OperationError(space.w_TypeError,
+ space.newtext("can't pickle _csv.Dialect
objects"))
+
def _fetch(space, w_dialect, name):
return space.findattr(w_dialect, space.newtext(name))
@@ -167,6 +171,7 @@
W_Dialect.typedef = TypeDef(
'_csv.Dialect',
__new__ = interp2app(W_Dialect___new__),
+ __reduce_ex__ = interp2app(W_Dialect.reduce_ex_w),
delimiter = interp_attrproperty('delimiter', W_Dialect,
wrapfn='newunicode'),
diff --git a/pypy/module/_csv/test/test_dialect.py
b/pypy/module/_csv/test/test_dialect.py
--- a/pypy/module/_csv/test/test_dialect.py
+++ b/pypy/module/_csv/test/test_dialect.py
@@ -126,3 +126,9 @@
_csv.unregister_dialect('neverseen')
lst = _csv.list_dialects()
assert 'neverseen' not in lst
+
+ def test_pickle_dialect(self):
+ import _csv
+ import copy
+ _csv.register_dialect('foo')
+ raises(TypeError, copy.copy, _csv.get_dialect('foo'))
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit