[ 
https://issues.apache.org/jira/browse/THRIFT-3783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230866#comment-15230866
 ] 

ASF GitHub Bot commented on THRIFT-3783:
----------------------------------------

Github user Jens-G commented on a diff in the pull request:

    https://github.com/apache/thrift/pull/982#discussion_r58929004
  
    --- Diff: compiler/cpp/src/generate/t_py_generator.cc ---
    @@ -384,6 +406,55 @@ void t_py_generator::init_generator() {
         py_autogen_comment() << endl <<
         py_imports() << endl <<
         "from .ttypes import *" << endl;
    +
    +  construct_object_dependent_graph();
    +}
    +
    +/**
    + * Construct object dependent graph to determine object generate order
    + * if cycle dependent is detected, generate process will be aborted
    + * object dependent example
    --- End diff --
    
    But your test case is perfectly valid Thrift IDL:
    ```
    struct A {
      1: B b;
    }
    
    struct B {
      1: A a;
    }
    ```
    
    One can do this with Thrift. Is there no way to support that in Python? 
Something like forward-declaration of types maybe?


> python code generator dose not handle struct dependent
> ------------------------------------------------------
>
>                 Key: THRIFT-3783
>                 URL: https://issues.apache.org/jira/browse/THRIFT-3783
>             Project: Thrift
>          Issue Type: Bug
>          Components: Python - Compiler
>            Reporter: Huabin
>            Priority: Minor
>
> given thrift idl
> {code}
> struct A {
> 1: B b,
> }
> struct B {
> 1: i32 b,
> }
> {code}
> generated ttypes.py
> {code}
> 20   class A:
>  21   """
>  22   Attributes:
>  23    - b
>  24   """
>  25  
>  26   thrift_spec = (
>  27     None, # 0
>  28     (1, TType.STRUCT, 'b', (B, B.thrift_spec), None, ), # 1
>  29   )
>  30  
> {code}
> import A will cause error since it referenced B, which has not be defined.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to