Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-4281

Got a NameError when using class defined in ttypes.py

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Critical
    • Resolution: Incomplete
    • Affects Version/s: 0.9.2
    • Fix Version/s: None
    • Component/s: Python - Compiler
    • Labels:
      None
    • Environment:

      Thrift version 0.9.2

    • Flags:
      Important

      Description

      Here the problem happens.
      See the error first:
      from ttypes import *
      File "../gen-py-ofs/ofs/ttypes.py", line 200, in <module>
      class FeatureGetParams:
      File "../gen-py-ofs/ofs/ttypes.py", line 210, in FeatureGetParams
      (2, TType.LIST, 'featureScenes', (TType.STRUCT,(FeatureScene, FeatureScene.thrift_spec)), None, ), # 2
      NameError: name 'FeatureScene' is not defined

      Class FeatureScene is defined in line 391 of ttype.py, and is used by another class GetParams in line of 200. Then I got this error.
      I have a test.
      If I moved class FeatureScene to the front of class GetParams, the error was gone.
      I googled character of language Python, it did happen in this situation that we must define it at the place before we refer to it.
      So I have a question, if it's true, why doesn't ttypes.py generate two classes in the correct order?
      It confused me for a while. Hope get your reply, thank you.

      Paste details of two classes for you reference:

      Defined in line 391:
      class FeatureScene:
      """
      Attributes:

      • featureSceneType
      • featureKeys
        """

      thrift_spec = (
      None, # 0
      (1, TType.I32, 'featureSceneType', None, None, ), # 1
      (2, TType.LIST, 'featureKeys', (TType.STRING,None), None, ), # 2
      )

      Defined in line 200:
      class GetParams:
      """
      Attributes:

      • orderId
      • featureScenes
        """

      thrift_spec = (
      None, # 0
      (1, TType.I64, 'orderId', None, None, ), # 1
      (2, TType.LIST, 'featureScenes', (TType.STRUCT,(FeatureScene, FeatureScene.thrift_spec)), None, ), # 2
      )

        Attachments

          Activity

            People

            • Assignee:
              jking3 James E. King III
              Reporter:
              jonathan0707 jonathan
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: