mirror of
https://github.com/ocogeclub/ocoge.git
synced 2024-11-21 23:29:48 +00:00
1 line
122 KiB
Plaintext
1 line
122 KiB
Plaintext
{"version":3,"sources":["generators/python.js","generators/python/variables.js","generators/python/variables_dynamic.js","generators/python/text.js","generators/python/procedures.js","generators/python/math.js","generators/python/loops.js","generators/python/logic.js","generators/python/lists.js","generators/python/colour.js","generators/python/all.js"],"names":["stringUtils","Variables","Generator","inputTypes","Names","NameType","Python","addReservedWords","ORDER_ATOMIC","ORDER_COLLECTION","ORDER_STRING_CONVERSION","ORDER_MEMBER","ORDER_FUNCTION_CALL","ORDER_EXPONENTIATION","ORDER_UNARY_SIGN","ORDER_BITWISE_NOT","ORDER_MULTIPLICATIVE","ORDER_ADDITIVE","ORDER_BITWISE_SHIFT","ORDER_BITWISE_AND","ORDER_BITWISE_XOR","ORDER_BITWISE_OR","ORDER_RELATIONAL","ORDER_LOGICAL_NOT","ORDER_LOGICAL_AND","ORDER_LOGICAL_OR","ORDER_CONDITIONAL","ORDER_LAMBDA","ORDER_NONE","ORDER_OVERRIDES","isInitialized","init","Python.init","workspace","Object","getPrototypeOf","call","PASS","INDENT","nameDB_","reset","RESERVED_WORDS_","setVariableMap","getVariableMap","populateVariables","populateProcedures","defvars","devVarList","allDeveloperVariables","i","length","push","getName","DEVELOPER_VARIABLE_TYPE","variables","allUsedVarModels","getId","VARIABLE","definitions_","join","finish","Python.finish","code","imports","definitions","name","def","match","replace","scrubNakedValue","Python.scrubNakedValue","line","quote_","Python.quote_","string","quote","indexOf","multiline_quote_","Python.multiline_quote_","split","map","lines","scrub_","Python.scrub_","block","opt_thisOnly","commentCode","outputConnection","targetConnection","comment","getCommentText","wrap","COMMENT_WRAP","prefixLines","inputList","type","VALUE","childBlock","connection","targetBlock","allNestedComments","nextBlock","nextConnection","nextCode","blockToCode","getAdjustedInt","Python.getAdjustedInt","atId","opt_delta","opt_negate","delta","options","oneBasedIndex","defaultAtIndex","at","valueToCode","atOrder","isNumber","parseInt","getFieldValue","argument0","varName","order","strRegExp","forceString","value","test","itemCount_","element","codeAndOrder","element0","element1","elements","tempVar","getDistinctName","operator","substring","where","text","textOrder","provideFunction_","functionName","FUNCTION_NAME_PLACEHOLDER_","Error","where1","where2","at1","at2","String","OPERATORS","msg","getField","sub","from","to","globals","usedVariables","variable","getVars","DEVELOPER_VARIABLE","globalString","funcName","PROCEDURE","xfix1","STATEMENT_PREFIX","injectId","STATEMENT_SUFFIX","loopTrap","INFINITE_LOOP_TRAP","branch","statementToCode","returnValue","xfix2","args","tuple","hasReturnValue_","Number","Infinity","argument1","arg","CONSTANTS","constant","PROPERTIES","dropdownProperty","suffix","inputOrder","outputOrder","numberToCheck","divisor","func","list","argument2","repeats","addLoopTrap","loopVar","until","variable0","increment","defineUpRange","defineDownRange","generateUpDownRange","start","end","inc","Math","abs","range","scrub","startVar","endVar","incVar","xfix","loop","getSurroundLoop","suppressPrefixSuffix","n","branchCode","conditionCode","getInput","defaultArgument","value_if","value_then","value_else","Array","item","times","errorIndex","firstIndexAdjustment","lastIndexAdjustment","mode","listOrder","listVar","xVar","reverse","sortFunctionName","value_input","value_delim","r","g","b","colour1","colour2","ratio","exports","moduleExports"],"mappings":"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","file":"python_compressed.js","sourcesContent":["/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Helper functions for generating Python for blocks.\n * @suppress {checkTypes|globalThis}\n */\n'use strict';\n\ngoog.module('Blockly.Python');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst Variables = goog.require('Blockly.Variables');\nconst {Block} = goog.requireType('Blockly.Block');\nconst {Generator} = goog.require('Blockly.Generator');\nconst {inputTypes} = goog.require('Blockly.inputTypes');\nconst {Names, NameType} = goog.require('Blockly.Names');\nconst {Workspace} = goog.requireType('Blockly.Workspace');\n\n\n/**\n * Python code generator.\n * @type {!Generator}\n */\nconst Python = new Generator('Python');\n\n/**\n * List of illegal variable names.\n * This is not intended to be a security feature. Blockly is 100% client-side,\n * so bypassing this list is trivial. This is intended to prevent users from\n * accidentally clobbering a built-in object or function.\n */\nPython.addReservedWords(\n // import keyword\n // print(','.join(sorted(keyword.kwlist)))\n // https://docs.python.org/3/reference/lexical_analysis.html#keywords\n // https://docs.python.org/2/reference/lexical_analysis.html#keywords\n 'False,None,True,and,as,assert,break,class,continue,def,del,elif,else,' +\n 'except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,' +\n 'or,pass,print,raise,return,try,while,with,yield,' +\n // https://docs.python.org/3/library/constants.html\n // https://docs.python.org/2/library/constants.html\n 'NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,' +\n // >>> print(','.join(sorted(dir(__builtins__))))\n // https://docs.python.org/3/library/functions.html\n // https://docs.python.org/2/library/functions.html\n 'ArithmeticError,AssertionError,AttributeError,BaseException,' +\n 'BlockingIOError,BrokenPipeError,BufferError,BytesWarning,' +\n 'ChildProcessError,ConnectionAbortedError,ConnectionError,' +\n 'ConnectionRefusedError,ConnectionResetError,DeprecationWarning,EOFError,' +\n 'Ellipsis,EnvironmentError,Exception,FileExistsError,FileNotFoundError,' +\n 'FloatingPointError,FutureWarning,GeneratorExit,IOError,ImportError,' +\n 'ImportWarning,IndentationError,IndexError,InterruptedError,' +\n 'IsADirectoryError,KeyError,KeyboardInterrupt,LookupError,MemoryError,' +\n 'ModuleNotFoundError,NameError,NotADirectoryError,NotImplemented,' +\n 'NotImplementedError,OSError,OverflowError,PendingDeprecationWarning,' +\n 'PermissionError,ProcessLookupError,RecursionError,ReferenceError,' +\n 'ResourceWarning,RuntimeError,RuntimeWarning,StandardError,' +\n 'StopAsyncIteration,StopIteration,SyntaxError,SyntaxWarning,SystemError,' +\n 'SystemExit,TabError,TimeoutError,TypeError,UnboundLocalError,' +\n 'UnicodeDecodeError,UnicodeEncodeError,UnicodeError,' +\n 'UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,' +\n 'ZeroDivisionError,_,__build_class__,__debug__,__doc__,__import__,' +\n '__loader__,__name__,__package__,__spec__,abs,all,any,apply,ascii,' +\n 'basestring,bin,bool,buffer,bytearray,bytes,callable,chr,classmethod,cmp,' +\n 'coerce,compile,complex,copyright,credits,delattr,dict,dir,divmod,' +\n 'enumerate,eval,exec,execfile,exit,file,filter,float,format,frozenset,' +\n 'getattr,globals,hasattr,hash,help,hex,id,input,int,intern,isinstance,' +\n 'issubclass,iter,len,license,list,locals,long,map,max,memoryview,min,' +\n 'next,object,oct,open,ord,pow,print,property,quit,range,raw_input,reduce,' +\n 'reload,repr,reversed,round,set,setattr,slice,sorted,staticmethod,str,' +\n 'sum,super,tuple,type,unichr,unicode,vars,xrange,zip');\n\n/**\n * Order of operation ENUMs.\n * http://docs.python.org/reference/expressions.html#summary\n */\nPython.ORDER_ATOMIC = 0; // 0 \"\" ...\nPython.ORDER_COLLECTION = 1; // tuples, lists, dictionaries\nPython.ORDER_STRING_CONVERSION = 1; // `expression...`\nPython.ORDER_MEMBER = 2.1; // . []\nPython.ORDER_FUNCTION_CALL = 2.2; // ()\nPython.ORDER_EXPONENTIATION = 3; // **\nPython.ORDER_UNARY_SIGN = 4; // + -\nPython.ORDER_BITWISE_NOT = 4; // ~\nPython.ORDER_MULTIPLICATIVE = 5; // * / // %\nPython.ORDER_ADDITIVE = 6; // + -\nPython.ORDER_BITWISE_SHIFT = 7; // << >>\nPython.ORDER_BITWISE_AND = 8; // &\nPython.ORDER_BITWISE_XOR = 9; // ^\nPython.ORDER_BITWISE_OR = 10; // |\nPython.ORDER_RELATIONAL = 11; // in, not in, is, is not,\n // <, <=, >, >=, <>, !=, ==\nPython.ORDER_LOGICAL_NOT = 12; // not\nPython.ORDER_LOGICAL_AND = 13; // and\nPython.ORDER_LOGICAL_OR = 14; // or\nPython.ORDER_CONDITIONAL = 15; // if else\nPython.ORDER_LAMBDA = 16; // lambda\nPython.ORDER_NONE = 99; // (...)\n\n/**\n * List of outer-inner pairings that do NOT require parentheses.\n * @type {!Array<!Array<number>>}\n */\nPython.ORDER_OVERRIDES = [\n // (foo()).bar -> foo().bar\n // (foo())[0] -> foo()[0]\n [Python.ORDER_FUNCTION_CALL, Python.ORDER_MEMBER],\n // (foo())() -> foo()()\n [Python.ORDER_FUNCTION_CALL, Python.ORDER_FUNCTION_CALL],\n // (foo.bar).baz -> foo.bar.baz\n // (foo.bar)[0] -> foo.bar[0]\n // (foo[0]).bar -> foo[0].bar\n // (foo[0])[1] -> foo[0][1]\n [Python.ORDER_MEMBER, Python.ORDER_MEMBER],\n // (foo.bar)() -> foo.bar()\n // (foo[0])() -> foo[0]()\n [Python.ORDER_MEMBER, Python.ORDER_FUNCTION_CALL],\n\n // not (not foo) -> not not foo\n [Python.ORDER_LOGICAL_NOT, Python.ORDER_LOGICAL_NOT],\n // a and (b and c) -> a and b and c\n [Python.ORDER_LOGICAL_AND, Python.ORDER_LOGICAL_AND],\n // a or (b or c) -> a or b or c\n [Python.ORDER_LOGICAL_OR, Python.ORDER_LOGICAL_OR]\n];\n\n/**\n * Whether the init method has been called.\n * @type {?boolean}\n */\nPython.isInitialized = false;\n\n/**\n * Initialise the database of variable names.\n * @param {!Workspace} workspace Workspace to generate code from.\n * @this {Generator}\n */\nPython.init = function(workspace) {\n // Call Blockly.Generator's init.\n Object.getPrototypeOf(this).init.call(this);\n\n /**\n * Empty loops or conditionals are not allowed in Python.\n */\n this.PASS = this.INDENT + 'pass\\n';\n\n if (!this.nameDB_) {\n this.nameDB_ = new Names(this.RESERVED_WORDS_);\n } else {\n this.nameDB_.reset();\n }\n\n this.nameDB_.setVariableMap(workspace.getVariableMap());\n this.nameDB_.populateVariables(workspace);\n this.nameDB_.populateProcedures(workspace);\n\n const defvars = [];\n // Add developer variables (not created or named by the user).\n const devVarList = Variables.allDeveloperVariables(workspace);\n for (let i = 0; i < devVarList.length; i++) {\n defvars.push(\n this.nameDB_.getName(devVarList[i], Names.DEVELOPER_VARIABLE_TYPE) +\n ' = None');\n }\n\n // Add user variables, but only ones that are being used.\n const variables = Variables.allUsedVarModels(workspace);\n for (let i = 0; i < variables.length; i++) {\n defvars.push(\n this.nameDB_.getName(variables[i].getId(), NameType.VARIABLE) +\n ' = None');\n }\n\n this.definitions_['variables'] = defvars.join('\\n');\n this.isInitialized = true;\n};\n\n/**\n * Prepend the generated code with import statements and variable definitions.\n * @param {string} code Generated code.\n * @return {string} Completed code.\n */\nPython.finish = function(code) {\n // Convert the definitions dictionary into a list.\n const imports = [];\n const definitions = [];\n for (let name in this.definitions_) {\n const def = this.definitions_[name];\n if (def.match(/^(from\\s+\\S+\\s+)?import\\s+\\S+/)) {\n imports.push(def);\n } else {\n definitions.push(def);\n }\n }\n // Call Blockly.Generator's finish.\n code = Object.getPrototypeOf(this).finish.call(this, code);\n this.isInitialized = false;\n\n this.nameDB_.reset();\n const allDefs = imports.join('\\n') + '\\n\\n' + definitions.join('\\n\\n');\n return allDefs.replace(/\\n\\n+/g, '\\n\\n').replace(/\\n*$/, '\\n\\n\\n') + code;\n};\n\n/**\n * Naked values are top-level blocks with outputs that aren't plugged into\n * anything.\n * @param {string} line Line of generated code.\n * @return {string} Legal line of code.\n */\nPython.scrubNakedValue = function(line) {\n return line + '\\n';\n};\n\n/**\n * Encode a string as a properly escaped Python string, complete with quotes.\n * @param {string} string Text to encode.\n * @return {string} Python string.\n * @protected\n */\nPython.quote_ = function(string) {\n // Can't use goog.string.quote since % must also be escaped.\n string = string.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\\\n');\n\n // Follow the CPython behaviour of repr() for a non-byte string.\n let quote = '\\'';\n if (string.indexOf('\\'') !== -1) {\n if (string.indexOf('\"') === -1) {\n quote = '\"';\n } else {\n string = string.replace(/'/g, '\\\\\\'');\n }\n }\n return quote + string + quote;\n};\n\n/**\n * Encode a string as a properly escaped multiline Python string, complete\n * with quotes.\n * @param {string} string Text to encode.\n * @return {string} Python string.\n * @protected\n */\nPython.multiline_quote_ = function(string) {\n const lines = string.split(/\\n/g).map(this.quote_);\n // Join with the following, plus a newline:\n // + '\\n' +\n return lines.join(' + \\'\\\\n\\' + \\n');\n};\n\n/**\n * Common tasks for generating Python from blocks.\n * Handles comments for the specified block and any connected value blocks.\n * Calls any statements following this block.\n * @param {!Block} block The current block.\n * @param {string} code The Python code created for this block.\n * @param {boolean=} opt_thisOnly True to generate code for only this statement.\n * @return {string} Python code with comments and subsequent blocks added.\n * @protected\n */\nPython.scrub_ = function(block, code, opt_thisOnly) {\n let commentCode = '';\n // Only collect comments for blocks that aren't inline.\n if (!block.outputConnection || !block.outputConnection.targetConnection) {\n // Collect comment for this block.\n let comment = block.getCommentText();\n if (comment) {\n comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3);\n commentCode += this.prefixLines(comment + '\\n', '# ');\n }\n // Collect comments for all value arguments.\n // Don't collect comments for nested statements.\n for (let i = 0; i < block.inputList.length; i++) {\n if (block.inputList[i].type === inputTypes.VALUE) {\n const childBlock = block.inputList[i].connection.targetBlock();\n if (childBlock) {\n comment = this.allNestedComments(childBlock);\n if (comment) {\n commentCode += this.prefixLines(comment, '# ');\n }\n }\n }\n }\n }\n const nextBlock = block.nextConnection && block.nextConnection.targetBlock();\n const nextCode = opt_thisOnly ? '' : this.blockToCode(nextBlock);\n return commentCode + code + nextCode;\n};\n\n/**\n * Gets a property and adjusts the value, taking into account indexing.\n * If a static int, casts to an integer, otherwise returns a code string.\n * @param {!Block} block The block.\n * @param {string} atId The property ID of the element to get.\n * @param {number=} opt_delta Value to add.\n * @param {boolean=} opt_negate Whether to negate the value.\n * @return {string|number}\n */\nPython.getAdjustedInt = function(block, atId, opt_delta, opt_negate) {\n let delta = opt_delta || 0;\n if (block.workspace.options.oneBasedIndex) {\n delta--;\n }\n const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';\n const atOrder = delta ? this.ORDER_ADDITIVE : this.ORDER_NONE;\n let at = this.valueToCode(block, atId, atOrder) || defaultAtIndex;\n\n if (stringUtils.isNumber(at)) {\n // If the index is a naked number, adjust it right now.\n at = parseInt(at, 10) + delta;\n if (opt_negate) {\n at = -at;\n }\n } else {\n // If the index is dynamic, adjust it in code.\n if (delta > 0) {\n at = 'int(' + at + ' + ' + delta + ')';\n } else if (delta < 0) {\n at = 'int(' + at + ' - ' + -delta + ')';\n } else {\n at = 'int(' + at + ')';\n }\n if (opt_negate) {\n at = '-' + at;\n }\n }\n return at;\n};\n\nexports.pythonGenerator = Python;\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for variable blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.variables');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n\n\nPython['variables_get'] = function(block) {\n // Variable getter.\n const code =\n Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return [code, Python.ORDER_ATOMIC];\n};\n\nPython['variables_set'] = function(block) {\n // Variable setter.\n const argument0 =\n Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '0';\n const varName =\n Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return varName + ' = ' + argument0 + '\\n';\n};\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for dynamic variable blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.variablesDynamic');\n\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n/** @suppress {extraRequire} */\ngoog.require('Blockly.Python.variables');\n\n\n// Python is dynamically typed.\nPython['variables_get_dynamic'] = Python['variables_get'];\nPython['variables_set_dynamic'] = Python['variables_set'];\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for text blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.texts');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {NameType} = goog.require('Blockly.Names');\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n\n\nPython['text'] = function(block) {\n // Text value.\n const code = Python.quote_(block.getFieldValue('TEXT'));\n return [code, Python.ORDER_ATOMIC];\n};\n\nPython['text_multiline'] = function(block) {\n // Text value.\n const code = Python.multiline_quote_(block.getFieldValue('TEXT'));\n const order =\n code.indexOf('+') !== -1 ? Python.ORDER_ADDITIVE : Python.ORDER_ATOMIC;\n return [code, order];\n};\n\n/**\n * Regular expression to detect a single-quoted string literal.\n */\nconst strRegExp = /^\\s*'([^']|\\\\')*'\\s*$/;\n\n/**\n * Enclose the provided value in 'str(...)' function.\n * Leave string literals alone.\n * @param {string} value Code evaluating to a value.\n * @return {Array<string|number>} Array containing code evaluating to a string\n * and\n * the order of the returned code.[string, number]\n */\nconst forceString = function(value) {\n if (strRegExp.test(value)) {\n return [value, Python.ORDER_ATOMIC];\n }\n return ['str(' + value + ')', Python.ORDER_FUNCTION_CALL];\n};\n\nPython['text_join'] = function(block) {\n // Create a string made up of any number of elements of any type.\n // Should we allow joining by '-' or ',' or any other characters?\n switch (block.itemCount_) {\n case 0:\n return [\"''\", Python.ORDER_ATOMIC];\n case 1: {\n const element =\n Python.valueToCode(block, 'ADD0', Python.ORDER_NONE) || \"''\";\n const codeAndOrder = forceString(element);\n return codeAndOrder;\n }\n case 2: {\n const element0 =\n Python.valueToCode(block, 'ADD0', Python.ORDER_NONE) || \"''\";\n const element1 =\n Python.valueToCode(block, 'ADD1', Python.ORDER_NONE) || \"''\";\n const code = forceString(element0)[0] + ' + ' + forceString(element1)[0];\n return [code, Python.ORDER_ADDITIVE];\n }\n default: {\n const elements = [];\n for (let i = 0; i < block.itemCount_; i++) {\n elements[i] =\n Python.valueToCode(block, 'ADD' + i, Python.ORDER_NONE) || \"''\";\n }\n const tempVar = Python.nameDB_.getDistinctName('x', NameType.VARIABLE);\n const code = '\\'\\'.join([str(' + tempVar + ') for ' + tempVar + ' in [' +\n elements.join(', ') + ']])';\n return [code, Python.ORDER_FUNCTION_CALL];\n }\n }\n};\n\nPython['text_append'] = function(block) {\n // Append to a variable in place.\n const varName =\n Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const value = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || \"''\";\n return varName + ' = str(' + varName + ') + ' + forceString(value)[0] + '\\n';\n};\n\nPython['text_length'] = function(block) {\n // Is the string null or array empty?\n const text = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || \"''\";\n return ['len(' + text + ')', Python.ORDER_FUNCTION_CALL];\n};\n\nPython['text_isEmpty'] = function(block) {\n // Is the string null or array empty?\n const text = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || \"''\";\n const code = 'not len(' + text + ')';\n return [code, Python.ORDER_LOGICAL_NOT];\n};\n\nPython['text_indexOf'] = function(block) {\n // Search the text for a substring.\n // Should we allow for non-case sensitive???\n const operator = block.getFieldValue('END') === 'FIRST' ? 'find' : 'rfind';\n const substring =\n Python.valueToCode(block, 'FIND', Python.ORDER_NONE) || \"''\";\n const text =\n Python.valueToCode(block, 'VALUE', Python.ORDER_MEMBER) || \"''\";\n const code = text + '.' + operator + '(' + substring + ')';\n if (block.workspace.options.oneBasedIndex) {\n return [code + ' + 1', Python.ORDER_ADDITIVE];\n }\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['text_charAt'] = function(block) {\n // Get letter at index.\n // Note: Until January 2013 this block did not have the WHERE input.\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const textOrder =\n (where === 'RANDOM') ? Python.ORDER_NONE : Python.ORDER_MEMBER;\n const text = Python.valueToCode(block, 'VALUE', textOrder) || \"''\";\n switch (where) {\n case 'FIRST': {\n const code = text + '[0]';\n return [code, Python.ORDER_MEMBER];\n }\n case 'LAST': {\n const code = text + '[-1]';\n return [code, Python.ORDER_MEMBER];\n }\n case 'FROM_START': {\n const at = Python.getAdjustedInt(block, 'AT');\n const code = text + '[' + at + ']';\n return [code, Python.ORDER_MEMBER];\n }\n case 'FROM_END': {\n const at = Python.getAdjustedInt(block, 'AT', 1, true);\n const code = text + '[' + at + ']';\n return [code, Python.ORDER_MEMBER];\n }\n case 'RANDOM': {\n Python.definitions_['import_random'] = 'import random';\n const functionName = Python.provideFunction_('text_random_letter', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(text):\n x = int(random.random() * len(text))\n return text[x]\n`);\n const code = functionName + '(' + text + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n }\n }\n throw Error('Unhandled option (text_charAt).');\n};\n\nPython['text_getSubstring'] = function(block) {\n // Get substring.\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n const text =\n Python.valueToCode(block, 'STRING', Python.ORDER_MEMBER) || \"''\";\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = Python.getAdjustedInt(block, 'AT1');\n if (at1 === 0) {\n at1 = '';\n }\n break;\n case 'FROM_END':\n at1 = Python.getAdjustedInt(block, 'AT1', 1, true);\n break;\n case 'FIRST':\n at1 = '';\n break;\n default:\n throw Error('Unhandled option (text_getSubstring)');\n }\n\n let at2;\n switch (where2) {\n case 'FROM_START':\n at2 = Python.getAdjustedInt(block, 'AT2', 1);\n break;\n case 'FROM_END':\n at2 = Python.getAdjustedInt(block, 'AT2', 0, true);\n // Ensure that if the result calculated is 0 that sub-sequence will\n // include all elements as expected.\n if (!stringUtils.isNumber(String(at2))) {\n Python.definitions_['import_sys'] = 'import sys';\n at2 += ' or sys.maxsize';\n } else if (at2 === 0) {\n at2 = '';\n }\n break;\n case 'LAST':\n at2 = '';\n break;\n default:\n throw Error('Unhandled option (text_getSubstring)');\n }\n const code = text + '[' + at1 + ' : ' + at2 + ']';\n return [code, Python.ORDER_MEMBER];\n};\n\nPython['text_changeCase'] = function(block) {\n // Change capitalization.\n const OPERATORS = {\n 'UPPERCASE': '.upper()',\n 'LOWERCASE': '.lower()',\n 'TITLECASE': '.title()'\n };\n const operator = OPERATORS[block.getFieldValue('CASE')];\n const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || \"''\";\n const code = text + operator;\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['text_trim'] = function(block) {\n // Trim spaces.\n const OPERATORS = {\n 'LEFT': '.lstrip()',\n 'RIGHT': '.rstrip()',\n 'BOTH': '.strip()'\n };\n const operator = OPERATORS[block.getFieldValue('MODE')];\n const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || \"''\";\n const code = text + operator;\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['text_print'] = function(block) {\n // Print statement.\n const msg = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || \"''\";\n return 'print(' + msg + ')\\n';\n};\n\nPython['text_prompt_ext'] = function(block) {\n // Prompt function.\n const functionName = Python.provideFunction_('text_prompt', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(msg):\n try:\n return raw_input(msg)\n except NameError:\n return input(msg)\n`);\n let msg;\n if (block.getField('TEXT')) {\n // Internal message.\n msg = Python.quote_(block.getFieldValue('TEXT'));\n } else {\n // External message.\n msg = Python.valueToCode(block, 'TEXT', Python.ORDER_NONE) || \"''\";\n }\n let code = functionName + '(' + msg + ')';\n const toNumber = block.getFieldValue('TYPE') === 'NUMBER';\n if (toNumber) {\n code = 'float(' + code + ')';\n }\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['text_prompt'] = Python['text_prompt_ext'];\n\nPython['text_count'] = function(block) {\n const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || \"''\";\n const sub = Python.valueToCode(block, 'SUB', Python.ORDER_NONE) || \"''\";\n const code = text + '.count(' + sub + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['text_replace'] = function(block) {\n const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || \"''\";\n const from = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || \"''\";\n const to = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || \"''\";\n const code = text + '.replace(' + from + ', ' + to + ')';\n return [code, Python.ORDER_MEMBER];\n};\n\nPython['text_reverse'] = function(block) {\n const text = Python.valueToCode(block, 'TEXT', Python.ORDER_MEMBER) || \"''\";\n const code = text + '[::-1]';\n return [code, Python.ORDER_MEMBER];\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for procedure blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.procedures');\n\nconst Variables = goog.require('Blockly.Variables');\nconst {NameType} = goog.require('Blockly.Names');\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n\n\nPython['procedures_defreturn'] = function(block) {\n // Define a procedure with a return value.\n // First, add a 'global' statement for every variable that is not shadowed by\n // a local parameter.\n const globals = [];\n const workspace = block.workspace;\n const usedVariables = Variables.allUsedVarModels(workspace) || [];\n for (let i = 0, variable; (variable = usedVariables[i]); i++) {\n const varName = variable.name;\n if (block.getVars().indexOf(varName) === -1) {\n globals.push(Python.nameDB_.getName(varName, NameType.VARIABLE));\n }\n }\n // Add developer variables.\n const devVarList = Variables.allDeveloperVariables(workspace);\n for (let i = 0; i < devVarList.length; i++) {\n globals.push(\n Python.nameDB_.getName(devVarList[i], NameType.DEVELOPER_VARIABLE));\n }\n\n const globalString = globals.length ?\n Python.INDENT + 'global ' + globals.join(', ') + '\\n' :\n '';\n const funcName =\n Python.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE);\n let xfix1 = '';\n if (Python.STATEMENT_PREFIX) {\n xfix1 += Python.injectId(Python.STATEMENT_PREFIX, block);\n }\n if (Python.STATEMENT_SUFFIX) {\n xfix1 += Python.injectId(Python.STATEMENT_SUFFIX, block);\n }\n if (xfix1) {\n xfix1 = Python.prefixLines(xfix1, Python.INDENT);\n }\n let loopTrap = '';\n if (Python.INFINITE_LOOP_TRAP) {\n loopTrap = Python.prefixLines(\n Python.injectId(Python.INFINITE_LOOP_TRAP, block), Python.INDENT);\n }\n let branch = Python.statementToCode(block, 'STACK');\n let returnValue =\n Python.valueToCode(block, 'RETURN', Python.ORDER_NONE) || '';\n let xfix2 = '';\n if (branch && returnValue) {\n // After executing the function body, revisit this block for the return.\n xfix2 = xfix1;\n }\n if (returnValue) {\n returnValue = Python.INDENT + 'return ' + returnValue + '\\n';\n } else if (!branch) {\n branch = Python.PASS;\n }\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = Python.nameDB_.getName(variables[i], NameType.VARIABLE);\n }\n let code = 'def ' + funcName + '(' + args.join(', ') + '):\\n' + globalString +\n xfix1 + loopTrap + branch + xfix2 + returnValue;\n code = Python.scrub_(block, code);\n // Add % so as not to collide with helper functions in definitions list.\n Python.definitions_['%' + funcName] = code;\n return null;\n};\n\n// Defining a procedure without a return value uses the same generator as\n// a procedure with a return value.\nPython['procedures_defnoreturn'] = Python['procedures_defreturn'];\n\nPython['procedures_callreturn'] = function(block) {\n // Call a procedure with a return value.\n const funcName =\n Python.nameDB_.getName(block.getFieldValue('NAME'), NameType.PROCEDURE);\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = Python.valueToCode(block, 'ARG' + i, Python.ORDER_NONE) || 'None';\n }\n const code = funcName + '(' + args.join(', ') + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['procedures_callnoreturn'] = function(block) {\n // Call a procedure with no return value.\n // Generated code is for a function call as a statement is the same as a\n // function call as a value, with the addition of line ending.\n const tuple = Python['procedures_callreturn'](block);\n return tuple[0] + '\\n';\n};\n\nPython['procedures_ifreturn'] = function(block) {\n // Conditionally return value from a procedure.\n const condition =\n Python.valueToCode(block, 'CONDITION', Python.ORDER_NONE) || 'False';\n let code = 'if ' + condition + ':\\n';\n if (Python.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the return is triggered.\n code += Python.prefixLines(\n Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT);\n }\n if (block.hasReturnValue_) {\n const value =\n Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || 'None';\n code += Python.INDENT + 'return ' + value + '\\n';\n } else {\n code += Python.INDENT + 'return\\n';\n }\n return code;\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for math blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.math');\n\nconst {NameType} = goog.require('Blockly.Names');\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n\n\n// If any new block imports any library, add that library name here.\nPython.addReservedWords('math,random,Number');\n\nPython['math_number'] = function(block) {\n // Numeric value.\n let code = Number(block.getFieldValue('NUM'));\n let order;\n if (code === Infinity) {\n code = 'float(\"inf\")';\n order = Python.ORDER_FUNCTION_CALL;\n } else if (code === -Infinity) {\n code = '-float(\"inf\")';\n order = Python.ORDER_UNARY_SIGN;\n } else {\n order = code < 0 ? Python.ORDER_UNARY_SIGN : Python.ORDER_ATOMIC;\n }\n return [code, order];\n};\n\nPython['math_arithmetic'] = function(block) {\n // Basic arithmetic operators, and power.\n const OPERATORS = {\n 'ADD': [' + ', Python.ORDER_ADDITIVE],\n 'MINUS': [' - ', Python.ORDER_ADDITIVE],\n 'MULTIPLY': [' * ', Python.ORDER_MULTIPLICATIVE],\n 'DIVIDE': [' / ', Python.ORDER_MULTIPLICATIVE],\n 'POWER': [' ** ', Python.ORDER_EXPONENTIATION],\n };\n const tuple = OPERATORS[block.getFieldValue('OP')];\n const operator = tuple[0];\n const order = tuple[1];\n const argument0 = Python.valueToCode(block, 'A', order) || '0';\n const argument1 = Python.valueToCode(block, 'B', order) || '0';\n const code = argument0 + operator + argument1;\n return [code, order];\n // In case of 'DIVIDE', division between integers returns different results\n // in Python 2 and 3. However, is not an issue since Blockly does not\n // guarantee identical results in all languages. To do otherwise would\n // require every operator to be wrapped in a function call. This would kill\n // legibility of the generated code.\n};\n\nPython['math_single'] = function(block) {\n // Math operators with single operand.\n const operator = block.getFieldValue('OP');\n let code;\n let arg;\n if (operator === 'NEG') {\n // Negation is a special case given its different operator precedence.\n code = Python.valueToCode(block, 'NUM', Python.ORDER_UNARY_SIGN) || '0';\n return ['-' + code, Python.ORDER_UNARY_SIGN];\n }\n Python.definitions_['import_math'] = 'import math';\n if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') {\n arg = Python.valueToCode(block, 'NUM', Python.ORDER_MULTIPLICATIVE) || '0';\n } else {\n arg = Python.valueToCode(block, 'NUM', Python.ORDER_NONE) || '0';\n }\n // First, handle cases which generate values that don't need parentheses\n // wrapping the code.\n switch (operator) {\n case 'ABS':\n code = 'math.fabs(' + arg + ')';\n break;\n case 'ROOT':\n code = 'math.sqrt(' + arg + ')';\n break;\n case 'LN':\n code = 'math.log(' + arg + ')';\n break;\n case 'LOG10':\n code = 'math.log10(' + arg + ')';\n break;\n case 'EXP':\n code = 'math.exp(' + arg + ')';\n break;\n case 'POW10':\n code = 'math.pow(10,' + arg + ')';\n break;\n case 'ROUND':\n code = 'round(' + arg + ')';\n break;\n case 'ROUNDUP':\n code = 'math.ceil(' + arg + ')';\n break;\n case 'ROUNDDOWN':\n code = 'math.floor(' + arg + ')';\n break;\n case 'SIN':\n code = 'math.sin(' + arg + ' / 180.0 * math.pi)';\n break;\n case 'COS':\n code = 'math.cos(' + arg + ' / 180.0 * math.pi)';\n break;\n case 'TAN':\n code = 'math.tan(' + arg + ' / 180.0 * math.pi)';\n break;\n }\n if (code) {\n return [code, Python.ORDER_FUNCTION_CALL];\n }\n // Second, handle cases which generate values that may need parentheses\n // wrapping the code.\n switch (operator) {\n case 'ASIN':\n code = 'math.asin(' + arg + ') / math.pi * 180';\n break;\n case 'ACOS':\n code = 'math.acos(' + arg + ') / math.pi * 180';\n break;\n case 'ATAN':\n code = 'math.atan(' + arg + ') / math.pi * 180';\n break;\n default:\n throw Error('Unknown math operator: ' + operator);\n }\n return [code, Python.ORDER_MULTIPLICATIVE];\n};\n\nPython['math_constant'] = function(block) {\n // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY.\n const CONSTANTS = {\n 'PI': ['math.pi', Python.ORDER_MEMBER],\n 'E': ['math.e', Python.ORDER_MEMBER],\n 'GOLDEN_RATIO': ['(1 + math.sqrt(5)) / 2', Python.ORDER_MULTIPLICATIVE],\n 'SQRT2': ['math.sqrt(2)', Python.ORDER_MEMBER],\n 'SQRT1_2': ['math.sqrt(1.0 / 2)', Python.ORDER_MEMBER],\n 'INFINITY': ['float(\\'inf\\')', Python.ORDER_ATOMIC],\n };\n const constant = block.getFieldValue('CONSTANT');\n if (constant !== 'INFINITY') {\n Python.definitions_['import_math'] = 'import math';\n }\n return CONSTANTS[constant];\n};\n\nPython['math_number_property'] = function(block) {\n // Check if a number is even, odd, prime, whole, positive, or negative\n // or if it is divisible by certain number. Returns true or false.\n const PROPERTIES = {\n 'EVEN': [' % 2 == 0', Python.ORDER_MULTIPLICATIVE, Python.ORDER_RELATIONAL],\n 'ODD': [' % 2 == 1', Python.ORDER_MULTIPLICATIVE, Python.ORDER_RELATIONAL],\n 'WHOLE': [' % 1 == 0', Python.ORDER_MULTIPLICATIVE,\n Python.ORDER_RELATIONAL],\n 'POSITIVE': [' > 0', Python.ORDER_RELATIONAL, Python.ORDER_RELATIONAL],\n 'NEGATIVE': [' < 0', Python.ORDER_RELATIONAL, Python.ORDER_RELATIONAL],\n 'DIVISIBLE_BY': [null, Python.ORDER_MULTIPLICATIVE,\n Python.ORDER_RELATIONAL],\n 'PRIME': [null, Python.ORDER_NONE, Python.ORDER_FUNCTION_CALL],\n }\n const dropdownProperty = block.getFieldValue('PROPERTY');\n const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty];\n const numberToCheck = Python.valueToCode(block, 'NUMBER_TO_CHECK',\n inputOrder) || '0';\n let code;\n if (dropdownProperty === 'PRIME') {\n // Prime is a special case as it is not a one-liner test.\n Python.definitions_['import_math'] = 'import math';\n Python.definitions_['from_numbers_import_Number'] =\n 'from numbers import Number';\n const functionName = Python.provideFunction_('math_isPrime', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(n):\n # https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n # If n is not a number but a string, try parsing it.\n if not isinstance(n, Number):\n try:\n n = float(n)\n except:\n return False\n if n == 2 or n == 3:\n return True\n # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3.\n if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0:\n return False\n # Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for x in range(6, int(math.sqrt(n)) + 2, 6):\n if n % (x - 1) == 0 or n % (x + 1) == 0:\n return False\n return True\n`);\n code = functionName + '(' + numberToCheck + ')';\n } else if (dropdownProperty === 'DIVISIBLE_BY') {\n const divisor = Python.valueToCode(block, 'DIVISOR',\n Python.ORDER_MULTIPLICATIVE) || '0';\n // If 'divisor' is some code that evals to 0, Python will raise an error.\n if (divisor === '0') {\n return ['False', Python.ORDER_ATOMIC];\n }\n code = numberToCheck + ' % ' + divisor + ' == 0';\n } else {\n code = numberToCheck + suffix;\n };\n return [code, outputOrder];\n};\n\nPython['math_change'] = function(block) {\n // Add to a variable in place.\n Python.definitions_['from_numbers_import_Number'] =\n 'from numbers import Number';\n const argument0 =\n Python.valueToCode(block, 'DELTA', Python.ORDER_ADDITIVE) || '0';\n const varName =\n Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n return varName + ' = (' + varName + ' if isinstance(' + varName +\n ', Number) else 0) + ' + argument0 + '\\n';\n};\n\n// Rounding functions have a single operand.\nPython['math_round'] = Python['math_single'];\n// Trigonometry functions have a single operand.\nPython['math_trig'] = Python['math_single'];\n\nPython['math_on_list'] = function(block) {\n // Math functions for lists.\n const func = block.getFieldValue('OP');\n const list = Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]';\n let code;\n switch (func) {\n case 'SUM':\n code = 'sum(' + list + ')';\n break;\n case 'MIN':\n code = 'min(' + list + ')';\n break;\n case 'MAX':\n code = 'max(' + list + ')';\n break;\n case 'AVERAGE': {\n Python.definitions_['from_numbers_import_Number'] =\n 'from numbers import Number';\n // This operation excludes null and values that aren't int or float:\n // math_mean([null, null, \"aString\", 1, 9]) -> 5.0\n const functionName = Python.provideFunction_('math_mean', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList):\n localList = [e for e in myList if isinstance(e, Number)]\n if not localList: return\n return float(sum(localList)) / len(localList)\n`);\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MEDIAN': {\n Python.definitions_['from_numbers_import_Number'] =\n 'from numbers import Number';\n // This operation excludes null values:\n // math_median([null, null, 1, 3]) -> 2.0\n const functionName = Python.provideFunction_( 'math_median', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList):\n localList = sorted([e for e in myList if isinstance(e, Number)])\n if not localList: return\n if len(localList) % 2 == 0:\n return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0\n else:\n return localList[(len(localList) - 1) // 2]\n`);\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MODE': {\n // As a list of numbers can contain more than one mode,\n // the returned result is provided as an array.\n // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]\n const functionName = Python.provideFunction_('math_modes', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(some_list):\n modes = []\n # Using a lists of [item, count] to keep count rather than dict\n # to avoid \"unhashable\" errors when the counted item is itself a list or dict.\n counts = []\n maxCount = 1\n for item in some_list:\n found = False\n for count in counts:\n if count[0] == item:\n count[1] += 1\n maxCount = max(maxCount, count[1])\n found = True\n if not found:\n counts.append([item, 1])\n for counted_item, item_count in counts:\n if item_count == maxCount:\n modes.append(counted_item)\n return modes\n`);\n code = functionName + '(' + list + ')';\n break;\n }\n case 'STD_DEV': {\n Python.definitions_['import_math'] = 'import math';\n const functionName = Python.provideFunction_('math_standard_deviation', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(numbers):\n n = len(numbers)\n if n == 0: return\n mean = float(sum(numbers)) / n\n variance = sum((x - mean) ** 2 for x in numbers) / n\n return math.sqrt(variance)\n`);\n code = functionName + '(' + list + ')';\n break;\n }\n case 'RANDOM':\n Python.definitions_['import_random'] = 'import random';\n code = 'random.choice(' + list + ')';\n break;\n default:\n throw Error('Unknown operator: ' + func);\n }\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['math_modulo'] = function(block) {\n // Remainder computation.\n const argument0 =\n Python.valueToCode(block, 'DIVIDEND', Python.ORDER_MULTIPLICATIVE) || '0';\n const argument1 =\n Python.valueToCode(block, 'DIVISOR', Python.ORDER_MULTIPLICATIVE) || '0';\n const code = argument0 + ' % ' + argument1;\n return [code, Python.ORDER_MULTIPLICATIVE];\n};\n\nPython['math_constrain'] = function(block) {\n // Constrain a number between two limits.\n const argument0 =\n Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '0';\n const argument1 = Python.valueToCode(block, 'LOW', Python.ORDER_NONE) || '0';\n const argument2 =\n Python.valueToCode(block, 'HIGH', Python.ORDER_NONE) || 'float(\\'inf\\')';\n const code =\n 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['math_random_int'] = function(block) {\n // Random integer between [X] and [Y].\n Python.definitions_['import_random'] = 'import random';\n const argument0 = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || '0';\n const argument1 = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || '0';\n const code = 'random.randint(' + argument0 + ', ' + argument1 + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['math_random_float'] = function(block) {\n // Random fraction between 0 and 1.\n Python.definitions_['import_random'] = 'import random';\n return ['random.random()', Python.ORDER_FUNCTION_CALL];\n};\n\nPython['math_atan2'] = function(block) {\n // Arctangent of point (X, Y) in degrees from -180 to 180.\n Python.definitions_['import_math'] = 'import math';\n const argument0 = Python.valueToCode(block, 'X', Python.ORDER_NONE) || '0';\n const argument1 = Python.valueToCode(block, 'Y', Python.ORDER_NONE) || '0';\n return [\n 'math.atan2(' + argument1 + ', ' + argument0 + ') / math.pi * 180',\n Python.ORDER_MULTIPLICATIVE\n ];\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for loop blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.loops');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {NameType} = goog.require('Blockly.Names');\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n\n\nPython['controls_repeat_ext'] = function(block) {\n // Repeat n times.\n let repeats;\n if (block.getField('TIMES')) {\n // Internal number.\n repeats = String(parseInt(block.getFieldValue('TIMES'), 10));\n } else {\n // External number.\n repeats = Python.valueToCode(block, 'TIMES', Python.ORDER_NONE) || '0';\n }\n if (stringUtils.isNumber(repeats)) {\n repeats = parseInt(repeats, 10);\n } else {\n repeats = 'int(' + repeats + ')';\n }\n let branch = Python.statementToCode(block, 'DO');\n branch = Python.addLoopTrap(branch, block) || Python.PASS;\n const loopVar = Python.nameDB_.getDistinctName('count', NameType.VARIABLE);\n const code = 'for ' + loopVar + ' in range(' + repeats + '):\\n' + branch;\n return code;\n};\n\nPython['controls_repeat'] = Python['controls_repeat_ext'];\n\nPython['controls_whileUntil'] = function(block) {\n // Do while/until loop.\n const until = block.getFieldValue('MODE') === 'UNTIL';\n let argument0 = Python.valueToCode(\n block, 'BOOL',\n until ? Python.ORDER_LOGICAL_NOT : Python.ORDER_NONE) ||\n 'False';\n let branch = Python.statementToCode(block, 'DO');\n branch = Python.addLoopTrap(branch, block) || Python.PASS;\n if (until) {\n argument0 = 'not ' + argument0;\n }\n return 'while ' + argument0 + ':\\n' + branch;\n};\n\nPython['controls_for'] = function(block) {\n // For loop.\n const variable0 =\n Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n let argument0 = Python.valueToCode(block, 'FROM', Python.ORDER_NONE) || '0';\n let argument1 = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || '0';\n let increment = Python.valueToCode(block, 'BY', Python.ORDER_NONE) || '1';\n let branch = Python.statementToCode(block, 'DO');\n branch = Python.addLoopTrap(branch, block) || Python.PASS;\n\n let code = '';\n let range;\n\n // Helper functions.\n const defineUpRange = function() {\n return Python.provideFunction_('upRange', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(start, stop, step):\n while start <= stop:\n yield start\n start += abs(step)\n`);\n };\n const defineDownRange = function() {\n return Python.provideFunction_('downRange', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(start, stop, step):\n while start >= stop:\n yield start\n start -= abs(step)\n`);\n };\n // Arguments are legal Python code (numbers or strings returned by scrub()).\n const generateUpDownRange = function(start, end, inc) {\n return '(' + start + ' <= ' + end + ') and ' + defineUpRange() + '(' +\n start + ', ' + end + ', ' + inc + ') or ' + defineDownRange() + '(' +\n start + ', ' + end + ', ' + inc + ')';\n };\n\n if (stringUtils.isNumber(argument0) && stringUtils.isNumber(argument1) &&\n stringUtils.isNumber(increment)) {\n // All parameters are simple numbers.\n argument0 = Number(argument0);\n argument1 = Number(argument1);\n increment = Math.abs(Number(increment));\n if (argument0 % 1 === 0 && argument1 % 1 === 0 && increment % 1 === 0) {\n // All parameters are integers.\n if (argument0 <= argument1) {\n // Count up.\n argument1++;\n if (argument0 === 0 && increment === 1) {\n // If starting index is 0, omit it.\n range = argument1;\n } else {\n range = argument0 + ', ' + argument1;\n }\n // If increment isn't 1, it must be explicit.\n if (increment !== 1) {\n range += ', ' + increment;\n }\n } else {\n // Count down.\n argument1--;\n range = argument0 + ', ' + argument1 + ', -' + increment;\n }\n range = 'range(' + range + ')';\n } else {\n // At least one of the parameters is not an integer.\n if (argument0 < argument1) {\n range = defineUpRange();\n } else {\n range = defineDownRange();\n }\n range += '(' + argument0 + ', ' + argument1 + ', ' + increment + ')';\n }\n } else {\n // Cache non-trivial values to variables to prevent repeated look-ups.\n const scrub = function(arg, suffix) {\n if (stringUtils.isNumber(arg)) {\n // Simple number.\n arg = Number(arg);\n } else if (!arg.match(/^\\w+$/)) {\n // Not a variable, it's complicated.\n const varName = Python.nameDB_.getDistinctName(\n variable0 + suffix, NameType.VARIABLE);\n code += varName + ' = ' + arg + '\\n';\n arg = varName;\n }\n return arg;\n };\n const startVar = scrub(argument0, '_start');\n const endVar = scrub(argument1, '_end');\n const incVar = scrub(increment, '_inc');\n\n if (typeof startVar === 'number' && typeof endVar === 'number') {\n if (startVar < endVar) {\n range = defineUpRange();\n } else {\n range = defineDownRange();\n }\n range += '(' + startVar + ', ' + endVar + ', ' + incVar + ')';\n } else {\n // We cannot determine direction statically.\n range = generateUpDownRange(startVar, endVar, incVar);\n }\n }\n code += 'for ' + variable0 + ' in ' + range + ':\\n' + branch;\n return code;\n};\n\nPython['controls_forEach'] = function(block) {\n // For each loop.\n const variable0 =\n Python.nameDB_.getName(block.getFieldValue('VAR'), NameType.VARIABLE);\n const argument0 =\n Python.valueToCode(block, 'LIST', Python.ORDER_RELATIONAL) || '[]';\n let branch = Python.statementToCode(block, 'DO');\n branch = Python.addLoopTrap(branch, block) || Python.PASS;\n const code = 'for ' + variable0 + ' in ' + argument0 + ':\\n' + branch;\n return code;\n};\n\nPython['controls_flow_statements'] = function(block) {\n // Flow statements: continue, break.\n let xfix = '';\n if (Python.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n xfix += Python.injectId(Python.STATEMENT_PREFIX, block);\n }\n if (Python.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the break/continue is triggered.\n xfix += Python.injectId(Python.STATEMENT_SUFFIX, block);\n }\n if (Python.STATEMENT_PREFIX) {\n const loop = block.getSurroundLoop();\n if (loop && !loop.suppressPrefixSuffix) {\n // Inject loop's statement prefix here since the regular one at the end\n // of the loop will not get executed if 'continue' is triggered.\n // In the case of 'break', a prefix is needed due to the loop's suffix.\n xfix += Python.injectId(Python.STATEMENT_PREFIX, loop);\n }\n }\n switch (block.getFieldValue('FLOW')) {\n case 'BREAK':\n return xfix + 'break\\n';\n case 'CONTINUE':\n return xfix + 'continue\\n';\n }\n throw Error('Unknown flow statement.');\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for logic blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.logic');\n\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n\n\nPython['controls_if'] = function(block) {\n // If/elseif/else condition.\n let n = 0;\n let code = '', branchCode, conditionCode;\n if (Python.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n code += Python.injectId(Python.STATEMENT_PREFIX, block);\n }\n do {\n conditionCode =\n Python.valueToCode(block, 'IF' + n, Python.ORDER_NONE) || 'False';\n branchCode = Python.statementToCode(block, 'DO' + n) || Python.PASS;\n if (Python.STATEMENT_SUFFIX) {\n branchCode =\n Python.prefixLines(\n Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT) +\n branchCode;\n }\n code += (n === 0 ? 'if ' : 'elif ') + conditionCode + ':\\n' + branchCode;\n n++;\n } while (block.getInput('IF' + n));\n\n if (block.getInput('ELSE') || Python.STATEMENT_SUFFIX) {\n branchCode = Python.statementToCode(block, 'ELSE') || Python.PASS;\n if (Python.STATEMENT_SUFFIX) {\n branchCode =\n Python.prefixLines(\n Python.injectId(Python.STATEMENT_SUFFIX, block), Python.INDENT) +\n branchCode;\n }\n code += 'else:\\n' + branchCode;\n }\n return code;\n};\n\nPython['controls_ifelse'] = Python['controls_if'];\n\nPython['logic_compare'] = function(block) {\n // Comparison operator.\n const OPERATORS =\n {'EQ': '==', 'NEQ': '!=', 'LT': '<', 'LTE': '<=', 'GT': '>', 'GTE': '>='};\n const operator = OPERATORS[block.getFieldValue('OP')];\n const order = Python.ORDER_RELATIONAL;\n const argument0 = Python.valueToCode(block, 'A', order) || '0';\n const argument1 = Python.valueToCode(block, 'B', order) || '0';\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n};\n\nPython['logic_operation'] = function(block) {\n // Operations 'and', 'or'.\n const operator = (block.getFieldValue('OP') === 'AND') ? 'and' : 'or';\n const order =\n (operator === 'and') ? Python.ORDER_LOGICAL_AND : Python.ORDER_LOGICAL_OR;\n let argument0 = Python.valueToCode(block, 'A', order);\n let argument1 = Python.valueToCode(block, 'B', order);\n if (!argument0 && !argument1) {\n // If there are no arguments, then the return value is false.\n argument0 = 'False';\n argument1 = 'False';\n } else {\n // Single missing arguments have no effect on the return value.\n const defaultArgument = (operator === 'and') ? 'True' : 'False';\n if (!argument0) {\n argument0 = defaultArgument;\n }\n if (!argument1) {\n argument1 = defaultArgument;\n }\n }\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n};\n\nPython['logic_negate'] = function(block) {\n // Negation.\n const argument0 =\n Python.valueToCode(block, 'BOOL', Python.ORDER_LOGICAL_NOT) || 'True';\n const code = 'not ' + argument0;\n return [code, Python.ORDER_LOGICAL_NOT];\n};\n\nPython['logic_boolean'] = function(block) {\n // Boolean values true and false.\n const code = (block.getFieldValue('BOOL') === 'TRUE') ? 'True' : 'False';\n return [code, Python.ORDER_ATOMIC];\n};\n\nPython['logic_null'] = function(block) {\n // Null data type.\n return ['None', Python.ORDER_ATOMIC];\n};\n\nPython['logic_ternary'] = function(block) {\n // Ternary operator.\n const value_if =\n Python.valueToCode(block, 'IF', Python.ORDER_CONDITIONAL) || 'False';\n const value_then =\n Python.valueToCode(block, 'THEN', Python.ORDER_CONDITIONAL) || 'None';\n const value_else =\n Python.valueToCode(block, 'ELSE', Python.ORDER_CONDITIONAL) || 'None';\n const code = value_then + ' if ' + value_if + ' else ' + value_else;\n return [code, Python.ORDER_CONDITIONAL];\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for list blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.lists');\n\nconst stringUtils = goog.require('Blockly.utils.string');\nconst {NameType} = goog.require('Blockly.Names');\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n\n\nPython['lists_create_empty'] = function(block) {\n // Create an empty list.\n return ['[]', Python.ORDER_ATOMIC];\n};\n\nPython['lists_create_with'] = function(block) {\n // Create a list with any number of elements of any type.\n const elements = new Array(block.itemCount_);\n for (let i = 0; i < block.itemCount_; i++) {\n elements[i] =\n Python.valueToCode(block, 'ADD' + i, Python.ORDER_NONE) || 'None';\n }\n const code = '[' + elements.join(', ') + ']';\n return [code, Python.ORDER_ATOMIC];\n};\n\nPython['lists_repeat'] = function(block) {\n // Create a list with one element repeated.\n const item = Python.valueToCode(block, 'ITEM', Python.ORDER_NONE) || 'None';\n const times =\n Python.valueToCode(block, 'NUM', Python.ORDER_MULTIPLICATIVE) || '0';\n const code = '[' + item + '] * ' + times;\n return [code, Python.ORDER_MULTIPLICATIVE];\n};\n\nPython['lists_length'] = function(block) {\n // String or array length.\n const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '[]';\n return ['len(' + list + ')', Python.ORDER_FUNCTION_CALL];\n};\n\nPython['lists_isEmpty'] = function(block) {\n // Is the string null or array empty?\n const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || '[]';\n const code = 'not len(' + list + ')';\n return [code, Python.ORDER_LOGICAL_NOT];\n};\n\nPython['lists_indexOf'] = function(block) {\n // Find an item in the list.\n const item = Python.valueToCode(block, 'FIND', Python.ORDER_NONE) || '[]';\n const list = Python.valueToCode(block, 'VALUE', Python.ORDER_NONE) || \"''\";\n let errorIndex = ' -1';\n let firstIndexAdjustment = '';\n let lastIndexAdjustment = ' - 1';\n\n if (block.workspace.options.oneBasedIndex) {\n errorIndex = ' 0';\n firstIndexAdjustment = ' + 1';\n lastIndexAdjustment = '';\n }\n\n let functionName;\n if (block.getFieldValue('END') === 'FIRST') {\n functionName = Python.provideFunction_('first_index', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem):\n try: index = my_list.index(elem)${firstIndexAdjustment}\n except: index =${errorIndex}\n return index\n`);\n } else {\n functionName = Python.provideFunction_('last_index', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem):\n try: index = len(my_list) - my_list[::-1].index(elem)${lastIndexAdjustment}\n except: index =${errorIndex}\n return index\n`);\n }\n const code = functionName + '(' + list + ', ' + item + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['lists_getIndex'] = function(block) {\n // Get element at index.\n // Note: Until January 2013 this block did not have MODE or WHERE inputs.\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const listOrder =\n (where === 'RANDOM') ? Python.ORDER_NONE : Python.ORDER_MEMBER;\n const list = Python.valueToCode(block, 'VALUE', listOrder) || '[]';\n\n switch (where) {\n case 'FIRST':\n if (mode === 'GET') {\n const code = list + '[0]';\n return [code, Python.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop(0)';\n return [code, Python.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.pop(0)\\n';\n }\n break;\n case 'LAST':\n if (mode === 'GET') {\n const code = list + '[-1]';\n return [code, Python.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop()';\n return [code, Python.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.pop()\\n';\n }\n break;\n case 'FROM_START': {\n const at = Python.getAdjustedInt(block, 'AT');\n if (mode === 'GET') {\n const code = list + '[' + at + ']';\n return [code, Python.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop(' + at + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.pop(' + at + ')\\n';\n }\n break;\n }\n case 'FROM_END': {\n const at = Python.getAdjustedInt(block, 'AT', 1, true);\n if (mode === 'GET') {\n const code = list + '[' + at + ']';\n return [code, Python.ORDER_MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop(' + at + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.pop(' + at + ')\\n';\n }\n break;\n }\n case 'RANDOM':\n Python.definitions_['import_random'] = 'import random';\n if (mode === 'GET') {\n const code = 'random.choice(' + list + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n } else {\n const functionName =\n Python.provideFunction_('lists_remove_random_item', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(myList):\n x = int(random.random() * len(myList))\n return myList.pop(x)\n`);\n const code = functionName + '(' + list + ')';\n if (mode === 'GET_REMOVE') {\n return [code, Python.ORDER_FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return code + '\\n';\n }\n }\n break;\n }\n throw Error('Unhandled combination (lists_getIndex).');\n};\n\nPython['lists_setIndex'] = function(block) {\n // Set element at index.\n // Note: Until February 2013 this block did not have MODE or WHERE inputs.\n let list = Python.valueToCode(block, 'LIST', Python.ORDER_MEMBER) || '[]';\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const value = Python.valueToCode(block, 'TO', Python.ORDER_NONE) || 'None';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n // Closure, which accesses and modifies 'list'.\n function cacheList() {\n if (list.match(/^\\w+$/)) {\n return '';\n }\n const listVar =\n Python.nameDB_.getDistinctName('tmp_list', NameType.VARIABLE);\n const code = listVar + ' = ' + list + '\\n';\n list = listVar;\n return code;\n }\n\n switch (where) {\n case 'FIRST':\n if (mode === 'SET') {\n return list + '[0] = ' + value + '\\n';\n } else if (mode === 'INSERT') {\n return list + '.insert(0, ' + value + ')\\n';\n }\n break;\n case 'LAST':\n if (mode === 'SET') {\n return list + '[-1] = ' + value + '\\n';\n } else if (mode === 'INSERT') {\n return list + '.append(' + value + ')\\n';\n }\n break;\n case 'FROM_START': {\n const at = Python.getAdjustedInt(block, 'AT');\n if (mode === 'SET') {\n return list + '[' + at + '] = ' + value + '\\n';\n } else if (mode === 'INSERT') {\n return list + '.insert(' + at + ', ' + value + ')\\n';\n }\n break;\n }\n case 'FROM_END': {\n const at = Python.getAdjustedInt(block, 'AT', 1, true);\n if (mode === 'SET') {\n return list + '[' + at + '] = ' + value + '\\n';\n } else if (mode === 'INSERT') {\n return list + '.insert(' + at + ', ' + value + ')\\n';\n }\n break;\n }\n case 'RANDOM': {\n Python.definitions_['import_random'] = 'import random';\n let code = cacheList();\n const xVar = Python.nameDB_.getDistinctName('tmp_x', NameType.VARIABLE);\n code += xVar + ' = int(random.random() * len(' + list + '))\\n';\n if (mode === 'SET') {\n code += list + '[' + xVar + '] = ' + value + '\\n';\n return code;\n } else if (mode === 'INSERT') {\n code += list + '.insert(' + xVar + ', ' + value + ')\\n';\n return code;\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_setIndex).');\n};\n\nPython['lists_getSublist'] = function(block) {\n // Get sublist.\n const list = Python.valueToCode(block, 'LIST', Python.ORDER_MEMBER) || '[]';\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = Python.getAdjustedInt(block, 'AT1');\n if (at1 === 0) {\n at1 = '';\n }\n break;\n case 'FROM_END':\n at1 = Python.getAdjustedInt(block, 'AT1', 1, true);\n break;\n case 'FIRST':\n at1 = '';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist)');\n }\n\n let at2;\n switch (where2) {\n case 'FROM_START':\n at2 = Python.getAdjustedInt(block, 'AT2', 1);\n break;\n case 'FROM_END':\n at2 = Python.getAdjustedInt(block, 'AT2', 0, true);\n // Ensure that if the result calculated is 0 that sub-sequence will\n // include all elements as expected.\n if (!stringUtils.isNumber(String(at2))) {\n Python.definitions_['import_sys'] = 'import sys';\n at2 += ' or sys.maxsize';\n } else if (at2 === 0) {\n at2 = '';\n }\n break;\n case 'LAST':\n at2 = '';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist)');\n }\n const code = list + '[' + at1 + ' : ' + at2 + ']';\n return [code, Python.ORDER_MEMBER];\n};\n\nPython['lists_sort'] = function(block) {\n // Block for sorting a list.\n const list = (Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]');\n const type = block.getFieldValue('TYPE');\n const reverse = block.getFieldValue('DIRECTION') === '1' ? 'False' : 'True';\n const sortFunctionName = Python.provideFunction_('lists_sort', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(my_list, type, reverse):\n def try_float(s):\n try:\n return float(s)\n except:\n return 0\n key_funcs = {\n \"NUMERIC\": try_float,\n \"TEXT\": str,\n \"IGNORE_CASE\": lambda s: str(s).lower()\n }\n key_func = key_funcs[type]\n list_cpy = list(my_list)\n return sorted(list_cpy, key=key_func, reverse=reverse)\n`);\n\n const code =\n sortFunctionName + '(' + list + ', \"' + type + '\", ' + reverse + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['lists_split'] = function(block) {\n // Block for splitting text into a list, or joining a list into text.\n const mode = block.getFieldValue('MODE');\n let code;\n if (mode === 'SPLIT') {\n const value_input =\n Python.valueToCode(block, 'INPUT', Python.ORDER_MEMBER) || \"''\";\n const value_delim = Python.valueToCode(block, 'DELIM', Python.ORDER_NONE);\n code = value_input + '.split(' + value_delim + ')';\n } else if (mode === 'JOIN') {\n const value_input =\n Python.valueToCode(block, 'INPUT', Python.ORDER_NONE) || '[]';\n const value_delim =\n Python.valueToCode(block, 'DELIM', Python.ORDER_MEMBER) || \"''\";\n code = value_delim + '.join(' + value_input + ')';\n } else {\n throw Error('Unknown mode: ' + mode);\n }\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['lists_reverse'] = function(block) {\n // Block for reversing a list.\n const list = Python.valueToCode(block, 'LIST', Python.ORDER_NONE) || '[]';\n const code = 'list(reversed(' + list + '))';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Generating Python for colour blocks.\n */\n'use strict';\n\ngoog.module('Blockly.Python.colour');\n\nconst {pythonGenerator: Python} = goog.require('Blockly.Python');\n\n\nPython['colour_picker'] = function(block) {\n // Colour picker.\n const code = Python.quote_(block.getFieldValue('COLOUR'));\n return [code, Python.ORDER_ATOMIC];\n};\n\nPython['colour_random'] = function(block) {\n // Generate a random colour.\n Python.definitions_['import_random'] = 'import random';\n const code = '\\'#%06x\\' % random.randint(0, 2**24 - 1)';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['colour_rgb'] = function(block) {\n // Compose a colour from RGB components expressed as percentages.\n const functionName = Python.provideFunction_('colour_rgb', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(r, g, b):\n r = round(min(100, max(0, r)) * 2.55)\n g = round(min(100, max(0, g)) * 2.55)\n b = round(min(100, max(0, b)) * 2.55)\n return '#%02x%02x%02x' % (r, g, b)\n`);\n const r = Python.valueToCode(block, 'RED', Python.ORDER_NONE) || 0;\n const g = Python.valueToCode(block, 'GREEN', Python.ORDER_NONE) || 0;\n const b = Python.valueToCode(block, 'BLUE', Python.ORDER_NONE) || 0;\n const code = functionName + '(' + r + ', ' + g + ', ' + b + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n\nPython['colour_blend'] = function(block) {\n // Blend two colours together.\n const functionName = Python.provideFunction_('colour_blend', `\ndef ${Python.FUNCTION_NAME_PLACEHOLDER_}(colour1, colour2, ratio):\n r1, r2 = int(colour1[1:3], 16), int(colour2[1:3], 16)\n g1, g2 = int(colour1[3:5], 16), int(colour2[3:5], 16)\n b1, b2 = int(colour1[5:7], 16), int(colour2[5:7], 16)\n ratio = min(1, max(0, ratio))\n r = round(r1 * (1 - ratio) + r2 * ratio)\n g = round(g1 * (1 - ratio) + g2 * ratio)\n b = round(b1 * (1 - ratio) + b2 * ratio)\n return '#%02x%02x%02x' % (r, g, b)\n`);\n const colour1 =\n Python.valueToCode(block, 'COLOUR1', Python.ORDER_NONE) || '\\'#000000\\'';\n const colour2 =\n Python.valueToCode(block, 'COLOUR2', Python.ORDER_NONE) || '\\'#000000\\'';\n const ratio = Python.valueToCode(block, 'RATIO', Python.ORDER_NONE) || 0;\n const code =\n functionName + '(' + colour1 + ', ' + colour2 + ', ' + ratio + ')';\n return [code, Python.ORDER_FUNCTION_CALL];\n};\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @fileoverview Complete helper functions for generating Python for\n * blocks. This is the entrypoint for python_compressed.js.\n * @suppress {extraRequire}\n */\n'use strict';\n\ngoog.module('Blockly.Python.all');\n\nconst moduleExports = goog.require('Blockly.Python');\ngoog.require('Blockly.Python.colour');\ngoog.require('Blockly.Python.lists');\ngoog.require('Blockly.Python.logic');\ngoog.require('Blockly.Python.loops');\ngoog.require('Blockly.Python.math');\ngoog.require('Blockly.Python.procedures');\ngoog.require('Blockly.Python.texts');\ngoog.require('Blockly.Python.variables');\ngoog.require('Blockly.Python.variablesDynamic');\n\nexports = moduleExports;\n"]} |