[
https://issues.apache.org/jira/browse/THRIFT-4281?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
jonathan updated THRIFT-4281:
-----------------------------
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
*{color:red}NameError: name 'FeatureScene' is not defined{color}*
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 reference 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.
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
)
was:
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
*{color:red}NameError: name 'FeatureScene' is not defined{color}*
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 move class FeatureScene to the front of class FeatureGetParams, the error
is gone.
I googled character of language Python, it did happen in this situation that we
must define it at the place before we reference 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.
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
)
> Got a NameError when using class defined in ttypes.py
> -----------------------------------------------------
>
> Key: THRIFT-4281
> URL: https://issues.apache.org/jira/browse/THRIFT-4281
> Project: Thrift
> Issue Type: Bug
> Components: Python - Compiler
> Affects Versions: 0.9.2
> Environment: Thrift version 0.9.2
> Reporter: jonathan
>
> 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
> *{color:red}NameError: name 'FeatureScene' is not defined{color}*
> 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 reference 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.
> 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
> )
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)