sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.44k stars 481 forks source link

Type debugger #23432

Closed jdemeyer closed 6 years ago

jdemeyer commented 7 years ago

A function which displays all internals of a type/class:

sage: type_debug(Integer)
<type 'sage.rings.integer.Integer'> (0x7fe881163220)
  ob_refcnt: 523
  ob_type: <type 'sage.misc.inherit_comparison.InheritComparisonMetaclass'>
  tp_name: sage.rings.integer.Integer
  tp_basicsize: 48
  tp_itemsize: 0
  tp_dictoffset: 0
  tp_weaklistoffset: 0
  tp_base (__base__): <type 'sage.structure.element.EuclideanDomainElement'>
  tp_bases (__bases__): tuple:
    <type 'sage.structure.element.EuclideanDomainElement'>
  tp_mro (__mro__): tuple:
    <type 'sage.rings.integer.Integer'>
    <type 'sage.structure.element.EuclideanDomainElement'>
    <type 'sage.structure.element.PrincipalIdealDomainElement'>
    <type 'sage.structure.element.DedekindDomainElement'>
    <type 'sage.structure.element.IntegralDomainElement'>
    <type 'sage.structure.element.CommutativeRingElement'>
    <type 'sage.structure.element.RingElement'>
    <type 'sage.structure.element.ModuleElement'>
    <type 'sage.structure.element.Element'>
    <type 'sage.structure.sage_object.SageObject'>
    <type 'object'>
  tp_dict (__dict__): dict:
    '__int__': <slot wrapper '__int__' of 'sage.rings.integer.Integer' objects>
    '__ror__': <slot wrapper '__ror__' of 'sage.rings.integer.Integer' objects>
    'is_perfect_power': <method 'is_perfect_power' of 'sage.rings.integer.Integer' objects>
    '_interface_init_': <method '_interface_init_' of 'sage.rings.integer.Integer' objects>
    '_xgcd': <method '_xgcd' of 'sage.rings.integer.Integer' objects>
    'previous_prime': <method 'previous_prime' of 'sage.rings.integer.Integer' objects>
    '__pyx_vtable__': <capsule object NULL at 0x7fe888032b40>
    '__rdiv__': <slot wrapper '__rdiv__' of 'sage.rings.integer.Integer' objects>
    '__rmul__': <slot wrapper '__rmul__' of 'sage.rings.integer.Integer' objects>
    '__lt__': <slot wrapper '__lt__' of 'sage.rings.integer.Integer' objects>
    '_exact_log_log2_iter': <method '_exact_log_log2_iter' of 'sage.rings.integer.Integer' objects>
    'global_height': <method 'global_height' of 'sage.rings.integer.Integer' objects>
    'prime_factors': <method 'prime_divisors' of 'sage.rings.integer.Integer' objects>
    '__rshift__': <slot wrapper '__rshift__' of 'sage.rings.integer.Integer' objects>
    'nbits': <method 'nbits' of 'sage.rings.integer.Integer' objects>
    'nth_root': <method 'nth_root' of 'sage.rings.integer.Integer' objects>
    '_sage_input_': <method '_sage_input_' of 'sage.rings.integer.Integer' objects>
    'valuation': <method 'valuation' of 'sage.rings.integer.Integer' objects>
    '__mpz__': <method '__mpz__' of 'sage.rings.integer.Integer' objects>
    'factor': <method 'factor' of 'sage.rings.integer.Integer' objects>
    'jacobi': <method 'jacobi' of 'sage.rings.integer.Integer' objects>
    'trial_division': <method 'trial_division' of 'sage.rings.integer.Integer' objects>
    'factorial': <method 'factorial' of 'sage.rings.integer.Integer' objects>
    'squarefree_part': <method 'squarefree_part' of 'sage.rings.integer.Integer' objects>
    'ceil': <method 'ceil' of 'sage.rings.integer.Integer' objects>
    '__pow__': <slot wrapper '__pow__' of 'sage.rings.integer.Integer' objects>
    '__gt__': <slot wrapper '__gt__' of 'sage.rings.integer.Integer' objects>
    'perfect_power': <method 'perfect_power' of 'sage.rings.integer.Integer' objects>
    '__oct__': <slot wrapper '__oct__' of 'sage.rings.integer.Integer' objects>
    '__rxor__': <slot wrapper '__rxor__' of 'sage.rings.integer.Integer' objects>
    '__nonzero__': <slot wrapper '__nonzero__' of 'sage.rings.integer.Integer' objects>
    'crt': <method 'crt' of 'sage.rings.integer.Integer' objects>
    '_add_': <method '_add_' of 'sage.rings.integer.Integer' objects>
    'list': <method 'list' of 'sage.rings.integer.Integer' objects>
    'divides': <method 'divides' of 'sage.rings.integer.Integer' objects>
    '_rpy_': <method '_rpy_' of 'sage.rings.integer.Integer' objects>
    '_lcm': <method '_lcm' of 'sage.rings.integer.Integer' objects>
    '__long__': <slot wrapper '__long__' of 'sage.rings.integer.Integer' objects>
    '__copy__': <method '__copy__' of 'sage.rings.integer.Integer' objects>
    'round': <method 'round' of 'sage.rings.integer.Integer' objects>
    'multiplicative_order': <method 'multiplicative_order' of 'sage.rings.integer.Integer' objects>
    'sign': <method 'sign' of 'sage.rings.integer.Integer' objects>
    '__rmod__': <slot wrapper '__rmod__' of 'sage.rings.integer.Integer' objects>
    '__rand__': <slot wrapper '__rand__' of 'sage.rings.integer.Integer' objects>
    'class_number': <method 'class_number' of 'sage.rings.integer.Integer' objects>
    'rational_reconstruction': <method 'rational_reconstruction' of 'sage.rings.integer.Integer' objects>
    'is_power_of': <method 'is_power_of' of 'sage.rings.integer.Integer' objects>
    '__le__': <slot wrapper '__le__' of 'sage.rings.integer.Integer' objects>
    'quo_rem': <method 'quo_rem' of 'sage.rings.integer.Integer' objects>
    '__ne__': <slot wrapper '__ne__' of 'sage.rings.integer.Integer' objects>
    '_pow_int': <method '_pow_int' of 'sage.rings.integer.Integer' objects>
    'next_prime_power': <method 'next_prime_power' of 'sage.rings.integer.Integer' objects>
    'is_pseudoprime': <method 'is_pseudoprime' of 'sage.rings.integer.Integer' objects>
    'is_norm': <method 'is_norm' of 'sage.rings.integer.Integer' objects>
    'binomial': <method 'binomial' of 'sage.rings.integer.Integer' objects>
    '__hex__': <slot wrapper '__hex__' of 'sage.rings.integer.Integer' objects>
    'ord': <method 'valuation' of 'sage.rings.integer.Integer' objects>
    'trunc': <method 'trunc' of 'sage.rings.integer.Integer' objects>
    'digits': <method 'digits' of 'sage.rings.integer.Integer' objects>
    'is_one': <method 'is_one' of 'sage.rings.integer.Integer' objects>
    'powermod': <method 'powermod' of 'sage.rings.integer.Integer' objects>
    'popcount': <method 'popcount' of 'sage.rings.integer.Integer' objects>
    'is_rational': <method 'is_rational' of 'sage.rings.integer.Integer' objects>
    'powermodm_ui': <sage.misc.superseded.DeprecatedFunctionAlias object at 0x7fe80fe0f5d0>
    'numerator': <method 'numerator' of 'sage.rings.integer.Integer' objects>
    '__pari__': <method '__pari__' of 'sage.rings.integer.Integer' objects>
    '__xor__': <slot wrapper '__xor__' of 'sage.rings.integer.Integer' objects>
    'inverse_mod': <method 'inverse_mod' of 'sage.rings.integer.Integer' objects>
    '__mul__': <slot wrapper '__mul__' of 'sage.rings.integer.Integer' objects>
    '_exact_log_mpfi_log': <method '_exact_log_mpfi_log' of 'sage.rings.integer.Integer' objects>
    '_act_on_': <method '_act_on_' of 'sage.rings.integer.Integer' objects>
    'test_bit': <method 'test_bit' of 'sage.rings.integer.Integer' objects>
    'gamma': <method 'gamma' of 'sage.rings.integer.Integer' objects>
    '__rlshift__': <slot wrapper '__rlshift__' of 'sage.rings.integer.Integer' objects>
    '_cmp_': <method '_cmp_' of 'sage.rings.integer.Integer' objects>
    '_div_': <method '_div_' of 'sage.rings.integer.Integer' objects>
    'is_square': <method 'is_square' of 'sage.rings.integer.Integer' objects>
    'next_probable_prime': <method 'next_probable_prime' of 'sage.rings.integer.Integer' objects>
    'is_squarefree': <method 'is_squarefree' of 'sage.rings.integer.Integer' objects>
    '_mul_': <method '_mul_' of 'sage.rings.integer.Integer' objects>
    '__rsub__': <slot wrapper '__rsub__' of 'sage.rings.integer.Integer' objects>
    '__and__': <slot wrapper '__and__' of 'sage.rings.integer.Integer' objects>
    'divide_knowing_divisible_by': <method 'divide_knowing_divisible_by' of 'sage.rings.integer.Integer' objects>
    'is_integer': <method 'is_integer' of 'sage.rings.integer.Integer' objects>
    'inverse_of_unit': <method 'inverse_of_unit' of 'sage.rings.integer.Integer' objects>
    '__float__': <slot wrapper '__float__' of 'sage.rings.integer.Integer' objects>
    '__rpow__': <slot wrapper '__rpow__' of 'sage.rings.integer.Integer' objects>
    'kronecker': <method 'kronecker' of 'sage.rings.integer.Integer' objects>
    'is_integral': <method 'is_integral' of 'sage.rings.integer.Integer' objects>
    'log': <method 'log' of 'sage.rings.integer.Integer' objects>
    'support': <method 'support' of 'sage.rings.integer.Integer' objects>
    '_bnfisnorm': <method '_bnfisnorm' of 'sage.rings.integer.Integer' objects>
    '__abs__': <slot wrapper '__abs__' of 'sage.rings.integer.Integer' objects>
    'next_prime': <method 'next_prime' of 'sage.rings.integer.Integer' objects>
    '_pow_': <method '_pow_' of 'sage.rings.integer.Integer' objects>
    'bits': <method 'bits' of 'sage.rings.integer.Integer' objects>
    '__doc__': 'Integer(x=None, base=0)\nFile: sage/rings/integer.pyx (starting at line 443)\n\n    The ``Integer`` class represents arbitrary precision\n    integers. It derives from the ``Element`` class, so\n    integers can be used as ring elements anywhere in Sage.\n\n    Integer() interprets strings that begin with ``0o`` as octal numbers,\n    strings that begin with ``0x`` as hexadecimal numbers and strings\n    that begin with ``0b`` as binary numbers.\n\n    The class ``Integer`` is implemented in Cython, as a wrapper of the\n    GMP ``mpz_t`` integer type.\n\n    EXAMPLES::\n\n        sage: Integer(123)\n        123\n        sage: Integer("123")\n        123\n\n    Sage Integers support :pep:`3127` literals::\n\n        sage: Integer(\'0x12\')\n        18\n        sage: Integer(\'-0o12\')\n        -10\n        sage: Integer(\'+0b101010\')\n        42\n\n    Conversion from PARI::\n\n        sage: Integer(pari(\'-10380104371593008048799446356441519384\'))\n        -10380104371593008048799446356441519384\n        sage: Integer(pari(\'Pol([-3])\'))\n        -3\n\n    Conversion from gmpy2::\n\n        sage: from gmpy2 import mpz  # optional - gmpy2\n        sage: Integer(mpz(3))        # optional - gmpy2\n        3\n\n    .. automethod:: __pow__\n    '
    '_valuation': <method '_valuation' of 'sage.rings.integer.Integer' objects>
    '__invert__': <slot wrapper '__invert__' of 'sage.rings.integer.Integer' objects>
    'imag': <method 'imag' of 'sage.rings.integer.Integer' objects>
    '_latex_': <method '_latex_' of 'sage.rings.integer.Integer' objects>
    'odd_part': <method 'odd_part' of 'sage.rings.integer.Integer' objects>
    'additive_order': <method 'additive_order' of 'sage.rings.integer.Integer' objects>
    '_mathml_': <method '_mathml_' of 'sage.rings.integer.Integer' objects>
    '__lshift__': <slot wrapper '__lshift__' of 'sage.rings.integer.Integer' objects>
    '__eq__': <slot wrapper '__eq__' of 'sage.rings.integer.Integer' objects>
    'divisors': <method 'divisors' of 'sage.rings.integer.Integer' objects>
    '_neg_': <method '_neg_' of 'sage.rings.integer.Integer' objects>
    '__mod__': <slot wrapper '__mod__' of 'sage.rings.integer.Integer' objects>
    'is_prime': <method 'is_prime' of 'sage.rings.integer.Integer' objects>
    'sqrtrem': <method 'sqrtrem' of 'sage.rings.integer.Integer' objects>
    '_shift_helper': <method '_shift_helper' of 'sage.rings.integer.Integer' objects>
    '_sympy_': <method '_sympy_' of 'sage.rings.integer.Integer' objects>
    '_im_gens_': <method '_im_gens_' of 'sage.rings.integer.Integer' objects>
    'euclidean_degree': <method 'euclidean_degree' of 'sage.rings.integer.Integer' objects>
    'str': <method 'str' of 'sage.rings.integer.Integer' objects>
    '__hash__': <slot wrapper '__hash__' of 'sage.rings.integer.Integer' objects>
    '__sub__': <slot wrapper '__sub__' of 'sage.rings.integer.Integer' objects>
    'prime_to_m_part': <method 'prime_to_m_part' of 'sage.rings.integer.Integer' objects>
    '__ge__': <slot wrapper '__ge__' of 'sage.rings.integer.Integer' objects>
    'real': <method 'real' of 'sage.rings.integer.Integer' objects>
    'trailing_zero_bits': <method 'trailing_zero_bits' of 'sage.rings.integer.Integer' objects>
    'is_prime_power': <method 'is_prime_power' of 'sage.rings.integer.Integer' objects>
    'multifactorial': <method 'multifactorial' of 'sage.rings.integer.Integer' objects>
    '_sub_': <method '_sub_' of 'sage.rings.integer.Integer' objects>
    'is_irreducible': <method 'is_irreducible' of 'sage.rings.integer.Integer' objects>
    '__reduce__': <method '__reduce__' of 'sage.rings.integer.Integer' objects>
    '__radd__': <slot wrapper '__radd__' of 'sage.rings.integer.Integer' objects>
    '__rrshift__': <slot wrapper '__rrshift__' of 'sage.rings.integer.Integer' objects>
    'is_pseudoprime_power': <method 'is_pseudoprime_power' of 'sage.rings.integer.Integer' objects>
    'conjugate': <method 'conjugate' of 'sage.rings.integer.Integer' objects>
    'previous_prime_power': <method 'previous_prime_power' of 'sage.rings.integer.Integer' objects>
    '__init__': <slot wrapper '__init__' of 'sage.rings.integer.Integer' objects>
    'ordinal_str': <method 'ordinal_str' of 'sage.rings.integer.Integer' objects>
    'binary': <method 'binary' of 'sage.rings.integer.Integer' objects>
    '__new__': <built-in method __new__ of sage.misc.inherit_comparison.InheritComparisonMetaclass object at 0x7fe881163220>
    'floor': <method 'floor' of 'sage.rings.integer.Integer' objects>
    'isqrt': <method 'isqrt' of 'sage.rings.integer.Integer' objects>
    '__format__': <method '__format__' of 'sage.rings.integer.Integer' objects>
    '_symbolic_': <method '_symbolic_' of 'sage.rings.integer.Integer' objects>
    'sqrt': <method 'sqrt' of 'sage.rings.integer.Integer' objects>
    '__pos__': <slot wrapper '__pos__' of 'sage.rings.integer.Integer' objects>
    'is_unit': <method 'is_unit' of 'sage.rings.integer.Integer' objects>
    '_floordiv_': <method '_floordiv_' of 'sage.rings.integer.Integer' objects>
    '__repr__': <slot wrapper '__repr__' of 'sage.rings.integer.Integer' objects>
    'val_unit': <method 'val_unit' of 'sage.rings.integer.Integer' objects>
    'ndigits': <method 'ndigits' of 'sage.rings.integer.Integer' objects>
    '_magma_init_': <method '_magma_init_' of 'sage.rings.integer.Integer' objects>
    'denominator': <method 'denominator' of 'sage.rings.integer.Integer' objects>
    '_pari_divisors_small': <method '_pari_divisors_small' of 'sage.rings.integer.Integer' objects>
    'coprime_integers': <method 'coprime_integers' of 'sage.rings.integer.Integer' objects>
    '__or__': <slot wrapper '__or__' of 'sage.rings.integer.Integer' objects>
    '__add__': <slot wrapper '__add__' of 'sage.rings.integer.Integer' objects>
    '__array_interface__': <attribute '__array_interface__' of 'sage.rings.integer.Integer' objects>
    'prime_divisors': <method 'prime_divisors' of 'sage.rings.integer.Integer' objects>
    'gcd': <method 'gcd' of 'sage.rings.integer.Integer' objects>
    'xgcd': <cyfunction coerce_binop.<locals>.new_method at 0x7fe8106df410>
    '__div__': <slot wrapper '__div__' of 'sage.rings.integer.Integer' objects>
    'exact_log': <method 'exact_log' of 'sage.rings.integer.Integer' objects>
    '__neg__': <slot wrapper '__neg__' of 'sage.rings.integer.Integer' objects>
    'exp': <method 'exp' of 'sage.rings.integer.Integer' objects>
    '__index__': <slot wrapper '__index__' of 'sage.rings.integer.Integer' objects>
  tp_alloc: PyType_GenericAlloc
  tp_new (__new__): 0x7fe880eed520
  tp_init (__init__): 0x7fe880f13980
  tp_dealloc (__dealloc__): 0x7fe880ed3050
  tp_free: PyObject_GC_Del
  tp_repr (__repr__): 0x7fe880efee50
  tp_print: NULL
  tp_hash (__hash__): 0x7fe880ece750
  tp_call (__call__): NULL
  tp_str (__str__): == object
  tp_compare (cmp): NULL
  tp_richcompare (__richcmp__): 0x7fe880ed5650
  tp_getattr (__getattribute__): NULL
  tp_setattr (__setattribute__): NULL
  tp_getattro (__getattribute__): == sage.structure.element.Element
  tp_setattro (__setattribute__): PyObject_GenericSetAttr
  tp_iter (__iter__): NULL
  tp_iternext (__next__): NULL
  tp_descr_get (__get__): NULL
  tp_descr_set (__set__): NULL
  tp_cache: NULL
  tp_weaklist: <weakref at 0x7fe8880a4d60; to 'sage.misc.inherit_comparison.InheritComparisonMeta' at 0x7fe881163220 (Integer)>
  tp_traverse: 0x7fe880ece5f0
  tp_clear: 0x7fe880ed45f0
  tp_is_gc: NULL
  tp_as_number: 0x7fe8811633c0
    nb_add (__add__): 0x7fe880edf8a0
    nb_subtract (__sub__): 0x7fe880edfc90
    nb_multiply (__mul__): 0x7fe880edf4a0
    nb_divide (__div__): 0x7fe880ee2df0
    nb_floor_divide (__floordiv__): == sage.structure.element.Element
    nb_true_divide (__truediv__): == sage.structure.element.Element
    nb_remainder (__mod__): 0x7fe880f2d0a0
    nb_divmod (__divmod__): == sage.structure.element.EuclideanDomainElement
    nb_power (__pow__): 0x7fe880f30440
    nb_negative (__neg__): 0x7fe880ed4670
    nb_positive (__pos__): 0x7fe880ece2c0
    nb_absolute (__abs__): 0x7fe880edb160
    nb_nonzero (__nonzero__): 0x7fe880ece2f0
    nb_invert (__invert__): 0x7fe880ee2a40
    nb_lshift (__lshift__): 0x7fe880ed3cc0
    nb_rshift (__rshift__): 0x7fe880ed3eb0
    nb_and (__and__): 0x7fe880ee4360
    nb_or (__or__): 0x7fe880ee53c0
    nb_xor (__xor__): 0x7fe880ee4b90
    nb_int (__int__): 0x7fe880ed3730
    nb_long (__long__): 0x7fe880ed36c0
    nb_index (__index__): 0x7fe880ed3650
    nb_float (__float__): 0x7fe880ee3700
    nb_oct (__oct__): 0x7fe880ed4760
    nb_hex (__hex__): 0x7fe880ed4950
    nb_coerce: NULL
    nb_inplace_add (__iadd__): NULL
    nb_inplace_subtract (__isub__): NULL
    nb_inplace_multiply (__imul__): NULL
    nb_inplace_divide (__idiv__): NULL
    nb_inplace_floor_divide (__ifloordiv__): NULL
    nb_inplace_true_divide (__itruediv__): NULL
    nb_inplace_remainder (__imod__): NULL
    nb_inplace_power (__ipow__): NULL
    nb_inplace_lshift (__ilshift__): NULL
    nb_inplace_rshift (__irshift__): NULL
    nb_inplace_and (__iand__): NULL
    nb_inplace_or (__ior__): NULL
    nb_inplace_xor (__ixor__): NULL
  tp_as_sequence: NULL
  tp_as_mapping: NULL
  tp_as_buffer: NULL
  tp_flags:
    BASETYPE
    READY
    CHECKTYPES
    HAVE_VERSION_TAG
    VALID_VERSION_TAG
  tp_version_tag: 6488

