Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 8 additions & 10 deletions python-frontend/src/main/java/org/sonar/python/types/TypeShed.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@
import static org.sonar.plugins.python.api.types.BuiltinTypes.NONE_TYPE;
import static org.sonar.plugins.python.api.types.BuiltinTypes.STR;
import static org.sonar.plugins.python.api.types.BuiltinTypes.TUPLE;
import static org.sonar.python.types.TypeShedThirdParties.commonSymbols;
import static org.sonar.python.types.TypeShedThirdParties.getModuleSymbols;

public class TypeShed {
Expand All @@ -73,6 +72,7 @@ public class TypeShed {
private static final String THIRD_PARTY_3 = "typeshed/third_party/3/";
private static final String CUSTOM_THIRD_PARTY = "custom/";
private static final String PROTOBUF = "protobuf/";
private static final String PROTOBUF_THIRD_PARTY = "protobuf/stubs/";
Comment on lines 74 to +75
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently we have stdlib under protobuf and third parties under protobuf/stubs. All of this is under types which currently holds Typeshed as well.
What about going for a protobuf_stdlib, protobuf_thid_parties and protobuf_custom all at the same level, for better clarity?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

works for me! if that's fine I will let you also do that in your PR or I can do it in another separate PR

private static final String BUILTINS_FQN = "builtins";
private static final String BUILTINS_PREFIX = BUILTINS_FQN + ".";
// Those fundamentals builtins symbols need not to be ambiguous for the frontend to work properly
Expand All @@ -96,7 +96,7 @@ private TypeShed() {
public static Map<String, Symbol> builtinSymbols() {
if ((TypeShed.builtins == null)) {
supportedPythonVersions = ProjectPythonVersion.currentVersions().stream().map(PythonVersionUtils.Version::serializedValue).collect(Collectors.toSet());
Map<String, Symbol> builtins = getSymbolsFromProtobufModule(BUILTINS_FQN);
Map<String, Symbol> builtins = getSymbolsFromProtobufModule(BUILTINS_FQN, false);
builtins.put(NONE_TYPE, new ClassSymbolImpl(NONE_TYPE, NONE_TYPE));
TypeShed.builtins = Collections.unmodifiableMap(builtins);
TypeShed.builtinGlobalSymbols.put("", new HashSet<>(builtins.values()));
Expand Down Expand Up @@ -271,16 +271,13 @@ private static Map<String, Symbol> searchTypeShedForModule(String moduleName) {
modulesInProgress.remove(moduleName);
return customSymbols;
}
Map<String, Symbol> symbolsFromProtobuf = getSymbolsFromProtobufModule(moduleName);
Map<String, Symbol> symbolsFromProtobuf = getSymbolsFromProtobufModule(moduleName, false);
if (!symbolsFromProtobuf.isEmpty()) {
modulesInProgress.remove(moduleName);
return symbolsFromProtobuf;
}
Map<String, Symbol> thirdPartySymbols = getModuleSymbols(moduleName, THIRD_PARTY_2AND3, builtinGlobalSymbols);
if (thirdPartySymbols.isEmpty()) {
thirdPartySymbols = commonSymbols(getModuleSymbols(moduleName, THIRD_PARTY_2, builtinGlobalSymbols),
getModuleSymbols(moduleName, THIRD_PARTY_3, builtinGlobalSymbols), moduleName);
}

Map<String, Symbol> thirdPartySymbols = getSymbolsFromProtobufModule(moduleName, true);
modulesInProgress.remove(moduleName);
return thirdPartySymbols;
}
Expand Down Expand Up @@ -311,8 +308,9 @@ private static boolean isAmbiguousSymbolOfClasses(Symbol symbol) {
return false;
}

private static Map<String, Symbol> getSymbolsFromProtobufModule(String moduleName) {
InputStream resource = TypeShed.class.getResourceAsStream(PROTOBUF + moduleName + ".protobuf");
private static Map<String, Symbol> getSymbolsFromProtobufModule(String moduleName, boolean isThirdParty) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of a boolean, what about passing the directory name directly (so that this generalizes more easily with custom stubs) ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed, I will let you do that in your PR :)

String protobufDir = isThirdParty ? PROTOBUF_THIRD_PARTY : PROTOBUF;
InputStream resource = TypeShed.class.getResourceAsStream(protobufDir + moduleName + ".protobuf");
if (resource == null) {
return Collections.emptyMap();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

_collections_abc�
AbstractSettyping.AbstractSet"typing.Collection*�
_collections_abc�
Settyping.AbstractSet"typing.Collection*�
__contains__typing.AbstractSet.__contains__"
builtins.bool"builtins.bool*P
selfH
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

asyncio.futuresT
Errorconcurrent.futures._base.Error"builtins.Exceptionj35j36j37j38j39j310�
Futureconcurrent.futures._base.Future"builtins.object*�
Errorconcurrent.futures._base.Error"builtins.Exceptionj35j36j37j38j39j310�
_ConcurrentFutureconcurrent.futures._base.Future"builtins.object*�
__init__(concurrent.futures._base.Future.__init__"
None*�
self�
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
_typeshed._KT_contra
_typeshed._VT"_typeshed.SupportsItemAccess*
__v
_typeshed._KT_contraz27z35z36z37z38z39z310PXj27j35j36j37j38j39j310�)
typebuiltins.type"builtins.object*�
_typeshed._KT_contraz27z35z36z37z38z39z310PXj27j35j36j37j38j39j310�)
_typebuiltins.type"builtins.object*�
__call__builtins.type.__call__"
Any*(
self
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

collections.abc�
AbstractSettyping.AbstractSet"typing.Collection*�
collections.abc�
Settyping.AbstractSet"typing.Collection*�
__contains__typing.AbstractSet.__contains__"
builtins.bool"builtins.bool*P
selfH
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ isdisjointtyping.AbstractSet.isdisjoint"
builtins.int" builtins.int*P
selfH
typing.AbstractSet[typing._T_co]
typing._T_co"typing.AbstractSet0:abstractmethod@z27Pj27�
AbstractSettyping.AbstractSet"typing.Collection*�
typing._T_co"typing.AbstractSet0:abstractmethod@z27Pj27�
Settyping.AbstractSet"typing.Collection*�
__contains__typing.AbstractSet.__contains__"
builtins.bool"builtins.bool*P
selfH
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -770,8 +770,8 @@ has_headercsv.Sniffer.has_header"
builtins.str" builtins.strz27z35z36z37z38z39z310j27j35j36j37j38j39j310r�
preferredcsv.Sniffer.preferredJ
builtins.list[builtins.str]
builtins.str" builtins.str"builtins.list*27*35*36*37*38*39*310�
OrderedDictcollections.OrderedDict"builtins.dict"typing.Reversible*�
builtins.str" builtins.str"builtins.list*27*35*36*37*38*39*310�
_DictReadMappingcollections.OrderedDict"builtins.dict"typing.Reversible*�
popitemcollections.OrderedDict.popitem"T
&Tuple[collections._KT,collections._VT]
collections._KT
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1824,8 +1824,8 @@ typing.Any"
Tuple typing.Tuple*
typing._SpecialForm"typing._SpecialForm*27*35*36*37*38*39*310*\
Type typing.Type*
typing._SpecialForm"typing._SpecialForm*27*35*36*37*38*39*310*^
Union typing.Union*
typing._SpecialForm"typing._SpecialForm*27*35*36*37*38*39*310*`
_UnionT typing.Union*
typing._SpecialForm"typing._SpecialForm*27*35*36*37*38*39*310*\
RTLD_GLOBALctypes.RTLD_GLOBAL
builtins.int" builtins.int*27*35*36*37*38*39*310*Z
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

email.headerregistry�Z
datetimedatetime.datetime"datetime.date*�
email.headerregistry�Z
_datetimedatetime.datetime"datetime.date*�
__new__datetime.datetime.__new__"
datetime._S*/
cls&
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

email.utils�
AddressListemail._parseaddr.AddressList"email._parseaddr.AddrlistClass*J
email.utils�
_AddressListemail._parseaddr.AddressList"email._parseaddr.AddrlistClass*J
__init__%email._parseaddr.AddressList.__init__*
self*
fieldz27*=
Expand Down Expand Up @@ -98,12 +98,13 @@ maxlengthsN
builtins.str" builtins.str
None*35*36*37*38*39*3105
mktime_tzemail._parseaddr.mktime_tz*
dataz275
parsedateemail._parseaddr.parsedate*
dataz27;
parsedate_tzemail._parseaddr.parsedate_tz*
dataz27�
decodestringquopri.decodestring"
dataz276

_parsedateemail._parseaddr.parsedate*
dataz27<
_parsedate_tzemail._parseaddr.parsedate_tz*
dataz27�
_qdecodequopri.decodestring"
builtins.str" builtins.str*#
s
builtins.str" builtins.str**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@
abc._Tz35z36z37z38z39z310j35j36j37j38j39j310r�
__abstractmethods__abc.ABCMeta.__abstractmethods__T
builtins.frozenset[builtins.str]
builtins.str" builtins.str"builtins.frozenset*35*36*37*38*39*310�
propertybuiltins.property"builtins.object*�
builtins.str" builtins.str"builtins.frozenset*35*36*37*38*39*310�
_builtins_propertybuiltins.property"builtins.object*�
__init__builtins.property.__init__"
None*0
self&
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

imaplib�6
socketsocket.socket"builtins.object*�
imaplib�6
_socketsocket.socket"builtins.object*�
__init__socket.socket.__init__"
None*(
self
Expand Down Expand Up @@ -254,8 +254,8 @@ getsockoptsocket.socket.getsockopt"
typesocket.socket.type
builtins.int" builtins.int*27r>
protosocket.socket.proto
builtins.int" builtins.int*27�"
socketsocket.socket"_socket.socket*�
builtins.int" builtins.int*27�"
_socketsocket.socket"_socket.socket*�
__init__socket.socket.__init__"
None*(
self
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1466,8 +1466,8 @@ typing._KT*Q
defaultD
Union[typing._VT_co,typing._T]
typing._VT_co
typing._T0:overloadX"35"36"37"38"39"310Pj35j36j37j38j39j310�
AbstractSettyping.AbstractSet"typing.Collection*�
typing._T0:overloadX"35"36"37"38"39"310Pj35j36j37j38j39j310�
Settyping.AbstractSet"typing.Collection*�
__contains__typing.AbstractSet.__contains__"
builtins.bool"builtins.bool*P
selfH
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

locale�j
str builtins.str"typing.Sequence"builtins.basestring*�
locale�j
_str builtins.str"typing.Sequence"builtins.basestring*�
__init__builtins.str.__init__"
None*&
self
Expand Down Expand Up @@ -526,8 +526,8 @@ rpartitionbuiltins.str.rpartition"
self
builtins.str" builtins.str*/
chars$
builtins.unicode"builtins.unicode0:overloadX"27j27�}
str builtins.str"typing.Sequence*�
builtins.unicode"builtins.unicode0:overloadX"27j27�}
_str builtins.str"typing.Sequence*�

capitalizebuiltins.str.capitalize"
builtins.str" builtins.str*&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,9 @@
self*
authkey0:authkey.setter"27j27r7
pid#multiprocessing.process.Process.pid
Any*27�
Queue Queue.Queue"builtins.object*�
Any*27�

_BaseQueue Queue.Queue"builtins.object*�
__init__Queue.Queue.__init__"
None*<
self2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1171,8 +1171,8 @@ WUnion[builtins.bytes,builtins.bytearray,builtins.memoryview,array.array[Any],mm
nameio.FileIO.name`
Union[builtins.int,builtins.str]
builtins.int" builtins.int
builtins.str" builtins.str*35*36*37*38*39*310�
TextIOWrapperio.TextIOWrapper"io.TextIOBase"typing.TextIO*�
builtins.str" builtins.str*35*36*37*38*39*310�
_TextIOWrapperio.TextIOWrapper"io.TextIOBase"typing.TextIO*�
__init__io.TextIOWrapper.__init__"
None*.
self$
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

pstats�%
ProfilecProfile.Profile"builtins.object*�
pstats�%
_cProfilecProfile.Profile"builtins.object*�
__init__cProfile.Profile.__init__"
None*.
self$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -666,8 +666,8 @@ EUnion[typing.Sequence[Union[builtins.float,fractions.Fraction]],None]
typing._T_co"typing.Iterator*J
selfB
typing.Iterable[typing._T_co]
typing._T_co"typing.Iterable0:abstractmethod@z35z36z37z38z39z3108PXj35j36j37j38j39j310�
AbstractSettyping.AbstractSet"typing.Collection*�
typing._T_co"typing.Iterable0:abstractmethod@z35z36z37z38z39z3108PXj35j36j37j38j39j310�
Settyping.AbstractSet"typing.Collection*�
__contains__typing.AbstractSet.__contains__"
builtins.bool"builtins.bool*P
selfH
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -787,8 +787,8 @@ ITuple[Union[builtins.bytearray,builtins.bytes,builtins.str],builtins.int]
ehlo_msgsmtplib.LMTP.ehlo_msg
Any*27r&
socksmtplib.LMTP.sock
Any*27�e
Messageemail.message.Message"builtins.object*�
Any*27�e
_Messageemail.message.Message"builtins.object*�
__str__email.message.Message.__str__"
builtins.str" builtins.str*6
self.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@

socketserver�"
socketsocket.socket"_socket.socket*�
socketserver�"
_socketsocket.socket"_socket.socket*�
__init__socket.socket.__init__"
None*(
self
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,8 +248,8 @@ $Union[builtins.str,builtins.unicode]
lastgrouptyping.Match.lastgroup:
Union[typing.AnyStr,None]
typing.AnyStr
None*35*36*37*38*39*310�9
Patterntyping.Pattern"builtins.object*�
None*35*36*37*38*39*310�9
_Patterntyping.Pattern"builtins.object*�
searchtyping.Pattern.search"{
)Union[typing.Match[typing._AnyStr2],None]B
typing.Match[typing._AnyStr2]
Expand Down Expand Up @@ -1176,8 +1176,8 @@ terminator
nextsre_parse.Tokenizer.nextD
Union[builtins.str,None]
builtins.str" builtins.str
None*35*36*37*38*39*310�
_NamedIntConstantsre_constants._NamedIntConstant" builtins.int*�
None*35*36*37*38*39*310�
_NICsre_constants._NamedIntConstant" builtins.int*�
__new__'sre_constants._NamedIntConstant.__new__"B
sre_constants._NamedIntConstant"sre_constants._NamedIntConstant*v
clsm
Expand All @@ -1188,8 +1188,8 @@ terminator
name
builtins.str" builtins.strz35z36z37z38z39z310j35j36j37j38j39j310rN
name$sre_constants._NamedIntConstant.name
Any*35*36*37*38*39*310�
errorsre_constants.error"builtins.Exception*�
Any*35*36*37*38*39*310�
_Errorsre_constants.error"builtins.Exception*�
__init__sre_constants.error.__init__"
None*4
self*
Expand Down
Loading