@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 134 lines 3.3 kB view raw
1<?php 2 3final class DiffusionPythonExternalSymbolsSource 4 extends DiffusionExternalSymbolsSource { 5 6 public function executeQuery(DiffusionExternalSymbolQuery $query) { 7 $symbols = array(); 8 if (!$query->matchesAnyLanguage(array('py', 'python'))) { 9 return $symbols; 10 } 11 12 if (!$query->matchesAnyType(array('builtin', 'function'))) { 13 return $symbols; 14 } 15 16 $names = $query->getNames(); 17 18 foreach ($names as $name) { 19 if (idx(self::$python2Builtins, $name)) { 20 $symbols[] = $this->buildExternalSymbol() 21 ->setSymbolName($name) 22 ->setSymbolType('function') 23 ->setSource(pht('Standard Library')) 24 ->setLocation(pht('The Python 2 Standard Library')) 25 ->setSymbolLanguage('py') 26 ->setExternalURI( 27 'https://docs.python.org/2/library/functions.html#'.$name); 28 } 29 if (idx(self::$python3Builtins, $name)) { 30 $symbols[] = $this->buildExternalSymbol() 31 ->setSymbolName($name) 32 ->setSymbolType('function') 33 ->setSource(pht('Standard Library')) 34 ->setLocation(pht('The Python 3 Standard Library')) 35 ->setSymbolLanguage('py') 36 ->setExternalURI( 37 'https://docs.python.org/3/library/functions.html#'.$name); 38 } 39 } 40 return $symbols; 41 } 42 43 private static $python2Builtins = array( 44 '__import__' => true, 45 'abs' => true, 46 'all' => true, 47 'any' => true, 48 'basestring' => true, 49 'bin' => true, 50 'bool' => true, 51 'bytearray' => true, 52 'callable' => true, 53 'chr' => true, 54 'classmethod' => true, 55 'cmp' => true, 56 'compile' => true, 57 'complex' => true, 58 'delattr' => true, 59 'dict' => true, 60 'dir' => true, 61 'divmod' => true, 62 'enumerate' => true, 63 'eval' => true, 64 'execfile' => true, 65 'file' => true, 66 'filter' => true, 67 'float' => true, 68 'format' => true, 69 'frozenset' => true, 70 'getattr' => true, 71 'globals' => true, 72 'hasattr' => true, 73 'hash' => true, 74 'help' => true, 75 'hex' => true, 76 'id' => true, 77 'input' => true, 78 'int' => true, 79 'isinstance' => true, 80 'issubclass' => true, 81 'iter' => true, 82 'len' => true, 83 'list' => true, 84 'locals' => true, 85 'long' => true, 86 'map' => true, 87 'max' => true, 88 'memoryview' => true, 89 'min' => true, 90 'next' => true, 91 'object' => true, 92 'oct' => true, 93 'open' => true, 94 'ord' => true, 95 'pow' => true, 96 'print' => true, 97 'property' => true, 98 'range' => true, 99 'raw_input' => true, 100 'reduce' => true, 101 'reload' => true, 102 'repr' => true, 103 'reversed' => true, 104 'round' => true, 105 'set' => true, 106 'setattr' => true, 107 'slice' => true, 108 'sorted' => true, 109 'staticmethod' => true, 110 'str' => true, 111 'sum' => true, 112 'super' => true, 113 'tuple' => true, 114 'type' => true, 115 'unichr' => true, 116 'unicode' => true, 117 'vars' => true, 118 'xrange' => true, 119 'zip' => true, 120 ); 121 122 // This list only contains functions that are new or changed between the 123 // Python versions. 124 private static $python3Builtins = array( 125 'ascii' => true, 126 'bytes' => true, 127 'filter' => true, 128 'map' => true, 129 'next' => true, 130 'range' => true, 131 'super' => true, 132 'zip' => true, 133 ); 134}