Component: misc

Author: Jeroen Demeyer

Branch/Commit: 4c65d81

Reviewer: Travis Scrimshaw

Issue created by migration from https://trac.sagemath.org/ticket/23432

jdemeyer commented 7 years ago

Branch: u/jdemeyer/type_debugger

jdemeyer commented 7 years ago

Description changed:

--- 
+++ 
@@ -1 +1,269 @@
-A function which displays the internals of a type/class.
+A function which displays all internals of a type/class:
+
+```
+sage: type_debug(Integer)
+<type 'sage.rings.integer.Integer'> (0x7f61ba90f0c0)
+  ob_refcnt: 515
+  ob_type: <type 'sage.misc.inherit_comparison.InheritComparisonMetaclass'>
+  tp_name: sage.rings.integer.Integer
+  tp_basicsize: 48
+  tp_itemsize: 0
+  tp_dictoffset: 0
+  tp_weaklistoffset: 0
+  tp_base (__base__): <type 'sage.structure.element.EuclideanDomainElement'>
+  tp_bases (__bases__): tuple:
+    <type 'sage.structure.element.EuclideanDomainElement'>
+  tp_mro (__mro__): tuple:
+    <type 'sage.rings.integer.Integer'>
+    <type 'sage.structure.element.EuclideanDomainElement'>
+    <type 'sage.structure.element.PrincipalIdealDomainElement'>
+    <type 'sage.structure.element.DedekindDomainElement'>
+    <type 'sage.structure.element.IntegralDomainElement'>
+    <type 'sage.structure.element.CommutativeRingElement'>
+    <type 'sage.structure.element.RingElement'>
+    <type 'sage.structure.element.ModuleElement'>
+    <type 'sage.structure.element.Element'>
+    <type 'sage.structure.sage_object.SageObject'>
+    <type 'object'>
+  tp_dict (__dict__): dict:
+    '__int__': <slot wrapper '__int__' of 'sage.rings.integer.Integer' objects>
+    '__ror__': <slot wrapper '__ror__' of 'sage.rings.integer.Integer' objects>
+    '_interface_init_': <method '_interface_init_' of 'sage.rings.integer.Integer' objects>
+    '_xgcd': <method '_xgcd' of 'sage.rings.integer.Integer' objects>
+    'previous_prime': <method 'previous_prime' of 'sage.rings.integer.Integer' objects>
+    '__pyx_vtable__': <capsule object NULL at 0x7f61ba92ab10>
+    '__rdiv__': <slot wrapper '__rdiv__' of 'sage.rings.integer.Integer' objects>
+    '__rmul__': <slot wrapper '__rmul__' of 'sage.rings.integer.Integer' objects>
+    '__lt__': <slot wrapper '__lt__' of 'sage.rings.integer.Integer' objects>
+    '_exact_log_log2_iter': <method '_exact_log_log2_iter' of 'sage.rings.integer.Integer' objects>
+    'global_height': <method 'global_height' of 'sage.rings.integer.Integer' objects>
+    'prime_factors': <method 'prime_divisors' of 'sage.rings.integer.Integer' objects>
+    '__rshift__': <slot wrapper '__rshift__' of 'sage.rings.integer.Integer' objects>
+    'nbits': <method 'nbits' of 'sage.rings.integer.Integer' objects>
+    'nth_root': <method 'nth_root' of 'sage.rings.integer.Integer' objects>
+    '_sage_input_': <method '_sage_input_' of 'sage.rings.integer.Integer' objects>
+    'valuation': <method 'valuation' of 'sage.rings.integer.Integer' objects>
+    'factor': <method 'factor' of 'sage.rings.integer.Integer' objects>
+    'jacobi': <method 'jacobi' of 'sage.rings.integer.Integer' objects>
+    'trial_division': <method 'trial_division' of 'sage.rings.integer.Integer' objects>
+    'factorial': <method 'factorial' of 'sage.rings.integer.Integer' objects>
+    'squarefree_part': <method 'squarefree_part' of 'sage.rings.integer.Integer' objects>
+    'ceil': <method 'ceil' of 'sage.rings.integer.Integer' objects>
+    '__pow__': <slot wrapper '__pow__' of 'sage.rings.integer.Integer' objects>
+    '__gt__': <slot wrapper '__gt__' of 'sage.rings.integer.Integer' objects>
+    'perfect_power': <method 'perfect_power' of 'sage.rings.integer.Integer' objects>
+    '__oct__': <slot wrapper '__oct__' of 'sage.rings.integer.Integer' objects>
+    '__rxor__': <slot wrapper '__rxor__' of 'sage.rings.integer.Integer' objects>
+    '__nonzero__': <slot wrapper '__nonzero__' of 'sage.rings.integer.Integer' objects>
+    'crt': <method 'crt' of 'sage.rings.integer.Integer' objects>
+    '_add_': <method '_add_' of 'sage.rings.integer.Integer' objects>
+    'list': <method 'list' of 'sage.rings.integer.Integer' objects>
+    'divides': <method 'divides' of 'sage.rings.integer.Integer' objects>
+    '_rpy_': <method '_rpy_' of 'sage.rings.integer.Integer' objects>
+    '_lcm': <method '_lcm' of 'sage.rings.integer.Integer' objects>
+    '__long__': <slot wrapper '__long__' of 'sage.rings.integer.Integer' objects>
+    '__copy__': <method '__copy__' of 'sage.rings.integer.Integer' objects>
+    'multiplicative_order': <method 'multiplicative_order' of 'sage.rings.integer.Integer' objects>
+    'sign': <method 'sign' of 'sage.rings.integer.Integer' objects>
+    '__rmod__': <slot wrapper '__rmod__' of 'sage.rings.integer.Integer' objects>
+    '__rand__': <slot wrapper '__rand__' of 'sage.rings.integer.Integer' objects>
+    'class_number': <method 'class_number' of 'sage.rings.integer.Integer' objects>
+    'rational_reconstruction': <method 'rational_reconstruction' of 'sage.rings.integer.Integer' objects>
+    'is_power_of': <method 'is_power_of' of 'sage.rings.integer.Integer' objects>
+    '__le__': <slot wrapper '__le__' of 'sage.rings.integer.Integer' objects>
+    'quo_rem': <method 'quo_rem' of 'sage.rings.integer.Integer' objects>
+    '__ne__': <slot wrapper '__ne__' of 'sage.rings.integer.Integer' objects>
+    'next_prime_power': <method 'next_prime_power' of 'sage.rings.integer.Integer' objects>
+    'is_pseudoprime': <method 'is_pseudoprime' of 'sage.rings.integer.Integer' objects>
+    'is_norm': <method 'is_norm' of 'sage.rings.integer.Integer' objects>
+    'binomial': <method 'binomial' of 'sage.rings.integer.Integer' objects>
+    '__hex__': <slot wrapper '__hex__' of 'sage.rings.integer.Integer' objects>
+    'ord': <method 'valuation' of 'sage.rings.integer.Integer' objects>
+    'digits': <method 'digits' of 'sage.rings.integer.Integer' objects>
+    'is_one': <method 'is_one' of 'sage.rings.integer.Integer' objects>
+    'powermod': <method 'powermod' of 'sage.rings.integer.Integer' objects>
+    'popcount': <method 'popcount' of 'sage.rings.integer.Integer' objects>
+    'powermodm_ui': <sage.misc.superseded.DeprecatedFunctionAlias object at 0x7f614a697a90>
+    'numerator': <method 'numerator' of 'sage.rings.integer.Integer' objects>
+    '__pari__': <method '__pari__' of 'sage.rings.integer.Integer' objects>
+    '__xor__': <slot wrapper '__xor__' of 'sage.rings.integer.Integer' objects>
+    'inverse_mod': <method 'inverse_mod' of 'sage.rings.integer.Integer' objects>
+    '__mul__': <slot wrapper '__mul__' of 'sage.rings.integer.Integer' objects>
+    '_exact_log_mpfi_log': <method '_exact_log_mpfi_log' of 'sage.rings.integer.Integer' objects>
+    '_act_on_': <method '_act_on_' of 'sage.rings.integer.Integer' objects>
+    'test_bit': <method 'test_bit' of 'sage.rings.integer.Integer' objects>
+    'gamma': <method 'gamma' of 'sage.rings.integer.Integer' objects>
+    '__rlshift__': <slot wrapper '__rlshift__' of 'sage.rings.integer.Integer' objects>
+    '_cmp_': <method '_cmp_' of 'sage.rings.integer.Integer' objects>
+    'radical': <method 'radical' of 'sage.rings.integer.Integer' objects>
+    '_div_': <method '_div_' of 'sage.rings.integer.Integer' objects>
+    'is_square': <method 'is_square' of 'sage.rings.integer.Integer' objects>
+    'next_probable_prime': <method 'next_probable_prime' of 'sage.rings.integer.Integer' objects>
+    'is_squarefree': <method 'is_squarefree' of 'sage.rings.integer.Integer' objects>
+    '_mul_': <method '_mul_' of 'sage.rings.integer.Integer' objects>
+    '__rsub__': <slot wrapper '__rsub__' of 'sage.rings.integer.Integer' objects>
+    '__and__': <slot wrapper '__and__' of 'sage.rings.integer.Integer' objects>
+    'divide_knowing_divisible_by': <method 'divide_knowing_divisible_by' of 'sage.rings.integer.Integer' objects>
+    'is_integer': <method 'is_integer' of 'sage.rings.integer.Integer' objects>
+    'inverse_of_unit': <method 'inverse_of_unit' of 'sage.rings.integer.Integer' objects>
+    '__float__': <slot wrapper '__float__' of 'sage.rings.integer.Integer' objects>
+    '__rpow__': <slot wrapper '__rpow__' of 'sage.rings.integer.Integer' objects>
+    'is_integral': <method 'is_integral' of 'sage.rings.integer.Integer' objects>
+    'log': <method 'log' of 'sage.rings.integer.Integer' objects>
+    'support': <method 'support' of 'sage.rings.integer.Integer' objects>
+    '_bnfisnorm': <method '_bnfisnorm' of 'sage.rings.integer.Integer' objects>
+    '__abs__': <slot wrapper '__abs__' of 'sage.rings.integer.Integer' objects>
+    'next_prime': <method 'next_prime' of 'sage.rings.integer.Integer' objects>
+    'kronecker': <method 'kronecker' of 'sage.rings.integer.Integer' objects>
+    'bits': <method 'bits' of 'sage.rings.integer.Integer' objects>
+    '__doc__': 'Integer(x=None, base=0)\nFile: sage/rings/integer.pyx (starting at line 433)\n\n    The ``Integer`` class represents arbitrary precision\n    integers. It derives from the ``Element`` class, so\n    integers can be used as ring elements anywhere in Sage.\n\n    Integer() interprets strings that begin with ``0o`` as octal numbers,\n    strings that begin with ``0x`` as hexadecimal numbers and strings\n    that begin with ``0b`` as binary numbers.\n\n    The class ``Integer`` is implemented in Cython, as a wrapper of the\n    GMP ``mpz_t`` integer type.\n\n    EXAMPLES::\n\n        sage: Integer(123)\n        123\n        sage: Integer("123")\n        123\n\n    Sage Integers support :pep:`3127` literals::\n\n        sage: Integer(\'0x12\')\n        18\n        sage: Integer(\'-0o12\')\n        -10\n        sage: Integer(\'+0b101010\')\n        42\n\n    Conversion from PARI::\n\n        sage: Integer(pari(\'-10380104371593008048799446356441519384\'))\n        -10380104371593008048799446356441519384\n        sage: Integer(pari(\'Pol([-3])\'))\n        -3\n    '
+    '_valuation': <method '_valuation' of 'sage.rings.integer.Integer' objects>
+    '__invert__': <slot wrapper '__invert__' of 'sage.rings.integer.Integer' objects>
+    'imag': <method 'imag' of 'sage.rings.integer.Integer' objects>
+    '_latex_': <method '_latex_' of 'sage.rings.integer.Integer' objects>
+    'odd_part': <method 'odd_part' of 'sage.rings.integer.Integer' objects>
+    'additive_order': <method 'additive_order' of 'sage.rings.integer.Integer' objects>
+    '_mathml_': <method '_mathml_' of 'sage.rings.integer.Integer' objects>
+    '__lshift__': <slot wrapper '__lshift__' of 'sage.rings.integer.Integer' objects>
+    '__eq__': <slot wrapper '__eq__' of 'sage.rings.integer.Integer' objects>
+    'divisors': <method 'divisors' of 'sage.rings.integer.Integer' objects>
+    '_neg_': <method '_neg_' of 'sage.rings.integer.Integer' objects>
+    '__mod__': <slot wrapper '__mod__' of 'sage.rings.integer.Integer' objects>
+    'is_prime': <method 'is_prime' of 'sage.rings.integer.Integer' objects>
+    'sqrtrem': <method 'sqrtrem' of 'sage.rings.integer.Integer' objects>
+    '_shift_helper': <method '_shift_helper' of 'sage.rings.integer.Integer' objects>
+    '_sympy_': <method '_sympy_' of 'sage.rings.integer.Integer' objects>
+    '_im_gens_': <method '_im_gens_' of 'sage.rings.integer.Integer' objects>
+    'euclidean_degree': <method 'euclidean_degree' of 'sage.rings.integer.Integer' objects>
+    'str': <method 'str' of 'sage.rings.integer.Integer' objects>
+    '__hash__': <slot wrapper '__hash__' of 'sage.rings.integer.Integer' objects>
+    '__sub__': <slot wrapper '__sub__' of 'sage.rings.integer.Integer' objects>
+    'prime_to_m_part': <method 'prime_to_m_part' of 'sage.rings.integer.Integer' objects>
+    '__ge__': <slot wrapper '__ge__' of 'sage.rings.integer.Integer' objects>
+    'real': <method 'real' of 'sage.rings.integer.Integer' objects>
+    'trailing_zero_bits': <method 'trailing_zero_bits' of 'sage.rings.integer.Integer' objects>
+    'is_prime_power': <method 'is_prime_power' of 'sage.rings.integer.Integer' objects>
+    'multifactorial': <method 'multifactorial' of 'sage.rings.integer.Integer' objects>
+    '_sub_': <method '_sub_' of 'sage.rings.integer.Integer' objects>
+    'is_irreducible': <method 'is_irreducible' of 'sage.rings.integer.Integer' objects>
+    '__reduce__': <method '__reduce__' of 'sage.rings.integer.Integer' objects>
+    '__radd__': <slot wrapper '__radd__' of 'sage.rings.integer.Integer' objects>
+    '__rrshift__': <slot wrapper '__rrshift__' of 'sage.rings.integer.Integer' objects>
+    'is_pseudoprime_power': <method 'is_pseudoprime_power' of 'sage.rings.integer.Integer' objects>
+    'conjugate': <method 'conjugate' of 'sage.rings.integer.Integer' objects>
+    'previous_prime_power': <method 'previous_prime_power' of 'sage.rings.integer.Integer' objects>
+    '__init__': <slot wrapper '__init__' of 'sage.rings.integer.Integer' objects>
+    'ordinal_str': <method 'ordinal_str' of 'sage.rings.integer.Integer' objects>
+    'binary': <method 'binary' of 'sage.rings.integer.Integer' objects>
+    '__new__': <built-in method __new__ of sage.misc.inherit_comparison.InheritComparisonMetaclass object at 0x7f61ba90f0c0>
+    'floor': <method 'floor' of 'sage.rings.integer.Integer' objects>
+    'isqrt': <method 'isqrt' of 'sage.rings.integer.Integer' objects>
+    '__format__': <method '__format__' of 'sage.rings.integer.Integer' objects>
+    'is_perfect_power': <method 'is_perfect_power' of 'sage.rings.integer.Integer' objects>
+    'sqrt': <method 'sqrt' of 'sage.rings.integer.Integer' objects>
+    '__pos__': <slot wrapper '__pos__' of 'sage.rings.integer.Integer' objects>
+    'is_unit': <method 'is_unit' of 'sage.rings.integer.Integer' objects>
+    '_floordiv_': <method '_floordiv_' of 'sage.rings.integer.Integer' objects>
+    '__repr__': <slot wrapper '__repr__' of 'sage.rings.integer.Integer' objects>
+    'val_unit': <method 'val_unit' of 'sage.rings.integer.Integer' objects>
+    'ndigits': <method 'ndigits' of 'sage.rings.integer.Integer' objects>
+    '_magma_init_': <method '_magma_init_' of 'sage.rings.integer.Integer' objects>
+    'denominator': <method 'denominator' of 'sage.rings.integer.Integer' objects>
+    '_pari_divisors_small': <method '_pari_divisors_small' of 'sage.rings.integer.Integer' objects>
+    'coprime_integers': <method 'coprime_integers' of 'sage.rings.integer.Integer' objects>
+    '__or__': <slot wrapper '__or__' of 'sage.rings.integer.Integer' objects>
+    '__add__': <slot wrapper '__add__' of 'sage.rings.integer.Integer' objects>
+    '__array_interface__': <attribute '__array_interface__' of 'sage.rings.integer.Integer' objects>
+    'prime_divisors': <method 'prime_divisors' of 'sage.rings.integer.Integer' objects>
+    'gcd': <method 'gcd' of 'sage.rings.integer.Integer' objects>
+    'xgcd': <cyfunction coerce_binop.<locals>.new_method at 0x7f614ad6ddd0>
+    '__div__': <slot wrapper '__div__' of 'sage.rings.integer.Integer' objects>
+    'exact_log': <method 'exact_log' of 'sage.rings.integer.Integer' objects>
+    '__neg__': <slot wrapper '__neg__' of 'sage.rings.integer.Integer' objects>
+    'exp': <method 'exp' of 'sage.rings.integer.Integer' objects>
+    '__index__': <slot wrapper '__index__' of 'sage.rings.integer.Integer' objects>
+  tp_alloc: PyType_GenericAlloc
+  tp_new (__new__): 0x7f61ba67e590
+  tp_init (__init__): 0x7f61ba6b4e00
+  tp_dealloc (__dealloc__): 0x7f61ba6752c0
+  tp_free: PyObject_GC_Del
+  tp_repr (__repr__): 0x7f61ba6b8600
+  tp_print: NULL
+  tp_hash (__hash__): 0x7f61ba673d70
+  tp_call (__call__): NULL
+  tp_str (__str__): == object
+  tp_compare (__cmp__): NULL
+  tp_richcompare (__richcmp__): 0x7f61ba676560
+  tp_getattr (__getattribute__): NULL
+  tp_setattr (__setattribute__): NULL
+  tp_getattro (__getattribute__): == sage.structure.element.Element
+  tp_setattro (__setattribute__): PyObject_GenericSetAttr
+  tp_iter (__iter__): NULL
+  tp_iternext (__next__): NULL
+  tp_descr_get (__get__): NULL
+  tp_descr_set (__set__): NULL
+  tp_cache: NULL
+  tp_weaklist: <weakref at 0x7f61ba929368; to 'sage.misc.inherit_comparison.InheritComparisonMeta' at 0x7f61ba90f0c0 (Integer)>
+  tp_traverse: 0x7f61ba678040
+  tp_clear: 0x7f61ba673c90
+  tp_is_gc: NULL
+  tp_as_number: 0x7f61ba90f280
+    nb_add (__add__): 0x7f61ba681300
+    nb_subtract (__sub__): 0x7f61ba680ed0
+    nb_multiply (__mul__): 0x7f61ba681740
+    nb_divide (__div__): 0x7f61ba67da80
+    nb_floor_divide (__floordiv__): == sage.structure.element.Element
+    nb_true_divide (__truediv__): == sage.structure.element.Element
+    nb_remainder (__mod__): 0x7f61ba6cf3d0
+    nb_divmod (__divmod__): == sage.structure.element.EuclideanDomainElement
+    nb_power (__pow__): 0x7f61ba6ad220
+    nb_negative (__neg__): 0x7f61ba677ca0
+    nb_positive (__pos__): 0x7f61ba673a00
+    nb_absolute (__abs__): 0x7f61ba679e70
+    nb_nonzero (__nonzero__): 0x7f61ba673a70
+    nb_invert (__invert__): 0x7f61ba695220
+    nb_lshift (__lshift__): 0x7f61ba6763b0
+    nb_rshift (__rshift__): 0x7f61ba676bf0
+    nb_and (__and__): 0x7f61ba6b1580
+    nb_or (__or__): 0x7f61ba6997b0
+    nb_xor (__xor__): 0x7f61ba69e220
+    nb_int (__int__): 0x7f61ba676000
+    nb_long (__long__): 0x7f61ba675f90
+    nb_float (__float__): 0x7f61ba676b30
+    nb_oct (__oct__): 0x7f61ba67b850
+    nb_hex (__hex__): 0x7f61ba67b640
+    nb_coerce: NULL
+    nb_inplace_add (__iadd__): NULL
+    nb_inplace_subtract (__isub__): NULL
+    nb_inplace_multiply (__imul__): NULL
+    nb_inplace_divide (__idiv__): NULL
+    nb_inplace_floor_divide (__ifloordiv__): NULL
+    nb_inplace_true_divide (__itruediv__): NULL
+    nb_inplace_remainder (__imod__): NULL
+    nb_inplace_power (__ipow__): NULL
+    nb_inplace_lshift (__ilshift__): NULL
+    nb_inplace_rshift (__irshift__): NULL
+    nb_inplace_and (__iand__): NULL
+    nb_inplace_or (__ior__): NULL
+    nb_inplace_xor (__ixor__): NULL
+    nb_index (__index__): 0x7f61ba675f20
+  tp_as_sequence: NULL
+  tp_as_mapping: NULL
+  tp_as_buffer: NULL
+  tp_flags:
+    HAVE_GETCHARBUFFER
+    HAVE_SEQUENCE_IN
+    HAVE_INPLACEOPS
+    CHECKTYPES
+    HAVE_RICHCOMPARE
+    HAVE_WEAKREFS
+    HAVE_ITER
+    HAVE_CLASS
+    BASETYPE
+    READY
+    HAVE_INDEX
+    HAVE_VERSION_TAG
+    VALID_VERSION_TAG
+    HAVE_NEWBUFFER
+  tp_version_tag: 7699
+```
jdemeyer commented 7 years ago

