diff --git a/lib/linguist/generated.rb b/lib/linguist/generated.rb index 9f2a1858..8d95a8c9 100644 --- a/lib/linguist/generated.rb +++ b/lib/linguist/generated.rb @@ -254,6 +254,9 @@ module Linguist # # Returns true or false def generated_apache_thrift? + return false unless ['.rb', '.py', '.go', '.js', '.m', '.java', '.h', '.cc', '.cpp'].include?(extname) + return false unless lines.count > 1 + return lines[0].include?("Autogenerated by Thrift Compiler") || lines[1].include?("Autogenerated by Thrift Compiler") end diff --git a/samples/Python/gen-py-thrift-linguist.py b/samples/Python/gen-py-thrift-linguist.py new file mode 100644 index 00000000..3ae25bb9 --- /dev/null +++ b/samples/Python/gen-py-thrift-linguist.py @@ -0,0 +1,83 @@ +# +# Autogenerated by Thrift Compiler (1.0.0-dev) +# +# DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING +# +# options string: py +# + +from thrift.Thrift import TType, TMessageType, TException, TApplicationException + +from thrift.transport import TTransport +from thrift.protocol import TBinaryProtocol, TProtocol +try: + from thrift.protocol import fastbinary +except: + fastbinary = None + + + +class PullRequest: + """ + Attributes: + - title + """ + + thrift_spec = ( + None, # 0 + (1, TType.STRING, 'title', None, None, ), # 1 + ) + + def __init__(self, title=None,): + self.title = title + + def read(self, iprot): + if iprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None and fastbinary is not None: + fastbinary.decode_binary(self, iprot.trans, (self.__class__, self.thrift_spec)) + return + iprot.readStructBegin() + while True: + (fname, ftype, fid) = iprot.readFieldBegin() + if ftype == TType.STOP: + break + if fid == 1: + if ftype == TType.STRING: + self.title = iprot.readString() + else: + iprot.skip(ftype) + else: + iprot.skip(ftype) + iprot.readFieldEnd() + iprot.readStructEnd() + + def write(self, oprot): + if oprot.__class__ == TBinaryProtocol.TBinaryProtocolAccelerated and self.thrift_spec is not None and fastbinary is not None: + oprot.trans.write(fastbinary.encode_binary(self, (self.__class__, self.thrift_spec))) + return + oprot.writeStructBegin('PullRequest') + if self.title is not None: + oprot.writeFieldBegin('title', TType.STRING, 1) + oprot.writeString(self.title) + oprot.writeFieldEnd() + oprot.writeFieldStop() + oprot.writeStructEnd() + + def validate(self): + return + + + def __hash__(self): + value = 17 + value = (value * 31) ^ hash(self.title) + return value + + def __repr__(self): + L = ['%s=%r' % (key, value) + for key, value in self.__dict__.iteritems()] + return '%s(%s)' % (self.__class__.__name__, ', '.join(L)) + + def __eq__(self, other): + return isinstance(other, self.__class__) and self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not (self == other) diff --git a/test/test_blob.rb b/test/test_blob.rb index 962b8647..57b61e24 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -219,6 +219,7 @@ class TestBlob < Minitest::Test assert sample_blob("Go/api.pb.go").generated? # Apache Thrift generated code + assert sample_blob("Python/gen-py-linguist-thrift.py").generated? assert sample_blob("Go/gen-go-linguist-thrift.go").generated? assert sample_blob("Java/gen-java-linguist-thrift.java").generated? assert sample_blob("JavaScript/gen-js-linguist-thrift.js").generated?