Hi all,
I am using sage on Debian (sid)
Sagemath 7.0 was working fine until an upgrade of python to version 3
Then it stop working with an syntax error due to python 3
So I (re)lnked pyhton to python 2.7 but now it crashes for a reason I
cannot determine
here is the crash report
Thanks in advance,
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.
***************************************************************************
IPython post-mortem report
{'commit_hash': u'1961f94',
'commit_source': 'installation',
'default_encoding': 'UTF-8',
'ipython_path':
'/home/laurent/sage-7.0/local/lib/python2.7/site-packages/IPython',
'ipython_version': '4.0.0',
'os_name': 'posix',
'platform': 'Linux-4.8.0-2-amd64-x86_64-with-debian-stretch-sid',
'sys_executable': '/home/laurent/sage-7.0/local/bin/python',
'sys_platform': 'linux2',
'sys_version': '2.7.13rc1 (default, Dec 4 2016, 14:12:39) \n[GCC 6.2.1
20161124]'}
***************************************************************************
***************************************************************************
Crash traceback:
---------------------------------------------------------------------------
---------------------------------------------------------------------------
TypeError Python 2.7.13rc1: /home/laurent/sage-7.0/local/bin/python
Wed Dec 14 13:08:03 2016
A problem occurred executing Python code. Here is the sequence of function
calls leading up to the error, with the most recent (innermost) call last.
/home/laurent/sage-7.0/src/bin/sage-ipython in <module>()
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 """
4 Sage IPython startup script.
5 """
6
7 # Install extra readline commands before IPython initialization
8 from sage.repl.readline_extra_commands import *
9
10 from sage.repl.interpreter import SageTerminalApp
11
12 app = SageTerminalApp.instance()
---> 13 app.initialize()
global app.initialize = <bound method SageTerminalApp.initialize of
<sage.repl.interpreter.SageTerminalApp object at 0x7ff82b5b40d0>>
14 app.start()
<decorator-gen-111> in initialize(self=<sage.repl.interpreter.SageTerminalApp
object>, argv=None)
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/traitlets/config/application.pyc
in catch_config_error(method=<function initialize>,
app=<sage.repl.interpreter.SageTerminalApp object>, *args=(None,), **kwargs={})
60
61
#-----------------------------------------------------------------------------
62 # Application class
63
#-----------------------------------------------------------------------------
64
65 @decorator
66 def catch_config_error(method, app, *args, **kwargs):
67 """Method decorator for catching invalid config
(Trait/ArgumentErrors) during init.
68
69 On a TraitError (generally caused by bad config), this will print
the trait's
70 message, and exit the app.
71
72 For use on init methods, to prevent invoking excepthook on invalid
input.
73 """
74 try:
---> 75 return method(app, *args, **kwargs)
method = <function initialize at 0x7ff828527668>
app = <sage.repl.interpreter.SageTerminalApp object at 0x7ff82b5b40d0>
args = (None,)
kwargs = {}
76 except (TraitError, ArgumentError) as e:
77 app.print_help()
78 app.log.fatal("Bad config encountered during initialization:")
79 app.log.fatal(str(e))
80 app.log.debug("Config at the time: %s", app.config)
81 app.exit(1)
82
83
84 class ApplicationError(Exception):
85 pass
86
87 class LevelFormatter(logging.Formatter):
88 """Formatter with additional `highlevel` record
89
90 This field is empty if log level is less than highlevel_limit,
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/IPython/terminal/ipapp.pyc
in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None)
299
300 return super(TerminalIPythonApp, self).parse_command_line(argv)
301
302 @catch_config_error
303 def initialize(self, argv=None):
304 """Do actions after construct, but before starting the app."""
305 super(TerminalIPythonApp, self).initialize(argv)
306 if self.subapp is not None:
307 # don't bother initializing further, starting subapp
308 return
309 # print self.extra_args
310 if self.extra_args and not self.something_to_run:
311 self.file_to_run = self.extra_args[0]
312 self.init_path()
313 # create the shell
--> 314 self.init_shell()
self.init_shell = <bound method SageTerminalApp.init_shell of
<sage.repl.interpreter.SageTerminalApp object at 0x7ff82b5b40d0>>
315 # and draw the banner
316 self.init_banner()
317 # Now a variety of things that happen after the banner is
printed.
318 self.init_gui_pylab()
319 self.init_extensions()
320 self.init_code()
321
322 def init_shell(self):
323 """initialize the InteractiveShell instance"""
324 # Create an InteractiveShell instance.
325 # shell.display_banner should always be False for the terminal
326 # based app, because we call shell.show_banner() by hand below
327 # so the banner shows *before* all extension loading stuff.
328 self.shell = TerminalInteractiveShell.instance(parent=self,
329 display_banner=False,
profile_dir=self.profile_dir,
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/repl/interpreter.pyc
in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>)
793 self.shell.has_sage_extensions = SAGE_EXTENSION in
self.extensions
794
795 # Load the %lprun extension if available
796 try:
797 import line_profiler
798 except ImportError:
799 pass
800 else:
801 self.extensions.append('line_profiler')
802
803 if self.shell.has_sage_extensions:
804 self.extensions.remove(SAGE_EXTENSION)
805
806 # load sage extension here to get a crash if
807 # something is wrong with the sage library
--> 808 self.shell.extension_manager.load_extension(SAGE_EXTENSION)
self.shell.extension_manager.load_extension = <bound method
ExtensionManager.load_extension of <IPython.core.extensions.ExtensionManager
object at 0x7ff826f68b10>>
global SAGE_EXTENSION = 'sage'
809
810
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/IPython/core/extensions.pyc
in load_extension(self=<IPython.core.extensions.ExtensionManager object>,
module_str='sage')
76
77 Returns the string "already loaded" if the extension is already
loaded,
78 "no load function" if the module doesn't have a
load_ipython_extension
79 function, or None if it succeeded.
80 """
81 if module_str in self.loaded:
82 return "already loaded"
83
84 from IPython.utils.syspathcontext import prepended_to_syspath
85
86 with self.shell.builtin_trap:
87 if module_str not in sys.modules:
88 with prepended_to_syspath(self.ipython_extension_dir):
89 __import__(module_str)
90 mod = sys.modules[module_str]
---> 91 if self._call_load_ipython_extension(mod):
self._call_load_ipython_extension = <bound method
ExtensionManager._call_load_ipython_extension of
<IPython.core.extensions.ExtensionManager object at 0x7ff826f68b10>>
mod = <module 'sage' from
'/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/__init__.pyc'>
92 self.loaded.add(module_str)
93 else:
94 return "no load function"
95
96 def unload_extension(self, module_str):
97 """Unload an IPython extension by its module name.
98
99 This function looks up the extension's name in ``sys.modules``
and
100 simply calls ``mod.unload_ipython_extension(self)``.
101
102 Returns the string "no unload function" if the extension
doesn't define
103 a function to unload itself, "not loaded" if the extension
isn't loaded,
104 otherwise None.
105 """
106 if module_str not in self.loaded:
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/IPython/core/extensions.pyc
in _call_load_ipython_extension(self=<IPython.core.extensions.ExtensionManager
object>, mod=<module 'sage' from
'/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/__init__.pyc'>)
123 """
124 from IPython.utils.syspathcontext import prepended_to_syspath
125
126 if (module_str in self.loaded) and (module_str in sys.modules):
127 self.unload_extension(module_str)
128 mod = sys.modules[module_str]
129 with prepended_to_syspath(self.ipython_extension_dir):
130 reload(mod)
131 if self._call_load_ipython_extension(mod):
132 self.loaded.add(module_str)
133 else:
134 self.load_extension(module_str)
135
136 def _call_load_ipython_extension(self, mod):
137 if hasattr(mod, 'load_ipython_extension'):
--> 138 mod.load_ipython_extension(self.shell)
mod.load_ipython_extension = <function load_ipython_extension at
0x7ff82b5ad0c8>
self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell object
at 0x7ff828543750>
139 return True
140
141 def _call_unload_ipython_extension(self, mod):
142 if hasattr(mod, 'unload_ipython_extension'):
143 mod.unload_ipython_extension(self.shell)
144 return True
145
146 def install_extension(self, url, filename=None):
147 """Download and install an IPython extension.
148
149 If filename is given, the file will be so named (inside the
extension
150 directory). Otherwise, the name from the URL will be used. The
file must
151 have a .py or .zip extension; otherwise, a ValueError will be
raised.
152
153 Returns the full path to the installed file.
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/__init__.pyc in
load_ipython_extension(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell
object>,))
1 __all__ = ['all']
2
3 # IPython calls this when starting up
4 def load_ipython_extension(*args):
5 import sage.repl.ipython_extension
----> 6 sage.repl.ipython_extension.load_ipython_extension(*args)
sage.repl.ipython_extension.load_ipython_extension = <function
load_ipython_extension at 0x7ff826f17488>
args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at
0x7ff828543750>,)
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc
in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell
object>,), **kwargs={})
448 ....: if work:
449 ....: return 'foo worked'
450 ....: raise RuntimeError("foo didn't work")
451 sage: foo(False)
452 Traceback (most recent call last):
453 ...
454 RuntimeError: foo didn't work
455 sage: foo(True)
456 'foo worked'
457 sage: foo(False)
458 sage: foo(True)
459 """
460 @wraps(func)
461 def wrapper(*args, **kwargs):
462 if not wrapper.has_run:
--> 463 result = func(*args, **kwargs)
result = undefined
global func = undefined
args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at
0x7ff828543750>,)
kwargs = {}
464 wrapper.has_run = True
465 return result
466 wrapper.has_run = False
467 return wrapper
468
469
470 @run_once
471 def load_ipython_extension(ip):
472 """
473 Load the extension in IPython.
474 """
475 # this modifies ip
476 SageCustomizations(shell=ip)
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc
in
load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell
object>)
461 def wrapper(*args, **kwargs):
462 if not wrapper.has_run:
463 result = func(*args, **kwargs)
464 wrapper.has_run = True
465 return result
466 wrapper.has_run = False
467 return wrapper
468
469
470 @run_once
471 def load_ipython_extension(ip):
472 """
473 Load the extension in IPython.
474 """
475 # this modifies ip
--> 476 SageCustomizations(shell=ip)
global SageCustomizations = <class
'sage.repl.ipython_extension.SageCustomizations'>
global shell = undefined
ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at
0x7ff828543750>
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/repl/ipython_extension.pyc
in __init__(self=<sage.repl.ipython_extension.SageCustomizations object>,
shell=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
330 """
331 self.shell = shell
332
333 self.auto_magics = SageMagics(shell)
334 self.shell.register_magics(self.auto_magics)
335
336 import sage.misc.edit_module as edit_module
337 self.shell.set_hook('editor', edit_module.edit_devel)
338
339 self.init_inspector()
340 self.init_line_transforms()
341
342 import inputhook
343 inputhook.install()
344
--> 345 import sage.all # until sage's import hell is fixed
sage.all = undefined
346
347 self.shell.verbose_quit = True
348 self.set_quit_hook()
349
350 self.register_interface_magics()
351
352 if SAGE_IMPORTALL == 'yes':
353 self.init_environment()
354
355
356 def register_interface_magics(self):
357 """
358 Register magics for each of the Sage interfaces
359 """
360 from sage.misc.superseded import deprecation
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/all.py in
<module>()
69
70 from sage.env import SAGE_ROOT, SAGE_DOC, SAGE_LOCAL, DOT_SAGE, SAGE_ENV
71
72 if sys.version_info[:2] < (2, 5):
73 print >>sys.stderr, "Sage requires Python 2.5 or newer"
74 sys.exit(1)
75
76 ###################################################################
77
78 # This import also setups the interrupt handler
79 from sage.ext.interrupt import AlarmInterrupt, SignalError,
sig_on_reset as sig_on_count
80
81 from time import sleep
82
83 import sage.misc.lazy_import
---> 84 from sage.misc.all import * # takes a while
global sage.misc.all = undefined
85 from sage.typeset.all import *
86 from sage.repl.all import *
87
88 from sage.misc.sh import sh
89
90 from sage.libs.all import *
91 from sage.data_structures.all import *
92 from sage.doctest.all import *
93 try:
94 from sage.dev.all import *
95 except ImportError:
96 pass # dev scripts are disabled
97
98 from sage.structure.all import *
99 from sage.rings.all import *
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/misc/all.py in
<module>()
73 series_precision, set_series_precision)
74
75 from sage_eval import sage_eval, sageobj
76
77 from sage_input import sage_input
78
79 from cython import cython_lambda, cython_create_local_so
80 from cython_c import cython_compile as cython
81 lazy_import("sage.misc.cython_c", "cython_compile", "pyrex",
deprecation=9552)
82 lazy_import("sage.misc.cython_c", "cython_compile", "sagex",
deprecation=9552)
83
84 from persist import save, load, dumps, loads, db, db_save
85
86 from func_persist import func_persist
87
---> 88 from functional import (additive_order,
global functional = undefined
global additive_order = undefined
global base_ring = undefined
global base_field = undefined
global basis = undefined
global category = undefined
global charpoly = undefined
global characteristic_polynomial = undefined
global coerce = undefined
global cyclotomic_polynomial = undefined
global decomposition = undefined
global denominator = undefined
global det = undefined
global dimension = undefined
global dim = undefined
global discriminant = undefined
global disc = undefined
global eta = undefined
global fcp = undefined
global gen = undefined
global gens = undefined
global hecke_operator = undefined
global image = undefined
global integral = undefined
global integrate = undefined
global integral_closure = undefined
global interval = undefined
global xinterval = undefined
global is_commutative = undefined
global is_even = undefined
global is_integrally_closed = undefined
global is_field = undefined
global is_odd = undefined
global kernel = undefined
global krull_dimension = undefined
global lift = undefined
global log = undefined
global log_b = undefined
global minimal_polynomial = undefined
global minpoly = undefined
global multiplicative_order = undefined
global ngens = undefined
global norm = undefined
global numerator = undefined
global numerical_approx = undefined
global n = undefined
global N = undefined
global objgens = undefined
global objgen = undefined
global one = undefined
global order = undefined
global rank = undefined
global regulator = undefined
global round = undefined
global quotient = undefined
global quo = undefined
global isqrt = undefined
global squarefree_part = undefined
global symbolic_sum = undefined
global sum = undefined
global transpose = undefined
global zero = undefined
89 base_ring,
90 base_field,
91 basis,
92 category,
93 charpoly,
94 characteristic_polynomial,
95 coerce,
96 cyclotomic_polynomial,
97 decomposition,
98 denominator,
99 det,
100 dimension,
101 dim,
102 discriminant,
103 disc,
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/misc/functional.py
in <module>()
11
12 - David Joyner (2005-12-20): More Examples
13 """
14
15
#*****************************************************************************
16 # Copyright (C) 2004 William Stein <[email protected]>
17 #
18 # This program is free software: you can redistribute it and/or modify
19 # it under the terms of the GNU General Public License as published by
20 # the Free Software Foundation, either version 2 of the License, or
21 # (at your option) any later version.
22 # http://www.gnu.org/licenses/
23
#*****************************************************************************
24
25 import sage.misc.latex
---> 26 import sage.interfaces.expect
global sage.interfaces.expect = undefined
27 import sage.interfaces.mathematica
28
29
30 from sage.rings.complex_double import CDF
31 from sage.rings.real_double import RDF, RealDoubleElement
32
33 import sage.rings.real_mpfr
34 import sage.rings.complex_field
35 import sage.rings.integer
36
37 import __builtin__
38
39 LOG_TEN_TWO_PLUS_EPSILON = 3.321928094887363 # a small overestimate of
log(10,2)
40
41
##############################################################################
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/interfaces/expect.py
in <module>()
40
#*****************************************************************************
41
42 import os
43 import sys
44 import weakref
45 import time
46 import gc
47 import quit
48 import cleaner
49 import six
50 from random import randrange
51
52 import pexpect
53 from pexpect import ExceptionPexpect
54 from sage.interfaces.sagespawn import SageSpawn
---> 55 from sage.interfaces.interface import (Interface, InterfaceElement,
global sage.interfaces.interface = undefined
global Interface = undefined
global InterfaceElement = undefined
global InterfaceFunction = undefined
global InterfaceFunctionElement = undefined
global AsciiArtString = undefined
56 InterfaceFunction, InterfaceFunctionElement, AsciiArtString)
57
58 from sage.structure.element import RingElement
59
60 from sage.misc.misc import SAGE_TMP_INTERFACE
61 from sage.env import SAGE_EXTCODE, LOCAL_IDENTIFIER
62 from sage.misc.object_multiplexer import Multiplex
63
64 from six import reraise as raise_
65
66 BAD_SESSION = -2
67
68 # The subprocess is a shared resource. In a multi-threaded
69 # environment, there would have to be a lock to control access to the
70 # subprocess. Fortunately, Sage does not use Python threads.
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/interfaces/interface.py
in <module>()
30 #
31 # This code is distributed in the hope that it will be useful,
32 # but WITHOUT ANY WARRANTY; without even the implied warranty of
33 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
34 # General Public License for more details.
35 #
36 # The full text of the GPL is available at:
37 #
38 # http://www.gnu.org/licenses/
39
#*****************************************************************************
40
41 import operator
42 import six
43
44 from sage.structure.sage_object import SageObject
---> 45 from sage.structure.parent_base import ParentWithBase
global sage.structure.parent_base = undefined
global ParentWithBase = undefined
46 from sage.structure.element import RingElement, parent
47
48 import sage.misc.sage_eval
49
50
51 class AsciiArtString(str):
52 def __repr__(self):
53 return str(self)
54
55
56 class Interface(ParentWithBase):
57 """
58 Interface interface object.
59 """
60 def __init__(self, name):
sage/structure/parent_base.pyx in init sage.structure.parent_base
(/home/laurent/sage-7.0/src/build/cythonized/sage/structure/parent_base.c:3476)()
sage/structure/parent_old.pyx in init sage.structure.parent_old
(/home/laurent/sage-7.0/src/build/cythonized/sage/structure/parent_old.c:9608)()
sage/structure/parent.pyx in init sage.structure.parent
(/home/laurent/sage-7.0/src/build/cythonized/sage/structure/parent.c:31329)()
sage/structure/category_object.pyx in init sage.structure.category_object
(/home/laurent/sage-7.0/src/build/cythonized/sage/structure/category_object.c:13329)()
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/categories/category.py
in <module>()
90 # Copyright (C) 2005 David Kohel <[email protected]> and
91 # William Stein <[email protected]>
92 # 2008-2014 Nicolas M. Thiery <nthiery at users.sf.net>
93 #
94 # Distributed under the terms of the GNU General Public License (GPL)
95 # http://www.gnu.org/licenses/
96
#*****************************************************************************
97
98 import inspect
99 from warnings import warn
100 from sage.misc.abstract_method import abstract_method,
abstract_methods_of_class
101 from sage.misc.cachefunc import cached_method, cached_function
102 from sage.misc.c3_controlled import _cmp_key, _cmp_key_named,
C3_sorted_merge
103 from sage.misc.lazy_attribute import lazy_attribute
104 from sage.misc.lazy_import import lazy_import
--> 105 from sage.misc.unknown import Unknown
global sage.misc.unknown = undefined
global Unknown = undefined
106 from sage.misc.weak_dict import WeakValueDictionary
107
108 from sage.structure.sage_object import SageObject
109 from sage.structure.unique_representation import UniqueRepresentation
110 from sage.structure.dynamic_class import DynamicMetaclass, dynamic_class
111
112 from sage.categories.category_cy_helper import category_sort_key,
_sort_uniq, _flatten_categories, join_as_tuple
113
114 _join_cache = WeakValueDictionary()
115
116 class Category(UniqueRepresentation, SageObject):
117 r"""
118 The base class for modeling mathematical categories, like for
example:
119
120 - ``Groups()``: the category of groups
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/misc/unknown.py
in <module>()
144 sage: for a in l: print ([a <= b for b in l])
145 [True, True, True]
146 [False, True, True]
147 [False, False, True]
148 """
149 if other is self:
150 return 0
151 if isinstance(other, bool):
152 if other:
153 return -1
154 else:
155 return +1
156 else:
157 raise ValueError("Unable to compare {} with
{}".format(self, other))
158
--> 159 Unknown = UnknownClass()
global Unknown = undefined
global UnknownClass = None
sage/misc/classcall_metaclass.pyx in
sage.misc.classcall_metaclass.ClasscallMetaclass.__call__
(/home/laurent/sage-7.0/src/build/cythonized/sage/misc/classcall_metaclass.c:1239)()
sage/misc/cachefunc.pyx in sage.misc.cachefunc.CachedFunction.__call__
(/home/laurent/sage-7.0/src/build/cythonized/sage/misc/cachefunc.c:5371)()
/home/laurent/sage-7.0/local/lib/python2.7/site-packages/sage/structure/unique_representation.pyc
in __classcall__(cls=<class 'sage.misc.unknown.UnknownClass'>, *args=(),
**options={})
1006 @weak_cached_function # automatically a staticmethod
1007 def __classcall__(cls, *args, **options):
1008 """
1009 Construct a new object of this class or reuse an existing one.
1010
1011 See also :class:`CachedRepresentation` and
1012 :class:`UniqueRepresentation` for a discussion.
1013
1014 EXAMPLES::
1015
1016 sage: x = UniqueRepresentation()
1017 sage: y = UniqueRepresentation()
1018 sage: x is y # indirect doctest
1019 True
1020 """
-> 1021 instance = typecall(cls, *args, **options)
instance = undefined
global typecall = <built-in function typecall>
cls = <class 'sage.misc.unknown.UnknownClass'>
args = ()
options = {}
1022 assert isinstance( instance, cls )
1023 if instance.__class__.__reduce__ ==
CachedRepresentation.__reduce__:
1024 instance._reduction = (cls, args, options)
1025 return instance
1026
1027 @classmethod
1028 def _clear_cache_(cls):
1029 """
1030 Remove all instances of this class from the cache.
1031
1032 EXAMPLES:
1033
1034 If ``cls`` overloads
:meth:`~sage.structure.unique_representation.CachedRepresentation.__classcall__`,
1035 clearing the cache still works, because ``cls.mro()``
1036 is searched until a ``__classcall__`` with an attribute
sage/misc/classcall_metaclass.pyx in sage.misc.classcall_metaclass.typecall
(/home/laurent/sage-7.0/src/build/cythonized/sage/misc/classcall_metaclass.c:1665)()
TypeError: sage.misc.fast_methods.WithEqualityById.__new__(UnknownClass) is not
safe, use object.__new__()
***************************************************************************
History of session input:
*** Last line of input (may not be in above history):