Commit: c0e826d

jdemeyer commented 7 years ago

New commits:

cf224b7Implement wrapperdescr_call without checking
9a4ef8cWording
ed0d88cMove various things to src/sage/cpython
c0e826dType debugger
jdemeyer commented 7 years ago

Changed dependencies from #23413 to none

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 7 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

b2441a5Type debugger
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 7 years ago

Changed commit from c0e826d to b2441a5

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 7 years ago

Changed commit from b2441a5 to e68190f

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 7 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

e68190fType debugger
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 6 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

fa27dc0Type debugger
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 6 years ago

Changed commit from e68190f to fa27dc0

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 6 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

3a06e71Type debugger
7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 6 years ago

Changed commit from fa27dc0 to 3a06e71

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 6 years ago

Changed commit from 3a06e71 to 4c65d81

7ed8c4ca-6d56-4ae9-953a-41e42b4ed313 commented 6 years ago

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

4c65d81Type debugger
jdemeyer commented 6 years ago

Description changed:

--- 
+++ 
@@ -2,8 +2,8 @@

sage: type_debug(Integer) -<type 'sage.rings.integer.Integer'> (0x7f61ba90f0c0)

tscrim commented 6 years ago

Reviewer: Travis Scrimshaw

tscrim commented 6 years ago
comment:13

LGTM.

jdemeyer commented 6 years ago
comment:14

Thanks!

vbraun commented 6 years ago

Changed branch from u/jdemeyer/type_debugger to 4c65d81

embray commented 6 years ago
comment:16

This should be re-targeted for 8.5.