Lichen

lib/types.py

90:c7ddfc4525da
2016-10-08 Paul Boddie Added some support for eliminating accessor class types where the provided attributes are invoked and are unbound methods. This uses a more sophisticated method involving usage observations that incorporate invocation information, permitting classes as accessors if paths through the code support them, even if other paths require instances as accessors to invoke methods.
     1 #!/usr/bin/env python     2      3 """     4 Type objects.     5      6 Copyright (C) 2012, 2015 Paul Boddie <paul@boddie.org.uk>     7      8 This program is free software; you can redistribute it and/or modify it under     9 the terms of the GNU General Public License as published by the Free Software    10 Foundation; either version 3 of the License, or (at your option) any later    11 version.    12     13 This program is distributed in the hope that it will be useful, but WITHOUT    14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    15 FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more    16 details.    17     18 You should have received a copy of the GNU General Public License along with    19 this program.  If not, see <http://www.gnu.org/licenses/>.    20 """    21     22 # Built-in type duplication.    23     24 type = type    25 NoneType = NoneType    26 NotImplementedType = NotImplementedType    27     28 # Synonyms for built-in types.    29     30 BooleanType = bool    31 BufferType = buffer    32 BuiltinFunctionType = function    33 BuiltinMethodType = function    34 ComplexType = complex    35 DictType = dict    36 EllipsisType = ellipsis    37 FileType = file    38 FloatType = float    39 FunctionType = function    40 IntType = int    41 LambdaType = function    42 ListType = list    43 LongType = long    44 MethodType = function    45 ObjectType = object    46 SliceType = slice    47 StringType = str    48 TupleType = tuple    49 UnboundMethodType = function    50 UnicodeType = unicode    51 XRangeType = xrange    52     53 StringTypes = (StringType, UnicodeType)    54     55 # Types without special definitions.    56     57 ClassType = object    58 GeneratorType = object    59 InstanceType = object    60 ModuleType = object    61 TracebackType = object    62     63 # Implementation-specific definitions not relevant to micropython.    64     65 DictProxyType = object    66 FrameType = object    67 GetSetDescriptorType = object    68 MemberDescriptorType = object    69     70 # vim: tabstop=4 expandtab shiftwidth=4